1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Description: 系统基础公共
  4. // +----------------------------------------------------------------------
  5. // | Author: Michael_xu | gengxiaoxu@5kcrm.com
  6. // +----------------------------------------------------------------------
  7. namespace app\admin\model;
  8. use app\admin\controller\ApiCommon;
  9. use app\admin\model\Common;
  10. use think\Db;
  11. class Admin extends Common
  12. {
  13. /**
  14. * 统计筛选条件
  15. * @param $merge 1 user,structure 合并查询,0 user_id 优先级高 $is_last 昨天、上周、、、
  16. * @param $perUserIds 权限范围
  17. * @return
  18. * @author Michael_xu
  19. */
  20. public function getWhere($param, $merge = '', $perUserIds = [], $filter = true, $is_last = false)
  21. {
  22. $apiCommon = new ApiCommon();
  23. $userModel = new \app\admin\model\User();
  24. $user_id = $apiCommon->userInfo['id'];
  25. $structure_id = $apiCommon->userInfo['structure_id'];
  26. //员工IDS
  27. $user_ids = [];
  28. if ($param['user_id']) {
  29. $user_ids = array($param['user_id']);
  30. }
  31. if ($param['structure_id']) {
  32. $userModel->getSubUserByStr($param['structure_id'], 2);
  33. }
  34. if ($param['dataType']) {
  35. switch ($param['dataType']) {
  36. case 1 : $user_ids = [$user_id];
  37. break;
  38. case 2 : $user_ids = getSubUserId(true, 0, $apiCommon->userInfo['id']);
  39. break;
  40. case 3 : $user_ids = $userModel->getSubUserByStr($structure_id, 1);
  41. break;
  42. case 4 : $user_ids = $userModel->getSubUserByStr($structure_id, 2);
  43. break;
  44. default : $user_ids = [$user_id];
  45. break;
  46. }
  47. } else {
  48. if ($merge == 1) {
  49. if ($param['structure_id']) {
  50. $str_user_ids = $userModel->getSubUserByStr($param['structure_id'], 2);
  51. }
  52. //合并
  53. if ($user_ids && $str_user_ids) {
  54. $user_ids = array_unique(array_merge($user_ids, $str_user_ids));
  55. } elseif ($str_user_ids) {
  56. $user_ids = $str_user_ids;
  57. }
  58. } else {
  59. if (!$user_ids) {
  60. if ($param['structure_id']) {
  61. $user_ids = $userModel->getSubUserByStr($param['structure_id'], 2);
  62. }
  63. }
  64. }
  65. }
  66. if (!$user_ids) $user_ids = getSubUserId(true,0, $apiCommon->userInfo['id']);
  67. // $perUserIds = $perUserIds ? : getSubUserId(); //权限范围内userIds
  68. $userIds = [];
  69. if($perUserIds){
  70. if ($user_ids) {
  71. $userIds = $perUserIds ? array_intersect($user_ids, $perUserIds) : $perUserIds; //数组交集
  72. }
  73. }else{
  74. $userIds = $user_ids; //数组交集
  75. }
  76. $where['userIds'] = array_map('intval', $userIds);
  77. if ($param['type']) {
  78. $between_time = getTimeByType($param['type'], $is_last);
  79. } else {
  80. //自定义时间
  81. if ($param['start_time']) {
  82. $between_time = array(strtotime($param['start_time']), strtotime($param['end_time']));
  83. }
  84. //自定义时间
  85. if ($param['startTime']) {
  86. $between_time = array(strtotime($param['startTime']), strtotime($param['endTime']));
  87. }
  88. }
  89. $where['between_time'] = $between_time;
  90. return $where ?: [];
  91. }
  92. }