浏览代码

实物分销客服转账记录

zoujiajian 2 年之前
父节点
当前提交
58b972e352

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

@@ -0,0 +1,13 @@
+package com.cyksj.mapper.manage.distribute.equipment;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.EquipmentUserOrderVerifyRecord;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: EquipmentUserOrderVerifyRecordMapper
+ * 创建者: JavaZou
+ * 创建时间:2024/5/14 11:41
+ */
+public interface EquipmentUserOrderVerifyRecordMapper extends BaseMapper<EquipmentUserOrderVerifyRecord> {
+}

+ 29 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/EquipmentUserOrderVerifyRecord.java

@@ -0,0 +1,29 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: EquipmentUserOrderVerifyRecord
+ * 创建者: JavaZou
+ * 创建时间:2024/5/14 11:39
+ */
+@Getter
+@Setter
+public class EquipmentUserOrderVerifyRecord extends BaseEntity{
+	private Long sharedId;
+
+	private Long userId;
+
+	private Long orderId;
+
+	private BigDecimal money;
+
+	/**
+	 * 打款截图
+	 */
+	private String img;
+}

+ 4 - 0
netflix-dao/src/main/java/com/cyksj/model/views/EquipmentUserDistributeDetailView.java

@@ -1,6 +1,7 @@
 package com.cyksj.model.views;
 
 import com.cyksj.model.entity.EquipmentUserChanceRecord;
+import com.cyksj.model.entity.EquipmentUserOrderVerifyRecord;
 import com.ejlchina.searcher.bean.DbField;
 import com.ejlchina.searcher.bean.DbIgnore;
 import com.ejlchina.searcher.bean.SearchBean;
@@ -64,4 +65,7 @@ public class EquipmentUserDistributeDetailView {
 
 	@DbField("od.pay_time")
 	private Date payTime;
+
+	@DbIgnore
+	private EquipmentUserOrderVerifyRecord verifyRecord;
 }

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

@@ -740,11 +740,11 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
 
             try {
                 marketFrontService.subSpecificChanceNum(orderDon.getUserId(), orderDon.getId(), orderDon.getGoodsId(), orderDon.getUpdateTime());
-                if (goodsDon.getType() == 2) {
-                    equipmentDistributeService.subDistributeBenefitsChance(orderDon.getUserId(), orderDon.getId());
-                    //扣除用户自身实物权益
-                    userRealOrderBenefitsService.deductUserRealGoodsBenefits(orderDon.getId());
-                }
+//                if (goodsDon.getType() == 2) {
+//                    equipmentDistributeService.subDistributeBenefitsChance(orderDon.getUserId(), orderDon.getId());
+//                    //扣除用户自身实物权益
+//                    userRealOrderBenefitsService.deductUserRealGoodsBenefits(orderDon.getId());
+//                }
             } catch (Exception e) {
                 log.error("wx减少抽奖机会错误,orderId:{},error:{}", orderDon.getId(), e);
             }

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

@@ -2337,9 +2337,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 				}
 				//配置了特定奖池,增加抽奖机会
 				marketFrontService.addSpecificChanceNum(orderDon.getUserId(), orderDon.getId(), orderDon.getGoodsId(), orderDon.getSkuId());
-				if (goodsDon.getType() == 2) {
-					equipmentDistributeService.addDistributeBenefitsChance(orderDon.getUserId(), orderDon.getId());
-				}
+//				if (goodsDon.getType() == 2) {
+//					equipmentDistributeService.addDistributeBenefitsChance(orderDon.getUserId(), orderDon.getId());
+//				}
 				//若该订单使用了规定推广者的兑换码 增加上下级关系
 				if (StrUtil.isNotBlank(orderDon.getCouponExCode())) {
 					addDistributeCouponCode(orderDon.getUserId(), orderDon.getCouponExCode());

+ 11 - 0
netflix-web/src/main/java/com/cyksj/web/controller/distribute/EquipmentDistributeController.java

@@ -10,6 +10,7 @@ import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.Result;
+import com.cyksj.dto.UserSharedDto;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.OrderDonMapper;
 import com.cyksj.mapper.UserMapper;
@@ -27,6 +28,7 @@ import com.cyksj.redis.RedisService;
 import com.cyksj.service.distribute.equipment.EquipmentDistributeFrontService;
 import com.cyksj.service.distribute.equipment.EquipmentDistributeService;
 import com.cyksj.service.sys.SysConfigService;
+import com.cyksj.service.user.UserService;
 import com.cyksj.web.util.StpUserUtil;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
@@ -70,6 +72,8 @@ public class EquipmentDistributeController {
 
 	private final OrderDonMapper orderDonMapper;
 
+	private final UserService userService;
+
 	private final EquipmentDistributeService equipDistributeService;
 
 	private final EquipmentUserDistributeInviteRecordMapper inviteRecordMapper;
@@ -216,7 +220,14 @@ public class EquipmentDistributeController {
 				.between(User::getCreatedTime, DateUtil.beginOfDay(now), DateUtil.endOfDay(now)).last("limit 1"));
 		Boolean isNewUser = user != null ? true : false;
 		Long sharedId = req.getSharedId();
+		String dsCode = req.getDsCode();
 		Integer dsType = req.getDsType();
+		if (StrUtil.isNotBlank(dsCode)) {
+			UserSharedDto userSharedDto = userService.getUserShredDtoByDsCode(dsCode);
+			if (userSharedDto != null) {
+				sharedId = userSharedDto.getSharedId();
+			}
+		}
 		//新旧用户都可实物分销
 		if (sharedId != null && dsType != null && dsType == 2) {
 			equipDistributeService.saveDistributionInvitation(sharedId, isNewUser, userId);

+ 49 - 4
netflix-web/src/main/java/com/cyksj/web/controller/manage/distribute/EquipmentController.java

@@ -1,12 +1,16 @@
 package com.cyksj.web.controller.manage.distribute;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.GoodsDonSkuMapper;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.manage.coupon.CouponMapper;
+import com.cyksj.mapper.manage.distribute.equipment.EquipmentUserOrderVerifyRecordMapper;
 import com.cyksj.mapper.manage.distribute.equipment.EquipmentUserPayRecordMapper;
+import com.cyksj.model.entity.EquipmentUserOrderVerifyRecord;
 import com.cyksj.model.entity.EquipmentUserPayRecord;
 import com.cyksj.model.entity.GoodsDonSku;
 import com.cyksj.model.entity.User;
@@ -17,12 +21,11 @@ import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.util.Optional;
 
 /*
@@ -47,6 +50,8 @@ public class EquipmentController {
 
 	private final GoodsDonSkuMapper goodsDonSkuMapper;
 
+	private final EquipmentUserOrderVerifyRecordMapper equipmentUserOrderVerifyRecordMapper;
+
 	/**
 	 * 实物分销列表
 	 */
@@ -77,7 +82,47 @@ public class EquipmentController {
 			data.setCouponName(couponName);
 			GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(data.getSkuId());
 			Optional.ofNullable(goodsDonSku).ifPresent(sku -> data.setSpecVal(sku.getSpecVal()));
+			EquipmentUserOrderVerifyRecord equipmentUserOrderVerifyRecord = equipmentUserOrderVerifyRecordMapper.selectOne(Wrappers.lambdaQuery(EquipmentUserOrderVerifyRecord.class)
+					.eq(EquipmentUserOrderVerifyRecord::getOrderId, data.getOrderId())
+					.last("limit 1"));
+			data.setVerifyRecord(equipmentUserOrderVerifyRecord);
 		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
+
+	/**
+	 * 发送奖励记录
+	 */
+	@PutMapping("/verify/reward/record")
+	public Result<SearchResult> verifyRewardRecord(@RequestBody EquipmentUserOrderVerifyRecord verifyRecord) {
+		Long orderId = verifyRecord.getOrderId();
+		EquipmentUserPayRecord equipmentUserPayRecord = payRecordMapper.selectOne(Wrappers.lambdaQuery(EquipmentUserPayRecord.class).eq(EquipmentUserPayRecord::getOrderId, orderId).last("limit 1"));
+		if (equipmentUserPayRecord == null) {
+			throw BusinessRuntimeException.getInstance("实物分销订单不存在");
+		}
+		if (equipmentUserPayRecord.getStatus() == EquipmentUserPayRecord.Status.refund) {
+			throw BusinessRuntimeException.getInstance("实物分销订单已退款");
+		}
+		BigDecimal money = verifyRecord.getMoney();
+		String img = verifyRecord.getImg();
+		if (StrUtil.isNotBlank(img)) {
+			throw BusinessRuntimeException.getInstance("转账截图不为空");
+		}
+		if (money == null) {
+			throw BusinessRuntimeException.getInstance("转账金额不为空");
+		}
+		if (verifyRecord.getId() == null) {
+			verifyRecord.setSharedId(equipmentUserPayRecord.getShareId());
+			verifyRecord.setUserId(equipmentUserPayRecord.getUserId());
+			try {
+				equipmentUserOrderVerifyRecordMapper.insert(verifyRecord);
+			} catch (DuplicateKeyException e) {
+				throw BusinessRuntimeException.getInstance("其他客服已转账..");
+			}
+		} else {
+			equipmentUserOrderVerifyRecordMapper.updateById(verifyRecord);
+		}
+		return GatewayResponse.SUCCESS.newBuilder().toResult();
+	}
+
 }