Files
Universal-IoT-Java/cn-universal-persistence/src/main/java/cn/universal/persistence/entity/IoTUser.java
T
奈科斯(NexIoT) eb3a8dab68 news:合并2.0商业版代码:完整模块
版本更新汇总 (2025-08-10 至 2025-09-23)
核心功能优化:
- 新增UDP模块并默认开启,TCP基础上增加UDP适配
- 支持网关绑定多产品子设备,优化设备重连机制
- 新增Ezviz(萤石)接入模块,调整imoulife支持自有平台账号

性能与稳定性:
- 优化设备影子热数据存储,增加强制刷盘功能
- 产品列表及MQTT查询增加多级缓存策略
- 强化TCP安全机制,新增异常攻击封禁策略

功能完善:
- 集成rulego可视化规则引擎基础框架
- Web-IDE新增20+ modbus/hex封装方法
- 优化乐城播放器界面及TCP连接信息展示

问题修复:
- 解决系统间强依赖及注入相关问题
- 修复时间格式化、设备创建时间显示问题
- 完善日志处理及应用推送相关异常

其他改进:
- 重构TCP粘包处理,删除冗余代码
- 增加Docker部署配置
- 细化权限控制策略
2025-09-23 11:11:17 +08:00

173 lines
4.0 KiB
Java

/*
*
* Copyright (c) 2025, IoT-Universal. All Rights Reserved.
*
* @Description: 本文件由 Aleo 开发并拥有版权,未经授权严禁擅自商用、复制或传播。
* @Author: Aleo
* @Email: wo8335224@gmail.com
* @Wechat: outlookFil
*
*
*/
package cn.universal.persistence.entity;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.universal.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import jakarta.persistence.Column;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Table(name = "iot_user")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@JsonIgnoreProperties(ignoreUnknown = true)
public class IoTUser implements Serializable {
private static final long serialVersionUID = 1L;
@Id private Long id;
/** 归属组织机构 */
@Column(name = "org_id")
@Excel(name = "归属组织机构")
private Long orgId;
/** 用户名 */
@Excel(name = "用户名")
private String username;
/** 密码 */
@JsonIgnore
@Excel(name = "密码")
private String password;
/** 别名 */
@Excel(name = "别名")
private String alias;
/** 用户唯一标识 */
@Excel(name = "用户唯一标识")
@Column(name = "union_id")
private String unionId;
/** 邮箱 */
@Excel(name = "邮箱")
private String email;
/** 密码加盐 */
@Excel(name = "密码加盐")
private String salt;
/** 手机号 */
@Excel(name = "手机号")
private String mobile;
/** 账号状态(0正常,1停用) */
@Excel(name = "账号状态(0正常,1停用")
private String status;
/** 头像 */
@Excel(name = "头像")
private String avatar;
/** 上级用户唯一id */
@Excel(name = "上级用户唯一id")
private String parentUnionId;
/** 账号身份 0.超级管理员 1.普通用户 2.子用户 */
@Excel(name = "账号身份 0.超级管理员 1.普通用户 2.子用户")
private Integer identity;
/** 登录IP */
@Column(name = "login_ip")
@Excel(name = "登录IP")
private String loginIp;
/** 登录时间 */
@Column(name = "login_date")
@Excel(name = "登录时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date loginDate;
/** 创建者 */
@Column(name = "create_by")
@Excel(name = "创建者")
private String createBy;
/** 创建时间 */
@Column(name = "create_date")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "创建时间")
private Date createDate;
@Column(name = "update_by")
@Excel(name = "更新者")
private String updateBy;
@Column(name = "update_date")
@Excel(name = "更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateDate;
/** 备注 */
@Excel(name = "备注")
private String remark;
/** 接入数 */
@Column(name = "license")
@Excel(name = "接入数")
private Integer license;
/** 接入数 */
@Column(name = "license_total_amount")
@Excel(name = "接入数总额度")
private Integer licenseTotalAmount;
private String cfg;
@Column(name = "register_from")
@Excel(name = "注册来源")
private String registerFrom;
/** 0-正常,1-删除 */
private Integer deleted;
/** 请求参数 */
@Builder.Default private Map<String, Object> params = new HashMap<>();
public IoTUser(Long userId) {
this.id = userId;
}
public boolean isAdmin() {
return identity != null && identity == 0;
}
public boolean viewAllProduct() {
if (StrUtil.isBlank(cfg)) {
return true;
}
try {
JSONObject object = JSONUtil.parseObj(cfg);
return object.getBool("viewAllProduct", true);
} catch (Exception e) {
return false;
}
}
}