diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/config/MapperConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/config/MapperConfig.java
new file mode 100644
index 00000000..7cb74c8c
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/config/MapperConfig.java
@@ -0,0 +1,24 @@
+package com.ruoyi.common.config;
+
+import cn.org.atool.fluent.mybatis.spring.MapperFactory;
+import com.ruoyi.common.core.domain.entity.test.relation.ProductCategoryRelationEntity;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * Mapper配置类
+ * @author Geniou
+ * @create 2021/9/10 12:11
+ */
+@Configuration
+public class MapperConfig {
+
+ @Bean
+ public MapperFactory mapperFactory() {
+ return new MapperFactory();
+ }
+
+ @Bean
+ public ProductCategoryRelationEntity entityRelation() { return new ProductCategoryRelationEntity(); }
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/dao/impl/ProductInventoryDaoImpl.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/dao/impl/ProductInventoryDaoImpl.java
new file mode 100644
index 00000000..f67c0737
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/dao/impl/ProductInventoryDaoImpl.java
@@ -0,0 +1,16 @@
+package com.ruoyi.common.core.domain.entity.test.dao.impl;
+
+import com.ruoyi.common.core.domain.entity.test.dao.base.ProductInventoryBaseDao;
+import com.ruoyi.common.core.domain.entity.test.dao.intf.ProductInventoryDao;
+import org.springframework.stereotype.Repository;
+
+/**
+ * ProductInventoryDaoImpl: 数据操作接口实现
+ *
+ * 这只是一个减少手工创建的模板文件
+ * 可以任意添加方法和实现, 更改作者和重定义类名
+ *
@author Powered By Fluent Mybatis
+ */
+@Repository
+public class ProductInventoryDaoImpl extends ProductInventoryBaseDao implements ProductInventoryDao {
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/dao/intf/ProductInventoryDao.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/dao/intf/ProductInventoryDao.java
new file mode 100644
index 00000000..fce76371
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/dao/intf/ProductInventoryDao.java
@@ -0,0 +1,14 @@
+package com.ruoyi.common.core.domain.entity.test.dao.intf;
+
+import cn.org.atool.fluent.mybatis.base.IBaseDao;
+import com.ruoyi.common.core.domain.entity.test.entity.ProductInventory;
+
+/**
+ * ProductInventoryDao: 数据操作接口
+ *
+ * 这只是一个减少手工创建的模板文件
+ * 可以任意添加方法和实现, 更改作者和重定义类名
+ * @author Powered By Fluent Mybatis
+ */
+public interface ProductInventoryDao extends IBaseDao {
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/Product.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/Product.java
index 9c99b2bb..f49a0b7c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/Product.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/Product.java
@@ -50,9 +50,22 @@ public class Product extends RichEntity {
/**
* 创建时间
*/
- @TableField("create_date_time")
+ @TableField(
+ value = "create_date_time",
+ insert = "now()"
+ )
private Date createDateTime;
+ /**
+ * 更新时间
+ */
+ @TableField(
+ value = "update_date_time",
+ insert = "now()",
+ update = "now()"
+ )
+ private Date updateDateTime;
+
/**
* 运费
*/
@@ -77,12 +90,6 @@ public class Product extends RichEntity {
@TableField("unit_price")
private BigDecimal unitPrice;
- /**
- * 更新时间
- */
- @TableField("update_date_time")
- private Date updateDateTime;
-
@Override
public Serializable findPk() {
return this.id;
@@ -110,4 +117,12 @@ public class Product extends RichEntity {
public List findProductCategoryList() {
return super.invoke("findProductCategoryList", true);
}
+
+ /**
+ * 实现定义在{@link cn.org.atool.fluent.mybatis.base.IRefs}子类Refs上
+ */
+ @RefMethod("productId = id")
+ public List findProductInventoryList() {
+ return super.invoke("findProductInventoryList", true);
+ }
}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/ProductCategory.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/ProductCategory.java
index e9b47d00..666bc84e 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/ProductCategory.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/ProductCategory.java
@@ -7,7 +7,6 @@ import cn.org.atool.fluent.mybatis.annotation.TableId;
import cn.org.atool.fluent.mybatis.base.IEntity;
import cn.org.atool.fluent.mybatis.base.RichEntity;
import cn.org.atool.fluent.mybatis.functions.TableSupplier;
-
import java.io.Serializable;
import java.lang.Class;
import java.lang.Integer;
@@ -17,7 +16,6 @@ import java.lang.String;
import java.lang.SuppressWarnings;
import java.util.Date;
import java.util.List;
-
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -29,9 +27,17 @@ import lombok.experimental.Accessors;
*/
@SuppressWarnings({"unchecked"})
@Data
-@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = false)
-@FluentMybatis(table = "product_category", schema = "ruoyi", suffix = "")
+@Accessors(
+ chain = true
+)
+@EqualsAndHashCode(
+ callSuper = false
+)
+@FluentMybatis(
+ table = "product_category",
+ schema = "ruoyi",
+ suffix = ""
+)
public class ProductCategory extends RichEntity {
private static final long serialVersionUID = 1L;
@@ -41,6 +47,25 @@ public class ProductCategory extends RichEntity {
@TableId("id")
private Long id;
+ /**
+ * 创建时间
+ */
+ @TableField(
+ value = "create_date_time",
+ insert = "now()"
+ )
+ private Date createDateTime;
+
+ /**
+ * 更新时间
+ */
+ @TableField(
+ value = "update_date_time",
+ insert = "now()",
+ update = "now()"
+ )
+ private Date updateDateTime;
+
/**
* 分类名称
*/
@@ -53,12 +78,6 @@ public class ProductCategory extends RichEntity {
@TableField("category_type")
private String categoryType;
- /**
- * 创建时间
- */
- @TableField("create_date_time")
- private Date createDateTime;
-
/**
* 层级
*/
@@ -83,12 +102,6 @@ public class ProductCategory extends RichEntity {
@TableField("status_type")
private String statusType;
- /**
- * 更新时间
- */
- @TableField("update_date_time")
- private Date updateDateTime;
-
@Override
public Serializable findPk() {
return this.id;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/ProductCategoryRelation.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/ProductCategoryRelation.java
index cf73dac5..48f3764a 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/ProductCategoryRelation.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/ProductCategoryRelation.java
@@ -5,13 +5,11 @@ import cn.org.atool.fluent.mybatis.annotation.TableField;
import cn.org.atool.fluent.mybatis.base.IEntity;
import cn.org.atool.fluent.mybatis.base.RichEntity;
import cn.org.atool.fluent.mybatis.functions.TableSupplier;
-
import java.lang.Class;
import java.lang.Long;
import java.lang.Override;
import java.lang.String;
import java.lang.SuppressWarnings;
-
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -23,9 +21,17 @@ import lombok.experimental.Accessors;
*/
@SuppressWarnings({"unchecked"})
@Data
-@Accessors(chain = true)
-@EqualsAndHashCode(callSuper = false)
-@FluentMybatis(table = "product_category_relation", schema = "ruoyi", suffix = "")
+@Accessors(
+ chain = true
+)
+@EqualsAndHashCode(
+ callSuper = false
+)
+@FluentMybatis(
+ table = "product_category_relation",
+ schema = "ruoyi",
+ suffix = ""
+)
public class ProductCategoryRelation extends RichEntity {
private static final long serialVersionUID = 1L;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/ProductInventory.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/ProductInventory.java
new file mode 100644
index 00000000..315bf5e6
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/entity/ProductInventory.java
@@ -0,0 +1,105 @@
+package com.ruoyi.common.core.domain.entity.test.entity;
+
+import cn.org.atool.fluent.mybatis.annotation.FluentMybatis;
+import cn.org.atool.fluent.mybatis.annotation.RefMethod;
+import cn.org.atool.fluent.mybatis.annotation.TableField;
+import cn.org.atool.fluent.mybatis.annotation.TableId;
+import cn.org.atool.fluent.mybatis.annotation.Version;
+import cn.org.atool.fluent.mybatis.base.IEntity;
+import cn.org.atool.fluent.mybatis.base.RichEntity;
+import cn.org.atool.fluent.mybatis.functions.TableSupplier;
+import java.io.Serializable;
+import java.lang.Class;
+import java.lang.Integer;
+import java.lang.Long;
+import java.lang.Override;
+import java.lang.String;
+import java.lang.SuppressWarnings;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * ProductInventory: 数据映射实体定义
+ *
+ * @author Powered By Fluent Mybatis
+ */
+@SuppressWarnings({"unchecked"})
+@Data
+@Accessors(
+ chain = true
+)
+@EqualsAndHashCode(
+ callSuper = false
+)
+@FluentMybatis(
+ table = "product_inventory",
+ schema = "ruoyi",
+ suffix = ""
+)
+public class ProductInventory extends RichEntity {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId("id")
+ private Long id;
+
+ /**
+ * 库存数量
+ */
+ @TableField("inventory_quantity")
+ private Integer inventoryQuantity;
+
+ /**
+ * 乐观锁
+ */
+ @TableField(
+ value = "lock_version",
+ insert = "0",
+ update = "`lock_version` + 1"
+ )
+ @Version
+ private Long lockVersion;
+
+ /**
+ * 商品主键
+ */
+ @TableField("product_id")
+ private Long productId;
+
+ /**
+ * 库存状态(Enable-在售,Disable-停售,Delete-删除)
+ */
+ @TableField("status_type")
+ private String statusType;
+
+ @Override
+ public Serializable findPk() {
+ return this.id;
+ }
+
+ @Override
+ public final Class extends IEntity> entityClass() {
+ return ProductInventory.class;
+ }
+
+ @Override
+ public final ProductInventory changeTableBelongTo(TableSupplier supplier) {
+ return super.changeTableBelongTo(supplier);
+ }
+
+ @Override
+ public final ProductInventory changeTableBelongTo(String table) {
+ return super.changeTableBelongTo(table);
+ }
+
+ /**
+ * 实现定义在{@link cn.org.atool.fluent.mybatis.base.IRefs}子类Refs上
+ */
+ @RefMethod("id = productId")
+ public Product findProduct() {
+ return super.invoke("findProduct", true);
+ }
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/relation/ProductCategoryRelationEntity.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/relation/ProductCategoryRelationEntity.java
new file mode 100644
index 00000000..8e36aa4d
--- /dev/null
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/test/relation/ProductCategoryRelationEntity.java
@@ -0,0 +1,50 @@
+package com.ruoyi.common.core.domain.entity.test.relation;
+
+import cn.org.atool.fluent.mybatis.refs.IEntityRelation;
+import com.ruoyi.common.core.domain.entity.test.entity.Product;
+import com.ruoyi.common.core.domain.entity.test.entity.ProductCategory;
+import com.ruoyi.common.core.domain.entity.test.wrapper.ProductCategoryQuery;
+import com.ruoyi.common.core.domain.entity.test.wrapper.ProductCategoryRelationQuery;
+import com.ruoyi.common.core.domain.entity.test.wrapper.ProductQuery;
+
+import java.util.List;
+
+/**
+ * 商品与分类关联关系实现
+ * @author Geniou
+ * @create 2021/9/13 19:08
+ */
+public class ProductCategoryRelationEntity implements IEntityRelation {
+
+ /**
+ * {@link Product#findProductCategoryList}
+ * @param entity
+ */
+ @Override
+ public List findProductCategoryListOfProduct(Product entity) {
+ return ProductCategoryQuery.defaultQuery()
+ .where.id().in(
+ ProductCategoryRelationQuery.defaultQuery()
+ .select.productCategoryId().end()
+ .where.productId().eq(entity.getId())
+ .end()
+ ).end()
+ .to().listEntity();
+ }
+
+ /**
+ * {@link ProductCategory#findProductList}
+ * @param entity
+ */
+ @Override
+ public List findProductListOfProductCategory(ProductCategory entity) {
+ return ProductQuery.defaultQuery()
+ .where.id().in(
+ ProductCategoryRelationQuery.defaultQuery()
+ .select.productId().end()
+ .where.productCategoryId().eq(entity.getId())
+ .end()
+ ).end()
+ .to().listEntity();
+ }
+}
diff --git a/ruoyi-common/src/test/java/com/ruoyi/common/GeneratorTest.java b/ruoyi-common/src/test/java/com/ruoyi/common/GeneratorTest.java
index 7abd7c7a..d7d18ca8 100644
--- a/ruoyi-common/src/test/java/com/ruoyi/common/GeneratorTest.java
+++ b/ruoyi-common/src/test/java/com/ruoyi/common/GeneratorTest.java
@@ -5,7 +5,6 @@ import cn.org.atool.generator.annotation.Relation;
import cn.org.atool.generator.annotation.RelationType;
import cn.org.atool.generator.annotation.Table;
import cn.org.atool.generator.annotation.Tables;
-import cn.org.atool.generator.database.model.ConfigKey;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
@@ -26,23 +25,19 @@ public class GeneratorTest {
FileGenerator.build(RelationMTM.class);
}
- @Tables(
- url = url, username = "root", password = "123456",
- basePack = basePackage,
- srcDir = "src/main/java/com/ruoyi/common/core/domain/entity/test",
- tables = @Table(value = {"product_category", "product", "product_category_relation"})
- )
- static class Noting{}
-
@Tables(
url = url, username = "root", password = "123456",
basePack = basePackage,
srcDir = "src\\main\\java\\",
- tables = {@Table(value = {"product", "product_category", "product_category_relation"})},
+ tables = {@Table(value = {"product", "product_category", "product_category_relation"}),
+ @Table(value = {"product_inventory"}, version = "lock_version")},
+ gmtCreated = "create_date_time", gmtModified = "update_date_time",
relations = {
@Relation(source = "product", target = "product_category", type = RelationType.TwoWay_N_N),
@Relation(source = "product_category", target = "product_category", type = RelationType.TwoWay_1_N,
- where = "id = parent_id")
+ where = "id = parent_id"),
+ @Relation(source = "product", target = "product_inventory", type = RelationType.TwoWay_1_N,
+ where = "id = product_id")
},
entitySuffix = ""
)
diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/ProductTestController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/ProductTestController.java
index 00ccd68f..2402c1aa 100644
--- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/ProductTestController.java
+++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/ProductTestController.java
@@ -1,22 +1,39 @@
package com.ruoyi.demo.controller;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import cn.org.atool.fluent.mybatis.base.model.FieldType;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.test.entity.Product;
import com.ruoyi.common.core.domain.entity.test.entity.ProductCategory;
+import com.ruoyi.common.core.domain.entity.test.entity.ProductCategoryRelation;
+import com.ruoyi.common.core.domain.entity.test.helper.ProductCategoryRelationWrapperHelper;
+import com.ruoyi.common.core.domain.entity.test.helper.ProductWrapperHelper;
+import com.ruoyi.common.core.domain.entity.test.mapper.ProductCategoryMapper;
+import com.ruoyi.common.core.domain.entity.test.mapper.ProductCategoryRelationMapper;
import com.ruoyi.common.core.domain.entity.test.mapper.ProductMapper;
+import com.ruoyi.common.core.domain.entity.test.wrapper.ProductCategoryRelationQuery;
+import com.ruoyi.common.core.domain.entity.test.wrapper.ProductQuery;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.List;
/**
* 商品测试控制
@@ -31,7 +48,10 @@ public class ProductTestController extends BaseController {
@Autowired
private ProductMapper productMapper;
-
+ @Autowired
+ private ProductCategoryMapper productCategoryMapper;
+ @Autowired
+ private ProductCategoryRelationMapper productCategoryRelationMapper;
/**
@@ -39,76 +59,190 @@ public class ProductTestController extends BaseController {
*/
@ApiOperation("测试插入商品")
@PostMapping("/insertProduct")
- public void insertProduct() {
+ public AjaxResult insertProduct() {
Product product = new Product();
- product.setProductCode("M10001");
- product.setProductName("测试商品");
- product.setUnitPrice(BigDecimal.valueOf(2.5));
- product.setFreight(BigDecimal.valueOf(1.5));
- product.setCreateDateTime(new Date());
- product.setUpdateDateTime(new Date());
+
+ String productCode = "P" + RandomUtil.randomNumbers(12);
+ product.setProductCode(productCode);
+ product.setProductName("海口一年级语文");
+ product.setUnitPrice(BigDecimal.valueOf(12.5));
+ product.setFreight(BigDecimal.valueOf(8));
productMapper.insert(product);
+
+ List ids = new ArrayList<>();
+ ids.add(7l);
+ ids.add(22l);
+ ids.add(29l);
+ // 查出所有需要关联的商品分类
+ List categoryList = productCategoryMapper.listByIds(ids);
+
+ Long productId = product.getId();
+
+ // 遍历商品分类集合,每次创建一条商品与分类关联关系的实体
+ List relations = new ArrayList<>();
+ for (ProductCategory productCategory : categoryList) {
+ ProductCategoryRelation relation = new ProductCategoryRelation();
+ relation.setProductId(productId);
+ relation.setProductCategoryId(productCategory.getId());
+ relations.add(relation);
+ }
+ // 保存中间表
+ productCategoryRelationMapper.insertBatch(relations);
+ return AjaxResult.success(productId);
}
/**
* 测试插入
*/
- @ApiOperation("测试插入商品分类")
- @PostMapping("/insertProductCategory")
- public void insertProductCategory() {
- ProductCategory productCategory = new ProductCategory();
- productCategory.setCategoryName("一年级");
- productCategory.setCategoryType("Title");
+ @ApiOperation("测试插入商品库存")
+ @PostMapping("/insertProductInventory")
+ public void insertProductInventory() {
}
- //
- //
- // /**
- // * 测试查询
- // */
- // @ApiOperation("测试查询")
- // @GetMapping("/queryTest")
- // public AjaxResult query(@Validated Product bo) {
- // Product product = productMapper.findById(bo.getId());
- // return new AjaxResult().setData(product);
- // }
+ @ApiOperation("测试插入商品分类")
+ @PostMapping("/insertProductCategory")
+ public AjaxResult insertProductCategory() {
+ List categories = new ArrayList<>();
- // /**
- // * 测试查询2(根据实体类字段)
- // */
- // @ApiOperation("测试查询2")
- // @GetMapping("/query2Test")
- // public AjaxResult> query2(@Validated Product bo) {
- // ProductQuery productQuery = productMapper.query().where.eqByEntity(bo).end();
- // List products = productMapper.listEntity(productQuery);
- // log.info("query2 rows = {}", CollUtil.size(products));
- // return new AjaxResult>().setData(products);
- // }
- //
- // /**
- // * 测试删除
- // */
- // @ApiOperation("测试删除")
- // @DeleteMapping("/deleteTest")
- // public AjaxResult delete(@Validated Product bo) {
- // return toAjax(productMapper.deleteById(bo.getId()));
- // }
+ ProductCategory productCategory = new ProductCategory();
+ productCategory.setCategoryName("适用阶段");
+ productCategory.setCategoryType("Title");
+ productCategory.setLevelNo(1);
+ productCategory.setSortNum(1);
+ categories.add(productCategory);
+
+ ProductCategory productCategory1 = new ProductCategory();
+ productCategory1.setCategoryName("适用区域");
+ productCategory1.setCategoryType("Title");
+ productCategory1.setLevelNo(1);
+ productCategory1.setSortNum(2);
+ categories.add(productCategory1);
+
+ ProductCategory productCategory2 = new ProductCategory();
+ productCategory2.setCategoryName("教辅类型");
+ productCategory2.setCategoryType("Title");
+ productCategory2.setLevelNo(1);
+ productCategory2.setSortNum(3);
+ categories.add(productCategory2);
+
+ return toAjax(productCategoryMapper.insertBatch(categories));
+ }
+
+ @ApiOperation("测试插入商品分类(根据父级)")
+ @PostMapping("/insertProductCategoryByParent")
+ public AjaxResult insertProductCategoryByParent(@Validated ProductCategory productCategory) {
+ return toAjax(productCategoryMapper.insert(productCategory));
+ }
+
+ @ApiOperation("根据分类查询")
+ @GetMapping("/queryByCategory")
+ public AjaxResult queryByCategory(@Validated String categoryIdsString) {
+ String[] categoryIds = categoryIdsString.split(",");
+
+ ProductQuery productQuery = productMapper.query();
+ ProductWrapperHelper.QueryWhere queryWhere = productQuery.where;
+
+ for (String categoryId : categoryIds) {
+ queryWhere.exists(productCategoryRelationMapper.query().where.productId().apply("= product.id").productCategoryId()
+ .eq(Long.parseLong(categoryId)).end());
+ }
+
+ List products = productMapper.listEntity(queryWhere.end());
+ return AjaxResult.success(JSONUtil.parseArray(products));
+ }
+
+ @ApiOperation("查询商品所属分类")
+ @GetMapping("/queryProductBelongCategory")
+ public AjaxResult queryProductBelongCategory(@Validated Long productId) {
+ Product product = productMapper.findById(productId);
+ List productCategoryList = product.findProductCategoryList();
+ return AjaxResult.success(JSONUtil.parseArray(productCategoryList));
+ }
+
+ @ApiOperation("查询分类树")
+ @GetMapping("/queryCategoryTree")
+ public AjaxResult queryCategoryTree(@Validated Long productCategoryId) {
+ ProductCategory productCategory = productCategoryMapper.findById(productCategoryId);
+ JSONObject respBody = buildCategory(productCategory);
+ return AjaxResult.success(respBody);
+ }
+
+ private JSONObject buildCategory(ProductCategory productCategory) {
+ JSONObject categoryJSON = new JSONObject();
+ Long id = productCategory.getId();
+ Integer levelNo = productCategory.getLevelNo();
+ Long parentId = productCategory.getParentId();
+ String categoryName = productCategory.getCategoryName();
+ String categoryType = productCategory.getCategoryType();
+
+ categoryJSON.set("id", id);
+ categoryJSON.set("parentId", parentId);
+ categoryJSON.set("levelNo", levelNo);
+ categoryJSON.set("categoryName", categoryName);
+ categoryJSON.set("categoryType", categoryType);
+
+ List childList = productCategory.findProductCategoryList();
+
+ if (CollUtil.isNotEmpty(childList)) {
+ JSONArray childArray = new JSONArray();
+
+ for (ProductCategory childCategory : childList) {
+ JSONObject childJSON = buildCategory(childCategory);
+ childArray.add(childJSON);
+ }
+ categoryJSON.set("child", childArray);
+ }
+
+ return categoryJSON;
+ }
+
+ /**
+ * 测试查询
+ */
+ @ApiOperation("测试查询")
+ @GetMapping("/queryTest")
+ public AjaxResult query(@Validated Product bo) {
+ Product product = productMapper.findById(bo.getId());
+ return new AjaxResult().setData(product);
+ }
+
+ /**
+ * 测试查询2(根据实体类字段)
+ */
+ @ApiOperation("测试查询2")
+ @GetMapping("/query2Test")
+ public AjaxResult> query2(@Validated Product bo) {
+ ProductQuery productQuery = productMapper.query().where.eqByEntity(bo).end();
+ List products = productMapper.listEntity(productQuery);
+ log.info("query2 rows = {}", CollUtil.size(products));
+ return new AjaxResult>().setData(products);
+ }
+
+ /**
+ * 测试删除
+ */
+ @ApiOperation("测试删除")
+ @DeleteMapping("/deleteTest")
+ public AjaxResult delete(@Validated Product bo) {
+ return toAjax(productMapper.deleteById(bo.getId()));
+ }
+
+ /**
+ * 测试删除2
+ */
+ @ApiOperation("测试删除2(根据相关参数)")
+ @DeleteMapping("/delete2Test")
+ public AjaxResult delete2(@Validated Product bo) {
+ ProductQuery productQuery = productMapper.query().where.eqByEntity(bo).end();
+ int row = productMapper.delete(productQuery);
+ return toAjax(row);
+ }
- // /**
- // * 测试删除2
- // */
- // @ApiOperation("测试删除2(根据相关参数)")
- // @DeleteMapping("/delete2Test")
- // public AjaxResult delete2(@Validated Product bo) {
- // ProductQuery productQuery = productMapper.query().where.eqByEntity(bo).end();
- // List products = productMapper.listEntity(productQuery);
- // int row = productMapper.delete(productQuery);
- // return toAjax(row);
- // }
//
// static final String url =
- // "jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true";
+ // "jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
+ // &useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true";
// static final String basePackage = "com.ruoyi.common.core.domain.entity.test";
// /**