商品规格添加

dev
csy 2024-03-06 21:19:49 +08:00
parent 42963e7d20
commit a656965241
13 changed files with 305 additions and 51 deletions

View File

@ -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) + ")");
}
}

View File

@ -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
@ -87,4 +90,13 @@ public class RuleAttrInfo extends BaseEntity {
.build();
}
public static RuleAttrInfo addModelBuild (RuleAttrAddModel ruleAttrAddModel, Supplier<Long> ruleId, Supplier<String> createBy) {
return RuleAttrInfo.builder()
.ruleId(ruleId.get())
.name(ruleAttrAddModel.getName())
.attrValue(String.join(",", ruleAttrAddModel.getValueList()))
.createBy(createBy.get())
.createTime(new Date())
.build();
}
}

View File

@ -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<String> createBy) {
return RuleInfo.builder()
.name(ruleInfoAddModel.getName())
.status(ruleInfoAddModel.getStatus())
.createBy(createBy.get())
.createTime(new Date())
.build();
}
}

View File

@ -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<String> valueList;
public static RuleAttrAddModel infoBuild (RuleAttrInfo ruleAttrInfo) {
return RuleAttrAddModel.builder()
.name(ruleAttrInfo.getName())
.valueList(Arrays.stream(ruleAttrInfo.getAttrValue().split(",")).toList())
.build();
}
}

View File

@ -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<RuleAttrAddModel> ruleAttrList;
public static RuleInfoAddModel saveReqBuild(RuleInfoSaveReq req){
return RuleInfoAddModel.builder()
.name(req.getName())
.status(req.getStatus())
.ruleAttrList(req.getRuleAttrList())
.build();
}
}

View File

@ -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<RuleAttrAddModel> ruleAttrList;
}

View File

@ -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<RuleAttrAddModel> ruleAttrList;
public static RuleInfoResp infoBuild (RuleInfo ruleInfo, Function<Long, List<RuleAttrAddModel>> ruleAttrList) {
return RuleInfoResp.builder()
.id(ruleInfo.getId())
.name(ruleInfo.getName())
.status(ruleInfo.getStatus())
.ruleAttrList(ruleAttrList.apply(ruleInfo.getId()))
.build();
}
}

View File

@ -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
}
]
}
}

View File

@ -26,7 +26,7 @@ import java.util.List;
* Controller
*
* @author CuiShiYu
* @date 2024-02-27
* @date 2024-03-03
*/
@Api(tags = "品类信息")
@RestController

View File

@ -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<String> add(@RequestBody RuleInfoSaveReq ruleInfoSaveReq) {
return toAjax(ruleInfoService.save(RuleInfo.saveBuild(ruleInfoSaveReq)));
return toAjax(ruleInfoService.save(RuleInfoAddModel.saveReqBuild(ruleInfoSaveReq)));
}
/**

View File

@ -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<RuleInfo> {
@ -20,4 +20,10 @@ public interface RuleInfoService extends IService<RuleInfo> {
*/
public List<RuleInfo> list(RuleInfo ruleInfo);
/**
*
* @param ruleInfoAddModel
* @return
*/
public boolean save(RuleInfoAddModel ruleInfoAddModel);
}

View File

@ -23,7 +23,7 @@ import java.util.List;
* Service
*
* @author CuiShiYu
* @date 2024-02-27
* @date 2024-03-03
*/
@Slf4j
@Service

View File

@ -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<RuleInfoMapper, RuleInfo> implements RuleInfoService {
@Autowired
private RuleAttrInfoService ruleAttrInfoService;
/**
*
*
@ -46,4 +58,23 @@ public class RuleInfoServiceImpl extends ServiceImpl<RuleInfoMapper, RuleInfo>
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;
}
}