浏览代码

//登陆

private_deployment
xhxu 2 年前
父节点
当前提交
000820a4a4
共有 6 个文件被更改,包括 78 次插入11 次删除
  1. +7
    -0
      suimangAdmin/src/main/resources/db/migration/V202305230001__wx_c_user_basic_info.sql
  2. +52
    -6
      suimangCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
  3. +2
    -1
      suimangService/src/main/java/com/iformall/enums/EnumCUserBasicInfoStatus.java
  4. +2
    -0
      suimangService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java
  5. +11
    -4
      suimangService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java
  6. +4
    -0
      suimangService/src/main/java/com/iformall/utils/PasswordHelper.java

+ 7
- 0
suimangAdmin/src/main/resources/db/migration/V202305230001__wx_c_user_basic_info.sql 查看文件

@@ -0,0 +1,7 @@
ALTER TABLE `wx_c_user_basic_info`
ADD UNIQUE INDEX `email_UNIQUE`(`email`) USING BTREE;


ALTER TABLE `wx_c_user_basic_info`
MODIFY COLUMN `phone` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '微信用户绑定的手机号' AFTER `final_tenant_id`,
MODIFY COLUMN `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱' AFTER `id_card`;

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

@@ -118,10 +118,10 @@ public class WxUserGrantController extends BaseController {
*/ */
@AuthIgnore @AuthIgnore
@PostMapping("/login") @PostMapping("/login")
@ApiOperation(value = "用户登录", notes = "{\"appId\":\"string\",\"code\":\"string\",\"scene\":\"string\",\"sceneAddress\":\"string\",\"latitude\":\"string\",\"longitude\":\"string\",\"systemInfo\":\"string\"}")
public ResultData userLogin(@RequestBody Map<String, String> map) {
@ApiOperation(value = "用户登录", notes = "{\"phone\":\"string\",\"password\":\"string\",\"code\":\"string\"}")
public ResultData loginByPhone(@RequestBody Map<String, String> map) {
String ipAddr = getIpAddr(); String ipAddr = getIpAddr();
logger.debug("[" + ipAddr + "] WxUserGrantController::doLogin");
logger.debug("[" + ipAddr + "] WxUserGrantController::loginByPhone");
String code = map.get("code"); String code = map.get("code");
if(StringUtils.isBlank(code)){ if(StringUtils.isBlank(code)){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码");
@@ -147,14 +147,60 @@ public class WxUserGrantController extends BaseController {
return new ResultData(ErrorCode.USER_IS_EMPTY); return new ResultData(ErrorCode.USER_IS_EMPTY);
} }


String encryptPassword = new PasswordHelper().encryptPassword(phone, password);
String encryptPassword = new PasswordHelper().encryptPassword(password);


if(!encryptPassword.equals(basicInfo.getPassword())){ if(!encryptPassword.equals(basicInfo.getPassword())){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "手机号或密码错误"); return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "手机号或密码错误");
} }
wxCUserBasicInfoService.handleLoginUser(basicInfo); wxCUserBasicInfoService.handleLoginUser(basicInfo);
Map resultMap = new HashMap(); Map resultMap = new HashMap();
resultMap.put("phone", basicInfo.getPhone());
// resultMap.put("phone", basicInfo.getPhone());
resultMap.put("token", basicInfo.getToken());
return new ResultData(resultMap);
}

@AuthIgnore
@PostMapping("/loginByEmail")
@ApiOperation(value = "用户登录", notes = "{\"email\":\"string\",\"password\":\"string\",\"code\":\"string\"}")
public ResultData loginByEmail(@RequestBody Map<String, String> map) {
String ipAddr = getIpAddr();
logger.debug("[" + ipAddr + "] WxUserGrantController::loginByEmail");
String code = map.get("code");
if(StringUtils.isBlank(code)){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "请输入验证码");
}

String key = Constant.captchaPrev + ":" + ipAddr;
String code1 = RedisCacheUtils.getCacheString(redisTemplate, key);
if(StringUtils.isBlank(code1)){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码已过期");
}
if(!code1.equals(code)){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "验证码不正确");
}

String email = map.get("email");
String password = map.get("password");
if(StringUtils.isBlank(email) || StringUtils.isBlank(password)){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "邮箱或密码为空");
}

WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.findInfoByEmail(getTenantInfo(), email);
if(basicInfo == null){
return new ResultData(ErrorCode.USER_IS_EMPTY);
}
if(EnumCUserBasicInfoStatus.NOT_ACTIVE.getCode().equals(basicInfo.getStatus())){
return new ResultData(ErrorCode.MEMBER_IS_LOCKED.getCode(),"该用户未激活");
}

String encryptPassword = new PasswordHelper().encryptPassword(password);

if(!encryptPassword.equals(basicInfo.getPassword())){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "邮箱或密码错误");
}
wxCUserBasicInfoService.handleLoginUser(basicInfo);
Map resultMap = new HashMap();
// resultMap.put("phone", basicInfo.getPhone());
resultMap.put("token", basicInfo.getToken()); resultMap.put("token", basicInfo.getToken());
return new ResultData(resultMap); return new ResultData(resultMap);
} }
@@ -328,7 +374,7 @@ public class WxUserGrantController extends BaseController {
return new ResultData(Result.ERROR, e.getMessage()); return new ResultData(Result.ERROR, e.getMessage());
} }
if(isValidCode) { if(isValidCode) {
String encryptPassword = new PasswordHelper().encryptPassword(phone, pwd);
String encryptPassword = new PasswordHelper().encryptPassword(pwd);
WxCUserBasicInfo basicInfoUpd = new WxCUserBasicInfo(); WxCUserBasicInfo basicInfoUpd = new WxCUserBasicInfo();
basicInfoUpd.setId(basicInfo.getId()); basicInfoUpd.setId(basicInfo.getId());
basicInfoUpd.setPassword(encryptPassword); basicInfoUpd.setPassword(encryptPassword);


+ 2
- 1
suimangService/src/main/java/com/iformall/enums/EnumCUserBasicInfoStatus.java 查看文件

@@ -6,7 +6,8 @@ package com.iformall.enums;
public enum EnumCUserBasicInfoStatus { public enum EnumCUserBasicInfoStatus {


NORMAL(0, "正常"), NORMAL(0, "正常"),
LOCKED(1, "锁定"),;
LOCKED(1, "锁定"),
NOT_ACTIVE(2, "未激活"),;


public static EnumCUserBasicInfoStatus getEnum(Integer code) { public static EnumCUserBasicInfoStatus getEnum(Integer code) {
for (EnumCUserBasicInfoStatus value : values()) { for (EnumCUserBasicInfoStatus value : values()) {


+ 2
- 0
suimangService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java 查看文件

@@ -93,6 +93,8 @@ public interface WxCUserBasicInfoService {
List<WxCUserBasicInfo> findByPhone(TenantEntity tenantEntity, String phone); List<WxCUserBasicInfo> findByPhone(TenantEntity tenantEntity, String phone);
WxCUserBasicInfo findInfoByPhone(TenantEntity tenantEntity, String phone); WxCUserBasicInfo findInfoByPhone(TenantEntity tenantEntity, String phone);


WxCUserBasicInfo findInfoByEmail(TenantEntity tenantInfo, String email);

/** /**
* 修改会员积分 * 修改会员积分
* *


+ 11
- 4
suimangService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java 查看文件

@@ -674,13 +674,20 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc


@Override @Override
public WxCUserBasicInfo findInfoByPhone(TenantEntity tenantEntity, String phone) { public WxCUserBasicInfo findInfoByPhone(TenantEntity tenantEntity, String phone) {
WxCUserBasicInfo basic = null;
WxCUserBasicInfo basicQ = new WxCUserBasicInfo(); WxCUserBasicInfo basicQ = new WxCUserBasicInfo();
basicQ.setFinalTenantId(tenantEntity.getFinalTenantId()); basicQ.setFinalTenantId(tenantEntity.getFinalTenantId());
basicQ.setPhone(phone); basicQ.setPhone(phone);


basic = wxCUserBasicInfoMapper.selectOne(new QueryWrapper(basicQ));
return basic;
return wxCUserBasicInfoMapper.selectOne(new QueryWrapper(basicQ));
}

@Override
public WxCUserBasicInfo findInfoByEmail(TenantEntity tenantInfo, String email) {
WxCUserBasicInfo basicQ = new WxCUserBasicInfo();
basicQ.setFinalTenantId(tenantInfo.getFinalTenantId());
basicQ.setEmail(email);

return wxCUserBasicInfoMapper.selectOne(new QueryWrapper(basicQ));
} }


@Override @Override
@@ -844,7 +851,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc
basicInfo.setFinalTenantId(tenantEntity.getFinalTenantId()); basicInfo.setFinalTenantId(tenantEntity.getFinalTenantId());
basicInfo.setPhone(phone); basicInfo.setPhone(phone);
if(StringUtils.isNotBlank(pwd)){ if(StringUtils.isNotBlank(pwd)){
String encryptPassword = new PasswordHelper().encryptPassword(phone, pwd);
String encryptPassword = new PasswordHelper().encryptPassword(pwd);
basicInfo.setPassword(encryptPassword); basicInfo.setPassword(encryptPassword);
} }
this.save(basicInfo); this.save(basicInfo);


+ 4
- 0
suimangService/src/main/java/com/iformall/utils/PasswordHelper.java 查看文件

@@ -23,6 +23,10 @@ public class PasswordHelper {
return new SimpleHash(algorithmName, password, ByteSource.Util.bytes(userName), hashIterations).toHex(); return new SimpleHash(algorithmName, password, ByteSource.Util.bytes(userName), hashIterations).toHex();
} }


public String encryptPassword(String password) {
return new SimpleHash(algorithmName, password, hashIterations).toHex();
}





public static void main(String[] args) { public static void main(String[] args) {


正在加载...
取消
保存