chore: 汇总提交(园区资料/内容审核/任务相关)+迁移0019/0021及部署编排调整
This commit is contained in:
+3
-1
@@ -1322,7 +1322,9 @@ async def park_user_update(uid: str, body: ParkUserUpdateBody, db=Depends(_carri
|
||||
existing = await db.users.get_by_id(uid)
|
||||
if existing is None or existing.get("park_id") != t["id"]:
|
||||
raise HTTPException(status_code=403, detail="仅可管理本园区用户")
|
||||
u = await db.users.update_profile(uid, body.model_dump(exclude_none=True))
|
||||
# 铁律:账号(username)一旦创建不可再次编辑;此接口仅更新个人资料。
|
||||
fields = {k: v for k, v in body.model_dump(exclude_none=True).items() if k != "username"}
|
||||
u = await db.users.update_profile(uid, fields)
|
||||
return {"ok": True, "user": u}
|
||||
|
||||
|
||||
|
||||
+48
-4
@@ -143,7 +143,14 @@ def _co(r) -> dict:
|
||||
"founder": r.founder, "status": r.status, "employees": r.employees, "created_at": r.created_at,
|
||||
"compute_discount": r.compute_discount, "compute_quota": r.compute_quota,
|
||||
"compute_quota_used": r.compute_quota_used, "engine_group": r.engine_group,
|
||||
"owner_user_id": r.owner_user_id}
|
||||
"owner_user_id": r.owner_user_id,
|
||||
"legal_person": getattr(r, "legal_person", ""), "legal_phone": getattr(r, "legal_phone", ""),
|
||||
"registered_capital": getattr(r, "registered_capital", ""), "company_type": getattr(r, "company_type", ""),
|
||||
"honors": getattr(r, "honors", ""), "address": getattr(r, "address", ""),
|
||||
"contact_phone": getattr(r, "contact_phone", ""), "founded_at": getattr(r, "founded_at", ""),
|
||||
"emp_total": getattr(r, "emp_total", None), "emp_grad": getattr(r, "emp_grad", None),
|
||||
"emp_layoff": getattr(r, "emp_layoff", None), "emp_veteran": getattr(r, "emp_veteran", None),
|
||||
"emp_migrant": getattr(r, "emp_migrant", None)}
|
||||
|
||||
|
||||
def _kb(r) -> dict:
|
||||
@@ -303,11 +310,25 @@ async def list_companies(tenant_id: str) -> list[dict]:
|
||||
return out
|
||||
|
||||
|
||||
_COMPANY_FIELDS = ("name", "zone", "room", "industry", "bio", "founder", "status", "employees",
|
||||
"owner_user_id", "legal_person", "legal_phone", "registered_capital", "company_type",
|
||||
"honors", "address", "contact_phone", "founded_at",
|
||||
"emp_total", "emp_grad", "emp_layoff", "emp_veteran", "emp_migrant")
|
||||
|
||||
|
||||
async def create_company(tenant_id: str, payload: dict) -> dict:
|
||||
row = ParkCompany(id=_new_id("PC"), tenant_id=tenant_id, name=payload.get("name", ""),
|
||||
zone=payload.get("zone", ""), room=payload.get("room", ""), industry=payload.get("industry", ""),
|
||||
bio=payload.get("bio", ""), founder=payload.get("founder", ""),
|
||||
status=payload.get("status", "applying"), employees=payload.get("employees"), created_at=_now())
|
||||
status=payload.get("status", "applying"), employees=payload.get("employees"),
|
||||
legal_person=payload.get("legal_person", ""), legal_phone=payload.get("legal_phone", ""),
|
||||
registered_capital=payload.get("registered_capital", ""), company_type=payload.get("company_type", ""),
|
||||
honors=payload.get("honors", ""), address=payload.get("address", ""),
|
||||
contact_phone=payload.get("contact_phone", ""), founded_at=payload.get("founded_at", ""),
|
||||
emp_total=payload.get("emp_total"), emp_grad=payload.get("emp_grad"),
|
||||
emp_layoff=payload.get("emp_layoff"), emp_veteran=payload.get("emp_veteran"),
|
||||
emp_migrant=payload.get("emp_migrant"), owner_user_id=payload.get("owner_user_id", ""),
|
||||
created_at=_now())
|
||||
async with _get_session() as s:
|
||||
s.add(row)
|
||||
await s.commit()
|
||||
@@ -316,7 +337,7 @@ async def create_company(tenant_id: str, payload: dict) -> dict:
|
||||
|
||||
|
||||
async def update_company(tenant_id: str, cid: str, payload: dict) -> dict | None:
|
||||
fields = {k: v for k, v in payload.items() if v is not None and k in ("name", "zone", "room", "industry", "bio", "founder", "status", "employees", "owner_user_id")}
|
||||
fields = {k: v for k, v in payload.items() if v is not None and k in _COMPANY_FIELDS}
|
||||
if not fields:
|
||||
return None
|
||||
async with _get_session() as s:
|
||||
@@ -331,6 +352,20 @@ async def update_company(tenant_id: str, cid: str, payload: dict) -> dict | None
|
||||
return _co(row)
|
||||
|
||||
|
||||
async def set_company_owner(company_id: str, user_id: str) -> dict | None:
|
||||
"""设置企业负责人:该用户须为企业成员(park_company_id 命中)。"""
|
||||
async with _get_session() as s:
|
||||
u = await s.get(User, user_id)
|
||||
c = await s.get(ParkCompany, company_id)
|
||||
if u is None or c is None:
|
||||
return None
|
||||
if u.park_company_id != company_id:
|
||||
return {"ok": False, "reason": "该用户不隶属此企业,无法设为负责人"}
|
||||
c.owner_user_id = user_id
|
||||
await s.commit()
|
||||
return {"ok": True, "company_id": company_id, "owner_user_id": user_id}
|
||||
|
||||
|
||||
async def delete_company(tenant_id: str, cid: str) -> bool:
|
||||
async with _get_session() as s:
|
||||
r = await s.execute(delete(ParkCompany).where(ParkCompany.id == cid, ParkCompany.tenant_id == tenant_id))
|
||||
@@ -361,18 +396,27 @@ async def company_members(company_id: str) -> list[dict]:
|
||||
"id": r.id, "username": r.username, "nickname": r.nickname or "",
|
||||
"phone": r.phone or "", "role": r.role or "",
|
||||
"certification_status": r.certification_status or "uncertified",
|
||||
"company": r.company or "", "gender": r.gender or "", "birthday": r.birthday or "",
|
||||
"id_card": r.id_card or "", "ethnicity": r.ethnicity or "",
|
||||
"grad_school_major": r.grad_school_major or "", "grad_time": r.grad_time or "",
|
||||
"compute_quota": r.compute_quota or 0, "compute_used_quota": r.compute_used_quota or 0,
|
||||
"created_at": r.created_at or "",
|
||||
} for r in rows]
|
||||
|
||||
|
||||
async def add_company_member(company_id: str, user_id: str) -> dict | None:
|
||||
"""把用户归属到该企业(成员)。"""
|
||||
"""把用户归属到该企业(成员)。
|
||||
|
||||
铁律:仅绑定企业成员关系(park_company_id),绝不改动用户所属园区(park_id)。
|
||||
且仅允许把「已属于本园区」的用户加入本园区企业——跨园区用户须经转园/入驻申请。
|
||||
"""
|
||||
async with _get_session() as s:
|
||||
u = await s.get(User, user_id)
|
||||
c = await s.get(ParkCompany, company_id)
|
||||
if u is None or c is None:
|
||||
return None
|
||||
if u.park_id != c.tenant_id:
|
||||
return {"ok": False, "reason": "该用户不属于本园区,变动园区须经转园/入驻申请"}
|
||||
u.park_company_id = company_id
|
||||
u.updated_at = _now()
|
||||
await s.commit()
|
||||
|
||||
Reference in New Issue
Block a user