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
package com.dy.pipIrrGlobal.pojoBa;
 
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dy.common.mybatis.envm.Deleted;
import com.dy.common.mybatis.envm.Disabled;
import com.dy.common.po.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.*;
import org.hibernate.validator.constraints.Length;
 
import java.util.List;
 
 
/**
 * 用户实体
 *
 * TableName(value = “a”, autoResultMap = true)
 * autoResultMap参数为true时,表明个别字段在查询处理的时候自动转换为对象,
 * 只适合设置了TypeHandler、jdbcTyped的情况。autoResultMap 自动映射,
 * 通常配合 @TableField() 一起使用,确定映射规范性。
 * 2023-10-24经实验:
 * 简单的@TableField("name")不用加上,即使类属性名是驼峰,数据库字段是下
 * 划线情况,也不用加@TableField("name")。
 */
//2023-10-24下面TableName不用配置表名称(value="BaUser"或“ba_user”)
//只要通过驼峰命名法则类名与表名对应起来就可以了,如果不能对应起来,需要指定表名称
//例如@TableName(value="TestUser" autoResultMap = true)
@TableName(value="ba_user", autoResultMap = true)
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "用户实体")
public class BaUser implements BaseEntity {
 
    public static final long serialVersionUID = 202310100926001L;
 
    /* 如果不明确 type类型,MP将自动为其赋值(雪花ID)
    IdType:
    AUTO(0),  //自增
    NONE(1), //未设置主键
    INPUT(2), //手动输入
    ASSIGN_ID(3),  //默认全局唯一ID
    ASSIGN_UUID(4), //全局唯一的 uuid
    */
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableId(type = IdType.INPUT)
    @Schema(description = "实体id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Long id;
 
 
    @Schema(description = "所属片区ID", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @JSONField(serializeUsing= ObjectWriterImplToString.class)
    @TableField(value = "blockId")
    public Long blockId ;
 
    /**
     * 用户姓名
     */
    @Schema(description = "姓名", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "姓名不能为空") //不能为空也不能为null
    @Length(message = "姓名不大于{max}字,不小于{min}字", min = 2, max = 25)
    public String userName;
 
    /**
     * 手机号,手机号用于登录系统
     */
    @Schema(description = "手机号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @Length(message = "手机号必须{max}位数据", min = 11, max = 11)
    public String phone;
 
    /**
     * 密码,密码的MD5加密
     */
    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED)
    @Length(message = "密码必须{max}位数据", min = 6, max = 6)
    public String password;
 
    /**
     * 供水机构标签
     */
    @TableField(value = "orgTag")
    @JSONField(serialize = false)
    public String orgTag;
 
    /**
     * 是否超级管理员 1:是,0:否
     */
    @Schema(hidden = true)
    @TableField(value = "supperAdmin")
    @JSONField(serialize = false)
    public Byte supperAdmin;
 
    /**
     * 是否禁用 0:否,1:是
     */
    @Schema(description = "是否禁用", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Disabled disabled;
 
    /**
     * 是否删除: 0表示未删除  1表示删除.
     */
    @Schema(description = "删除标识,表单不用填写", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Deleted deleted;
 
 
    /**
     * 用户所属角色Id
     */
    @Schema(description = "所归角色(所属角色ID字符串数组)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @TableField(exist = false)
    public String[] roleIds ;
 
    /**
     * 用户所属角色
     */
    @Schema(description = "所归角色列表,用于显示,表单不用填写", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @TableField(exist = false)
    public List<?> roleList ;
 
    /**
     * 用户所拥有的权限,针对登录应用
     */
    @Schema(hidden = true)
    @TableField(exist = false)
    @JSONField(serialize = false)
    public List<Integer> privileges;
 
    /**
     * 所属片区名称
     */
    @Schema(description = "所属片区名称,用于显示,表单不用填写", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @TableField(exist = false)
    public String blockName ;
}