Browse Source

后台管理系统修改密码

huangwenjie 4 years ago
parent
commit
e99f8a705a

+ 1 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseRequestMapping.java

@ -161,6 +161,7 @@ public class BaseRequestMapping {
        public static final String CHECK_MOBILE = "/check_mobile";
        public static final String findUserBaseInfo = "/findUserBaseInfo";
        public static final String resetPwd = "/resetPwd";
        public static final String updatePwd = "/updatePwd";
        public static final String queryOne = "/queryOne";
        public static final String orgTreeInfo = "/orgTreeInfo";
        public static final String userInfoList = "/userInfoList";

+ 12 - 0
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/user/UserEndpoint.java

@ -11,6 +11,7 @@ import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.PageEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.rm.base.BaseRequestMapping;
import com.yihu.jw.rm.hospital.BaseHospitalRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -235,4 +236,15 @@ public class UserEndpoint extends EnvelopRestEndpoint {
        }
        return success(jsonObject.getString("msg"));
    }
    
    @PostMapping(value = BaseRequestMapping.User.updatePwd)
    @ApiOperation(value = "修账号密码")
    public Envelop updatePwd(@ApiParam(name = "id", value = "用户ID")
                                  @RequestParam(value = "id", required = true)String id,
                                  @ApiParam(name = "pw", value = "密码")
                                  @RequestParam(value = "pw", required = true)String pw,
                                  @ApiParam(name = "orgPw", value = "原密码")
                                  @RequestParam(value = "orgPw", required = true)String orgPw)throws Exception{
        return success(userService.updatePwd(id,pw,orgPw));
    }
}

+ 102 - 4
svr/svr-base/src/main/java/com/yihu/jw/base/service/user/UserService.java

@ -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;