第190天学习打卡(项目 谷粒商城 32 销售属性维护 查询分组关联属性和删除关联)

销售属性维护

image-20210717103316993

image-20210717103743443

package com.doudou.gulimall.product.controller;

import java.util.Arrays;
import java.util.Map;

//import org.apache.shiro.authz.annotation.RequiresPermissions;
import com.doudou.gulimall.product.vo.AttrRespVo;
import com.doudou.gulimall.product.vo.AttrVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import com.doudou.gulimall.product.entity.AttrEntity;
import com.doudou.gulimall.product.service.AttrService;
import com.doudou.common.utils.PageUtils;
import com.doudou.common.utils.R;



/**
 * 商品属性
 *
 * @author doudoutj111
 *
 * @date 2021-06-19 19:40:53
 */
@RestController
@RequestMapping("product/attr")
public class AttrController {
    @Autowired
    private AttrService attrService;
    //product/attr/sale/list/0?
    //分页查询
    //product/attr/base/list/{catelogId}
    @GetMapping("/{attrType}/list/{catelogId}")
    public R baseAttrList(@RequestParam Map<String, Object> params,
                          @PathVariable("catelogId") Long catelogId,
                          @PathVariable("attrType")String type){
        PageUtils page = attrService.queryBaseAttrPage(params,catelogId,type);
        return R.ok().put("page", page);
    }

    /**
     * 列表
     */
    @RequestMapping("/list")
    //@RequiresPermissions("product:attr:list")
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = attrService.queryPage(params);

        return R.ok().put("page", page);
    }


    /**
     * 信息
     */
    @RequestMapping("/info/{attrId}")
    // @RequiresPermissions("product:attr:info")
    public R info(@PathVariable("attrId") Long attrId){
       // AttrEntity attr = attrService.getById(attrId);
        AttrRespVo respVo = attrService.getAttrInfo(attrId);

        return R.ok().put("attr", respVo);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    //  @RequiresPermissions("product:attr:save")
    public R save(@RequestBody AttrVo attr){
        attrService.saveAttr(attr);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    //  @RequiresPermissions("product:attr:update")
    public R update(@RequestBody AttrVo attr){
        attrService.updateAttr(attr);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    //   @RequiresPermissions("product:attr:delete")
    public R delete(@RequestBody Long[] attrIds){
        attrService.removeByIds(Arrays.asList(attrIds));

        return R.ok();
    }

}


gulimall.product.service.impl

AttrServiceImpl.java

package com.doudou.gulimall.product.service.impl;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doudou.gulimall.product.dao.AttrAttrgroupRelationDao;
import com.doudou.gulimall.product.dao.AttrGroupDao;
import com.doudou.gulimall.product.dao.CategoryDao;
import com.doudou.gulimall.product.entity.AttrAttrgroupRelationEntity;
import com.doudou.gulimall.product.entity.AttrGroupEntity;
import com.doudou.gulimall.product.entity.CategoryEntity;
import com.doudou.gulimall.product.service.CategoryService;
import com.doudou.gulimall.product.vo.AttrRespVo;
import com.doudou.gulimall.product.vo.AttrVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.doudou.common.utils.PageUtils;
import com.doudou.common.utils.Query;

import com.doudou.gulimall.product.dao.AttrDao;
import com.doudou.gulimall.product.entity.AttrEntity;
import com.doudou.gulimall.product.service.AttrService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;


@Service("attrService")
public class AttrServiceImpl extends ServiceImpl<AttrDao, AttrEntity> implements AttrService {
    @Autowired
    AttrAttrgroupRelationDao relationDao;
    @Autowired
    AttrGroupDao attrGroupDao;
    @Autowired
    CategoryDao categoryDao;
    @Autowired
    CategoryService categoryService;


    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        IPage<AttrEntity> page = this.page(
                new Query<AttrEntity>().getPage(params),
                new QueryWrapper<AttrEntity>()
        );

        return new PageUtils(page);
    }
    @Transactional //事务
    @Override
    public void saveAttr(AttrVo attr) {
        AttrEntity attrEntity = new AttrEntity();

        BeanUtils.copyProperties(attr,attrEntity);//复制属性
        //1.保存基本数据
        this.save(attrEntity);
        //2.保存关联关系
        AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
        relationEntity.setAttrGroupId(attr.getAttrGroupId());
        relationEntity.setAttrId(attrEntity.getAttrId());
        relationDao.insert(relationEntity);

    }

    @Override
    public PageUtils queryBaseAttrPage(Map<String, Object> params, Long catelogId, String type) {
        QueryWrapper<AttrEntity> queryWrapper = new QueryWrapper<AttrEntity>().eq("attr_type","base".equalsIgnoreCase(type)?1:0);
        if (catelogId != 0){
            queryWrapper.eq("catelog_id",catelogId);
        }
        String key = (String) params.get("key");
        if (!StringUtils.isEmpty(key)){
            //attr_id attr_name
            queryWrapper.and((wrapper)->{
                wrapper.eq("attr_id",key).or().like("attr_name",key);
            });
        }
        IPage<AttrEntity> page = this.page(
                new Query<AttrEntity>().getPage(params),
                queryWrapper
        );

        PageUtils pageUtils = new PageUtils(page);
        List<AttrEntity> records = page.getRecords();
        List<AttrRespVo> respVos = records.stream().map((attrEntity) -> {
            AttrRespVo attrRespVo = new AttrRespVo();
            BeanUtils.copyProperties(attrEntity, attrRespVo);

            //1.设置分类和分组的名字
            if ("base".equalsIgnoreCase(type)){
                AttrAttrgroupRelationEntity attrId = relationDao.selectOne(new QueryWrapper<AttrAttrgroupRelationEntity>()
                        .eq("attr_id", attrEntity.getAttrId()));

                if (attrId != null && attrId.getAttrGroupId()!=null) {
                    AttrGroupEntity attrGroupEntity = attrGroupDao.selectById(attrId.getAttrGroupId());
                    attrRespVo.setGroupName(attrGroupEntity.getAttrGroupName());

                }

            }

            CategoryEntity categoryEntity = categoryDao.selectById(attrEntity.getCatelogId());
            if (categoryEntity != null) {
                attrRespVo.setCatelogName(categoryEntity.getName());
            }


            return attrRespVo;
        }).collect(Collectors.toList());//收集成集合
        pageUtils.setList(respVos);

        return pageUtils;

    }

    @Override
    public AttrRespVo getAttrInfo(Long attrId) {
        AttrRespVo respVo = new AttrRespVo();
        AttrEntity attrEntity = this.getById(attrId);
        BeanUtils.copyProperties(attrEntity,respVo);
        //1.设置分组信息
        AttrAttrgroupRelationEntity attrgroupRelation = relationDao.selectOne(new QueryWrapper<AttrAttrgroupRelationEntity>()
                .eq("attr_id", attrId));
        if(attrgroupRelation != null){
            respVo.setAttrGroupId(attrgroupRelation.getAttrGroupId());
            AttrGroupEntity attrGroupEntity = attrGroupDao.selectById(attrgroupRelation.getAttrGroupId());
            if (attrGroupEntity != null){
                respVo.setGroupName(attrGroupEntity.getAttrGroupName());
            }
        }
        //2.设置分类信息
        Long catelogId = attrEntity.getCatelogId();
        Long[] catelogPath = categoryService.findCatelogPath(catelogId);//查找分类的完整路径
        respVo.setCatelogPath(catelogPath);
        CategoryEntity categoryEntity = categoryDao.selectById(catelogId);
        if (categoryEntity != null){
            respVo.setCatelogName(categoryEntity.getName());
        }


        return respVo;
    }
    @Transactional
    @Override
    public void updateAttr(AttrVo attr) {
        AttrEntity attrEntity = new AttrEntity();
        BeanUtils.copyProperties(attr,attrEntity);
        this.updateById(attrEntity);

        //1.修改分组关联
        AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
        relationEntity.setAttrGroupId(attr.getAttrGroupId());
        relationEntity.setAttrId(attr.getAttrId());

        Integer count = relationDao.selectCount(new QueryWrapper<AttrAttrgroupRelationEntity>().eq("attr_id", attr.getAttrId()));
        if (count >0){

            relationDao.update(relationEntity, new UpdateWrapper<AttrAttrgroupRelationEntity>().eq("attr_id",attr.getAttrId()));

        }
        else{
            relationDao.insert(relationEntity);

        }


    }

}

image-20210717214536456

image-20210717214739156

关联关系的判断 是否保存分组关系

销售属性就不用做分组判断了

product.service.impl

AttrServiceImpl.java

package com.doudou.gulimall.product.service.impl;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doudou.gulimall.product.dao.AttrAttrgroupRelationDao;
import com.doudou.gulimall.product.dao.AttrGroupDao;
import com.doudou.gulimall.product.dao.CategoryDao;
import com.doudou.gulimall.product.entity.AttrAttrgroupRelationEntity;
import com.doudou.gulimall.product.entity.AttrGroupEntity;
import com.doudou.gulimall.product.entity.CategoryEntity;
import com.doudou.gulimall.product.service.CategoryService;
import com.doudou.gulimall.product.vo.AttrRespVo;
import com.doudou.gulimall.product.vo.AttrVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.doudou.common.utils.PageUtils;
import com.doudou.common.utils.Query;

import com.doudou.gulimall.product.dao.AttrDao;
import com.doudou.gulimall.product.entity.AttrEntity;
import com.doudou.gulimall.product.service.AttrService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;


@Service("attrService")
public class AttrServiceImpl extends ServiceImpl<AttrDao, AttrEntity> implements AttrService {
    @Autowired
    AttrAttrgroupRelationDao relationDao;
    @Autowired
    AttrGroupDao attrGroupDao;
    @Autowired
    CategoryDao categoryDao;
    @Autowired
    CategoryService categoryService;


    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        IPage<AttrEntity> page = this.page(
                new Query<AttrEntity>().getPage(params),
                new QueryWrapper<AttrEntity>()
        );

        return new PageUtils(page);
    }
    @Transactional //事务
    @Override
    public void saveAttr(AttrVo attr) {
        AttrEntity attrEntity = new AttrEntity();

        BeanUtils.copyProperties(attr,attrEntity);//复制属性
        //1.保存基本数据
        this.save(attrEntity);
        //2.保存关联关系
        if (attr.getAttrType() == 1){
            AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
            relationEntity.setAttrGroupId(attr.getAttrGroupId());
            relationEntity.setAttrId(attrEntity.getAttrId());
            relationDao.insert(relationEntity);

        }


    }

    @Override
    public PageUtils queryBaseAttrPage(Map<String, Object> params, Long catelogId, String type) {
        QueryWrapper<AttrEntity> queryWrapper = new QueryWrapper<AttrEntity>().eq("attr_type","base".equalsIgnoreCase(type)?1:0);
        if (catelogId != 0){
            queryWrapper.eq("catelog_id",catelogId);
        }
        String key = (String) params.get("key");
        if (!StringUtils.isEmpty(key)){
            //attr_id attr_name
            queryWrapper.and((wrapper)->{
                wrapper.eq("attr_id",key).or().like("attr_name",key);
            });
        }
        IPage<AttrEntity> page = this.page(
                new Query<AttrEntity>().getPage(params),
                queryWrapper
        );

        PageUtils pageUtils = new PageUtils(page);
        List<AttrEntity> records = page.getRecords();
        List<AttrRespVo> respVos = records.stream().map((attrEntity) -> {
            AttrRespVo attrRespVo = new AttrRespVo();
            BeanUtils.copyProperties(attrEntity, attrRespVo);

            //1.设置分类和分组的名字
            if ("base".equalsIgnoreCase(type)){
                AttrAttrgroupRelationEntity attrId = relationDao.selectOne(new QueryWrapper<AttrAttrgroupRelationEntity>()
                        .eq("attr_id", attrEntity.getAttrId()));

                if (attrId != null && attrId.getAttrGroupId()!=null) {
                    AttrGroupEntity attrGroupEntity = attrGroupDao.selectById(attrId.getAttrGroupId());
                    attrRespVo.setGroupName(attrGroupEntity.getAttrGroupName());

                }

            }

            CategoryEntity categoryEntity = categoryDao.selectById(attrEntity.getCatelogId());
            if (categoryEntity != null) {
                attrRespVo.setCatelogName(categoryEntity.getName());
            }


            return attrRespVo;
        }).collect(Collectors.toList());//收集成集合
        pageUtils.setList(respVos);

        return pageUtils;

    }

    @Override
    public AttrRespVo getAttrInfo(Long attrId) {
        AttrRespVo respVo = new AttrRespVo();
        AttrEntity attrEntity = this.getById(attrId);
        BeanUtils.copyProperties(attrEntity,respVo);
        //1.设置分组信息
        AttrAttrgroupRelationEntity attrgroupRelation = relationDao.selectOne(new QueryWrapper<AttrAttrgroupRelationEntity>()
                .eq("attr_id", attrId));
        if(attrgroupRelation != null){
            respVo.setAttrGroupId(attrgroupRelation.getAttrGroupId());
            AttrGroupEntity attrGroupEntity = attrGroupDao.selectById(attrgroupRelation.getAttrGroupId());
            if (attrGroupEntity != null){
                respVo.setGroupName(attrGroupEntity.getAttrGroupName());
            }
        }
        //2.设置分类信息
        Long catelogId = attrEntity.getCatelogId();
        Long[] catelogPath = categoryService.findCatelogPath(catelogId);//查找分类的完整路径
        respVo.setCatelogPath(catelogPath);
        CategoryEntity categoryEntity = categoryDao.selectById(catelogId);
        if (categoryEntity != null){
            respVo.setCatelogName(categoryEntity.getName());
        }


        return respVo;
    }
    @Transactional
    @Override
    public void updateAttr(AttrVo attr) {
        AttrEntity attrEntity = new AttrEntity();
        BeanUtils.copyProperties(attr,attrEntity);
        this.updateById(attrEntity);

        //1.修改分组关联
        AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
        relationEntity.setAttrGroupId(attr.getAttrGroupId());
        relationEntity.setAttrId(attr.getAttrId());

        Integer count = relationDao.selectCount(new QueryWrapper<AttrAttrgroupRelationEntity>().eq("attr_id", attr.getAttrId()));
        if (count >0){

            relationDao.update(relationEntity, new UpdateWrapper<AttrAttrgroupRelationEntity>().eq("attr_id",attr.getAttrId()));

        }
        else{
            relationDao.insert(relationEntity);

        }


    }

}

image-20210717221810644

package com.doudou.common.constant;

public class ProductConstant {
    public enum AttrEnum{
        ATTR_TYPE_BASE(1,"基本属性"),ATTR_TYPE_SALE(0,"销售属性");
        private int code;
        private String msg;
        AttrEnum(int code, String msg){
            this.code = code;
            this.msg = msg;
        }
        public int getCode(){
            return code;
        }

        public String getMsg() {
            return msg;
        }
    }
}

package com.doudou.gulimall.product.service.impl;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doudou.common.constant.ProductConstant;
import com.doudou.gulimall.product.dao.AttrAttrgroupRelationDao;
import com.doudou.gulimall.product.dao.AttrGroupDao;
import com.doudou.gulimall.product.dao.CategoryDao;
import com.doudou.gulimall.product.entity.AttrAttrgroupRelationEntity;
import com.doudou.gulimall.product.entity.AttrGroupEntity;
import com.doudou.gulimall.product.entity.CategoryEntity;
import com.doudou.gulimall.product.service.CategoryService;
import com.doudou.gulimall.product.vo.AttrRespVo;
import com.doudou.gulimall.product.vo.AttrVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.doudou.common.utils.PageUtils;
import com.doudou.common.utils.Query;

import com.doudou.gulimall.product.dao.AttrDao;
import com.doudou.gulimall.product.entity.AttrEntity;
import com.doudou.gulimall.product.service.AttrService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;


@Service("attrService")
public class AttrServiceImpl extends ServiceImpl<AttrDao, AttrEntity> implements AttrService {
    @Autowired
    AttrAttrgroupRelationDao relationDao;
    @Autowired
    AttrGroupDao attrGroupDao;
    @Autowired
    CategoryDao categoryDao;
    @Autowired
    CategoryService categoryService;


    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        IPage<AttrEntity> page = this.page(
                new Query<AttrEntity>().getPage(params),
                new QueryWrapper<AttrEntity>()
        );

        return new PageUtils(page);
    }
    @Transactional //事务
    @Override
    public void saveAttr(AttrVo attr) {
        AttrEntity attrEntity = new AttrEntity();

        BeanUtils.copyProperties(attr,attrEntity);//复制属性
        //1.保存基本数据
        this.save(attrEntity);
        //2.保存关联关系
        if (attr.getAttrType() == ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode()){
            AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
            relationEntity.setAttrGroupId(attr.getAttrGroupId());
            relationEntity.setAttrId(attrEntity.getAttrId());
            relationDao.insert(relationEntity);

        }


    }

    @Override
    public PageUtils queryBaseAttrPage(Map<String, Object> params, Long catelogId, String type) {
        QueryWrapper<AttrEntity> queryWrapper = new QueryWrapper<AttrEntity>()
                .eq("attr_type","base"
                        .equalsIgnoreCase(type)?ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode():ProductConstant.AttrEnum.ATTR_TYPE_SALE.getCode());
        if (catelogId != 0){
            queryWrapper.eq("catelog_id",catelogId);
        }
        String key = (String) params.get("key");
        if (!StringUtils.isEmpty(key)){
            //attr_id attr_name
            queryWrapper.and((wrapper)->{
                wrapper.eq("attr_id",key).or().like("attr_name",key);
            });
        }
        IPage<AttrEntity> page = this.page(
                new Query<AttrEntity>().getPage(params),
                queryWrapper
        );

        PageUtils pageUtils = new PageUtils(page);
        List<AttrEntity> records = page.getRecords();
        List<AttrRespVo> respVos = records.stream().map((attrEntity) -> {
            AttrRespVo attrRespVo = new AttrRespVo();
            BeanUtils.copyProperties(attrEntity, attrRespVo);

            //1.设置分类和分组的名字
            if ("base".equalsIgnoreCase(type)){
                AttrAttrgroupRelationEntity attrId = relationDao.selectOne(new QueryWrapper<AttrAttrgroupRelationEntity>()
                        .eq("attr_id", attrEntity.getAttrId()));

                if (attrId != null && attrId.getAttrGroupId()!=null) {
                    AttrGroupEntity attrGroupEntity = attrGroupDao.selectById(attrId.getAttrGroupId());
                    attrRespVo.setGroupName(attrGroupEntity.getAttrGroupName());

                }

            }

            CategoryEntity categoryEntity = categoryDao.selectById(attrEntity.getCatelogId());
            if (categoryEntity != null) {
                attrRespVo.setCatelogName(categoryEntity.getName());
            }


            return attrRespVo;
        }).collect(Collectors.toList());//收集成集合
        pageUtils.setList(respVos);

        return pageUtils;

    }

    @Override
    public AttrRespVo getAttrInfo(Long attrId) {
        AttrRespVo respVo = new AttrRespVo();
        AttrEntity attrEntity = this.getById(attrId);
        BeanUtils.copyProperties(attrEntity,respVo);


        if (attrEntity.getAttrType() == ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode()){
            //1.设置分组信息
            AttrAttrgroupRelationEntity attrgroupRelation = relationDao.selectOne(new QueryWrapper<AttrAttrgroupRelationEntity>()
                    .eq("attr_id", attrId));
            if(attrgroupRelation != null){
                respVo.setAttrGroupId(attrgroupRelation.getAttrGroupId());
                AttrGroupEntity attrGroupEntity = attrGroupDao.selectById(attrgroupRelation.getAttrGroupId());
                if (attrGroupEntity != null){
                    respVo.setGroupName(attrGroupEntity.getAttrGroupName());
                }
            }
        }

        //2.设置分类信息
        Long catelogId = attrEntity.getCatelogId();
        Long[] catelogPath = categoryService.findCatelogPath(catelogId);//查找分类的完整路径
        respVo.setCatelogPath(catelogPath);
        CategoryEntity categoryEntity = categoryDao.selectById(catelogId);
        if (categoryEntity != null){
            respVo.setCatelogName(categoryEntity.getName());
        }


        return respVo;
    }
    @Transactional
    @Override
    public void updateAttr(AttrVo attr) {
        AttrEntity attrEntity = new AttrEntity();
        BeanUtils.copyProperties(attr,attrEntity);
        this.updateById(attrEntity);

        if (attrEntity.getAttrType() == ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode()){
            //1.修改分组关联
            AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
            relationEntity.setAttrGroupId(attr.getAttrGroupId());
            relationEntity.setAttrId(attr.getAttrId());

            Integer count = relationDao.selectCount(new QueryWrapper<AttrAttrgroupRelationEntity>().eq("attr_id", attr.getAttrId()));
            if (count >0){

                relationDao.update(relationEntity, new UpdateWrapper<AttrAttrgroupRelationEntity>().eq("attr_id",attr.getAttrId()));

            }
            else{
                relationDao.insert(relationEntity);

            }
        }




    }

}

image-20210717220952877

image-20210717221304041

image-20210717221652463

查询分组关联属性 删除关联

查到关联属性

doudou.gulimall.product.vo

AttrGroupRelationVo.java

package com.doudou.gulimall.product.vo;

import lombok.Data;

@Data
public class AttrGroupRelationVo {
    //"attrId": 1, "attrGroup":2
    private Long attrId;
    private Long attrGroupId;


}

image-20210717222722030

package com.doudou.gulimall.product.controller;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

//import org.apache.shiro.authz.annotation.RequiresPermissions;
import com.doudou.gulimall.product.entity.AttrEntity;
import com.doudou.gulimall.product.service.AttrService;
import com.doudou.gulimall.product.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import com.doudou.gulimall.product.entity.AttrGroupEntity;
import com.doudou.gulimall.product.service.AttrGroupService;
import com.doudou.common.utils.PageUtils;
import com.doudou.common.utils.R;



/**
 * 属性分组
 *
 * @author doudoutj111
 *
 * @date 2021-06-19 19:40:52
 */
@RestController
@RequestMapping("product/attrgroup")
public class AttrGroupController {
    @Autowired
    private AttrGroupService attrGroupService;
    @Autowired
    private CategoryService categoryService;
    @Autowired
    AttrService attrService;
    //product/attrgroup/{attrgroupId}/attr/relation
    @GetMapping("/{attrgroupId}/attr/relation")
    public R attrRelation(@PathVariable("attrgroupId") Long attrgroupId){
        List<AttrEntity> entities = attrService.getRelationAttr(attrgroupId);
        return R.ok().put("data",entities);


    }


    /**
     * 列表
     */
    @RequestMapping("/list/{catelogId}")
    //@RequiresPermissions("product:attrgroup:list")
    public R list(@RequestParam Map<String, Object> params, @PathVariable("catelogId") Long catelogId){
//        PageUtils page = attrGroupService.queryPage(params);
        PageUtils page = attrGroupService.queryPage(params,catelogId);


        return R.ok().put("page", page);
    }


    /**
     * 信息
     */
    @RequestMapping("/info/{attrGroupId}")
   // @RequiresPermissions("product:attrgroup:info")
    public R info(@PathVariable("attrGroupId") Long attrGroupId){
		AttrGroupEntity attrGroup = attrGroupService.getById(attrGroupId);
        Long catelogId = attrGroup.getCatelogId();
        Long[] path = categoryService.findCatelogPath(catelogId);

        attrGroup.setCatelogPath(path);

        return R.ok().put("attrGroup", attrGroup);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
  //  @RequiresPermissions("product:attrgroup:save")
    public R save(@RequestBody AttrGroupEntity attrGroup){
		attrGroupService.save(attrGroup);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
  //  @RequiresPermissions("product:attrgroup:update")
    public R update(@RequestBody AttrGroupEntity attrGroup){
		attrGroupService.updateById(attrGroup);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
 //   @RequiresPermissions("product:attrgroup:delete")
    public R delete(@RequestBody Long[] attrGroupIds){
		attrGroupService.removeByIds(Arrays.asList(attrGroupIds));

        return R.ok();
    }

}

image-20210717222754189

gulimall.product.service.impl

AttrServiceImpl.java

package com.doudou.gulimall.product.service.impl;

import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doudou.common.constant.ProductConstant;
import com.doudou.gulimall.product.dao.AttrAttrgroupRelationDao;
import com.doudou.gulimall.product.dao.AttrGroupDao;
import com.doudou.gulimall.product.dao.CategoryDao;
import com.doudou.gulimall.product.entity.AttrAttrgroupRelationEntity;
import com.doudou.gulimall.product.entity.AttrGroupEntity;
import com.doudou.gulimall.product.entity.CategoryEntity;
import com.doudou.gulimall.product.service.CategoryService;
import com.doudou.gulimall.product.vo.AttrRespVo;
import com.doudou.gulimall.product.vo.AttrVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.doudou.common.utils.PageUtils;
import com.doudou.common.utils.Query;

import com.doudou.gulimall.product.dao.AttrDao;
import com.doudou.gulimall.product.entity.AttrEntity;
import com.doudou.gulimall.product.service.AttrService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;


@Service("attrService")
public class AttrServiceImpl extends ServiceImpl<AttrDao, AttrEntity> implements AttrService {
    @Autowired
    AttrAttrgroupRelationDao relationDao;
    @Autowired
    AttrGroupDao attrGroupDao;
    @Autowired
    CategoryDao categoryDao;
    @Autowired
    CategoryService categoryService;


    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        IPage<AttrEntity> page = this.page(
                new Query<AttrEntity>().getPage(params),
                new QueryWrapper<AttrEntity>()
        );

        return new PageUtils(page);
    }
    @Transactional //事务
    @Override
    public void saveAttr(AttrVo attr) {
        AttrEntity attrEntity = new AttrEntity();

        BeanUtils.copyProperties(attr,attrEntity);//复制属性
        //1.保存基本数据
        this.save(attrEntity);
        //2.保存关联关系
        if (attr.getAttrType() == ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode()){
            AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
            relationEntity.setAttrGroupId(attr.getAttrGroupId());
            relationEntity.setAttrId(attrEntity.getAttrId());
            relationDao.insert(relationEntity);

        }


    }

    @Override
    public PageUtils queryBaseAttrPage(Map<String, Object> params, Long catelogId, String type) {
        QueryWrapper<AttrEntity> queryWrapper = new QueryWrapper<AttrEntity>()
                .eq("attr_type","base"
                        .equalsIgnoreCase(type)?ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode():ProductConstant.AttrEnum.ATTR_TYPE_SALE.getCode());
        if (catelogId != 0){
            queryWrapper.eq("catelog_id",catelogId);
        }
        String key = (String) params.get("key");
        if (!StringUtils.isEmpty(key)){
            //attr_id attr_name
            queryWrapper.and((wrapper)->{
                wrapper.eq("attr_id",key).or().like("attr_name",key);
            });
        }
        IPage<AttrEntity> page = this.page(
                new Query<AttrEntity>().getPage(params),
                queryWrapper
        );

        PageUtils pageUtils = new PageUtils(page);
        List<AttrEntity> records = page.getRecords();
        List<AttrRespVo> respVos = records.stream().map((attrEntity) -> {
            AttrRespVo attrRespVo = new AttrRespVo();
            BeanUtils.copyProperties(attrEntity, attrRespVo);

            //1.设置分类和分组的名字
            if ("base".equalsIgnoreCase(type)){
                AttrAttrgroupRelationEntity attrId = relationDao.selectOne(new QueryWrapper<AttrAttrgroupRelationEntity>()
                        .eq("attr_id", attrEntity.getAttrId()));

                if (attrId != null && attrId.getAttrGroupId()!=null) {
                    AttrGroupEntity attrGroupEntity = attrGroupDao.selectById(attrId.getAttrGroupId());
                    attrRespVo.setGroupName(attrGroupEntity.getAttrGroupName());

                }

            }

            CategoryEntity categoryEntity = categoryDao.selectById(attrEntity.getCatelogId());
            if (categoryEntity != null) {
                attrRespVo.setCatelogName(categoryEntity.getName());
            }


            return attrRespVo;
        }).collect(Collectors.toList());//收集成集合
        pageUtils.setList(respVos);

        return pageUtils;

    }

    @Override
    public AttrRespVo getAttrInfo(Long attrId) {
        AttrRespVo respVo = new AttrRespVo();
        AttrEntity attrEntity = this.getById(attrId);
        BeanUtils.copyProperties(attrEntity,respVo);


        if (attrEntity.getAttrType() == ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode()){
            //1.设置分组信息
            AttrAttrgroupRelationEntity attrgroupRelation = relationDao.selectOne(new QueryWrapper<AttrAttrgroupRelationEntity>()
                    .eq("attr_id", attrId));
            if(attrgroupRelation != null){
                respVo.setAttrGroupId(attrgroupRelation.getAttrGroupId());
                AttrGroupEntity attrGroupEntity = attrGroupDao.selectById(attrgroupRelation.getAttrGroupId());
                if (attrGroupEntity != null){
                    respVo.setGroupName(attrGroupEntity.getAttrGroupName());
                }
            }
        }

        //2.设置分类信息
        Long catelogId = attrEntity.getCatelogId();
        Long[] catelogPath = categoryService.findCatelogPath(catelogId);//查找分类的完整路径
        respVo.setCatelogPath(catelogPath);
        CategoryEntity categoryEntity = categoryDao.selectById(catelogId);
        if (categoryEntity != null){
            respVo.setCatelogName(categoryEntity.getName());
        }


        return respVo;
    }
    @Transactional
    @Override
    public void updateAttr(AttrVo attr) {
        AttrEntity attrEntity = new AttrEntity();
        BeanUtils.copyProperties(attr,attrEntity);
        this.updateById(attrEntity);

        if (attrEntity.getAttrType() == ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode()){
            //1.修改分组关联
            AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
            relationEntity.setAttrGroupId(attr.getAttrGroupId());
            relationEntity.setAttrId(attr.getAttrId());

            Integer count = relationDao.selectCount(new QueryWrapper<AttrAttrgroupRelationEntity>().eq("attr_id", attr.getAttrId()));
            if (count >0){

                relationDao.update(relationEntity, new UpdateWrapper<AttrAttrgroupRelationEntity>().eq("attr_id",attr.getAttrId()));

            }
            else{
                relationDao.insert(relationEntity);

            }
        }




    }

    /**
     * 根据分组id查找关联的所有基本属性
     * @param attrgroupId
     * @return
     */
    @Override
    public List<AttrEntity> getRelationAttr(Long attrgroupId) {
        List<AttrAttrgroupRelationEntity> entities = relationDao.selectList(new QueryWrapper<AttrAttrgroupRelationEntity>()
                .eq("attr_group_id", attrgroupId));
        List<Long> attrIds = entities.stream().map((attr) -> {
            return attr.getAttrId();
        }).collect(Collectors.toList());

        Collection<AttrEntity> attrEntities = this.listByIds(attrIds);


        return (List<AttrEntity>) attrEntities;
    }

}

image-20210717223834547

删除关联

image-20210718085917429

AttrController.java

package com.doudou.gulimall.product.controller;import java.util.Arrays;import java.util.Map;//import org.apache.shiro.authz.annotation.RequiresPermissions;import com.doudou.gulimall.product.vo.AttrGroupRelationVo;import com.doudou.gulimall.product.vo.AttrRespVo;import com.doudou.gulimall.product.vo.AttrVo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import com.doudou.gulimall.product.entity.AttrEntity;import com.doudou.gulimall.product.service.AttrService;import com.doudou.common.utils.PageUtils;import com.doudou.common.utils.R;/** * 商品属性 * * @author doudoutj111 * * @date 2021-06-19 19:40:53 */@RestController@RequestMapping("product/attr")public class AttrController {    @Autowired    private AttrService attrService;    //product/attr/sale/list/0?    //分页查询    //product/attr/base/list/{catelogId}    @GetMapping("/{attrType}/list/{catelogId}")    public R baseAttrList(@RequestParam Map<String, Object> params,                          @PathVariable("catelogId") Long catelogId,                          @PathVariable("attrType")String type){        PageUtils page = attrService.queryBaseAttrPage(params,catelogId,type);        return R.ok().put("page", page);    }    /**     * 列表     */    @RequestMapping("/list")    //@RequiresPermissions("product:attr:list")    public R list(@RequestParam Map<String, Object> params){        PageUtils page = attrService.queryPage(params);        return R.ok().put("page", page);    }    /**     * 信息     */    @RequestMapping("/info/{attrId}")    // @RequiresPermissions("product:attr:info")    public R info(@PathVariable("attrId") Long attrId){       // AttrEntity attr = attrService.getById(attrId);        AttrRespVo respVo = attrService.getAttrInfo(attrId);        return R.ok().put("attr", respVo);    }    //product/attrgroup/attr/relation/delete//    @PostMapping("/attr/relation/delete")//    public R deleteRelation(AttrGroupRelationVo[] vos){//        attrService.deleteRelation(vos);//        return R.ok();//    }    /**     * 保存     */    @RequestMapping("/save")    //  @RequiresPermissions("product:attr:save")    public R save(@RequestBody AttrVo attr){        attrService.saveAttr(attr);        return R.ok();    }    /**     * 修改     */    @RequestMapping("/update")    //  @RequiresPermissions("product:attr:update")    public R update(@RequestBody AttrVo attr){        attrService.updateAttr(attr);        return R.ok();    }    /**     * 删除     */    @RequestMapping("/delete")    //   @RequiresPermissions("product:attr:delete")    public R delete(@RequestBody Long[] attrIds){        attrService.removeByIds(Arrays.asList(attrIds));        return R.ok();    }}

image-20210718090010008

image-20210718090735440

gulimall.product.service.impl

AttrServiceImpl.java

package com.doudou.gulimall.product.service.impl;import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;import com.doudou.common.constant.ProductConstant;import com.doudou.gulimall.product.dao.AttrAttrgroupRelationDao;import com.doudou.gulimall.product.dao.AttrGroupDao;import com.doudou.gulimall.product.dao.CategoryDao;import com.doudou.gulimall.product.entity.AttrAttrgroupRelationEntity;import com.doudou.gulimall.product.entity.AttrGroupEntity;import com.doudou.gulimall.product.entity.CategoryEntity;import com.doudou.gulimall.product.service.CategoryService;import com.doudou.gulimall.product.vo.AttrGroupRelationVo;import com.doudou.gulimall.product.vo.AttrRespVo;import com.doudou.gulimall.product.vo.AttrVo;import org.springframework.beans.BeanUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.Arrays;import java.util.Collection;import java.util.List;import java.util.Map;import java.util.stream.Collectors;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;import com.baomidou.mybatisplus.core.metadata.IPage;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.doudou.common.utils.PageUtils;import com.doudou.common.utils.Query;import com.doudou.gulimall.product.dao.AttrDao;import com.doudou.gulimall.product.entity.AttrEntity;import com.doudou.gulimall.product.service.AttrService;import org.springframework.transaction.annotation.Transactional;import org.springframework.util.StringUtils;@Service("attrService")public class AttrServiceImpl extends ServiceImpl<AttrDao, AttrEntity> implements AttrService {    @Autowired    AttrAttrgroupRelationDao relationDao;    @Autowired    AttrGroupDao attrGroupDao;    @Autowired    CategoryDao categoryDao;    @Autowired    CategoryService categoryService;    @Override    public PageUtils queryPage(Map<String, Object> params) {        IPage<AttrEntity> page = this.page(                new Query<AttrEntity>().getPage(params),                new QueryWrapper<AttrEntity>()        );        return new PageUtils(page);    }    @Transactional //事务    @Override    public void saveAttr(AttrVo attr) {        AttrEntity attrEntity = new AttrEntity();        BeanUtils.copyProperties(attr,attrEntity);//复制属性        //1.保存基本数据        this.save(attrEntity);        //2.保存关联关系        if (attr.getAttrType() == ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode()){            AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();            relationEntity.setAttrGroupId(attr.getAttrGroupId());            relationEntity.setAttrId(attrEntity.getAttrId());            relationDao.insert(relationEntity);        }    }    @Override    public PageUtils queryBaseAttrPage(Map<String, Object> params, Long catelogId, String type) {        QueryWrapper<AttrEntity> queryWrapper = new QueryWrapper<AttrEntity>()                .eq("attr_type","base"                        .equalsIgnoreCase(type)?ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode():ProductConstant.AttrEnum.ATTR_TYPE_SALE.getCode());        if (catelogId != 0){            queryWrapper.eq("catelog_id",catelogId);        }        String key = (String) params.get("key");        if (!StringUtils.isEmpty(key)){            //attr_id attr_name            queryWrapper.and((wrapper)->{                wrapper.eq("attr_id",key).or().like("attr_name",key);            });        }        IPage<AttrEntity> page = this.page(                new Query<AttrEntity>().getPage(params),                queryWrapper        );        PageUtils pageUtils = new PageUtils(page);        List<AttrEntity> records = page.getRecords();        List<AttrRespVo> respVos = records.stream().map((attrEntity) -> {            AttrRespVo attrRespVo = new AttrRespVo();            BeanUtils.copyProperties(attrEntity, attrRespVo);            //1.设置分类和分组的名字            if ("base".equalsIgnoreCase(type)){                AttrAttrgroupRelationEntity attrId = relationDao.selectOne(new QueryWrapper<AttrAttrgroupRelationEntity>()                        .eq("attr_id", attrEntity.getAttrId()));                if (attrId != null && attrId.getAttrGroupId()!=null) {                    AttrGroupEntity attrGroupEntity = attrGroupDao.selectById(attrId.getAttrGroupId());                    attrRespVo.setGroupName(attrGroupEntity.getAttrGroupName());                }            }            CategoryEntity categoryEntity = categoryDao.selectById(attrEntity.getCatelogId());            if (categoryEntity != null) {                attrRespVo.setCatelogName(categoryEntity.getName());            }            return attrRespVo;        }).collect(Collectors.toList());//收集成集合        pageUtils.setList(respVos);        return pageUtils;    }    @Override    public AttrRespVo getAttrInfo(Long attrId) {        AttrRespVo respVo = new AttrRespVo();        AttrEntity attrEntity = this.getById(attrId);        BeanUtils.copyProperties(attrEntity,respVo);        if (attrEntity.getAttrType() == ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode()){            //1.设置分组信息            AttrAttrgroupRelationEntity attrgroupRelation = relationDao.selectOne(new QueryWrapper<AttrAttrgroupRelationEntity>()                    .eq("attr_id", attrId));            if(attrgroupRelation != null){                respVo.setAttrGroupId(attrgroupRelation.getAttrGroupId());                AttrGroupEntity attrGroupEntity = attrGroupDao.selectById(attrgroupRelation.getAttrGroupId());                if (attrGroupEntity != null){                    respVo.setGroupName(attrGroupEntity.getAttrGroupName());                }            }        }        //2.设置分类信息        Long catelogId = attrEntity.getCatelogId();        Long[] catelogPath = categoryService.findCatelogPath(catelogId);//查找分类的完整路径        respVo.setCatelogPath(catelogPath);        CategoryEntity categoryEntity = categoryDao.selectById(catelogId);        if (categoryEntity != null){            respVo.setCatelogName(categoryEntity.getName());        }        return respVo;    }    @Transactional    @Override    public void updateAttr(AttrVo attr) {        AttrEntity attrEntity = new AttrEntity();        BeanUtils.copyProperties(attr,attrEntity);        this.updateById(attrEntity);        if (attrEntity.getAttrType() == ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode()){            //1.修改分组关联            AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();            relationEntity.setAttrGroupId(attr.getAttrGroupId());            relationEntity.setAttrId(attr.getAttrId());            Integer count = relationDao.selectCount(new QueryWrapper<AttrAttrgroupRelationEntity>().eq("attr_id", attr.getAttrId()));            if (count >0){                relationDao.update(relationEntity, new UpdateWrapper<AttrAttrgroupRelationEntity>().eq("attr_id",attr.getAttrId()));            }            else{                relationDao.insert(relationEntity);            }        }    }    /**     * 根据分组id查找关联的所有基本属性     * @param attrgroupId     * @return     */    @Override    public List<AttrEntity> getRelationAttr(Long attrgroupId) {        List<AttrAttrgroupRelationEntity> entities = relationDao.selectList(new QueryWrapper<AttrAttrgroupRelationEntity>()                .eq("attr_group_id", attrgroupId));        List<Long> attrIds = entities.stream().map((attr) -> {            return attr.getAttrId();        }).collect(Collectors.toList());        Collection<AttrEntity> attrEntities = this.listByIds(attrIds);        return (List<AttrEntity>) attrEntities;    }    @Override    public void deleteRelation(AttrGroupRelationVo[] vos) {        //relationDao.delete(new QueryWrapper<>().eq("attr_id",1L).eq("attr_group_id",1l))        List<AttrAttrgroupRelationEntity> entities = Arrays.asList(vos).stream().map((item) -> {            AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();            BeanUtils.copyProperties(item, relationEntity);            return relationEntity;        }).collect(Collectors.toList());        relationDao.deleteBatchRelation(entities);    }}

image-20210718090918870

AttrAttrgroupRelationDao.java

package com.doudou.gulimall.product.dao;import com.doudou.gulimall.product.entity.AttrAttrgroupRelationEntity;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Param;import java.util.List;/** * 属性&属性分组关联 * * @author doudoutj111 * * @date 2021-06-19 17:24:03 */@Mapperpublic interface AttrAttrgroupRelationDao extends BaseMapper<AttrAttrgroupRelationEntity> {    void deleteBatchRelation(@Param("entities") List<AttrAttrgroupRelationEntity> entities);}

AttrAttrgroupRelationDao.xml

<?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.doudou.gulimall.product.dao.AttrAttrgroupRelationDao">	<!-- 可根据自己的需求,是否要使用 -->    <resultMap type="com.doudou.gulimall.product.entity.AttrAttrgroupRelationEntity" id="attrAttrgroupRelationMap">        <result property="id" column="id"/>        <result property="attrId" column="attr_id"/>        <result property="attrGroupId" column="attr_group_id"/>        <result property="attrSort" column="attr_sort"/>    </resultMap>    <delete id="deleteBatchRelation">        DELETE FROM `pms_attr_attrgroup_relation` WHERE      <foreach collection="entities" item="item" separator=" OR ">          (attr_id=#{item.attrId} AND attr_group_id=#{item.attrGroupId})      </foreach>    </delete></mapper>

gulimall.product.controller

AttrGroupController.java

package com.doudou.gulimall.product.controller;import java.util.Arrays;import java.util.List;import java.util.Map;//import org.apache.shiro.authz.annotation.RequiresPermissions;import com.doudou.gulimall.product.entity.AttrEntity;import com.doudou.gulimall.product.service.AttrService;import com.doudou.gulimall.product.service.CategoryService;import com.doudou.gulimall.product.vo.AttrGroupRelationVo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import com.doudou.gulimall.product.entity.AttrGroupEntity;import com.doudou.gulimall.product.service.AttrGroupService;import com.doudou.common.utils.PageUtils;import com.doudou.common.utils.R;/** * 属性分组 * * @author doudoutj111 * * @date 2021-06-19 19:40:52 */@RestController@RequestMapping("product/attrgroup")public class AttrGroupController {    @Autowired    private AttrGroupService attrGroupService;    @Autowired    private CategoryService categoryService;    @Autowired    AttrService attrService;    //product/attrgroup/{attrgroupId}/attr/relation    @GetMapping("/{attrgroupId}/attr/relation")    public R attrRelation(@PathVariable("attrgroupId") Long attrgroupId){        List<AttrEntity> entities = attrService.getRelationAttr(attrgroupId);        return R.ok().put("data",entities);    }    @PostMapping("/attr/relation/delete")    public R deleteRelation(@RequestBody AttrGroupRelationVo[] vos){        attrService.deleteRelation(vos);        return R.ok();    }    /**     * 列表     */    @RequestMapping("/list/{catelogId}")    //@RequiresPermissions("product:attrgroup:list")    public R list(@RequestParam Map<String, Object> params, @PathVariable("catelogId") Long catelogId){//        PageUtils page = attrGroupService.queryPage(params);        PageUtils page = attrGroupService.queryPage(params,catelogId);        return R.ok().put("page", page);    }    /**     * 信息     */    @RequestMapping("/info/{attrGroupId}")   // @RequiresPermissions("product:attrgroup:info")    public R info(@PathVariable("attrGroupId") Long attrGroupId){		AttrGroupEntity attrGroup = attrGroupService.getById(attrGroupId);        Long catelogId = attrGroup.getCatelogId();        Long[] path = categoryService.findCatelogPath(catelogId);        attrGroup.setCatelogPath(path);        return R.ok().put("attrGroup", attrGroup);    }    /**     * 保存     */    @RequestMapping("/save")  //  @RequiresPermissions("product:attrgroup:save")    public R save(@RequestBody AttrGroupEntity attrGroup){		attrGroupService.save(attrGroup);        return R.ok();    }    /**     * 修改     */    @RequestMapping("/update")  //  @RequiresPermissions("product:attrgroup:update")    public R update(@RequestBody AttrGroupEntity attrGroup){		attrGroupService.updateById(attrGroup);        return R.ok();    }    /**     * 删除     */    @RequestMapping("/delete") //   @RequiresPermissions("product:attrgroup:delete")    public R delete(@RequestBody Long[] attrGroupIds){		attrGroupService.removeByIds(Arrays.asList(attrGroupIds));        return R.ok();    }}

image-20210718093150056

B站学习网址:全网最强电商教程《谷粒商城》对标阿里P6/P7,40-60万年薪_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
gulimall_pms 商品 drop table if exists pms_attr; drop table if exists pms_attr_attrgroup_relation; drop table if exists pms_attr_group; drop table if exists pms_brand; drop table if exists pms_category; drop table if exists pms_category_brand_relation; drop table if exists pms_comment_replay; drop table if exists pms_product_attr_value; drop table if exists pms_sku_images; drop table if exists pms_sku_info; drop table if exists pms_sku_sale_attr_value; drop table if exists pms_spu_comment; drop table if exists pms_spu_images; drop table if exists pms_spu_info; drop table if exists pms_spu_info_desc; /*==============================================================*/ /* Table: pms_attr */ /*==============================================================*/ create table pms_attr ( attr_id bigint not null auto_increment comment '属性id', attr_name char(30) comment '属性名', search_type tinyint comment '是否需要检索[0-不需要,1-需要]', icon varchar(255) comment '属性图标', value_select char(255) comment '可选值列表[用逗号分隔]', attr_type tinyint comment '属性类型[0-销售属性,1-基本属性,2-既是销售属性又是基本属性]', enable bigint comment '启用状态[0 - 禁用,1 - 启用]', catelog_id bigint comment '所属分类', show_desc tinyint comment '快速展示【是否展示在介绍上;0-否 1-是】,在sku中仍然可以调整', primary key (attr_id) ); alter table pms_attr comment '商品属性'; /*==============================================================*/ /* Table: pms_attr_attrgroup_relation */ /*==============================================================*/ create table pms_attr_attrgroup_relation ( id bigint not null auto_increment comment 'id', attr_id bigint comment '属性id', attr_group_id bigint comment '属性分组id', attr_sort int comment '属性组内排序', primary key (id) ); alter table pms_attr_attrgroup_relation comment '属性&
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值