master
meng 2024-11-14 00:13:13 +08:00
parent 464d89b118
commit bee8ea148a
20 changed files with 301 additions and 19 deletions

View File

@ -1,6 +1,6 @@
# Tomcat
server:
port: 8080
port: 18080
# Spring
spring:

View File

@ -22,7 +22,7 @@ import java.util.List;
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class RuleInfoAddModel extends BaseEntity {
private Long id;
/** 规格名称 */
private String name;

View File

@ -1,6 +1,8 @@
package com.muyu.product.domain.req;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -33,5 +35,10 @@ public class AttributeGroupEditReq extends BaseEntity {
@ApiModelProperty(name = "状态", value = "状态", required = true)
private String states;
/**
* ID
*/
@ApiModelProperty(name = "属性ID集合", value = "属性ID集合", required = true)
private List<Long> attributeIdList;
}

View File

@ -0,0 +1,27 @@
package com.muyu.product.domain.req;
import com.muyu.product.domain.model.RuleAttrAddModel;
import com.muyu.product.domain.resp.RuleInfoResp;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RuleAttrInfoReq {
/** 规格名称 */
private String name;
/** 规格状态 */
private String status;
/**
*
*/
private List<RuleAttrAddModel> ruleAttrList;
}

View File

@ -8,6 +8,8 @@ import lombok.experimental.SuperBuilder;
import io.swagger.annotations.*;
import com.muyu.common.core.web.domain.BaseEntity;
import java.util.List;
/**
* rule_info
*
@ -30,5 +32,4 @@ public class RuleInfoEditReq extends BaseEntity {
/** 规格状态 */
@ApiModelProperty(name = "规格状态", value = "规格状态")
private String status;
}

View File

@ -1,7 +1,11 @@
package com.muyu.product.domain.resp;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.common.core.annotation.Excel;
import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.domain.AttributeInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -13,8 +17,20 @@ import java.util.List;
@AllArgsConstructor
@NoArgsConstructor
public class AttributeInfoResp {
//属性组
private AttributeGroup attributeGroup=new AttributeGroup();
/** 属性组编号 */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty(name = "属性组编号", value = "属性组编号")
private Long id;
/** 组名称 */
@Excel(name = "组名称")
@ApiModelProperty(name = "组名称", value = "组名称", required = true)
private String name;
/** 状态 */
@Excel(name = "状态")
@ApiModelProperty(name = "状态", value = "状态", required = true)
private String states;
//商品属性
private List<AttributeInfo> attributeInfos;
}

View File

@ -0,0 +1,36 @@
package com.muyu.product.domain.resp;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.muyu.common.core.annotation.Excel;
import com.muyu.product.domain.RuleAttrInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RuleAttrInfoResp {
/** 主键 */
@TableId(value = "id",type = IdType.AUTO)
@ApiModelProperty(name = "主键", value = "主键")
private Long id;
/** 规格名称 */
@Excel(name = "规格名称")
@ApiModelProperty(name = "规格名称", value = "规格名称")
private String name;
/** 规格状态 */
@Excel(name = "规格状态")
@ApiModelProperty(name = "规格状态", value = "规格状态")
private String status;
private List<RuleAttrInfo> ruleInfoResps;
private List<String> attrValue;
}

View File

@ -108,8 +108,9 @@ public class AttributeGroupController extends BaseController {
@Log(title = "属性组", businessType = BusinessType.UPDATE)
@PutMapping("/{id}")
@ApiOperation("修改属性组")
public Result<String> edit(@PathVariable Long id, @RequestBody AttributeGroupEditReq attributeGroupEditReq) {
return toAjax(attributeGroupService.updateById(AttributeGroup.editBuild(id,attributeGroupEditReq)));
public Result edit(@PathVariable Long id, @RequestBody AttributeGroupEditReq attributeGroupEditReq) {
attributeGroupService.updAsAttributeGroup(id,attributeGroupEditReq);
return Result.success("修改成功");
}
/**

View File

@ -5,6 +5,8 @@ import javax.servlet.http.HttpServletResponse;
import com.muyu.common.core.text.Convert;
import com.muyu.product.domain.model.RuleInfoAddModel;
import com.muyu.product.domain.req.RuleAttrInfoReq;
import com.muyu.product.domain.resp.RuleAttrInfoResp;
import com.muyu.product.domain.resp.RuleInfoResp;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
@ -77,8 +79,9 @@ public class RuleInfoController extends BaseController {
@RequiresPermissions("product:rule:query")
@GetMapping(value = "/{id}")
@ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Long", paramType = "path", dataTypeClass = Long.class)
public Result<RuleInfo> getInfo(@PathVariable("id") Long id) {
return Result.success(ruleInfoService.getById(id));
public Result<RuleInfoAddModel> getInfo(@PathVariable("id") Long id) {
RuleInfoAddModel resp=ruleInfoService.getRuleAttrInfoResp(id);
return Result.success(resp);
}
/**
@ -99,8 +102,9 @@ public class RuleInfoController extends BaseController {
@Log(title = "商品规格", businessType = BusinessType.UPDATE)
@PutMapping("/{id}")
@ApiOperation("修改商品规格")
public Result<String> edit(@PathVariable Long id, @RequestBody RuleInfoEditReq ruleInfoEditReq) {
return toAjax(ruleInfoService.updateById(RuleInfo.editBuild(id,ruleInfoEditReq)));
public Result edit(@PathVariable Long id, @RequestBody RuleAttrInfoReq req) {
ruleInfoService.updateRuleById(id,req);
return Result.success();
}
/**

View File

@ -22,4 +22,9 @@ public interface AttributeGroupMapper extends BaseMapper<AttributeGroup> {
AttributeInfo getAttributeInfo(@Param("attributeId") Long attributeId);
//属性组
AttributeGroup getAttributeGroup(@Param("id") Long id);
//删除中间表
void deleteAsAttributeGroup(@Param("id") Long id);
//添加中间表
void addAsAttributeGroup(@Param("id") Long id, @Param("attributeIdList") List<Long> attributeIdList);
}

View File

@ -3,6 +3,9 @@ package com.muyu.product.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.product.domain.RuleAttrInfo;
import com.muyu.product.domain.req.RuleAttrInfoReq;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
@ -10,6 +13,35 @@ import com.muyu.product.domain.RuleAttrInfo;
* @author DongZeLiang
* @date 2024-02-27
*/
@Mapper
public interface RuleAttrInfoMapper extends BaseMapper<RuleAttrInfo> {
/**
*
* @param id
* @return
*/
List<RuleAttrInfo> getRuleAttrInfo(@Param("id") Long id);
/**
*
* @param id
*/
void deleteRule(@Param("id") Long id);
/**
*
* @param id
*/
void updRule(@Param("id") Long id, @Param("req") RuleAttrInfoReq req);
/**
*
* @param id
* @param name
* @param valueData
*/
void addRuleAttrModel(@Param("id") Long id, @Param("name") String name, @Param("valueData") String valueData);
}

View File

@ -7,6 +7,7 @@ import com.muyu.product.domain.AttributeGroup;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.domain.model.AttributeGroupSaveModel;
import com.muyu.product.domain.req.AttributeGroupEditReq;
import com.muyu.product.domain.resp.AttributeGroupPageResp;
import com.muyu.product.domain.resp.AttributeInfoResp;
@ -46,4 +47,11 @@ public interface AttributeGroupService extends IService<AttributeGroup> {
* @return
*/
AttributeInfoResp getInfo(Long id);
/**
*
* @param id
* @param attributeGroupEditReq
*/
void updAsAttributeGroup(Long id, AttributeGroupEditReq attributeGroupEditReq);
}

View File

@ -25,4 +25,11 @@ public interface RuleAttrInfoService extends IService<RuleAttrInfo> {
* @return
*/
List<RuleAttrInfo> getInfoByRuleId (Long ruleId);
/**
*
* @param id
* @return
*/
List<RuleAttrInfo> getRuleAttrInfo(Long id);
}

View File

@ -6,7 +6,10 @@ 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.RuleAttrInfoReq;
import com.muyu.product.domain.req.RuleInfoEditReq;
import com.muyu.product.domain.req.RuleInfoQueryReq;
import com.muyu.product.domain.resp.RuleAttrInfoResp;
import com.muyu.product.domain.resp.RuleInfoResp;
/**
@ -32,4 +35,15 @@ public interface RuleInfoService extends IService<RuleInfo> {
public boolean save(RuleInfoAddModel ruleInfoAddModel);
TableDataInfo<RuleInfoResp> queryList (RuleInfoQueryReq ruleInfoQueryReq);
/**
*
* @param id
* @return
*/
RuleInfoAddModel getRuleAttrInfoResp(Long id);
void updateRuleById(Long id, RuleAttrInfoReq req);
}

View File

@ -31,11 +31,9 @@ public class AsAttributeGroupServiceImpl extends ServiceImpl<AsAttributeGroupMap
public List<AsAttributeGroup> list(AsAttributeGroup asAttributeGroup) {
LambdaQueryWrapper<AsAttributeGroup> queryWrapper = new LambdaQueryWrapper<>();
if (ObjUtils.notNull(asAttributeGroup.getGroupId())){
queryWrapper.eq(AsAttributeGroup::getGroupId, asAttributeGroup.getGroupId());
}
if (ObjUtils.notNull(asAttributeGroup.getAttributeId())){
queryWrapper.eq(AsAttributeGroup::getAttributeId, asAttributeGroup.getAttributeId());
}

View File

@ -9,6 +9,7 @@ import com.muyu.product.domain.AsAttributeGroup;
import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.domain.model.AttributeGroupSaveModel;
import com.muyu.product.domain.req.AttributeGroupEditReq;
import com.muyu.product.domain.resp.AttributeGroupPageResp;
import com.muyu.product.domain.resp.AttributeInfoResp;
import com.muyu.product.mapper.AttributeGroupMapper;
@ -22,8 +23,6 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Stream;
/**
* Service
@ -120,15 +119,31 @@ public class AttributeGroupServiceImpl extends ServiceImpl<AttributeGroupMapper,
public AttributeInfoResp getInfo(Long id) {
AttributeInfoResp attributeInfoResp = new AttributeInfoResp();
//查询属性组表
AttributeGroup mapperAttributeGroup=attributeGroupMapper.getAttributeGroup(id);
AttributeGroup byId = this.getById(id);
attributeInfoResp.setId(byId.getId());
attributeInfoResp.setName(byId.getName());
attributeInfoResp.setStates(byId.getStates());
List<AsAttributeGroup> attributeGroups=attributeGroupMapper.getAsAttributeGroup(id);
ArrayList<AttributeInfo> list = new ArrayList<>();
for (AsAttributeGroup attributeGroup : attributeGroups) {
AttributeInfo attributeInfos=attributeGroupMapper.getAttributeInfo(attributeGroup.getAttributeId());
list.add(attributeInfos);
}
attributeInfoResp.setAttributeGroup(mapperAttributeGroup);
attributeInfoResp.setAttributeInfos(list);
return attributeInfoResp;
}
/**
*
* @param id
* @param attributeGroupEditReq
*/
@Override
public void updAsAttributeGroup(Long id, AttributeGroupEditReq attributeGroupEditReq) {
//
//先删除中间表
attributeGroupMapper.deleteAsAttributeGroup(id);
//添加中间表
attributeGroupMapper.addAsAttributeGroup(id,attributeGroupEditReq.getAttributeIdList());
}
}

View File

@ -4,6 +4,7 @@ import java.util.List;
import com.muyu.common.core.utils.ObjUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.muyu.product.mapper.RuleAttrInfoMapper;
import com.muyu.product.domain.RuleAttrInfo;
@ -20,7 +21,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@Slf4j
@Service
public class RuleAttrInfoServiceImpl extends ServiceImpl<RuleAttrInfoMapper, RuleAttrInfo> implements RuleAttrInfoService {
@Autowired
private RuleAttrInfoMapper ruleAttrInfoMapper;
/**
*
*
@ -64,4 +66,15 @@ public class RuleAttrInfoServiceImpl extends ServiceImpl<RuleAttrInfoMapper, Rul
queryWrapper.eq(RuleAttrInfo::getRuleId, ruleId);
return this.list(queryWrapper);
}
/**
*
* @param id
* @return
*/
@Override
public List<RuleAttrInfo> getRuleAttrInfo(Long id) {
List<RuleAttrInfo> ruleAttrInfos= ruleAttrInfoMapper.getRuleAttrInfo(id);
return ruleAttrInfos;
}
}

View File

@ -15,8 +15,12 @@ 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.RuleAttrInfoReq;
import com.muyu.product.domain.req.RuleInfoEditReq;
import com.muyu.product.domain.req.RuleInfoQueryReq;
import com.muyu.product.domain.resp.RuleAttrInfoResp;
import com.muyu.product.domain.resp.RuleInfoResp;
import com.muyu.product.mapper.RuleAttrInfoMapper;
import com.muyu.product.service.RuleAttrInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -39,7 +43,8 @@ public class RuleInfoServiceImpl extends ServiceImpl<RuleInfoMapper, RuleInfo>
@Autowired
private RuleAttrInfoService ruleAttrInfoService;
@Autowired
private RuleAttrInfoMapper ruleAttrInfoMapper;
/**
*
*
@ -107,4 +112,59 @@ public class RuleInfoServiceImpl extends ServiceImpl<RuleInfoMapper, RuleInfo>
.total(isPage ? new PageInfo<>(list).getTotal() : 0)
.build();
}
/**
*
* @param id
* @return
*/
@Override
public RuleInfoAddModel getRuleAttrInfoResp(Long id) {
//获取商品规格
RuleInfo byId = this.getById(id);
if (byId==null){
throw new RuntimeException("没有这个商品规格");
}
List<RuleAttrInfo> ruleAttrInfos=ruleAttrInfoService.getRuleAttrInfo(byId.getId());
ArrayList<RuleAttrAddModel> arrayList = new ArrayList<>();
RuleAttrAddModel ruleAttrAddModel = new RuleAttrAddModel();
for (RuleAttrInfo ruleAttrInfo : ruleAttrInfos) {
ruleAttrAddModel.setName(ruleAttrInfo.getName());
}
List<String> list = ruleAttrInfos.stream().map(RuleAttrInfo::getAttrValue).toList();
ruleAttrAddModel.setValueList(list);
arrayList.add(ruleAttrAddModel);
RuleInfoAddModel resp = new RuleInfoAddModel();
resp.setId(byId.getId());
resp.setName(byId.getName());
resp.setStatus(byId.getStatus());
resp.setRuleAttrList(arrayList);
return resp;
}
/**
*
* @param id
* @param req
*/
@Override
public void updateRuleById(Long id, RuleAttrInfoReq req) {
//修改商品规格表
ruleAttrInfoMapper.updRule(id,req);
//删除规格详情表
ruleAttrInfoMapper.deleteRule(id);
//添加规格详情表
List<RuleAttrAddModel> ruleAttrList = req.getRuleAttrList();
for (RuleAttrAddModel ruleAttrAddModel : ruleAttrList) {
List<String> valueList = ruleAttrAddModel.getValueList();
String value="";
String valueData=null;
for (String s : valueList) {
valueData = value + "," + s;
}
String substring = valueData.substring(1);
System.out.println(substring);
ruleAttrInfoMapper.addRuleAttrModel(id,ruleAttrAddModel.getName(),substring);
}
}
}

View File

@ -18,6 +18,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectAttributeGroupVo">
select id, name, states, create_by, create_time, updata_by, updata_time, remark from attribute_group
</sql>
<insert id="addAsAttributeGroup">
INSERT INTO as_attribute_group (`group_id`, `attribute_id`)
VALUES
<foreach collection="attributeIdList" item="attributeIdList" separator=",">
( #{id}, #{attributeIdList})
</foreach>
</insert>
<delete id="deleteAsAttributeGroup">
delete from as_attribute_group where as_attribute_group.group_id=#{id}
</delete>
<select id="getAsAttributeGroup" resultType="com.muyu.product.domain.AsAttributeGroup">
select attribute_id from as_attribute_group where group_id=#{id}
</select>

View File

@ -19,4 +19,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectRuleAttrInfoVo">
select id, rule_id, name, attr_value, remark, create_by, create_time, update_by, update_time from rule_attr_info
</sql>
<insert id="addRuleAttrModel">
INSERT INTO rule_attr_info ( `rule_id`, `name`, `attr_value`,create_by, `create_time`)
VALUES ( #{id},#{name}, #{valueData},'admin',now());
</insert>
<update id="updRule">
UPDATE `muyu`.`rule_info`
SET `name` = #{req.name},
`status` = #{req.status},
`update_time` = now()
WHERE
`id` = #{id}
</update>
<delete id="deleteRule">
delete from rule_attr_info where rule_id=#{id}
</delete>
<select id="getRuleAttrInfo" resultType="com.muyu.product.domain.RuleAttrInfo">
select
rule_attr_info.id as id,
rule_attr_info.rule_id as rule_id,
rule_attr_info.name as name,
rule_attr_info.attr_value as attr_value,
rule_attr_info.remark as remark,
rule_attr_info.create_by as create_by,
rule_attr_info.create_time as create_time,
rule_attr_info.update_by as update_by,
rule_attr_info.update_time as update_time
from rule_attr_info where rule_id=#{id}
</select>
</mapper>