演示

UserService

核心用户库的用户 CRUD、认证、令牌刷新与登录设备会话控制。

注入

TSXinject
1import { 2 ContainerRegistryManager, 3 UserService, 4 Inject, 5 Service, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class MyPluginService { 10 @Inject(UserService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private userService: UserService; 12}

查询方法

通过服务解析用户,不要在插件里直接查 user 表。

  • findById(id: string) — 按字符串 id 查用户
  • findByUserId(id: number, includePassword = false) — 按数字 id;仅校验密码时才 includePassword
  • findByIds(ids: number[]) — 批量查询
  • findByUsername(username, includePassword = false) — 按登录名查询
  • find({ skip, limit, search }) — 分页列表;search 匹配 name/username
TSXlookup
1import { 2 ContainerRegistryManager, 3 Inject, 4 Service, 5 UserService, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class OrderAssignService { 10 @Inject(UserService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private userService: UserService; 12 13 async resolveAssignee(userId: number) { 14 const user = await this.userService.findByUserId(userId); 15 if (!user) throw new Error("User not found"); 16 return user; 17 } 18 19 async searchStaff(q: string) { 20 return this.userService.find({ skip: 0, limit: 20, search: q }); 21 } 22}

创建 / 更新方法

  • create(user: CreateUserDto) — 创建用户
  • update(id, data) — 更新用户字段
  • setActive(userId, flag) — 启用或禁用账户
  • changePassword(data) — 校验当前密码后修改
  • resetPassword(data) — 管理端/重置流程改密
TSXcreate
1import { 2 ContainerRegistryManager, 3 Inject, 4 Service, 5 UserService, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class StaffOnboardService { 10 @Inject(UserService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private userService: UserService; 12 13 async onboard() { 14 await this.userService.create({ 15 username: "cashier01", 16 name: "Cashier One", 17 password: "temporary-password", 18 roleId: 2, 19 isOwner: false, 20 }); 21 } 22}

认证与会话方法

登录与令牌流程请用这些方法,不要自行签发 token。

  • signin({ username, password }, info?) — 返回 access/refresh token
  • refreshToken(refreshToken) — 用 refresh token 换新 access token
  • checkToken(refreshToken) — refresh token 是否仍有效
  • signout(refreshToken) — 注销单个会话
  • getLoginDevices(...) — 列出活跃设备/会话
  • logoutOtherDevice(ids) — 撤销指定设备会话
  • logoutAllDevices(userId) — 撤销该用户全部会话
TSXsignin
1import { 2 ContainerRegistryManager, 3 Inject, 4 Service, 5 UserService, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class AuthFacadeService { 10 @Inject(UserService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private userService: UserService; 12 13 async login(username: string, password: string) { 14 return this.userService.signin( 15 { username, password }, 16 { ipAddress: "127.0.0.1", device: "web" } 17 ); 18 } 19 20 async logoutEverywhere(userId: number) { 21 await this.userService.logoutAllDevices(userId); 22 } 23}