【fix sonar】 LoginServiceImpl.java文件

This commit is contained in:
tianwenbo
2023-03-06 18:01:17 +08:00
parent 7eb32dd653
commit 9cff1276ee
@@ -67,9 +67,13 @@ public class LoginServiceImpl implements ILoginService {
//密码登录错误的最大限制次数 //密码登录错误的最大限制次数
public static final int RETRY_LOGIN_MAX_COUNT = 5; public static final int RETRY_LOGIN_MAX_COUNT = 5;
private static final String UTF_8 = "utf-8";
private static final String USER_NAME = "用户名: ";
private static final String USER_INFO = "userInfo";
@Override @Override
public Result<JSONObject> login(SysLoginModel sysLoginModel) { public Result<JSONObject> login(SysLoginModel sysLoginModel) {
Result<JSONObject> result = new Result<JSONObject>(); Result<JSONObject> result ;
String username = sysLoginModel.getUsername(); String username = sysLoginModel.getUsername();
String password = sysLoginModel.getPassword(); String password = sysLoginModel.getPassword();
String rsaPublicKey = sysLoginModel.getRsaPublicKey(); String rsaPublicKey = sysLoginModel.getRsaPublicKey();
@@ -89,7 +93,7 @@ public class LoginServiceImpl implements ILoginService {
return Result.error("验证码无效"); return Result.error("验证码无效");
} }
String lowerCaseCaptcha = captcha.toLowerCase(); String lowerCaseCaptcha = captcha.toLowerCase();
String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+sysLoginModel.getCheckKey(), "utf-8"); String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+sysLoginModel.getCheckKey(), UTF_8);
Object checkCode = redisUtil.get(realKey); Object checkCode = redisUtil.get(realKey);
//当进入登录页时,有一定几率出现验证码错误 #1714 //当进入登录页时,有一定几率出现验证码错误 #1714
if(checkCode==null || !checkCode.toString().equals(lowerCaseCaptcha)) { if(checkCode==null || !checkCode.toString().equals(lowerCaseCaptcha)) {
@@ -128,7 +132,7 @@ public class LoginServiceImpl implements ILoginService {
// 重试登录次数加一 // 重试登录次数加一
retryCount++; retryCount++;
if( retryCount == 1){ if( retryCount == 1){
redisUtil.set(RETRY_LOGIN_PREFIX + username,retryCount,60 * 15); redisUtil.set(RETRY_LOGIN_PREFIX + username,retryCount,60L * 15L);
}else { }else {
redisUtil.set(RETRY_LOGIN_PREFIX + username,retryCount,redisUtil.getExpire(RETRY_LOGIN_PREFIX + username)); redisUtil.set(RETRY_LOGIN_PREFIX + username,retryCount,redisUtil.getExpire(RETRY_LOGIN_PREFIX + username));
} }
@@ -146,7 +150,7 @@ public class LoginServiceImpl implements ILoginService {
//update-begin--Author:wangshuai Date:20200714 for:登录日志没有记录人员 //update-begin--Author:wangshuai Date:20200714 for:登录日志没有记录人员
LoginUser loginUser = new LoginUser(); LoginUser loginUser = new LoginUser();
BeanUtils.copyProperties(sysUser, loginUser); BeanUtils.copyProperties(sysUser, loginUser);
baseCommonService.addLog("用户名: " + username + ",登录成功!", CommonConstant.LOG_TYPE_1, null,loginUser); baseCommonService.addLog(USER_NAME + username + ",登录成功!", CommonConstant.LOG_TYPE_1, null,loginUser);
//update-end--Author:wangshuai Date:20200714 for:登录日志没有记录人员 //update-end--Author:wangshuai Date:20200714 for:登录日志没有记录人员
return result; return result;
@@ -163,7 +167,7 @@ public class LoginServiceImpl implements ILoginService {
LoginUser sysUser = sysBaseAPI.getUserByName(username); LoginUser sysUser = sysBaseAPI.getUserByName(username);
if(sysUser!=null) { if(sysUser!=null) {
//update-begin--Author:wangshuai Date:20200714 for:登出日志没有记录人员 //update-begin--Author:wangshuai Date:20200714 for:登出日志没有记录人员
baseCommonService.addLog("用户名: "+sysUser.getRealname()+",退出成功!", CommonConstant.LOG_TYPE_1, null,sysUser); baseCommonService.addLog(USER_NAME+sysUser.getRealname()+",退出成功!", CommonConstant.LOG_TYPE_1, null,sysUser);
//update-end--Author:wangshuai Date:20200714 for:登出日志没有记录人员 //update-end--Author:wangshuai Date:20200714 for:登出日志没有记录人员
log.info(" 用户名: "+sysUser.getRealname()+",退出成功! "); log.info(" 用户名: "+sysUser.getRealname()+",退出成功! ");
//清空用户登录Token缓存 //清空用户登录Token缓存
@@ -182,7 +186,7 @@ public class LoginServiceImpl implements ILoginService {
@Override @Override
public Result<JSONObject> loginfo() { public Result<JSONObject> loginfo() {
Result<JSONObject> result = new Result<JSONObject>(); Result<JSONObject> result = new Result<>();
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
//update-begin--Author:zhangweijian Date:20190428 for:传入开始时间,结束时间参数 //update-begin--Author:zhangweijian Date:20190428 for:传入开始时间,结束时间参数
// 获取一天的开始和结束时间 // 获取一天的开始和结束时间
@@ -209,7 +213,7 @@ public class LoginServiceImpl implements ILoginService {
@Override @Override
public Result<List<Map<String, Object>>> visitInfo() { public Result<List<Map<String, Object>>> visitInfo() {
Result<List<Map<String,Object>>> result = new Result<List<Map<String,Object>>>(); Result<List<Map<String,Object>>> result = new Result<>();
Calendar calendar = new GregorianCalendar(); Calendar calendar = new GregorianCalendar();
calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.MINUTE,0);
@@ -226,7 +230,7 @@ public class LoginServiceImpl implements ILoginService {
@Override @Override
public Result<JSONObject> selectDepart(SysUser user) { public Result<JSONObject> selectDepart(SysUser user) {
Result<JSONObject> result = new Result<JSONObject>(); Result<JSONObject> result = new Result<>();
String username = user.getUsername(); String username = user.getUsername();
if(oConvertUtils.isEmpty(username)) { if(oConvertUtils.isEmpty(username)) {
LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
@@ -236,14 +240,14 @@ public class LoginServiceImpl implements ILoginService {
this.sysUserService.updateUserDepart(username, orgCode); this.sysUserService.updateUserDepart(username, orgCode);
SysUser sysUser = sysUserService.getUserByName(username); SysUser sysUser = sysUserService.getUserByName(username);
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
obj.put("userInfo", sysUser); obj.put(USER_INFO, sysUser);
result.setResult(obj); result.setResult(obj);
return result; return result;
} }
@Override @Override
public Result<String> sms(JSONObject jsonObject) { public Result<String> sms(JSONObject jsonObject) {
Result<String> result = new Result<String>(); Result<String> result = new Result<>();
String mobile = jsonObject.get("mobile").toString(); String mobile = jsonObject.get("mobile").toString();
//手机号模式 登录模式: "2" 注册模式: "1" //手机号模式 登录模式: "2" 注册模式: "1"
String smsmode=jsonObject.get("smsmode").toString(); String smsmode=jsonObject.get("smsmode").toString();
@@ -298,7 +302,7 @@ public class LoginServiceImpl implements ILoginService {
} }
} }
if (b == false) { if (!b) {
result.setMessage("短信验证码发送失败,请稍后重试"); result.setMessage("短信验证码发送失败,请稍后重试");
result.setSuccess(false); result.setSuccess(false);
return result; return result;
@@ -319,7 +323,7 @@ public class LoginServiceImpl implements ILoginService {
@Override @Override
public Result<JSONObject> phoneLogin(JSONObject jsonObject) { public Result<JSONObject> phoneLogin(JSONObject jsonObject) {
Result<JSONObject> result = new Result<JSONObject>(); Result<JSONObject> result ;
String phone = jsonObject.getString("mobile"); String phone = jsonObject.getString("mobile");
//校验用户有效性 //校验用户有效性
@@ -338,15 +342,15 @@ public class LoginServiceImpl implements ILoginService {
//用户信息 //用户信息
userInfo(sysUser, result); userInfo(sysUser, result);
//添加日志 //添加日志
baseCommonService.addLog("用户名: " + sysUser.getUsername() + ",登录成功!", CommonConstant.LOG_TYPE_1, null); baseCommonService.addLog(USER_NAME + sysUser.getUsername() + ",登录成功!", CommonConstant.LOG_TYPE_1, null);
return result; return result;
} }
@Override @Override
public Result<Map<String, String>> getEncryptedString() { public Result<Map<String, String>> getEncryptedString() {
Result<Map<String,String>> result = new Result<Map<String,String>>(); Result<Map<String,String>> result = new Result<>();
Map<String,String> map = new HashMap<String,String>(); Map<String,String> map = new HashMap<>();
map.put("key", EncryptedString.key); map.put("key", EncryptedString.key);
map.put("iv",EncryptedString.iv); map.put("iv",EncryptedString.iv);
result.setResult(map); result.setResult(map);
@@ -355,11 +359,11 @@ public class LoginServiceImpl implements ILoginService {
@Override @Override
public Result<String> randomImage(HttpServletResponse response, String key) { public Result<String> randomImage(HttpServletResponse response, String key) {
Result<String> res = new Result<String>(); Result<String> res = new Result<>();
try { try {
String code = RandomUtil.randomString(BASE_CHECK_CODES,4); String code = RandomUtil.randomString(BASE_CHECK_CODES,4);
String lowerCaseCode = code.toLowerCase(); String lowerCaseCode = code.toLowerCase();
String realKey = MD5Util.MD5Encode(lowerCaseCode+key, "utf-8"); String realKey = MD5Util.MD5Encode(lowerCaseCode+key, UTF_8);
redisUtil.set(realKey, lowerCaseCode, 60); redisUtil.set(realKey, lowerCaseCode, 60);
String base64 = RandImageUtil.generate(code); String base64 = RandImageUtil.generate(code);
res.setSuccess(true); res.setSuccess(true);
@@ -373,7 +377,7 @@ public class LoginServiceImpl implements ILoginService {
@Override @Override
public Result<JSONObject> mLogin(SysLoginModel sysLoginModel) { public Result<JSONObject> mLogin(SysLoginModel sysLoginModel) {
Result<JSONObject> result = new Result<JSONObject>(); Result<JSONObject> result ;
String username = sysLoginModel.getUsername(); String username = sysLoginModel.getUsername();
String password = sysLoginModel.getPassword(); String password = sysLoginModel.getPassword();
@@ -395,7 +399,7 @@ public class LoginServiceImpl implements ILoginService {
if(oConvertUtils.isEmpty(orgCode)) { if(oConvertUtils.isEmpty(orgCode)) {
//如果当前用户无选择部门 查看部门关联信息 //如果当前用户无选择部门 查看部门关联信息
List<SysDepart> departs = sysDepartService.queryUserDeparts(sysUser.getId()); List<SysDepart> departs = sysDepartService.queryUserDeparts(sysUser.getId());
if (departs == null || departs.size() == 0) { if (departs == null || departs.isEmpty()) {
return Result.error("用户暂未归属部门,不可登录!"); return Result.error("用户暂未归属部门,不可登录!");
} }
orgCode = departs.get(0).getOrgCode(); orgCode = departs.get(0).getOrgCode();
@@ -404,7 +408,7 @@ public class LoginServiceImpl implements ILoginService {
} }
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
//用户登录信息 //用户登录信息
obj.put("userInfo", sysUser); obj.put(USER_INFO, sysUser);
// 生成token // 生成token
String token = JwtUtil.sign(username, syspassword); String token = JwtUtil.sign(username, syspassword);
@@ -417,7 +421,7 @@ public class LoginServiceImpl implements ILoginService {
result.setResult(obj); result.setResult(obj);
result.setSuccess(true); result.setSuccess(true);
result.setCode(200); result.setCode(200);
baseCommonService.addLog("用户名: " + username + ",登录成功[移动端]", CommonConstant.LOG_TYPE_1, null); baseCommonService.addLog(USER_NAME + username + ",登录成功[移动端]", CommonConstant.LOG_TYPE_1, null);
return result; return result;
} }
@@ -429,7 +433,7 @@ public class LoginServiceImpl implements ILoginService {
return Result.error("验证码无效"); return Result.error("验证码无效");
} }
String lowerCaseCaptcha = captcha.toLowerCase(); String lowerCaseCaptcha = captcha.toLowerCase();
String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+checkKey, "utf-8"); String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+checkKey, UTF_8);
Object checkCode = redisUtil.get(realKey); Object checkCode = redisUtil.get(realKey);
if(checkCode==null || !checkCode.equals(lowerCaseCaptcha)) { if(checkCode==null || !checkCode.equals(lowerCaseCaptcha)) {
return Result.error("验证码错误"); return Result.error("验证码错误");
@@ -457,6 +461,7 @@ public class LoginServiceImpl implements ILoginService {
* @return * @return
*/ */
private Result<JSONObject> userInfo(SysUser sysUser, Result<JSONObject> result) { private Result<JSONObject> userInfo(SysUser sysUser, Result<JSONObject> result) {
String multiDepart ="multi_depart";
String syspassword = sysUser.getPassword(); String syspassword = sysUser.getPassword();
String username = sysUser.getUsername(); String username = sysUser.getUsername();
@@ -464,11 +469,11 @@ public class LoginServiceImpl implements ILoginService {
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
List<SysDepart> departs = sysDepartService.queryUserDeparts(sysUser.getId()); List<SysDepart> departs = sysDepartService.queryUserDeparts(sysUser.getId());
obj.put("departs", departs); obj.put("departs", departs);
if (departs == null || departs.size() == 0) { if (departs == null || departs.isEmpty()) {
obj.put("multi_depart", 0); obj.put(multiDepart, 0);
} else if (departs.size() == 1) { } else if (departs.size() == 1) {
sysUserService.updateUserDepart(username, departs.get(0).getOrgCode()); sysUserService.updateUserDepart(username, departs.get(0).getOrgCode());
obj.put("multi_depart", 1); obj.put(multiDepart, 1);
} else { } else {
//查询当前是否有登录部门 //查询当前是否有登录部门
// update-begin--Author:wangshuai Date:20200805 for:如果用戶为选择部门,数据库为存在上一次登录部门,则取一条存进去 // update-begin--Author:wangshuai Date:20200805 for:如果用戶为选择部门,数据库为存在上一次登录部门,则取一条存进去
@@ -477,7 +482,7 @@ public class LoginServiceImpl implements ILoginService {
sysUserService.updateUserDepart(username, departs.get(0).getOrgCode()); sysUserService.updateUserDepart(username, departs.get(0).getOrgCode());
} }
// update-end--Author:wangshuai Date:20200805 for:如果用戶为选择部门,数据库为存在上一次登录部门,则取一条存进去 // update-end--Author:wangshuai Date:20200805 for:如果用戶为选择部门,数据库为存在上一次登录部门,则取一条存进去
obj.put("multi_depart", 2); obj.put(multiDepart, 2);
} }
// update-begin--Author:sunjianlei Date:20210802 for:获取用户租户信息 // update-begin--Author:sunjianlei Date:20210802 for:获取用户租户信息
@@ -486,7 +491,7 @@ public class LoginServiceImpl implements ILoginService {
List<String> tenantIdList = Arrays.asList(tenantIds.split(",")); List<String> tenantIdList = Arrays.asList(tenantIds.split(","));
// 该方法仅查询有效的租户,如果返回0个就说明所有的租户均无效。 // 该方法仅查询有效的租户,如果返回0个就说明所有的租户均无效。
List<SysTenant> tenantList = sysTenantService.queryEffectiveTenant(tenantIdList); List<SysTenant> tenantList = sysTenantService.queryEffectiveTenant(tenantIdList);
if (tenantList.size() == 0) { if (tenantList.isEmpty()) {
return Result.error("与该用户关联的租户均已被冻结,无法登录!"); return Result.error("与该用户关联的租户均已被冻结,无法登录!");
} else { } else {
obj.put("tenantList", tenantList); obj.put("tenantList", tenantList);
@@ -500,7 +505,7 @@ public class LoginServiceImpl implements ILoginService {
redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME / 1000); redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME / 1000);
obj.put("token", token); obj.put("token", token);
obj.put("userInfo", sysUser); obj.put(USER_INFO, sysUser);
obj.put("sysAllDictItems", sysDictService.queryAllDictItems()); obj.put("sysAllDictItems", sysDictService.queryAllDictItems());
result.setResult(obj); result.setResult(obj);
result.setMessage("登录成功"); result.setMessage("登录成功");