ApproveFlowService.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace app\common\service;
  3. use app\common\constant\CommonConstant;
  4. use app\common\model\ApproveFlow;
  5. use app\common\model\User;
  6. /**
  7. * 审批流程服务类
  8. */
  9. class ApproveFlowService
  10. {
  11. /**
  12. * 获取流程
  13. *
  14. * @param integer $module 模块类型
  15. * @param integer $flow_item 审批流项
  16. * @param mixed $user 用户信息
  17. **/
  18. public static function get_data($module, $flow_item, $user)
  19. {
  20. $approve_user = [];
  21. $copy_user = [];
  22. $field = 'id,user_data';
  23. // 审批
  24. $approve = ApproveFlow::get_where($module, CommonConstant::TYPE_1, $flow_item)->field($field)->find();
  25. if ($approve) {
  26. $approve_user_data = json_decode($approve['user_data'], JSON_UNESCAPED_UNICODE);
  27. foreach ($approve_user_data as &$value) {
  28. if ($value['user_type'] == 1) {
  29. $value['userid'] = $user->manager_userid;
  30. }
  31. }
  32. $approve_user_object = array_column($approve_user_data, null, 'userid');
  33. $user_ids = array_keys($approve_user_object);
  34. $user_list = self::get_user_list($user_ids);
  35. if ($user_list) {
  36. $user_data = array_column($user_list->toArray(), null, 'userid');
  37. foreach ($approve_user_data as $val) {
  38. if (array_key_exists($val['userid'], $user_data)) {
  39. $approve_user[] = $user_data[$val['userid']];
  40. }
  41. }
  42. }
  43. }
  44. // 抄送
  45. $name = 'is_copy_' . $module;
  46. $is_copy = sysconf($name); // 是否允许用户自己添加抄送人 0=否,1=是
  47. $copy = ApproveFlow::get_where($module, CommonConstant::TYPE_2, $flow_item)->field($field)->find();
  48. if ($copy) {
  49. $copy_user_data = json_decode($copy['user_data'], JSON_UNESCAPED_UNICODE);
  50. $copy_user_data = array_column($copy_user_data, null, 'userid');
  51. $user_ids = array_keys($copy_user_data);
  52. $user_list = self::get_user_list($user_ids);
  53. $copy_user = $user_list;
  54. }
  55. return compact('approve_user', 'copy_user', 'is_copy');
  56. }
  57. protected static function get_user_list($user_ids)
  58. {
  59. if (!$user_ids) {
  60. return [];
  61. }
  62. return User::field('userid,avatar,name')->where('userid', 'in', $user_ids)->select();
  63. }
  64. }