zoujiajian 11 months ago
parent
commit
4a403d648a

+ 0 - 9
netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/UserDistributeSharedMapper.java

@@ -3,12 +3,8 @@ package com.cyksj.mapper.manage.distribute;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.dto.UserDistributeDto;
 import com.cyksj.model.entity.UserDistributeShared;
-import com.cyksj.model.views.CcPromotionInvitationDetailView;
-import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
-import java.util.List;
-
 /*
  *项目名: netflix
  *文件名: UserDistributeSharedMapper
@@ -20,9 +16,4 @@ public interface UserDistributeSharedMapper extends BaseMapper<UserDistributeSha
 			" from (select user_id,business_id from user_distribute) ud inner join user_distribute_shared us on us.shared_id = ud.user_id and us.user_id = #{userId}" +
 			" inner join user u on u.id = ud.user_id")
 	UserDistributeDto selectUserDistributeDtoByUserId(Long userId);
-
-	/**
-	 * 获取CC普通推广邀请明细
-	 */
-	List<CcPromotionInvitationDetailView> getCcPromotionInvitationDetails(@Param("sharedId") Long sharedId);
 }

+ 70 - 34
netflix-dao/src/main/java/com/cyksj/model/views/CcPromotionInvitationDetailView.java

@@ -1,8 +1,14 @@
 package com.cyksj.model.views;
 
+import com.cyksj.model.entity.DistributeWaitingSendPoints;
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.DbIgnore;
+import com.ejlchina.searcher.bean.SearchBean;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -10,39 +16,69 @@ import java.util.Date;
  */
 @Getter
 @Setter
+@SearchBean(tables = " user_distribute_shared uds INNER JOIN user u ON u.id = uds.user_id" +
+		" LEFT JOIN distribute_waiting_send_points dwsp ON dwsp.user_id = uds.user_id",
+		where = "uds.remark = 'cc'")
 public class CcPromotionInvitationDetailView {
-    /**
-     * 被邀请用户ID
-     */
-    private Long userId;
-    
-    /**
-     * 用户昵称
-     */
-    private String nickname;
-    
-    /**
-     * 用户头像
-     */
-    private String avatar;
-    
-    /**
-     * 首单订单ID
-     */
-    private Long firstOrderId;
-    
-    /**
-     * 是否有首单
-     */
-    private Boolean hasFirstOrder;
-    
-    /**
-     * 邀请时间
-     */
-    private Date inviteTime;
-    
-    /**
-     * 邀请方式备注
-     */
-    private String remark;
+	/**
+	 * 分销用户id
+	 */
+	@DbField("uds.shared_id")
+	@JsonIgnore
+	private Long sharedId;
+
+	/**
+	 * 被邀请用户ID
+	 */
+	@DbField("uds.user_id")
+	@JsonIgnore
+	private Long userId;
+
+	/**
+	 * 用户昵称
+	 */
+	@DbField("u.nickname")
+	private String nickname;
+
+	/**
+	 * 用户头像
+	 */
+	@DbField("u.headimgurl")
+	private String headimgurl;
+
+	/**
+	 * 提成状态
+	 */
+	@DbField("dw.status")
+	private DistributeWaitingSendPoints.Status status;
+
+	/**
+	 * 首单订单ID
+	 */
+	@DbField("dwsp.order_id")
+	private Long firstOrderId;
+
+	/**
+	 * 规格
+	 */
+	@DbIgnore
+	private String specVal;
+
+	/**
+	 * 订单金额
+	 */
+	@DbIgnore
+	private BigDecimal orderMoney;
+
+	/**
+	 * 返现提成
+	 */
+	@DbField("TRUNCATE(dwsp.points/1000,2)")
+	private BigDecimal reMoney = BigDecimal.ZERO;
+
+	/**
+	 * 邀请时间
+	 */
+	@DbField("dwsp.update_time")
+	private Date updateTime;
 }

+ 49 - 0
netflix-dao/src/main/java/com/cyksj/model/views/DistributeWaitingPointsOrderDetailView.java

@@ -0,0 +1,49 @@
+package com.cyksj.model.views;
+
+import com.cyksj.model.entity.DistributeWaitingSendPoints;
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: DistributeWaitingPointsOrderDetailView
+ * 创建者: JavaZou
+ * 创建时间:2025/8/27 11:20
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select * from distribute_waiting_send_points where user_id = :uid:) dw" +
+		" inner join order_don o on o.id = dw.order_id" +
+		" left join goods_don_sku sku on sku.id = o.sku_id")
+public class DistributeWaitingPointsOrderDetailView {
+
+	@DbField("dw.user_id")
+	@JsonIgnore
+	private Long userId;
+
+	/**
+	 * 首单订单ID
+	 */
+	@DbField("dwsp.order_id")
+	private Long orderId;
+
+	/**
+	 * 规格
+	 */
+	@DbField("sku.spec_val")
+	private String specVal;
+
+	/**
+	 * 订单金额
+	 */
+	@DbField("o.order_money")
+	private BigDecimal orderMoney;
+
+	@DbField("dw.status")
+	private DistributeWaitingSendPoints.Status status;
+}

+ 0 - 17
netflix-dao/src/main/resources/mapper/UserDistributeSharedMapper.xml

@@ -2,21 +2,4 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.cyksj.mapper.manage.distribute.UserDistributeSharedMapper">
 
-    <select id="getCcPromotionInvitationDetails" resultType="com.cyksj.model.views.CcPromotionInvitationDetailView">
-        SELECT 
-            uds.user_id as userId,
-            u.nickname,
-            u.avatar,
-            uds.created_time as inviteTime,
-            uds.remark,
-            dwsp.order_id as firstOrderId,
-            CASE WHEN dwsp.order_id IS NOT NULL THEN TRUE ELSE FALSE END as hasFirstOrder
-        FROM user_distribute_shared uds
-        INNER JOIN user u ON u.id = uds.user_id
-        LEFT JOIN distribute_waiting_send_points dwsp ON dwsp.user_id = uds.user_id
-        WHERE uds.shared_id = #{sharedId}
-          AND uds.remark = 'cc'
-        ORDER BY uds.created_time DESC
-    </select>
-
 </mapper>

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

@@ -2073,7 +2073,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 						userBusinessFrontService.taskDistributeRateBenefits(userDistributeShared.getSharedId(), businessId, goodsDon.getType(), order, rate);
 					}
 					//是否是cc普通推广
-					if (userDistribute == null && Constant.CC_DISTRIBUTE_MARK.equals(userDistributeShared.getRemark())) {
+					//并且购买claude code作为首单
+					if (userDistribute == null && Constant.CC_DISTRIBUTE_MARK.equals(userDistributeShared.getRemark()) && order.getGoodsId() == Constant.CLAUDE_CODE_GOODS_ID) {
 						//普通推广用户首单,给上级渠道发放 claude code 积分卡
 						try {
 							claudeCodeService.addUserRestNum(order.getId(), userDistributeShared.getSharedId(), 1, "新用户下单");

+ 21 - 0
netflix-web/src/main/java/com/cyksj/web/controller/claude/ClaudeCodeController.java

@@ -596,4 +596,25 @@ public class ClaudeCodeController {
 		ClaudeCodeRewardDetailsResp result = claudeCodeService.getUserRewardDetails(userId);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(result);
 	}
+
+	/**
+	 * CC普通推广邀请明细
+	 */
+	@GetMapping("/get/cc/promotion/invitation/details")
+	public Result<SearchResult<CcPromotionInvitationDetailView>> getCcPromotionInvitationDetails() {
+		long userId = StpUserUtil.getLoginIdAsLong();
+		SearchResult<CcPromotionInvitationDetailView> search = beanSearcher.search(CcPromotionInvitationDetailView.class, MapUtils.flatBuilder(request.getParameterMap()).field(CcPromotionInvitationDetailView::getSharedId, userId).build());
+		search.getDataList().forEach(data -> {
+			DistributeWaitingPointsOrderDetailView detailView = beanSearcher.searchFirst(DistributeWaitingPointsOrderDetailView.class, MapUtils.builder().put("uid", userId).field(DistributeWaitingPointsOrderDetailView::getStatus, DistributeWaitingSendPoints.Status.close.name()).op(Operator.NotEqual).build());
+			if (detailView == null) {
+				detailView = beanSearcher.searchFirst(DistributeWaitingPointsOrderDetailView.class, MapUtils.builder().put("uid", userId).field(DistributeWaitingPointsOrderDetailView::getStatus, DistributeWaitingSendPoints.Status.close.name()).build());
+			}
+			if (detailView != null) {
+				data.setFirstOrderId(detailView.getOrderId());
+				data.setOrderMoney(detailView.getOrderMoney());
+				data.setSpecVal(detailView.getSpecVal());
+			}
+		});
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
 }

+ 3 - 11
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.UserDistributeReturnMoneyDetailService;
 import com.cyksj.service.mange.business.UserBusinessRateService;
 import com.cyksj.service.mange.statistics.StatisticsDataService;
 import com.cyksj.service.sys.SysConfigService;
@@ -125,7 +126,7 @@ public class DistributeController {
 
 	private final UserDistributeSubMapper userDistributeSubMapper;
 
-	private final UserDistributeSharedMapper userDistributeSharedMapper;
+	private final UserDistributeReturnMoneyDetailService userDistributeReturnMoneyDetailService;
 	/**
 	 * 添加固定推广者
 	 */
@@ -521,7 +522,7 @@ public class DistributeController {
 			userBenefitsService.addDistributePoints(userId, distributeMoneyApply.getPoints());
 			log.info("归还积分:{}至用户{}结束", distributeMoneyApply.getPoints(), userId);
 			//记录返现明细
-//			userDistributeReturnMoneyDetailService.recordDistributeReturnMoney(distributeMoneyApply.getUserId(), distributeMoneyApply.getMoney(), "提现失败");
+			userDistributeReturnMoneyDetailService.recordDistributeReturnMoney(distributeMoneyApply.getUserId(), distributeMoneyApply.getMoney(), "提现失败");
 		}
 		if (DistributeMoneyApply.Status.success.name().equals(distributeApplyMoneyReq.getVerifyStatus())) {
 //			if (StrUtil.isBlank(distributeApplyMoneyReq.getImg())) {
@@ -1358,13 +1359,4 @@ public class DistributeController {
 		});
 		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
 	}
-
-	/**
-	 * CC普通推广邀请明细
-	 */
-	@GetMapping("/get/cc/promotion/invitation/details/{sharedId}")
-	public Result<List<CcPromotionInvitationDetailView>> getCcPromotionInvitationDetails(@PathVariable Long sharedId) {
-		List<CcPromotionInvitationDetailView> details = userDistributeSharedMapper.getCcPromotionInvitationDetails(sharedId);
-		return GatewayResponse.SUCCESS.newBuilder().toResult(details);
-	}
 }