注入
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}