stjdydayou 4 yıl önce
ebeveyn
işleme
e3eece24af

+ 196 - 196
src/main/java/com/zhiqiyun/open/mvc/controller/OauthController.java

@@ -35,42 +35,42 @@ import java.util.Map;
 @RequestMapping("/oauth")
 public class OauthController {
 
-    @Autowired
-    private OauthService oauthService;
-
-    @Autowired
-    private UserBaseInfoService userBaseInfoService;
-
-    @Autowired
-    private UserLoginLogService userLoginLogService;
-
-    @Autowired
-    private CaptchaService captchaService;
-
-    @Autowired
-    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
-
-    @PostMapping("/getCaptcha")
-    public Result captcha() {
-        String token = ServletContext.getAccessToken();
-        if (StringUtils.isBlank(token) || !Token.checkToken(token)) {
-            token = Token.init(ServletContext.getRemoteIPAddress()).toTokenString();
-        }
-        String captcha = captchaService.generateCaptchaBase64(token);
-        Map<String, String> dataMap = new HashMap<>();
-        dataMap.put("token", token);
-        dataMap.put("captcha", captcha);
-        if (StringUtils.isNotBlank(captcha)) {
-            return Result.instance(Result.Code.SUCCESS).setData(dataMap);
-        } else {
-            return Result.instance(Result.Code.SERVER_ERROR, "获取验证码失败");
-        }
-    }
-
-    @PostMapping("/login")
-    public Result login(@Valid @RequestBody LoginParam loginParam) {
-        UserLoginLog userLoginLog = new UserLoginLog();
-        try {
+	@Autowired
+	private OauthService oauthService;
+
+	@Autowired
+	private UserBaseInfoService userBaseInfoService;
+
+	@Autowired
+	private UserLoginLogService userLoginLogService;
+
+	@Autowired
+	private CaptchaService captchaService;
+
+	@Autowired
+	private ThreadPoolTaskExecutor threadPoolTaskExecutor;
+
+	@PostMapping("/getCaptcha")
+	public Result captcha() {
+		String token = ServletContext.getAccessToken();
+		if (StringUtils.isBlank(token) || !Token.checkToken(token)) {
+			token = Token.init(ServletContext.getRemoteIPAddress()).toTokenString();
+		}
+		String captcha = captchaService.generateCaptchaBase64(token);
+		Map<String, String> dataMap = new HashMap<>();
+		dataMap.put("token", token);
+		dataMap.put("captcha", captcha);
+		if (StringUtils.isNotBlank(captcha)) {
+			return Result.instance(Result.Code.SUCCESS).setData(dataMap);
+		} else {
+			return Result.instance(Result.Code.SERVER_ERROR, "获取验证码失败");
+		}
+	}
+
+	@PostMapping("/login")
+	public Result login(@Valid @RequestBody LoginParam loginParam) {
+		UserLoginLog userLoginLog = new UserLoginLog();
+		try {
 //            AccountType accountType = null;
 //            if (PatternUtils.validExpression(loginParam.getLoginAccount(), PatternUtils.MOBILE_EXPRESSION)) {
 //                accountType = AccountType.mp;
@@ -78,164 +78,164 @@ public class OauthController {
 //            if (PatternUtils.validExpression(loginParam.getLoginAccount(), PatternUtils.EMAIL_EXPRESSION)) {
 //                accountType = AccountType.email;
 //            }
-            userLoginLog.setLoginAccount(loginParam.getLoginAccount());
-
-            boolean compareCaptchaResult = this.captchaService.compareCaptcha(loginParam.getCaptcha(), loginParam.getToken(), true);
-            if (!compareCaptchaResult) {
-                userLoginLog.setState(UserLoginLogState.CAPTCHA_ERROR);
-                return Result.instance("验证码错误,请重新输入");
-            }
-
-            UserLoginAccount userLoginAccount = this.userBaseInfoService.findLoginAccount(loginParam.getLoginAccount());
-            if (userLoginAccount == null) {
-                userLoginLog.setState(UserLoginLogState.ACCOUNT_NOT_EXIST);
-                return Result.instance("用户名或密码错误,请重新输入");
-            } else {
-                userLoginLog.setAccountType(userLoginAccount.getAccountType());
-                UserBaseInfo userBaseInfo = this.userBaseInfoService.getById(userLoginAccount.getUid());
-
-                UserPassword userPassword = this.userBaseInfoService.findPassword(userBaseInfo.getId(), PasswordType.login);
-
-                String loginPassword = this.oauthService.generatePassword(loginParam.getLoginPassword(), userPassword.getSalt());
-                if (loginPassword.equals(userPassword.getPasswd())) {
-
-                    List<String> listAuthorities = this.userBaseInfoService.findUserAuthorities(userBaseInfo.getId());
-
-                    String accessToken = Token.init(ServletContext.getRemoteIPAddress()).toTokenString();
-                    OauthInfo oauthInfo = new OauthInfo()
-                            .setId(userBaseInfo.getId())
-                            .setAccessToken(accessToken)
-                            .setNickName(userBaseInfo.getNickName())
-                            .setAvatar(userBaseInfo.getAvatar())
-                            .setLoginTime(DateUtil.current())
-                            .setGender(userBaseInfo.getGender())
-                            .setAuthorities(listAuthorities);
-
-                    this.oauthService.setAuth(accessToken, oauthInfo);
-                    userLoginLog.setState(UserLoginLogState.SUCCESS);
-                    return Result.instance(Result.Code.SUCCESS).setData(oauthInfo);
-                } else {
-                    userLoginLog.setState(UserLoginLogState.PASSWORD_ERROR);
-                    return Result.instance("用户名或密码错误,请重新输入");
-                }
-            }
-        } catch (Exception e) {
-            log.error("", e);
-            userLoginLog.setState(UserLoginLogState.LOGIN_EXCEPTION);
-            return Result.instance("系统异常,请稍后再试");
-        } finally {
-            userLoginLog.setLoginIp(ServletContext.getRemoteIPAddress());
-            userLoginLog.setFromSource(ServletContext.getFromSource());
-            userLoginLog.setDeviceId("");
-            userLoginLog.setLoginTime(DateUtil.current());
-            userLoginLog.setLoginLocal("未知地址");
-            this.threadPoolTaskExecutor.execute(() -> userLoginLogService.save(userLoginLog));
-        }
-    }
-
-
-    @Permission(tags = "获取用户登录信息", writeLog = false)
-    @PostMapping("/getOauthInfo")
-    public Result getOauthInfo() {
-        String accessToken = ServletContext.getAccessToken();
-        OauthInfo oauthInfo = oauthService.getAuth(accessToken);
-        if (oauthInfo != null) {
-
-            UserBaseInfo userBaseInfo = this.userBaseInfoService.getById(oauthInfo.getId());
-            List<String> listAuthorities = this.userBaseInfoService.findUserAuthorities(userBaseInfo.getId());
-
-            oauthInfo.setNickName(userBaseInfo.getNickName())
-                    .setAvatar(userBaseInfo.getAvatar())
-                    .setLoginTime(DateUtil.current())
-                    .setGender(userBaseInfo.getGender())
-                    .setAuthorities(listAuthorities);
-            this.oauthService.setAuth(accessToken, oauthInfo);
-        }
-        return Result.instance(Result.Code.SUCCESS).setData(oauthInfo);
-    }
-
-    @PostMapping("/loginOut")
-    public Result loginOut() {
-        String accessToken = ServletContext.getAccessToken();
-        if (StringUtils.isNotBlank(accessToken)) {
-            this.oauthService.destroy(accessToken);
-        }
-        return Result.instance(Result.Code.SUCCESS);
-    }
-
-
-    @Permission(tags = "获取个人登录账号", writeLog = false)
-    @GetMapping("/getLoginAccounts")
-    public Result getLoginAccounts() {
-        String accessToken = ServletContext.getAccessToken();
-        OauthInfo oauthInfo = oauthService.getAuth(accessToken);
-        Map<String, Object> dataMap = new HashMap<>();
-        List<UserLoginAccount> loginAccounts = this.userBaseInfoService.findLoginAccounts(oauthInfo.getId());
-        for (UserLoginAccount account : loginAccounts) {
-            dataMap.put(account.getAccountType().name(), account.getLoginAccount());
-        }
-        return Result.instance(Result.Code.SUCCESS).setData(dataMap);
-    }
-
-    @Permission(tags = "获取个人基本信息", writeLog = false)
-    @GetMapping("/getUserBaseInfo")
-    public Result getUserBaseInfo() {
-        String accessToken = ServletContext.getAccessToken();
-        OauthInfo oauthInfo = oauthService.getAuth(accessToken);
-        UserBaseInfo userBaseInfo = this.userBaseInfoService.getById(oauthInfo.getId());
-        return Result.instance(Result.Code.SUCCESS).setData(userBaseInfo);
-    }
-
-
-    @Permission(tags = "保存个人基本信息")
-    @PostMapping("/saveUserBaseInfo")
-    public Result saveUserBaseInfo(@Valid @RequestBody SaveUserBaseInfoParam param) {
-        String accessToken = ServletContext.getAccessToken();
-        OauthInfo oauthInfo = oauthService.getAuth(accessToken);
-        UserBaseInfo userBaseInfo = new UserBaseInfo();
-        BeanUtils.copyProperties(param, userBaseInfo);
-        this.userBaseInfoService.updateBaseInfo(oauthInfo.getId(), userBaseInfo);
-        return Result.instance(Result.Code.MESSAGE_SUCCESS);
-    }
-
-    @Permission(tags = "获取用户登录记录", writeLog = false)
-    @PostMapping("/getLoginLogs")
-    public Result getLoginLogs(@RequestBody QueryPageParams params) {
-
-        Page<UserLoginLog> page = params.getPage();
-        page.addOrder(OrderItem.desc("login_time"));
-
-        String accessToken = ServletContext.getAccessToken();
-        OauthInfo oauthInfo = oauthService.getAuth(accessToken);
-
-        QueryWrapper<UserLoginLog> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("uid", oauthInfo.getId());
-
-        Page<UserLoginLog> pageResult = this.userLoginLogService.page(page, queryWrapper);
-
-        return Result.instance(Result.Code.SUCCESS).setData(pageResult);
-    }
-
-    @Permission(tags = "用户自己修改密码")
-    @PostMapping("/changePassword")
-    public Result changePassword(@Valid @RequestBody ChangePasswordParam param) {
-        String accessToken = ServletContext.getAccessToken();
-        OauthInfo oauthInfo = oauthService.getAuth(accessToken);
-
-        if (!param.getNewPassword().equals(param.getConfirmNewPassword())) {
-            return Result.instance("新密码与确认新密码不一致");
-        }
-        UserPassword userPassword = this.userBaseInfoService.findPassword(oauthInfo.getId(), PasswordType.login);
-        String loginPassword = this.oauthService.generatePassword(param.getLoginPassword(), userPassword.getSalt());
-        if (loginPassword.equals(userPassword.getPasswd())) {
-            String salt = RandomUtil.getSalt();
-            String newLoginPassword = this.oauthService.generatePassword(param.getNewPassword(), salt);
-
-            this.userBaseInfoService.updatePassword(oauthInfo.getId(), newLoginPassword, salt, PasswordType.login);
-            return Result.instance(Result.Code.MESSAGE_SUCCESS, "修改密码成功,下次请用新密码登录");
-
-        } else {
-            return Result.instance("旧的登录密码输入错误");
-        }
-    }
+			userLoginLog.setLoginAccount(loginParam.getLoginAccount());
+
+			boolean compareCaptchaResult = this.captchaService.compareCaptcha(loginParam.getCaptcha(), loginParam.getToken(), true);
+			if (!compareCaptchaResult) {
+				userLoginLog.setState(UserLoginLogState.CAPTCHA_ERROR);
+				return Result.instance("验证码错误,请重新输入");
+			}
+
+			UserLoginAccount userLoginAccount = this.userBaseInfoService.findLoginAccount(loginParam.getLoginAccount());
+			if (userLoginAccount == null) {
+				userLoginLog.setState(UserLoginLogState.ACCOUNT_NOT_EXIST);
+				return Result.instance("用户名或密码错误,请重新输入");
+			} else {
+				userLoginLog.setAccountType(userLoginAccount.getAccountType());
+				UserBaseInfo userBaseInfo = this.userBaseInfoService.getById(userLoginAccount.getUid());
+
+				UserPassword userPassword = this.userBaseInfoService.findPassword(userBaseInfo.getId(), PasswordType.login);
+
+				String loginPassword = this.oauthService.generatePassword(loginParam.getLoginPassword(), userPassword.getSalt());
+				if (loginPassword.equals(userPassword.getPasswd())) {
+
+					List<String> listAuthorities = this.userBaseInfoService.findUserAuthorities(userBaseInfo.getId());
+
+					String accessToken = Token.init(ServletContext.getRemoteIPAddress()).toTokenString();
+					OauthInfo oauthInfo = new OauthInfo()
+							.setId(userBaseInfo.getId())
+							.setAccessToken(accessToken)
+							.setNickName(userBaseInfo.getNickName())
+							.setAvatar(userBaseInfo.getAvatar())
+							.setLoginTime(DateUtil.current())
+							.setGender(userBaseInfo.getGender())
+							.setAuthorities(listAuthorities);
+
+					this.oauthService.setAuth(accessToken, oauthInfo);
+					userLoginLog.setState(UserLoginLogState.SUCCESS);
+					return Result.instance(Result.Code.SUCCESS).setData(oauthInfo);
+				} else {
+					userLoginLog.setState(UserLoginLogState.PASSWORD_ERROR);
+					return Result.instance("用户名或密码错误,请重新输入");
+				}
+			}
+		} catch (Exception e) {
+			log.error("", e);
+			userLoginLog.setState(UserLoginLogState.LOGIN_EXCEPTION);
+			return Result.instance("系统异常,请稍后再试");
+		} finally {
+			userLoginLog.setLoginIp(ServletContext.getRemoteIPAddress());
+			userLoginLog.setFromSource(ServletContext.getFromSource());
+			userLoginLog.setDeviceId("");
+			userLoginLog.setLoginTime(DateUtil.current());
+			userLoginLog.setLoginLocal("未知地址");
+			this.threadPoolTaskExecutor.execute(() -> userLoginLogService.save(userLoginLog));
+		}
+	}
+
+
+	@Permission(tags = "获取用户登录信息", writeLog = false)
+	@PostMapping("/getOauthInfo")
+	public Result getOauthInfo() {
+		String accessToken = ServletContext.getAccessToken();
+		OauthInfo oauthInfo = oauthService.getAuth(accessToken);
+		if (oauthInfo != null) {
+
+			UserBaseInfo userBaseInfo = this.userBaseInfoService.getById(oauthInfo.getId());
+			List<String> listAuthorities = this.userBaseInfoService.findUserAuthorities(userBaseInfo.getId());
+
+			oauthInfo.setNickName(userBaseInfo.getNickName())
+					.setAvatar(userBaseInfo.getAvatar())
+					.setLoginTime(DateUtil.current())
+					.setGender(userBaseInfo.getGender())
+					.setAuthorities(listAuthorities);
+			this.oauthService.setAuth(accessToken, oauthInfo);
+		}
+		return Result.instance(Result.Code.SUCCESS).setData(oauthInfo);
+	}
+
+	@PostMapping("/loginOut")
+	public Result loginOut() {
+		String accessToken = ServletContext.getAccessToken();
+		if (StringUtils.isNotBlank(accessToken)) {
+			this.oauthService.destroy(accessToken);
+		}
+		return Result.instance(Result.Code.SUCCESS);
+	}
+
+
+	@Permission(tags = "获取个人登录账号", writeLog = false)
+	@GetMapping("/getLoginAccounts")
+	public Result getLoginAccounts() {
+		String accessToken = ServletContext.getAccessToken();
+		OauthInfo oauthInfo = oauthService.getAuth(accessToken);
+		Map<String, Object> dataMap = new HashMap<>();
+		List<UserLoginAccount> loginAccounts = this.userBaseInfoService.findLoginAccounts(oauthInfo.getId());
+		for (UserLoginAccount account : loginAccounts) {
+			dataMap.put(account.getAccountType().name(), account.getLoginAccount());
+		}
+		return Result.instance(Result.Code.SUCCESS).setData(dataMap);
+	}
+
+	@Permission(tags = "获取个人基本信息", writeLog = false)
+	@GetMapping("/getUserBaseInfo")
+	public Result getUserBaseInfo() {
+		String accessToken = ServletContext.getAccessToken();
+		OauthInfo oauthInfo = oauthService.getAuth(accessToken);
+		UserBaseInfo userBaseInfo = this.userBaseInfoService.getById(oauthInfo.getId());
+		return Result.instance(Result.Code.SUCCESS).setData(userBaseInfo);
+	}
+
+
+	@Permission(tags = "保存个人基本信息")
+	@PostMapping("/saveUserBaseInfo")
+	public Result saveUserBaseInfo(@Valid @RequestBody SaveUserBaseInfoParam param) {
+		String accessToken = ServletContext.getAccessToken();
+		OauthInfo oauthInfo = oauthService.getAuth(accessToken);
+		UserBaseInfo userBaseInfo = new UserBaseInfo();
+		BeanUtils.copyProperties(param, userBaseInfo);
+		this.userBaseInfoService.updateBaseInfo(oauthInfo.getId(), userBaseInfo);
+		return Result.instance(Result.Code.MESSAGE_SUCCESS);
+	}
+
+	@Permission(tags = "获取用户登录记录", writeLog = false)
+	@PostMapping("/getLoginLogs")
+	public Result getLoginLogs(@RequestBody QueryPageParams params) {
+
+		Page<UserLoginLog> page = params.getPage();
+		page.addOrder(OrderItem.desc("login_time"));
+
+		String accessToken = ServletContext.getAccessToken();
+		OauthInfo oauthInfo = oauthService.getAuth(accessToken);
+
+		QueryWrapper<UserLoginLog> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("uid", oauthInfo.getId());
+
+		Page<UserLoginLog> pageResult = this.userLoginLogService.page(page, queryWrapper);
+
+		return Result.instance(Result.Code.SUCCESS).setData(pageResult);
+	}
+
+	@Permission(tags = "用户自己修改密码")
+	@PostMapping("/changePassword")
+	public Result changePassword(@Valid @RequestBody ChangePasswordParam param) {
+		String accessToken = ServletContext.getAccessToken();
+		OauthInfo oauthInfo = oauthService.getAuth(accessToken);
+
+		if (!param.getNewPassword().equals(param.getConfirmPassword())) {
+			return Result.instance("新密码与确认新密码不一致");
+		}
+		UserPassword userPassword = this.userBaseInfoService.findPassword(oauthInfo.getId(), PasswordType.login);
+		String loginPassword = this.oauthService.generatePassword(param.getLoginPassword(), userPassword.getSalt());
+		if (loginPassword.equals(userPassword.getPasswd())) {
+			String salt = RandomUtil.getSalt();
+			String newLoginPassword = this.oauthService.generatePassword(param.getNewPassword(), salt);
+
+			this.userBaseInfoService.updatePassword(oauthInfo.getId(), newLoginPassword, salt, PasswordType.login);
+			return Result.instance(Result.Code.MESSAGE_SUCCESS, "修改密码成功,下次请用新密码登录");
+
+		} else {
+			return Result.instance("旧的登录密码输入错误");
+		}
+	}
 }

+ 10 - 31
src/main/java/com/zhiqiyun/open/mvc/params/ChangePasswordParam.java

@@ -1,6 +1,7 @@
 package com.zhiqiyun.open.mvc.params;
 
 import com.zhiqiyun.open.utils.validation.StrongPassword;
+import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
 
@@ -9,40 +10,18 @@ import javax.validation.constraints.NotBlank;
  * @version 1.0
  * @date 2018/12/21 11:35
  */
+@Data
 public class ChangePasswordParam {
 
-    @NotBlank(message = "请输入原始密码")
-    private String loginPassword;
+	@NotBlank(message = "请输入原始密码")
+	private String loginPassword;
 
-    @NotBlank(message = "请输入新密码")
-    @StrongPassword
-    private String newPassword;
+	@NotBlank(message = "请输入新密码")
+	@StrongPassword
+	private String newPassword;
 
-    @NotBlank(message = "请再次输入新密码")
-    @StrongPassword
-    private String confirmNewPassword;
+	@NotBlank(message = "请再次输入新密码")
+	@StrongPassword
+	private String confirmPassword;
 
-    public String getLoginPassword() {
-        return loginPassword;
-    }
-
-    public void setLoginPassword(String loginPassword) {
-        this.loginPassword = loginPassword;
-    }
-
-    public String getNewPassword() {
-        return newPassword;
-    }
-
-    public void setNewPassword(String newPassword) {
-        this.newPassword = newPassword;
-    }
-
-    public String getConfirmNewPassword() {
-        return confirmNewPassword;
-    }
-
-    public void setConfirmNewPassword(String confirmNewPassword) {
-        this.confirmNewPassword = confirmNewPassword;
-    }
 }