|
@ -1,5 +1,6 @@
|
|
|
package com.yihu.jw.base.service.user;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
@ -17,11 +18,15 @@ import com.yihu.jw.entity.base.org.BaseOrgUserDO;
|
|
|
import com.yihu.jw.entity.base.role.RoleDO;
|
|
|
import com.yihu.jw.entity.base.saas.SaasDO;
|
|
|
import com.yihu.jw.entity.base.user.UserDO;
|
|
|
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
|
|
|
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import com.yihu.mysql.query.BaseJpaService;
|
|
|
import com.yihu.utils.security.MD5;
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
@ -61,9 +66,15 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
|
|
|
|
|
|
@Autowired
|
|
|
private BaseOrgSaasService baseOrgSaasService;
|
|
|
|
|
|
@Autowired
|
|
|
private StringRedisTemplate redisTemplate;
|
|
|
|
|
|
@Value("${configDefault.saasId}")
|
|
|
private String defaultSaasId;
|
|
|
|
|
|
@Autowired
|
|
|
private WlyyHospitalSysDictDao wlyyHospitalSysDictDao;
|
|
|
|
|
|
|
|
|
public UserDO registerWithIdcard(UserDO userDO) {
|
|
@ -214,9 +225,44 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
//密码过期
|
|
|
userinfo.put("authPw",findDoctorPwlimitDate(id));
|
|
|
|
|
|
return userinfo;
|
|
|
}
|
|
|
|
|
|
public com.alibaba.fastjson.JSONObject findDoctorPwlimitDate(String user){
|
|
|
String key = "base:authPw:iser:" + user;
|
|
|
String authPw = redisTemplate.opsForValue().get(key);
|
|
|
com.alibaba.fastjson.JSONObject valueJson = null;
|
|
|
if(org.apache.commons.lang3.StringUtils.isNotBlank(authPw)){
|
|
|
|
|
|
WlyyHospitalSysDictDO wlyyHospitalSysDictDO = wlyyHospitalSysDictDao.findById("pwOverDue");
|
|
|
String code[] = wlyyHospitalSysDictDO.getDictCode().split(",");
|
|
|
Integer maxDateInt = Integer.parseInt(code[0]);
|
|
|
Integer remainDateInt = Integer.parseInt(code[1]);
|
|
|
|
|
|
valueJson = JSON.parseObject(authPw);
|
|
|
Long updateTimeLong = valueJson.getLong("updateTime");
|
|
|
Date updateTime = new Date();
|
|
|
updateTime.setTime(updateTimeLong);
|
|
|
Date maxDate = DateUtil.getPreDays(updateTime,maxDateInt);
|
|
|
|
|
|
Long betweenDate = (maxDate.getTime() - new Date().getTime())/(60*60*24*1000);
|
|
|
valueJson.put("betweenDate",betweenDate);
|
|
|
if(betweenDate<remainDateInt){
|
|
|
valueJson.put("remaind",true);
|
|
|
}else {
|
|
|
valueJson.put("remaind",false);
|
|
|
}
|
|
|
}else {
|
|
|
valueJson = new com.alibaba.fastjson.JSONObject();
|
|
|
valueJson.put("isChanged",false);
|
|
|
}
|
|
|
return valueJson;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
@ -427,6 +473,58 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 用户修改密码
|
|
|
* @param userId
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONObject updatePwd(String userId,String pwd,String oldpwd){
|
|
|
JSONObject result = new JSONObject();
|
|
|
UserDO user = userDao.findOne(userId);
|
|
|
if(null == user){
|
|
|
result.put("response", ConstantUtils.FAIL);
|
|
|
result.put("msg","user not exist for id : " + userId);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
String orgPwMd5 = MD5.md5Hex(oldpwd + "{" + user.getSalt() + "}");
|
|
|
if(!orgPwMd5.equals(user.getPassword())){
|
|
|
result.put("response", ConstantUtils.FAIL);
|
|
|
result.put("msg","旧密码不正确!");
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
if(StringUtils.isEmpty(pwd)){
|
|
|
result.put("response", ConstantUtils.FAIL);
|
|
|
result.put("msg","新密码不能为空!");
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
user.setSalt(randomString(5));
|
|
|
user.setEnabled(true);
|
|
|
user.setLocked(false);
|
|
|
user.setLoginFailureCount(0);
|
|
|
user.setPassword(MD5.md5Hex(pwd + "{" + user.getSalt() + "}"));
|
|
|
userDao.save(user);
|
|
|
|
|
|
result.put("response",ConstantUtils.SUCCESS);
|
|
|
result.put("msg", "修改成功");
|
|
|
|
|
|
//设置用户密码过期时间
|
|
|
saveUserPwlimitDate(userId);
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
public boolean saveUserPwlimitDate(String user){
|
|
|
String key = "base:authPw:user:" + user;
|
|
|
com.alibaba.fastjson.JSONObject valueJson = new com.alibaba.fastjson.JSONObject();
|
|
|
valueJson.put("updateTime",new Date().getTime());
|
|
|
valueJson.put("isChanged",true);
|
|
|
redisTemplate.opsForValue().set(key,valueJson.toJSONString());
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 用户重置密码
|
|
|
* @param userId
|
|
@ -444,26 +542,26 @@ public class UserService extends BaseJpaService<UserDO, UserDao> {
|
|
|
String idcard = user.getIdcard();
|
|
|
String mobile = user.getMobile();
|
|
|
String password = null;
|
|
|
|
|
|
|
|
|
if(!StringUtils.isEmpty(password)&&idcard.length()>10){
|
|
|
password = idcard.substring(idcard.length()-6,idcard.length());
|
|
|
}else if(!StringUtils.isEmpty(mobile)&&mobile.length()>=11){
|
|
|
password = mobile.substring(mobile.length()-6,mobile.length());
|
|
|
}
|
|
|
|
|
|
|
|
|
if(StringUtils.isEmpty(password)){
|
|
|
result.put("response", ConstantUtils.FAIL);
|
|
|
result.put("msg","idcard or moblie not exist : " + userId);
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
|
|
|
user.setSalt(randomString(5));
|
|
|
user.setEnabled(true);
|
|
|
user.setLocked(false);
|
|
|
user.setLoginFailureCount(0);
|
|
|
user.setPassword(MD5.md5Hex(password + "{" + user.getSalt() + "}"));
|
|
|
userDao.save(user);
|
|
|
|
|
|
|
|
|
result.put("response",ConstantUtils.SUCCESS);
|
|
|
result.put("msg", password);
|
|
|
return result;
|