微服务实战——平台属性

[复制链接]
发表于 2024-10-5 02:44:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
平台属性

中间表复杂业务
  1. /**
  2. * 获取分类规格参数(模糊查询)
  3. *
  4. * @param params
  5. * @param catelogId
  6. * @param type type="base"时查询基础属性,type="sale"时查询销售属性
  7. * @return
  8. */
  9. @Override
  10. public PageUtils listByCatelogId(Map<String, Object> params, Long catelogId, String type) {
  11.     String key = (String) params.get("key");
  12.     QueryWrapper<AttrEntity> wrapper = new QueryWrapper<>();
  13.     // 1.判断参数中是否存在检索关键字key
  14.     if(!StringUtils.isEmpty(key)){
  15.         wrapper.and((obj) -> {
  16.             obj.eq("attr_id", key)
  17.                     .or().like("attr_name", key)
  18.                     .or().like("value_select", key);
  19.         });
  20.     }
  21.     // 2.判断参数中是否存在catelogId
  22.     // 2.1.查询全部
  23.     if(catelogId != 0){
  24.         wrapper.eq("catelog_id", catelogId);
  25.     }
  26.     IPage<AttrEntity> page = this.page(
  27.             new Query<AttrEntity>().getPage(params),
  28.             wrapper.eq("attr_type", "base".equalsIgnoreCase(type) ? 1 : 0)
  29.     );
  30.     PageUtils pageUtils = new PageUtils(page);
  31.     // 3.封装成AttrRespVO
  32.     List<AttrRespVo> respVos = page.getRecords().stream().map((attrEntity) -> {
  33.         AttrRespVo attrRespVo = new AttrRespVo();
  34.         BeanUtils.copyProperties(attrEntity, attrRespVo);
  35.         // 3.1.得到所属分类名
  36.         CategoryEntity categoryEntity = categoryService.getById(attrEntity.getCatelogId());
  37.         if(categoryEntity != null){
  38.             attrRespVo.setCatelogName(categoryEntity.getName());
  39.         }
  40.         // 3.2.得到所属分组名
  41.         if (ATTR_TYPE_BASE.getMsg().equalsIgnoreCase(type)) {
  42.             AttrAttrgroupRelationEntity relationEntity = relationService.query().eq("attr_id", attrEntity.getAttrId()).one();
  43.             if(relationEntity != null){
  44.                 AttrGroupEntity attrGroupEntity = attrGroupService.getById(relationEntity.getAttrGroupId());
  45.                 attrRespVo.setGroupName(attrGroupEntity.getAttrGroupName());
  46.             }
  47.         }
  48.         return attrRespVo;
  49.     }).collect(Collectors.toList());
  50.     pageUtils.setList(respVos);
  51.     return pageUtils;
  52. }
复制代码
批量删除
  1. /**
  2. * 删除属性与分组的关联关系
  3. * DELETE FROM pms_attr_attrgroup_relation
  4. * WHERE (( attr_id = 1 and attr_group_id = 1) OR ( attr_id = 2 and attr_group_id = 3))
  5. */
  6. @Override
  7. public void deleteRelation(List<AttrGroupRelationVo> voList) {
  8.     // 1.获取
  9.     List<AttrAttrgroupRelationEntity> relationEntities = voList.stream().map(attrGroupRelationVo -> {
  10.         AttrAttrgroupRelationEntity relationEntity = new AttrAttrgroupRelationEntity();
  11.         relationEntity.setAttrId(attrGroupRelationVo.getAttrId());
  12.         relationEntity.setAttrGroupId(attrGroupRelationVo.getAttrGroupId());
  13.         return relationEntity;
  14.     }).collect(Collectors.toList());
  15.     // 2.批量删除
  16.     relationDao.deleteBatchRelation(relationEntities);
  17. }
复制代码
  1. <!--    DELETE FROM pms_attr_attrgroup_relation
  2. WHERE (( attr_id = 1 and attr_group_id = 1) OR ( attr_id = 2 and attr_group_id = 3))-->
  3. <delete id="deleteBatchRelation">
  4.     DELETE FROM `pms_attr_attrgroup_relation` WHERE
  5.     <foreach collection="relationEntities" item="item" separator=" OR ">
  6.         ( attr_id = #{item.attrId} AND attr_group_id = #{item.attrGroupId})
  7.     </foreach>
  8. </delete>
复制代码
中间表复杂业务
  1. /**
  2. * 获取属性分组没有关联的其他属性
  3. */
  4. @Override
  5. public PageUtils listNoRelationAttr(Map<String, Object> params, Long attrgroupId) {
  6.     // 1.获取分类id
  7.     Long catelogId = this.query().eq("attr_group_id", attrgroupId).one().getCatelogId();
  8.     // 2.获取当前分类下的其他分组id集合
  9.     List<Long> groupIds = this.list(new QueryWrapper<AttrGroupEntity>()
  10.                     .eq("catelog_id", catelogId))
  11.             .stream()
  12.             .map(AttrGroupEntity::getAttrGroupId)
  13.             .collect(Collectors.toList());;
  14.     // 3.获取其他分组关联的属性id集合
  15.     List<Long> attrIds = relationService.list(new QueryWrapper<AttrAttrgroupRelationEntity>()
  16.                     .in("attr_group_id", groupIds))
  17.             .stream()
  18.             .map(AttrAttrgroupRelationEntity::getAttrId)
  19.             .collect(Collectors.toList());
  20.     // 4.剔除其他分组关联的属性
  21.     QueryWrapper<AttrEntity> wrapper = new QueryWrapper<AttrEntity>()
  22.             .eq("catelog_id", catelogId)
  23.             .ne("value_type", ATTR_TYPE_BASE.getCode());
  24.     if(attrIds != null && attrIds.size() > 0){
  25.         wrapper.notIn("attr_id", attrIds);
  26.     }
  27.    
  28.     // 5.判断key
  29.     String key = (String) params.get("key");
  30.     if(!StringUtils.isEmpty(key)){
  31.         wrapper.and((obj) -> {
  32.             obj.eq("attr_id", key)
  33.                     .or().like("attr_name", key)
  34.                     .or().like("value_select", key);
  35.         });
  36.     }
  37.     IPage<AttrEntity> page = attrService.page(new Query<AttrEntity>().getPage(params), wrapper);
  38.     return new PageUtils(page);
  39. }
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表