Prechádzať zdrojové kódy

普通cc推广积分卡,首单送重置次数

zoujiajian 1 rok pred
rodič
commit
e2f7275187

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/AuthRedirect.java

@@ -89,4 +89,9 @@ public class AuthRedirect {
      * 1.普通店铺(默认) 2.镜像店铺
      */
     private Integer cmt = 1;
+
+    /**
+     * 是否是cc普通推广
+     */
+    private Boolean cgtj;
 }

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/GzhBodyDto.java

@@ -102,4 +102,9 @@ public class GzhBodyDto {
 	 * 1.普通店铺(默认) 2.镜像店铺
 	 */
 	private Integer cmt = 1;
+
+	/**
+	 * 是否是cc普通推广
+	 */
+	private Boolean cgtj;
 }

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/request/LoginReq.java

@@ -74,4 +74,9 @@ public class LoginReq {
 	 * 店铺自定义id
 	 */
 	private String customId;
+
+	/**
+	 * 是否是cc普通推广
+	 */
+	private Boolean cgtj;
 }

+ 5 - 0
netflix-service/src/main/java/com/cyksj/service/claude/ClaudeCodeService.java

@@ -142,4 +142,9 @@ public interface ClaudeCodeService {
 	 * 发送积分卡
 	 */
 	void sendCreditCard(Long orderId, Long userId, Integer points, String cardNumber, String remark);
+
+	/**
+	 * 增加用户重置次数
+	 */
+	void addUserRestNum(Long orderId, Long userId, Integer num, String remark);
 }

+ 40 - 0
netflix-service/src/main/java/com/cyksj/service/claude/impl/ClaudeCodeServiceImpl.java

@@ -821,6 +821,7 @@ public class ClaudeCodeServiceImpl implements ClaudeCodeService {
 			creditCard.setStatus(1);
 			creditCard.setUsedUserId(userId);
 			creditCard.setUsedTime(new Date());
+			creditCard.setRemark("使用积分卡");
 			int cardUpdateResult = claudeCodeCreditCardMapper.update(creditCard,
 					Wrappers.lambdaUpdate(ClaudeCodeCreditCard.class)
 							.eq(ClaudeCodeCreditCard::getId, creditCard.getId())
@@ -950,4 +951,43 @@ public class ClaudeCodeServiceImpl implements ClaudeCodeService {
 		creditCard.setRemark(remark);
 		claudeCodeCreditCardMapper.insert(creditCard);
 	}
+
+	@Override
+	public void addUserRestNum(Long orderId, Long userId, Integer num, String remark) {
+		List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
+
+		// 获取用户Claude Code信息
+		ClaudeCodeUser claudeCodeUser = claudeCodeUserMapper.selectOne(
+				Wrappers.lambdaQuery(ClaudeCodeUser.class)
+						.in(ClaudeCodeUser::getUserId, userIdList)
+						.last("limit 1")
+		);
+		if (claudeCodeUser == null) {
+			log.info("claude code user不存在");
+			return;
+		}
+		Integer resetCount = claudeCodeUser.getResetCount();
+		claudeCodeUser.setResetCount(resetCount + num);
+		int update = 0;
+		while (update == 0) {
+			update = claudeCodeUserMapper.update(claudeCodeUser, Wrappers.lambdaUpdate(ClaudeCodeUser.class).eq(ClaudeCodeUser::getUserId, claudeCodeUser.getUserId()).eq(ClaudeCodeUser::getResetCount, resetCount));
+			if (update == 0) {
+				claudeCodeUser = claudeCodeUserMapper.selectOne(
+						Wrappers.lambdaQuery(ClaudeCodeUser.class)
+								.in(ClaudeCodeUser::getUserId, userIdList)
+								.last("limit 1")
+				);
+				if (claudeCodeUser == null) {
+					break;
+				}
+				resetCount = claudeCodeUser.getResetCount();
+				claudeCodeUser.setResetCount(resetCount + num);
+			}
+			//记录获取重置次数记录
+			ClaudeCodeUserResetRecord resetRecord = new ClaudeCodeUserResetRecord();
+			resetRecord.setUserId(userId);
+			resetRecord.setResetReason(remark);
+			claudeCodeUserResetRecordMapper.insert(resetRecord);
+		}
+	}
 }

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/distribute/DistributeService.java

@@ -22,7 +22,7 @@ public interface DistributeService {
 	 * userId: 被邀请人
 	 * dsPopularizeId: 后台自定义推广链接id
 	 */
-	void saveDistributionInvitation(Long sharedId, Long userId, Long dsPopularizeId);
+	void saveDistributionInvitation(Long sharedId, Long userId, Long dsPopularizeId, Boolean ccGeneralTg);
 
 	/**
 	 * 普通推广者绑定优惠推广码

+ 11 - 1
netflix-service/src/main/java/com/cyksj/service/distribute/impl/DistributeServiceImpl.java

@@ -24,6 +24,7 @@ import com.cyksj.mapper.shop.YhShopUserPlatDistributeRateMapper;
 import com.cyksj.model.entity.*;
 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.market.task.TaskService;
 import lombok.RequiredArgsConstructor;
@@ -86,6 +87,8 @@ public class DistributeServiceImpl implements DistributeService {
 
 	private final DistributeGeneralSkuRateMapper generalSkuRateMapper;
 
+	private final ClaudeCodeService claudeCodeService;
+
 	private final UserMapper userMapper;
 
 	@Override
@@ -317,7 +320,7 @@ public class DistributeServiceImpl implements DistributeService {
 	}
 
 	@Override
-	public void saveDistributionInvitation(Long sharedId, Long userId, Long dsPopularizeId) {
+	public void saveDistributionInvitation(Long sharedId, Long userId, Long dsPopularizeId, Boolean ccGeneralTg) {
 		if (sharedId == 0l || sharedId.equals(userId)) {
 			return;
 		}
@@ -330,8 +333,15 @@ public class DistributeServiceImpl implements DistributeService {
 		//存在分销
 		userDistributeShared.setUserId(userId);
 		userDistributeShared.setDsPopularizeId(dsPopularizeId);
+		if (ccGeneralTg != null) {
+			//打上普通cc推广标识
+			userDistributeShared.setRemark(Constant.CC_DISTRIBUTE_MARK);
+		}
 		try {
 			userDistributeSharedMapper.insert(userDistributeShared);
+			//若是cc普通推广 发送claude code积分卡
+			claudeCodeService.sendCreditCard(null, userDistributeShared.getSharedId(), 1000, Constant.CLAUDE_CODE_CARD_NUMBER + System.currentTimeMillis(), "新用户注册");
+
 			TaskType taskType = taskTypeMapper.selectOne(Wrappers.lambdaQuery(TaskType.class)
 					.eq(TaskType::getName, TaskTypeEnum.share.getDesc()).last("limit 1"));
 			taskService.completeTask(taskType, sharedId);

+ 6 - 2
netflix-service/src/main/java/com/cyksj/service/gzh/factory/EventMsgService.java

@@ -176,9 +176,12 @@ public class EventMsgService implements GzhMsgService {
 			userMapper.insert(user);
 			Long userId = user.getId();
 			Long dsPopularizeId = null;
+			Boolean cgTj = null;
 			if (gzhDto != null) {
 				Long sharedId = gzhDto.getSharedId();
 				String dsCode = gzhDto.getDsCode();
+				//是否是cc普通推广
+				cgTj = gzhDto.getCgtj();
 				if (StrUtil.isNotBlank(dsCode)) {
 					dsCode = dsCode.trim();
 					User sharedUser = userService.getOne(Wrappers.lambdaQuery(User.class)
@@ -197,7 +200,7 @@ public class EventMsgService implements GzhMsgService {
 					}
 				}
 				if (sharedId != null) {
-					distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId);
+					distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId, cgTj);
 				}
 				Long popularizeId = gzhDto.getPid();
 				if (popularizeId != null) {
@@ -248,6 +251,7 @@ public class EventMsgService implements GzhMsgService {
 			Integer dsType = gzhDto.getDsType();
 			String dsCode = gzhDto.getDsCode();
 			Long dsPopularizeId = null;
+			Boolean cgTj = gzhDto.getCgtj();
 			if (StrUtil.isNotBlank(dsCode)) {
 				UserSharedDto userSharedDto = getUserShredDtoByDsCode(dsCode);
 				sharedId = userSharedDto.getSharedId();
@@ -260,7 +264,7 @@ public class EventMsgService implements GzhMsgService {
 			//新用户推广
 			if (sharedId != null && isNewUser) {
 				if (dsType == null || dsType == 1) {
-					distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId);
+					distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId, cgTj);
 				}
 			}
 			//查找渠道是否有设置了对应的claude code优惠码

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

@@ -2076,7 +2076,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
 					if (userDistribute == null && Constant.CC_DISTRIBUTE_MARK.equals(userDistributeShared.getRemark())) {
 						//普通推广用户首单,给上级渠道发放 claude code 积分卡
 						try {
-							claudeCodeService.sendCreditCard(order.getId(), userDistributeShared.getSharedId(), 1000, Constant.CLAUDE_CODE_CARD_NUMBER + System.currentTimeMillis(), "邀请新用户首单奖励");
+							claudeCodeService.addUserRestNum(order.getId(), userDistributeShared.getSharedId(), 1, "新用户下单");
 							log.info("用户{}邀请新用户{}首单,发放claude code积分卡成功", userDistributeShared.getSharedId(), order.getUserId());
 						} catch (Exception e) {
 							log.error("给用户{}发放claude code积分卡失败:{}", userDistributeShared.getSharedId(), e.getMessage());

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

@@ -228,7 +228,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 		}
 		if (sharedId != null && isNewUser) {
 			if (dsType == null || dsType == 1) {
-				distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId);
+				distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId, re.getCgtj());
 			}
 		}
 		//店铺注册用户 关联
@@ -554,7 +554,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 			this.save(user);
 			//新用户分销
 			if (sharedId != null) {
-				distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId);
+				distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId, loginReq.getCgtj());
 			}
 			//店铺注册用户 关联
 			if (StrUtil.isNotBlank(customId)) {
@@ -862,7 +862,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
 		Long dsPopularizeId = userSharedDto.getDsPopularizeId();
 		//建立绑定关系
 		log.info("建立用户userId:{}与sharedId:{}绑定关系", userId, sharedId);
-		distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId);
+		distributeService.saveDistributionInvitation(sharedId, user.getId(), dsPopularizeId, null);
 	}
 
 	@Override

+ 3 - 2
netflix-web/src/main/java/com/cyksj/web/controller/user/AuthorizationController.java

@@ -345,13 +345,14 @@ public class AuthorizationController {
      * 网页扫描微信公众号二维码 临时凭证ticket  关注后登录
      */
     @GetMapping("/wx/gzh/login/qrCode")
-    public Result<WxGzhQrCodeTicketRep> getWxGzhQrCode(Long sharedId, Integer dsType, Long popularizeId, String dsCode, String callbackType, String callback, String customId, Integer cmt) throws Exception {
+    public Result<WxGzhQrCodeTicketRep> getWxGzhQrCode(Long sharedId, Integer dsType, Long popularizeId, String dsCode, String callbackType, String callback, String customId, Integer cmt, Boolean cgTj) throws Exception {
         //获取gzh带参数的二维码
         GzhBodyDto gzhBodyDto = new GzhBodyDto().setSharedId(sharedId).setDsType(dsType).setPid(popularizeId).setDsCode(dsCode)
                 .setCk(callback)
                 .setCt(callbackType)
                 .setCd(customId)
-                .setCmt(cmt);
+                .setCmt(cmt)
+                .setCgtj(cgTj);
         WxGzhQrCodeTicketRep result = weChatService.getWxGzhQrCode(gzhBodyDto);
         return GatewayResponse.SUCCESS.newBuilder().toResult(result);
     }