Jelajahi Sumber

一键设置渠道平台/规格分销比例并记录变更记录

zoujiajian 9 bulan lalu
induk
melakukan
3dd82f7d73

+ 4 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/UserDistributeMapper.java

@@ -41,4 +41,8 @@ public interface UserDistributeMapper extends BaseMapper<UserDistribute> {
 	List<UserDistribute> selectNoSetGoodsRateDistirbutors(Long goodsId);
 
 	List<UserDistribute> selectNoSetGoodsSkuRateDistirbutors(Long skuId);
+
+	List<UserDistribute> selectGoodsRateDistributors(@Param("goodsId") Long goodsId, @Param("rate") Integer rate);
+
+	List<UserDistribute> selectSkuRateDistributors(@Param("skuId") Long skuId, @Param("rate") Integer rate);
 }

+ 14 - 0
netflix-dao/src/main/resources/mapper/UserDistributeMapper.xml

@@ -131,4 +131,18 @@
                  left join user_plat_sku_distribute_rate ur on ur.distribute_id = ud.id and ur.sku_id = #{skuId}
         where ur.id is null
     </select>
+
+    <select id="selectGoodsRateDistributors" resultType="com.cyksj.model.entity.UserDistribute">
+        select ud.*
+        from (select id,user_id from user_distribute where deleted) ud
+                 inner join user_plat_distribute_rate ur on ur.distribute_id = ud.id and ur.goods_id = #{goodsId}
+        and ur.rate != #{rate}
+    </select>
+
+    <select id="selectSkuRateDistributors" resultType="com.cyksj.model.entity.UserDistribute">
+        select ud.*
+        from (select id,user_id from user_distribute where deleted) ud
+                 inner join user_plat_sku_distribute_rate ur on ur.distribute_id = ud.id and ur.sku_id = #{skuId}
+        and ur.rate != #{rate}
+    </select>
 </mapper>

+ 4 - 0
netflix-service/src/main/java/com/cyksj/service/distribute/UserDistributeRateChangeRecordService.java

@@ -18,4 +18,8 @@ public interface UserDistributeRateChangeRecordService extends IService<UserDist
 	void recordDefaultGoodsSkuRate(Long goodsId, Long skuId, Integer rate);
 
 	void recordDefaultGoodsSkuDelRate(List<BusinessDistributeDefaultSkuRateConfig> delLists);
+
+	void unifiedSetDsRate(Long goodsId, Integer rate);
+
+	void unifiedSetDsSkuRate(Long skuId, Integer rate);
 }

+ 53 - 0
netflix-service/src/main/java/com/cyksj/service/distribute/impl/UserDistributeRateChangeRecordServiceImpl.java

@@ -1,16 +1,21 @@
 package com.cyksj.service.distribute.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.cyksj.mapper.GoodsDonMapper;
 import com.cyksj.mapper.GoodsDonSkuMapper;
 import com.cyksj.mapper.UserDistributeRateChangeRecordMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
+import com.cyksj.mapper.manage.distribute.UserPlatDistributeRateMapper;
+import com.cyksj.mapper.manage.distribute.UserPlatSkuDistributeRateMapper;
 import com.cyksj.model.entity.*;
 import com.cyksj.service.distribute.UserDistributeRateChangeRecordService;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 项目名: yhlxj11111111
@@ -20,6 +25,7 @@ import java.util.List;
  */
 @Service
 @RequiredArgsConstructor
+@Slf4j
 public class UserDistributeRateChangeRecordServiceImpl extends ServiceImpl<UserDistributeRateChangeRecordMapper, UserDistributeRateChangeRecord> implements UserDistributeRateChangeRecordService {
 	private final UserDistributeMapper userDistributeMapper;
 
@@ -29,6 +35,10 @@ public class UserDistributeRateChangeRecordServiceImpl extends ServiceImpl<UserD
 
 	private final GoodsDonSkuMapper skuMapper;
 
+	private final UserPlatDistributeRateMapper userPlatDistributeRateMapper;
+
+	private final UserPlatSkuDistributeRateMapper userPlatSkuDistributeRateMapper;
+
 	@Override
 	public void recordDefaultGoodsRate(Long goodsId, Integer rate) {
 		List<UserDistribute> userDistributeList = userDistributeMapper.selectNoSetGoodsRateDistirbutors(goodsId);
@@ -67,4 +77,47 @@ public class UserDistributeRateChangeRecordServiceImpl extends ServiceImpl<UserD
 			userDistributeRateChangeRecordMapper.batchInsertGoodsRateChangeNoSetSkuRecord(userDistributeList, goodsId, skuId, changeInfo);
 		}
 	}
+
+	@Override
+	public void unifiedSetDsRate(Long goodsId, Integer rate) {
+		List<UserDistribute> userDistributeList = userDistributeMapper.selectGoodsRateDistributors(goodsId, rate);
+		if (userDistributeList.isEmpty()) {
+			return;
+		}
+		List<Long> distributeIds = userDistributeList.stream().map(UserDistribute::getId).collect(Collectors.toList());
+		GoodsDon goodsDon = goodsDonMapper.selectById(goodsId);
+		String changeInfo = String.format("%s全规格分销比例变为%s%%", goodsDon.getTitle(), rate);
+		int update = userPlatDistributeRateMapper.update(null, Wrappers.lambdaUpdate(UserPlatDistributeRate.class)
+				.set(UserPlatDistributeRate::getRate, rate)
+				.in(UserPlatDistributeRate::getDistributeId, distributeIds)
+				.eq(UserPlatDistributeRate::getGoodsId, goodsId)
+				.ne(UserPlatDistributeRate::getRate, rate));
+		if (update > 0) {
+			log.info("一键更新:{}平台分销:{}比例至{}成功", userDistributeList.size(), goodsId, rate);
+			userDistributeRateChangeRecordMapper.batchInsertGoodsRateChangeRecord(userDistributeList, goodsId, null, changeInfo, rate);
+		}
+	}
+
+	@Override
+	public void unifiedSetDsSkuRate(Long skuId, Integer rate) {
+		GoodsDonSku sku = skuMapper.selectById(skuId);
+		List<UserDistribute> userDistributeList = userDistributeMapper.selectSkuRateDistributors(skuId, rate);
+		if (userDistributeList.isEmpty()) {
+			return;
+		}
+		List<Long> distributeIds = userDistributeList.stream().map(UserDistribute::getId).collect(Collectors.toList());
+		Long goodsId = sku.getGoodsId();
+		GoodsDon goodsDon = goodsDonMapper.selectById(goodsId);
+		String changeInfo = String.format("%s%s规格分销比例变为%s%%", goodsDon.getTitle(), sku.getSpecVal(), rate);
+		int update = userPlatSkuDistributeRateMapper.update(null, Wrappers.lambdaUpdate(UserPlatSkuDistributeRate.class)
+				.set(UserPlatSkuDistributeRate::getRate, rate)
+				.in(UserPlatSkuDistributeRate::getDistributeId, distributeIds)
+				.eq(UserPlatSkuDistributeRate::getGoodsId, goodsId)
+				.eq(UserPlatSkuDistributeRate::getSkuId, skuId)
+				.ne(UserPlatSkuDistributeRate::getRate, rate));
+		if (update > 0) {
+			log.info("一键更新:{}规格分销:{}比例至{}成功", userDistributeList.size(), skuId, rate);
+			userDistributeRateChangeRecordMapper.batchInsertGoodsRateChangeRecord(userDistributeList, goodsId, skuId, changeInfo, rate);
+		}
+	}
 }

+ 31 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/DistributeController.java

@@ -1382,4 +1382,35 @@ public class DistributeController {
 		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
+
+	/**
+	 * 固定渠道
+	 * 已有平台分销比例 统一编辑比例
+	 */
+	@PutMapping("/unified/set/ds/rate")
+	public Result<String> unifiedSetDsRate(@RequestBody Map<String, Object> params) {
+		Long goodsId = Long.valueOf(params.get("goodsId").toString());
+		Integer rate = Integer.parseInt(params.get("rate").toString());
+		if (rate < 0 || rate > 30) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
+		changeRecordService.unifiedSetDsRate(goodsId, rate);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
+
+	/**
+	 * 固定渠道
+	 * 已有平台规格分销比例 统一编辑规格比例
+	 */
+	@PutMapping("/unified/set/ds/sku/rate")
+	public Result<String> unifiedSetDsSkuRate(@RequestBody Map<String, Object> params) {
+		Long skuId = Long.valueOf(params.get("skuId").toString());
+		Integer rate = Integer.parseInt(params.get("rate").toString());
+		if (rate < 0 || rate > 30) {
+			return GatewayResponse.SUCCESS.newBuilder().toResult();
+		}
+		changeRecordService.unifiedSetDsSkuRate(skuId, rate);
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
 }