Просмотр исходного кода

fix 清除车票余额退款记录

zoujiajian 3 лет назад
Родитель
Сommit
0a22ee2044

+ 6 - 3
netflix-service/src/main/java/com/cyksj/service/mange/CmsOrderDonService.java

@@ -1,9 +1,7 @@
 package com.cyksj.service.mange;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.cyksj.model.entity.OrderDon;
-import com.cyksj.model.entity.OrderDonTransport;
-import com.cyksj.model.entity.OrderDonWaybill;
+import com.cyksj.model.entity.*;
 import com.cyksj.model.excel.ExcelOrderDonInfo;
 import com.cyksj.model.manage.request.ReqSetLogisticsPost;
 import com.cyksj.model.request.ChangeRelationReq;
@@ -44,4 +42,9 @@ public interface CmsOrderDonService extends IService<OrderDon> {
 	 * 更换车票
 	 */
 	void changeRelation(ChangeRelationReq req);
+
+	/**
+	 * 退款记录
+	 */
+	void refundRecord(OrderDon orderDon, GoodsDon goodsDon, GoodsDonSku sku, String outRefundNo, String refundType);
 }

+ 2 - 1
netflix-service/src/main/java/com/cyksj/service/mange/impl/CmsOrderDonServiceImpl.java

@@ -617,7 +617,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
     /**
      * 记录退款信息
      */
-    private void refundRecord(OrderDon orderDon, GoodsDon goodsDon, GoodsDonSku sku, String outRefundNo, String refundType) {
+    @Override
+    public void refundRecord(OrderDon orderDon, GoodsDon goodsDon, GoodsDonSku sku, String outRefundNo, String refundType) {
         RefundOrderDon refund = new RefundOrderDon();
         refund.setOrderId(orderDon.getId());
         refund.setOutRefundNo(outRefundNo);

+ 20 - 0
netflix-service/src/main/java/com/cyksj/service/scheduler/impl/SchedulerServiceImpl.java

@@ -3,6 +3,7 @@ package com.cyksj.service.scheduler.impl;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.common.constant.Constant;
 import com.cyksj.common.util.StringUtil;
@@ -29,6 +30,8 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 /*
  *项目名: netflix
@@ -63,6 +66,8 @@ public class SchedulerServiceImpl implements SchedulerService {
 
 	private final UserRelationChangeErrorRecordMapper userRelationChangeErrorRecordMapper;
 
+	private final GoodsDonMapper goodsDonMapper;
+
 	private final RedisService redisService;
 
 	@Override
@@ -117,6 +122,8 @@ public class SchedulerServiceImpl implements SchedulerService {
 	 */
 	public void reAssign(Long g_groupsId, DateTime now, List<GroupsRelationView> groupsRelations) {
 		log.info("迁移groupsId:{}未过期用户数量:{}", g_groupsId, groupsRelations.size());
+		Map<Long, GoodsDon> goodsMap = new ConcurrentHashMap<>();
+		Map<Long, GoodsDonSku> skuMap = new ConcurrentHashMap<>();
 		groupsRelations.forEach(relationView -> {
 			Long change_relationId = relationView.getId();
 			Long userId = relationView.getUserId();
@@ -193,6 +200,19 @@ public class SchedulerServiceImpl implements SchedulerService {
 						orderDon.setRefundBalance(re_balance);
 						orderDon.setRefundMoney(BigDecimal.ZERO);
 						orderDonMapper.updateById(orderDon);
+						GoodsDon goodsDon = goodsMap.get(relationView.getGoodsId());
+						if (goodsDon == null) {
+							goodsDon = goodsDonMapper.selectById(relationView.getGoodsId());
+							if (goodsDon == null) return;
+							goodsMap.putIfAbsent(relationView.getGoodsId(), goodsDon);
+						}
+						GoodsDonSku sku = skuMap.get(orderDon.getSkuId());
+						if (sku == null) {
+							sku = skuMapper.selectById(orderDon.getSkuId());
+							if (sku == null) return;
+							skuMap.putIfAbsent(orderDon.getSkuId(), sku);
+						}
+						cmsOrderDonService.refundRecord(orderDon, goodsDon, sku, StrUtil.EMPTY, "balance");
 						return;
 					}
 					changeTickerRelation(item_groupsId, relationView, UserTicketClearedRecord.Source.timing_change_ticket);