用户邀请码

邀请注册送湖分
This commit is contained in:
wuchunlei
2024-11-08 16:48:21 +08:00
parent a77ec18e38
commit c41fda16d8
12 changed files with 330 additions and 6 deletions

View File

@@ -8,14 +8,17 @@ import com.peanut.common.utils.R;
import com.peanut.common.utils.ShiroUtils;
import com.peanut.modules.common.entity.ClassUser;
import com.peanut.modules.common.entity.MyUserEntity;
import com.peanut.modules.common.entity.UserInviteRegister;
import com.peanut.modules.common.entity.UserVip;
import com.peanut.modules.common.service.ClassEntityService;
import com.peanut.modules.common.service.MyUserService;
import com.peanut.modules.common.service.UserInviteRegisterService;
import com.peanut.modules.common.service.UserVipService;
import com.peanut.modules.sys.service.SysUserTokenService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -42,6 +45,8 @@ public class UserController {
private SysUserTokenService sysUserTokenService;
@Autowired
private UserVipService userVipService;
@Autowired
private UserInviteRegisterService inviteRegisterService;
/**
* 常规注册 发短信验证码
@@ -197,7 +202,8 @@ public class UserController {
* 验证码注册或登录
*/
@RequestMapping("/registerOrLogin")
public R register(String tel, String code) {
@Transactional
public R register(String tel, String code,String inviteCode) {
String redisCode = redisTemplate.opsForValue().get("RegistCode" + tel);
System.out.println(redisCode);
if (StringUtils.isEmpty(redisCode)){
@@ -207,6 +213,15 @@ public class UserController {
if (!lcode.equals(code)) {
return R.error(500,"验证码不符!");
}
//校验邀请码
MyUserEntity inviteUser = null;
if (!StringUtils.isEmpty(inviteCode)) {
inviteUser = userService.getOne(new LambdaQueryWrapper<MyUserEntity>()
.eq(MyUserEntity::getInviteCode, inviteCode));
if (inviteUser == null) {
return R.error("邀请码有误");
}
}
//查询是否存在当前用户
LambdaQueryWrapper<MyUserEntity> wrapper = new LambdaQueryWrapper();
if (tel.contains("@")){
@@ -224,6 +239,16 @@ public class UserController {
myUserEntity.setTel(tel);
}
userService.save(myUserEntity);
//添加邀请记录
if (!StringUtils.isEmpty(inviteCode)){
myUserEntity.setInviteCode(inviteCode);
userService.updateById(myUserEntity);
UserInviteRegister inviteRegister = new UserInviteRegister();
inviteRegister.setUserId(inviteUser.getId());
inviteRegister.setInvitedUserId(myUserEntity.getId());
inviteRegisterService.save(inviteRegister);
inviteRegisterService.checkInviteRegisterCount(inviteUser.getId());
}
R r = sysUserTokenService.createToken(myUserEntity.getId());
return R.ok("注册成功").put("userInfo",myUserEntity).put("token",r);
}else {

View File

@@ -0,0 +1,98 @@
package com.peanut.modules.common.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.peanut.common.utils.R;
import com.peanut.common.utils.ShiroUtils;
import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.service.MyUserService;
import com.peanut.modules.common.service.UserInviteCourseService;
import com.peanut.modules.common.service.UserInviteRegisterService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
* 用户邀请管理
*/
@Slf4j
@RestController("commonUserInvite")
@RequestMapping("common/userInvite")
public class UserInviteController {
@Autowired
private UserInviteRegisterService inviteRegisterService;
@Autowired
private UserInviteCourseService inviteCourseService;
@Autowired
private MyUserService myUserService;
//获取邀请注册记录列表
@RequestMapping("/getInviteRegisterList")
public R getInviteRegisterList(@RequestBody Map<String,Object> params) {
MPJLambdaWrapper<UserInviteRegister> wrapper = new MPJLambdaWrapper();
wrapper.leftJoin(MyUserEntity.class,MyUserEntity::getId,UserInviteRegister::getUserId);
wrapper.leftJoin(MyUserEntity.class,MyUserEntity::getId,UserInviteRegister::getInvitedUserId);
wrapper.select("t.create_time");
wrapper.select("t1.name,t1.nickname,t1.tel,t1.email");
wrapper.select("t2.name invitedName,t2.nickname invitedNickname,t2.tel invitedTel,t2.email invitedEmail");
wrapper.orderByDesc(UserInviteRegister::getId);
if (StringUtils.isNotBlank(params.get("userInfo").toString())){
wrapper.and(t->t.like(MyUserEntity::getName,params.get("userInfo")).or().like(MyUserEntity::getNickname,params.get("userInfo"))
.or().like(MyUserEntity::getTel,params.get("userInfo")).or().like(MyUserEntity::getEmail,params.get("userInfo")));
}
if (StringUtils.isNotBlank(params.get("invitedUserInfo").toString())){
wrapper.and(t->t.like(MyUserEntity::getName,params.get("invitedUserInfo")).or().like(MyUserEntity::getNickname,params.get("invitedUserInfo"))
.or().like(MyUserEntity::getTel,params.get("invitedUserInfo")).or().like(MyUserEntity::getEmail,params.get("invitedUserInfo")));
}
Page<Map<String,Object>> page = inviteRegisterService.pageMaps(new Page<>((int)params.get("page"), (int)params.get("limit")), wrapper);
return R.ok().put("result", page);
}
//获取邀请购买课程记录列表
@RequestMapping("/getInviteCourseList")
public R getInviteCourseList(@RequestBody Map<String,Object> params) {
MPJLambdaWrapper<UserInviteCourse> wrapper = new MPJLambdaWrapper();
wrapper.leftJoin(MyUserEntity.class,MyUserEntity::getId,UserInviteCourse::getUserId);
wrapper.leftJoin(MyUserEntity.class,MyUserEntity::getId,UserInviteCourse::getInvitedUserId);
wrapper.leftJoin(BuyOrder.class,BuyOrder::getOrderId,UserInviteCourse::getOrderId);
wrapper.leftJoin(CourseEntity.class,CourseEntity::getId,UserInviteCourse::getCourseId);
wrapper.leftJoin(CourseCatalogueEntity.class,CourseCatalogueEntity::getId,UserInviteCourse::getCatalogueId);
wrapper.select("t.create_time");
wrapper.select("t1.name,t1.nickname,t1.tel,t1.email");
wrapper.select("t2.name invitedName,t2.nickname invitedNickname,t2.tel invitedTel,t2.email invitedEmail");
wrapper.select("t3.order_sn,t4.title,t5.title catalogueTitle");
wrapper.orderByDesc(UserInviteCourse::getId);
if (StringUtils.isNotBlank(params.get("userInfo").toString())){
wrapper.and(t->t.like(MyUserEntity::getName,params.get("userInfo")).or().like(MyUserEntity::getNickname,params.get("userInfo"))
.or().like(MyUserEntity::getTel,params.get("userInfo")).or().like(MyUserEntity::getEmail,params.get("userInfo")));
}
if (StringUtils.isNotBlank(params.get("invitedUserInfo").toString())){
wrapper.and(t->t.like(MyUserEntity::getName,params.get("invitedUserInfo")).or().like(MyUserEntity::getNickname,params.get("invitedUserInfo"))
.or().like(MyUserEntity::getTel,params.get("invitedUserInfo")).or().like(MyUserEntity::getEmail,params.get("invitedUserInfo")));
}
if (StringUtils.isNotBlank(params.get("courseName").toString())){
wrapper.like(CourseEntity::getTitle,params.get("courseName"));
}
Page<Map<String,Object>> page = inviteCourseService.pageMaps(new Page<>((int)params.get("page"), (int)params.get("limit")), wrapper);
return R.ok().put("result", page);
}
//生成邀请码
@RequestMapping("/generateInviteCode")
public R generateInviteCode() {
MyUserEntity userEntity = myUserService.getById(ShiroUtils.getUId());
String code = inviteRegisterService.generateInviteCode();
userEntity.setInviteCode(code);
myUserService.updateById(userEntity);
return R.ok();
}
}