diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java index 34229c0c..ca5afc39 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/controller/CompanyLoginController.java @@ -69,6 +69,7 @@ public class CompanyLoginController { Result result = new Result<>(); String phone = sysLoginModel.getUsername(); String password = sysLoginModel.getPassword(); + String openId = sysLoginModel.getOpenId(); String rsaPublicKey = sysLoginModel.getRsaPublicKey(); String rsaPrivateKey = String.valueOf(redisUtil.get(rsaPublicKey)); //update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 @@ -95,6 +96,9 @@ public class CompanyLoginController { //解密获取密码和用户名 password = CommonUtils.decryptBtRsaPriKey(password, rsaPrivateKey); phone = CommonUtils.decryptBtRsaPriKey(phone, rsaPrivateKey); + if (StringUtils.isNotBlank(openId)){ + openId = CommonUtils.decryptBtRsaPriKey(openId, rsaPrivateKey); + } } catch (Exception e) { e.printStackTrace(); } @@ -145,8 +149,23 @@ public class CompanyLoginController { //update-begin--Author:wangshuai Date:20200714 for:登录日志没有记录人员 LoginUser loginUser = new LoginUser(); BeanUtils.copyProperties(contactsManagement, loginUser); - baseCommonService.addLog("用户名: " + phone + ",登录成功!", CommonConstant.LOG_TYPE_1, null, loginUser); + baseCommonService.addLog("手机号: " + phone + ",登录成功!", CommonConstant.LOG_TYPE_1, null, loginUser); //update-end--Author:wangshuai Date:20200714 for:登录日志没有记录人员 + //绑定微信openId + if (StringUtils.isNotBlank(openId)){ + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(PayContactsManagement::getOpenId, PasswordUtil.encrypt(openId)); + PayContactsManagement contactsManagement1 = payContactsManagementService.getOne(queryWrapper1); + //没有绑定过就绑定 + if (contactsManagement1 == null){ + contactsManagement.setOpenId(PasswordUtil.encrypt(openId)); + contactsManagement.setPhone(PasswordUtil.encrypt(phone)); + payContactsManagementService.updateById(contactsManagement); + //绑定过就判断是否是当前用户,如果不是就报错 + }else if (!Objects.equals(contactsManagement1.getPhone(),PasswordUtil.encrypt(phone))){ + throw new JeroBootException("微信已经绑定过其他账号"); + } + } return result; } @@ -155,16 +174,15 @@ public class CompanyLoginController { public Result smsLogin(@RequestBody SysLoginModel sysLoginModel) { Result result = new Result<>(); String phone = sysLoginModel.getUsername(); + String openId = sysLoginModel.getOpenId(); String rsaPublicKey = sysLoginModel.getRsaPublicKey(); String rsaPrivateKey = String.valueOf(redisUtil.get(rsaPublicKey)); - //update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 - //前端密码加密,后端进行密码解密 - //password = AesEncryptUtil.desEncrypt(sysLoginModel.getPassword().replaceAll("%2B", "\\+")).trim();//密码解密 - //update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 - //update-begin-author:taoyan date:20190828 for:校验验证码 try { - //解密获取密码和用户名 + //解密获取手机号和openId phone = CommonUtils.decryptBtRsaPriKey(phone, rsaPrivateKey); + if (StringUtils.isNotBlank(openId)){ + openId = CommonUtils.decryptBtRsaPriKey(openId, rsaPrivateKey); + } } catch (Exception e) { e.printStackTrace(); } @@ -196,14 +214,65 @@ public class CompanyLoginController { //update-begin--Author:wangshuai Date:20200714 for:登录日志没有记录人员 LoginUser loginUser = new LoginUser(); BeanUtils.copyProperties(contactsManagement, loginUser); - baseCommonService.addLog("用户名: " + phone + ",登录成功!", CommonConstant.LOG_TYPE_1, null, loginUser); + baseCommonService.addLog("手机号: " + phone + ",登录成功!", CommonConstant.LOG_TYPE_1, null, loginUser); //update-end--Author:wangshuai Date:20200714 for:登录日志没有记录人员 + //绑定微信openId + if (StringUtils.isNotBlank(openId)){ + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(PayContactsManagement::getOpenId, PasswordUtil.encrypt(openId)); + PayContactsManagement contactsManagement1 = payContactsManagementService.getOne(queryWrapper1); + //没有绑定过就绑定 + if (contactsManagement1 == null){ + contactsManagement.setOpenId(PasswordUtil.encrypt(openId)); + contactsManagement.setPhone(PasswordUtil.encrypt(phone)); + payContactsManagementService.updateById(contactsManagement); + //绑定过就判断是否是当前用户,如果不是就报错 + }else if (!Objects.equals(contactsManagement1.getPhone(),PasswordUtil.encrypt(phone))){ + throw new JeroBootException("微信已经绑定过其他账号"); + } + } + + //如果没有密码,返回 if (Objects.isNull(contactsManagement.getPassword())){ result.setMessage("updatePassword"); } return result; } + @ApiOperation("微信登录接口") + @PostMapping(value = "/WCLogin") + public Result WCLogin(@RequestBody SysLoginModel sysLoginModel) { + Result result = new Result<>(); + String openId = sysLoginModel.getOpenId(); + String rsaPublicKey = sysLoginModel.getRsaPublicKey(); + String rsaPrivateKey = String.valueOf(redisUtil.get(rsaPublicKey)); + try { + //解密获取openId + if (StringUtils.isNotBlank(openId)){ + openId = CommonUtils.decryptBtRsaPriKey(openId, rsaPrivateKey); + } + } catch (Exception e) { + e.printStackTrace(); + } + + //1. 校验用户是否有效 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(PayContactsManagement::getOpenId, PasswordUtil.encrypt(openId)); + PayContactsManagement contactsManagement = payContactsManagementService.getOne(queryWrapper); + if (Objects.isNull(contactsManagement)) { + throw new JeroBootException("暂未授权"); + } + + //用户登录信息 + userInfo(contactsManagement, result); + //update-begin--Author:wangshuai Date:20200714 for:登录日志没有记录人员 + LoginUser loginUser = new LoginUser(); + BeanUtils.copyProperties(contactsManagement, loginUser); + baseCommonService.addLog("手机号: " + contactsManagement.getPhone() + ",登录成功!", CommonConstant.LOG_TYPE_1, null, loginUser); + //update-end--Author:wangshuai Date:20200714 for:登录日志没有记录人员 + return result; + } + /** * 退出登录 * diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/company/entity/PayContactsManagement.java b/jero-boot-incoming-payment/src/main/java/com/jero/company/entity/PayContactsManagement.java index ab8841f1..724e323e 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/company/entity/PayContactsManagement.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/company/entity/PayContactsManagement.java @@ -121,6 +121,13 @@ public class PayContactsManagement implements Serializable { */ @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private String salt; + + /** + * openId + */ + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + private String openId; + /** * 审核状态(1:通过,2:待审核)财务人员添加企业不需要审核默认是通过状态 */ diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java index 293ae9b3..2f214208 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/model/SysLoginModel.java @@ -27,4 +27,6 @@ public class SysLoginModel { private String checkKey; @ApiModelProperty(value = "RSA公钥") private String rsaPublicKey; + @ApiModelProperty(value = "openId") + private String openId; } \ No newline at end of file