规格信息

master
Jiang Peng 2024-03-04 21:18:36 +08:00
parent 6b382157d9
commit b52f1b46f3
12 changed files with 233 additions and 13 deletions

View File

@ -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();

View File

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

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

View File

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

View File

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

View File

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

@ -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;

View File

@ -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<TableDataInfo<RuleInfo>> list(RuleInfoQueryReq ruleInfoQueryReq) {
public Result<TableDataInfo<RuleInfoResp>> list(RuleInfoQueryReq ruleInfoQueryReq) {
startPage();
List<RuleInfo> list = ruleInfoService.list(RuleInfo.queryBuild(ruleInfoQueryReq));
return getDataTable(list);
TableDataInfo<RuleInfoResp> tableDataInfo = ruleInfoService.queryList(ruleInfoQueryReq);
return Result.success(tableDataInfo);
}
/**
@ -83,7 +85,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)));
}
/**
@ -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<String> remove(@PathVariable List<Long> ids) {

View File

@ -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<RuleInfo> {
*/
public List<RuleInfo> list(RuleInfo ruleInfo);
/**
*
*/
public boolean save(RuleInfoAddModel ruleInfoAddModel);
TableDataInfo<RuleInfoResp> queryList(RuleInfoQueryReq ruleInfoQueryReq);
}

View File

@ -82,7 +82,7 @@ public class CategoryInfoServiceImpl extends ServiceImpl<CategoryInfoMapper, Cat
* id
*/
@Override
public List<AttributeGroup> getAttributeGroupList(Long categoryId) {
public List<AttributeGroup> getAttributeGroupList(Long categoryId){
return null;
}

View File

@ -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<RuleInfoMapper, RuleInfo> implements RuleInfoService {
@Autowired
private RuleAttrInfoService ruleAttrInfoService;
/**
*
*
* @param ruleInfo
* @return
*/
@Override
public List<RuleInfo> list(RuleInfo ruleInfo) {
@ -46,4 +61,35 @@ public class RuleInfoServiceImpl extends ServiceImpl<RuleInfoMapper, RuleInfo>
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<RuleInfoResp> queryList (RuleInfoQueryReq ruleInfoQueryReq) {
List<RuleInfo> list = this.list(RuleInfo.queryBuild(ruleInfoQueryReq));
List<RuleInfoResp> ruleInfoRespList = list.stream()
.map(ruleInfo -> RuleInfoResp.infoBuild(ruleInfo, ruleId -> {
LambdaQueryWrapper<RuleAttrInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(RuleAttrInfo::getRuleId, ruleId);
return ruleAttrInfoService.list(queryWrapper).stream().map(RuleAttrAddModel::infoBuild).toList();
}))
.toList();
return TableDataInfo.<RuleInfoResp>builder()
.rows(ruleInfoRespList)
.total(new PageInfo<>(list).getTotal())
.build();
}
}