diff --git a/muyu-common/muyu-common-datascope/src/main/java/com/muyu/common/datascope/aspect/DataScopeAspect.java b/muyu-common/muyu-common-datascope/src/main/java/com/muyu/common/datascope/aspect/DataScopeAspect.java index 3d66b0d..65331d7 100644 --- a/muyu-common/muyu-common-datascope/src/main/java/com/muyu/common/datascope/aspect/DataScopeAspect.java +++ b/muyu-common/muyu-common-datascope/src/main/java/com/muyu/common/datascope/aspect/DataScopeAspect.java @@ -109,8 +109,7 @@ public class DataScopeAspect { if (StringUtils.isNotBlank(sqlString.toString())) { Object params = joinPoint.getArgs()[0]; - if (StringUtils.isNotNull(params) && params instanceof BaseEntity) { - BaseEntity baseEntity = (BaseEntity) params; + if (StringUtils.isNotNull(params) && params instanceof BaseEntity baseEntity) { baseEntity.getParams().put(DATA_SCOPE, " AND (" + sqlString.substring(4) + ")"); } } 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 71b2313..dc9eb4e 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,24 +3,27 @@ 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.common.core.annotation.Excel; -import com.muyu.common.core.web.domain.BaseEntity; -import com.muyu.product.domain.req.RuleAttrInfoEditReq; -import com.muyu.product.domain.req.RuleAttrInfoQueryReq; -import com.muyu.product.domain.req.RuleAttrInfoSaveReq; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.AllArgsConstructor; +import com.muyu.product.domain.model.RuleAttrAddModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import lombok.AllArgsConstructor; import lombok.experimental.SuperBuilder; +import io.swagger.annotations.*; +import com.muyu.common.core.annotation.Excel; +import com.muyu.product.domain.req.RuleAttrInfoQueryReq; +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 * * @author CuiShiYu - * @date 2024-02-27 + * @date 2024-03-06 */ @Data @SuperBuilder @@ -54,8 +57,8 @@ public class RuleAttrInfo extends BaseEntity { private String attrValue; /** - * 查询构造器 - */ + * 查询构造器 + */ public static RuleAttrInfo queryBuild( RuleAttrInfoQueryReq ruleAttrInfoQueryReq){ return RuleAttrInfo.builder() .ruleId(ruleAttrInfoQueryReq.getRuleId()) @@ -65,8 +68,8 @@ public class RuleAttrInfo extends BaseEntity { } /** - * 添加构造器 - */ + * 添加构造器 + */ public static RuleAttrInfo saveBuild(RuleAttrInfoSaveReq ruleAttrInfoSaveReq){ return RuleAttrInfo.builder() .ruleId(ruleAttrInfoSaveReq.getRuleId()) @@ -76,15 +79,24 @@ public class RuleAttrInfo extends BaseEntity { } /** - * 修改构造器 - */ + * 修改构造器 + */ public static RuleAttrInfo editBuild(Long id, RuleAttrInfoEditReq ruleAttrInfoEditReq){ return RuleAttrInfo.builder() - .id(id) + .id(id) .ruleId(ruleAttrInfoEditReq.getRuleId()) .name(ruleAttrInfoEditReq.getName()) .attrValue(ruleAttrInfoEditReq.getAttrValue()) .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 3b9c4c4..4328888 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 @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.muyu.common.core.annotation.Excel; import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.model.RuleInfoAddModel; import com.muyu.product.domain.req.RuleInfoEditReq; import com.muyu.product.domain.req.RuleInfoQueryReq; import com.muyu.product.domain.req.RuleInfoSaveReq; @@ -16,6 +17,9 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +import java.util.Date; +import java.util.function.Supplier; + /** * 商品规格对象 rule_info * @@ -79,4 +83,18 @@ public class RuleInfo extends BaseEntity { .build(); } + /** + * 添加模型 + * @param ruleInfoAddModel + * @param createBy + * @return + */ + 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..0ecdda1 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleAttrAddModel.java @@ -0,0 +1,43 @@ +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 java.util.Arrays; +import java.util.List; + +/** + * @ClassName RuleAttrAddModel + * @Description 描述 + * @Author ShiYu.Cui + * @Date 2024/3/5 20:21 + */ +@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..b665d7d --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/model/RuleInfoAddModel.java @@ -0,0 +1,46 @@ +package com.muyu.product.domain.model; + +import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.req.RuleInfoSaveReq; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +/** + * @ClassName RuleInfoAddModel + * @Description 规格保存模型 + * @Author ShiYu.Cui + * @Date 2024/3/5 20:34 + */ +@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 877fbc7..ede1ff4 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,6 +1,7 @@ package com.muyu.product.domain.req; import com.muyu.common.core.web.domain.BaseEntity; +import com.muyu.product.domain.model.RuleAttrAddModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; @@ -8,6 +9,8 @@ import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +import java.util.List; + /** * 商品规格对象 rule_info * @@ -23,10 +26,6 @@ public class RuleInfoSaveReq extends BaseEntity { private static final long serialVersionUID = 1L; - /** 主键 */ - - @ApiModelProperty(name = "主键", value = "主键") - private Long id; /** 规格名称 */ @@ -38,4 +37,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..8596383 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-common/src/main/java/com/muyu/product/domain/resp/RuleInfoResp.java @@ -0,0 +1,48 @@ +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; + +/** + * @author DongZl + * @description: 规格返回结果集 + * @Date 2024-3-4 下午 04:08 + */ +@Data +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@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/a b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/a new file mode 100644 index 0000000..6605f23 --- /dev/null +++ b/muyu-modules/muyu-product/muyu-product-server/src/main/java/com/muyu/product/a @@ -0,0 +1,41 @@ +{ + "name":null, + "remark":null, + "rules":[ + { + "rule":null, + "values":[] + } + ] +} + +{ + "id":1, + "name":规格名称, + "ruleAttrs":[ + "rule":{ + ruleName:"", + ruleValue:[] + } + ] +} + + + +{ + "品类id":1 + "name": + "remark":null + "req":{ + "attributeGroupList":[ + "attribute":{ + "属性id":1 + "name":null + } + ] + } +} + + + + 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 278092f..3465d9e 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 @@ -26,7 +26,7 @@ import java.util.List; * 品类信息Controller * * @author CuiShiYu - * @date 2024-02-27 + * @date 2024-03-03 */ @Api(tags = "品类信息") @RestController 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 2d8cced..6793c5f 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 @@ -1,30 +1,36 @@ package com.muyu.product.controller; +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.muyu.product.domain.model.RuleInfoAddModel; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; 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.product.domain.RuleInfo; -import com.muyu.product.domain.req.RuleInfoEditReq; import com.muyu.product.domain.req.RuleInfoQueryReq; import com.muyu.product.domain.req.RuleInfoSaveReq; +import com.muyu.product.domain.req.RuleInfoEditReq; import com.muyu.product.service.RuleInfoService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletResponse; -import java.util.List; +import com.muyu.common.core.web.page.TableDataInfo; /** * 商品规格Controller * - * @author CuiShiYu + * @author DongZeLiang * @date 2024-02-27 */ @Api(tags = "商品规格") @@ -78,7 +84,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))); } /** @@ -97,7 +103,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 259b631..42d449a 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,14 +1,14 @@ package com.muyu.product.service; -import com.baomidou.mybatisplus.extension.service.IService; -import com.muyu.product.domain.RuleInfo; - import java.util.List; +import com.muyu.product.domain.RuleInfo; +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.product.domain.model.RuleInfoAddModel; /** * 商品规格Service接口 * - * @author CuiShiYu + * @author DongZeLiang * @date 2024-02-27 */ public interface RuleInfoService extends IService { @@ -20,4 +20,10 @@ public interface RuleInfoService extends IService { */ public List list(RuleInfo ruleInfo); + /** + * 添加规格信息 + * @param ruleInfoAddModel 规格添加模型 + * @return 时候成功 + */ + public boolean save(RuleInfoAddModel ruleInfoAddModel); } 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 a8aa2ea..fbe2ae2 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 @@ -23,7 +23,7 @@ import java.util.List; * 品类信息Service业务层处理 * * @author CuiShiYu - * @date 2024-02-27 + * @date 2024-03-03 */ @Slf4j @Service 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 30c6213..b978f5c 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,26 +1,38 @@ package com.muyu.product.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.muyu.common.core.utils.ObjUtils; -import com.muyu.product.domain.RuleInfo; -import com.muyu.product.mapper.RuleInfoMapper; -import com.muyu.product.service.RuleInfoService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - +import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.stream.Collectors; + +import com.muyu.common.core.utils.ObjUtils; +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.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; +import com.muyu.product.service.RuleInfoService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; /** * 商品规格Service业务层处理 * - * @author CuiShiYu + * @author DongZeLiang * @date 2024-02-27 */ @Slf4j @Service public class RuleInfoServiceImpl extends ServiceImpl implements RuleInfoService { + @Autowired + private RuleAttrInfoService ruleAttrInfoService; + /** * 查询商品规格列表 * @@ -46,4 +58,23 @@ public class RuleInfoServiceImpl extends ServiceImpl return list(queryWrapper); } + + /** + * 添加规格信息 + * + * @param ruleInfoAddModel 规格添加模型 + * + * @return 时候成功 + */ + @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; + } }