From 882ded2276ae04929de100948e4b5695f9f031a1 Mon Sep 17 00:00:00 2001 From: chenzhihang <709011834@qq.com> Date: Wed, 2 Apr 2025 14:26:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=90=8C=E6=AD=A5gitlink?= =?UTF-8?q?=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/system/api/RemoteMmpService.java | 21 +++- .../ruoyi/system/api/RemoteUserService.java | 6 +- .../ruoyi/system/api/constant/Constant.java | 2 + .../com/ruoyi/system/api/domain/SysUser.java | 33 ++--- .../api/factory/RemoteMmpFallbackFactory.java | 28 ++++- .../ruoyi/auth/service/SysLoginService.java | 107 ++++++---------- .../controller/git/GitLinkController.java | 45 ++++++- .../ruoyi/platform/service/GitService.java | 28 +++-- .../service/impl/ExperimentServiceImpl.java | 2 +- .../platform/service/impl/GitServiceImpl.java | 80 ++++++++++-- .../service/impl/ModelsServiceImpl.java | 26 ++-- .../service/impl/NewDatasetServiceImpl.java | 10 +- .../ruoyi/platform/utils/NewHttpUtils.java | 27 +++-- .../system/controller/SysUserController.java | 34 ++---- .../ruoyi/system/mapper/SysUserMapper.java | 2 +- .../ruoyi/system/service/ISysUserService.java | 11 +- .../service/impl/SysUserServiceImpl.java | 114 ++++++++++++------ .../resources/mapper/system/SysUserMapper.xml | 25 ++-- 18 files changed, 374 insertions(+), 227 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteMmpService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteMmpService.java index 010b214e..4404f86c 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteMmpService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteMmpService.java @@ -2,14 +2,29 @@ package com.ruoyi.system.api; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.web.domain.GenericsAjaxResult; +import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.factory.RemoteMmpFallbackFactory; +import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; @FeignClient(contextId = "remoteMmpService", value = ServiceNameConstants.MANAGEMENT_SERVICE, fallbackFactory = RemoteMmpFallbackFactory.class) public interface RemoteMmpService { @GetMapping("/gitLink/login") - public GenericsAjaxResult gitLinkLogin(@RequestParam("ci4sUsername") String ci4sUsername, @RequestParam("username") String username, @RequestParam("password") String password); + public GenericsAjaxResult gitLinkLogin(@RequestParam("username") String username, @RequestParam("password") String password); + @PostMapping("/gitLink/createGitLinkUser") + public GenericsAjaxResult createGitLinkUser(@RequestBody SysUser sysUser) throws Exception; + + @PostMapping("/gitLink/resetPwd") + public GenericsAjaxResult resetPwd(@RequestBody SysUser sysUser) throws Exception; + + @PostMapping("/gitLink/resetEmail") + public GenericsAjaxResult resetEmail(@RequestBody SysUser sysUser) throws Exception; + + @PostMapping("/gitLink/resetPhoneNum") + public GenericsAjaxResult resetPhoneNum(@RequestBody SysUser sysUser) throws Exception; + + @DeleteMapping("/gitLink/deleteGitLinkUser") + public GenericsAjaxResult deleteGitLinkUser(@RequestBody SysUser sysUser) throws Exception; } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java index f074cec3..0384bd7e 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java @@ -1,11 +1,7 @@ package com.ruoyi.system.api; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.*; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/Constant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/Constant.java index 6d391a2d..5a2ce9b6 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/Constant.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/Constant.java @@ -58,4 +58,6 @@ public class Constant { public final static String TaskType_ActiveLearn = "active_learn"; public final static String TaskType_Service = "service"; public final static String DelFlag = "2"; + + public final static String Code = "123123"; } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java index 4d960370..94ec61e9 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java @@ -75,6 +75,8 @@ public class SysUser extends BaseEntity { */ private String password; + private String originPassword; + /** * 帐号状态(0正常 1停用) */ @@ -127,10 +129,6 @@ public class SysUser extends BaseEntity { */ private Long roleId; - private String gitLinkUsername; - - private String gitLinkPassword; - private Float credit; public SysUser() { @@ -229,6 +227,14 @@ public class SysUser extends BaseEntity { this.password = password; } + public String getOriginPassword() { + return originPassword; + } + + public void setOriginPassword(String originPassword) { + this.originPassword = originPassword; + } + public String getStatus() { return status; } @@ -301,22 +307,6 @@ public class SysUser extends BaseEntity { this.roleId = roleId; } - public void setGitLinkUsername(String gitLinkUsername) { - this.gitLinkUsername = gitLinkUsername; - } - - public String getGitLinkUsername() { - return gitLinkUsername; - } - - public void setGitLinkPassword(String gitLinkPassword) { - this.gitLinkPassword = gitLinkPassword; - } - - public String getGitLinkPassword() { - return gitLinkPassword; - } - public void setCredit(Float credit) { this.credit = credit; } @@ -337,6 +327,7 @@ public class SysUser extends BaseEntity { .append("sex", getSex()) .append("avatar", getAvatar()) .append("password", getPassword()) + .append("originPassword", getOriginPassword()) .append("status", getStatus()) .append("delFlag", getDelFlag()) .append("loginIp", getLoginIp()) @@ -347,8 +338,6 @@ public class SysUser extends BaseEntity { .append("updateTime", getUpdateTime()) .append("remark", getRemark()) .append("dept", getDept()) - .append("gitLinkUsername", getGitLinkUsername()) - .append("gitLinkPassword", getGitLinkPassword()) .append("credit", getCredit()) .toString(); } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMmpFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMmpFallbackFactory.java index 439fad57..6dda4d7c 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMmpFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMmpFallbackFactory.java @@ -2,6 +2,7 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.system.api.RemoteMmpService; +import com.ruoyi.system.api.domain.SysUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -17,9 +18,34 @@ public class RemoteMmpFallbackFactory implements FallbackFactory gitLinkLogin(String ci4sUsername, String username, String password) { + public GenericsAjaxResult gitLinkLogin(String username, String password) { return GenericsAjaxResult.error("刷新gitLink登录信息失败"); } + + @Override + public GenericsAjaxResult createGitLinkUser(SysUser sysUser) throws Exception { + throw new Exception("新增gitLink用户失败:" + throwable.getMessage()); + } + + @Override + public GenericsAjaxResult resetPwd(SysUser sysUser) throws Exception { + throw new Exception("修改gitLink用户密码失败:" + throwable.getMessage()); + } + + @Override + public GenericsAjaxResult resetEmail(SysUser sysUser) throws Exception { + throw new Exception("修改gitLink用户邮箱失败:" + throwable.getMessage()); + } + + @Override + public GenericsAjaxResult resetPhoneNum(SysUser sysUser) throws Exception { + throw new Exception("修改gitLink用户手机号失败:" + throwable.getMessage()); + } + + @Override + public GenericsAjaxResult deleteGitLinkUser(SysUser sysUser) throws Exception { + throw new Exception("删除gitLink用户失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java index e4ba31f0..10a53f86 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java @@ -1,9 +1,6 @@ package com.ruoyi.auth.service; import com.ruoyi.auth.form.AccessTokenVo; -import com.ruoyi.system.api.RemoteMmpService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.SecurityConstants; @@ -16,18 +13,20 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.ip.IpUtils; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.system.api.RemoteMmpService; import com.ruoyi.system.api.RemoteUserService; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.model.LoginUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; /** * 登录校验方法 - * + * * @author ruoyi */ @Component -public class SysLoginService -{ +public class SysLoginService { @Autowired private RemoteUserService remoteUserService; @@ -42,93 +41,80 @@ public class SysLoginService @Autowired private RemoteMmpService remoteMmpService; + /** * 登录 */ - public LoginUser login(String username, String password) - { + public LoginUser login(String username, String password) { // 用户名或密码为空 错误 - if (StringUtils.isAnyBlank(username, password)) - { + if (StringUtils.isAnyBlank(username, password)) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写"); throw new ServiceException("用户/密码必须填写"); } // 密码如果不在指定范围内 错误 if (password.length() < UserConstants.PASSWORD_MIN_LENGTH - || password.length() > UserConstants.PASSWORD_MAX_LENGTH) - { + || password.length() > UserConstants.PASSWORD_MAX_LENGTH) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户密码不在指定范围"); throw new ServiceException("用户密码不在指定范围"); } // 用户名不在指定范围内 错误 if (username.length() < UserConstants.USERNAME_MIN_LENGTH - || username.length() > UserConstants.USERNAME_MAX_LENGTH) - { + || username.length() > UserConstants.USERNAME_MAX_LENGTH) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名不在指定范围"); throw new ServiceException("用户名不在指定范围"); } // IP黑名单校验 String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); - if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) - { + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单"); throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); } // 查询用户信息 R userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); - if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) - { + if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); throw new ServiceException("登录用户:" + username + " 不存在"); } - if (R.FAIL == userResult.getCode()) - { + if (R.FAIL == userResult.getCode()) { throw new ServiceException(userResult.getMsg()); } - + LoginUser userInfo = userResult.getData(); SysUser user = userResult.getData().getSysUser(); - if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) - { + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除"); throw new ServiceException("对不起,您的账号:" + username + " 已被删除"); } - if (UserStatus.DISABLE.getCode().equals(user.getStatus())) - { + if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员"); throw new ServiceException("对不起,您的账号:" + username + " 已停用"); } passwordService.validate(user, password); + remoteMmpService.gitLinkLogin(username, user.getOriginPassword()); recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功"); - remoteMmpService.gitLinkLogin(username, user.getGitLinkUsername(),user.getGitLinkPassword()); return userInfo; } - public void logout(String loginName) - { + public void logout(String loginName) { recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "退出成功"); } /** * 注册 */ - public void register(String username, String password) - { + public void register(String username, String password) { // 用户名或密码为空 错误 - if (StringUtils.isAnyBlank(username, password)) - { + if (StringUtils.isAnyBlank(username, password)) { throw new ServiceException("用户/密码必须填写"); } if (username.length() < UserConstants.USERNAME_MIN_LENGTH - || username.length() > UserConstants.USERNAME_MAX_LENGTH) - { + || username.length() > UserConstants.USERNAME_MAX_LENGTH) { throw new ServiceException("账户长度必须在2到20个字符之间"); } if (password.length() < UserConstants.PASSWORD_MIN_LENGTH - || password.length() > UserConstants.PASSWORD_MAX_LENGTH) - { + || password.length() > UserConstants.PASSWORD_MAX_LENGTH) { throw new ServiceException("密码长度必须在5到20个字符之间"); } @@ -139,8 +125,7 @@ public class SysLoginService sysUser.setPassword(SecurityUtils.encryptPassword(password)); R registerResult = remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER); - if (R.FAIL == registerResult.getCode()) - { + if (R.FAIL == registerResult.getCode()) { throw new ServiceException(registerResult.getMsg()); } recordLogService.recordLogininfor(username, Constants.REGISTER, "注册成功"); @@ -148,52 +133,45 @@ public class SysLoginService public LoginUser loginByKey(String username, String key) { // 用户名或密码为空 错误 - if (StringUtils.isAnyBlank(username, key)) - { + if (StringUtils.isAnyBlank(username, key)) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/key必须填写"); throw new ServiceException("用户/key必须填写"); } // 用户名不在指定范围内 错误 if (username.length() < UserConstants.USERNAME_MIN_LENGTH - || username.length() > UserConstants.USERNAME_MAX_LENGTH) - { + || username.length() > UserConstants.USERNAME_MAX_LENGTH) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名不在指定范围"); throw new ServiceException("用户名不在指定范围"); } // IP黑名单校验 String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); - if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) - { + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单"); throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); } // 查询用户信息 R userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); - if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) - { + if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); throw new ServiceException("登录用户:" + username + " 不存在"); } - if (R.FAIL == userResult.getCode()) - { + if (R.FAIL == userResult.getCode()) { throw new ServiceException(userResult.getMsg()); } LoginUser userInfo = userResult.getData(); SysUser user = userResult.getData().getSysUser(); - if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) - { + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除"); throw new ServiceException("对不起,您的账号:" + username + " 已被删除"); } - if (UserStatus.DISABLE.getCode().equals(user.getStatus())) - { + if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员"); throw new ServiceException("对不起,您的账号:" + username + " 已停用"); } - if (!StringUtils.equals(key,"h1n2x3j4y5@")){ + if (!StringUtils.equals(key, "h1n2x3j4y5@")) { throw new ServiceException("对不起,您的key不正确"); } return userInfo; @@ -204,51 +182,44 @@ public class SysLoginService String username = accountInfo.getUsername(); // 用户名或密码为空 错误 - if (StringUtils.isAnyBlank(username)) - { + if (StringUtils.isAnyBlank(username)) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写"); throw new ServiceException("用户/密码必须填写"); } // 用户名不在指定范围内 错误 if (username.length() < UserConstants.USERNAME_MIN_LENGTH - || username.length() > UserConstants.USERNAME_MAX_LENGTH) - { + || username.length() > UserConstants.USERNAME_MAX_LENGTH) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名不在指定范围"); throw new ServiceException("用户名不在指定范围"); } // IP黑名单校验 String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST)); - if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) - { + if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单"); throw new ServiceException("很遗憾,访问IP已被列入系统黑名单"); } // 查询用户信息 R userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); - if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) - { + if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在"); throw new ServiceException("登录用户:" + username + " 不存在"); - // register(username, "123456"); + // register(username, "123456"); // userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); } - if (R.FAIL == userResult.getCode()) - { + if (R.FAIL == userResult.getCode()) { throw new ServiceException(userResult.getMsg()); } LoginUser userInfo = userResult.getData(); SysUser user = userResult.getData().getSysUser(); - if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) - { + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除"); throw new ServiceException("对不起,您的账号:" + username + " 已被删除"); } - if (UserStatus.DISABLE.getCode().equals(user.getStatus())) - { + if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员"); throw new ServiceException("对不起,您的账号:" + username + " 已停用"); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/git/GitLinkController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/git/GitLinkController.java index b7e8da76..768db5b1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/git/GitLinkController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/git/GitLinkController.java @@ -3,12 +3,10 @@ package com.ruoyi.platform.controller.git; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.platform.service.GitService; +import com.ruoyi.system.api.domain.SysUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -22,7 +20,42 @@ public class GitLinkController extends BaseController { @GetMapping("/login") @ApiOperation("刷新giotLink用户信息") - public GenericsAjaxResult gitLinkLogin(@RequestParam("ci4sUsername") String ci4sUsername, @RequestParam("username") String username, @RequestParam("password") String password) { - return genericsSuccess(gitService.login(ci4sUsername, username, password)); + public GenericsAjaxResult gitLinkLogin(@RequestParam("username") String username, @RequestParam("password") String password) { + return genericsSuccess(gitService.login(username, password)); + } + + @PostMapping("/createGitLinkUser") + @ApiOperation("新增gitLink用户") + public GenericsAjaxResult createGitLinkUser(@RequestBody SysUser sysUser) throws Exception { + gitService.createUser(sysUser); + return GenericsAjaxResult.success("新增成功"); + } + + @PostMapping("/resetPwd") + @ApiOperation("更改gitLink用户密码") + public GenericsAjaxResult resetPwd(@RequestBody SysUser sysUser) throws Exception { + gitService.resetPwd(sysUser); + return GenericsAjaxResult.success("修改成功"); + } + + @PutMapping("/resetEmail") + @ApiOperation("更改gitLink用户邮箱") + public GenericsAjaxResult resetEmail(@RequestBody SysUser sysUser) throws Exception { + gitService.resetEmail(sysUser); + return GenericsAjaxResult.success("修改成功"); + } + + @PutMapping("/resetPhoneNum") + @ApiOperation("更改gitLink用户手机号") + public GenericsAjaxResult resetPhoneNum(@RequestBody SysUser sysUser) throws Exception { + gitService.resetPhoneNum(sysUser); + return GenericsAjaxResult.success("修改成功"); + } + + @DeleteMapping("/deleteGitLinkUser") + @ApiOperation("删除gitLink用户") + public GenericsAjaxResult deleteGitLinkUser(@RequestBody SysUser sysUser) throws Exception { + gitService.deleteUser(sysUser); + return GenericsAjaxResult.success("删除成功"); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java index 3b4210ce..bf788d3a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/GitService.java @@ -1,31 +1,41 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.vo.GitProjectVo; +import com.ruoyi.system.api.domain.SysUser; -import java.io.IOException; import java.util.List; import java.util.Map; public interface GitService { //登录方法,返回token - String login(String ci4sUsername, String username, String password); + String login(String username, String password); String checkoutToken(); //输入token,项目名,tag,创建新项目,返回项目地址 - Map createProject(String token,GitProjectVo gitProjectVo) throws Exception; + Map createProject(String token, GitProjectVo gitProjectVo) throws Exception; - void createBranch(String token,String owner, String projectName, String branchName, String oldBranchName) throws Exception; + void createBranch(String token, String owner, String projectName, String branchName, String oldBranchName) throws Exception; - void createTopic(String token,Integer id, String topicName) throws Exception; + void createTopic(String token, Integer id, String topicName) throws Exception; - List> getBrancheList(String token,String owner, String projectName) throws Exception; + List> getBrancheList(String token, String owner, String projectName) throws Exception; - void deleteProject(String token,String owner, String projectName) throws Exception; + void deleteProject(String token, String owner, String projectName) throws Exception; - void deleteBranch(String token,String owner, String projectName, String branchName, String localPath) throws Exception; + void deleteBranch(String token, String owner, String projectName, String branchName, String localPath) throws Exception; Map getUserInfo(String token) throws Exception; - Map getProjectDetail(String owner, String identifier, String token) throws IOException; + Map getProjectDetail(String owner, String identifier, String token) throws Exception; + + void createUser(SysUser sysUser) throws Exception; + + void resetPwd(SysUser sysUser) throws Exception; + + void resetEmail(SysUser sysUser) throws Exception; + + void resetPhoneNum(SysUser sysUser) throws Exception; + + void deleteUser(SysUser sysUser) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 5d7e0301..78e5c545 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -529,7 +529,7 @@ public class ExperimentServiceImpl implements ExperimentService { private void insertModelDependencyNew(Map dependendcy, Map trainInfo, Map output, String metricRecord, Integer experimentInsId, Long workflowId, Integer experimentId, String experimentName, String globalParam) { LoginUser loginUser = SecurityUtils.getLoginUser(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); + String gitLinkUsername = loginUser.getSysUser().getUserName(); Iterator> dependendcyIterator = dependendcy.entrySet().iterator(); Map modelTrain = (Map) trainInfo.get("model_train"); Map modelEvaluate = (Map) trainInfo.get("model_evaluate"); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java index 4c04b55b..a077f71c 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/GitServiceImpl.java @@ -6,6 +6,8 @@ import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.utils.JsonUtils; import com.ruoyi.platform.utils.NewHttpUtils; import com.ruoyi.platform.vo.GitProjectVo; +import com.ruoyi.system.api.constant.Constant; +import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.lang3.StringUtils; import org.eclipse.jgit.api.Git; @@ -43,7 +45,7 @@ public class GitServiceImpl implements GitService { private static final Logger log = LoggerFactory.getLogger(GitServiceImpl.class); @Override - public String login(String ci4sUsername, String username, String password) { + public String login(String username, String password) { // 构建请求参数 Map params = new HashMap<>(); params.put("grant_type", "password"); @@ -71,8 +73,8 @@ public class GitServiceImpl implements GitService { } // 将access_token存入Redis Jedis jedis = new Jedis(redisHost, redisPort); - jedis.set(ci4sUsername + "_gitToken", accessToken); - jedis.set(ci4sUsername + "_gitUserInfo", userReq); + jedis.set(username + "_gitToken", accessToken); + jedis.set(username + "_gitUserInfo", userReq); return accessToken; } catch (Exception e) { throw new RuntimeException("gitlink用户信息出错"); @@ -84,23 +86,21 @@ public class GitServiceImpl implements GitService { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); String token = jedis.get(ci4sUsername + "_gitToken"); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String gitLinkPassword = loginUser.getSysUser().getOriginPassword(); if (StringUtils.isEmpty(token)) { - login(ci4sUsername, gitLinkUsername, gitLinkPassword); + login(ci4sUsername, gitLinkPassword); token = jedis.get(ci4sUsername + "_gitToken"); } else { try { Map userInfo = getUserInfo(token); if (userInfo == null || (userInfo.get("status") != null && 401 == (Integer) userInfo.get("status"))) { - login(ci4sUsername, gitLinkUsername, gitLinkPassword); + login(ci4sUsername, gitLinkPassword); token = jedis.get(ci4sUsername + "_gitToken"); } } catch (Exception e) { throw new RuntimeException(e); } - } return token; } @@ -149,7 +149,7 @@ public class GitServiceImpl implements GitService { @Override public void deleteProject(String token, String owner, String projectName) throws Exception { - httpUtils.sendDeleteWithToken(gitendpoint + "/api/" + owner + "/" + projectName + ".json", null, token); + httpUtils.sendDeleteWithToken(gitendpoint + "/api/" + owner + "/" + projectName + ".json", null, token, null); } @Override @@ -160,7 +160,7 @@ public class GitServiceImpl implements GitService { } catch (IOException | GitAPIException e) { log.error("Exception occurred while creating local branch based on master", e); } - httpUtils.sendDeleteWithToken(gitendpoint + "/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", null, token); + httpUtils.sendDeleteWithToken(gitendpoint + "/api/v1/" + owner + "/" + projectName + "/branches/" + branchName + ".json", null, token, null); } @Override @@ -174,7 +174,7 @@ public class GitServiceImpl implements GitService { } @Override - public Map getProjectDetail(String owner, String identifier, String token) throws IOException { + public Map getProjectDetail(String owner, String identifier, String token) throws Exception { String userReq = httpUtils.sendGetWithToken(gitendpoint + "/api/" + owner + "/" + identifier + "/detail.json", null, token); if (StringUtils.isEmpty(userReq)) { return null; @@ -182,4 +182,62 @@ public class GitServiceImpl implements GitService { Map runResMap = JsonUtils.jsonToMap(userReq); return runResMap; } + + @Override + public void createUser(SysUser sysUser) throws Exception { + String token = checkoutToken(); + Map resMap = new HashMap<>(); + resMap.put("phone", sysUser.getPhonenumber()); + resMap.put("email", sysUser.getEmail()); + resMap.put("username", sysUser.getUserName()); + resMap.put("password", sysUser.getPassword()); + resMap.put("password_confirmation", sysUser.getPassword()); + httpUtils.sendPostWithToken(gitendpoint + "/api/accounts/remote_register.json", null, token, JsonUtils.objectToJson(resMap)); + } + + @Override + public void resetPwd(SysUser sysUser) throws Exception { + String token = checkoutToken(); + Map resMap = new HashMap<>(); + resMap.put("login", sysUser.getUserName()); + resMap.put("password", sysUser.getPassword()); + resMap.put("new_password_repeat", sysUser.getPassword()); + resMap.put("old_password", decrypt(sysUser.getOriginPassword())); + httpUtils.sendPostWithToken(gitendpoint + "/api/accounts/change_password.json", null, token, JsonUtils.objectToJson(resMap)); + } + + @Override + public void resetEmail(SysUser sysUser) throws Exception { + String token = login(sysUser.getUserName(), sysUser.getOriginPassword()); + Map resMap = new HashMap<>(); + resMap.put("email", sysUser.getEmail()); + resMap.put("password", decrypt(sysUser.getOriginPassword())); + resMap.put("code", Constant.Code); + httpUtils.sendPatchWithToken(gitendpoint + "/api/v1/" + sysUser.getUserName() + "/update_email.json", null, token, JsonUtils.objectToJson(resMap)); + } + + @Override + public void resetPhoneNum(SysUser sysUser) throws Exception { + String token = login(sysUser.getUserName(), sysUser.getOriginPassword()); + Map resMap = new HashMap<>(); + resMap.put("phone", sysUser.getPhonenumber()); + resMap.put("password", decrypt(sysUser.getOriginPassword())); + resMap.put("code", Constant.Code); + httpUtils.sendPatchWithToken(gitendpoint + "/api/v1/" + sysUser.getUserName() + "/update_phone.json", null, token, JsonUtils.objectToJson(resMap)); + } + + @Override + public void deleteUser(SysUser sysUser) throws Exception { + String token = login(sysUser.getUserName(), sysUser.getOriginPassword()); + String result = httpUtils.sendPostWithToken(gitendpoint + "/api/v1/" + sysUser.getUserName() + "/check_user_can_delete.json", null, token, null); + Map resultMap = JsonUtils.jsonToMap(result); + if ((boolean) resultMap.get("can_delete")) { + Map resMap = new HashMap<>(); + resMap.put("memo", "用户注销"); + resMap.put("password", decrypt(sysUser.getOriginPassword())); + httpUtils.sendDeleteWithToken(gitendpoint + "/api/v1/" + sysUser.getUserName() + ".json", null, token, JsonUtils.objectToJson(resMap)); + } else { + throw new Exception("用户不可删除:" + resultMap.get("message")); + } + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 6cc15711..f3c9681f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -562,9 +562,9 @@ public class ModelsServiceImpl implements ModelsService { String token = gitService.checkoutToken(); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); + String gitLinkUsername = loginUser.getSysUser().getUserName(); + String gitLinkPassword = loginUser.getSysUser().getOriginPassword(); + Map userInfo = getUserInfo(ci4sUsername, gitLinkPassword); String decryptGitLinkPassword = decrypt(gitLinkPassword); Integer userId = (Integer) userInfo.get("user_id"); @@ -689,9 +689,9 @@ public class ModelsServiceImpl implements ModelsService { public String newCreateVersion(ModelsVo modelsVo) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); - Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); + String gitLinkUsername = loginUser.getSysUser().getUserName(); + String gitLinkPassword = loginUser.getSysUser().getOriginPassword(); + Map userInfo = getUserInfo(ci4sUsername, gitLinkPassword); gitLinkPassword = decrypt(gitLinkPassword); ci4sUsername = Boolean.TRUE.equals(modelsVo.getIsPublic()) ? Constant.Item_Public : loginUser.getUsername(); @@ -925,10 +925,9 @@ public class ModelsServiceImpl implements ModelsService { public Page newPersonalQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String gitLinkPassword = loginUser.getSysUser().getOriginPassword(); - Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); + Map userInfo = getUserInfo(ci4sUsername, gitLinkPassword); String token = (String) userInfo.get("token"); //拼接查询url @@ -955,10 +954,9 @@ public class ModelsServiceImpl implements ModelsService { public Page newPubilcQueryByPage(ModelsVo modelsVo, PageRequest pageRequest) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = loginUser.getSysUser().getGitLinkPassword(); + String gitLinkPassword = loginUser.getSysUser().getOriginPassword(); - Map userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); + Map userInfo = getUserInfo(ci4sUsername, gitLinkPassword); String token = (String) userInfo.get("token"); //拼接查询url @@ -1326,11 +1324,11 @@ public class ModelsServiceImpl implements ModelsService { modelDependency1TreeVo.setChildModelList(childModelList); } - Map getUserInfo(String ci4sUsername, String gitLinkUsername, String gitLinkPassword) throws Exception { + Map getUserInfo(String ci4sUsername, String gitLinkPassword) throws Exception { Jedis jedis = new Jedis(redisHost, redisPort); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); if (userReq == null) { - gitService.login(ci4sUsername, gitLinkUsername, gitLinkPassword); + gitService.login(ci4sUsername, gitLinkPassword); userReq = jedis.get(ci4sUsername + "_gitUserInfo"); } Map userInfo = JsonUtils.jsonToMap(userReq); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java index 10fd451d..e2cf6f26 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/NewDatasetServiceImpl.java @@ -94,8 +94,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { Jedis jedis = new Jedis(redisHost, redisPort); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = decrypt(loginUser.getSysUser().getGitLinkPassword()); + String gitLinkUsername = loginUser.getSysUser().getUserName(); + String gitLinkPassword = decrypt(loginUser.getSysUser().getOriginPassword()); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); // 得到用户操作的路径 Map userInfo = JsonUtils.jsonToMap(userReq); @@ -201,8 +201,8 @@ public class NewDatasetServiceImpl implements NewDatasetService { Jedis jedis = new Jedis(redisHost, redisPort); LoginUser loginUser = SecurityUtils.getLoginUser(); String ci4sUsername = loginUser.getUsername(); - String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); - String gitLinkPassword = decrypt(loginUser.getSysUser().getGitLinkPassword()); + String gitLinkUsername = loginUser.getSysUser().getUserName(); + String gitLinkPassword = decrypt(loginUser.getSysUser().getOriginPassword()); String userReq = jedis.get(ci4sUsername + "_gitUserInfo"); ci4sUsername = Boolean.TRUE.equals(datasetVo.getIsPublic()) ? Constant.Item_Public : loginUser.getUsername(); Map userInfo = JsonUtils.jsonToMap(userReq); @@ -337,7 +337,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { } @Override - public Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) { + public Page newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) throws Exception { String token = gitService.checkoutToken(); // 拼接查询url String url = gitendpoint + "/api/projects.json?sort_direction=updated_on&sort_by=desc&category_id=" + Constant.Git_Category_Id; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/NewHttpUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/NewHttpUtils.java index da117614..0286c623 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/NewHttpUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/NewHttpUtils.java @@ -1,4 +1,5 @@ package com.ruoyi.platform.utils; + import org.apache.http.HttpHost; import org.apache.http.client.methods.*; import org.apache.http.client.utils.URIBuilder; @@ -20,6 +21,7 @@ import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; +import java.util.Map; @Component public class NewHttpUtils { @@ -61,27 +63,31 @@ public class NewHttpUtils { } } - public static String sendGet(String url, String param) { + public static String sendGet(String url, String param) throws Exception { return sendRequest(new HttpGet(), url, param, null, null); } - public static String sendPost(String url, String param, String body) { + public static String sendPost(String url, String param, String body) throws Exception { return sendRequest(new HttpPost(), url, param, null, body); } - public static String sendGetWithToken(String url, String param, String token) { + public static String sendGetWithToken(String url, String param, String token) throws Exception { return sendRequest(new HttpGet(), url, param, token, null); } - public static String sendPostWithToken(String url, String param, String token, String body) { + public static String sendPostWithToken(String url, String param, String token, String body) throws Exception { return sendRequest(new HttpPost(), url, param, token, body); } - public static String sendDeleteWithToken(String url, String param, String token) { - return sendRequest(new HttpDelete(), url, param, token, null); + public static String sendDeleteWithToken(String url, String param, String token, String body) throws Exception { + return sendRequest(new HttpDelete(), url, param, token, body); + } + + public static String sendPatchWithToken(String url, String param, String token, String body) throws Exception { + return sendRequest(new HttpPatch(), url, param, token, body); } - private static String sendRequest(HttpRequestBase request, String url, String param, String token, String body) { + private static String sendRequest(HttpRequestBase request, String url, String param, String token, String body) throws Exception { if (httpClient == null) { throw new IllegalStateException("HttpClient is not initialized"); } @@ -121,11 +127,18 @@ public class NewHttpUtils { throw new IOException("HTTP request failed with response code: " + statusCode); } log.info("Response: " + result); + Map resultMap = JsonUtils.jsonToMap(result); + Integer status = (Integer) resultMap.get("status"); + if (status != null && status != 0) { + throw new Exception((String) resultMap.get("message")); + } } } catch (URISyntaxException e) { log.error("URISyntaxException, url=" + url + ", param=" + param, e); + throw e; } catch (IOException e) { log.error("IOException, url=" + url + ", param=" + param, e); + throw e; } return result; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java index 1ab65dea..f5683f34 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java @@ -29,7 +29,7 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import static com.ruoyi.common.security.utils.SecurityUtils.*; +import static com.ruoyi.common.security.utils.SecurityUtils.encrypt; /** * 用户信息 @@ -74,7 +74,7 @@ public class SysUserController extends BaseController { @Log(title = "用户管理", businessType = BusinessType.EXPORT) @RequiresPermissions("system:user:export") @PostMapping("/export") - public void export(HttpServletResponse response, SysUser user) { + public void export(HttpServletResponse response, @RequestBody SysUser user) { List list = userService.selectUserList(user); ExcelUtil util = new ExcelUtil(SysUser.class); util.exportExcel(response, list, "用户数据"); @@ -146,7 +146,8 @@ public class SysUserController extends BaseController { Set roles = permissionService.getRolePermission(user); // 权限集合 Set permissions = permissionService.getMenuPermission(user); - remoteMmpService.gitLinkLogin(user.getUserName(), user.getGitLinkUsername(),user.getGitLinkPassword()); + String originPwd = userService.getOriginPwd(user.getUserName()); + remoteMmpService.gitLinkLogin(user.getUserName(), originPwd); AjaxResult ajax = AjaxResult.success(); ajax.put("user", user); ajax.put("roles", roles); @@ -181,19 +182,15 @@ public class SysUserController extends BaseController { @RequiresPermissions("system:user:add") @Log(title = "用户管理", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@Validated @RequestBody SysUser user) { + public AjaxResult add(@Validated @RequestBody SysUser user) throws Exception { if (!userService.checkUserNameUnique(user)) { return error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { return error("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { return error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); - } else if (StringUtils.isNotEmpty(user.getGitLinkUsername()) && !userService.checktGitLinkUsernameUnique(user)) { - return error("新增用户'" + user.getUserName() + "'失败,gitLink用户名已存在"); } user.setCreateBy(SecurityUtils.getUsername()); - user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); - user.setGitLinkPassword(encrypt(user.getGitLinkPassword())); return toAjax(userService.insertUser(user)); } @@ -203,7 +200,7 @@ public class SysUserController extends BaseController { @RequiresPermissions("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@Validated @RequestBody SysUser user) { + public AjaxResult edit(@Validated @RequestBody SysUser user) throws Exception { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); if (!userService.checkUserNameUnique(user)) { @@ -212,16 +209,8 @@ public class SysUserController extends BaseController { return error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { return error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); - } else if (StringUtils.isNotEmpty(user.getGitLinkUsername()) && !userService.checktGitLinkUsernameUnique(user)) { - return error("新增用户'" + user.getUserName() + "'失败,gitLink用户名已存在"); } user.setUpdateBy(SecurityUtils.getUsername()); - if (StringUtils.isNotEmpty(user.getPassword())) { - user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); - } - if (StringUtils.isNotEmpty(user.getGitLinkPassword())) { - user.setGitLinkPassword(encrypt(user.getGitLinkPassword())); - } return toAjax(userService.updateUser(user)); } @@ -231,7 +220,7 @@ public class SysUserController extends BaseController { @RequiresPermissions("system:user:remove") @Log(title = "用户管理", businessType = BusinessType.DELETE) @DeleteMapping("/{userIds}") - public AjaxResult remove(@PathVariable Long[] userIds) { + public AjaxResult remove(@PathVariable Long[] userIds) throws Exception { if (ArrayUtils.contains(userIds, SecurityUtils.getUserId())) { return error("当前用户不能删除"); } @@ -244,11 +233,9 @@ public class SysUserController extends BaseController { @RequiresPermissions("system:user:edit") @Log(title = "用户管理", businessType = BusinessType.UPDATE) @PutMapping("/resetPwd") - public AjaxResult resetPwd(@RequestBody SysUser user) { + public AjaxResult resetPwd(@RequestBody SysUser user) throws Exception { userService.checkUserAllowed(user); userService.checkUserDataScope(user.getUserId()); - user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); - user.setUpdateBy(SecurityUtils.getUsername()); return toAjax(userService.resetPwd(user)); } @@ -299,4 +286,9 @@ public class SysUserController extends BaseController { public AjaxResult deptTree(SysDept dept) { return success(deptService.selectDeptTreeList(dept)); } + + @GetMapping("/getOriginPwd") + public R getOriginPwd(@RequestParam(value = "username") String username) { + return R.ok(userService.getOriginPwd(username)); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java index 58a622e9..72fb3d34 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java @@ -125,5 +125,5 @@ public interface SysUserMapper */ public SysUser checkEmailUnique(String email); - public SysUser checktGitLinkUsernameUnique(String gitLinkUsername); + String getOriginPwd(Long userId); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java index e1c718a6..51d5886c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java @@ -90,7 +90,6 @@ public interface ISysUserService */ public boolean checkEmailUnique(SysUser user); - public boolean checktGitLinkUsernameUnique(SysUser user); /** * 校验用户是否允许操作 @@ -112,7 +111,7 @@ public interface ISysUserService * @param user 用户信息 * @return 结果 */ - public int insertUser(SysUser user); + public int insertUser(SysUser user) throws Exception; /** * 注册用户信息 @@ -128,7 +127,7 @@ public interface ISysUserService * @param user 用户信息 * @return 结果 */ - public int updateUser(SysUser user); + public int updateUser(SysUser user) throws Exception; /** * 用户授权角色 @@ -169,7 +168,7 @@ public interface ISysUserService * @param user 用户信息 * @return 结果 */ - public int resetPwd(SysUser user); + public int resetPwd(SysUser user) throws Exception; /** * 重置用户密码 @@ -194,7 +193,7 @@ public interface ISysUserService * @param userIds 需要删除的用户ID * @return 结果 */ - public int deleteUserByIds(Long[] userIds); + public int deleteUserByIds(Long[] userIds) throws Exception; /** * 导入用户数据 @@ -205,4 +204,6 @@ public interface ISysUserService * @return 结果 */ public String importUser(List userList, Boolean isUpdateSupport, String operName); + + String getOriginPwd(String username); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 7419c4b3..6f0a780f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -5,9 +5,11 @@ import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.SpringUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanValidators; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; import com.ruoyi.common.datascope.annotation.DataScope; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.api.RemoteAuthService; +import com.ruoyi.system.api.RemoteMmpService; import com.ruoyi.system.api.constant.Constant; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.api.domain.SysUser; @@ -29,6 +31,9 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import static com.ruoyi.common.security.utils.SecurityUtils.decrypt; +import static com.ruoyi.common.security.utils.SecurityUtils.encrypt; + /** * 用户 业务层处理 * @@ -62,6 +67,9 @@ public class SysUserServiceImpl implements ISysUserService { @Autowired protected RemoteAuthService remoteAuthService; + @Autowired + protected RemoteMmpService remoteMmpService; + /** * 根据条件分页查询用户列表 * @@ -198,16 +206,6 @@ public class SysUserServiceImpl implements ISysUserService { return UserConstants.UNIQUE; } - @Override - public boolean checktGitLinkUsernameUnique(SysUser user) { - Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); - SysUser info = userMapper.checktGitLinkUsernameUnique(user.getGitLinkUsername()); - if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { - return UserConstants.NOT_UNIQUE; - } - return UserConstants.UNIQUE; - } - /** * 校验用户是否允许操作 * @@ -245,22 +243,29 @@ public class SysUserServiceImpl implements ISysUserService { */ @Override @Transactional(rollbackFor = Exception.class) - public int insertUser(SysUser user) { - // 新增用户信息 - int rows = userMapper.insertUser(user); - // 新增用户岗位关联 - insertUserPost(user); - // 新增用户与角色管理 - insertUserRole(user); + public int insertUser(SysUser user) throws Exception { + // 新增gitlink用户 + GenericsAjaxResult gitLinkResult = remoteMmpService.createGitLinkUser(user); + if (gitLinkResult.getCode() != 200) { + throw new Exception(gitLinkResult.getMsg()); + } + + user.setOriginPassword(encrypt(user.getPassword())); + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); // 新增oauth2用户 remoteAuthService.add(user); - // todo 新增gitlink用户 + // todo 新增火石平台用户 - // todo 新增label studio用户 + // 新增用户信息 + int rows = userMapper.insertUser(user); - // todo 新增火石平台用户 + // 新增用户岗位关联 + insertUserPost(user); + + // 新增用户与角色管理 + insertUserRole(user); return rows; } @@ -284,8 +289,10 @@ public class SysUserServiceImpl implements ISysUserService { */ @Override @Transactional(rollbackFor = Exception.class) - public int updateUser(SysUser user) { + public int updateUser(SysUser user) throws Exception { Long userId = user.getUserId(); + SysUser oldUser = userMapper.selectUserById(userId); + // 删除用户与角色关联 userRoleMapper.deleteUserRoleByUserId(userId); // 新增用户与角色管理 @@ -295,12 +302,35 @@ public class SysUserServiceImpl implements ISysUserService { // 新增用户与岗位管理 insertUserPost(user); - // 更新oauth2用户 - remoteAuthService.edit(user); + // 更新gitlink用户 + if (!oldUser.getEmail().equals(user.getEmail())) { + GenericsAjaxResult result = remoteMmpService.resetEmail(user); + if (result.getCode() != 200) { + throw new Exception(result.getMsg()); + } + } + + if (!oldUser.getPhonenumber().equals(user.getPhonenumber())) { + GenericsAjaxResult result = remoteMmpService.resetPhoneNum(user); + if (result.getCode() != 200) { + throw new Exception(result.getMsg()); + } + } + + if (StringUtils.isNotEmpty(user.getPassword()) && !decrypt(oldUser.getOriginPassword()).equals(user.getPassword())) { + GenericsAjaxResult result = remoteMmpService.resetPwd(user); + if (result.getCode() != 200) { + throw new Exception(result.getMsg()); + } + } - // todo 更新gitlink用户 + if (StringUtils.isNotEmpty(user.getPassword())) { + user.setOriginPassword(encrypt(user.getPassword())); + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + } - // todo 更新label studio用户 + // 更新oauth2用户 + remoteAuthService.edit(user); // todo 更新火石平台用户 @@ -361,13 +391,20 @@ public class SysUserServiceImpl implements ISysUserService { * @return 结果 */ @Override - public int resetPwd(SysUser user) { - // 更新oauth2用户 - remoteAuthService.edit(user); - - // todo 更新gitlink用户 + public int resetPwd(SysUser user) throws Exception { + SysUser sysUser = userMapper.selectUserById(user.getUserId()); + user.setUserName(sysUser.getUserName()); + // 更新gitlink用户密码 + GenericsAjaxResult gitLinkResult = remoteMmpService.resetPwd(user); + if (gitLinkResult.getCode() != 200) { + throw new Exception(gitLinkResult.getMsg()); + } - // todo 更新label studio用户 + user.setOriginPassword(encrypt(user.getPassword())); + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + user.setUpdateBy(SecurityUtils.getUsername()); + // 更新oauth2用户密码 + remoteAuthService.edit(user); // todo 更新火石平台用户 @@ -459,7 +496,7 @@ public class SysUserServiceImpl implements ISysUserService { */ @Override @Transactional(rollbackFor = Exception.class) - public int deleteUserByIds(Long[] userIds) { + public int deleteUserByIds(Long[] userIds) throws Exception { for (Long userId : userIds) { checkUserAllowed(new SysUser(userId)); checkUserDataScope(userId); @@ -471,13 +508,16 @@ public class SysUserServiceImpl implements ISysUserService { for (Long userId : userIds) { SysUser user = userMapper.selectUserById(userId); + user.setOriginPassword(userMapper.getOriginPwd(userId)); user.setDelFlag(Constant.DelFlag); // 删除oauth2用户 remoteAuthService.edit(user); // todo 删除gitlink用户 - - // todo 删除label studio用户 + GenericsAjaxResult gitLinkResult = remoteMmpService.deleteGitLinkUser(user); + if (gitLinkResult.getCode() != 200) { + throw new Exception(gitLinkResult.getMsg()); + } // todo 删除火石平台用户 } @@ -542,4 +582,10 @@ public class SysUserServiceImpl implements ISysUserService { } return successMsg.toString(); } + + @Override + public String getOriginPwd(String username) { + SysUser sysUser = userMapper.selectUserByUserName(username); + return userMapper.getOriginPwd(sysUser.getUserId()); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index 79e79a01..416b4df5 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -14,6 +14,7 @@ + @@ -23,7 +24,6 @@ - @@ -58,9 +58,8 @@ u.avatar, u.phonenumber, u.password, - u.git_link_username, - u.git_link_password, - TRUNCATE(u.credit, 1) as credit, + u.origin_password, + ROUND(u.credit, 1) as credit, u.sex, u.status, u.del_flag, @@ -90,7 +89,7 @@ - + select origin_password from sys_user where user_id = #{userId} @@ -209,10 +205,10 @@ phonenumber, sex, password, + origin_password, status, create_by, remark, - git_link_username, git_link_password, credit, create_time @@ -226,6 +222,7 @@ #{phonenumber}, #{sex}, #{password}, + #{originPassword}, #{status}, #{createBy}, #{remark}, @@ -247,12 +244,12 @@ sex = #{sex}, avatar = #{avatar}, password = #{password}, + origin_password = #{originPassword}, status = #{status}, login_ip = #{loginIp}, login_date = #{loginDate}, update_by = #{updateBy}, remark = #{remark}, - git_link_username = #{gitLinkUsername}, git_link_password = #{gitLinkPassword}, credit = #{credit}, update_time = sysdate()