From b52f1b46f3cb70770fdd6d7771b57ae6c119e767 Mon Sep 17 00:00:00 2001 From: Jiang Peng <2622360564@qq.com> Date: Mon, 4 Mar 2024 21:18:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=84=E6=A0=BC=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../muyu/product/domain/AttributeGroup.java | 8 +-- .../com/muyu/product/domain/RuleAttrInfo.java | 15 ++++++ .../com/muyu/product/domain/RuleInfo.java | 16 ++++++ .../domain/model/RuleAttrAddModel.java | 38 ++++++++++++++ .../domain/model/RuleInfoAddModel.java | 42 +++++++++++++++ .../product/domain/req/RuleInfoSaveReq.java | 8 +++ .../product/domain/resp/RuleInfoResp.java | 38 ++++++++++++++ .../controller/CategoryInfoController.java | 2 + .../controller/RuleInfoController.java | 12 +++-- .../muyu/product/service/RuleInfoService.java | 13 +++++ .../service/impl/CategoryInfoServiceImpl.java | 2 +- .../service/impl/RuleInfoServiceImpl.java | 52 +++++++++++++++++-- 12 files changed, 233 insertions(+), 13 deletions(-) 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/model/RuleInfoAddModel.java create mode 100644 muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeGroup.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeGroup.java index e9450e2..bc4ec66 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeGroup.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/AttributeGroup.java @@ -71,11 +71,11 @@ public class AttributeGroup extends BaseEntity { } /** - * 修改构造器 - */ - public static AttributeGroup editBuild(Long id, AttributeGroupEditReq attributeGroupEditReq){ + * 修改构造器 + */ + public static AttributeGroup editBuild(Long id,AttributeGroupEditReq attributeGroupEditReq){ return AttributeGroup.builder() - .id(id) + .id(id) .name(attributeGroupEditReq.getName()) .states(attributeGroupEditReq.getStates()) .build(); diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttrInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttrInfo.java index b6c6edd..b10bbb9 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttrInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleAttrInfo.java @@ -3,6 +3,8 @@ package com.muyu.product.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.product.domain.model.RuleAttrAddModel; +import com.muyu.product.domain.model.RuleInfoAddModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -15,6 +17,9 @@ import com.muyu.product.domain.req.RuleAttrInfoSaveReq; import com.muyu.product.domain.req.RuleAttrInfoEditReq; import com.muyu.common.core.web.domain.BaseEntity; +import java.util.Date; +import java.util.function.Supplier; + /** * 规格详情对象 rule_attr_info * @@ -86,4 +91,14 @@ public class RuleAttrInfo extends BaseEntity { .build(); } + public static RuleAttrInfo addModelBuild (RuleAttrAddModel ruleAttrAddModel, Supplier ruleId, Supplier createBy) { + return RuleAttrInfo.builder() + .ruleId(ruleId.get()) + .name(ruleAttrAddModel.getName()) + .attrValue(String.join(",", ruleAttrAddModel.getValueList())) + .createBy(createBy.get()) + .createTime(new Date()) + .build(); + } + } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleInfo.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleInfo.java index b4827e4..59533f4 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleInfo.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/RuleInfo.java @@ -3,6 +3,7 @@ package com.muyu.product.domain; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.product.domain.model.RuleInfoAddModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -15,6 +16,9 @@ import com.muyu.product.domain.req.RuleInfoSaveReq; import com.muyu.product.domain.req.RuleInfoEditReq; import com.muyu.common.core.web.domain.BaseEntity; +import java.util.Date; +import java.util.function.Supplier; + /** * 商品规格对象 rule_info * @@ -78,4 +82,16 @@ public class RuleInfo extends BaseEntity { .build(); } + /** + * 添加模型 + */ + public static RuleInfo addModelBuild(RuleInfoAddModel ruleInfoAddModel, Supplier createBy){ + return RuleInfo.builder() + .name(ruleInfoAddModel.getName()) + .status(ruleInfoAddModel.getStatus()) + .createBy(createBy.get()) + .createTime(new Date()) + .build(); + } + } 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..c08435c --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java @@ -0,0 +1,38 @@ +package com.muyu.product.domain.model; + +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.RuleAttrInfo; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.w3c.dom.stylesheets.LinkStyle; + +import java.util.Arrays; +import java.util.List; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class RuleAttrAddModel extends BaseEntity { + + /** + * 规格属性名称 + */ + private String name; + + /** + * 规格属性集合 + */ + private List valueList; + + public static RuleAttrAddModel infoBuild(RuleAttrInfo ruleAttrInfo){ + return RuleAttrAddModel.builder() + .name(ruleAttrInfo.getName()) + .valueList(Arrays.stream(ruleAttrInfo.getAttrValue().split(",")).toList()) + .build(); + } +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java new file mode 100644 index 0000000..4bde0c9 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java @@ -0,0 +1,42 @@ +package com.muyu.product.domain.model; + +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.req.RuleInfoSaveReq; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class RuleInfoAddModel extends BaseEntity { + + /** + * 规格名称 + */ + private String name; + + /** + * 规格状态 + */ + private String status; + + /** + * 规格属性集合 + */ + private List ruleAttrList; + + public static RuleInfoAddModel saveReqBuild(RuleInfoSaveReq req){ + return RuleInfoAddModel.builder() + .name(req.getName()) + .status(req.getStatus()) + .ruleAttrList(req.getRuleAttrList()) + .build(); + } +} diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoSaveReq.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoSaveReq.java index c68e0c8..56c9473 100644 --- a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoSaveReq.java +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/req/RuleInfoSaveReq.java @@ -1,5 +1,6 @@ package com.muyu.product.domain.req; +import com.muyu.product.domain.model.RuleAttrAddModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -8,6 +9,8 @@ import lombok.experimental.SuperBuilder; import io.swagger.annotations.*; import com.muyu.common.core.web.domain.BaseEntity; +import java.util.List; + /** * 商品规格对象 rule_info * @@ -38,4 +41,9 @@ public class RuleInfoSaveReq extends BaseEntity { @ApiModelProperty(name = "规格状态", value = "规格状态") private String status; + /** + * 规格属性集合 + */ + private List ruleAttrList; + } diff --git a/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java new file mode 100644 index 0000000..b09e59b --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java @@ -0,0 +1,38 @@ +package com.muyu.product.domain.resp; + +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.RuleInfo; +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.List; +import java.util.function.Function; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder +@EqualsAndHashCode(callSuper = true) +public class RuleInfoResp extends BaseEntity { + + private Long id; + + private String name; + + private String status; + + private List ruleAttrList; + + public static RuleInfoResp infoBuild(RuleInfo ruleInfo, Function> ruleAttrList){ + return RuleInfoResp.builder() + .id(ruleInfo.getId()) + .name(ruleInfo.getName()) + .status(ruleInfo.getStatus()) + .ruleAttrList(ruleAttrList.apply(ruleInfo.getId())) + .build(); + } +} diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java index f28056f..0ddbff2 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/CategoryInfoController.java @@ -4,7 +4,9 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.product.domain.AttributeGroup; import com.muyu.product.domain.model.CategoryInfoSaveModel; +import com.muyu.product.domain.req.AttributeGroupEditReq; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java index c9e9f1c..48dda4f 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/controller/RuleInfoController.java @@ -3,6 +3,8 @@ package com.muyu.product.controller; import java.util.List; import javax.servlet.http.HttpServletResponse; +import com.muyu.product.domain.model.RuleInfoAddModel; +import com.muyu.product.domain.resp.RuleInfoResp; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -45,10 +47,10 @@ public class RuleInfoController extends BaseController { @ApiOperation("获取商品规格列表") @RequiresPermissions("product:rule:list") @GetMapping("/list") - public Result> list(RuleInfoQueryReq ruleInfoQueryReq) { + public Result> list(RuleInfoQueryReq ruleInfoQueryReq) { startPage(); - List list = ruleInfoService.list(RuleInfo.queryBuild(ruleInfoQueryReq)); - return getDataTable(list); + TableDataInfo tableDataInfo = ruleInfoService.queryList(ruleInfoQueryReq); + return Result.success(tableDataInfo); } /** @@ -83,7 +85,7 @@ public class RuleInfoController extends BaseController { @PostMapping @ApiOperation("新增商品规格") public Result add(@RequestBody RuleInfoSaveReq ruleInfoSaveReq) { - return toAjax(ruleInfoService.save(RuleInfo.saveBuild(ruleInfoSaveReq))); + return toAjax(ruleInfoService.save(RuleInfoAddModel.saveReqBuild(ruleInfoSaveReq))); } /** @@ -102,7 +104,7 @@ public class RuleInfoController extends BaseController { */ @RequiresPermissions("product:rule:remove") @Log(title = "商品规格", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") + @DeleteMapping("/{ids}") @ApiOperation("删除商品规格") @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = String.class, example = "1,2,3,4") public Result remove(@PathVariable List ids) { diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java index 4ad218e..a9e9708 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/RuleInfoService.java @@ -1,8 +1,13 @@ package com.muyu.product.service; import java.util.List; + +import com.muyu.common.core.web.page.TableDataInfo; import com.muyu.product.domain.RuleInfo; import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.product.domain.model.RuleInfoAddModel; +import com.muyu.product.domain.req.RuleInfoQueryReq; +import com.muyu.product.domain.resp.RuleInfoResp; /** * 商品规格Service接口 @@ -19,4 +24,12 @@ public interface RuleInfoService extends IService { */ public List list(RuleInfo ruleInfo); + /** + * 添加规格信息 + */ + public boolean save(RuleInfoAddModel ruleInfoAddModel); + + TableDataInfo queryList(RuleInfoQueryReq ruleInfoQueryReq); + + } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java index 6ef7c34..1ea9d99 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/CategoryInfoServiceImpl.java @@ -82,7 +82,7 @@ public class CategoryInfoServiceImpl extends ServiceImpl getAttributeGroupList(Long categoryId) { + public List getAttributeGroupList(Long categoryId){ return null; } diff --git a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java index 3d180d5..95d5e4f 100644 --- a/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/service/impl/RuleInfoServiceImpl.java @@ -1,9 +1,24 @@ package com.muyu.product.service.impl; +import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.muyu.common.core.utils.ObjUtils; +import com.muyu.common.core.web.page.TableDataInfo; +import com.muyu.common.security.utils.SecurityUtils; +import com.muyu.product.domain.RuleAttrInfo; +import com.muyu.product.domain.model.RuleAttrAddModel; +import com.muyu.product.domain.model.RuleInfoAddModel; +import com.muyu.product.domain.req.RuleInfoQueryReq; +import com.muyu.product.domain.resp.RuleInfoResp; +import com.muyu.product.service.RuleAttrInfoService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.muyu.product.mapper.RuleInfoMapper; import com.muyu.product.domain.RuleInfo; @@ -21,11 +36,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @Service public class RuleInfoServiceImpl extends ServiceImpl implements RuleInfoService { + @Autowired + private RuleAttrInfoService ruleAttrInfoService; + /** * 查询商品规格列表 - * - * @param ruleInfo 商品规格 - * @return 商品规格 */ @Override public List list(RuleInfo ruleInfo) { @@ -46,4 +61,35 @@ public class RuleInfoServiceImpl extends ServiceImpl return list(queryWrapper); } + + /** + * 添加规格信息 + */ + @Override + public boolean save (RuleInfoAddModel ruleInfoAddModel) { + RuleInfo ruleInfo = RuleInfo.addModelBuild(ruleInfoAddModel, SecurityUtils::getUsername); + boolean save = this.save(ruleInfo); + ruleAttrInfoService.saveBatch( + ruleInfoAddModel.getRuleAttrList().stream() + .map(ruleAttrAddModel -> RuleAttrInfo.addModelBuild(ruleAttrAddModel, ruleInfo::getId, SecurityUtils::getUsername)) + .toList() + ); + return save; + } + + @Override + public TableDataInfo queryList (RuleInfoQueryReq ruleInfoQueryReq) { + List list = this.list(RuleInfo.queryBuild(ruleInfoQueryReq)); + List ruleInfoRespList = list.stream() + .map(ruleInfo -> RuleInfoResp.infoBuild(ruleInfo, ruleId -> { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(RuleAttrInfo::getRuleId, ruleId); + return ruleAttrInfoService.list(queryWrapper).stream().map(RuleAttrAddModel::infoBuild).toList(); + })) + .toList(); + return TableDataInfo.builder() + .rows(ruleInfoRespList) + .total(new PageInfo<>(list).getTotal()) + .build(); + } }