liurunyu
2023-11-12 21eb47b061d16056f37eee47928c7fe629b63061
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
package com.dy.pipIrrGlobal.pojoBa;
 
import com.alibaba.fastjson2.annotation.JSONField;
import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
import com.baomidou.mybatisplus.annotation.*;
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.Max;
import jakarta.validation.constraints.Min;
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 = "姓名", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "姓名不能为空") //不能为空也不能为null
    @Length(message = "姓名不大于{max}字符,不小于{min}字符", min = 2, max = 25)
    public String name;
 
    /**
     * 手机号,手机号用于登录系统
     */
    @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:否
     */
    @TableField(value = "supperAdmin")
    @JSONField(serialize = false)
    public Byte supperAdmin;
 
    /**
     * 是否禁用 0:否,1:是
     */
    @Schema(description = "是否禁用", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    @Max(message = "是否禁用只能0或1", value = 1)
    @Min(message = "是否禁用只能0或1",value = 0)
    public Disabled disabled;
 
    /**
     * 是否删除: 0表示未删除  1表示删除.
     */
    @Schema(description = "删除标识,表单不用填写", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    public Deleted deleted;
 
 
    /**
     * 用户所属角色
     */
    @TableField(exist = false)
    public List<?> roleList ;
 
    /**
     * 用户所拥有的权限
     */
    @TableField(exist = false)
    public List<Integer> privileges;
    //public transient List<Integer> privileges;//此种方式变量不存库, 也不参与序列化了
}