diff --git a/src/main/java/com/qs/serve/controller/AdminPortalController.java b/src/main/java/com/qs/serve/controller/AdminPortalController.java index ead9b342..9fba9ba9 100644 --- a/src/main/java/com/qs/serve/controller/AdminPortalController.java +++ b/src/main/java/com/qs/serve/controller/AdminPortalController.java @@ -221,7 +221,6 @@ public class AdminPortalController { return R.ok(sysUserLoginService.login(param)); } - /** * 登录接口 * @return diff --git a/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSupplierExtRegionVo.java b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSupplierExtRegionVo.java new file mode 100644 index 00000000..b5c489a3 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/bms/entity/vo/BmsSupplierExtRegionVo.java @@ -0,0 +1,31 @@ +package com.qs.serve.modules.bms.entity.vo; + + +import lombok.Data; + +/** + * @author YenHex + * @since 2024/11/22 + */ +@Data +public class BmsSupplierExtRegionVo { + + private String id; + private String name; + private String code; + private String bookCode; + private String salRegionCode; + private String salRegionName; + private String salRegionCode2; + private String salRegionName2; + private String salRegionCode3; + private String salRegionName3; + private String bigRegion; + private String bizRegionCode; + private String bizRegionName; + private String bizRegionCode2; + private String bizRegionName2; + private String bizRegionCode3; + private String bizRegionName3; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierMapper.java index 7657e58e..2cc9ac6d 100644 --- a/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierMapper.java +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSupplierMapper.java @@ -3,6 +3,7 @@ package com.qs.serve.modules.bms.mapper; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.bms.entity.vo.BmsSupplierExtRegionVo; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; @@ -19,6 +20,42 @@ public interface BmsSupplierMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "1") List selectSupplierList(@Param("query") BmsSupplier bmsSupplier); + + /** + * 客户档案管理区域信息 + * @param supplierId + * @return + */ + @Select("select DISTINCT " + + "su.id, " + + "su.`name`, " + + "su.`code`, " + + "book_code, " + + "re.code as sal_region_code, " + + "re.name as sal_region_name, " + + "re2.code as sal_region_code2, " + + "re2.name as sal_region_name2, " + + "re3.code as sal_region_code3, " + + "re3.name as sal_region_name3, " + + "biz1.area as big_region, " + + "biz1.`code` as biz_region_code, " + + "biz1.`name` as biz_region_name, " + + "biz2.`code` as biz_region_code2, " + + "biz2.`name` as biz_region_name2, " + + "biz3.`code` as biz_region_code3, " + + "biz3.`name` as biz_region_name3 " + + "from bms_supplier su " + + "left join bms_region re on re.id = su.region_first " + + "left join bms_region re2 on re2.id = su.region_second " + + "left join bms_region re3 on re3.id = su.region_third " + + "left join bms_region2 biz1 on biz1.id = su.region2_first " + + "left join bms_region2 biz2 on biz2.id = su.region2_second " + + "left join bms_region2 biz3 on biz3.id = su.region2_third " + + "where su.del_flag = 0 " + + "and su.`id` = #{id} ") + @InterceptorIgnore(tenantLine = "1") + BmsSupplierExtRegionVo getBmsSupplierExtRegionVo(@Param("id") String supplierId); + /** * * @param query diff --git a/src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java b/src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java index ac050077..c4f09f10 100644 --- a/src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java +++ b/src/main/java/com/qs/serve/modules/goods/controller/GoodsImminentBatchController.java @@ -141,7 +141,6 @@ public class GoodsImminentBatchController { */ @DeleteMapping("/deleteById/{ids}") @SysLog(module = SystemModule.GOODS, title = "临期批次", biz = BizType.DELETE) - @PreAuthorize("hasRole('goods:imminentBatch:delete')") public R deleteById(@PathVariable("ids") String ids){ List idsLong = StringUtils.splitIdLong(ids); boolean result = goodsImminentBatchService.removeByIds(idsLong); diff --git a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsAccreditBo.java b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsAccreditBo.java index e3ba72ab..52f8bb79 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsAccreditBo.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsAccreditBo.java @@ -40,6 +40,12 @@ public class GoodsAccreditBo { /** 不能选的客户 */ private List notInSupplierIds; + /** 只能选的客户 */ + private List onlyUserIds; + + /** 不能选的客户 */ + private List notInUserIds; + /** 是否局部更新 */ private boolean onlyPastUpdate = false; diff --git a/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsAccreditVo.java b/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsAccreditVo.java index a6a14108..38835ee5 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsAccreditVo.java +++ b/src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsAccreditVo.java @@ -3,6 +3,8 @@ package com.qs.serve.modules.goods.entity.vo; import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion2; import com.qs.serve.modules.bms.entity.BmsSupplier; +import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo; +import com.qs.serve.modules.sys.entity.dto.SysUserVo; import lombok.Data; import java.util.List; @@ -38,5 +40,10 @@ public class GoodsAccreditVo { /** 不可下单 客户 */ private List notInSupplierList; + /** 可下单 客户 */ + private List onlyUserList; + + /** 不可下单 客户 */ + private List notInUserList; } diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java index 0fe0f8a5..c238ef74 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java @@ -28,6 +28,7 @@ import com.qs.serve.modules.goods.entity.vo.GoodsAccreditVo; import com.qs.serve.modules.goods.mapper.*; import com.qs.serve.modules.goods.service.GoodsAccreditItemService; import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.entity.dto.SysUserSimpleVo; import com.qs.serve.modules.sys.mapper.SysUserMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -429,6 +430,8 @@ public class GoodsAccreditServiceImpl extends ServiceImpl userList = sysUserMapper.selectBatchIds(param.getNotInSupplierIds()); + List list = userList.stream().map(a->{ + GoodsAccreditItem item = new GoodsAccreditItem(); + item.setAccId(accId); + item.setAccType(0); + item.setTargetType("user"); + item.setTargetCode(a.getCode()); + item.setTargetName(a.getName()); + item.setTargetId(a.getId()); + return item; + }).collect(Collectors.toList()); + goodsAccreditItemService.saveBatch(list); + } + + if(b8){ + List userList = sysUserMapper.selectBatchIds(param.getNotInSupplierIds()); + List list = userList.stream().map(a->{ + GoodsAccreditItem item = new GoodsAccreditItem(); + item.setAccId(accId); + item.setAccType(1); + item.setTargetType("user"); + item.setTargetCode(a.getCode()); + item.setTargetName(a.getName()); + item.setTargetId(a.getId()); + return item; + }).collect(Collectors.toList()); + goodsAccreditItemService.saveBatch(list); + } + } + /** + * 根据类别ID、SPU ID和SKU ID获取商品授权信息 + * @param cateId 类别ID + * @param spuId SPU ID + * @param skuId SKU ID + * @return 返回商品授权信息对象,如果没有找到则返回null + */ @Override public GoodsAccreditVo getById(String cateId, String spuId, String skuId) { + // 获取商品授权基本信息 GoodsAccredit accredit = this.getGoodsAccredit(new GoodsAccreditBo(cateId,spuId,skuId)); GoodsAccreditVo accreditVo = new GoodsAccreditVo(); + + // 如果授权信息存在且有有效的ID,则进一步处理 if(accredit!=null&&accredit.getId()!=null){ + // 查询该授权下的所有授权项 List accreditItemList = goodsAccreditItemService .list(new LambdaQueryWrapper().eq(GoodsAccreditItem::getAccId,accredit.getId())); + + // 将授权项按目标类型分组 Map> accMap = accreditItemList.stream() .collect(Collectors.groupingBy(GoodsAccreditItem::getTargetType)); + + // 分别获取供应商、业务区,销售区域,用户,的授权项列表 List list1 = accMap.get("supplier"); List list2 = accMap.get("bizRegion"); List list3 = accMap.get("saleRegion"); + List list4 = accMap.get("user"); + // 处理供应商授权项 if(CollUtil.isNotEmpty(list1)){ + // 将供应商授权项按授权类型分组 Map> listMap = list1.stream() .collect(Collectors.groupingBy(GoodsAccreditItem::getAccType)); + + // 分别处理仅限和除外的供应商授权项 List onlyList = listMap.get(0); List notInList = listMap.get(1); + if(CollUtil.isNotEmpty(onlyList)){ + // 获取仅限供应商ID列表并查询供应商信息 List ids = onlyList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList()); accreditVo.setOnlySupplierList(supplierMapper.selectBatchIds(ids)); } if(CollUtil.isNotEmpty(notInList)){ + // 获取除外供应商ID列表并查询供应商信息 List ids = notInList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList()); accreditVo.setNotInSupplierList(supplierMapper.selectBatchIds(ids)); } } + // 处理业务区域授权项 if(CollUtil.isNotEmpty(list2)){ + // 将业务区域授权项按授权类型分组 Map> listMap = list2.stream() .collect(Collectors.groupingBy(GoodsAccreditItem::getAccType)); + + // 分别处理仅限和除外的业务区域授权项 List onlyList = listMap.get(0); List notInList = listMap.get(1); + if(CollUtil.isNotEmpty(onlyList)){ + // 获取仅限业务区域ID列表并查询区域信息 List ids = onlyList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList()); accreditVo.setOnlyBizRegionList(region2Mapper.selectBatchIds(ids)); } if(CollUtil.isNotEmpty(notInList)){ + // 获取除外业务区域ID列表并查询区域信息 List ids = notInList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList()); accreditVo.setNotInBizRegionList(region2Mapper.selectBatchIds(ids)); } } + // 处理销售区域授权项 if(CollUtil.isNotEmpty(list3)){ + // 将销售区域授权项按授权类型分组 Map> listMap = list3.stream() .collect(Collectors.groupingBy(GoodsAccreditItem::getAccType)); + + // 分别处理仅限和除外的销售区域授权项 List onlyList = listMap.get(0); List notInList = listMap.get(1); + if(CollUtil.isNotEmpty(onlyList)){ + // 获取仅限销售区域ID列表并查询区域信息 List ids = onlyList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList()); accreditVo.setOnlySaleRegionList(regionMapper.selectBatchIds(ids)); } if(CollUtil.isNotEmpty(notInList)){ + // 获取除外销售区域ID列表并查询区域信息 List ids = notInList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList()); accreditVo.setNotInSaleRegionList(regionMapper.selectBatchIds(ids)); } } + + // 处理用户授权项 + if(CollUtil.isNotEmpty(list4)){ + // 将销售区域授权项按授权类型分组 + Map> listMap = list4.stream() + .collect(Collectors.groupingBy(GoodsAccreditItem::getAccType)); + + // 分别处理仅限和除外的销售区域授权项 + List onlyList = listMap.get(0); + List notInList = listMap.get(1); + + if(CollUtil.isNotEmpty(onlyList)){ + // 获取仅限销售区域ID列表并查询区域信息 + List ids = onlyList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList()); + List userSimpleVos = sysUserMapper.selectBatchIds(ids).stream() + .map(a->a.toSimpleVo(true)).collect(Collectors.toList()); + accreditVo.setOnlyUserList(userSimpleVos); + } + if(CollUtil.isNotEmpty(notInList)){ + // 获取除外销售区域ID列表并查询区域信息 + List ids = notInList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList()); + List userSimpleVos = sysUserMapper.selectBatchIds(ids).stream() + .map(a->a.toSimpleVo(true)).collect(Collectors.toList()); + accreditVo.setNotInUserList(userSimpleVos); + } + } + // 返回构建好的商品授权信息对象 return accreditVo; } + + // 如果没有找到授权信息,则返回null return null; } @@ -814,11 +917,19 @@ public class GoodsAccreditServiceImpl extends ServiceImpl() .eq(GoodsAccredit::getCategoryId,param.getCategoryId()),false); + // 如果未找到对应的授权信息,则根据类别ID创建新的授权信息 if(accredit==null){ GoodsCategory category = categoryMapper.selectById(param.getCategoryId()); accredit = new GoodsAccredit(); @@ -826,9 +937,11 @@ public class GoodsAccreditServiceImpl extends ServiceImpl() .eq(GoodsAccredit::getSpuId,param.getSpuId()),false); + // 如果未找到对应的授权信息,则根据SPU ID创建新的授权信息 if(accredit==null){ GoodsSpu spu = goodsSpuMapper.selectById(param.getSpuId()); accredit = new GoodsAccredit(); @@ -836,9 +949,11 @@ public class GoodsAccreditServiceImpl extends ServiceImpl() .eq(GoodsAccredit::getSkuId,param.getSkuId()),false); + // 如果未找到对应的授权信息,则根据SKU ID创建新的授权信息 if(accredit==null){ GoodsSku sku = goodsSkuMapper.selectById(param.getSkuId()); accredit = new GoodsAccredit(); diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java index f9348893..76c3522c 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsOrder.java @@ -176,6 +176,35 @@ public class OmsOrder implements Serializable { @JsonProperty private Boolean delFlag; + /** + * 拓展查询条件 + */ + @TableField(condition = SqlCondition.LIKE) + private String cusSaleRegion; + @TableField(condition = SqlCondition.LIKE) + private String cusSaleRegion2; + @TableField(condition = SqlCondition.LIKE) + private String cusSaleRegion3; + @TableField(condition = SqlCondition.LIKE) + private String cusSaleRegionAll; + @TableField(condition = SqlCondition.LIKE) + private String cusSaleRegionCodes; + @TableField(condition = SqlCondition.LIKE) + private String cusBigRegion; + @TableField(condition = SqlCondition.LIKE) + private String cusProvince; + @TableField(condition = SqlCondition.LIKE) + private String cusCity; + @TableField(condition = SqlCondition.LIKE) + private String cusArea; + @TableField(condition = SqlCondition.LIKE) + private String cusBizRegionAll; + @TableField(condition = SqlCondition.LIKE) + private String cusBizRegionCodes; + @TableField(condition = SqlCondition.LIKE) + private String allBands; + + /** 订单明细项 */ @TableField(exist = false) private List orderItems; diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index ea1149cc..88e273a2 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.oms.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.framework.redis.RedisService; @@ -9,6 +10,7 @@ import com.qs.serve.common.util.*; import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplierAddress; +import com.qs.serve.modules.bms.entity.vo.BmsSupplierExtRegionVo; import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.service.BmsSupplierAddressService; @@ -17,6 +19,7 @@ import com.qs.serve.modules.goods.entity.dto.GoodsAccrIdsDto; import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice; import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery; import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; +import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper; import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper; import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; import com.qs.serve.modules.goods.service.*; @@ -72,6 +75,7 @@ public class OmsOrderServiceImpl extends ServiceImpl i private GoodsSkuMapper goodsSkuMapper; private GoodsSkuService goodsSkuService; private GoodsSpuService goodsSpuService; + private GoodsCategoryMapper goodsCategoryMapper; private GoodsCategoryRuleMapper goodsCategoryRuleMapper; private GoodsCustomerPriceService goodsCustomerPriceService; @@ -267,6 +271,7 @@ public class OmsOrderServiceImpl extends ServiceImpl i order.setSupplierId(param.getSupplierId()); order.setSupplierName(supplier.getSupplierName()); order.setSupplierCode(supplier.getSupplierCode()); + this.appendCusRegion(supplier, order); } order.setCdOrderRemark(param.getCdOrderRemark()); //if(StringUtils.hasText(param.getUserId())){ @@ -282,6 +287,7 @@ public class OmsOrderServiceImpl extends ServiceImpl i //通过当前函数获取当前账套对于的skuID,默认全部转化为开平(001)的sku List spuIds = param.getOrderItems().stream().map(OmsOrderModifyParam.OmsOrderItemModifyBo::getSpuId).collect(Collectors.toList()); spuIds.add(0L);//兼容空订单,防止空指针 + this.appendBrandCategory(order, spuIds); List spuList = goodsSpuService.listByIds(spuIds); Map goodsSpuMap = new HashMap<>(spuList.size()); for (GoodsSpu goodsSpu : spuList) { @@ -602,6 +608,9 @@ public class OmsOrderServiceImpl extends ServiceImpl i order.setUserName(user.getName()); order.setUserCode(user.getCode()); order.setUserPhone(user.getMobile()); + + this.appendCusRegion(supplier, order); + if (createOrderParam != null) { order.setBillType(createOrderParam.getBillType()); order.setUrgentFlag(createOrderParam.getUrgentFlag()); @@ -714,7 +723,14 @@ public class OmsOrderServiceImpl extends ServiceImpl i this.handleCategoryRule(categoryRule, orderItems); + // 更新品牌相关参数 + List spuIds = orderItems.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList()); + this.appendBrandCategory(order, spuIds); + this.updateById(order); + // 保存明细 omsOrderItemService.saveBatch(orderItems); + + //清空勾选的购物车 List cartIds = confirmOrder.getShoppingCarts().stream() .filter(a -> a.getId() != null) @@ -725,6 +741,96 @@ public class OmsOrderServiceImpl extends ServiceImpl i return order; } + /** + * 根据商品SPU ID列表补充订单的品牌类别信息 + * 此方法旨在通过SPU ID获取对应的顶级分类ID,并进一步获取分类名称,最终将这些信息汇总到订单对象中 + * @param order 订单对象,用于存储品牌类别信息 + * @param spuIds 商品SPU ID列表,用于查询商品的顶级分类 + */ + private void appendBrandCategory(OmsOrder order, List spuIds) { + if(CollUtil.isNotEmpty(spuIds)){ + List cateIds = goodsSpuService.list(new LambdaQueryWrapper() + .in(GoodsSpu::getId, spuIds) + .select(GoodsSpu::getCategoryFirst)) + .stream() + .map(GoodsSpu::getCategoryFirst) + .collect(Collectors.toList()); + if(CollUtil.isNotEmpty(cateIds)){ + String cateNames = goodsCategoryMapper.selectBatchIds(cateIds) + .stream().map(GoodsCategory::getName).collect(Collectors.joining(",")); + order.setAllBands(cateNames); + } + } + } + + /** + * 将供应商的自定义区域信息附加到订单中 + * 此方法用于从供应商信息中提取客户相关的区域数据,并将其填充到订单对象中 + * 这有助于在订单处理过程中考虑供应商的特定区域需求或特性 + * @param supplier 供应商对象,包含供应商的详细信息 + * @param order 订单对象,将要附加区域信息的目标 + */ + private void appendCusRegion(BmsSupplier supplier, OmsOrder order) { + + try { + // 获取供应商的扩展区域信息 + BmsSupplierExtRegionVo regionVo = bmsSupplierMapper.getBmsSupplierExtRegionVo(supplier.getId()); + + if (regionVo == null) { + log.warn("Supplier ID {} does not have any extended region information", supplier.getId()); + return; + } + + // 设置销售区域信息 + order.setCusSaleRegion(regionVo.getSalRegionName()); + order.setCusSaleRegion2(regionVo.getSalRegionName2()); + order.setCusSaleRegion3(regionVo.getSalRegionName3()); + order.setCusSaleRegionAll(appendRegions(regionVo.getSalRegionName(), regionVo.getSalRegionName2(), regionVo.getSalRegionName3())); + order.setCusSaleRegionCodes(appendCodes(regionVo.getSalRegionCode(), regionVo.getSalRegionCode2(), regionVo.getSalRegionCode3())); + + // 设置业务区域信息 + order.setCusBigRegion(regionVo.getBigRegion()); + order.setCusProvince(regionVo.getBizRegionName()); + order.setCusCity(regionVo.getBizRegionName2()); + order.setCusArea(regionVo.getBizRegionName3()); + order.setCusBizRegionAll(appendRegions(regionVo.getBizRegionName(), regionVo.getBizRegionName2(), regionVo.getBizRegionName3())); + order.setCusBizRegionCodes(appendCodes(regionVo.getBizRegionCode(), regionVo.getBizRegionCode2(), regionVo.getBizRegionCode3())); + + } catch (Exception e) { + log.error("Error appending customer region information for supplier ID {}: {}", supplier.getId(), e.getMessage(), e); + } + } + + /** + * 辅助方法:拼接三个区域名称 + * @param region1 第一个区域名称 + * @param region2 第二个区域名称 + * @param region3 第三个区域名称 + * @return 拼接后的区域名称字符串 + */ + private String appendRegions(String region1, String region2, String region3) { + StringBuilder sb = new StringBuilder(); + if (region1 != null) sb.append(region1); + if (region2 != null) sb.append(",").append(region2); + if (region3 != null) sb.append(",").append(region3); + return sb.toString(); + } + + /** + * 辅助方法:拼接三个区域代码 + * @param code1 第一个区域代码 + * @param code2 第二个区域代码 + * @param code3 第三个区域代码 + * @return 拼接后的区域代码字符串 + */ + private String appendCodes(String code1, String code2, String code3) { + StringBuilder sb = new StringBuilder(); + if (code1 != null) sb.append(code1); + if (code2 != null) sb.append(",").append(code2); + if (code3 != null) sb.append(",").append(code3); + return sb.toString(); + } + @Override public List getSpuAssess(OmsSpuAssesInfoBo param) { diff --git a/src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java b/src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java index 272d675b..f09ca89e 100644 --- a/src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java +++ b/src/main/java/com/qs/serve/modules/wx/api/WxSvcUserApi.java @@ -60,10 +60,14 @@ public class WxSvcUserApi { /** * 用户信息 + * @param noChange 不做转化CRM系统公众号用户绑定信息 + * @return */ @GetMapping("/info") - public R info(){ - WxUser wxUser = wxUserService.getCurrentWxUser(true); + public R info(String noChange){ + boolean notChangeCms = noChange!=null&&noChange.equals("true"); + log.debug("notChangeCms{}, nochage:{}",notChangeCms,noChange); + WxUser wxUser = wxUserService.getCurrentWxUser(true, !notChangeCms); SysUserVo sysUserVo = null; if(StringUtils.hasText(wxUser.getSysUserId())){ SysUser sysUser = sysUserService.getById(wxUser.getSysUserId()); @@ -82,13 +86,13 @@ public class WxSvcUserApi { } } - if(wxUser.getAppType()!=null&&wxUser.getAppType().equals(3)){ + if(wxUser.getAppType()!=null && wxUser.getAppType().equals(3) && !notChangeCms){ //企业微信转化为公众号用户 WxUser wxUser1 = wxUserService.getOne(new LambdaQueryWrapper() .eq(WxUser::getSysUserId,wxUser.getSysUserId()) .eq(WxUser::getAppType,2),false); if(wxUser1==null){ - Assert.throwEx("请前往公众号绑定信息"); + Assert.throwEx("请前往CMS公众号绑定信息"); } wxUser1.setSysUserInfo(sysUserVo); return R.ok(wxUser1); diff --git a/src/main/java/com/qs/serve/modules/wx/service/WxUserService.java b/src/main/java/com/qs/serve/modules/wx/service/WxUserService.java index 6651a0f2..b0aaeb7f 100644 --- a/src/main/java/com/qs/serve/modules/wx/service/WxUserService.java +++ b/src/main/java/com/qs/serve/modules/wx/service/WxUserService.java @@ -22,6 +22,8 @@ public interface WxUserService extends IService { */ WxUser getCurrentWxUser(boolean updateSub); + WxUser getCurrentWxUser(boolean updateSub,boolean changePubUser); + void syncSubscribe(); List getByUnionId(String unionId); diff --git a/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java b/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java index d417f869..d4714f2f 100644 --- a/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/wx/service/impl/WxUserServiceImpl.java @@ -116,13 +116,20 @@ public class WxUserServiceImpl extends ServiceImpl impleme @Override public WxUser getCurrentWxUser( boolean updateSub) { + return getCurrentWxUser(updateSub,true); + } + + @Override + public WxUser getCurrentWxUser(boolean updateSub, boolean changePubUser) { String token = ServletUtils.getHeader(GySysConst.APP_TOKEN_PROP); String wxUserKey = StringUtils.format(RedisCacheKeys.WX_KEY_USER,token); String wxUserId = redisService.getString(wxUserKey); String appId = AuthContextUtils.getAppId(); WxUser wxUser = this.getById(wxUserId); if(updateSub&&!wxUser.getId().equals("1") - &&(wxUser.getAppType().equals(1)||wxUser.getAppType().equals(2))){ + &&(wxUser.getAppType().equals(1)||wxUser.getAppType().equals(2)) + &&changePubUser + ){ try { WxMpService wxMpService = wxMpConfig.wxMpService().switchoverTo(appId); WxMpUser wxMpUser = wxMpService.getUserService().userInfo(wxUser.getOpenId(), GySysConst.LANG_ZH_CN);