浏览代码

新增登录方式

esb 8 年之前
父节点
当前提交
275484d700

+ 3 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/repository/doctor/DoctorDao.java

@ -131,4 +131,7 @@ public interface DoctorDao extends PagingAndSortingRepository<Doctor, Long>, Jpa
    @Query("select p from Doctor p where p.isFamous=1 ")
    Page<Doctor> doctorFamousDoctorList(Pageable pageRequest);
    @Query("select p from Doctor p where p.idcard = ?1")
    Doctor findbyIdCard(String idcard);
}

+ 4 - 0
patient-co-wlyy/src/main/java/com/yihu/wlyy/service/common/account/DoctorService.java

@ -104,4 +104,8 @@ public class DoctorService extends TokenService {
			return doctorDao.doctorFamousDoctorList(pageRequest);
		}
	}
	public Doctor findbyIdCard(String idcard) {
		return doctorDao.findbyIdCard(idcard);
	}
}

+ 134 - 65
patient-co-wlyy/src/main/java/com/yihu/wlyy/web/common/account/LoginController.java

@ -10,6 +10,7 @@ import com.yihu.wlyy.service.common.account.PatientService;
import com.yihu.wlyy.service.common.account.RoleService;
import com.yihu.wlyy.service.common.account.TokenService;
import com.yihu.wlyy.util.DateUtil;
import com.yihu.wlyy.util.MD5;
import com.yihu.wlyy.util.RSAUtils;
import com.yihu.wlyy.util.SystemData;
import com.yihu.wlyy.web.BaseController;
@ -125,50 +126,88 @@ public class LoginController extends BaseController {
    /**
     * 医生登录接口
     *
     * @param mobile  手机号
     *  @param mobile  手机号
     * @param captcha 短信验证码
     * @param idcard  身份证号
     * @param password 密码
     * @return
     */
    @RequestMapping(value = "doctor")
    @ResponseBody
    public String doctor(String mobile, String captcha) {
    public String doctor(@RequestParam(required = false) String mobile,
                         @RequestParam(required = false) String captcha,
                         @RequestParam(required = false) String idcard,
                         @RequestParam(required = false) String password) {
        try {
            if (StringUtils.isEmpty(getIMEI())) {
                return error(-1, "获取手机IMEI码失败!");
            }
            // 对验证码进行校验
            int res = smsService.check(mobile, 5, captcha);
            switch (res) {
                case -2:
                    return error(-1, "验证码已过期!");
                case -1:
                    return error(-1, "请输入正确的验证码!");
                case 0:
                    return error(-1, "验证码无效!");
            //身份证登录
            if(StringUtils.isNoneEmpty(idcard)&&StringUtils.isNoneEmpty(password)){
                Doctor doctor=doctorService.findbyIdCard(idcard);
                if(doctor==null){
                    return error(-1, "该身份证未注册!");
                }
                String loginPassword= MD5.GetMD5Code(password+doctor.getSalt());
                if(loginPassword.equals(doctor.getPassword())){
                    // 用户校验通过,生成token
                    Token token = tokenService.newToken(doctor.getCode(), getIMEI(), 2);
                    Map<String, Object> map = new HashMap<>();
                    map.put("id", doctor.getId());
                    map.put("uid", doctor.getCode());
                    map.put("token", token.getToken());
                    map.put("name", doctor.getName());
                    map.put("hospital", doctor.getHospital());
                    map.put("photo", doctor.getPhoto());
                    // 设置医生类型:1专科医生,2全科医生,3健康管理师
                    map.put("doctorType", doctor.getLevel());
                    //获取医生角色和区域权限
                    List<Map<String, String>> roleMap = roleService.getUserRoleAndArea(doctor.getCode());
                    map.put("userRole", roleMap);
                    if("10".equals(doctor.getLevel())&&roleMap.size()==0){
                        return error(-1, "改用户没有管理员权限");
                    }
                    return write(200, "登录成功", "data", map);
                }else{
                    return error(-1, "密码错误,登录失败");
                }
            }
            Doctor doctor = doctorService.findDoctorByMobile(mobile);
            if (doctor == null) {
                return error(-1, "该手机号未注册,请确认!");
            } else {
                // 用户校验通过,生成token
                Token token = tokenService.newToken(doctor.getCode(), getIMEI(), 2);
                Map<String, Object> map = new HashMap<>();
                map.put("id", doctor.getId());
                map.put("uid", doctor.getCode());
                map.put("token", token.getToken());
                map.put("name", doctor.getName());
                map.put("hospital", doctor.getHospital());
                map.put("photo", doctor.getPhoto());
                // 设置医生类型:1专科医生,2全科医生,3健康管理师
                map.put("doctorType", doctor.getLevel());
                //获取医生角色和区域权限
                List<Map<String, String>> roleMap = roleService.getUserRoleAndArea(doctor.getCode());
                map.put("userRole", roleMap);
                if("10".equals(doctor.getLevel())&&roleMap.size()==0){
                    return error(-1, "改用户没有管理员权限");
            if(StringUtils.isNoneEmpty(mobile)&&StringUtils.isNoneEmpty(captcha)){
                // 对验证码进行校验
                int res = smsService.check(mobile, 5, captcha);
                switch (res) {
                    case -2:
                        return error(-1, "验证码已过期!");
                    case -1:
                        return error(-1, "请输入正确的验证码!");
                    case 0:
                        return error(-1, "验证码无效!");
                }
                Doctor doctor = doctorService.findDoctorByMobile(mobile);
                if (doctor == null) {
                    return error(-1, "该手机号未注册,请确认!");
                } else {
                    // 用户校验通过,生成token
                    Token token = tokenService.newToken(doctor.getCode(), getIMEI(), 2);
                    Map<String, Object> map = new HashMap<>();
                    map.put("id", doctor.getId());
                    map.put("uid", doctor.getCode());
                    map.put("token", token.getToken());
                    map.put("name", doctor.getName());
                    map.put("hospital", doctor.getHospital());
                    map.put("photo", doctor.getPhoto());
                    // 设置医生类型:1专科医生,2全科医生,3健康管理师
                    map.put("doctorType", doctor.getLevel());
                    //获取医生角色和区域权限
                    List<Map<String, String>> roleMap = roleService.getUserRoleAndArea(doctor.getCode());
                    map.put("userRole", roleMap);
                    if("10".equals(doctor.getLevel())&&roleMap.size()==0){
                        return error(-1, "改用户没有管理员权限");
                    }
                    return write(200, "登录成功", "data", map);
                }
                return write(200, "登录成功", "data", map);
            }
            return error(-1, "登录信息不完整,请重新输入!");
        } catch (Exception e) {
            error(e);
            return error(-1, "系统异常,登录失败");
@ -180,49 +219,79 @@ public class LoginController extends BaseController {
     *
     * @param mobile  手机号
     * @param captcha 短信验证码
     * @param idcard  身份证号
     * @param password 密码
     * @return
     */
    @RequestMapping(value = "patient")
    @ResponseBody
    public String patient(String mobile, String captcha) {
    public String patient(
           @RequestParam(required = false) String mobile,
           @RequestParam(required = false) String captcha,
           @RequestParam(required = false) String idcard,
           @RequestParam(required = false) String password) {
        try {
            if (StringUtils.isEmpty(getIMEI())) {
                return error(-1, "获取手机IMEI码失败!");
            }
            // 对验证码进行校验
            int res = smsService.check(mobile, 4, captcha);
            switch (res) {
                case -2:
                    return error(-1, "验证码已过期!");
                case -1:
                    return error(-1, "请输入正确的验证码!");
                case 0:
                    return error(-1, "验证码无效!");
            //身份证登录
            if(StringUtils.isNoneEmpty(idcard)&&StringUtils.isNoneEmpty(password)){
                Patient patient= patientService.findByIdcard(idcard);
                if(patient==null){
                    return error(-1, "该身份证未注册!");
                }
                String loginPassword= MD5.GetMD5Code(password+patient.getSalt());
                if(loginPassword.equals(patient.getPassword())){
                    Token token = tokenService.newToken(patient.getCode(), getIMEI(), 1);
                    Map<Object, Object> map = new HashMap<Object, Object>();
                    map.put("id", patient.getId());
                    map.put("uid", patient.getCode());
                    map.put("name", URLEncoder.encode(patient.getName(), "UTF-8"));
                    map.put("token", token.getToken());
                    map.put("photo", patient.getPhoto());
                    return write(200, "登录成功", "data", map);
                }else{
                    return error(-1, "密码错误,登录失败");
                }
            }
            // password = RSAUtils.getInstance(doctorService).decryptString(password);
            // password = URLDecoder.decode(password, "UTF-8");
            // password = StringUtils.reverse(password);
            // idcard = RSAUtils.getInstance(doctorService).decryptString(idcard);
            // idcard = URLDecoder.decode(idcard, "UTF-8");
            // idcard = StringUtils.reverse(idcard);
            Patient patient = patientService.findByMobile(mobile);
            if (patient == null) {
                return error(-1, "该手机号暂未注册帐号,请确认后重新输入!");
            } else if (patient.getStatus() == 0) {
                return error(-1, "该手机号已被禁止使用!");
            } else if (patient.getStatus() == 2) {
                return error(-1, "该帐号正在审核中,请确认审核通过后再登录,“如有疑问,拨打400-6677-400转2人工客服”");
            } else {
                // 用户校验通过,生成token
                Token token = tokenService.newToken(patient.getCode(), getIMEI(), 1);
                Map<Object, Object> map = new HashMap<Object, Object>();
                map.put("id", patient.getId());
                map.put("uid", patient.getCode());
                map.put("name", URLEncoder.encode(patient.getName(), "UTF-8"));
                map.put("token", token.getToken());
                map.put("photo", patient.getPhoto());
                return write(200, "登录成功", "data", map);
            //短信登录
            if(StringUtils.isNoneEmpty(mobile)&&StringUtils.isNoneEmpty(captcha)){
                // 对验证码进行校验
                int res = smsService.check(mobile, 4, captcha);
                switch (res) {
                    case -2:
                        return error(-1, "验证码已过期!");
                    case -1:
                        return error(-1, "请输入正确的验证码!");
                    case 0:
                        return error(-1, "验证码无效!");
                }
                // password = RSAUtils.getInstance(doctorService).decryptString(password);
                // password = URLDecoder.decode(password, "UTF-8");
                // password = StringUtils.reverse(password);
                // idcard = RSAUtils.getInstance(doctorService).decryptString(idcard);
                // idcard = URLDecoder.decode(idcard, "UTF-8");
                // idcard = StringUtils.reverse(idcard);
                Patient patient = patientService.findByMobile(mobile);
                if (patient == null) {
                    return error(-1, "该手机号暂未注册帐号,请确认后重新输入!");
                } else if (patient.getStatus() == 0) {
                    return error(-1, "该手机号已被禁止使用!");
                } else if (patient.getStatus() == 2) {
                    return error(-1, "该帐号正在审核中,请确认审核通过后再登录,“如有疑问,拨打400-6677-400转2人工客服”");
                } else {
                    // 用户校验通过,生成token
                    Token token = tokenService.newToken(patient.getCode(), getIMEI(), 1);
                    Map<Object, Object> map = new HashMap<Object, Object>();
                    map.put("id", patient.getId());
                    map.put("uid", patient.getCode());
                    map.put("name", URLEncoder.encode(patient.getName(), "UTF-8"));
                    map.put("token", token.getToken());
                    map.put("photo", patient.getPhoto());
                    return write(200, "登录成功", "data", map);
                }
            }
            return error(-1, "登录信息不完整,请重新输入!");
        } catch (Exception e) {
            error(e);
            return error(-1, "系统异常,登录失败");