ZQN
2025-05-19 0e12e4ab45db6768a0f45d8952f78b0ae9190723
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
package com.project.common.core.domain.entity;
 
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.project.common.annotation.Excel;
import com.project.common.annotation.Excel.Type;
import com.project.common.annotation.Excels;
import com.project.common.annotation.Sensitive;
import com.project.common.xss.Xss;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
 
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * 用户对象 sys_user
 *
 * @author project
 */
 
@Data
@NoArgsConstructor
public class SysUser implements Serializable
{
    private static final long serialVersionUID = 1L;
 
    /** 用户ID */
    @TableId("user_id")
    private Long userId;
 
    /** 部门ID */
    private Long deptId;
 
    /** 用户账号 */
    private String userName;
 
    /** 用户类型(00系统用户,01执法用户,02企业用户) */
    private String userType;
 
    /** 用户等级 */
    @Sensitive(type = Sensitive.SensitiveType.DEFAULT)
    private String nickName;
 
    /** 用户邮箱 */
    private String email;
 
    /** 手机号码 */
    @Sensitive(type = Sensitive.SensitiveType.PHONE)
    private String phonenumber;
 
    /** openid */
    private String wxOpenid;
 
 
    /** 用户性别 */
    private String sex;
 
    /** 用户头像 */
    private String avatar;
 
    /** 密码 */
    private String password;
 
    /** 帐号状态(0正常 1停用) */
    private String status;
 
    /** 删除标志(0代表存在 2代表删除) */
    @TableLogic(value = "0",delval = "1")
    private String delFlag;
 
    /** 最后登录IP */
    private String loginIp;
 
    /** 最后登录时间 */
    private Date loginDate;
 
    private String createBy;
 
    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
 
    /** 更新者 */
    private String updateBy;
 
    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
 
    /** 备注 */
    private String remark;
 
    /** 备注 */
    private String recommendUser;
 
    /** 所属执法机构 */
    private String recommendPhone;
 
 
    /** 生日 */
    private String birthday;
 
    //省
    private String  province;
 
    //市
    private String  city;
 
    //区
    private String  area;
 
 
    /** 请求参数 */
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    @TableField(exist = false)
    private Map<String, Object> params;
 
    public Map<String, Object> getParams()
    {
        if (params == null)
        {
            params = new HashMap<>();
        }
        return params;
    }
 
    /** 部门对象 */
    @Excels({
        @Excel(name = "部门名称", targetAttr = "deptName", type = Type.EXPORT),
        @Excel(name = "部门负责人", targetAttr = "leader", type = Type.EXPORT)
    })
    @TableField(exist = false)
    private SysDept dept;
 
    /** 角色对象 */
    @TableField(exist = false)
    private List<SysRole> roles;
 
    /** 角色组 */
    @TableField(exist = false)
    private Long[] roleIds;
 
    /** 岗位组 */
    @TableField(exist = false)
    private Long[] postIds;
 
    /** 角色ID */
    @TableField(exist = false)
    private Long roleId;
 
    public SysUser(Long userId)
    {
        this.userId = userId;
    }
 
    public boolean isAdmin()
    {
        return isAdmin(this.userId);
    }
 
    public static boolean isAdmin(Long userId)
    {
        return userId != null && 1L == userId;
    }
 
    @Xss(message = "用户昵称不能包含脚本字符")
    public String getNickName()
    {
        return nickName;
    }
 
    @Xss(message = "用户账号不能包含脚本字符")
    public String getUserName()
    {
        return userName;
    }
 
    @Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
    public String getPhonenumber()
    {
        return phonenumber;
    }
 
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("userId", getUserId())
            .append("deptId", getDeptId())
            .append("userName", getUserName())
            .append("nickName", getNickName())
            .append("email", getEmail())
            .append("phonenumber", getPhonenumber())
            .append("sex", getSex())
            .append("avatar", getAvatar())
            .append("password", getPassword())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("loginIp", getLoginIp())
            .append("loginDate", getLoginDate())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .append("dept", getDept())
            .toString();
    }
}