浏览代码

生成邀请码、使用邀请码、判断当前用户是否使用了邀请码接口

private_deployment
lrh 1年前
父节点
当前提交
49b4872e37
共有 9 个文件被更改,包括 201 次插入5 次删除
  1. +32
    -0
      suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
  2. +3
    -2
      suimangService/src/main/java/com/iformall/domain/po/sm/InviteCode.java
  3. +11
    -0
      suimangService/src/main/java/com/iformall/mapper/InviteCodeInfoMapper.java
  4. +14
    -0
      suimangService/src/main/java/com/iformall/mapper/InviteCodeMapper.java
  5. +6
    -0
      suimangService/src/main/java/com/iformall/service/sm/InviteCodeInfoService.java
  6. +6
    -3
      suimangService/src/main/java/com/iformall/service/sm/InviteCodeService.java
  7. +71
    -0
      suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeInfoServiceImpl.java
  8. +42
    -0
      suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeServiceImpl.java
  9. +16
    -0
      suimangService/src/main/java/com/iformall/utils/sign/AppUtils.java

+ 32
- 0
suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java 查看文件

@@ -9,6 +9,8 @@ import com.iformall.domain.po.*;
import com.iformall.enums.*;
import com.iformall.service.*;
import com.iformall.service.cuser.CUserServiceFactory;
import com.iformall.service.sm.InviteCodeInfoService;
import com.iformall.service.sm.InviteCodeService;
import com.iformall.service.sm.UserCreateVideoNumService;
import com.iformall.utils.Constant;
import com.iformall.utils.PasswordHelper;
@@ -85,6 +87,12 @@ public class WxUserGrantController extends BaseController {
@Autowired
private UserCreateVideoNumService userCreateVideoNumService;

@Autowired
private InviteCodeService inviteCodeService;

@Autowired
private InviteCodeInfoService inviteCodeInfoService;

@AuthIgnore
@ApiOperation("验证码")
@GetMapping("/captcha.jpg")
@@ -651,4 +659,28 @@ public class WxUserGrantController extends BaseController {
return new ResultData();
}

@ApiOperation("生成邀请码")
@GetMapping("/inviteCode")
public ResultData inviteCode() {
logger.debug("[" + getIpAddr() + "] WxUserGrantController::inviteCode");
String code = inviteCodeService.inviteCode(getMemberId());
return new ResultData(code);
}

@ApiOperation("使用邀请码")
@GetMapping("/useCode")
@ApiImplicitParam(name = "code", value = "code", dataType = "String", paramType = "query", required = true)
public ResultData useCode(String code) {
logger.debug("[" + getIpAddr() + "] WxUserGrantController::useCode");
return inviteCodeInfoService.useCode(getCUser(),code);
}

@ApiOperation("是否使用邀请码判断")
@GetMapping("/isUse")
public ResultData isUse() {
logger.debug("[" + getIpAddr() + "] WxUserGrantController::isUse");
Boolean use = inviteCodeInfoService.isUse(getCUser());
return new ResultData(use);
}

}

+ 3
- 2
suimangService/src/main/java/com/iformall/domain/po/sm/InviteCode.java 查看文件

@@ -2,6 +2,7 @@ package com.iformall.domain.po.sm;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.models.auth.In;
import lombok.Data;

import java.io.Serializable;
@@ -37,11 +38,11 @@ public class InviteCode implements Serializable {
/**
* 邀请码code
*/
private Long code;
private String code;
/**
* 邀请码使用次数
*/
private Long total;
private Integer total;
/**
* 创建时间
*/


+ 11
- 0
suimangService/src/main/java/com/iformall/mapper/InviteCodeInfoMapper.java 查看文件

@@ -0,0 +1,11 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.sm.InviteCode;
import com.iformall.domain.po.sm.InviteCodeInfo;


public interface InviteCodeInfoMapper extends CommonMapper<InviteCodeInfo, String> {


}

+ 14
- 0
suimangService/src/main/java/com/iformall/mapper/InviteCodeMapper.java 查看文件

@@ -0,0 +1,14 @@
package com.iformall.mapper;

import com.iformall.common.CommonMapper;
import com.iformall.domain.po.AliBusinessCircleOrder;
import com.iformall.domain.po.sm.InviteCode;
import com.iformall.service.sm.InviteCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


public interface InviteCodeMapper extends CommonMapper<InviteCode, String> {


}

+ 6
- 0
suimangService/src/main/java/com/iformall/service/sm/InviteCodeInfoService.java 查看文件

@@ -1,5 +1,11 @@
package com.iformall.service.sm;

import com.iformall.common.ResultData;
import com.iformall.domain.po.WxCUserBasicInfo;

public interface InviteCodeInfoService {

ResultData useCode(WxCUserBasicInfo cUser, String code);

Boolean isUse(WxCUserBasicInfo cUser);
}

+ 6
- 3
suimangService/src/main/java/com/iformall/service/sm/InviteCodeService.java 查看文件

@@ -1,9 +1,12 @@
package com.iformall.service.sm;

import com.iformall.domain.po.sm.UserCreateVideoNum;

import java.util.Map;
import com.iformall.domain.po.sm.InviteCode;

public interface InviteCodeService {

String inviteCode(Long memberId);

InviteCode getCodeInfo(String code);

void addUseTotal(Long id, Integer total);
}

+ 71
- 0
suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeInfoServiceImpl.java 查看文件

@@ -1,10 +1,81 @@
package com.iformall.service.sm.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.sm.InviteCode;
import com.iformall.domain.po.sm.InviteCodeInfo;
import com.iformall.mapper.InviteCodeInfoMapper;
import com.iformall.service.sm.InviteCodeInfoService;
import com.iformall.service.sm.InviteCodeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;

@Service
public class InviteCodeInfoServiceImpl implements InviteCodeInfoService {

@Autowired
private InviteCodeInfoMapper inviteCodeInfoMapper;

@Autowired
private InviteCodeService inviteCodeService;

/**
* 使用邀请码
*
* @param cUser
* @param code
* @Author LWH
* @version 1.0
*/
@Override
public ResultData useCode(WxCUserBasicInfo cUser, String code) {
//查询code 是否存在,存在再去进行操作
InviteCode info = inviteCodeService.getCodeInfo(code);
if (!ObjectUtils.isEmpty(info)) {
if (cUser.getId().equals(info.getUserId())) {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "不能使用自己的邀请码");
}

Boolean use = isUse(cUser);
if (use) {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "已经使用过邀请码");
}

InviteCodeInfo codeInfo = new InviteCodeInfo();
codeInfo.setId(IdWorker.get().nextId());
codeInfo.setUserId(info.getUserId());//邀请用户id
codeInfo.setInviteUserId(cUser.getId());//被邀请用户id
codeInfo.setCode(code);
codeInfo.setInviteId(info.getId());
codeInfo.setEmail(cUser.getEmail());
codeInfo.setPhone(codeInfo.getPhone());
inviteCodeInfoMapper.insert(codeInfo);

inviteCodeService.addUseTotal(info.getId(), info.getTotal());
return new ResultData();
} else {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "邀请码不存在");
}
}

/**
* 判断是否使用过邀请码 true:使用过 false:未使用
*
* @param cUser
* @Author LWH
* @version 1.0
*/
@Override
public Boolean isUse(WxCUserBasicInfo cUser) {
InviteCodeInfo codeInfo = inviteCodeInfoMapper.selectOne(new LambdaQueryWrapper<InviteCodeInfo>().eq(InviteCodeInfo::getIsDel, 0).eq(InviteCodeInfo::getInviteUserId, cUser.getId()));
if (!ObjectUtils.isEmpty(codeInfo)) {
return true;
}
return false;

}
}

+ 42
- 0
suimangService/src/main/java/com/iformall/service/sm/impl/InviteCodeServiceImpl.java 查看文件

@@ -1,9 +1,51 @@
package com.iformall.service.sm.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.iformall.common.IdWorker;
import com.iformall.common.ResultData;
import com.iformall.domain.po.sm.InviteCode;
import com.iformall.mapper.InviteCodeMapper;
import com.iformall.service.sm.InviteCodeService;
import com.iformall.utils.sign.AppUtils;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;

@Service
public class InviteCodeServiceImpl implements InviteCodeService {

@Autowired
private InviteCodeMapper inviteCodeMapper;

@Override
public String inviteCode(Long memberId) {
//生成了邀请码 查一下是否重复
String inviteCode = AppUtils.getInviteCode();
InviteCode info = getCodeInfo(inviteCode);
if (!ObjectUtils.isEmpty(info)){
inviteCode = AppUtils.getInviteCode();
}

InviteCode code = new InviteCode();
code.setId(IdWorker.get().nextId());
code.setCode(inviteCode);
code.setUserId(memberId);
code.setTotal(0);
inviteCodeMapper.insert(code);
return inviteCode;
}

@Override
public InviteCode getCodeInfo(String code) {
return inviteCodeMapper.selectOne(new LambdaQueryWrapper<InviteCode>().eq(InviteCode::getIsDel, 0).eq(InviteCode::getCode, code));
}

@Override
public void addUseTotal(Long id, Integer total) {
InviteCode code = new InviteCode();
code.setId(id);
code.setTotal(total + 1);
inviteCodeMapper.updateById(code);
}
}

+ 16
- 0
suimangService/src/main/java/com/iformall/utils/sign/AppUtils.java 查看文件

@@ -41,6 +41,21 @@ public class AppUtils {

}

/**
* 生成10为code码
*/
public static String getInviteCode() {
StringBuffer shortBuffer = new StringBuffer();
String uuid = UUID.randomUUID().toString().replace("-", "");
for (int i = 0; i < 10; i++) {
String str = uuid.substring(i * 3, i * 3 + 3);
int x = Integer.parseInt(str, 16);
shortBuffer.append(chars[x % 0x3E]);
}
return shortBuffer.toString();

}

/**
* <p>
* 通过appId和内置关键词生成APP key
@@ -113,6 +128,7 @@ public class AppUtils {

public static void main(String[] args) {
String appId = getAppId();
System.out.println("invite:"+getInviteCode());
String appKey = getAppKey(appId);
String signKey = getSignKey(appId,appKey);
System.out.println("appId: "+appId);


正在加载...
取消
保存