package com.template.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.template.annotation.PassToken; import com.template.api.LoginControllerAPI; import com.template.common.utils.AesUtils; import com.template.common.utils.JWTUtil; import com.template.common.utils.RSAUtils; import com.template.common.utils.paramUtils; import com.template.config.MySecurity; import com.template.model.pojo.Admin; import com.template.model.pojo.PermissionSetting; import com.template.model.request.changePasswordRequest; import com.template.model.request.loginRequest; import com.template.model.result.CommonResult; import com.template.model.vo.LoginVO; import com.template.services.AdminService; import com.template.services.PermissionSettingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; /** * @Author: binguo * @Date: 2023/7/5 星期三 9:28 * @Description: com.template.controller * @Version: 1.0 */ @RestController public class LoginController implements LoginControllerAPI { @Autowired private AdminService adminService; @Autowired MySecurity mySecurity; @Autowired PermissionSettingService permissionSettingService; /** * 登录接口 * @param loginRequest * account 账号 * password 密码 * @return * */ @Override @PassToken public CommonResult Login(@RequestBody loginRequest loginRequest, BindingResult bindingResult) { if(loginRequest == null){ return CommonResult.fail("请传递参数"); } if (bindingResult.hasErrors()) { String st = paramUtils.getParamError(bindingResult); return CommonResult.fail(st); } Admin result = adminService.getAdminByAccount(loginRequest.getAccount()); if(result == null){ return CommonResult.fail("账号或密码错误"); } try { // 传入的解密 String decryptData = RSAUtils.decrypt(loginRequest.getPassword(),RSAUtils.getPrivateKey(mySecurity.privateKey)); // 原密码解密 String decrypt = RSAUtils.decrypt(result.getPassWord(), RSAUtils.getPrivateKey(mySecurity.privateKey)); if(!decryptData.equals(decrypt)){ return CommonResult.fail("密码错误"); } String adminMenuId = result.getAdminMenuId(); // 通过adminMenuId获取权限表的id LambdaQueryWrapper wrapper=new LambdaQueryWrapper<>(); wrapper.eq(PermissionSetting::getAdminMenuId,adminMenuId); PermissionSetting one = permissionSettingService.getOne(wrapper); // JSONObject jsonObject = new JSONObject(); //// 房态 // String houseStatusManagement = one.getHouseStatusManagement(); // if (ObjectUtils.isEmpty(houseStatusManagement)) { // jsonObject.put("houseStatusManagement",0); // }else { // jsonObject.put("houseStatusManagement",1); // } //// 房型 // String houseTypeManagement = one.getHouseTypeManagement(); // // if (ObjectUtils.isEmpty(houseTypeManagement)) { // jsonObject.put("houseTypeManagement",0); // }else { // if (houseTypeManagement.contains("0")) { // // houseType.put("houseType",1); // houseType.put("housePrice",1); // jsonObject.put("houseTypeManagement",houseType); // } // } String token = JWTUtil.getAdminToken(result); LoginVO login = new LoginVO(); login.setToken(token); login.setTokenTtl(JWTUtil.getExpired()); login.setUserName(result.getName()); login.setId(result.getId()); login.setPermissionSettingId(one.getId()); login.setUser_head(AesUtils.encrypt(result.getId()+"")); login.setPermissionSetting(one); return CommonResult.ok("登录成功",login); }catch (Exception e){ e.printStackTrace(); return CommonResult.fail("密码错误"); } } /** * 修改密码 * @param cpr * oldPassword 旧密码 * newPassword 新密码 * confirmPassword 确认密码 * @param bindingResult * @return */ @Override public CommonResult ChangePassword(changePasswordRequest cpr, BindingResult bindingResult) { if (bindingResult.hasErrors()) { String st = paramUtils.getParamError(bindingResult); return CommonResult.fail(st); } Admin admin = adminService.getById(cpr.getAdminId()); if(admin == null){ return CommonResult.fail("当前账号不合法!"); } try { // 新密码码解密 String newPassWord = RSAUtils.decrypt(cpr.getNewPassword(), RSAUtils.getPrivateKey(mySecurity.privateKey)); // 确认密码解密 String confirmPassword = RSAUtils.decrypt(cpr.getConfirmPassword(), RSAUtils.getPrivateKey(mySecurity.privateKey)); if(!newPassWord.equals(confirmPassword)){ return CommonResult.fail("确认密码和新密码不一致!"); } // 传入的旧解密 String decryptData = RSAUtils.decrypt(cpr.getOldPassword(), RSAUtils.getPrivateKey(mySecurity.privateKey)); if (newPassWord.equals(decryptData)) { return CommonResult.fail("新密码和旧密码一致!"); } // 原密码解密 String decrypt = RSAUtils.decrypt(admin.getPassWord(), RSAUtils.getPrivateKey(mySecurity.privateKey)); if (!decryptData.equals(decrypt)) { return CommonResult.fail("原密码错误!"); } admin.setPassWord(cpr.getNewPassword()); boolean update = adminService.updateById(admin); if (update) { return CommonResult.ok("修改成功"); } }catch (Exception e){ e.printStackTrace(); } return CommonResult.fail(); } }