mirror of
https://gitee.com/NexIoT/Universal-IoT-Java.git
synced 2026-11-03 00:21:42 +08:00
版本更新汇总 (2025-08-10 至 2025-09-23) 核心功能优化: - 新增UDP模块并默认开启,TCP基础上增加UDP适配 - 支持网关绑定多产品子设备,优化设备重连机制 - 新增Ezviz(萤石)接入模块,调整imoulife支持自有平台账号 性能与稳定性: - 优化设备影子热数据存储,增加强制刷盘功能 - 产品列表及MQTT查询增加多级缓存策略 - 强化TCP安全机制,新增异常攻击封禁策略 功能完善: - 集成rulego可视化规则引擎基础框架 - Web-IDE新增20+ modbus/hex封装方法 - 优化乐城播放器界面及TCP连接信息展示 问题修复: - 解决系统间强依赖及注入相关问题 - 修复时间格式化、设备创建时间显示问题 - 完善日志处理及应用推送相关异常 其他改进: - 重构TCP粘包处理,删除冗余代码 - 增加Docker部署配置 - 细化权限控制策略
173 lines
4.0 KiB
Java
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;
|
|
}
|
|
}
|
|
}
|