1
0
forked from erp-dev/erp
Files
erpnew/basic_info/management/commands/quick_create_employee_user.py
2026-04-02 18:07:06 +08:00

75 lines
3.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import json
from django.core.management.base import BaseCommand, CommandError
from basic_info import models as basic_models
from basic_info.services import EmployeeUserProvisioningService
class Command(BaseCommand):
help = "快速创建系统用户并绑定 Employee适合人工脚本或 MCP 调用。"
def add_arguments(self, parser):
parser.add_argument("--username", required=True, help="用户名")
parser.add_argument("--password", required=True, help="密码")
parser.add_argument("--display-name", required=True, help="员工显示名称")
parser.add_argument("--merchant-id", type=int, required=True, help="商户 ID")
parser.add_argument("--email", default="", help="邮箱(可选)")
parser.add_argument("--mobile", default="", help="手机号(可选)")
parser.add_argument("--area", default="", help="地区(可选)")
parser.add_argument("--description", default="", help="描述(可选)")
parser.add_argument(
"--status",
default=basic_models.EmployeeStatusEnum.ACTIVE,
help="员工状态枚举文本,默认 在职",
)
parser.add_argument("--role-id", type=int, default=None, help="角色 ID可选")
parser.add_argument(
"--json",
action="store_true",
help="以 JSON 输出结果,适合脚本或 MCP 调用",
)
def handle(self, *args, **options):
try:
result = EmployeeUserProvisioningService.quick_create_employee_user(
username=options["username"],
password=options["password"],
display_name=options["display_name"],
merchant_id=options["merchant_id"],
email=options["email"],
mobile=options["mobile"],
area=options["area"],
description=options["description"],
status=options["status"],
role_id=options["role_id"],
)
except ValueError as exc:
if options["json"]:
self.stdout.write(
json.dumps(
{"ok": False, "error": str(exc)},
ensure_ascii=False,
)
)
return
raise CommandError(str(exc))
payload = {
"ok": True,
"result": result.to_dict(),
}
if options["json"]:
self.stdout.write(json.dumps(payload, ensure_ascii=False))
return
user_payload = payload["result"]["user"]
employee_payload = payload["result"]["employee"]
self.stdout.write(self.style.SUCCESS("创建成功"))
self.stdout.write(
f"user: id={user_payload['id']} username={user_payload['username']} role_id={user_payload['role_id']}"
)
self.stdout.write(
f"employee: id={employee_payload['id']} name={employee_payload['name']} merchant={employee_payload['merchant']} status={employee_payload['status']}"
)