|  | @ -1,6 +1,7 @@
 | 
												
													
														
															|  | package com.yihu.wlyy.web.common.account;
 |  | package com.yihu.wlyy.web.common.account;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  | import com.yihu.wlyy.entity.doctor.profile.Doctor;
 |  | import com.yihu.wlyy.entity.doctor.profile.Doctor;
 | 
												
													
														
															|  | 
 |  | import com.yihu.wlyy.entity.login.LoginLog;
 | 
												
													
														
															|  | import com.yihu.wlyy.entity.patient.Patient;
 |  | import com.yihu.wlyy.entity.patient.Patient;
 | 
												
													
														
															|  | import com.yihu.wlyy.entity.security.Token;
 |  | import com.yihu.wlyy.entity.security.Token;
 | 
												
													
														
															|  | import com.yihu.wlyy.repository.security.TokenDao;
 |  | import com.yihu.wlyy.repository.security.TokenDao;
 | 
												
											
												
													
														
															|  | @ -9,6 +10,7 @@ import com.yihu.wlyy.service.common.account.DoctorService;
 | 
												
													
														
															|  | import com.yihu.wlyy.service.common.account.PatientService;
 |  | import com.yihu.wlyy.service.common.account.PatientService;
 | 
												
													
														
															|  | import com.yihu.wlyy.service.common.account.RoleService;
 |  | import com.yihu.wlyy.service.common.account.RoleService;
 | 
												
													
														
															|  | import com.yihu.wlyy.service.common.account.TokenService;
 |  | import com.yihu.wlyy.service.common.account.TokenService;
 | 
												
													
														
															|  | 
 |  | import com.yihu.wlyy.service.common.login.LoginLogService;
 | 
												
													
														
															|  | import com.yihu.wlyy.util.DateUtil;
 |  | import com.yihu.wlyy.util.DateUtil;
 | 
												
													
														
															|  | import com.yihu.wlyy.util.MD5;
 |  | import com.yihu.wlyy.util.MD5;
 | 
												
													
														
															|  | import com.yihu.wlyy.util.RSAUtils;
 |  | import com.yihu.wlyy.util.RSAUtils;
 | 
												
											
												
													
														
															|  | @ -66,6 +68,8 @@ public class LoginController extends BaseController {
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     @Autowired
 |  |     @Autowired
 | 
												
													
														
															|  |     private RoleService roleService;
 |  |     private RoleService roleService;
 | 
												
													
														
															|  | 
 |  |     @Autowired
 | 
												
													
														
															|  | 
 |  |     private LoginLogService loginLogService;
 | 
												
													
														
															|  | 
 |  | 
 | 
												
													
														
															|  |     /**
 |  |     /**
 | 
												
													
														
															|  |      * 公钥生成并返回接口
 |  |      * 公钥生成并返回接口
 | 
												
											
												
													
														
															|  | @ -138,21 +142,37 @@ public class LoginController extends BaseController {
 | 
												
													
														
															|  |                          @RequestParam(required = false) String captcha,
 |  |                          @RequestParam(required = false) String captcha,
 | 
												
													
														
															|  |                          @RequestParam(required = false) String idcard,
 |  |                          @RequestParam(required = false) String idcard,
 | 
												
													
														
															|  |                          @RequestParam(required = false) String password) {
 |  |                          @RequestParam(required = false) String password) {
 | 
												
													
														
															|  | 
 |  |         String errorMessage;
 | 
												
													
														
															|  | 
 |  |         LoginLog loginLog=new LoginLog();
 | 
												
													
														
															|  | 
 |  |         loginLog.setCreateTime(new Date());
 | 
												
													
														
															|  | 
 |  |         loginLog.setPhone(mobile);
 | 
												
													
														
															|  | 
 |  |         loginLog.setType("2");
 | 
												
													
														
															|  | 
 |  |         loginLog.setUserType("2");
 | 
												
													
														
															|  |         try {
 |  |         try {
 | 
												
													
														
															|  |             if (StringUtils.isEmpty(getIMEI())) {
 |  |             if (StringUtils.isEmpty(getIMEI())) {
 | 
												
													
														
															|  |                 return error(-1, "获取手机IMEI码失败!");
 |  | 
 | 
												
													
														
															|  | 
 |  |                 errorMessage="获取手机IMEI码失败!";
 | 
												
													
														
															|  | 
 |  |                 loginLog.setErrorMessage(errorMessage);
 | 
												
													
														
															|  | 
 |  |                 loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  | 
 |  |                 return error(-1, errorMessage);
 | 
												
													
														
															|  |             }
 |  |             }
 | 
												
													
														
															|  |             //身份证登录
 |  |             //身份证登录
 | 
												
													
														
															|  |             if(StringUtils.isNoneEmpty(mobile)&&StringUtils.isNoneEmpty(password)){
 |  |             if(StringUtils.isNoneEmpty(mobile)&&StringUtils.isNoneEmpty(password)){
 | 
												
													
														
															|  |                 password = RSAUtils.getInstance(doctorService).decryptString(password);
 |  |                 password = RSAUtils.getInstance(doctorService).decryptString(password);
 | 
												
													
														
															|  |                 Doctor doctor=doctorService.findDoctorByMobile(mobile);
 |  |                 Doctor doctor=doctorService.findDoctorByMobile(mobile);
 | 
												
													
														
															|  | 
 |  |                 loginLog.setUserCode(doctor.getCode());
 | 
												
													
														
															|  | 
 |  |                 loginLog.setLoginType("2");
 | 
												
													
														
															|  |                 if(doctor==null){
 |  |                 if(doctor==null){
 | 
												
													
														
															|  |                     return error(-1, "该身份证未注册!");
 |  | 
 | 
												
													
														
															|  | 
 |  |                     errorMessage="该身份证未注册!";
 | 
												
													
														
															|  | 
 |  |                     loginLog.setErrorMessage(errorMessage);
 | 
												
													
														
															|  | 
 |  |                     loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  | 
 |  |                     return error(-1,errorMessage);
 | 
												
													
														
															|  |                 }
 |  |                 }
 | 
												
													
														
															|  |                 String loginPassword= MD5.GetMD5Code(password+doctor.getSalt());
 |  |                 String loginPassword= MD5.GetMD5Code(password+doctor.getSalt());
 | 
												
													
														
															|  |                 if(loginPassword.equals(doctor.getPassword())){
 |  |                 if(loginPassword.equals(doctor.getPassword())){
 | 
												
													
														
															|  |                     // 用户校验通过,生成token
 |  |                     // 用户校验通过,生成token
 | 
												
													
														
															|  |                     Token token = tokenService.newToken(doctor.getCode(), getIMEI(), 2);
 |  |                     Token token = tokenService.newToken(doctor.getCode(), getIMEI(), 2);
 | 
												
													
														
															|  | 
 |  |                     loginLog.setTokenId(token.getId());
 | 
												
													
														
															|  | 
 |  |                     loginLog.setType("1");
 | 
												
													
														
															|  |                     Map<String, Object> map = new HashMap<>();
 |  |                     Map<String, Object> map = new HashMap<>();
 | 
												
													
														
															|  |                     map.put("id", doctor.getId());
 |  |                     map.put("id", doctor.getId());
 | 
												
													
														
															|  |                     map.put("uid", doctor.getCode());
 |  |                     map.put("uid", doctor.getCode());
 | 
												
											
												
													
														
															|  | @ -166,30 +186,53 @@ public class LoginController extends BaseController {
 | 
												
													
														
															|  |                     List<Map<String, String>> roleMap = roleService.getUserRoleAndArea(doctor.getCode());
 |  |                     List<Map<String, String>> roleMap = roleService.getUserRoleAndArea(doctor.getCode());
 | 
												
													
														
															|  |                     map.put("userRole", roleMap);
 |  |                     map.put("userRole", roleMap);
 | 
												
													
														
															|  |                     if("10".equals(doctor.getLevel())&&roleMap.size()==0){
 |  |                     if("10".equals(doctor.getLevel())&&roleMap.size()==0){
 | 
												
													
														
															|  |                         return error(-1, "改用户没有管理员权限");
 |  | 
 | 
												
													
														
															|  | 
 |  |                         errorMessage="改用户没有管理员权限";
 | 
												
													
														
															|  | 
 |  |                         loginLog.setErrorMessage(errorMessage);
 | 
												
													
														
															|  | 
 |  |                         loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  | 
 |  |                         return error(-1, errorMessage);
 | 
												
													
														
															|  |                     }
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                     loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  |                     return write(200, "登录成功", "data", map);
 |  |                     return write(200, "登录成功", "data", map);
 | 
												
													
														
															|  |                 }else{
 |  |                 }else{
 | 
												
													
														
															|  |                     return error(-1, "密码错误,登录失败");
 |  | 
 | 
												
													
														
															|  | 
 |  |                     errorMessage="密码错误,登录失败";
 | 
												
													
														
															|  | 
 |  |                     loginLog.setErrorMessage(errorMessage);
 | 
												
													
														
															|  | 
 |  |                     loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  | 
 |  |                     return error(-1, errorMessage);
 | 
												
													
														
															|  |                 }
 |  |                 }
 | 
												
													
														
															|  |             }
 |  |             }
 | 
												
													
														
															|  |             if(StringUtils.isNoneEmpty(mobile)&&StringUtils.isNoneEmpty(captcha)){
 |  |             if(StringUtils.isNoneEmpty(mobile)&&StringUtils.isNoneEmpty(captcha)){
 | 
												
													
														
															|  |                 // 对验证码进行校验
 |  |                 // 对验证码进行校验
 | 
												
													
														
															|  |                 int res = smsService.check(mobile, 5, captcha);
 |  |                 int res = smsService.check(mobile, 5, captcha);
 | 
												
													
														
															|  |                 switch (res) {
 |  |                 switch (res) {
 | 
												
													
														
															|  |                     case -2:
 |  | 
 | 
												
													
														
															|  |                         return error(-1, "验证码已过期!");
 |  | 
 | 
												
													
														
															|  |                     case -1:
 |  | 
 | 
												
													
														
															|  |                         return error(-1, "请输入正确的验证码!");
 |  | 
 | 
												
													
														
															|  |                     case 0:
 |  | 
 | 
												
													
														
															|  |                         return error(-1, "验证码无效!");
 |  | 
 | 
												
													
														
															|  | 
 |  |                     case -2:{
 | 
												
													
														
															|  | 
 |  |                         errorMessage="验证码已过期!";
 | 
												
													
														
															|  | 
 |  |                         loginLog.setErrorMessage(errorMessage);
 | 
												
													
														
															|  | 
 |  |                         loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  | 
 |  |                         return error(-1, errorMessage);}
 | 
												
													
														
															|  | 
 |  |                     case -1:{
 | 
												
													
														
															|  | 
 |  |                         errorMessage="请输入正确的验证码!";
 | 
												
													
														
															|  | 
 |  |                         loginLog.setErrorMessage(errorMessage);
 | 
												
													
														
															|  | 
 |  |                         loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  | 
 |  |                         return error(-1, errorMessage);}
 | 
												
													
														
															|  | 
 |  |                     case 0:{
 | 
												
													
														
															|  | 
 |  |                         errorMessage="验证码无效!";
 | 
												
													
														
															|  | 
 |  |                         loginLog.setErrorMessage(errorMessage);
 | 
												
													
														
															|  | 
 |  |                         loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  | 
 |  |                         return error(-1, errorMessage);}
 | 
												
													
														
															|  |                 }
 |  |                 }
 | 
												
													
														
															|  |                 Doctor doctor = doctorService.findDoctorByMobile(mobile);
 |  |                 Doctor doctor = doctorService.findDoctorByMobile(mobile);
 | 
												
													
														
															|  | 
 |  |                 loginLog.setUserCode(doctor.getCode());
 | 
												
													
														
															|  | 
 |  |                 loginLog.setLoginType("1");
 | 
												
													
														
															|  |                 if (doctor == null) {
 |  |                 if (doctor == null) {
 | 
												
													
														
															|  |                     return error(-1, "该手机号未注册,请确认!");
 |  | 
 | 
												
													
														
															|  | 
 |  |                      errorMessage="该手机号未注册,请确认!";
 | 
												
													
														
															|  | 
 |  |                     loginLog.setErrorMessage(errorMessage);
 | 
												
													
														
															|  | 
 |  |                     loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  | 
 |  |                     return error(-1, errorMessage);
 | 
												
													
														
															|  |                 } else {
 |  |                 } else {
 | 
												
													
														
															|  |                     // 用户校验通过,生成token
 |  |                     // 用户校验通过,生成token
 | 
												
													
														
															|  |                     Token token = tokenService.newToken(doctor.getCode(), getIMEI(), 2);
 |  |                     Token token = tokenService.newToken(doctor.getCode(), getIMEI(), 2);
 | 
												
													
														
															|  | 
 |  |                     loginLog.setTokenId(token.getId());
 | 
												
													
														
															|  | 
 |  |                     loginLog.setType("1");
 | 
												
													
														
															|  |                     Map<String, Object> map = new HashMap<>();
 |  |                     Map<String, Object> map = new HashMap<>();
 | 
												
													
														
															|  |                     map.put("id", doctor.getId());
 |  |                     map.put("id", doctor.getId());
 | 
												
													
														
															|  |                     map.put("uid", doctor.getCode());
 |  |                     map.put("uid", doctor.getCode());
 | 
												
											
												
													
														
															|  | @ -203,13 +246,22 @@ public class LoginController extends BaseController {
 | 
												
													
														
															|  |                     List<Map<String, String>> roleMap = roleService.getUserRoleAndArea(doctor.getCode());
 |  |                     List<Map<String, String>> roleMap = roleService.getUserRoleAndArea(doctor.getCode());
 | 
												
													
														
															|  |                     map.put("userRole", roleMap);
 |  |                     map.put("userRole", roleMap);
 | 
												
													
														
															|  |                     if("10".equals(doctor.getLevel())&&roleMap.size()==0){
 |  |                     if("10".equals(doctor.getLevel())&&roleMap.size()==0){
 | 
												
													
														
															|  |                         return error(-1, "改用户没有管理员权限");
 |  | 
 | 
												
													
														
															|  | 
 |  |                         errorMessage="改用户没有管理员权限";
 | 
												
													
														
															|  | 
 |  |                         loginLog.setErrorMessage(errorMessage);
 | 
												
													
														
															|  | 
 |  |                         loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  | 
 |  |                         return error(-1, errorMessage);
 | 
												
													
														
															|  |                     }
 |  |                     }
 | 
												
													
														
															|  | 
 |  |                     loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  |                     return write(200, "登录成功", "data", map);
 |  |                     return write(200, "登录成功", "data", map);
 | 
												
													
														
															|  |                 }
 |  |                 }
 | 
												
													
														
															|  |             }
 |  |             }
 | 
												
													
														
															|  |             return error(-1, "登录信息不完整,请重新输入!");
 |  | 
 | 
												
													
														
															|  | 
 |  |             errorMessage="登录信息不完整,请重新输入!";
 | 
												
													
														
															|  | 
 |  |             loginLog.setErrorMessage(errorMessage);
 | 
												
													
														
															|  | 
 |  |             loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  | 
 |  |             return error(-1,errorMessage);
 | 
												
													
														
															|  |         } catch (Exception e) {
 |  |         } catch (Exception e) {
 | 
												
													
														
															|  | 
 |  |             loginLog.setErrorMessage(e.getMessage());
 | 
												
													
														
															|  | 
 |  |             loginLogService.saveLog(loginLog);
 | 
												
													
														
															|  |             error(e);
 |  |             error(e);
 | 
												
													
														
															|  |             return error(-1, "系统异常,登录失败");
 |  |             return error(-1, "系统异常,登录失败");
 | 
												
													
														
															|  |         }
 |  |         }
 |