trigger-department.js 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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: '6699e5bc4767805be9cd1ddc', // 用户池级别AKSK
  5. accessKeySecret: "c92f71bda13ac9e2e903410148733514",
  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. await syncDepartmentInfo(request,request.object)
  18. });
  19. Parse.Cloud.beforeDelete("Department", async (request) => {
  20. let organizationCode = request?.object?.get("organizationCode")
  21. if(organizationCode) organizationCode = String(organizationCode)
  22. const result = await managementClient.deleteDepartment({
  23. // 替换组织 Code 和部门 ID
  24. organizationCode: organizationCode,
  25. departmentId: request?.object?.id
  26. });
  27. });
  28. }
  29. async function syncDepartmentInfo(request,depart){
  30. let authDepartment = {}
  31. if(depart?.id) authDepartment.departmentId = depart?.id
  32. if(depart?.get("status")) authDepartment.status = depart?.get("status")
  33. if(depart?.get("code")) authDepartment.code = depart?.get("code")
  34. if(depart?.get("name")) authDepartment.name = depart?.get("name")
  35. if(depart?.get("organizationCode")) authDepartment.organizationCode = String(depart?.get("organizationCode"))
  36. if(depart?.get("discription")) authDepartment.discription = depart?.get("discription")
  37. let parentDepartmentId = depart?.get("parent")?.id || depart?.get("parent")?.objectId || "root"
  38. if(parentDepartmentId) authDepartment.parentDepartmentId = parentDepartmentId
  39. let result
  40. if(depart?.id){ // 修改
  41. // INSERT INTO "Department" ("objectId", "organizationCode", "name", "description","branch","parent","code","createdAt","updatedAt","status","type","hasChildren")
  42. // let objectId = depart?.departmentId
  43. // if(!depart?.hasChildren){ // 最后一级,类型为单位
  44. // depart.type = "单位"
  45. // }
  46. // let parentId = depart?.parent?.departmentId // 指针是正常的
  47. // let branchName = depart?.branch?.name // 分值为当前单位最上级分支(表示应用下,分支最高级名称)
  48. // rowData.push([
  49. // // 1-5
  50. // objectId, depart?.organizationCode, depart?.name, depart?.description, branchName,
  51. // // 6-10
  52. // parentId, depart?.code, depart?.createdAt || new Date(), depart?.updatedAt || new Date(), depart?.status,
  53. // // 11
  54. // depart?.type,depart?.hasChildren
  55. // ])
  56. authDepartment.departmentIdType = Models.UpdateDepartmentReqDto.departmentIdType.DEPARTMENT_ID
  57. result = await managementClient.updateDepartment(authDepartment);
  58. }else{ // 新建
  59. // authDepartment.openDepartmentId = depart?.id
  60. // console.log(authDepartment)
  61. result = await managementClient.createDepartment(authDepartment);
  62. if(result?.statusCode==200){
  63. request.object.id = result?.data?.departmentId
  64. }
  65. }
  66. // console.log(result)
  67. }