Procházet zdrojové kódy

fix 分销有礼实物分销发货权益

zoujiajian před 3 roky
rodič
revize
f47c8238e6

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/equipment/EquipmentUserDistributeTransportBenefitsMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage.distribute.equipment;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.EquipmentUserDistributeTransportBenefits;
+
+/*
+ *项目名: netflix
+ *文件名: EquipmentUserDistributeTransportBenefitsMapper
+ *创建者: JavaZou
+ *创建时间:2023/8/9 10:05
+ */
+public interface EquipmentUserDistributeTransportBenefitsMapper extends BaseMapper<EquipmentUserDistributeTransportBenefits> {
+}

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

@@ -0,0 +1,27 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/*
+ *项目名: netflix
+ *文件名: EquipmentUserDistributeTransportBenefits
+ *创建者: JavaZou
+ *创建时间:2023/8/9 10:03
+ */
+@Getter
+@Setter
+public class EquipmentUserDistributeTransportBenefits extends BaseEntity{
+	/**
+	 * 实物分销人id
+	 */
+	private Long shareId;
+
+	private Long orderId;
+
+	private BigDecimal balance;
+
+	private Boolean status;
+}

+ 6 - 1
netflix-dao/src/main/java/com/cyksj/model/entity/UserBalanceSourceRecord.java

@@ -22,8 +22,13 @@ public class UserBalanceSourceRecord extends BaseEntity{
 
 	@Getter
 	public enum Source {
+		payment("下单"),
 		refund("订单退款"),
-		clear_valid("车票未到期清除")
+		close("订单关闭"),
+		clear_valid("车票未到期清除"),
+		ds_transport("分销实物发货"),
+		follow_task("关注引导"),
+		rd_comment("实物评论"),
 		;
 		String desc;
 

+ 13 - 5
netflix-service/src/main/java/com/cyksj/service/distribute/equipment/impl/EquipmentDistributeServiceImpl.java

@@ -10,10 +10,7 @@ import com.cyksj.common.constant.Constant;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.mapper.GroupsRelationMapper;
 import com.cyksj.mapper.OrderDonMapper;
-import com.cyksj.mapper.manage.distribute.equipment.EquipmentUserChanceMapper;
-import com.cyksj.mapper.manage.distribute.equipment.EquipmentUserChanceRecordMapper;
-import com.cyksj.mapper.manage.distribute.equipment.EquipmentUserDistributeInviteRecordMapper;
-import com.cyksj.mapper.manage.distribute.equipment.EquipmentUserReceiveBenefitsRecordMapper;
+import com.cyksj.mapper.manage.distribute.equipment.*;
 import com.cyksj.model.dto.EquipmentConfigDto;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.RealGoodsOrderDonView;
@@ -67,6 +64,8 @@ public class EquipmentDistributeServiceImpl implements EquipmentDistributeServic
 
 	private final BeanSearcher beanSearcher;
 
+	private final EquipmentUserDistributeTransportBenefitsMapper transportBenefitsMapper;
+
 	@Override
 	public void saveDistributionInvitation(Long sharedId, Boolean isNewUser, Long userId) {
 		if (sharedId.equals(userId)) {
@@ -161,12 +160,21 @@ public class EquipmentDistributeServiceImpl implements EquipmentDistributeServic
 			SysConfig config = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class)
 					.eq(SysConfig::getSysKey, Constant.EQUIPMENT_DISTRIBUTE_KEY).last("limit 1"));
 			String sysValue = config.getSysValue();
-			//未配置车票权益 不增加次数
+			//未配置权益
 			if (StrUtil.isEmpty(sysValue)) {
 				return false;
 			}
 			try {
 				EquipmentConfigDto equipmentConfigDto = Jsons.parseObject(sysValue, EquipmentConfigDto.class);
+				if (equipmentConfigDto.getBalance() != null && equipmentConfigDto.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+					//已配置余额  实物发货 发送余额
+					EquipmentUserDistributeTransportBenefits transportBenefits = new EquipmentUserDistributeTransportBenefits();
+					transportBenefits.setShareId(sharId);
+					transportBenefits.setOrderId(orderId);
+					transportBenefits.setBalance(equipmentConfigDto.getBalance());
+					transportBenefitsMapper.insert(transportBenefits);
+				}
+				//未配置车票权益
 				if (equipmentConfigDto == null || CollUtil.isEmpty(equipmentConfigDto.getSkuList())) {
 					return false;
 				}

+ 16 - 7
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -28,6 +28,7 @@ import com.cyksj.mapper.manage.cms.CmsUserMapper;
 import com.cyksj.mapper.manage.distribute.DistributeWaitingSendPointsMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeBusinessOrderDonRecordMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
+import com.cyksj.mapper.manage.distribute.equipment.EquipmentUserDistributeTransportBenefitsMapper;
 import com.cyksj.mapper.manage.sys.WorkOrderMapper;
 import com.cyksj.mapper.stock.GoodsSkuStockRelateMapper;
 import com.cyksj.model.entity.*;
@@ -47,7 +48,6 @@ import com.cyksj.service.order.UserRealOrderBenefitsService;
 import com.cyksj.service.paypal.PayPalService;
 import com.cyksj.service.relation.GroupRelationClearService;
 import com.cyksj.service.stripe.StripeService;
-import com.cyksj.service.template.TemplateCommonService;
 import com.cyksj.service.user.UserBenefitsService;
 import com.cyksj.service.wechat.WeChatService;
 import lombok.RequiredArgsConstructor;
@@ -80,8 +80,6 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     private final GoodsDonStockService goodsDonStockService;
 
-    private final TemplateCommonService templateCommonService;
-
     private final GoodsDonSkuMapper goodsDonSkuMapper;
 
     private final UserRealOrderBenefitsService userRealOrderBenefitsService;
@@ -136,6 +134,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
     private final OrderDiscountPlusPurchaseSkuRelationMapper orderDiscountPlusPurchaseSkuRelationMapper;
 
+    private final EquipmentUserDistributeTransportBenefitsMapper transportBenefitsMapper;
+
     private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
 
     @Override
@@ -216,6 +216,17 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             waitingSendPoints.setIsDelivery(true);
             distributeWaitingSendPointsMapper.updateById(waitingSendPoints);
         }
+        //分销有礼 分销实物是否有发货后用户权益
+        EquipmentUserDistributeTransportBenefits transportBenefits = transportBenefitsMapper.selectOne(Wrappers.lambdaQuery(EquipmentUserDistributeTransportBenefits.class)
+                .eq(EquipmentUserDistributeTransportBenefits::getOrderId, orderDon.getId())
+                .eq(EquipmentUserDistributeTransportBenefits::getStatus, false).last("limit 1"));
+        if (transportBenefits != null) {
+            if (transportBenefits.getBalance().compareTo(BigDecimal.ZERO) > 0) {
+                //实物发货后 ,发送余额权益
+                userBenefitsService.addUserBalance(orderDon.getUserId(), transportBenefits.getBalance(), UserBalanceSourceRecord.Source.ds_transport);
+                log.info("分销实物发货后,发送用户user_id:{}余额:{}成功", orderDon.getUserId(), transportBenefits.getBalance());
+            }
+        }
         return orderDonWaybill;
     }
 
@@ -573,7 +584,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             }
             //若存在余额支付,退还余额
             if (orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
-                userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance());
+                userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance(), UserBalanceSourceRecord.Source.refund);
             }
             try {
                 marketFrontService.subSpecificChanceNum(orderDon.getUserId(), orderDon.getId(), orderDon.getGoodsId(), orderDon.getUpdateTime());
@@ -587,9 +598,7 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
             }
             if (OrderDon.Type.BALANCE.getType().equals(refundType)) {
                 if (orderDon.getMoney().compareTo(BigDecimal.ZERO) > 0) {
-                    userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getRefundBalance());
-                    //退款余额时,记录
-                    userBenefitsService.recordBalanceBySource(orderDon.getUserId(), orderDon.getRefundBalance(), UserBalanceSourceRecord.Source.clear_valid);
+                    userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getRefundBalance(), UserBalanceSourceRecord.Source.refund);
                 }
             } else {
                 //余额退款不需要扣除积分

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/market/task/impl/TaskServiceImpl.java

@@ -154,7 +154,7 @@ public class TaskServiceImpl implements TaskService {
 						if (taskView != null) {
 							if ("关注引导".equals(taskView.getTypeName()) && taskView.getBalance().compareTo(BigDecimal.ZERO) > 0) {
 								//发送余额
-								userBenefitsService.addUserBalance(dbPlatVerify.getUserId(), taskView.getBalance());
+								userBenefitsService.addUserBalance(dbPlatVerify.getUserId(), taskView.getBalance(), UserBalanceSourceRecord.Source.follow_task);
 								record.setBalance(taskView.getBalance());
 							}
 						}

+ 2 - 1
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonCommentServiceImpl.java

@@ -7,6 +7,7 @@ import com.cyksj.mapper.OrderCommentMapper;
 import com.cyksj.mapper.OrderCommentRewardConfigMapper;
 import com.cyksj.model.entity.OrderComment;
 import com.cyksj.model.entity.OrderCommentRewardConfig;
+import com.cyksj.model.entity.UserBalanceSourceRecord;
 import com.cyksj.service.order.OrderDonCommentService;
 import com.cyksj.service.user.UserBenefitsService;
 import lombok.RequiredArgsConstructor;
@@ -63,7 +64,7 @@ public class OrderDonCommentServiceImpl implements OrderDonCommentService {
 						.eq(OrderCommentRewardConfig::getGoodsId, goodsId).last("limit 1"));
 				if (orderCommentRewardConfig != null) {
 					BigDecimal balance = orderCommentRewardConfig.getBalance();
-					userBenefitsService.addUserBalance(orderComment.getUserId(), balance);
+					userBenefitsService.addUserBalance(orderComment.getUserId(), balance, UserBalanceSourceRecord.Source.rd_comment);
 					log.info("审核订单:{}评价成功,发放余额:{}", orderComment.getOrderId(), balance.divide(BigDecimal.valueOf(100)));
 					orderCommentMapper.update(null, Wrappers.lambdaUpdate(OrderComment.class)
 							.set(OrderComment::getBalance, balance)

+ 2 - 1
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderDonServiceImpl.java

@@ -652,7 +652,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				}
 				//返还余额
 				if (orderDon.getBalance().compareTo(BigDecimal.ZERO) > 0) {
-					userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance());
+					userBenefitsService.addUserBalance(orderDon.getUserId(), orderDon.getBalance(), UserBalanceSourceRecord.Source.close);
 				}
 			}
 		}
@@ -1991,6 +1991,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 			Integer success = userMapper.deductBalance(user.getId(), subBalance, userBalance);
 			if (success != 1) throw BusinessRuntimeException.getInstance("您的余额不足!");
 			orderDon.setBalance(balance);
+			userBenefitsService.recordBalanceBySource(user.getId(), BigDecimal.valueOf(-balance.longValue()), UserBalanceSourceRecord.Source.payment);
 		}
 	}
 

+ 1 - 2
netflix-service/src/main/java/com/cyksj/service/scheduler/impl/SchedulerServiceImpl.java

@@ -198,9 +198,8 @@ public class SchedulerServiceImpl implements SchedulerService {
 							log.info("user_id:{},relationId:{}返回余额为0", userId, change_relationId);
 							return;
 						}
-						userBenefitsService.addUserBalance(userId, re_balance);
+						userBenefitsService.addUserBalance(userId, re_balance, UserBalanceSourceRecord.Source.clear_valid);
 						log.info("车票未到期清除,退款至用户user_id:{}余额:{}成功", userId, re_balance);
-						userBenefitsService.recordBalanceBySource(userId, re_balance, UserBalanceSourceRecord.Source.clear_valid);
 						//修改订单状态 为退款
 						orderDon.setStatus(OrderDon.Status.refund);
 						orderDon.setRefundBalance(re_balance);

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/user/UserBenefitsService.java

@@ -26,7 +26,7 @@ public interface UserBenefitsService {
 	/**
 	 * 增加用户余额
 	 */
-	void addUserBalance(Long userId,BigDecimal addBalance);
+	void addUserBalance(Long userId, BigDecimal addBalance, UserBalanceSourceRecord.Source source);
 
 	/**
 	 * 扣除用户余额

+ 6 - 3
netflix-service/src/main/java/com/cyksj/service/user/impl/UserBenefitsServiceImpl.java

@@ -61,7 +61,7 @@ public class UserBenefitsServiceImpl implements UserBenefitsService {
 	}
 
 	@Override
-	public void addUserBalance(Long userId, BigDecimal addBalance) {
+	public void addUserBalance(Long userId, BigDecimal addBalance, UserBalanceSourceRecord.Source source) {
 		if (addBalance.compareTo(BigDecimal.ZERO) <= 0) {
 			return;
 		}
@@ -70,7 +70,10 @@ public class UserBenefitsServiceImpl implements UserBenefitsService {
 			if (user == null) break;
 			BigDecimal balance = user.getBalance();
 			Integer success = userMapper.addUserBalance(user.getId(), balance, addBalance);
-			if (success == 1) break;
+			if (success == 1) {
+				recordBalanceBySource(userId, addBalance, source);
+				break;
+			}
 		}
 	}
 
@@ -105,7 +108,7 @@ public class UserBenefitsServiceImpl implements UserBenefitsService {
 		UserBalanceSourceRecord userBalanceSourceRecord = new UserBalanceSourceRecord();
 		userBalanceSourceRecord.setUserId(userId);
 		userBalanceSourceRecord.setBalance(balance);
-		userBalanceSourceRecord.setSource(UserBalanceSourceRecord.Source.clear_valid);
+		userBalanceSourceRecord.setSource(source);
 		userBalanceSourceRecordMapper.insert(userBalanceSourceRecord);
 	}
 }