zqy
2025-07-30 56efb9b94e1a256743a7ded90d43cd7479918fe4
会员判断
5个文件已修改
50 ■■■■■ 已修改文件
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/enums/UserStatus.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -57,7 +57,7 @@
    /** 密码 */
    private String password;
    /** 帐号状态(0正常 1停用) */
    /** 帐号状态(0正常 1停用 2删除 3异常 4试用期结束) */
    @Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
    private String status;
@@ -90,6 +90,18 @@
    /** 角色ID */
    private Long roleId;
    /**是否会员 0否 1是*/
    private Integer paid;
    public Integer getPaid() {
        return paid;
    }
    public void setPaid(Integer paid) {
        this.paid = paid;
    }
    public Integer getClanId() {
@@ -336,6 +348,7 @@
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("dept", getDept())
            .append("paid",getPaid())
            .toString();
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/enums/UserStatus.java
@@ -7,7 +7,7 @@
 */
public enum UserStatus
{
    OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"), ABNORMAL("3","异常");
    OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"), ABNORMAL("3","异常"), END("4","试用期结束");
    private final String code;
    private final String info;
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -33,6 +33,14 @@
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal;
import java.util.Date;
import java.util.Objects;
/**
 * 登录校验方法
 * 
@@ -109,7 +117,23 @@
    public boolean endOfLife(String username) {
        SysUser sysUser = userService.selectUserByUserName(username);
        if (sysUser.getPaid() != null && sysUser.getPaid().equals(0) && !"4".equals(sysUser.getStatus())) {
            Date startTime = sysUser.getCreateTime();
            // 安全转换
            Instant instant = startTime.toInstant();
            LocalDateTime startDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
            long daysPassed = ChronoUnit.DAYS.between(startDateTime, LocalDateTime.now());
            if (daysPassed > 7) {
                sysUser.setStatus("4");
                userService.updateUserStatus(sysUser);
            }
        }
        return true;
    }
@@ -124,6 +148,8 @@
     */
    public String login(String nickName, String password, String code, String uuid)
    {
        System.out.println("[[[[[[[[[[[[[[");
        endOfLife(nickName);
        // 验证码校验
        validateCaptcha(nickName, code, uuid);
        // 登录前置校验
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/UserDetailsServiceImpl.java
@@ -56,6 +56,10 @@
        {
            log.info("登录用户:{} 异常.", username);
            throw new ServiceException("对不起,您的账号:" + username + " 出现异常,请联系管理员");
        }else if(UserStatus.END.getCode().equals(user.getStatus()))
        {
            log.info("登录用户:{} 异常.", username);
            throw new ServiceException("对不起,您的账号:" + username + " 试用期已结束,请付费继续使用");
        }
        passwordService.validate(user);
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -24,6 +24,7 @@
        <result property="updateTime"   column="update_time"  />
        <result property="clanId"   column="clan_id"  />
        <result property="remark"       column="remark"       />
        <result property="paid"       column="paid"       />
        <association property="dept"    column="dept_id" javaType="SysDept" resultMap="deptResult" />
        <collection  property="roles"   javaType="java.util.List"           resultMap="RoleResult" />
    </resultMap>
@@ -48,7 +49,7 @@
    </resultMap>
    <sql id="selectUserVo">
        select u.clan_id,u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
        select u.clan_id,u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.clan_id,u.paid,
        d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
        r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
        from sys_user u