forked from erp-dev/erp
feat: shipment patch
This commit is contained in:
74
basic_info/management/commands/quick_create_employee_user.py
Normal file
74
basic_info/management/commands/quick_create_employee_user.py
Normal file
@@ -0,0 +1,74 @@
|
||||
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']}"
|
||||
)
|
||||
Reference in New Issue
Block a user