Wecom.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <?php
  2. namespace wecom;
  3. use app\common\model\base\user\User;
  4. use app\common\model\base\user\UserRole;
  5. use app\common\model\enroll\JdfEnrollVolunteer;
  6. use app\common\model\msgPushConfig\MsgPushConfig;
  7. use daorui\platform\platformAuth;
  8. class Wecom
  9. {
  10. /**
  11. * Notes:获取推送用户的uuid列表
  12. * User: zhang
  13. * Date: 2025/2/22
  14. * Time: 21:37
  15. */
  16. protected static function getPushIds($org_id)
  17. {
  18. $res = MsgPushConfig::where('org_id', $org_id)->find();
  19. if (!empty($res)) {
  20. $role_ids = $res['role_ids'];
  21. $user_ids = UserRole::where('role_id', 'IN', $role_ids)->column('user_id');
  22. if (empty($user_ids)) return Result(false, '未找到推送用户');
  23. $uuids = User::where('user_id', 'IN', $user_ids)->column('uuid');
  24. return $uuids;
  25. } else {
  26. return Result(false, '未配置推送用户');
  27. }
  28. }
  29. /**
  30. * Notes:获取推送模板内容
  31. * User: zhang
  32. * Date: 2025/2/22
  33. * Time: 21:53
  34. * @param $student_name
  35. * @param $grade_name
  36. * @param $org_id
  37. * @param $school_name
  38. * @param $semester_date
  39. * @param string $former_school
  40. */
  41. protected static function getMsgTemplate(string $student_name, string $grade_name, int $org_id, string $school_name, string $semester_date, string $former_school = '')
  42. {
  43. // 查询转学生和非转学生的数量
  44. $transferCount = JdfEnrollVolunteer::alias('a')
  45. ->join('jdf_enroll_students b', 'a.enroll_id=b.enroll_id')
  46. ->where('b.is_transfer', 1)
  47. ->where('a.org_id', $org_id)
  48. ->count();
  49. $nonTransferCount = JdfEnrollVolunteer::alias('a')
  50. ->join('jdf_enroll_students b', 'a.enroll_id=b.enroll_id')
  51. ->where('b.is_transfer', 2)
  52. ->where('a.org_id', $org_id)
  53. ->count();
  54. $contet = "";
  55. $contet .= "【报名预约信息】\r\n";
  56. $contet .= "学生姓名:$student_name\r\n";
  57. $contet .= "预约年级:$grade_name\r\n";
  58. $contet .= "预约校区:$school_name\r\n";
  59. $contet .= "原就读园校:$former_school\r\n";
  60. $contet .= "预约日期:$semester_date\r\n";
  61. $contet .= "截止目前,预约新生$nonTransferCount.,插班生$transferCount\r\n";
  62. WLog('getPushId', $contet);
  63. return $contet;
  64. }
  65. /**
  66. * Notes:发送消息
  67. * User: zhang
  68. * Date: 2025/2/22
  69. * Time: 22:05
  70. * @param $data
  71. */
  72. public static function sendMsg($data)
  73. {
  74. $uuids = self::getPushIds($data['org_id']);
  75. WLog('getPushId', $uuids);
  76. $centent = self::getMsgTemplate($data['name'], $data['grade_name'], $data['org_id'], $data['school_name'], $data['semester_date'], $data['former_school']);
  77. WLog('getPushId', $centent);
  78. $sendData = [
  79. "uuid" => $uuids,
  80. "tal_data" => [
  81. "agentid" => 1000071,
  82. "msgtype" => "text",
  83. "text" => [
  84. "content" => $centent,
  85. ],
  86. ],
  87. ];
  88. WLog('getPushId', $sendData);
  89. $res = (new platformAuth())->interfaceRequest('sendWeComMsg', $sendData);
  90. WLog('getPushId', $res);
  91. if (!$res['code']) return Result(false, $res['msg']);
  92. return Result(true, '发送成功');
  93. }
  94. /**
  95. * Notes:推送消息给集团管理员
  96. * User: zhang
  97. * Date: 2025/2/26
  98. * Time: 11:27
  99. */
  100. public static function sendMsgAdmin($data)
  101. {
  102. $uuids = self::getPushIds(1);
  103. $centent = self::getMsgTemplate($data['name'], $data['grade_name'], $data['org_id'], $data['school_name'], $data['semester_date'], $data['former_school']);
  104. WLog('getPushId', $centent);
  105. $sendData = [
  106. "uuid" => $uuids,
  107. "tal_data" => [
  108. "agentid" => 1000071,
  109. "msgtype" => "text",
  110. "text" => [
  111. "content" => $centent,
  112. ],
  113. ],
  114. ];
  115. WLog('getPushId', $sendData);
  116. $res = (new platformAuth())->interfaceRequest('sendWeComMsg', $sendData);
  117. WLog('getPushId', $res);
  118. if (!$res['code']) return Result(false, $res['msg']);
  119. return Result(true, '发送成功');
  120. }
  121. public function demo()
  122. {
  123. // $contet = "";
  124. // $contet.= "【报名预约信息】\r\n";
  125. // $contet.= "学生姓名:xxx\r\n";
  126. // $contet.= "预约年级:初一\r\n";
  127. // $contet.= "预约校区:金东方XXX学校\r\n";
  128. // $contet.= "原就读园校:XXX学校\r\n";
  129. // $contet.= "预约日期:2025-02-21\r\n";
  130. // $contet.= "截止目前,预约新生1XXXX,插班生2XX\r\n";
  131. // // $contet =
  132. // // <<<TEXT
  133. // // 【报名预约信息】
  134. // // 您好!XX老师,预约消息:
  135. // // 学生姓名:xxx
  136. // // 预约年级:初一
  137. // // 原就读院校:XXX学校
  138. // // 预约日期:2025-02-21
  139. // // 截止目前,预约新生1XXXX,插班生2XX
  140. // // TEXT;
  141. // $data = [
  142. // "touser" => "13477191977",
  143. // "msgtype" => 'text',
  144. // "agentid" => 1000071,
  145. // "text" => [
  146. // "content" => $contet,
  147. // ]
  148. // ];
  149. // dump($data);
  150. // $res = (new workAuth())->interfaceRequest('messageSend', $data);
  151. // halt($res);
  152. }
  153. }