Commit 4d71199d authored by 董建华's avatar 董建华

增加快速登录的新注册标识

parent 9bd10fb3
package cn.quantgroup.xyqb.controller.applet;
import cn.quantgroup.xyqb.entity.AppletParamEntry;
import cn.quantgroup.xyqb.model.JsonResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author :dongjianhua
* @date :Created in 2020/5/27 17:24
* @description:小程序控制器
* @modified By:
* @version: 1.0
*/
@Slf4j
@RestController
@RequestMapping("/middle_office/applet")
public class AppletController {
/**
*
* @return
*/
@PostMapping("/relevance")
public JsonResult relevance(@Validated @RequestBody AppletParamEntry appletParamEntry){
return JsonResult.buildSuccessResult();
}
}
package cn.quantgroup.xyqb.controller.middleoffice.wx;
import cn.quantgroup.xyqb.entity.AppletParamEntry;
import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.service.wechat.IWechatService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
......
package cn.quantgroup.xyqb.entity;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
/**
* @author :dongjianhua
* @date :Created in 2020/5/27 16:02
* @description:小程序关联入口参数实体
* @modified By:
* @version: 1.0
*/
@Getter
@Setter
public class AppletParamEntry {
/**
* 应用标识
*/
@NotNull(message = "01:appName 不能为空")
private String appName;
/**
* 应用对应的渠道号
*/
@NotNull(message = "02:channelId 不能为空")
private Long channelId;
/**
* 小程序openid
*/
@NotNull(message = "03:openId 不能为空")
private String openId;
/**
* 手机号
*/
@NotNull(message = "04:mobile 不能为空")
@Pattern(regexp = "/^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$/", message = "手机号格式不对")
private String mobile;
/**
* 用户全局唯一标识
*/
private String unionId;
/**
* 昵称
*/
private String nickName;
/**
* 用户头像
*/
private String avatarUrl;
/**
* 性别1男2女0未知
*/
private short gender;
/**
* 国家
*/
private String country;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 语言
*/
private String language;
}
......@@ -17,6 +17,7 @@ public class AuthBean {
private String phoneNo;
private String uuid;
private boolean hasPassword;
private boolean register = false;
public AuthBean(String token, Principal user) {
this.token = token;
......
......@@ -13,6 +13,7 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor
@Builder
public class LoginProperties {
/**
* 维度
* 形如:"app|app名称|平台|应用市场名字"
......
package cn.quantgroup.xyqb.service.applet;
import cn.quantgroup.xyqb.entity.AppletParamEntry;
/**
* @author :dongjianhua
* @date :Created in 2020/5/27 17:22
* @description:小程序服务层
* @modified By:
* @version: 1.0
*/
public interface IAppletService {
Long relevance(AppletParamEntry appletParamEntry);
}
package cn.quantgroup.xyqb.service.applet.impl;
import cn.quantgroup.xyqb.entity.AppletParamEntry;
import cn.quantgroup.xyqb.entity.User;
import cn.quantgroup.xyqb.entity.WechatUserInfo;
import cn.quantgroup.xyqb.repository.IWeChatUserRepository;
import cn.quantgroup.xyqb.service.applet.IAppletService;
import cn.quantgroup.xyqb.service.register.IUserRegisterService;
import cn.quantgroup.xyqb.service.user.IUserService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* @author :dongjianhua
* @date :Created in 2020/5/27 17:27
* @description:小程序服务层
* @modified By:
* @version: 1.0
*/
@Slf4j
@Service
public class AppletServiceImpl implements IAppletService {
private final IWeChatUserRepository iWeChatUserRepository;
private final IUserRegisterService iUserRegisterService;
private final IUserService userService;
@Autowired
public AppletServiceImpl(IWeChatUserRepository iWeChatUserRepository, IUserRegisterService iUserRegisterService, IUserService userService) {
this.iWeChatUserRepository = iWeChatUserRepository;
this.iUserRegisterService = iUserRegisterService;
this.userService = userService;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Long relevance(AppletParamEntry appletParamEntry) {
WechatUserInfo wechatUserInfo = iWeChatUserRepository.findByOpenIdAndAppName(appletParamEntry.getOpenId(), appletParamEntry.getAppName());
//这个接口先不考虑更换手机号的情况只要有userid就直接返回
if (null != wechatUserInfo && null != wechatUserInfo.getUserId()) {
return wechatUserInfo.getUserId();
}
wechatUserInfo = new WechatUserInfo();
wechatUserInfo.setNickName(appletParamEntry.getNickName());
wechatUserInfo.setCity(appletParamEntry.getCity());
wechatUserInfo.setCountry(appletParamEntry.getCountry());
wechatUserInfo.setProvince(appletParamEntry.getProvince());
wechatUserInfo.setAppName(appletParamEntry.getAppName());
wechatUserInfo.setHeadImgUrl(appletParamEntry.getAvatarUrl());
wechatUserInfo.setLanguage(appletParamEntry.getLanguage());
wechatUserInfo.setOpenId(appletParamEntry.getOpenId());
wechatUserInfo.setSex(appletParamEntry.getGender());
wechatUserInfo.setUnionId(appletParamEntry.getUnionId());
User user = userService.findByPhoneInDb(appletParamEntry.getMobile());
//如果不存在就去注册一下
if (null == user) {
user = iUserRegisterService.register(appletParamEntry.getChannelId(), appletParamEntry.getMobile());
}
//如果存在就更新在微信表里
Long id = user.getId();
wechatUserInfo.setUserId(id);
wechatUserInfo.setPhoneNo(user.getPhoneNo());
iWeChatUserRepository.save(wechatUserInfo);
return id;
}
}
......@@ -15,10 +15,7 @@ import cn.quantgroup.xyqb.entity.UserHashPhoneNoIdNoMapping;
import cn.quantgroup.xyqb.event.PhoneNoUpdateEvent;
import cn.quantgroup.xyqb.exception.DataException;
import cn.quantgroup.xyqb.exception.UserNotExistException;
import cn.quantgroup.xyqb.model.FindByMd5Enum;
import cn.quantgroup.xyqb.model.JsonResult;
import cn.quantgroup.xyqb.model.LoginProperties;
import cn.quantgroup.xyqb.model.UserInfo;
import cn.quantgroup.xyqb.model.*;
import cn.quantgroup.xyqb.repository.IUserHashMappingRepository;
import cn.quantgroup.xyqb.repository.IUserHashPhoneNoIdNoMappingRepository;
import cn.quantgroup.xyqb.repository.IUserRepository;
......@@ -300,6 +297,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
@RedisLock(prefix = "lock:login:fast:", key = "#this[8]")
public JsonResult loginFast(Long channelId, String appChannel, Long createdFrom, Long btRegisterChannelId,
String dimension, String clickId, HttpServletRequest request, Merchant merchant, String phoneNo) {
Boolean register = false;
User user = findByPhoneWithCache(phoneNo);
if (user != null && !user.getEnable()) {
log.info("用户不存在,或者已经注销,phoneNo:{}", phoneNo);
......@@ -313,12 +311,15 @@ public class UserServiceImpl implements IUserService, IBaseController {
}
//广点通转化注册 - 发送消息 - 方法内过滤
MqUtils.sendRegisterMessageForGdt(phoneNo, clickId);
register = true;
}
if (!wechatRelateUserIfNecessary(user, request)) {
return JsonResult.buildErrorStateResult("登录时微信关联失败", null);
}
LoginProperties loginProperties = new LoginProperties("", 3, channelId, createdFrom, appChannel, merchant.getId(), merchant.getName());
return new JsonResult(sessionService.createSession(user, loginProperties));
AuthBean session = sessionService.createSession(user, loginProperties);
session.setRegister(register);
return new JsonResult(session);
}
/**
......
......@@ -35,6 +35,18 @@ public class WechatTest {
public void test(){
WechatUserInfo xyqb = weChatUserRepository.findByOpenIdAndAppName("ou5l71eY3oO0oM88I-fp3pfC9sQg", "xyqb");
log.info("xyqb:{} ",xyqb);
WechatUserInfo xyqb1 = weChatUserRepository.findByUserIdAndAppName(58847276L, "xyqb");
log.info("xyqb1:{} ",xyqb1);
WechatUserInfo xyqb2 = weChatUserRepository.findByPhoneNoAndAppName("13718195234", "xyqb");
log.info("xyqb2:{} ",xyqb2);
long xyqb3 = weChatUserRepository.countByOpenIdAndAppName("ou5l71eY3oO0oM88I-fp3pfC9sQg", "xyqb");
log.info("xyqb3:{} ",xyqb3);
// int xyqb4 = weChatUserRepository.dissociateByUserIdAndAppName(58847276L, "xyqb");
// log.info("xyqb4:{} ",xyqb4);
int i = weChatUserRepository.dissociateUser("ou5l71UOXLkIXNz0dtW1znJSTwR0", 58847276L, "xyqb");
log.info("xyqb5:{} ",i);
}
......
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