app 用户登录 用户注册

新增 登录过滤器 仅对app作用
This commit is contained in:
2024-03-28 10:59:15 +08:00
parent 57dc6be120
commit 09e29ca20b
10 changed files with 451 additions and 119 deletions

View File

@@ -9,17 +9,16 @@ import com.chaozhanggui.system.cashierservice.redis.RedisCst;
import com.chaozhanggui.system.cashierservice.redis.RedisUtil;
import com.chaozhanggui.system.cashierservice.sign.CodeEnum;
import com.chaozhanggui.system.cashierservice.sign.Result;
import com.chaozhanggui.system.cashierservice.util.MD5Utils;
import com.chaozhanggui.system.cashierservice.util.TokenUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
@Service
public class LoginService {
@@ -52,11 +51,11 @@ public class LoginService {
@Transactional(rollbackFor = Exception.class)
public Result wxCustomLogin(String openId,String headImage,String nickName,String telephone,String qrCode,String ip) throws Exception {
public Result wxCustomLogin(String openId, String headImage, String nickName, String telephone, String qrCode, String ip) throws Exception {
TbUserInfo userInfo= tbUserInfoMapper.selectByOpenId(openId);
if(ObjectUtil.isNull(userInfo)){
userInfo=new TbUserInfo();
TbUserInfo userInfo = tbUserInfoMapper.selectByOpenId(openId);
if (ObjectUtil.isNull(userInfo)) {
userInfo = new TbUserInfo();
userInfo.setAmount(BigDecimal.ZERO);
userInfo.setChargeAmount(BigDecimal.ZERO);
@@ -65,9 +64,9 @@ public class LoginService {
userInfo.setConsumeAmount(BigDecimal.ZERO);
userInfo.setTotalScore(0);
userInfo.setLockScore(0);
userInfo.setHeadImg(ObjectUtil.isNotNull(headImage)?headImage:"");
userInfo.setNickName(ObjectUtil.isNotNull(nickName)?nickName:"微信用户");
userInfo.setTelephone(ObjectUtil.isNotNull(telephone)?telephone:"");
userInfo.setHeadImg(ObjectUtil.isNotNull(headImage) ? headImage : "");
userInfo.setNickName(ObjectUtil.isNotNull(nickName) ? nickName : "微信用户");
userInfo.setTelephone(ObjectUtil.isNotNull(telephone) ? telephone : "");
userInfo.setMiniAppOpenId(openId);
userInfo.setStatus(Byte.parseByte("1"));
userInfo.setParentType("PERSON");
@@ -82,31 +81,39 @@ public class LoginService {
userInfo.setUpdatedAt(System.currentTimeMillis());
tbUserInfoMapper.insert(userInfo);
}else {
userInfo.setHeadImg(ObjectUtil.isNotNull(headImage)?headImage:"");
userInfo.setNickName(ObjectUtil.isNotNull(nickName)?nickName:"微信用户");
userInfo.setTelephone(ObjectUtil.isNotNull(telephone)?telephone:"");
} else {
userInfo.setHeadImg(ObjectUtil.isNotNull(headImage) ? headImage : "");
userInfo.setNickName(ObjectUtil.isNotNull(nickName) ? nickName : "微信用户");
userInfo.setTelephone(ObjectUtil.isNotNull(telephone) ? telephone : "");
tbUserInfoMapper.updateByPrimaryKeySelective(userInfo);
}
//app与微信用户 互相关联
if (ObjectUtil.isNotNull(telephone)) {
TbUserInfo appUser = tbUserInfoMapper.selectByPhone(telephone);
if (appUser != null) {
TbUserInfo wechatUser = tbUserInfoMapper.selectByOpenId(openId);
appUser.setUserId(wechatUser.getId());
tbUserInfoMapper.updateByPrimaryKey(appUser);
wechatUser.setUserId(appUser.getId());
tbUserInfoMapper.updateByPrimaryKey(wechatUser);
}
}
TbShopInfo tbShopInfo = null;
if (ObjectUtil.isEmpty(qrCode)) {
tbShopInfo = tbShopInfoMapper.selectByPhone(defaultPhone);
TbShopInfo tbShopInfo=null;
if(ObjectUtil.isEmpty(qrCode)){
tbShopInfo=tbShopInfoMapper.selectByPhone(defaultPhone);
}else {
tbShopInfo= tbShopInfoMapper.selectByQrCode(qrCode);
} else {
tbShopInfo = tbShopInfoMapper.selectByQrCode(qrCode);
}
TbShopUser tbShopUser=null;
Map<String,String> shopMap=new HashMap<>();
if(ObjectUtil.isNotEmpty(tbShopInfo)){
tbShopUser= tbShopUserMapper.selectByUserIdAndShopId(userInfo.getId().toString(),tbShopInfo.getId().toString());
if(ObjectUtil.isEmpty(tbShopUser)){
tbShopUser=new TbShopUser();
TbShopUser tbShopUser = null;
Map<String, String> shopMap = new HashMap<>();
if (ObjectUtil.isNotEmpty(tbShopInfo)) {
tbShopUser = tbShopUserMapper.selectByUserIdAndShopId(userInfo.getId().toString(), tbShopInfo.getId().toString());
if (ObjectUtil.isEmpty(tbShopUser)) {
tbShopUser = new TbShopUser();
tbShopUser.setAmount(BigDecimal.ZERO);
tbShopUser.setCreditAmount(BigDecimal.ZERO);
tbShopUser.setConsumeAmount(BigDecimal.ZERO);
@@ -119,32 +126,31 @@ public class LoginService {
tbShopUser.setCreatedAt(System.currentTimeMillis());
tbShopUserMapper.insert(tbShopUser);
}
shopMap.put("shopId",tbShopUser.getShopId());
shopMap.put("name",tbShopInfo.getShopName());
shopMap.put("amount",BigDecimal.ZERO.toPlainString());
shopMap.put("levelConsume",BigDecimal.ZERO.toPlainString());
shopMap.put("shopId", tbShopUser.getShopId());
shopMap.put("name", tbShopInfo.getShopName());
shopMap.put("amount", BigDecimal.ZERO.toPlainString());
shopMap.put("levelConsume", BigDecimal.ZERO.toPlainString());
}
//生成token 信息
String token = TokenUtil.generateToken(userInfo.getId(), userInfo.getMiniAppOpenId(), userInfo.getTelephone(),userInfo.getNickName());
String token = TokenUtil.generateToken(userInfo.getId(), userInfo.getMiniAppOpenId(), userInfo.getTelephone(), userInfo.getNickName());
//存储登录记录
TbToken tbToken = new TbToken(tbShopInfo.getId(), userInfo.getId(),"wx_lite", token, ip, "1", new Date());
TbToken tbToken = new TbToken(tbShopInfo.getId(), userInfo.getId(), "wx_lite", token, ip, "1", new Date());
tbTokenMapper.insert(tbToken);
Map<String,Object> map=new HashMap<>();
Map<String, Object> map = new HashMap<>();
try {
map.put("token",token);
map.put("userInfo",userInfo);
map.put("shopUser",shopMap);
map.put("shopInfo",tbShopInfo);
map.put("token", token);
map.put("userInfo", userInfo);
map.put("shopUser", shopMap);
map.put("shopInfo", tbShopInfo);
redisUtil.saveMessage(RedisCst.ONLINE_USER.concat(openId), JSON.toJSONString(map));
return Result.success(CodeEnum.SUCCESS,map);
return Result.success(CodeEnum.SUCCESS, map);
} catch (Exception e) {
e.printStackTrace();
@@ -152,67 +158,159 @@ public class LoginService {
return Result.fail("登录失败");
}
public Result register(String phone, String password, String nickName) {
TbUserInfo userInfo = tbUserInfoMapper.selectByPhone(phone);
if (ObjectUtil.isNull(userInfo)) {
userInfo = new TbUserInfo();
userInfo.setAmount(BigDecimal.ZERO);
userInfo.setChargeAmount(BigDecimal.ZERO);
userInfo.setLineOfCredit(BigDecimal.ZERO);
userInfo.setConsumeNumber(0);
userInfo.setConsumeAmount(BigDecimal.ZERO);
userInfo.setTotalScore(0);
userInfo.setLockScore(0);
userInfo.setHeadImg("");
userInfo.setNickName(nickName);
userInfo.setTelephone(phone);
userInfo.setStatus(Byte.parseByte("1"));
userInfo.setParentType("PERSON");
userInfo.setIsResource(Byte.parseByte("0"));
userInfo.setIsOnline(Byte.parseByte("0"));
userInfo.setIsVip(Byte.parseByte("0"));
userInfo.setSourcePath("APP");
userInfo.setIsAttentionMp(Byte.parseByte("0"));
userInfo.setSearchWord("||移动端用户");
userInfo.setLastLogInAt(System.currentTimeMillis());
userInfo.setCreatedAt(System.currentTimeMillis());
userInfo.setUpdatedAt(System.currentTimeMillis());
userInfo.setPassword(MD5Utils.MD5Encode(password, "UTF-8"));
tbUserInfoMapper.insert(userInfo);
} else {
return Result.fail("用户已注册");
}
//app与微信小程序用户关联
public Result createCardNo(String id,String openId){
if(ObjectUtil.isEmpty(id)||ObjectUtil.isEmpty(openId)){
TbUserInfo wechatUser = tbUserInfoMapper.selectUserByPhone(phone, "WECHAT-APP");
if (wechatUser != null) {
TbUserInfo appUser = tbUserInfoMapper.selectByPhone(phone);
appUser.setUserId(wechatUser.getId());
tbUserInfoMapper.updateByPrimaryKey(appUser);
wechatUser.setUserId(appUser.getId());
tbUserInfoMapper.updateByPrimaryKey(wechatUser);
}
return Result.success(CodeEnum.SUCCESS);
}
/**
* 手机号 短信验证码 校验
*
* @param code
* @param phone
* @return
*/
public boolean validate(String code, String phone) {
if (StringUtils.isNotBlank(code)) {
String message = redisUtil.getMessage(phone);
boolean tf = Objects.equals(code, message);
if (tf) {
redisUtil.deleteByKey(phone);
return true;
}
}
return false;
}
@Transactional(rollbackFor = Exception.class)
public Result appLogin(String username, String password) {
TbUserInfo userInfo = tbUserInfoMapper.selectUserByPhone(username, "APP");
if (ObjectUtil.isNull(userInfo)) {
return Result.fail("用户未注册");
}
if (StringUtils.isNotBlank(password) && !password.equalsIgnoreCase(userInfo.getPassword())) {
return Result.fail("密码错误");
}
//生成token 信息
String token = null;
try {
token = TokenUtil.generateToken(userInfo.getId(), null, userInfo.getTelephone(), userInfo.getNickName());
} catch (Exception e) {
throw new RuntimeException(e);
}
Map<String, Object> map = new HashMap<>();
try {
map.put("token", token);
map.put("userInfo", userInfo);
redisUtil.saveMessage(RedisCst.ONLINE_APP_USER.concat(userInfo.getId()+""), JSON.toJSONString(map));
return Result.success(CodeEnum.SUCCESS, map);
} catch (Exception e) {
e.printStackTrace();
}
return Result.fail("登录失败");
}
public Result createCardNo(String id, String openId) {
if (ObjectUtil.isEmpty(id) || ObjectUtil.isEmpty(openId)) {
return Result.fail("head 信息不允许为空");
}
TbUserInfo userInfo= tbUserInfoMapper.selectByPrimaryKey(Integer.valueOf(id));
if(userInfo==null||ObjectUtil.isEmpty(userInfo)){
userInfo=tbUserInfoMapper.selectByOpenId(openId);
TbUserInfo userInfo = tbUserInfoMapper.selectByPrimaryKey(Integer.valueOf(id));
if (userInfo == null || ObjectUtil.isEmpty(userInfo)) {
userInfo = tbUserInfoMapper.selectByOpenId(openId);
}
if(userInfo==null||ObjectUtil.isEmpty(userInfo)){
if (userInfo == null || ObjectUtil.isEmpty(userInfo)) {
return Result.fail("用户信息不存在");
}
String cardNo= RandomUtil.randomNumbers(10);
String cardNo = RandomUtil.randomNumbers(10);
userInfo.setCardNo(cardNo);
userInfo.setUpdatedAt(System.currentTimeMillis());
tbUserInfoMapper.updateByPrimaryKeySelective(userInfo);
return Result.success(CodeEnum.SUCCESS,cardNo) ;
return Result.success(CodeEnum.SUCCESS, cardNo);
}
public Result userInfo(Integer userId,String shopId){
public Result userInfo(Integer userId, String shopId) {
TbUserInfo tbUserInfo = tbUserInfoMapper.selectByPrimaryKey(userId);
if (tbUserInfo == null){
return Result.success(CodeEnum.ENCRYPT,new ArrayList());
if (tbUserInfo == null) {
return Result.success(CodeEnum.ENCRYPT, new ArrayList());
}
TbShopInfo tbShopInfo=null;
if(ObjectUtil.isEmpty(shopId)){
tbShopInfo=tbShopInfoMapper.selectByPhone(defaultPhone);
}else {
tbShopInfo=tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId));
TbShopInfo tbShopInfo = null;
if (ObjectUtil.isEmpty(shopId)) {
tbShopInfo = tbShopInfoMapper.selectByPhone(defaultPhone);
} else {
tbShopInfo = tbShopInfoMapper.selectByPrimaryKey(Integer.valueOf(shopId));
}
TbShopUser tbShopUser=null;
Map<String,String> shopMap=new HashMap<>();
if(ObjectUtil.isNotEmpty(tbShopInfo)){
tbShopUser= tbShopUserMapper.selectByUserIdAndShopId(tbUserInfo.getId().toString(),tbShopInfo.getId().toString());
shopMap.put("shopId",tbShopUser.getShopId());
shopMap.put("name",tbShopInfo.getShopName());
shopMap.put("amount",BigDecimal.ZERO.toPlainString());
shopMap.put("levelConsume",BigDecimal.ZERO.toPlainString());
TbShopUser tbShopUser = null;
Map<String, String> shopMap = new HashMap<>();
if (ObjectUtil.isNotEmpty(tbShopInfo)) {
tbShopUser = tbShopUserMapper.selectByUserIdAndShopId(tbUserInfo.getId().toString(), tbShopInfo.getId().toString());
shopMap.put("shopId", tbShopUser.getShopId());
shopMap.put("name", tbShopInfo.getShopName());
shopMap.put("amount", BigDecimal.ZERO.toPlainString());
shopMap.put("levelConsume", BigDecimal.ZERO.toPlainString());
}
Map<String,Object> map=new HashMap<>();
map.put("userInfo",tbUserInfo);
map.put("shopUser",shopMap);
map.put("shopInfo",tbShopInfo);
Map<String, Object> map = new HashMap<>();
map.put("userInfo", tbUserInfo);
map.put("shopUser", shopMap);
map.put("shopInfo", tbShopInfo);
return Result.success(CodeEnum.ENCRYPT,map);
return Result.success(CodeEnum.ENCRYPT, map);
}
public static void main(String[] args){
for(int i =0;i<10;i++){
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println(RandomUtil.randomNumbers(10));
}
}

View File

@@ -38,7 +38,7 @@ public class OnlineUserService {
onlineUserDto.setLoginTime(new Date());
onlineUserDto.setShopId(shopId);
try {
// redisUtils.set("online-token-"+token, onlineUserDto, MILLIS_MINUTE);
redisUtils.set("online-token-"+token, onlineUserDto, MILLIS_MINUTE);//30分钟
}catch (Exception e){
throw new MsgException("登录错误");
}