trigger-department.js 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // https://docs.authing.cn/v3/reference/sdk/node/management/%E7%AE%A1%E7%90%86%E7%BB%84%E7%BB%87%E6%9C%BA%E6%9E%84/update-department.html
  2. const { ManagementClient,Models } = require('authing-node-sdk')
  3. const managementClient = new ManagementClient({
  4. accessKeyId: '669b25e1731d50c59f5494d1', // 用户池级别AKSK
  5. accessKeySecret: "4cfc095a72a67e22065c97e90054315c",
  6. host: 'https://textbook.u2-dev.hep.com.cn', // 应用的认证地址
  7. })
  8. /**
  9. * @example
  10. curl -X POST -H "Content-Type: application/json" -H "X-Parse-Application-Id: edu-textbook" -d '{
  11. "name": "测试部门",
  12. "organizationCode": 1000000
  13. }' http://127.0.0.1:61337/parse/classes/Department
  14. */
  15. export function defineDepartmentTrigger(){
  16. Parse.Cloud.beforeSave("Department", async (request) => {
  17. try{
  18. await syncDepartmentInfo(request,request.object)
  19. }catch(err){
  20. console.error(err)
  21. }
  22. });
  23. Parse.Cloud.beforeDelete("Department", async (request) => {
  24. let organizationCode = request?.object?.get("organizationCode")
  25. if(organizationCode) organizationCode = String(organizationCode)
  26. const result = await managementClient.deleteDepartment({
  27. // 替换组织 Code 和部门 ID
  28. organizationCode: organizationCode,
  29. departmentId: request?.object?.id
  30. });
  31. });
  32. }
  33. async function syncDepartmentInfo(request,depart){
  34. let authDepartment = {}
  35. if(depart?.id) authDepartment.departmentId = depart?.id
  36. if(depart?.get("status")) authDepartment.status = depart?.get("status")
  37. if(depart?.get("code")) authDepartment.code = depart?.get("code")
  38. if(depart?.get("name")) authDepartment.name = depart?.get("name")
  39. if(depart?.get("organizationCode")) authDepartment.organizationCode = String(depart?.get("organizationCode"))
  40. if(depart?.get("discription")) authDepartment.discription = depart?.get("discription")
  41. let parentDepartmentId = depart?.get("parent")?.id || depart?.get("parent")?.objectId || "root"
  42. if(parentDepartmentId) authDepartment.parentDepartmentId = parentDepartmentId
  43. let result
  44. if(depart?.id){ // 修改
  45. // INSERT INTO "Department" ("objectId", "organizationCode", "name", "description","branch","parent","code","createdAt","updatedAt","status","type","hasChildren")
  46. // let objectId = depart?.departmentId
  47. // if(!depart?.hasChildren){ // 最后一级,类型为单位
  48. // depart.type = "单位"
  49. // }
  50. // let parentId = depart?.parent?.departmentId // 指针是正常的
  51. // let branchName = depart?.branch?.name // 分值为当前单位最上级分支(表示应用下,分支最高级名称)
  52. // rowData.push([
  53. // // 1-5
  54. // objectId, depart?.organizationCode, depart?.name, depart?.description, branchName,
  55. // // 6-10
  56. // parentId, depart?.code, depart?.createdAt || new Date(), depart?.updatedAt || new Date(), depart?.status,
  57. // // 11
  58. // depart?.type,depart?.hasChildren
  59. // ])
  60. // authDepartment.departmentIdType = Models.UpdateDepartmentReqDto.departmentIdType.DEPARTMENT_ID
  61. console.log(authDepartment)
  62. result = await managementClient.updateDepartment(authDepartment);
  63. }else{ // 新建
  64. // authDepartment.openDepartmentId = depart?.id
  65. // console.log(authDepartment)
  66. result = await managementClient.createDepartment(authDepartment);
  67. if(result?.statusCode==200){
  68. request.object.id = result?.data?.departmentId
  69. }
  70. }
  71. // console.log(result)
  72. }