| @@ -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<String> gitLinkLogin(@RequestParam("ci4sUsername") String ci4sUsername, @RequestParam("username") String username, @RequestParam("password") String password); | |||
| public GenericsAjaxResult<String> gitLinkLogin(@RequestParam("username") String username, @RequestParam("password") String password); | |||
| @PostMapping("/gitLink/createGitLinkUser") | |||
| public GenericsAjaxResult<String> createGitLinkUser(@RequestBody SysUser sysUser) throws Exception; | |||
| @PostMapping("/gitLink/resetPwd") | |||
| public GenericsAjaxResult<String> resetPwd(@RequestBody SysUser sysUser) throws Exception; | |||
| @PostMapping("/gitLink/resetEmail") | |||
| public GenericsAjaxResult<String> resetEmail(@RequestBody SysUser sysUser) throws Exception; | |||
| @PostMapping("/gitLink/resetPhoneNum") | |||
| public GenericsAjaxResult<String> resetPhoneNum(@RequestBody SysUser sysUser) throws Exception; | |||
| @DeleteMapping("/gitLink/deleteGitLinkUser") | |||
| public GenericsAjaxResult<String> deleteGitLinkUser(@RequestBody SysUser sysUser) throws Exception; | |||
| } | |||
| @@ -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; | |||
| @@ -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"; | |||
| } | |||
| @@ -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(); | |||
| } | |||
| @@ -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<RemoteMmpServic | |||
| log.error("管理平台服务调用失败:{}", throwable.getMessage()); | |||
| return new RemoteMmpService() { | |||
| @Override | |||
| public GenericsAjaxResult<String> gitLinkLogin(String ci4sUsername, String username, String password) { | |||
| public GenericsAjaxResult<String> gitLinkLogin(String username, String password) { | |||
| return GenericsAjaxResult.error("刷新gitLink登录信息失败"); | |||
| } | |||
| @Override | |||
| public GenericsAjaxResult<String> createGitLinkUser(SysUser sysUser) throws Exception { | |||
| throw new Exception("新增gitLink用户失败:" + throwable.getMessage()); | |||
| } | |||
| @Override | |||
| public GenericsAjaxResult<String> resetPwd(SysUser sysUser) throws Exception { | |||
| throw new Exception("修改gitLink用户密码失败:" + throwable.getMessage()); | |||
| } | |||
| @Override | |||
| public GenericsAjaxResult<String> resetEmail(SysUser sysUser) throws Exception { | |||
| throw new Exception("修改gitLink用户邮箱失败:" + throwable.getMessage()); | |||
| } | |||
| @Override | |||
| public GenericsAjaxResult<String> resetPhoneNum(SysUser sysUser) throws Exception { | |||
| throw new Exception("修改gitLink用户手机号失败:" + throwable.getMessage()); | |||
| } | |||
| @Override | |||
| public GenericsAjaxResult<String> deleteGitLinkUser(SysUser sysUser) throws Exception { | |||
| throw new Exception("删除gitLink用户失败:" + throwable.getMessage()); | |||
| } | |||
| }; | |||
| } | |||
| } | |||
| @@ -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<LoginUser> 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<LoginUser> 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<LoginUser> 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 + " 已停用"); | |||
| } | |||
| @@ -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<String> gitLinkLogin(@RequestParam("ci4sUsername") String ci4sUsername, @RequestParam("username") String username, @RequestParam("password") String password) { | |||
| return genericsSuccess(gitService.login(ci4sUsername, username, password)); | |||
| public GenericsAjaxResult<String> gitLinkLogin(@RequestParam("username") String username, @RequestParam("password") String password) { | |||
| return genericsSuccess(gitService.login(username, password)); | |||
| } | |||
| @PostMapping("/createGitLinkUser") | |||
| @ApiOperation("新增gitLink用户") | |||
| public GenericsAjaxResult<String> createGitLinkUser(@RequestBody SysUser sysUser) throws Exception { | |||
| gitService.createUser(sysUser); | |||
| return GenericsAjaxResult.success("新增成功"); | |||
| } | |||
| @PostMapping("/resetPwd") | |||
| @ApiOperation("更改gitLink用户密码") | |||
| public GenericsAjaxResult<String> resetPwd(@RequestBody SysUser sysUser) throws Exception { | |||
| gitService.resetPwd(sysUser); | |||
| return GenericsAjaxResult.success("修改成功"); | |||
| } | |||
| @PutMapping("/resetEmail") | |||
| @ApiOperation("更改gitLink用户邮箱") | |||
| public GenericsAjaxResult<String> resetEmail(@RequestBody SysUser sysUser) throws Exception { | |||
| gitService.resetEmail(sysUser); | |||
| return GenericsAjaxResult.success("修改成功"); | |||
| } | |||
| @PutMapping("/resetPhoneNum") | |||
| @ApiOperation("更改gitLink用户手机号") | |||
| public GenericsAjaxResult<String> resetPhoneNum(@RequestBody SysUser sysUser) throws Exception { | |||
| gitService.resetPhoneNum(sysUser); | |||
| return GenericsAjaxResult.success("修改成功"); | |||
| } | |||
| @DeleteMapping("/deleteGitLinkUser") | |||
| @ApiOperation("删除gitLink用户") | |||
| public GenericsAjaxResult<String> deleteGitLinkUser(@RequestBody SysUser sysUser) throws Exception { | |||
| gitService.deleteUser(sysUser); | |||
| return GenericsAjaxResult.success("删除成功"); | |||
| } | |||
| } | |||
| @@ -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<Map<String, Object>> getBrancheList(String token,String owner, String projectName) throws Exception; | |||
| List<Map<String, Object>> 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; | |||
| } | |||
| @@ -529,7 +529,7 @@ public class ExperimentServiceImpl implements ExperimentService { | |||
| private void insertModelDependencyNew(Map<String, Object> dependendcy, Map<String, Object> trainInfo, Map<String, Object> 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<Map.Entry<String, Object>> dependendcyIterator = dependendcy.entrySet().iterator(); | |||
| Map<String, Object> modelTrain = (Map<String, Object>) trainInfo.get("model_train"); | |||
| Map<String, Object> modelEvaluate = (Map<String, Object>) trainInfo.get("model_evaluate"); | |||
| @@ -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<String, Object> 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<String, Object> runResMap = JsonUtils.jsonToMap(userReq); | |||
| return runResMap; | |||
| } | |||
| @Override | |||
| public void createUser(SysUser sysUser) throws Exception { | |||
| String token = checkoutToken(); | |||
| Map<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> resultMap = JsonUtils.jsonToMap(result); | |||
| if ((boolean) resultMap.get("can_delete")) { | |||
| Map<String, Object> 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")); | |||
| } | |||
| } | |||
| } | |||
| @@ -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<String, Object> userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); | |||
| String gitLinkUsername = loginUser.getSysUser().getUserName(); | |||
| String gitLinkPassword = loginUser.getSysUser().getOriginPassword(); | |||
| Map<String, Object> 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<String, Object> userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); | |||
| String gitLinkUsername = loginUser.getSysUser().getUserName(); | |||
| String gitLinkPassword = loginUser.getSysUser().getOriginPassword(); | |||
| Map<String, Object> 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<ModelsVo> 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<String, Object> userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); | |||
| Map<String, Object> userInfo = getUserInfo(ci4sUsername, gitLinkPassword); | |||
| String token = (String) userInfo.get("token"); | |||
| //拼接查询url | |||
| @@ -955,10 +954,9 @@ public class ModelsServiceImpl implements ModelsService { | |||
| public Page<ModelsVo> 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<String, Object> userInfo = getUserInfo(ci4sUsername, gitLinkUsername, gitLinkPassword); | |||
| Map<String, Object> userInfo = getUserInfo(ci4sUsername, gitLinkPassword); | |||
| String token = (String) userInfo.get("token"); | |||
| //拼接查询url | |||
| @@ -1326,11 +1324,11 @@ public class ModelsServiceImpl implements ModelsService { | |||
| modelDependency1TreeVo.setChildModelList(childModelList); | |||
| } | |||
| Map<String, Object> getUserInfo(String ci4sUsername, String gitLinkUsername, String gitLinkPassword) throws Exception { | |||
| Map<String, Object> 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<String, Object> userInfo = JsonUtils.jsonToMap(userReq); | |||
| @@ -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<String, Object> 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<String, Object> userInfo = JsonUtils.jsonToMap(userReq); | |||
| @@ -337,7 +337,7 @@ public class NewDatasetServiceImpl implements NewDatasetService { | |||
| } | |||
| @Override | |||
| public Page<NewDatasetVo> newPubilcQueryByPage(Dataset dataset, PageRequest pageRequest) { | |||
| public Page<NewDatasetVo> 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; | |||
| @@ -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<String, Object> 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; | |||
| } | |||
| @@ -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<SysUser> list = userService.selectUserList(user); | |||
| ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); | |||
| util.exportExcel(response, list, "用户数据"); | |||
| @@ -146,7 +146,8 @@ public class SysUserController extends BaseController { | |||
| Set<String> roles = permissionService.getRolePermission(user); | |||
| // 权限集合 | |||
| Set<String> 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<String> getOriginPwd(@RequestParam(value = "username") String username) { | |||
| return R.ok(userService.getOriginPwd(username)); | |||
| } | |||
| } | |||
| @@ -125,5 +125,5 @@ public interface SysUserMapper | |||
| */ | |||
| public SysUser checkEmailUnique(String email); | |||
| public SysUser checktGitLinkUsernameUnique(String gitLinkUsername); | |||
| String getOriginPwd(Long userId); | |||
| } | |||
| @@ -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<SysUser> userList, Boolean isUpdateSupport, String operName); | |||
| String getOriginPwd(String username); | |||
| } | |||
| @@ -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<String> 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<String> result = remoteMmpService.resetEmail(user); | |||
| if (result.getCode() != 200) { | |||
| throw new Exception(result.getMsg()); | |||
| } | |||
| } | |||
| if (!oldUser.getPhonenumber().equals(user.getPhonenumber())) { | |||
| GenericsAjaxResult<String> 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<String> 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<String> 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<String> 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()); | |||
| } | |||
| } | |||
| @@ -14,6 +14,7 @@ | |||
| <result property="sex" column="sex"/> | |||
| <result property="avatar" column="avatar"/> | |||
| <result property="password" column="password"/> | |||
| <result property="originPassword" column="origin_password"/> | |||
| <result property="status" column="status"/> | |||
| <result property="delFlag" column="del_flag"/> | |||
| <result property="loginIp" column="login_ip"/> | |||
| @@ -23,7 +24,6 @@ | |||
| <result property="updateBy" column="update_by"/> | |||
| <result property="updateTime" column="update_time"/> | |||
| <result property="remark" column="remark"/> | |||
| <result property="gitLinkUsername" column="git_link_username"/> | |||
| <result property="gitLinkPassword" column="git_link_password"/> | |||
| <result property="credit" column="credit"/> | |||
| <association property="dept" javaType="SysDept" resultMap="deptResult"/> | |||
| @@ -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 id="selectUserList" parameterType="SysUser" resultMap="SysUserResult"> | |||
| select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, | |||
| u.git_link_username, TRUNCATE(u.credit, 1) as credit, | |||
| ROUND(u.credit, 1) as credit, | |||
| u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader | |||
| from sys_user u | |||
| left join sys_dept d on u.dept_id = d.dept_id | |||
| @@ -125,7 +124,7 @@ | |||
| </select> | |||
| <select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult"> | |||
| select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time, TRUNCATE(u.credit, 1) as credit, u.git_link_username | |||
| select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time, ROUND(u.credit, 1) as credit | |||
| from sys_user u | |||
| left join sys_dept d on u.dept_id = d.dept_id | |||
| left join sys_user_role ur on u.user_id = ur.user_id | |||
| @@ -142,7 +141,7 @@ | |||
| </select> | |||
| <select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult"> | |||
| select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time , TRUNCATE(u.credit, 1) as credit, u.git_link_username | |||
| select distinct u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.phonenumber, u.status, u.create_time , ROUND(u.credit, 1) as credit | |||
| from sys_user u | |||
| left join sys_dept d on u.dept_id = d.dept_id | |||
| left join sys_user_role ur on u.user_id = ur.user_id | |||
| @@ -191,11 +190,8 @@ | |||
| and del_flag = '0' limit 1 | |||
| </select> | |||
| <select id="checktGitLinkUsernameUnique" resultType="com.ruoyi.system.api.domain.SysUser"> | |||
| select user_id, git_link_username | |||
| from sys_user | |||
| where git_link_username = #{gitLinkUsername} | |||
| and del_flag = '0' limit 1 | |||
| <select id="getOriginPwd" resultType="java.lang.String"> | |||
| select origin_password from sys_user where user_id = #{userId} | |||
| </select> | |||
| <insert id="insertUser" parameterType="SysUser" useGeneratedKeys="true" keyProperty="userId"> | |||
| @@ -209,10 +205,10 @@ | |||
| <if test="phonenumber != null and phonenumber != ''">phonenumber,</if> | |||
| <if test="sex != null and sex != ''">sex,</if> | |||
| <if test="password != null and password != ''">password,</if> | |||
| <if test="originPassword != null and originPassword != ''">origin_password,</if> | |||
| <if test="status != null and status != ''">status,</if> | |||
| <if test="createBy != null and createBy != ''">create_by,</if> | |||
| <if test="remark != null and remark != ''">remark,</if> | |||
| <if test="gitLinkUsername != null and gitLinkUsername != ''">git_link_username,</if> | |||
| <if test="gitLinkPassword != null and gitLinkPassword != ''">git_link_password,</if> | |||
| <if test="credit != null">credit,</if> | |||
| create_time | |||
| @@ -226,6 +222,7 @@ | |||
| <if test="phonenumber != null and phonenumber != ''">#{phonenumber},</if> | |||
| <if test="sex != null and sex != ''">#{sex},</if> | |||
| <if test="password != null and password != ''">#{password},</if> | |||
| <if test="originPassword != null and originPassword != ''">#{originPassword},</if> | |||
| <if test="status != null and status != ''">#{status},</if> | |||
| <if test="createBy != null and createBy != ''">#{createBy},</if> | |||
| <if test="remark != null and remark != ''">#{remark},</if> | |||
| @@ -247,12 +244,12 @@ | |||
| <if test="sex != null and sex != ''">sex = #{sex},</if> | |||
| <if test="avatar != null and avatar != ''">avatar = #{avatar},</if> | |||
| <if test="password != null and password != ''">password = #{password},</if> | |||
| <if test="originPassword != null and originPassword != ''">origin_password = #{originPassword},</if> | |||
| <if test="status != null and status != ''">status = #{status},</if> | |||
| <if test="loginIp != null and loginIp != ''">login_ip = #{loginIp},</if> | |||
| <if test="loginDate != null">login_date = #{loginDate},</if> | |||
| <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> | |||
| <if test="remark != null">remark = #{remark},</if> | |||
| <if test="gitLinkUsername != null and gitLinkUsername != ''">git_link_username = #{gitLinkUsername},</if> | |||
| <if test="gitLinkPassword != null and gitLinkPassword != ''">git_link_password = #{gitLinkPassword},</if> | |||
| <if test="credit != null">credit = #{credit},</if> | |||
| update_time = sysdate() | |||