1
luodangjia
2025-01-21 41577db0cb94872940a5f498611334a3ba5ece8b
1
16个文件已修改
1个文件已删除
232 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/Company.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/model/RegisterUser.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/AppUser.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/resources/bootstrap.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/CompanyController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/Sample.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-company/src/main/resources/bootstrap.yml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-ui/vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/domain/Company.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@@ -15,63 +16,83 @@
    @TableId
    private Long id;
    /** 企业用户id */
    @Schema(description = "企业用户id")
    private Long userId;
    /** 公司名称 */
    @Schema(description = "公司名称")
    private String companyName;
    /** 统一社会信用代码 */
    @Schema(description = "统一社会信用代码")
    private String socialCode;
    /** 省份代码 */
    @Schema(description = "省份代码")
    private String provinceCode;
    /** 城市代码 */
    @Schema(description = "城市代码")
    private String cityCode;
    /** 区域代码 */
    @Schema(description = "区域代码")
    private String districtCode;
    /**所在区域(省市区)*/
    @Schema(description = "所在区域(省市区")
    private String area;
    /** 经营地址 */
    @Schema(description = "经营地址")
    private String businessAddress;
    /** 身份证正面照片 */
    @Schema(description = "身份证正面照片")
    private String idCardFrontUrl;
    /** 身份证反面照片 */
    @Schema(description = "身份证反面照片")
    private String idCardBackUrl;
    /** 法人姓名 */
    @Schema(description = "法人姓名")
    private String legalPersonName;
    /** 身份证号码 */
    @Schema(description = "身份证号码")
    private String idCardNumber;
    /** 营业执照照片 */
    @Schema(description = "营业执照照片")
    private String businessLicenseUrl;
    /** 资质类目:1-再生资源回收备案资质 2-家电拆解资质 3-报废机动车回收拆解资质 4-危险废物经营许可证 0-其他证书 */
    @Schema(description = "资质类目:1-再生资源回收备案资质 2-家电拆解资质 3-报废机动车回收拆解资质 4-危险废物经营许可证 0-其他证书")
    private Integer category;
    /** 拆解企业资质证书图片地址 */
    @Schema(description = "拆解企业资质证书图片地址")
    private String certificateUrl;
    /** 联系人姓名 */
    @Schema(description = "联系人姓名")
    private String contactName;
    /** 联系人手机号 */
    @Schema(description = "联系人手机号")
    private String contactPhone;
    /** 联系人邮箱 */
    @Schema(description = "联系人邮箱")
    private String email;
    /** 创建时间 */
    @Schema(description = "创建时间")
    private LocalDateTime createTime;
    /** 更新时间 */
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;
    /** 是否删除 */
ruoyi-api/ruoyi-api-company/src/main/java/com/ruoyi/company/api/model/RegisterUser.java
@@ -4,7 +4,6 @@
import lombok.Data;
@Data
public class RegisterUser {
    @Schema(description = "账号名称")
    private String accountName;
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/AppUser.java
@@ -20,7 +20,12 @@
    private Integer status;
    /** 创建时间 */
    private LocalDateTime loginTime;
    private Long loginTime;
    /**
     * 过期时间
     */
    private Long expireTime;
    public Long getUserId() {
        return userId;
@@ -54,11 +59,11 @@
        this.status = status;
    }
    public LocalDateTime getLoginTime() {
    public Long getLoginTime() {
        return loginTime;
    }
    public void setLoginTime(LocalDateTime loginTime) {
    public void setLoginTime(Long loginTime) {
        this.loginTime = loginTime;
    }
@@ -69,4 +74,12 @@
    public void setToken(String token) {
        this.token = token;
    }
    public Long getExpireTime() {
        return expireTime;
    }
    public void setExpireTime(Long expireTime) {
        this.expireTime = expireTime;
    }
}
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -16,6 +16,7 @@
import com.ruoyi.company.api.model.RegisterUser;
import com.ruoyi.system.api.model.AppUser;
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;
@@ -46,6 +47,7 @@
 * @author ruoyi
 */
@RestController
@Tag(name = "用户登录", description = "用户登录")
public class TokenController
{
    @Autowired
@@ -131,6 +133,7 @@
    }
    @PostMapping("companyLogin")
    @Operation(summary = "用户登录接口",description = "账号/手机号登录")
    public R<Map<String, Object>> companyLogin(@RequestBody RegisterUser registerUser)
    {
        // 用户登录
@@ -147,7 +150,7 @@
        appUser.setUserId(user.getUserId());
        appUser.setAccountName(appUser.getAccountName());
        appUser.setPhone(appUser.getPhone());
        appUser.setLoginTime(LocalDateTime.now());
        appUser.setLoginTime(System.currentTimeMillis());
        appUser.setToken(token);
        // 根据uuid将loginUser缓存
@@ -172,6 +175,7 @@
     * @return
     */
    @PostMapping("smsLogin")
    @Operation(summary = "验证码登录",description = "验证码登录")
    public R<Map<String, Object>> smsLogin(@RequestBody RegisterUser registerUser){
        String smsCode = registerUser.getSmsCode();
        if (!"999999".equals(smsCode)) {
@@ -208,6 +212,7 @@
     * 重置密码
     */
    @PostMapping("resetPwd")
    @Operation(summary = "重置密码",description = "重置密码")
    public R<?> resetPwd(@RequestBody RegisterUser registerUser)
    {
        sysLoginService.resetPwd(registerUser);
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -184,12 +184,10 @@
        if (R.isError(userByPhoneR)) {
            throw new ServiceException(userByPhoneR.getMsg());
        }
        if (userByPhoneR.getData() == null) {
            throw new ServiceException("账号不存在");
        }
        if (SecurityUtils.matchesPassword(password, userByPhoneR.getData().getPassword())) {
            return userByPhoneR.getData();
        if (userByPhoneR.getData() != null) {
            if (SecurityUtils.matchesPassword(password, userByPhoneR.getData().getPassword())) {
                return userByPhoneR.getData();
            }
        }
ruoyi-auth/src/main/resources/bootstrap.yml
@@ -15,6 +15,7 @@
      discovery:
        # 服务注册地址
        server-addr: 192.168.110.111:8848
        ip: 192.168.110.111
      config:
        # 配置中心地址
        server-addr: 192.168.110.111:8848
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java
@@ -44,6 +44,8 @@
     */
    public static final String LOGIN_USER = "login_user";
    public static final String COMPANY_LOGIN_USER = "company_login_user";
    /**
     * 角色权限
     */
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java
@@ -3,6 +3,8 @@
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import com.ruoyi.system.api.model.AppUser;
import org.springframework.util.PatternMatchUtils;
import com.ruoyi.common.core.context.SecurityContextHolder;
import com.ruoyi.common.core.exception.auth.NotLoginException;
@@ -93,6 +95,11 @@
        return tokenService.getLoginUser(token);
    }
    public AppUser getAppUser(String token)
    {
        return tokenService.getAppUser(token);
    }
    /**
     * 验证当前用户有效期, 如果相差不足120分钟,自动刷新缓存
     * 
@@ -103,6 +110,11 @@
        tokenService.verifyToken(loginUser);
    }
    public void verifyLoginUserExpire(AppUser appUser)
    {
        tokenService.verifyToken(appUser);
    }
    /**
     * 验证用户是否具备某权限
     * 
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java
@@ -2,6 +2,7 @@
import com.ruoyi.common.security.annotation.RequiresPermissions;
import com.ruoyi.common.security.annotation.RequiresRoles;
import com.ruoyi.system.api.model.AppUser;
import com.ruoyi.system.api.model.LoginUser;
/**
@@ -53,6 +54,13 @@
        return authLogic.getLoginUser(token);
    }
    public static AppUser getAppUser(String token)
    {
        return authLogic.getAppUser(token);
    }
    /**
     * 验证当前用户有效期
     * 
@@ -63,6 +71,12 @@
        authLogic.verifyLoginUserExpire(loginUser);
    }
    public static void verifyLoginUserExpire(AppUser appUser)
    {
        authLogic.verifyLoginUserExpire(appUser);
    }
    /**
     * 当前账号是否含有指定角色标识, 返回true或false
     * 
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java
@@ -2,6 +2,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.system.api.model.AppUser;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.AsyncHandlerInterceptor;
import com.ruoyi.common.core.constant.SecurityConstants;
@@ -41,6 +43,13 @@
                AuthUtil.verifyLoginUserExpire(loginUser);
                SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser);
            }
            AppUser appUser = AuthUtil.getAppUser(token);
            if (StringUtils.isNotNull(appUser))
            {
                AuthUtil.verifyLoginUserExpire(appUser);
                SecurityContextHolder.set(SecurityConstants.COMPANY_LOGIN_USER, appUser);
            }
        }
        return true;
    }
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -9,6 +9,7 @@
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.model.AppUser;
import com.ruoyi.system.api.model.LoginUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -116,6 +117,25 @@
        return user;
    }
    public AppUser getAppUser(String token)
    {
        AppUser user = null;
        try
        {
            if (StringUtils.isNotEmpty(token))
            {
                String userkey = JwtUtils.getUserKey(token);
                user = redisService.getCacheObject(getTokenKey(userkey));
                return user;
            }
        }
        catch (Exception e)
        {
            log.error("获取用户信息异常'{}'", e.getMessage());
        }
        return user;
    }
    /**
     * 设置用户身份信息
     */
@@ -154,6 +174,16 @@
        }
    }
    public void verifyToken(AppUser loginUser)
    {
        long expireTime = loginUser.getExpireTime();
        long currentTime = System.currentTimeMillis();
        if (expireTime - currentTime <= MILLIS_MINUTE_TEN)
        {
            refreshToken(loginUser);
        }
    }
    /**
     * 刷新令牌有效期
     *
@@ -168,6 +198,15 @@
        redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
    }
    public void refreshToken(AppUser appUser)
    {
        appUser.setLoginTime(System.currentTimeMillis());
        appUser.setExpireTime(appUser.getLoginTime() + expireTime * MILLIS_MINUTE);
        // 根据uuid将loginUser缓存
        String userKey = getTokenKey(appUser.getToken());
        redisService.setCacheObject(userKey, appUser, expireTime, TimeUnit.MINUTES);
    }
    private String getTokenKey(String token)
    {
        return ACCESS_TOKEN + token;
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java
@@ -1,6 +1,8 @@
package com.ruoyi.common.security.utils;
import javax.servlet.http.HttpServletRequest;
import com.ruoyi.system.api.model.AppUser;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.TokenConstants;
@@ -48,6 +50,20 @@
        return SecurityContextHolder.get(SecurityConstants.LOGIN_USER, LoginUser.class);
    }
    public static AppUser getAppLoginUser()
    {
        return SecurityContextHolder.get(SecurityConstants.COMPANY_LOGIN_USER, AppUser.class);
    }
    /**
     * 获取企业用户信息
     */
    public static AppUser getCompanyLoginUser()
    {
        return SecurityContextHolder.get(SecurityConstants.COMPANY_LOGIN_USER, AppUser.class);
    }
    /**
     * 获取请求token
     */
ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/CompanyController.java
@@ -3,8 +3,11 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.security.annotation.InnerAuth;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.company.api.domain.Company;
import com.ruoyi.company.service.CompanyService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
@@ -28,4 +31,13 @@
                .eq(Company::getUserId, userId));
        return R.ok(list);
    }
    @Operation(summary = "获取当前用户企业详情")
    @GetMapping("/getCompanyDetail")
    public R<Company> getCompanyDetail(){
        Long userId = SecurityUtils.getAppLoginUser().getUserId();
        Company company = companyService.getOne(new LambdaQueryWrapper<Company>()
                .eq(Company::getUserId, userId));
        return R.ok(company);
    }
}
ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/Sample.java
File was deleted
ruoyi-modules/ruoyi-company/src/main/java/com/ruoyi/company/controller/front/UserController.java
@@ -2,11 +2,15 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.security.annotation.InnerAuth;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.company.api.domain.User;
import com.ruoyi.company.api.model.RegisterUser;
import com.ruoyi.company.api.model.UserDetail;
import com.ruoyi.company.service.UserService;
import com.ruoyi.system.api.model.AppUser;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import lombok.experimental.StandardException;
import org.springframework.context.annotation.Lazy;
@@ -27,8 +31,13 @@
    }
    @GetMapping("/getUserDetail")
    public R<UserDetail> getUserDetail(Long userId) {
        return R.ok(new UserDetail());
    @Operation(summary = "获取用户详情",tags = {"企业端"})
    public R<UserDetail> getUserDetail() {
        AppUser appLoginUser = SecurityUtils.getAppLoginUser();
        User user = userService.getById(appLoginUser.getUserId());
        UserDetail userDetail = new UserDetail();
        BeanUtils.copyProperties(user, userDetail);
        return R.ok(userDetail);
    }
    @GetMapping("/getUserByAccountName")
ruoyi-modules/ruoyi-company/src/main/resources/bootstrap.yml
@@ -15,6 +15,7 @@
      discovery:
        # 服务注册地址
        server-addr: 192.168.110.111:8848
        ip: 192.168.110.111
      config:
        # 配置中心地址
        server-addr: 192.168.110.111:8848
ruoyi-ui/vue.config.js
@@ -36,7 +36,7 @@
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        target: `http://192.168.110.80:9000`,
        target: `http://192.168.110.188:9000`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''