完善小程序用户实体类,直接使用AppletUser作为登录对象,实现与后台用户体系的完全分离。
jeecg-boot/jeecg-boot-module/jeecgboot-boot-applet/src/main/java/org/jeecg/modules/appletBackground/appletUser/entity/AppletUser.java
// 基础信息
private String username; // 用户名
private String password; // 密码
private String realname; // 真实姓名
private Date birthday; // 生日
private Integer sex; // 性别(1:男 2:女)
private String email; // 邮箱
private Integer status; // 状态(1:正常 2:冻结)
private Integer delFlag; // 删除标志(0代表存在 1代表删除)
private Integer userIdentity; // 用户身份(1 普通用户 2 VIP用户)
// 健康信息
private BigDecimal height; // 身高(cm)
private BigDecimal weight; // 体重(kg)
private Integer age; // 年龄
// 联系信息
private String address; // 地址
private String emergencyContact; // 紧急联系人
private String emergencyPhone; // 紧急联系人电话
// 会员信息
private String memberLevel; // 会员等级
private Integer points; // 积分
// 系统信息
private Date lastLoginTime; // 最后登录时间
private String deviceId; // 设备ID
private String loginIp; // 登录IP
private String remark; // 备注
AppletUser
实体类作为登录对象@Data
@TableName("applet_user")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@Schema(description="小程序用户")
public class AppletUser implements Serializable {
// 基础信息
private String id; // 用户ID
private String username; // 用户名
private String realname; // 真实姓名
private String name; // 昵称
private String password; // 密码
private String openid; // 第三方认证id
private String avatar; // 头像
// 健康信息
private BigDecimal bmi; // 体总指数
private BigDecimal fat; // 脂肪
private BigDecimal height; // 身高
private BigDecimal weight; // 体重
private Integer age; // 年龄
// 其他信息
private Integer userIdentity; // 用户身份
private String memberLevel; // 会员等级
private Integer points; // 积分
private String deviceId; // 设备ID
// ... 其他字段
}
jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/AppletShiroRealm.java
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
if (principals != null) {
AppletUser appletUser = (AppletUser) principals.getPrimaryPrincipal();
username = appletUser.getUsername();
userId = appletUser.getId();
}
// 小程序专用的权限认证逻辑
return info;
}
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken auth) throws AuthenticationException {
// 直接使用AppletUser进行身份认证
AppletUser loginUser = this.checkAppletUserTokenIsEffect(token);
return new SimpleAuthenticationInfo(loginUser, token, getName());
}
SysUser
LoginUser
ShiroRealm
AppletUser
AppletUser
(直接使用实体类)AppletShiroRealm
@PostMapping("/register")
@Operation(summary = "小程序用户注册")
public Result<AppletUser> register(@RequestBody AppletUser appletUser) {
// 小程序用户注册逻辑
return Result.OK(appletUser);
}
@PostMapping("/login")
@Operation(summary = "小程序用户登录")
public Result<AppletUser> login(@RequestBody LoginRequest request) {
// 小程序用户登录逻辑
AppletUser loginUser = appletUserService.login(request);
return Result.OK(loginUser);
}
@GetMapping("/user/info")
@Operation(summary = "获取小程序用户信息")
public Result<AppletUser> getUserInfo() {
// 获取当前登录的小程序用户信息
AppletUser user = (AppletUser) SecurityUtils.getSubject().getPrincipal();
return Result.OK(user);
}
CREATE TABLE `applet_user` (
`id` varchar(32) NOT NULL COMMENT '主键',
`create_by` varchar(32) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
`update_by` varchar(32) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新日期',
`sys_org_code` varchar(64) DEFAULT NULL COMMENT '所属部门',
`name` varchar(100) DEFAULT NULL COMMENT '昵称',
`openid` varchar(100) DEFAULT NULL COMMENT '第三方认证id',
`phone` varchar(45) DEFAULT NULL COMMENT '手机号',
`bmi` decimal(10,2) DEFAULT NULL COMMENT '体总指数',
`fat` decimal(10,2) DEFAULT NULL COMMENT '脂肪',
`avatar` varchar(255) DEFAULT NULL COMMENT '头像',
`username` varchar(100) DEFAULT NULL COMMENT '用户名',
`password` varchar(255) DEFAULT NULL COMMENT '密码',
`realname` varchar(100) DEFAULT NULL COMMENT '真实姓名',
`birthday` date DEFAULT NULL COMMENT '生日',
`sex` int DEFAULT NULL COMMENT '性别(1:男 2:女)',
`email` varchar(45) DEFAULT NULL COMMENT '邮箱',
`status` int DEFAULT NULL COMMENT '状态(1:正常 2:冻结)',
`del_flag` int DEFAULT NULL COMMENT '删除标志(0代表存在 1代表删除)',
`user_identity` int DEFAULT NULL COMMENT '用户身份(1 普通用户 2 VIP用户)',
`height` decimal(10,2) DEFAULT NULL COMMENT '身高(cm)',
`weight` decimal(10,2) DEFAULT NULL COMMENT '体重(kg)',
`age` int DEFAULT NULL COMMENT '年龄',
`address` varchar(500) DEFAULT NULL COMMENT '地址',
`emergency_contact` varchar(100) DEFAULT NULL COMMENT '紧急联系人',
`emergency_phone` varchar(45) DEFAULT NULL COMMENT '紧急联系人电话',
`member_level` varchar(50) DEFAULT NULL COMMENT '会员等级',
`points` int DEFAULT NULL COMMENT '积分',
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
`device_id` varchar(100) DEFAULT NULL COMMENT '设备ID',
`login_ip` varchar(100) DEFAULT NULL COMMENT '登录IP',
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小程序用户表';