From 0d68b5173959b2d1d87085600d542ab3f95399f1 Mon Sep 17 00:00:00 2001 From: Saisai Liu <1374434128@qq.com> Date: Sat, 9 Mar 2024 16:28:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=93=81=E7=B1=BB=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/muyu/gen/util/VelocityUtils.java | 2 +- .../main/resources/vm/java/service.java.vm | 4 +- .../java/com/muyu/product/domain/Rule.java | 46 ++++---- .../com/muyu/product/domain/RuleAttr.java | 74 ++++++++++++ .../com/muyu/product/domain/RuleProduct.java | 50 --------- .../com/muyu/product/domain/demo/Product.java | 35 ++++++ .../domain/model/RuleAttrAddModel.java | 36 ++++++ .../com/muyu/product/domain/req/BrandReq.java | 3 +- .../muyu/product/domain/req/RuleAttrReq.java | 40 +++++++ .../product/domain/resp/RuleAttrResp.java | 39 +++++++ .../main/java/com/muyu/product/domain/结构 | 61 ++++++++++ .../controller/RuleAttrController.java | 106 ++++++++++++++++++ .../product/controller/RuleController.java | 34 +++++- .../muyu/product/mapper/RuleAttrMapper.java | 62 ++++++++++ .../muyu/product/service/IRuleService.java | 12 +- .../muyu/product/service/RuleAttrService.java | 62 ++++++++++ .../service/impl/RuleAttrServiceImpl.java | 99 ++++++++++++++++ .../service/impl/RuleProductServiceImpl.java | 6 +- .../product/service/impl/RuleServiceImpl.java | 93 +++++++++++---- .../mapper/product/RuleAttrMapper.xml | 84 ++++++++++++++ .../resources/mapper/product/RuleMapper.xml | 4 + 21 files changed, 834 insertions(+), 118 deletions(-) create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttr.java create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Product.java create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleAttrReq.java create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleAttrResp.java create mode 100644 muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleAttrController.java create mode 100644 muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/RuleAttrMapper.java create mode 100644 muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleAttrService.java create mode 100644 muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleAttrServiceImpl.java create mode 100644 muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleAttrMapper.xml diff --git a/muyu-modules/muyu-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java b/muyu-modules/muyu-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java index 9305ff7..1a83d49 100644 --- a/muyu-modules/muyu-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java +++ b/muyu-modules/muyu-gen/src/main/java/com/muyu/gen/util/VelocityUtils.java @@ -50,7 +50,7 @@ public class VelocityUtils { VelocityContext velocityContext = new VelocityContext(); velocityContext.put("tplCategory", genTable.getTplCategory()); velocityContext.put("tableName", genTable.getTableName()); - velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : "【请填写功能名称】"); + velocityContext.put("functionName", StringUtils.isNotEmpty(functionName) ? functionName : ""); velocityContext.put("ClassName", genTable.getClassName()); velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName())); velocityContext.put("moduleName", genTable.getModuleName()); diff --git a/muyu-modules/muyu-gen/src/main/resources/vm/java/service.java.vm b/muyu-modules/muyu-gen/src/main/resources/vm/java/service.java.vm index 253b7f0..3504823 100644 --- a/muyu-modules/muyu-gen/src/main/resources/vm/java/service.java.vm +++ b/muyu-modules/muyu-gen/src/main/resources/vm/java/service.java.vm @@ -1,8 +1,8 @@ package ${packageName}.service; import java.util.List; -import -import com.baomidou.mybatisplus.extension.service.IService; ${packageName}.domain.${ClassName}; +import ${packageName}.domain.${ClassName}; +import com.baomidou.mybatisplus.extension.service.IService; /** * ${functionName}Service接口 diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/Rule.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/Rule.java index ceaf727..7d0612d 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/Rule.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/Rule.java @@ -3,6 +3,7 @@ package com.muyu.product.domain; import com.muyu.common.core.annotation.Excel; import com.muyu.common.core.web.domain.BaseEntity; import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.product.domain.req.RuleAttrReq; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -11,6 +12,9 @@ import lombok.experimental.SuperBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; +import java.util.Date; +import java.util.function.Supplier; + /** * 规格对象 rule * @@ -33,35 +37,23 @@ public class Rule extends BaseEntity @Excel(name = "规格名称") private String name; - public void setId(Long id) - { - this.id = id; + private String states; + + public static Rule saveBuilder(RuleAttrReq req, Supplier username){ + return Rule.builder() + .name(req.getName()) + .states(req.getStates()) + .createBy(username.get()) + .createTime(new Date()) + .build(); } - public Long getId() - { - return id; - } - public void setName(String name) - { - this.name = name; - } - public String getName() - { - return name; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("name", getName()) - .append("remark", getRemark()) - .append("createBy", SecurityUtils.getUsername()) - .append("createTime", getCreateTime()) - .append("updateBy", SecurityUtils.getUsername()) - .append("updateTime", getUpdateTime()) - .toString(); + public static Rule updateBuilder(RuleAttrReq ruleAttrReq) { + return Rule.builder() + .id(ruleAttrReq.getId()) + .states(ruleAttrReq.getStates()) + .name(ruleAttrReq.getName()) + .build(); } } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttr.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttr.java new file mode 100644 index 0000000..35edf1a --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttr.java @@ -0,0 +1,74 @@ +package com.muyu.product.domain; + +import com.muyu.common.core.annotation.Excel; +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.model.RuleAttrAddModel; +import com.muyu.product.domain.req.RuleAttrReq; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.function.Supplier; + +/** + * 规格对象 rule + * + * @author saisai + * @date 2024-02-29 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class RuleAttr extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private Long id; + /** + * 规格主键 + */ + private Long ruleId; + /** + * 规格属性名称 + */ + @Excel(name = "规格属性") + private String attrName; + private String attrValue; + + + /** + * 规格属性构建体 + * + * @return + */ + public static List saveBuilder(RuleAttrReq req,Supplier username) { + ArrayList ruleAttrs = new ArrayList<>(); + List ruleAttrAddModels = req.getRuleAttrList(); + ruleAttrAddModels.stream().map( + ruleAttrAddModel -> ruleAttrs.addAll(RuleAttr.constructBuilder(ruleAttrAddModel,username,req.getRuleId()) + )).toList(); + return ruleAttrs; + } + + public static List constructBuilder(RuleAttrAddModel ruleAttrAddModel, Supplier username, Long ruleId) { + return (List) ruleAttrAddModel.getValueList().stream().map( + value -> RuleAttr.builder().attrName(ruleAttrAddModel.getAttrName()) + .id(null) + .ruleId(ruleId) + .createBy(username.get()) + .createTime(new Date()) + .attrValue(value) + .build() + ).toList(); + } + +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleProduct.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleProduct.java index 1d2f06e..2033d4e 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleProduct.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleProduct.java @@ -41,55 +41,5 @@ public class RuleProduct extends BaseEntity @Excel(name = "规格值") private String ruleValue; - public void setId(Long id) - { - this.id = id; - } - public Long getId() - { - return id; - } - public void setProductId(Long productId) - { - this.productId = productId; - } - - public Long getProductId() - { - return productId; - } - public void setRuleId(Long ruleId) - { - this.ruleId = ruleId; - } - - public Long getRuleId() - { - return ruleId; - } - public void setRuleValue(String ruleValue) - { - this.ruleValue = ruleValue; - } - - public String getRuleValue() - { - return ruleValue; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("productId", getProductId()) - .append("ruleId", getRuleId()) - .append("ruleValue", getRuleValue()) - .append("remark", getRemark()) - .append("createBy", SecurityUtils.getUsername()) - .append("createTime", getCreateTime()) - .append("updateBy", SecurityUtils.getUsername()) - .append("updateTime", getUpdateTime()) - .toString(); - } } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Product.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Product.java new file mode 100644 index 0000000..f35f30e --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/demo/Product.java @@ -0,0 +1,35 @@ +package com.muyu.product.domain.demo; + +import com.muyu.product.domain.Attribute; +import com.muyu.product.domain.AttributeGroup; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @ClassName Product + * @Description 描述 + * @Author SaiSai.Liu + * @Date 2024/3/6/0006 14:12 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class Product { + /** + * 属性组 + */ + private List attributeGroupList; + /** + * 属性 + */ + private List attributeList; + /** + * 自有属性 + */ + private List selfAttributeList; +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java new file mode 100644 index 0000000..3d7995a --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java @@ -0,0 +1,36 @@ +package com.muyu.product.domain.model; + +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.Rule; +import com.muyu.product.domain.RuleAttr; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Arrays; +import java.util.List; + +/** + * @ClassName RuleAttrAddModel + * @Description 描述 + * @Author SaiSai.Liu + * @Date 2024/3/7/0007 11:53 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class RuleAttrAddModel extends BaseEntity { + private String attrName; + private List valueList; + + public static RuleAttrAddModel saveBuilder(RuleAttr ruleAttr) { + return RuleAttrAddModel.builder() + .attrName(ruleAttr.getAttrName()) + .valueList(Arrays.stream(ruleAttr.getAttrValue().split(",")).toList()) + .build(); + } +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/BrandReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/BrandReq.java index d11a1e4..090dd1e 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/BrandReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/BrandReq.java @@ -25,7 +25,8 @@ import java.lang.annotation.Annotation; @SuperBuilder @NoArgsConstructor @AllArgsConstructor -public class BrandReq { +@EqualsAndHashCode(callSuper = true) +public class BrandReq extends BaseEntity{ private static final long serialVersionUID = 1L; /** diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleAttrReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleAttrReq.java new file mode 100644 index 0000000..e05215d --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleAttrReq.java @@ -0,0 +1,40 @@ +package com.muyu.product.domain.req; + +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.model.RuleAttrAddModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.Date; +import java.util.List; + +/** + * @ClassName RuleAttrReq + * @Description 描述 + * @Author SaiSai.Liu + * @Date 2024/3/7/0007 9:02 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class RuleAttrReq extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long id; + /** 规格id */ + private Long ruleId; + /**规格名称*/ + private String name; + /** 属性组 */ + private List ruleAttrList; + /** 是否启用 */ + private String states; + + +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleAttrResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleAttrResp.java new file mode 100644 index 0000000..728bff8 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleAttrResp.java @@ -0,0 +1,39 @@ +package com.muyu.product.domain.resp; + +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.Rule; +import com.muyu.product.domain.model.RuleAttrAddModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; +import java.util.function.Function; + +/** + * @ClassName RuleAttrResp + * @Description 描述 + * @Author SaiSai.Liu + * @Date 2024/3/7/0007 15:56 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +public class RuleAttrResp extends BaseEntity { + private Long id; + private String name; + private String states; + private List ruleAttrAddModels; + + public static RuleAttrResp saveBuilder(Rule rule, Function> ruleAttrs){ + return RuleAttrResp.builder() + .id(rule.getId()) + .name(rule.getName()) + .ruleAttrAddModels(ruleAttrs.apply(rule.getId())) + .states(rule.getStates()) + .build(); + } + +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/结构 b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/结构 index 5ac22f2..cd1cd76 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/结构 +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/结构 @@ -40,3 +40,64 @@ ] } } + + + + + + + + +{ + "product": { + "name": null, + "brandId": 1, + "remark": null, + "image": null, + "images": [], + "description": null + }, + "attribute": { + "attributeGroup": { + "attributeGroupId": 1, + }, + "attributeList": [ + { + "id": 1, + "attributeValue": null + } + ] + }, + "rule": { + "ruleId": 1, + "ruleValueList": [ + { + "ruleName1": null, + "ruleName2":null, + ... + "image": null, + "stork": 1, + "price": 1 + } + ], + } +} + + + + + + + + + + + + + + + + + + + diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleAttrController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleAttrController.java new file mode 100644 index 0000000..e540a39 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleAttrController.java @@ -0,0 +1,106 @@ +package com.muyu.product.controller; + +import com.muyu.common.core.domain.Result; +import com.muyu.common.core.utils.poi.ExcelUtil; +import com.muyu.common.core.web.controller.BaseController; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.log.annotation.Log; +import com.muyu.common.log.enums.BusinessType; +import com.muyu.common.security.annotation.RequiresPermissions; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.product.domain.RuleAttr; +import com.muyu.product.domain.req.RuleAttrReq; +import com.muyu.product.service.RuleAttrService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * Controller + * + * @author muyu + * @date 2024-03-07 + */ +@RestController +@RequestMapping("/attr") +public class RuleAttrController extends BaseController { + @Autowired + private RuleAttrService ruleAttrService; + + /** + * 查询列表 + */ + @RequiresPermissions("system:attr:list") + @GetMapping("/list") + public Result> list(RuleAttr ruleAttr) { + startPage(); + List list = ruleAttrService.selectRuleAttrList(ruleAttr); + return getDataTable(list); + } + + /** + * 导出列表 + */ + @RequiresPermissions("system:attr:export") + @Log(title = "", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, RuleAttr ruleAttr) { + List list = ruleAttrService.selectRuleAttrList(ruleAttr); + ExcelUtil util = new ExcelUtil(RuleAttr.class); + util.exportExcel(response, list, "数据"); + } + + /** + * 获取详细信息 + */ + @RequiresPermissions("system:attr:query") + @GetMapping(value = "/{id}") + public Result getInfo(@PathVariable("id") Long id) { + return success(ruleAttrService.selectRuleAttrById(id)); + } + + /** + * 新增 + */ +// @RequiresPermissions("system:attr:add") +// @Log(title = "", businessType = BusinessType.INSERT) +// @PostMapping +// public Result add(@RequestBody RuleAttr ruleAttr) { +// return toAjax(ruleAttrService.insertRuleAttr(ruleAttr)); +// } + + /** + * 新增 + */ + @RequiresPermissions("system:attr:add") + @Log(title = "", businessType = BusinessType.INSERT) + @PostMapping + public Result add(@RequestBody RuleAttrReq ruleAttrReq) { + return ruleAttrService.saveBatch(RuleAttr.saveBuilder(ruleAttrReq,SecurityUtils::getUsername)) + ? Result.success("","批量添加成功") : Result.error("添加失败") ; + } + + + + /** + * 修改 + */ + @RequiresPermissions("system:attr:edit") + @Log(title = "", businessType = BusinessType.UPDATE) + @PutMapping + public Result edit(@RequestBody RuleAttr ruleAttr) { + return toAjax(ruleAttrService.updateRuleAttr(ruleAttr)); + } + + /** + * 删除 + */ + @RequiresPermissions("system:attr:remove") + @Log(title = "", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public Result remove(@PathVariable Long[] ids) { + return toAjax(ruleAttrService.deleteRuleAttrByIds(ids)); + } +} diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleController.java index 5c8cb90..bae82dc 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleController.java @@ -3,6 +3,10 @@ package com.muyu.product.controller; import java.util.List; import java.io.IOException; import javax.servlet.http.HttpServletResponse; + +import com.muyu.product.domain.req.RuleAttrReq; +import com.muyu.product.domain.resp.RuleAttrResp; +import com.muyu.product.service.RuleAttrService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -35,18 +39,36 @@ public class RuleController extends BaseController @Autowired private IRuleService ruleService; + @Autowired + private RuleAttrService ruleAttrService; + +// /** +// * 查询规格列表 +// */ +// @RequiresPermissions("product:rule:list") +// @GetMapping("/list") +// public Result> list(Rule rule) +// { +// startPage(); +// List list = ruleService.selectRuleList(rule); +// return getDataTable(list); +// } + + /** * 查询规格列表 */ @RequiresPermissions("product:rule:list") @GetMapping("/list") - public Result> list(Rule rule) + public Result> ruleAttrList(RuleAttrReq ruleAttrReq) { startPage(); - List list = ruleService.selectRuleList(rule); + List list = ruleService.selectRuleAttrList(ruleAttrReq); return getDataTable(list); } + + /** * 导出规格列表 */ @@ -76,9 +98,9 @@ public class RuleController extends BaseController @RequiresPermissions("product:rule:add") @Log(title = "规格", businessType = BusinessType.INSERT) @PostMapping - public Result add(@RequestBody Rule rule) + public Result add(@RequestBody RuleAttrReq ruleAttrReq) { - return toAjax(ruleService.insertRule(rule)); + return toAjax(ruleService.insertRule(ruleAttrReq)); } /** @@ -87,9 +109,9 @@ public class RuleController extends BaseController @RequiresPermissions("product:rule:edit") @Log(title = "规格", businessType = BusinessType.UPDATE) @PutMapping - public Result edit(@RequestBody Rule rule) + public Result edit(@RequestBody RuleAttrReq ruleAttrReq) { - return toAjax(ruleService.updateRule(rule)); + return toAjax(ruleService.updateRule(ruleAttrReq)); } /** diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/RuleAttrMapper.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/RuleAttrMapper.java new file mode 100644 index 0000000..069931c --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/mapper/RuleAttrMapper.java @@ -0,0 +1,62 @@ +package com.muyu.product.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.product.domain.RuleAttr; + +/** + * Mapper接口 + * + * @author muyu + * @date 2024-03-07 + */ +public interface RuleAttrMapper extends BaseMapper +{ + /** + * 查询 + * + * @param id 主键 + * @return + */ + RuleAttr selectRuleAttrById(Long id); + + /** + * 查询列表 + * + * @param ruleAttr + * @return 集合 + */ + List selectRuleAttrList(RuleAttr ruleAttr); + + /** + * 新增 + * + * @param ruleAttr + * @return 结果 + */ + int insertRuleAttr(RuleAttr ruleAttr); + + /** + * 修改 + * + * @param ruleAttr + * @return 结果 + */ + int updateRuleAttr(RuleAttr ruleAttr); + + /** + * 删除 + * + * @param id 主键 + * @return 结果 + */ + int deleteRuleAttrById(Long id); + + /** + * 批量删除 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteRuleAttrByIds(Long[] ids); +} diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/IRuleService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/IRuleService.java index 5c8c63d..ec44f19 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/IRuleService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/IRuleService.java @@ -5,6 +5,8 @@ import java.util.List; import com.baomidou.mybatisplus.extension.service.IService; import com.muyu.product.domain.Address; import com.muyu.product.domain.Rule; +import com.muyu.product.domain.req.RuleAttrReq; +import com.muyu.product.domain.resp.RuleAttrResp; /** * 规格Service接口 @@ -33,18 +35,18 @@ public interface IRuleService extends IService /** * 新增规格 * - * @param rule 规格 + * @param ruleAttrReq 规格 * @return 结果 */ - int insertRule(Rule rule); + int insertRule(RuleAttrReq ruleAttrReq); /** * 修改规格 * - * @param rule 规格 + * @param ruleAttrReq 规格 * @return 结果 */ - int updateRule(Rule rule); + int updateRule(RuleAttrReq ruleAttrReq); /** * 批量删除规格 @@ -61,4 +63,6 @@ public interface IRuleService extends IService * @return 结果 */ int deleteRuleById(Long id); + + List selectRuleAttrList(RuleAttrReq ruleAttrReq); } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleAttrService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleAttrService.java new file mode 100644 index 0000000..2fb3fcd --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleAttrService.java @@ -0,0 +1,62 @@ +package com.muyu.product.service; + +import java.util.List; +import com.muyu.product.domain.RuleAttr; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * Service接口 + * + * @author muyu + * @date 2024-03-07 + */ +public interface RuleAttrService extends IService +{ + /** + * 查询 + * + * @param id 主键 + * @return + */ + RuleAttr selectRuleAttrById(Long id); + + /** + * 查询列表 + * + * @param ruleAttr + * @return 集合 + */ + List selectRuleAttrList(RuleAttr ruleAttr); + + /** + * 新增 + * + * @param ruleAttr + * @return 结果 + */ + int insertRuleAttr(RuleAttr ruleAttr); + + /** + * 修改 + * + * @param ruleAttr + * @return 结果 + */ + int updateRuleAttr(RuleAttr ruleAttr); + + /** + * 批量删除 + * + * @param ids 需要删除的主键集合 + * @return 结果 + */ + int deleteRuleAttrByIds(Long[] ids); + + /** + * 删除信息 + * + * @param id 主键 + * @return 结果 + */ + int deleteRuleAttrById(Long id); +} diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleAttrServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleAttrServiceImpl.java new file mode 100644 index 0000000..623c3b4 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleAttrServiceImpl.java @@ -0,0 +1,99 @@ +package com.muyu.product.service.impl; + +import java.util.List; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.muyu.product.mapper.RuleAttrMapper; +import com.muyu.product.domain.RuleAttr; +import com.muyu.product.service.RuleAttrService; + +/** + * Service业务层处理 + * + * @author muyu + * @date 2024-03-07 + */ +@Service +public class RuleAttrServiceImpl extends ServiceImpl implements RuleAttrService +{ + @Autowired + private RuleAttrMapper ruleAttrMapper; + + /** + * 查询 + * + * @param id 主键 + * @return + */ + @Override + public RuleAttr selectRuleAttrById(Long id) + { + + return ruleAttrMapper.selectRuleAttrById(id); + } + + /** + * 查询列表 + * @param ruleAttr + * @return + */ + @Override + public List selectRuleAttrList(RuleAttr ruleAttr) + { + + return ruleAttrMapper.selectRuleAttrList(ruleAttr); + } + + /** + * 新增 + * + * @param ruleAttr + * @return 结果 + */ + @Override + public int insertRuleAttr(RuleAttr ruleAttr) + { + ruleAttr.setCreateTime(DateUtils.getNowDate()); + return ruleAttrMapper.insertRuleAttr(ruleAttr); + } + + /** + * 修改 + * + * @param ruleAttr + * @return 结果 + */ + @Override + public int updateRuleAttr(RuleAttr ruleAttr) + { + ruleAttr.setUpdateTime(DateUtils.getNowDate()); + return ruleAttrMapper.updateRuleAttr(ruleAttr); + } + + /** + * 批量删除 + * + * @param ids 需要删除的主键 + * @return 结果 + */ + @Override + public int deleteRuleAttrByIds(Long[] ids) + { + return ruleAttrMapper.deleteRuleAttrByIds(ids); + } + + /** + * 删除信息 + * + * @param id 主键 + * @return 结果 + */ + @Override + public int deleteRuleAttrById(Long id) + { + return ruleAttrMapper.deleteRuleAttrById(id); + } +} diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleProductServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleProductServiceImpl.java index 9b396a8..9dece25 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleProductServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleProductServiceImpl.java @@ -2,13 +2,13 @@ package com.muyu.product.service.impl; import java.util.List; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.product.domain.RuleProduct; import com.muyu.common.core.utils.DateUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.muyu.product.mapper.RuleProductMapper; -import com.muyu.product.domain.RuleProduct; import com.muyu.product.service.IRuleProductService; +import org.springframework.beans.factory.annotation.Autowired; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * 规格商品中间Service业务层处理 diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleServiceImpl.java index b3e9b37..1bb1c8d 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleServiceImpl.java @@ -1,14 +1,23 @@ package com.muyu.product.service.impl; -import java.util.List; - +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.common.core.utils.DateUtils; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.product.domain.Rule; +import com.muyu.product.domain.RuleAttr; +import com.muyu.product.domain.model.RuleAttrAddModel; +import com.muyu.product.domain.req.RuleAttrReq; +import com.muyu.product.domain.resp.RuleAttrResp; +import com.muyu.product.mapper.RuleMapper; +import com.muyu.product.service.IRuleService; +import com.muyu.product.service.RuleAttrService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.muyu.product.mapper.RuleMapper; -import com.muyu.product.domain.Rule; -import com.muyu.product.service.IRuleService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** * 规格Service业务层处理 @@ -17,10 +26,15 @@ import com.muyu.product.service.IRuleService; * @date 2024-02-29 */ @Service -public class RuleServiceImpl extends ServiceImpl implements IRuleService -{ +public class RuleServiceImpl extends ServiceImpl implements IRuleService { @Autowired private RuleMapper ruleMapper; + private RuleAttrService ruleAttrService; + + @Autowired + public RuleServiceImpl(RuleAttrService ruleAttrService) { + this.ruleAttrService = ruleAttrService; + } /** * 查询规格 @@ -29,8 +43,7 @@ public class RuleServiceImpl extends ServiceImpl implements IRu * @return 规格 */ @Override - public Rule selectRuleById(Long id) - { + public Rule selectRuleById(Long id) { return ruleMapper.selectRuleById(id); } @@ -41,34 +54,46 @@ public class RuleServiceImpl extends ServiceImpl implements IRu * @return 规格 */ @Override - public List selectRuleList(Rule rule) - { + public List selectRuleList(Rule rule) { return ruleMapper.selectRuleList(rule); } /** * 新增规格 * - * @param rule 规格 + * @param ruleAttrReq 规格 * @return 结果 */ @Override - public int insertRule(Rule rule) - { - rule.setCreateTime(DateUtils.getNowDate()); - return ruleMapper.insertRule(rule); + @Transactional + public int insertRule(RuleAttrReq ruleAttrReq) { + Rule rule = Rule.saveBuilder(ruleAttrReq, SecurityUtils::getUsername); + int i = ruleMapper.insertRule(rule); + ruleAttrReq.setRuleId(rule.getId()); + ruleAttrService.saveBatch(RuleAttr.saveBuilder(ruleAttrReq, SecurityUtils::getUsername)); + return i; } /** * 修改规格 * - * @param rule 规格 + * @param ruleAttrReq 规格 * @return 结果 */ @Override - public int updateRule(Rule rule) - { - rule.setUpdateTime(DateUtils.getNowDate()); + @Transactional + public int updateRule(RuleAttrReq ruleAttrReq) { + + //获取当前规格对象 + Rule rule = Rule.updateBuilder(ruleAttrReq); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + //查找当前规格属性 + List longs = ruleAttrService.list(wrapper.eq(RuleAttr::getRuleId, rule.getId())).stream().map(RuleAttr::getId).toList(); + ruleAttrService.removeBatchByIds(longs); + RuleAttr.saveBuilder(ruleAttrReq,SecurityUtils::getUsername) + .stream().map( + ruleAttr -> ruleAttrService.insertRuleAttr(ruleAttr) + ).count(); return ruleMapper.updateRule(rule); } @@ -79,8 +104,7 @@ public class RuleServiceImpl extends ServiceImpl implements IRu * @return 结果 */ @Override - public int deleteRuleByIds(Long[] ids) - { + public int deleteRuleByIds(Long[] ids) { return ruleMapper.deleteRuleByIds(ids); } @@ -91,8 +115,29 @@ public class RuleServiceImpl extends ServiceImpl implements IRu * @return 结果 */ @Override - public int deleteRuleById(Long id) - { + public int deleteRuleById(Long id) { return ruleMapper.deleteRuleById(id); } + + @Override + public List selectRuleAttrList(RuleAttrReq ruleAttrReq) { + + //规格集合 + List rules = this.selectRuleList(Rule.saveBuilder(ruleAttrReq, SecurityUtils::getUsername)); + //规格主键集合 + List ruleIdList = rules.stream().map(Rule::getId).toList(); + + //创建响应值容器 + List ruleAttrResps = new ArrayList<>(); + //根据编号转换响应对象 + + ruleAttrResps = rules.stream().map(rule -> + RuleAttrResp.saveBuilder(rule, id -> { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + List list = ruleAttrService.list(wrapper.eq(RuleAttr::getRuleId, rule.getId())); + return list.stream().map(RuleAttrAddModel::saveBuilder).toList(); + }) + ).toList(); + return ruleAttrResps; + } } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleAttrMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleAttrMapper.xml new file mode 100644 index 0000000..64f6c9e --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleAttrMapper.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + select id, rule_id, attr_name, attr_value, create_by, create_time, update_by, update_time from rule_attr + + + + + + + + insert into rule_attr + + id, + rule_id, + attr_name, + attr_value, + create_by, + create_time, + update_by, + update_time, + + + #{id}, + #{ruleId}, + #{attrName}, + #{attrValue}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update rule_attr + + rule_id = #{ruleId}, + attr_name = #{attrName}, + attr_value = #{attrValue}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from rule_attr where id = #{id} + + + + delete from rule_attr where id in + + #{id} + + + diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleMapper.xml b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleMapper.xml index 1e141d3..ed175d1 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleMapper.xml +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/resources/mapper/product/RuleMapper.xml @@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -34,6 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into rule name, + states, remark, create_by, create_time, @@ -42,6 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{name}, + #{states}, #{remark}, #{createBy}, #{createTime}, @@ -54,6 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update rule name = #{name}, + states = #{states}, remark = #{remark}, create_by = #{createBy}, create_time = #{createTime},