async def save_apv_flow(ns={}): flag = ns.get("flag", "").lower() if flag not in ["add", "update"]: return {"status": False, "msg": f"参数解析错误,请检查参数:flag"} db = DBPools() try: async with db.sqlorContext('kboss') as sor: try: user_id = ns["user_id"] orgid = ns["orgid"] business_id = ns["business_id"] level_data = ns["level_data"] except Exception as e: return {"status": False, "msg": f"参数解析错误,请检查参数:{e}"} if not isinstance(level_data, list): return {"status": False, "msg": f"参数类型错误,请检查参数:{level_data}"} for _f, l in enumerate(level_data): try: level_mode = l["level_mode"] apv_dd_user_phone = l["apv_dd_user_phone"] except Exception as e: return {"status": False, "msg": f"参数解析错误,请检查参数:{e}"} if not isinstance(apv_dd_user_phone, list): return {"status": False, "msg": f"参数类型错误,请检查参数:{apv_dd_user_phone}"} if len(apv_dd_user_phone) == 1 and level_mode != "NONE": return {"status": False, "msg": f"审核模式错误,一个审批人必须为'单人审批'"} for _f, l in enumerate(level_data): level_id = l["level_id"] level_mode = l["level_mode"] apv_dd_user_phone = l["apv_dd_user_phone"] for i, p in enumerate(apv_dd_user_phone): # 通过手机号获取发送人userid resp = await get_id_by_phone(orgid=orgid, phone=p) info(f"get_id_by_phone_resp:{resp}") if not resp['status']: return {"status": False, "msg": f"钉钉用户id获取失败,请检查手机号:{p}"} dd_user_id = resp['user_id'] data = { "user_id": user_id, # '用户id', "orgid": orgid, # '机构id', "business_id": business_id, # '业务id', "level": level_id, # '节点级别', "mode": level_mode, # 节点审核模式,会签:AND;或签:OR;单人:NONE', "apv_dd_user_id_index": i, # '节点审核人员id index', "apv_dd_user_id": dd_user_id, # '节点审核人员id', "apv_dd_user_phone":p # '节点审核人员手机号', } if flag == "update": if _f == 0 and i == 0: sql = "update apv_flow set del_flg = 1 ,update_at=${update_at}$ where orgid=${orgid}$ and business_id=${business_id}$" await sor.sqlExe(sql, {"orgid": orgid, "update_at": f"{datetime.datetime.now()}", "business_id": business_id}) else: pass else: pass data["id"] = uuid() await sor.C("apv_flow", data) return {"status": True, "msg": "保存成功"} except Exception as e: return {"status": False, "msg": f"数据库操作失败:{e}"} return {"status": False, "msg": f"数据库操作失败"} ret = await save_apv_flow(params_kw) return ret