[feat] 新增编辑用户信息的内部接口

pull/445/head
hsdllcw 2024-10-25 16:53:27 +08:00
parent 8bde724310
commit 08299ccd09
28 changed files with 177 additions and 89 deletions

View File

@ -6,7 +6,7 @@
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
<name>ruoyi</name>
<url>http://www.ruoyi.vip</url>
@ -16,7 +16,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<ruoyi.version>3.6.41.0.2</ruoyi.version>
<ruoyi.version>3.6.41.0.3</ruoyi.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-api</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.api;
import com.ruoyi.system.api.inner.InnerRemoteUserService;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@ -20,17 +21,8 @@ import com.ruoyi.system.api.model.LoginUser;
* @author ruoyi
*/
@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
public interface RemoteUserService
public interface RemoteUserService extends InnerRemoteUserService
{
/**
* ID
*
* @param userId ID
* @param source
* @return
*/
@GetMapping("/user/detail/{userId}")
public R<LoginUser> infoById(@PathVariable("userId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/**
*
*
@ -41,15 +33,6 @@ public interface RemoteUserService
@GetMapping("/user/info/{username}")
public R<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/**
*
*
* @param phoneNumber
* @param source
* @return
*/
@GetMapping("/user/info/phoneNumber/{phoneNumber:\\d+}")
public R<LoginUser> getUserInfoByPhoneNumber(@PathVariable("phoneNumber") String phoneNumber, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/**
*
*

View File

@ -1,5 +1,6 @@
package com.ruoyi.system.api.factory;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.openfeign.FallbackFactory;
@ -11,7 +12,7 @@ import com.ruoyi.system.api.model.LoginUser;
/**
*
*
*
* @author ruoyi
*/
@Component
@ -25,9 +26,9 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
log.error("用户服务调用失败:{}", throwable.getMessage());
return new RemoteUserService()
{
@NotNull
@Override
public R<LoginUser> infoById(Long userId, String source)
{
public R<LoginUser> infoById_Inner(Long userId, @NotNull String source) {
return R.fail("获取用户失败:" + throwable.getMessage());
}
@ -37,8 +38,9 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
return R.fail("获取用户失败:" + throwable.getMessage());
}
@NotNull
@Override
public R<LoginUser> getUserInfoByPhoneNumber(String phoneNumber, String source) {
public R<LoginUser> getUserInfoByPhoneNumber_Inner(@NotNull String phoneNumber, @NotNull String source) {
return R.fail("获取用户失败:" + throwable.getMessage());
}
@ -53,6 +55,12 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
{
return R.fail("记录用户登录信息失败:" + throwable.getMessage());
}
@NotNull
@Override
public R<LoginUser> edit_Inner(@NotNull LoginUser user, @NotNull String source) {
return R.fail("修改用户信息失败:" + throwable.getMessage());
}
};
}
}

View File

@ -0,0 +1,32 @@
package com.ruoyi.system.api.inner;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.api.model.LoginUser;
import org.springframework.web.bind.annotation.*;
public interface InnerRemoteUserService {
/**
* ID
*
* @param userId ID
* @param source
* @return
*/
@GetMapping("/inner/user/detail/{userId}")
R<LoginUser> infoById_Inner(@PathVariable("userId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/**
*
*
* @param phoneNumber
* @param source
* @return
*/
@GetMapping("/inner/user/info/phoneNumber/{phoneNumber:\\d+}")
R<LoginUser> getUserInfoByPhoneNumber_Inner(@PathVariable("phoneNumber") String phoneNumber, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
@PutMapping("/inner/user")
R<LoginUser> edit_Inner(@RequestBody LoginUser user, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}

View File

@ -4,7 +4,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-modules</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-modules</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-modules</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-modules</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -134,48 +134,6 @@ public class SysUserController extends BaseController
return R.ok(sysUserVo);
}
/**
*
*/
@InnerAuth
@GetMapping("/info/phoneNumber/{phoneNumber:\\d+}")
public R<LoginUser> infoByPhone(@PathVariable("phoneNumber") String phoneNumber)
{
SysUser sysUser = userService.selectUserByPhoneNumber(phoneNumber);
if (StringUtils.isNull(sysUser))
{
return R.fail("用户名或密码错误");
}
// 角色集合
Set<String> roles = permissionService.getRolePermission(sysUser);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(sysUser);
LoginUser sysUserVo = new LoginUser();
sysUserVo.setSysUser(sysUser);
sysUserVo.setRoles(roles);
sysUserVo.setPermissions(permissions);
return R.ok(sysUserVo);
}
/**
* ID
*/
@InnerAuth
@GetMapping("/detail/{userId}")
public R<LoginUser> infoById(@PathVariable("userId") Long userId)
{
SysUser sysUser = userService.selectUserById(userId);
// 角色集合
Set<String> roles = permissionService.getRolePermission(sysUser);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(sysUser);
LoginUser sysUserVo = new LoginUser();
sysUserVo.setSysUser(sysUser);
sysUserVo.setRoles(roles);
sysUserVo.setPermissions(permissions);
return R.ok(sysUserVo);
}
/**
*
*/

View File

@ -0,0 +1,107 @@
package com.ruoyi.system.controller.inner
import com.ruoyi.common.core.domain.R
import com.ruoyi.common.core.utils.StringUtils
import com.ruoyi.common.log.annotation.Log
import com.ruoyi.common.log.enums.BusinessType
import com.ruoyi.common.security.annotation.InnerAuth
import com.ruoyi.system.api.domain.SysUser
import com.ruoyi.system.api.model.LoginUser
import com.ruoyi.system.service.ISysDeptService
import com.ruoyi.system.service.ISysPermissionService
import com.ruoyi.system.service.ISysRoleService
import com.ruoyi.system.service.ISysUserService
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.validation.annotation.Validated
import org.springframework.web.bind.annotation.*
/**
* 用户信息
*
* @author hsdllcw
*/
@RestController
@RequestMapping("/inner/user")
class InnerSysUserController {
@Autowired
lateinit var userService: ISysUserService
@Autowired
lateinit var permissionService: ISysPermissionService
@Autowired
lateinit var deptService: ISysDeptService
@Autowired
lateinit var roleService: ISysRoleService
/**
* 获取当前用户信息
*/
@InnerAuth
@GetMapping("/info/phoneNumber/{phoneNumber:\\d+}")
fun infoByPhone(@PathVariable("phoneNumber") phoneNumber: String?): R<LoginUser> {
val sysUser: SysUser = userService.selectUserByPhoneNumber(phoneNumber)
if (StringUtils.isNull(sysUser)) {
return R.fail("用户名或密码错误")
}
// 角色集合
val roles: Set<String> = permissionService.getRolePermission(sysUser)
// 权限集合
val permissions: Set<String> = permissionService.getMenuPermission(sysUser)
val sysUserVo = LoginUser()
sysUserVo.sysUser = sysUser
sysUserVo.roles = roles
sysUserVo.permissions = permissions
return R.ok(sysUserVo)
}
/**
* 根据ID获取用户信息
*/
@InnerAuth
@GetMapping("/detail/{userId}")
fun infoById(@PathVariable("userId") userId: Long?): R<LoginUser> {
val sysUser: SysUser = userService.selectUserById(userId)
// 角色集合
val roles: Set<String> = permissionService.getRolePermission(sysUser)
// 权限集合
val permissions: Set<String> = permissionService.getMenuPermission(sysUser)
val sysUserVo = LoginUser()
sysUserVo.sysUser = sysUser
sysUserVo.roles = roles
sysUserVo.permissions = permissions
return R.ok(sysUserVo)
}
/**
* 修改用户
*/
@InnerAuth
@PutMapping
@Log(title = "用户修改本人信息", businessType = BusinessType.UPDATE)
fun edit(@Validated @RequestBody loginUser: LoginUser): R<LoginUser> {
val originUser = userService.selectUserById(loginUser.userid)
val targetUser = loginUser.sysUser
userService.checkUserAllowed(originUser)
userService.checkUserDataScope(originUser.userId)
deptService.checkDeptDataScope(originUser.deptId)
roleService.checkRoleDataScope(*originUser.roleIds)
if (!userService.checkUserNameUnique(targetUser)) {
return error("修改用户'" + targetUser.userName + "'失败,登录账号已存在")
} else if (StringUtils.isNotEmpty(targetUser.phonenumber) && !userService.checkPhoneUnique(targetUser)) {
return error("修改用户'" + targetUser.userName + "'失败,手机号码已存在")
} else if (StringUtils.isNotEmpty(targetUser.email) && !userService.checkEmailUnique(targetUser)) {
return error("修改用户'" + targetUser.userName + "'失败,邮箱账号已存在")
}
originUser.userName = targetUser.userName ?: originUser.userName
originUser.phonenumber = targetUser.phonenumber ?: originUser.phonenumber
originUser.email = targetUser.email ?: originUser.email
originUser.avatar = targetUser.avatar ?: originUser.avatar
originUser.updateBy = originUser.userName
userService.updateUser(originUser)
return R.ok(loginUser)
}
}

View File

@ -914,7 +914,7 @@ export default {
data() {
return {
//
version: "3.6.41.0.2",
version: "3.6.41.0.3",
};
},
methods: {

View File

@ -4,7 +4,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-visual</artifactId>
<version>3.6.41.0.2</version>
<version>3.6.41.0.3</version>
</parent>
<modelVersion>4.0.0</modelVersion>