属性组的添加和列表

master
20300 2024-03-05 21:03:32 +08:00
parent 90db89c0e1
commit 2f4bb745de
20 changed files with 589 additions and 0 deletions

View File

@ -0,0 +1,23 @@
package com.muyu.product;
import com.muyu.common.security.annotation.EnableCustomConfig;
import com.muyu.common.security.annotation.EnableMyFeignClients;
import com.muyu.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @ClassName MuYuProductApplication
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 12:31
*/
@EnableCustomConfig
@EnableCustomSwagger2
@EnableMyFeignClients
@SpringBootApplication
public class MuYuProductApplication {
public static void main(String[] args) {
SpringApplication.run(MuYuProductApplication.class,args);
}
}

View File

@ -0,0 +1,73 @@
package com.muyu.product.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.product.domain.AsAttributeAttributeGroup;
import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.domain.req.AttributeGroupReq;
import com.muyu.product.domain.resp.AttributeGroupResp;
import com.muyu.product.service.AsAttributeAttributeGroupService;
import com.muyu.product.service.AttributeGroupService;
import com.muyu.product.service.AttributeInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @ClassName AttributeGroupController
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:05
*/
@RestController
@RequestMapping("/attributeGroup")
public class AttributeGroupController {
@Autowired
private AttributeInfoService attributeInfoService;
@Autowired
private AsAttributeAttributeGroupService asAttributeAttributeGroupService;
@Autowired
private AttributeGroupService attributeGroupService;
//获取属性组列表
@GetMapping("/getAttributeGroupList")
public Result<List<AttributeGroupResp>> getAttributeGroupList(@RequestParam("attributeName") String attributeName){
QueryWrapper<AttributeGroup> queryWrapper = new QueryWrapper<>();
if (attributeName!=null && !"".equals(attributeName)){
queryWrapper.like("name",attributeName);
}
//这里得到的是属性组集合
List<AttributeGroup> attributeGroupList = attributeGroupService.list(queryWrapper);
//使用属性组集合中的每一个Id,来得到属性Id集合
List<AttributeGroupResp> attributeGroupRespList = attributeGroupList.stream()
.map(attributeGroup
-> AttributeGroupResp.groupFunBuild(attributeGroup,
id -> asAttributeAttributeGroupService.getAttributeGroupRespList(id)
)
).toList();
//使用属性id集合,来获得属性集合
return Result.success(attributeGroupRespList);
}
@PostMapping("/insertAttributeGroup")
public Result insertAttributeGroup(@RequestBody AttributeGroupReq attributeGroupReq){
AttributeGroup attributeGroup = AttributeGroup.BuildAttributeGroupByReq(attributeGroupReq);
boolean save = attributeGroupService.save(attributeGroup);
System.out.println("添加属性组之后返回的主键:"+attributeGroup.getId());
attributeGroupReq.setAttributeGroupId(attributeGroup.getId());
List<AsAttributeAttributeGroup> asAttributeAttributeGroupList = AsAttributeAttributeGroup.buildAttributeMiddle(attributeGroupReq);
boolean b = asAttributeAttributeGroupService.saveBatch(asAttributeAttributeGroupList);
if (b){
return Result.success();
}
return Result.error();
}
}

View File

@ -0,0 +1,81 @@
package com.muyu.product.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.muyu.common.core.domain.Result;
import com.muyu.common.core.utils.StringUtils;
import com.muyu.common.core.web.page.TableDataInfo;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.service.AttributeInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
/**
* @ClassName AttributeInfoController
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:22
*/
@RestController
@RequestMapping("/attributeInfo")
public class AttributeInfoController {
@Autowired
private AttributeInfoService attributeInfoService;
//查询所有属性
@RequiresPermissions("product:attributeInfo:list")
@GetMapping("/list")
public Result<List<AttributeInfo>> getAttributeInfoList(@RequestParam("name") String name){
LambdaQueryWrapper<AttributeInfo> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotEmpty(name)){
queryWrapper.like(AttributeInfo::getName,name);
}
List<AttributeInfo> list = attributeInfoService.list(queryWrapper);
return Result.success(list);
}
//添加或者修改
@RequiresPermissions("product:attributeInfo:add")
@PostMapping("/insertAttribute")
public Result insertAttribute(@RequestBody AttributeInfo attributeInfo){
System.out.println(attributeInfo);
if (attributeInfo.getId()==null){
attributeInfo.setCreateBy(SecurityUtils.getUsername());
attributeInfo.setCreateTime(new Date());
boolean save = attributeInfoService.save(attributeInfo);
if (save){
return Result.success();
}
return Result.error();
}else{
attributeInfo.setUpdateBy(SecurityUtils.getUsername());
attributeInfo.setUpdateTime(new Date());
QueryWrapper<AttributeInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("id",attributeInfo.getId());
boolean update = attributeInfoService.update(attributeInfo,queryWrapper);
if (update){
return Result.success();
}else {
return Result.error("修改失败");
}
}
}
//删除
@RequiresPermissions("product:attribute:delete")
@GetMapping("/deleteAttributeById")
public Result deleteById(@RequestParam("attributeInfoId") Integer attributeInfoId){
boolean b = attributeInfoService.removeById(attributeInfoId);
if (b){
return Result.success();
}
return Result.error("位置错误,删除失败!");
}
}

View File

@ -0,0 +1,59 @@
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.common.security.utils.SecurityUtils;
import com.muyu.product.domain.req.AttributeGroupReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @ClassName AsAttributeAttributeGroup
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:01
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("as_attribute_attribute_group")
public class AsAttributeAttributeGroup extends BaseEntity {
private static final long serialVersionUID = 1L;
@Excel(name = "属性属性组,中间表编号",cellType = Excel.ColumnType.NUMERIC)
@TableId(type = IdType.AUTO)
private Integer id;
@Excel(name = "属性组编号")
private Integer attributeGroupId;
@Excel(name = "属性编号")
private Integer attributeId;
public static List<AsAttributeAttributeGroup> buildAttributeMiddle(AttributeGroupReq attributeGroupReq){
return attributeGroupReq.getSelectAttributeList()
.stream()
.map(
attributeInfo -> {
AsAttributeAttributeGroup asAttributeAttributeGroup = new AsAttributeAttributeGroup();
asAttributeAttributeGroup.setAttributeId(attributeInfo.getId());
asAttributeAttributeGroup.setAttributeGroupId(attributeGroupReq.getAttributeGroupId());
asAttributeAttributeGroup.setCreateBy(SecurityUtils.getUsername());
asAttributeAttributeGroup.setCreateTime(new Date());
return asAttributeAttributeGroup;
}
).collect(Collectors.toList());
}
}

View File

@ -0,0 +1,50 @@
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.common.security.utils.SecurityUtils;
import com.muyu.product.domain.req.AttributeGroupReq;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.Date;
/**
* @ClassName AttributeGroup
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 12:55
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("attribute_group")
public class AttributeGroup extends BaseEntity {
private static final long serialVersionUID = 1L;
@Excel(name = "属性组主键",cellType = Excel.ColumnType.IMAGE)
@TableId(type = IdType.AUTO)
private Integer id;
@Excel(name = "属性组名称")
private String name;
@Excel(name = "是否启用")
private String states;
@Excel(name = "备注")
private String remark;
public static AttributeGroup BuildAttributeGroupByReq(AttributeGroupReq attributeGroupReq){
return AttributeGroup.builder()
.name(attributeGroupReq.getName())
.remark(attributeGroupReq.getRemark())
.createBy(SecurityUtils.getUsername())
.createTime(new Date())
.build();
}
}

View File

@ -0,0 +1,41 @@
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 io.swagger.models.auth.In;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* @ClassName AttributeInfo
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 12:35
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("attribute_info")
public class AttributeInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
@Excel(name = "参数主键", cellType = Excel.ColumnType.NUMERIC)
@TableId( type = IdType.AUTO)
private Integer id;
@Excel(name = "属性名称")
private String name;
@Excel(name = "备注")
private String remark;
}

View File

@ -0,0 +1,29 @@
package com.muyu.product.domain.req;
import com.muyu.common.core.web.domain.BaseEntity;
import com.muyu.product.domain.AttributeInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.util.List;
/**
* @ClassName AttributeGroupReq
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/5 19:46
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AttributeGroupReq extends BaseEntity {
private Integer attributeGroupId;
private String name;
private String remark;
private List<AttributeInfo> selectAttributeList;
}

View File

@ -0,0 +1,51 @@
package com.muyu.product.domain.resp;
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.AttributeGroup;
import com.muyu.product.domain.AttributeInfo;
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;
/**
* @ClassName AttributeGroupResp
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/4 20:30
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AttributeGroupResp extends BaseEntity {
private Integer id;
private String name;
private String states;
private String remark;
private List<AttributeInfo> attributeInfos;
public static AttributeGroupResp groupFunBuild(AttributeGroup attributeGroup, Function<Integer,List<AttributeInfo>> function){
return AttributeGroupResp.builder()
.id(attributeGroup.getId())
.name(attributeGroup.getName())
.remark(attributeGroup.getRemark())
.attributeInfos(function.apply(attributeGroup.getId()))
.createBy(attributeGroup.getCreateBy())
.createTime((attributeGroup.getCreateTime()))
.updateBy(attributeGroup.getUpdateBy())
.updateTime(attributeGroup.getUpdateTime())
.build();
}
}

View File

@ -0,0 +1,13 @@
package com.muyu.product.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.product.domain.AsAttributeAttributeGroup;
/**
* @ClassName AsAttributeAttributeGroup
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:30
*/
public interface AsAttributeAttributeGroupMapper extends BaseMapper<AsAttributeAttributeGroup> {
}

View File

@ -0,0 +1,13 @@
package com.muyu.product.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.product.domain.AttributeGroup;
/**
* @ClassName AttributeGroupMapper
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:18
*/
public interface AttributeGroupMapper extends BaseMapper<AttributeGroup> {
}

View File

@ -0,0 +1,13 @@
package com.muyu.product.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.muyu.product.domain.AttributeInfo;
/**
* @ClassName AttributeInfoMapper
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:24
*/
public interface AttributeInfoMapper extends BaseMapper<AttributeInfo> {
}

View File

@ -0,0 +1,18 @@
package com.muyu.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.product.domain.AsAttributeAttributeGroup;
import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.domain.AttributeInfo;
import java.util.List;
/**
* @ClassName AsAttributeAttributeImpl
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:31
*/
public interface AsAttributeAttributeGroupService extends IService<AsAttributeAttributeGroup> {
List<AttributeInfo> getAttributeGroupRespList(Integer groupId);
}

View File

@ -0,0 +1,15 @@
package com.muyu.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.product.domain.AttributeGroup;
import java.util.List;
/**
* @ClassName AttributeGroupService
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:06
*/
public interface AttributeGroupService extends IService<AttributeGroup> {
}

View File

@ -0,0 +1,13 @@
package com.muyu.product.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.muyu.product.domain.AttributeInfo;
/**
* @ClassName AttributeInfoService
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:23
*/
public interface AttributeInfoService extends IService<AttributeInfo> {
}

View File

@ -0,0 +1,39 @@
package com.muyu.product.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.product.domain.AsAttributeAttributeGroup;
import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.mapper.AsAttributeAttributeGroupMapper;
import com.muyu.product.service.AsAttributeAttributeGroupService;
import com.muyu.product.service.AttributeInfoService;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @ClassName AsAttributeAttributeGroupServiceImpl
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:32
*/
@Service
public class AsAttributeAttributeGroupServiceImpl extends ServiceImpl<AsAttributeAttributeGroupMapper, AsAttributeAttributeGroup>
implements AsAttributeAttributeGroupService {
@Autowired
private AttributeInfoService attributeInfoService;
@Override
public List<AttributeInfo> getAttributeGroupRespList(Integer groupId) {
QueryWrapper<AsAttributeAttributeGroup> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("attribute_group_id",groupId);
List<AsAttributeAttributeGroup> asAttributeAttributeGroupList = this.list(queryWrapper);
List<Integer> list = asAttributeAttributeGroupList.stream().map(AsAttributeAttributeGroup::getAttributeId).toList();
if (list.size()==0){
return null;
}
return attributeInfoService.listByIds(list);
}
}

View File

@ -0,0 +1,18 @@
package com.muyu.product.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.product.domain.AttributeGroup;
import com.muyu.product.mapper.AttributeGroupMapper;
import com.muyu.product.service.AttributeGroupService;
import org.springframework.stereotype.Service;
/**
* @ClassName AttributeGroupServiceImpl
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:17
*/
@Service
public class AttributeGroupServiceImpl extends ServiceImpl<AttributeGroupMapper, AttributeGroup>
implements AttributeGroupService {
}

View File

@ -0,0 +1,19 @@
package com.muyu.product.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.muyu.product.domain.AttributeInfo;
import com.muyu.product.mapper.AttributeInfoMapper;
import com.muyu.product.service.AttributeInfoService;
import org.springframework.stereotype.Service;
/**
* @ClassName AttributeInfoServiceImpl
* @Description
* @Author ZHIHAO.DAI
* @Date 2024/3/1 13:24
*/
@Service
public class AttributeInfoServiceImpl extends ServiceImpl<AttributeInfoMapper, AttributeInfo>
implements AttributeInfoService {
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.product.mapper.AsAttributeAttributeGroupMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.product.mapper.AttributeGroupMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.muyu.product.mapper.AttributeInfoMapper">
</mapper>