mitao
2025-01-21 e02a3eee8217ae6bff5890d1ece6ee1f342e03dd
1.管理端:修改密码
2.阿里云oss
11个文件已修改
4个文件已添加
431 ■■■■ 已修改文件
pom.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/query/MgtCompanyQuery.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/form/MgtPasswordDTO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SpringDocConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/management/MgtCompanyController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/pom.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/OssConfig.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/OssService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/OssServiceImpl.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -42,6 +42,7 @@
        <logback.version>1.2.13</logback.version>
        <spring-framework.version>5.3.39</spring-framework.version>
        <fastexcel.version>1.0.0</fastexcel.version>
        <aliyun-oss.version>3.17.4</aliyun-oss.version>
    </properties>
    <!-- 依赖声明 -->
@@ -317,7 +318,12 @@
                <artifactId>ocr_api20210707</artifactId>
                <version>3.1.2</version>
            </dependency>
            <!--aliyun-oss-->
            <dependency>
                <groupId>com.aliyun.oss</groupId>
                <artifactId>aliyun-sdk-oss</artifactId>
                <version>${aliyun-oss.version}</version>
            </dependency>
        </dependencies>
ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/query/MgtCompanyQuery.java
@@ -3,12 +3,14 @@
import com.ruoyi.common.core.page.BasePage;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * @author mitao
 * @date 2025/1/20
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(name = "管理端企业列表查询对象")
public class MgtCompanyQuery extends BasePage {
    private static final long serialVersionUID = 5429160619805017277L;
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
@@ -51,4 +51,21 @@
     */
    @PutMapping("/user/recordlogin")
    public R<Boolean> recordUserLogin(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * 根据用户id查询用户信息
     * @param userId
     * @param source
     * @return
     */
    @GetMapping("/user/get-by-id/{userId}")
    R<SysUser> getUserById(@PathVariable("userId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
    /**
     * 更新用户信息
     * @param sysUser
     * @param source
     */
    @PostMapping("/user/update")
    R<?> updateUser(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
@@ -42,6 +42,11 @@
            {
                return R.fail("记录用户登录信息失败:" + throwable.getMessage());
            }
            @Override
            public R<SysUser> getUserById(Long userId, String source) {
                return R.fail("获取用户信息失败:" + throwable.getMessage());
            }
        };
    }
}
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -1,46 +1,42 @@
package com.ruoyi.auth.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.ruoyi.auth.form.LoginBody;
import com.ruoyi.auth.form.MgtPasswordDTO;
import com.ruoyi.auth.service.SysLoginService;
import com.ruoyi.auth.utils.SmsUtils;
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.CaptchaException;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.JwtUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.auth.AuthUtil;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.company.api.RemoteCompanyUserService;
import com.ruoyi.company.api.domain.User;
import com.ruoyi.company.api.model.RegisterUser;
import com.ruoyi.system.api.model.AppUser;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.auth.form.LoginBody;
import com.ruoyi.auth.form.RegisterBody;
import com.ruoyi.auth.service.SysLoginService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.JwtUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.security.auth.AuthUtil;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.model.LoginUser;
import java.time.LocalDateTime;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import static com.alibaba.nacos.api.common.Constants.ACCESS_TOKEN;
/**
 * token 控制
 * 
@@ -62,7 +58,7 @@
    @Resource
    private RemoteCompanyUserService remoteCompanyUserService;
    @Operation(summary = "管理端-登录")
    @PostMapping("login")
    public R<?> login(@RequestBody LoginBody form)
    {
@@ -72,6 +68,16 @@
        return R.ok(tokenService.createToken(userInfo));
    }
    @Operation(summary = "管理端-修改密码")
    @GetMapping("/modify-pwd")
    public R<?> modifyPwd(@Valid @RequestBody MgtPasswordDTO dto) {
        try {
            sysLoginService.modifyPwd(dto);
            return R.ok();
        } catch (ServiceException e) {
            return R.fail(e.getMessage());
        }
    }
    @DeleteMapping("logout")
    public R<?> logout(HttpServletRequest request)
    {
ruoyi-auth/src/main/java/com/ruoyi/auth/form/MgtPasswordDTO.java
New file
@@ -0,0 +1,22 @@
package com.ruoyi.auth.form;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
 * @author mitao
 * @date 2025/1/21
 */
@Data
@Schema(name = "修改密码数据传输对象")
public class MgtPasswordDTO {
    @NotBlank(message = "原密码不能为空")
    @Schema(description = "原密码", example = "1")
    private String oldPassword;
    @NotBlank(message = "新密码不能为空")
    @Schema(description = "新密码",example = "12345678")
    private String newPassword;
}
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -1,23 +1,13 @@
package com.ruoyi.auth.service;
import com.ruoyi.common.core.exception.CaptchaException;
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.company.api.RemoteCompanyService;
import com.ruoyi.company.api.RemoteCompanyUserService;
import com.ruoyi.company.api.domain.Company;
import com.ruoyi.company.api.domain.User;
import com.ruoyi.company.api.model.RegisterUser;
import lombok.RequiredArgsConstructor;
import org.jacoco.agent.rt.internal_43f5073.core.internal.flow.IFrame;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import com.ruoyi.auth.form.MgtPasswordDTO;
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.enums.UserStatus;
import com.ruoyi.common.core.exception.CaptchaException;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.core.utils.DateUtils;
@@ -25,13 +15,21 @@
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.company.api.RemoteCompanyService;
import com.ruoyi.company.api.RemoteCompanyUserService;
import com.ruoyi.company.api.domain.Company;
import com.ruoyi.company.api.domain.User;
import com.ruoyi.company.api.model.RegisterUser;
import com.ruoyi.system.api.RemoteUserService;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
/**
 * 登录校验方法
@@ -256,4 +254,20 @@
        return false;
    }
    /**
     * 管理端-修改密码
     * @param dto
     */
    public void modifyPwd(MgtPasswordDTO dto) {
        Long userId = SecurityUtils.getUserId();
        SysUser sysUser = remoteUserService.getUserById(userId, SecurityConstants.INNER).getData();
        if (Objects.isNull(sysUser)){
            throw new ServiceException("用户不存在");
        }
        if (!SecurityUtils.matchesPassword(SecurityUtils.encryptPassword(dto.getOldPassword()), sysUser.getPassword())){
            throw new ServiceException("原密码错误");
        }
        sysUser.setPassword(SecurityUtils.encryptPassword(dto.getNewPassword()));
        remoteUserService.updateUser(sysUser,SecurityConstants.INNER);
    }
}
ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/SpringDocConfig.java
@@ -52,7 +52,7 @@
    @Autowired
    private DiscoveryClient discoveryClient;
    private final static String[] EXCLUDE_ROUTES = new String[] { "ruoyi-gateway", "ruoyi-auth", "ruoyi-file", "ruoyi-monitor" };
    private final static String[] EXCLUDE_ROUTES = new String[] { "ruoyi-gateway", /*"ruoyi-auth",*/ "ruoyi-file", "ruoyi-monitor" };
    public SwaggerDocRegister(SwaggerUiConfigProperties swaggerUiConfigProperties, DiscoveryClient discoveryClient)
    {
ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/management/MgtCompanyController.java
@@ -30,7 +30,7 @@
@Validated
@RestController
@RequestMapping("/mgt/company")
@Tag(name = "管理端企业列表相关接口")
@Tag(name = "管理端-企业列表相关接口")
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class MgtCompanyController {
    private final CompanyService companyService;
ruoyi-modules/ruoyi-file/pom.xml
@@ -65,7 +65,11 @@
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-api-system</artifactId>
        </dependency>
        <!--aliyun-oss-->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
        </dependency>
    </dependencies>
    <build>
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/config/OssConfig.java
New file
@@ -0,0 +1,59 @@
package com.ruoyi.file.config;
import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
 * 存储-配置
 *
 * @author mitao
 */
@ConfigurationProperties(prefix = "oss")
@Component
@Slf4j
@Data
public class OssConfig {
    private String folder = "dev";
    private String accessKeyId;
    private String accessKeySecret;
    private String uploadEndpoint;
    private String downloadEndpoint;
    private String bucketName;
    public static String FOLDER;
    public static String ACCESS_KEY_ID;
    public static String ACCESS_KEY_SECRET;
    public static String UPLOAD_ENDPOINT;
    public static String DOWNLOAD_ENDPOINT;
    public static String BUCKET_NAME;
    @PostConstruct
    public void init() {
        log.debug("OSS配置信息:" + JSONObject.toJSONString(this));
        FOLDER = folder;
        ACCESS_KEY_ID = accessKeyId;
        ACCESS_KEY_SECRET = accessKeySecret;
        UPLOAD_ENDPOINT = uploadEndpoint;
        DOWNLOAD_ENDPOINT = downloadEndpoint;
        BUCKET_NAME = bucketName;
    }
    public String getStoreFolder() {
        return getFolder();
    }
}
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/SysFileController.java
@@ -1,15 +1,22 @@
package com.ruoyi.file.controller;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.file.FileUtils;
import com.ruoyi.file.service.ISysFileService;
import com.ruoyi.file.service.OssService;
import com.ruoyi.system.api.domain.SysFile;
import io.swagger.v3.oas.annotations.Operation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.file.FileUtils;
import com.ruoyi.file.service.ISysFileService;
import com.ruoyi.system.api.domain.SysFile;
import java.io.IOException;
import java.util.Objects;
/**
 * 文件请求处理
@@ -23,6 +30,29 @@
    @Autowired
    private ISysFileService sysFileService;
    @Autowired
    private OssService ossService;
    /**
     * 上传文件
     *
     * @param file
     * @return
     */
    @Operation(summary = "上传文件")
    @PostMapping("/oss/upload")
    public R<String> uploadOss(@RequestPart("file") MultipartFile file) {
        if (Objects.isNull(file)) {
            throw new ServiceException("文件不能为空");
        }
        String fileUrl;
        try {
            fileUrl = ossService.uploadFile(file);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        return R.ok(fileUrl);
    }
    /**
     * 文件上传请求
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/OssService.java
New file
@@ -0,0 +1,28 @@
package com.ruoyi.file.service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
/**
 * @author mitao
 * @date 2024/12/23
 */
public interface OssService {
    /**
     * 文件上传
     *
     * @param file
     * @return
     */
    String uploadFile(MultipartFile file) throws IOException;
    /**
     * 文件上传,指定上传路径
     *
     * @param storagePath
     * @param file
     * @return
     */
    String upload(String storagePath, MultipartFile file) throws IOException;
}
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/OssServiceImpl.java
New file
@@ -0,0 +1,103 @@
package com.ruoyi.file.service;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProvider;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.file.config.OssConfig;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Objects;
import java.util.UUID;
/**
 * @author mitao
 * @date 2024/12/23
 */
@Service
public class OssServiceImpl implements OssService {
    /**
     * 文件上传
     *
     * @param file
     * @return
     */
    @Override
    public String uploadFile(MultipartFile file) throws IOException {
        return upload(OssConfig.FOLDER, file);
    }
    /**
     * 文件上传,指定上传路径
     *
     * @param storagePath
     * @param file
     * @return
     */
    @Override
    public String upload(String storagePath, MultipartFile file) throws IOException {
        CredentialsProvider credentialsProvider = new DefaultCredentialProvider(OssConfig.ACCESS_KEY_ID, OssConfig.ACCESS_KEY_SECRET);
        String region = "cn-chengdu";
        // 创建OSSClient实例。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(OssConfig.UPLOAD_ENDPOINT)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();
        InputStream inputStream = file.getInputStream();
        String originFileName = file.getOriginalFilename();
        String fileExt = Objects.requireNonNull(originFileName).substring(originFileName.lastIndexOf(".") + 1);
        String fileName = originFileName.substring(0, originFileName.lastIndexOf("."));
        // 设置文件名
        String filePathName = generateRelativeStoragePath(storagePath, fileExt, fileName);
        // 创建PutObjectRequest对象。
        PutObjectRequest putObjectRequest = new PutObjectRequest(OssConfig.BUCKET_NAME, filePathName, inputStream);
        // 创建PutObject请求。
        PutObjectResult result = ossClient.putObject(putObjectRequest);
        return OssConfig.DOWNLOAD_ENDPOINT + filePathName;
    }
    /**
     * <pre>
     * 获取存储的相对路径
     * 规则path + / + yyyyMMddHH  + uuid
     * </pre>
     *
     * @param storagePath
     * @return
     */
    private static String generateRelativeStoragePath(String storagePath, String fileType, String fileName) {
        String time = DateFormatUtils.format(new Date(), "yyyyMMddHHmmss");
        String uuid = UUID.randomUUID().toString();
        StringBuilder sb = new StringBuilder();
        if (StringUtils.isNotBlank(storagePath)) {
            sb.append(storagePath).append("/");
        }
        if (fileName == null) {
            sb.append(time).append(uuid);
        } else {
            sb.append(fileName).append(time);
        }
        if (StringUtils.isNotBlank(fileType)) {
            sb.append(".").append(fileType);
        }
        return sb.toString();
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -1,22 +1,5 @@
package com.ruoyi.system.controller;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
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.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.poi.ExcelUtil;
@@ -39,6 +22,24 @@
import com.ruoyi.system.service.ISysPostService;
import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
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.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
 * 用户信息
@@ -348,4 +349,24 @@
    {
        return success(deptService.selectDeptTreeList(dept));
    }
    /**
     * 根据用户id获取用户信息
     * @param userId
     * @return
     */
    @InnerAuth
    @GetMapping("/get-by-id/{userId}")
    R<SysUser> getUserById(@PathVariable("userId") Long userId){
        return R.ok(userService.selectUserById(userId));
    }
    /**
     * 更新用户信息
     * @param sysUser
     */
    @InnerAuth
    @PostMapping("/update")
    R<?> updateUser(@RequestBody SysUser sysUser){
        return R.ok(userService.resetPwd(sysUser));
    }
}