注册和登录增加推荐人id

This commit is contained in:
2025-08-20 00:08:28 +08:00
parent 9ea0daaf97
commit 2306d82087
8 changed files with 174 additions and 3 deletions

View File

@ -13,4 +13,7 @@ public class AlipayMiniProgramRegRequest {
@ApiModelProperty(value = "签名")
private String sign;
@ApiModelProperty(value = "推荐人userId")
private Long referralUserId;
}

View File

@ -8,13 +8,16 @@ import lombok.Data;
@Data
public class WxMiniProgramRegRequest {
@ApiModelProperty(value = "微信code")
String code;
private String code;
@ApiModelProperty(value = "微信手机号加密数据")
String phoneEncryptedData;
private String phoneEncryptedData;
@ApiModelProperty(value = "微信手机号加密数据iv")
String phoneIv;
private String phoneIv;
@ApiModelProperty(value = "推荐人userId")
private Long referralUserId;
// @ApiModelProperty(value = "微信用户加密数据")
// String userEncryptedData;

View File

@ -0,0 +1,16 @@
package com.sczx.user.mapper;
import com.sczx.user.po.BaseUserReferralPO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户引荐信息 Mapper 接口
* </p>
*
* @author zhangli
* @since 2025-08-19 23:47:42
*/
public interface BaseUserReferralMapper extends BaseMapper<BaseUserReferralPO> {
}

View File

@ -0,0 +1,66 @@
package com.sczx.user.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* <p>
* 用户引荐信息
* </p>
*
* @author zhangli
* @since 2025-08-19 23:47:42
*/
@Getter
@Setter
@TableName("zc_base_user_referral")
@ApiModel(value = "BaseUserReferralPO对象", description = "用户引荐信息")
public class BaseUserReferralPO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("id主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@ApiModelProperty("被引荐人id")
private Long userId;
@ApiModelProperty("被引荐人手机号")
private String userPhoneNumber;
@ApiModelProperty("引荐人id")
private Long referralUserId;
@ApiModelProperty("引荐人手机号")
private String referralUserPhoneNumber;
@ApiModelProperty("奖励截止日期")
private LocalDate awardDeadline;
@ApiModelProperty("奖励比例")
private BigDecimal awardRate;
@ApiModelProperty("引荐订单")
private String referralOrderNo;
@ApiModelProperty("删除标志0代表存在 2代表删除")
private String delFlag;
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@ApiModelProperty("更新时间")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,16 @@
package com.sczx.user.repository;
import com.sczx.user.po.BaseUserReferralPO;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 用户引荐信息 服务类
* </p>
*
* @author zhangli
* @since 2025-08-19 23:47:42
*/
public interface BaseUserReferralRepo extends IService<BaseUserReferralPO> {
}

View File

@ -0,0 +1,20 @@
package com.sczx.user.repository.impl;
import com.sczx.user.po.BaseUserReferralPO;
import com.sczx.user.mapper.BaseUserReferralMapper;
import com.sczx.user.repository.BaseUserReferralRepo;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户引荐信息 服务实现类
* </p>
*
* @author zhangli
* @since 2025-08-19 23:47:42
*/
@Service
public class BaseUserReferralRepoImpl extends ServiceImpl<BaseUserReferralMapper, BaseUserReferralPO> implements BaseUserReferralRepo {
}

View File

@ -9,6 +9,8 @@ import com.sczx.user.convert.UserInfoConvert;
import com.sczx.user.dto.*;
import com.sczx.user.exception.BizException;
import com.sczx.user.po.BaseUserPO;
import com.sczx.user.po.BaseUserReferralPO;
import com.sczx.user.repository.BaseUserReferralRepo;
import com.sczx.user.repository.BaseUserRepo;
import com.sczx.user.service.IUserService;
import com.sczx.user.thirdpart.dto.WechatDecryptedPhoneInfo;
@ -21,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.nio.charset.StandardCharsets;
import java.util.Objects;
@ -50,6 +53,9 @@ public class UserServiceImpl implements IUserService {
@Autowired
private AlipayInteg alipayInteg;
@Autowired
private BaseUserReferralRepo baseUserReferralRepo;
@Override
public String getWxOpenId(String code) {
@ -130,6 +136,7 @@ public class UserServiceImpl implements IUserService {
return getLoginResponse(openid,MiniProgramTypeEnum.WECHAT.getType());
}
@Transactional(rollbackFor=Exception.class)
@Override
public LoginResponse wxMiniProgramLoginOrReg(WxMiniProgramRegRequest wxMiniProgramRegRequest) {
try{
@ -175,6 +182,23 @@ public class UserServiceImpl implements IUserService {
baseUserPO.setNickName(phoneNumber);
baseUserPO.setRoleId(1);
baseUserRepo.saveOrUpdate(baseUserPO);
if(Objects.nonNull(wxMiniProgramRegRequest.getReferralUserId())){
LambdaQueryWrapper<BaseUserReferralPO> queryReferralWrapper = new LambdaQueryWrapper<>();
queryReferralWrapper.eq(BaseUserReferralPO::getUserId, baseUserPO.getId()).last( " limit 1");
BaseUserReferralPO baseUserReferralPO = baseUserReferralRepo.getOne(queryReferralWrapper);
if(Objects.isNull(baseUserReferralPO)){
baseUserReferralPO = new BaseUserReferralPO();
BaseUserPO referralUserPO = baseUserRepo.getById(wxMiniProgramRegRequest.getReferralUserId());
baseUserReferralPO.setUserId(baseUserPO.getId());
baseUserReferralPO.setUserPhoneNumber(phoneNumber);
baseUserReferralPO.setReferralUserId(wxMiniProgramRegRequest.getReferralUserId());
baseUserReferralPO.setReferralUserPhoneNumber(referralUserPO.getPhoneNumber());
//TODO-获取推荐奖励
//保存推荐信息
baseUserReferralRepo.save(baseUserReferralPO);
}
}
}else {
if(StringUtils.isBlank(baseUserPO.getWechatOpenid())){
baseUserPO.setWechatOpenid(openid);
@ -188,6 +212,7 @@ public class UserServiceImpl implements IUserService {
}
}
@Transactional(rollbackFor=Exception.class)
@Override
public LoginResponse alipayMiniProgramLoginOrReg(AlipayMiniProgramRegRequest alipayMiniProgramRegRequest) {
try {
@ -211,6 +236,23 @@ public class UserServiceImpl implements IUserService {
baseUserPO.setPassword(MD5Utils.md5Hex(phoneNumber, StandardCharsets.UTF_8.name()));
baseUserPO.setRoleId(1);
baseUserRepo.saveOrUpdate(baseUserPO);
if(Objects.nonNull(alipayMiniProgramRegRequest.getReferralUserId())){
LambdaQueryWrapper<BaseUserReferralPO> queryReferralWrapper = new LambdaQueryWrapper<>();
queryReferralWrapper.eq(BaseUserReferralPO::getUserId, baseUserPO.getId()).last( " limit 1");
BaseUserReferralPO baseUserReferralPO = baseUserReferralRepo.getOne(queryReferralWrapper);
if(Objects.isNull(baseUserReferralPO)){
baseUserReferralPO = new BaseUserReferralPO();
BaseUserPO referralUserPO = baseUserRepo.getById(alipayMiniProgramRegRequest.getReferralUserId());
baseUserReferralPO.setUserId(baseUserPO.getId());
baseUserReferralPO.setUserPhoneNumber(phoneNumber);
baseUserReferralPO.setReferralUserId(alipayMiniProgramRegRequest.getReferralUserId());
baseUserReferralPO.setReferralUserPhoneNumber(referralUserPO.getPhoneNumber());
//TODO-获取推荐奖励
//保存推荐信息
baseUserReferralRepo.save(baseUserReferralPO);
}
}
}
// 5. 返回登录信息
return getLoginResponse(baseUserPO,MiniProgramTypeEnum.ALIPAY);

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sczx.user.mapper.BaseUserReferralMapper">
</mapper>