Przeglądaj źródła

分销比例变更记录

zoujiajian 9 miesięcy temu
rodzic
commit
2fcdfe299c

+ 20 - 0
netflix-dao/src/main/java/com/cyksj/mapper/UserDistributeRateChangeRecordMapper.java

@@ -0,0 +1,20 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.UserDistribute;
+import com.cyksj.model.entity.UserDistributeRateChangeRecord;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: UserDistributeRateChangeRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2025/10/29 15:15
+ */
+public interface UserDistributeRateChangeRecordMapper extends BaseMapper<UserDistributeRateChangeRecord> {
+	void batchInsertGoodsRateChangeRecord(@Param("list") List<UserDistribute> list, @Param("goodsId") Long goodsId, @Param("skuId") Long skuId, @Param("changeInfo") String changeInfo, @Param("rate") Integer rate);
+
+	void batchInsertGoodsRateChangeNoSetSkuRecord(@Param("list") List<UserDistribute> list, @Param("goodsId") Long goodsId, @Param("skuId") Long skuId, @Param("changeInfo") String changeInfo);
+}

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

@@ -37,4 +37,8 @@ public interface UserDistributeMapper extends BaseMapper<UserDistribute> {
 	DistributeMoneyApply selectRelationBusiness(Long userId);
 
 	CpsOrderDataStatisticsView selectOrderBrokenLineMoney(@Param("cpsUserId") long cpsUserId, @Param("first") String first, @Param("end") String end);
+
+	List<UserDistribute> selectNoSetGoodsRateDistirbutors(Long goodsId);
+
+	List<UserDistribute> selectNoSetGoodsSkuRateDistirbutors(Long skuId);
 }

+ 27 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserDistributeRateChangeRecord.java

@@ -0,0 +1,27 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: UserDistributeRateChangeRecord
+ * 创建者: JavaZou
+ * 创建时间:2025/10/29 15:13
+ */
+@Getter
+@Setter
+public class UserDistributeRateChangeRecord extends BaseEntity{
+	private Long distributeId;
+
+	private Long userId;
+
+	private Long goodsId;
+
+	private Long skuId;
+
+	/**
+	 * 变更记录
+	 */
+	private String changeInfo;
+}

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributeRateView.java

@@ -26,6 +26,9 @@ public class UserDistributeRateView {
 	@DbField("gc.name")
 	private String categoryName;
 
+	@DbField("g.id")
+	private Long goodsId;
+
 	@DbField("g.title")
 	private String title;
 

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

@@ -117,4 +117,18 @@
             and curdate &lt; #{end}
         </if>
     </select>
+
+    <select id="selectNoSetGoodsRateDistirbutors" resultType="com.cyksj.model.entity.UserDistribute">
+        select ud.*
+        from (select id,user_id from user_distribute where deleted) ud
+                 left join user_plat_distribute_rate ur on ur.distribute_id = ud.id and ur.goods_id = #{goodsId}
+        where ur.id is null
+    </select>
+
+    <select id="selectNoSetGoodsSkuRateDistirbutors" resultType="com.cyksj.model.entity.UserDistribute">
+        select ud.*
+        from (select id,user_id from user_distribute where deleted) ud
+                 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>
 </mapper>

+ 24 - 0
netflix-dao/src/main/resources/mapper/UserDistributeRateChangeRecordMapper.xml

@@ -0,0 +1,24 @@
+<?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.cyksj.mapper.UserDistributeRateChangeRecordMapper">
+
+
+    <insert id="batchInsertGoodsRateChangeRecord">
+        insert into
+        user_distribute_rate_change_record(`distribute_id`,`user_id`,`goods_id`,`sku_id`,`change_info`,`created_time`,`update_time`)
+        values
+        <foreach collection="list" item="item" separator=",">
+            (#{item.id},#{item.userId},#{goodsId},#{skuId},#{changeInfo},now(),now())
+        </foreach>
+    </insert>
+
+    <insert id="batchInsertGoodsRateChangeNoSetSkuRecord">
+        insert into
+        user_distribute_rate_change_record(`distribute_id`,`user_id`,`goods_id`,`sku_id`,`change_info`,`created_time`,`update_time`)
+        values
+        <foreach collection="list" item="item" separator=",">
+            (#{item.id},#{item.userId},#{goodsId},#{skuId},concat(#{changeInfo},(select ifnull(rate,(select rate from business_distribute_default_rate_config where goods_id = #{goodsId} limit 1)) from user_plat_distribute_rate where distribute_id = #{item.id} and goods_id = #{goodsId} limit 1),'%'),now(),now())
+        </foreach>
+    </insert>
+</mapper>

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

@@ -0,0 +1,21 @@
+package com.cyksj.service.distribute;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.cyksj.model.entity.BusinessDistributeDefaultSkuRateConfig;
+import com.cyksj.model.entity.UserDistributeRateChangeRecord;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: UserDistributeRateChangeRecordService
+ * 创建者: JavaZou
+ * 创建时间:2025/10/29 16:16
+ */
+public interface UserDistributeRateChangeRecordService extends IService<UserDistributeRateChangeRecord> {
+	void recordDefaultGoodsRate(Long goodsId, Integer rate);
+
+	void recordDefaultGoodsSkuRate(Long goodsId, Long skuId, Integer rate);
+
+	void recordDefaultGoodsSkuDelRate(List<BusinessDistributeDefaultSkuRateConfig> delLists);
+}

+ 110 - 4
netflix-service/src/main/java/com/cyksj/service/distribute/impl/DistributeServiceImpl.java

@@ -11,6 +11,7 @@ import com.cyksj.common.constant.TaskTypeEnum;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.mapper.GoodsDonMapper;
+import com.cyksj.mapper.GoodsDonSkuMapper;
 import com.cyksj.mapper.UserDistributeSharedRelateUnbindMapper;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
@@ -26,6 +27,7 @@ import com.cyksj.model.request.UserDistributeReq;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.claude.ClaudeCodeService;
 import com.cyksj.service.distribute.DistributeService;
+import com.cyksj.service.distribute.UserDistributeRateChangeRecordService;
 import com.cyksj.service.market.task.TaskService;
 import com.cyksj.service.relation.GroupRelationFrontService;
 import lombok.RequiredArgsConstructor;
@@ -35,10 +37,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
@@ -94,6 +93,14 @@ public class DistributeServiceImpl implements DistributeService {
 
 	private final GroupRelationFrontService groupRelationFrontService;
 
+	private final BusinessDistributeDefaultRateConfigMapper businessDistributeDefaultRateConfigMapper;
+
+	private final BusinessDistributeDefaultSkuRateConfigMapper businessDistributeDefaultSkuRateConfigMapper;
+
+	private final GoodsDonSkuMapper skuMapper;
+
+	private final UserDistributeRateChangeRecordService userDistributeRateChangeRecordService;
+
 	@Override
 	@Transactional(rollbackFor = Throwable.class)
 	public void insertDistribute(UserDistributeReq userDistributeReq) {
@@ -196,6 +203,7 @@ public class DistributeServiceImpl implements DistributeService {
 		YhShop yhShop = yhShopMapper.selectOne(Wrappers.lambdaQuery(YhShop.class)
 				.eq(YhShop::getUserId, userDistribute.getUserId())
 				.eq(YhShop::getVerifyStatus, YhShop.Status.success).last("limit 1"));
+		List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords = new ArrayList<>();
 		for (UserPlatDistributeRate rate : userDistributeReq.getRates()) {
 			if (rate.getRate() == null) {
 				rate.setRate(0);
@@ -221,6 +229,8 @@ public class DistributeServiceImpl implements DistributeService {
 			rate.setDistributeId(userDistribute.getId());
 			if (rate.getId() == null) {
 				try {
+					//平台比例更变记录
+					recordGoodsRateSaveChange(userDistribute, rate.getGoodsId(), rate.getRate(), goodsDon.getTitle(), userDistributeRateChangeRecords);
 					userPlatDistributeRateMapper.insert(rate);
 				} catch (DuplicateKeyException e) {
 					userPlatDistributeRateMapper.update(null, Wrappers.lambdaUpdate(UserPlatDistributeRate.class)
@@ -246,6 +256,8 @@ public class DistributeServiceImpl implements DistributeService {
 			} else {
 				UserPlatDistributeRate dbPlateRate = userPlatDistributeRateMapper.selectById(rate.getId());
 				if (dbPlateRate == null) {
+					//平台比例更变记录
+					recordGoodsRateSaveChange(userDistribute, rate.getGoodsId(), rate.getRate(), goodsDon.getTitle(), userDistributeRateChangeRecords);
 					continue;
 				}
 				if (dbPlateRate.getRate() != rate.getRate() || dbPlateRate.getSecondRate() != rate.getSecondRate()) {
@@ -257,6 +269,10 @@ public class DistributeServiceImpl implements DistributeService {
 								.eq(YhShopUserPlatDistributeRate::getGoodsId, rate.getGoodsId())
 								.set(YhShopUserPlatDistributeRate::getRate, rate.getRate()));
 					}
+					if (dbPlateRate.getRate() != rate.getRate()) {
+						//变更记录
+						recordGoodsRateChange(userDistribute, goodsDon.getTitle(), rate, userDistributeRateChangeRecords);
+					}
 				}
 			}
 		}
@@ -265,6 +281,10 @@ public class DistributeServiceImpl implements DistributeService {
 		List<UserPlatSkuDistributeRate> skuRates = userDistributeReq.getSkuRates();
 		if (CollUtil.isNotEmpty(skuRates)) {
 			List<Long> skuIds = skuRates.stream().map(UserPlatSkuDistributeRate::getSkuId).collect(Collectors.toList());
+			List<UserPlatSkuDistributeRate> delSkuRateList = userPlatSkuDistributeRateMapper.selectList(Wrappers.lambdaQuery(UserPlatSkuDistributeRate.class).eq(UserPlatSkuDistributeRate::getDistributeId,userDistribute.getId()).notIn(UserPlatSkuDistributeRate::getSkuId, skuIds).orderByAsc(UserPlatSkuDistributeRate::getGoodsId));
+			//sku比例更变记录
+			recordSkuRateDelChange(userDistribute, delSkuRateList, userDistributeRateChangeRecords);
+
 			userPlatSkuDistributeRateMapper.delete(Wrappers.lambdaQuery(UserPlatSkuDistributeRate.class)
 					.notIn(UserPlatSkuDistributeRate::getSkuId, skuIds)
 					.eq(UserPlatSkuDistributeRate::getDistributeId, userDistribute.getId()));
@@ -289,20 +309,35 @@ public class DistributeServiceImpl implements DistributeService {
 					checkDistributorAndBusinessRate(skuRate.getRate(), goodsDon.getId(), goodsDon.getTitle());
 				}
 				if (skuRate.getId() != null) {
+					UserPlatSkuDistributeRate dbUserPlatSkuDistributeRate = userPlatSkuDistributeRateMapper.selectOne(Wrappers.lambdaQuery(UserPlatSkuDistributeRate.class).eq(UserPlatSkuDistributeRate::getId, skuRate.getId()).last("limit 1"));
 					userPlatSkuDistributeRateMapper.updateById(skuRate);
+					if (dbUserPlatSkuDistributeRate != null && dbUserPlatSkuDistributeRate.getRate() != skuRate.getRate()) {
+						recordSkuRateChange(userDistribute, goodsDon.getTitle(), skuRate, userDistributeRateChangeRecords);
+					}
 					continue;
 				}
 				try {
 					skuRate.setDistributeId(userDistribute.getId());
 					userPlatSkuDistributeRateMapper.insert(skuRate);
+					//不存在 变更
+					recordNoExistsSkuRateChange(skuRate, userDistribute, goodsDon.getTitle(), userDistributeRateChangeRecords);
 				} catch (DuplicateKeyException e) {
 				}
 			}
 		} else {
+			//sku比例更变记录
+			List<UserPlatSkuDistributeRate> delSkuRateList = userPlatSkuDistributeRateMapper.selectList(Wrappers.lambdaQuery(UserPlatSkuDistributeRate.class).eq(UserPlatSkuDistributeRate::getDistributeId, userDistribute.getId()).orderByAsc(UserPlatSkuDistributeRate::getGoodsId));
+			recordSkuRateDelChange(userDistribute, delSkuRateList, userDistributeRateChangeRecords);
+
 			userPlatSkuDistributeRateMapper.delete(Wrappers.lambdaQuery(UserPlatSkuDistributeRate.class)
 					.eq(UserPlatSkuDistributeRate::getDistributeId, userDistribute.getId()));
 		}
 		handlerDistributeOtherFunc(userDistribute, userDistributeReq);
+
+		if (CollUtil.isNotEmpty(userDistributeRateChangeRecords)) {
+			userDistributeRateChangeRecords.sort(Comparator.comparing(UserDistributeRateChangeRecord::getGoodsId));
+			userDistributeRateChangeRecordService.saveBatch(userDistributeRateChangeRecords);
+		}
 	}
 
 	/**
@@ -682,4 +717,75 @@ public class DistributeServiceImpl implements DistributeService {
 			couponDistributePopularizeMapper.insert(newPopularizeCode);
 		}
 	}
+
+	private void recordGoodsRateChange(UserDistribute userDistribute, String title, UserPlatDistributeRate rate, List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords) {
+		//记录更变记录
+		UserDistributeRateChangeRecord userDistributeRateChangeRecord = new UserDistributeRateChangeRecord();
+		userDistributeRateChangeRecord.setDistributeId(userDistribute.getId());
+		userDistributeRateChangeRecord.setUserId(userDistribute.getUserId());
+		userDistributeRateChangeRecord.setGoodsId(rate.getGoodsId());
+		String changeInfo = String.format("%s全规格分销比例变为%s%%", title, rate.getRate());
+		userDistributeRateChangeRecord.setChangeInfo(changeInfo);
+		userDistributeRateChangeRecords.add(userDistributeRateChangeRecord);
+	}
+
+
+	private void recordSkuRateChange(UserDistribute userDistribute, String title, UserPlatSkuDistributeRate skuRate, List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords) {
+		//记录更变记录
+		UserDistributeRateChangeRecord userDistributeRateChangeRecord = new UserDistributeRateChangeRecord();
+		userDistributeRateChangeRecord.setDistributeId(userDistribute.getId());
+		userDistributeRateChangeRecord.setUserId(userDistribute.getUserId());
+		userDistributeRateChangeRecord.setGoodsId(skuRate.getGoodsId());
+		userDistributeRateChangeRecord.setSkuId(skuRate.getSkuId());
+		GoodsDonSku sku = skuMapper.selectById(skuRate.getSkuId());
+		String changeInfo = String.format("%s%s规格分销比例变为%s%%", title, sku.getSpecVal(), skuRate.getRate());
+		userDistributeRateChangeRecord.setChangeInfo(changeInfo);
+		userDistributeRateChangeRecords.add(userDistributeRateChangeRecord);
+	}
+
+	private void recordSkuRateDelChange(UserDistribute userDistribute, List<UserPlatSkuDistributeRate> delSkuRateList, List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords) {
+		for (UserPlatSkuDistributeRate userPlatSkuDistributeRate : delSkuRateList) {
+			//记录更变记录
+			UserDistributeRateChangeRecord userDistributeRateChangeRecord = new UserDistributeRateChangeRecord();
+			userDistributeRateChangeRecord.setDistributeId(userDistribute.getId());
+			userDistributeRateChangeRecord.setUserId(userDistribute.getUserId());
+			userDistributeRateChangeRecord.setGoodsId(userPlatSkuDistributeRate.getGoodsId());
+			userDistributeRateChangeRecord.setSkuId(userPlatSkuDistributeRate.getSkuId());
+			GoodsDon goodsDon = goodsDonMapper.selectById(userPlatSkuDistributeRate.getGoodsId());
+			GoodsDonSku sku = skuMapper.selectById(userPlatSkuDistributeRate.getSkuId());
+			UserPlatDistributeRate userPlatDistributeRate = userPlatDistributeRateMapper.selectOne(Wrappers.lambdaQuery(UserPlatDistributeRate.class).eq(UserPlatDistributeRate::getDistributeId, userDistribute.getId()).eq(UserPlatDistributeRate::getGoodsId, userPlatSkuDistributeRate.getGoodsId()).last("limit 1"));
+			String changeInfo = String.format("%s%s规格分销比例变为%s%%", goodsDon.getTitle(), sku.getSpecVal(), userPlatDistributeRate.getRate());
+			userDistributeRateChangeRecord.setChangeInfo(changeInfo);
+			userDistributeRateChangeRecords.add(userDistributeRateChangeRecord);
+		}
+	}
+
+	private void recordGoodsRateSaveChange(UserDistribute userDistribute, Long goodsId, Integer goodsRate, String title, List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords) {
+		BusinessDistributeDefaultRateConfig businessDistributeDefaultRateConfig = businessDistributeDefaultRateConfigMapper.selectOne(Wrappers.lambdaQuery(BusinessDistributeDefaultRateConfig.class).eq(BusinessDistributeDefaultRateConfig::getGoodsId, goodsId).last("limit 1"));
+		if (businessDistributeDefaultRateConfig == null || businessDistributeDefaultRateConfig.getRate() != goodsRate) {
+			//记录更变记录
+			UserDistributeRateChangeRecord userDistributeRateChangeRecord = new UserDistributeRateChangeRecord();
+			userDistributeRateChangeRecord.setDistributeId(userDistribute.getId());
+			userDistributeRateChangeRecord.setUserId(userDistribute.getUserId());
+			userDistributeRateChangeRecord.setGoodsId(goodsId);
+			String changeInfo = String.format("%s全规格分销比例变为%s%%", title, goodsRate);
+			userDistributeRateChangeRecord.setChangeInfo(changeInfo);
+			userDistributeRateChangeRecords.add(userDistributeRateChangeRecord);
+		}
+	}
+
+	private void recordNoExistsSkuRateChange(UserPlatSkuDistributeRate skuRate, UserDistribute userDistribute, String title, List<UserDistributeRateChangeRecord> userDistributeRateChangeRecords) {
+		BusinessDistributeDefaultSkuRateConfig rateConfig = businessDistributeDefaultSkuRateConfigMapper.selectOne(Wrappers.lambdaQuery(BusinessDistributeDefaultSkuRateConfig.class).eq(BusinessDistributeDefaultSkuRateConfig::getSkuId, skuRate.getSkuId()).last("limit 1"));
+		if (rateConfig == null || rateConfig.getRate() != skuRate.getRate()) {
+			if (rateConfig == null) {
+				//查看平台默认比例
+				UserPlatDistributeRate userPlatDistributeRate = userPlatDistributeRateMapper.selectOne(Wrappers.lambdaQuery(UserPlatDistributeRate.class).eq(UserPlatDistributeRate::getDistributeId, userDistribute.getId()).eq(UserPlatDistributeRate::getGoodsId, skuRate.getGoodsId()).last("limit 1"));
+				//相同不记录
+				if (userPlatDistributeRate != null && userPlatDistributeRate.getRate() == skuRate.getRate()) {
+					return;
+				}
+			}
+			recordSkuRateChange(userDistribute, title, skuRate, userDistributeRateChangeRecords);
+		}
+	}
 }

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

@@ -0,0 +1,70 @@
+package com.cyksj.service.distribute.impl;
+
+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.model.entity.*;
+import com.cyksj.service.distribute.UserDistributeRateChangeRecordService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: UserDistributeRateChangeRecordServiceImpl
+ * 创建者: JavaZou
+ * 创建时间:2025/10/29 16:16
+ */
+@Service
+@RequiredArgsConstructor
+public class UserDistributeRateChangeRecordServiceImpl extends ServiceImpl<UserDistributeRateChangeRecordMapper, UserDistributeRateChangeRecord> implements UserDistributeRateChangeRecordService {
+	private final UserDistributeMapper userDistributeMapper;
+
+	private final UserDistributeRateChangeRecordMapper userDistributeRateChangeRecordMapper;
+
+	private final GoodsDonMapper goodsDonMapper;
+
+	private final GoodsDonSkuMapper skuMapper;
+
+	@Override
+	public void recordDefaultGoodsRate(Long goodsId, Integer rate) {
+		List<UserDistribute> userDistributeList = userDistributeMapper.selectNoSetGoodsRateDistirbutors(goodsId);
+		if (userDistributeList.isEmpty()) {
+			return;
+		}
+		GoodsDon goodsDon = goodsDonMapper.selectById(goodsId);
+		String changeInfo = String.format("%s全规格分销比例变为%s%%", goodsDon.getTitle(), rate);
+		userDistributeRateChangeRecordMapper.batchInsertGoodsRateChangeRecord(userDistributeList, goodsId, null, changeInfo, rate);
+	}
+
+	@Override
+	public void recordDefaultGoodsSkuRate(Long goodsId, Long skuId, Integer rate) {
+		List<UserDistribute> userDistributeList = userDistributeMapper.selectNoSetGoodsSkuRateDistirbutors(skuId);
+		if (userDistributeList.isEmpty()) {
+			return;
+		}
+		GoodsDon goodsDon = goodsDonMapper.selectById(goodsId);
+		GoodsDonSku sku = skuMapper.selectById(skuId);
+		String changeInfo = String.format("%s%s规格分销比例变为%s%%", goodsDon.getTitle(), sku.getSpecVal(), rate);
+		userDistributeRateChangeRecordMapper.batchInsertGoodsRateChangeRecord(userDistributeList, goodsId, skuId, changeInfo, rate);
+	}
+
+	@Override
+	public void recordDefaultGoodsSkuDelRate(List<BusinessDistributeDefaultSkuRateConfig> delLists) {
+		for (BusinessDistributeDefaultSkuRateConfig skuRateConfig : delLists) {
+			Long skuId = skuRateConfig.getSkuId();
+			List<UserDistribute> userDistributeList = userDistributeMapper.selectNoSetGoodsSkuRateDistirbutors(skuId);
+			if (userDistributeList.isEmpty()) {
+				continue;
+			}
+			Long goodsId = skuRateConfig.getGoodsId();
+			GoodsDon goodsDon = goodsDonMapper.selectById(goodsId);
+			GoodsDonSku sku = skuMapper.selectById(skuId);
+			String changeInfo = String.format("%s%s规格分销比例变为", goodsDon.getTitle(), sku.getSpecVal());
+			userDistributeRateChangeRecordMapper.batchInsertGoodsRateChangeNoSetSkuRecord(userDistributeList, goodsId, skuId, changeInfo);
+		}
+	}
+}

+ 14 - 0
netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsDistribtueDataController.java

@@ -103,6 +103,20 @@ public class CpsDistribtueDataController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(detailView);
 	}
 
+	/**
+	 * 比例变更记录
+	 */
+	@GetMapping("/get/rate/record")
+	public Result<SearchResult<UserDistributeRateChangeRecord>> getRateRecord() {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		UserDistribute userDistribute = userDistributeMapper.selectOne(Wrappers.lambdaQuery(UserDistribute.class)
+				.eq(UserDistribute::getUserId, cpsUserId)
+				.eq(UserDistribute::getDeleted, 1)
+				.last("limit 1"));
+		SearchResult<UserDistributeRateChangeRecord> search = beanSearcher.search(UserDistributeRateChangeRecord.class, MapUtils.flatBuilder(request.getParameterMap()).field(UserDistributeRateChangeRecord::getDistributeId, userDistribute.getId()).onlySelect(UserDistributeRateChangeRecord::getChangeInfo, UserDistributeRateChangeRecord::getCreatedTime).orderBy(UserDistributeRateChangeRecord::getId).desc().build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
 	/**
 	 * 待入账数据统计
 	 */

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

@@ -30,6 +30,7 @@ import com.cyksj.model.request.UserDistributeReq;
 import com.cyksj.model.views.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.distribute.DistributeService;
+import com.cyksj.service.distribute.UserDistributeRateChangeRecordService;
 import com.cyksj.service.distribute.UserDistributeReturnMoneyDetailService;
 import com.cyksj.service.mange.business.UserBusinessRateService;
 import com.cyksj.service.mange.statistics.StatisticsDataService;
@@ -127,6 +128,9 @@ public class DistributeController {
 	private final UserDistributeSubMapper userDistributeSubMapper;
 
 	private final UserDistributeReturnMoneyDetailService userDistributeReturnMoneyDetailService;
+
+	private final UserDistributeRateChangeRecordService changeRecordService;
+
 	/**
 	 * 添加固定推广者
 	 */
@@ -828,11 +832,18 @@ public class DistributeController {
 				if (id == null) {
 					try {
 						businessDefaultRateConfigMapper.insert(config);
+						//默认平台比例变更记录
+						changeRecordService.recordDefaultGoodsRate(config.getGoodsId(), config.getRate());
 						alertGoodsId.add(config.getGoodsId());
 					} catch (DuplicateKeyException e) {
 					}
 				} else {
+					BusinessDistributeDefaultRateConfig dbConfig = businessDefaultRateConfigMapper.selectOne(Wrappers.lambdaQuery(BusinessDistributeDefaultRateConfig.class).eq(BusinessDistributeDefaultRateConfig::getId, config.getId()).last("limit 1"));
 					businessDefaultRateConfigMapper.updateById(config);
+					if (dbConfig != null && dbConfig.getRate() != config.getRate()) {
+						//默认平台比例变更记录
+						changeRecordService.recordDefaultGoodsRate(config.getGoodsId(), config.getRate());
+					}
 				}
 			});
 		}
@@ -841,6 +852,10 @@ public class DistributeController {
 		if (CollUtil.isNotEmpty(skuRates)) {
 			List<Long> collect = skuRates.stream().map(BusinessDistributeDefaultSkuRateConfig::getSkuId).collect(Collectors.toList());
 			if (CollUtil.isNotEmpty(collect)) {
+				List<BusinessDistributeDefaultSkuRateConfig> businessDistributeDefaultSkuRateConfigs = businessDistributeDefaultSkuRateConfigMapper.selectList(Wrappers.lambdaQuery(BusinessDistributeDefaultSkuRateConfig.class).notIn(BusinessDistributeDefaultSkuRateConfig::getSkuId, collect));
+				//默认平台规格比例变更记录
+				changeRecordService.recordDefaultGoodsSkuDelRate(businessDistributeDefaultSkuRateConfigs);
+
 				businessDistributeDefaultSkuRateConfigMapper.delete(Wrappers.lambdaQuery(BusinessDistributeDefaultSkuRateConfig.class)
 						.notIn(BusinessDistributeDefaultSkuRateConfig::getSkuId, collect));
 			}
@@ -855,11 +870,19 @@ public class DistributeController {
 				if (config.getId() == null) {
 					try {
 						businessDistributeDefaultSkuRateConfigMapper.insert(config);
+						//默认平台规格比例变更记录
+						changeRecordService.recordDefaultGoodsSkuRate(config.getGoodsId(), config.getSkuId(), config.getRate());
+						//默认平台规格比例变更记录
 						alertGoodsId.add(config.getGoodsId());
 					} catch (DuplicateKeyException e) {
 					}
 				} else {
+					BusinessDistributeDefaultSkuRateConfig dbConfig = businessDistributeDefaultSkuRateConfigMapper.selectOne(Wrappers.lambdaQuery(BusinessDistributeDefaultSkuRateConfig.class).eq(BusinessDistributeDefaultSkuRateConfig::getId, config.getId()).last("limit 1"));
 					businessDistributeDefaultSkuRateConfigMapper.updateById(config);
+					if (dbConfig != null && dbConfig.getRate() != config.getRate()) {
+						//默认平台比例变更记录
+						changeRecordService.recordDefaultGoodsSkuRate(config.getGoodsId(), config.getSkuId(), config.getRate());
+					}
 				}
 			});
 		}