Commit 60bc7ccc by 郑云飞

小程序登录修改

parent 2124dba5
...@@ -17,10 +17,7 @@ import com.yongqi.system.service.ISysUserService; ...@@ -17,10 +17,7 @@ import com.yongqi.system.service.ISysUserService;
import com.yongqi.system.service.SysLoginService; import com.yongqi.system.service.SysLoginService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.HashMap; import java.util.HashMap;
...@@ -82,10 +79,10 @@ public class SysLoginController { ...@@ -82,10 +79,10 @@ public class SysLoginController {
*/ */
@SaIgnore @SaIgnore
@GetMapping("/xcxLogin") @GetMapping("/xcxLogin")
public R<Map<String, Object>> xcxLogin(@NotBlank(message = "{xcx.code.not.blank}") String xcxCode) { public R<Map<String, Object>> xcxLogin(@NotBlank(message = "{xcx.code.not.blank}") String xcxCode, @RequestParam(value = "parentId", required = false) Long inviterId) {
Map<String, Object> ajax = new HashMap<>(); Map<String, Object> ajax = new HashMap<>();
// 生成令牌 // 生成令牌
String token = loginService.xcxLogin(xcxCode); String token = loginService.xcxLogin(xcxCode, inviterId);
ajax.put(Constants.TOKEN, token); ajax.put(Constants.TOKEN, token);
return R.ok(ajax); return R.ok(ajax);
} }
......
...@@ -33,8 +33,14 @@ import com.yongqi.common.utils.StringUtils; ...@@ -33,8 +33,14 @@ import com.yongqi.common.utils.StringUtils;
import com.yongqi.common.utils.redis.RedisUtils; import com.yongqi.common.utils.redis.RedisUtils;
import com.yongqi.common.utils.spring.SpringUtils; import com.yongqi.common.utils.spring.SpringUtils;
import com.yongqi.system.mapper.SysUserMapper; import com.yongqi.system.mapper.SysUserMapper;
import com.yongqi.xinrenli.domain.DbCoupon;
import com.yongqi.xinrenli.domain.DbInviter;
import com.yongqi.xinrenli.domain.DbUserCoupon;
import com.yongqi.xinrenli.domain.DbWxUser; import com.yongqi.xinrenli.domain.DbWxUser;
import com.yongqi.xinrenli.enums.DeleteStatusEnum; import com.yongqi.xinrenli.enums.DeleteStatusEnum;
import com.yongqi.xinrenli.mapper.DbCouponMapper;
import com.yongqi.xinrenli.mapper.DbInviterMapper;
import com.yongqi.xinrenli.mapper.DbUserCouponMapper;
import com.yongqi.xinrenli.mapper.DbWxUserMapper; import com.yongqi.xinrenli.mapper.DbWxUserMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -44,8 +50,9 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -44,8 +50,9 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.rmi.ServerException;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Supplier; import java.util.function.Supplier;
...@@ -73,6 +80,12 @@ public class SysLoginService { ...@@ -73,6 +80,12 @@ public class SysLoginService {
private WxMaService wxMaService; private WxMaService wxMaService;
@Autowired @Autowired
private DbWxUserMapper wxUserMapper; private DbWxUserMapper wxUserMapper;
@Autowired
private DbInviterMapper inviterMapper;
@Autowired
private DbCouponMapper couponMapper;
@Autowired
private DbUserCouponMapper userCouponMapper;
/** /**
* 登录验证 * 登录验证
...@@ -118,7 +131,7 @@ public class SysLoginService { ...@@ -118,7 +131,7 @@ public class SysLoginService {
} }
public String xcxLogin(String xcxCode) { public String xcxLogin(String xcxCode, Long inviterId) {
// 校验 appid + appsrcret + xcxCode 调用登录凭证校验接口 获取 session_key 与 openid // 校验 appid + appsrcret + xcxCode 调用登录凭证校验接口 获取 session_key 与 openid
WxMaJscode2SessionResult sessionInfo = null; WxMaJscode2SessionResult sessionInfo = null;
try { try {
...@@ -129,7 +142,7 @@ public class SysLoginService { ...@@ -129,7 +142,7 @@ public class SysLoginService {
if (sessionInfo == null) { if (sessionInfo == null) {
throw new RuntimeException("获取微信信息失败"); throw new RuntimeException("获取微信信息失败");
} }
DbWxUser user = loadUserByOpenid(sessionInfo, null); DbWxUser user = loadUserByOpenid(sessionInfo, null, inviterId);
// 此处可根据登录用户的数据不同 自行创建 loginUser // 此处可根据登录用户的数据不同 自行创建 loginUser
XcxLoginUser loginUser = new XcxLoginUser(); XcxLoginUser loginUser = new XcxLoginUser();
loginUser.setUserId(user.getId()); loginUser.setUserId(user.getId());
...@@ -160,7 +173,7 @@ public class SysLoginService { ...@@ -160,7 +173,7 @@ public class SysLoginService {
} }
WxMaJscode2SessionResult sessionInfo = new WxMaJscode2SessionResult(); WxMaJscode2SessionResult sessionInfo = new WxMaJscode2SessionResult();
sessionInfo.setOpenid(openId); sessionInfo.setOpenid(openId);
DbWxUser user = loadUserByOpenid(sessionInfo, newPhoneNoInfo.getPhoneNumber()); DbWxUser user = loadUserByOpenid(sessionInfo, newPhoneNoInfo.getPhoneNumber(), null);
return R.ok(); return R.ok();
} }
...@@ -254,16 +267,43 @@ public class SysLoginService { ...@@ -254,16 +267,43 @@ public class SysLoginService {
return userMapper.selectUserByPhonenumber(phonenumber); return userMapper.selectUserByPhonenumber(phonenumber);
} }
private DbWxUser loadUserByOpenid(WxMaJscode2SessionResult sessionInfo, String phone) { private DbWxUser loadUserByOpenid(WxMaJscode2SessionResult sessionInfo, String phone, Long inviterId) {
// 使用 openid 查询绑定用户 如未绑定用户 则根据业务自行处理 例如 创建默认用户 // 使用 openid 查询绑定用户 如未绑定用户 则根据业务自行处理 例如 创建默认用户
DbWxUser user = wxUserMapper.selectOne(Wrappers.<DbWxUser>lambdaQuery().eq(DbWxUser::getOpenId, sessionInfo.getOpenid())); DbWxUser user = wxUserMapper.selectOne(Wrappers.<DbWxUser>lambdaQuery().eq(DbWxUser::getOpenId, sessionInfo.getOpenid()));
if (ObjectUtil.isNull(user)) { if (ObjectUtil.isNull(user)) {
log.info("登录用户:{} 不存在.", sessionInfo.getOpenid()); log.info("登录用户:{} 不存在.", sessionInfo.getOpenid());
// 新增用户
user = new DbWxUser(); user = new DbWxUser();
user.setOpenId(sessionInfo.getOpenid()); user.setOpenId(sessionInfo.getOpenid());
user.setSessionKey(sessionInfo.getSessionKey()); user.setSessionKey(sessionInfo.getSessionKey());
user.setUnionId(sessionInfo.getUnionid()); user.setUnionId(sessionInfo.getUnionid());
wxUserMapper.insert(user); wxUserMapper.insert(user);
// 判断是否有邀请人
if (ObjectUtil.isNotEmpty(inviterId)) {
//获取邀请人信息
DbWxUser dbWxUser = wxUserMapper.selectById(inviterId);
// 新增邀请记录
DbInviter inviter = new DbInviter();
inviter.setInviterId(inviterId);
inviter.setInviterName(dbWxUser.getNickname());
inviter.setStatus(1);
inviter.setInviteeId(user.getId());
inviter.setInviteeName(user.getNickname());
inviter.setCreateTime(new Date());
inviterMapper.insert(inviter);
}
Date now = new Date();
List<DbCoupon> coupons = couponMapper.selectList(Wrappers.<DbCoupon>lambdaQuery()
.eq(DbCoupon::getCouponType, 1)
.le(DbCoupon::getEffectiveTime, now)
.ge(DbCoupon::getFailureTime, now));
for (DbCoupon coupon : coupons) {
DbUserCoupon userCoupon = new DbUserCoupon();
userCoupon.setUserId(user.getId());
userCoupon.setCouponId(coupon.getId());
userCoupon.setUseStatus(0);
userCouponMapper.insert(userCoupon);
}
} else if (DeleteStatusEnum.DELETED.getCode().equals(user.getDeleteFlag())) { } else if (DeleteStatusEnum.DELETED.getCode().equals(user.getDeleteFlag())) {
log.info("登录用户:{} 已被停用.", sessionInfo.getOpenid()); log.info("登录用户:{} 已被停用.", sessionInfo.getOpenid());
throw new RuntimeException("当前用户已停用,请联系管理员"); throw new RuntimeException("当前用户已停用,请联系管理员");
......
...@@ -3,6 +3,8 @@ package com.yongqi.xinrenli.domain; ...@@ -3,6 +3,8 @@ package com.yongqi.xinrenli.domain;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
import java.util.Date;
/** /**
* 邀请对象 db_Inviter * 邀请对象 db_Inviter
* *
...@@ -37,8 +39,10 @@ public class DbInviter { ...@@ -37,8 +39,10 @@ public class DbInviter {
*/ */
private String inviteeName; private String inviteeName;
/** /**
* 状态:是否已计入折扣 * 状态:是否已计入折扣 0是1否
*/ */
private Integer status; private Integer status;
private Date createTime;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment