SmsController.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <?php
  2. namespace Modules\Admin\Http\Controllers\Api;
  3. use App\Http\Controllers\Controller;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Facades\DB;
  6. use Illuminate\Support\Facades\Http;
  7. use AlibabaCloud\SDK\Dysmsapi\V20170525\Dysmsapi;
  8. use \Exception;
  9. use AlibabaCloud\Tea\Exception\TeaError;
  10. use AlibabaCloud\Tea\Utils\Utils;
  11. use Darabonba\OpenApi\Models\Config;
  12. use AlibabaCloud\SDK\Dysmsapi\V20170525\Models\SendBatchSmsRequest;
  13. use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
  14. use Modules\Admin\Services\SmsServices;
  15. class SmsController extends Controller
  16. {
  17. // 会议短信
  18. public function sendMeetingSms(Request $request) {
  19. $sms_type = $request->get("sms_type");
  20. if ($sms_type == 'mds_meeting') {
  21. return $this->getMdsMeetingInfo($request);
  22. }
  23. return [
  24. "code"=>-1,
  25. "msg"=>"缺少参数",
  26. "data"=>[]
  27. ];
  28. }
  29. // 麦垛山会议
  30. private function getMdsMeetingInfo(Request $request) {
  31. // 会议id
  32. $meeting_id = $request->get("meeting_id");
  33. // 通知类型
  34. $notice_type = $request->get("notice_type");
  35. if (empty($meeting_id) || empty($notice_type)) {
  36. return [
  37. "code"=>-1,
  38. "msg"=>"缺少参数",
  39. "data"=>[]
  40. ];
  41. }
  42. // 获取会议信息
  43. try {
  44. $meeting_info = DB::connection('mysql_fwe10')->table('uf_mdshyyy')->where('id', '=', $meeting_id)->first();
  45. }
  46. catch (Exception $error) {
  47. return [
  48. "code"=>-1,
  49. "msg"=>"会议室信息数据连接失败",
  50. "data"=>[]
  51. ];
  52. }
  53. if (empty($meeting_info)) {
  54. return [
  55. "code"=>-1,
  56. "msg"=>"找不到会议信息",
  57. "data"=>[]
  58. ];
  59. }
  60. $smsServices = new SmsServices();
  61. $meeting_date = date('Y年m月d日 H:i:s', strtotime($meeting_info->ksrq)); // 开始时间
  62. $meeting_title = $meeting_info->hyzt; // 会议主题
  63. $meeting_room_id = $meeting_info->hys; // 会议室id
  64. $meeting_room_info = DB::connection('mysql_fwe10')->table('uf_mdshysgl')->where('id', '=', $meeting_room_id)->first();
  65. $meeting_room_name = $meeting_room_info->hysmc; // 会议室名称
  66. if ($notice_type == 1) {
  67. // 部门领导审批
  68. // 申请人信息
  69. $apply_user_id = $meeting_info->sqr;
  70. $apply_user_info = DB::connection('mysql_fwe10')->table('eteams.employee')->where('id', '=', $apply_user_id)->first();
  71. $apply_user_name = $apply_user_info->USERNAME;
  72. // 申请人部门领导
  73. $leader_id = $meeting_info->bmld;
  74. $leader_info = DB::connection('mysql_fwe10')->table('eteams.employee')->where('id', '=', $leader_id)->first();
  75. $leader_mobile[] = $leader_info->MOBILE;
  76. $template_info[] = [
  77. "username"=>$apply_user_name,
  78. "begindate"=>$meeting_date,
  79. "meetingname"=>$meeting_title
  80. ];
  81. $smsServices->sendBatchSms($leader_mobile, $template_info, 1);
  82. return [
  83. "code"=>200,
  84. "msg"=>"已发送",
  85. "data"=>[
  86. "leader" =>$template_info
  87. ]
  88. ];
  89. } else if ($notice_type == 2) {
  90. // 会议室管理员审批
  91. // 通知类型
  92. $manage_id = $request->get("manage_id");
  93. if (empty($manage_id)) {
  94. return [
  95. "code"=>-1,
  96. "msg"=>"缺少管理员信息参数",
  97. "data"=>[]
  98. ];
  99. }
  100. // 申请人信息
  101. $apply_user_id = $meeting_info->sqr;
  102. $apply_user_info = DB::connection('mysql_fwe10')->table('eteams.employee')->where('id', '=', $apply_user_id)->first();
  103. $apply_user_name = $apply_user_info->USERNAME;
  104. // 管理员信息
  105. $leader_info = DB::connection('mysql_fwe10')->table('eteams.employee')->where('id', '=', $manage_id)->first();
  106. $leader_mobile[] = $leader_info->MOBILE;
  107. $template_info[] = [
  108. "username"=>$apply_user_name,
  109. "begindate"=>$meeting_date,
  110. "meetingname"=>$meeting_title
  111. ];
  112. $smsServices->sendBatchSms($leader_mobile, $template_info, 1);
  113. return [
  114. "code"=>200,
  115. "msg"=>"已发送",
  116. "data"=>[
  117. "manage" =>$template_info
  118. ]
  119. ];
  120. } else if ($notice_type == 3) {
  121. // 通知参会人员
  122. $attendee = $meeting_info->chry; // 参会人员
  123. $attend_dept = $meeting_info->chbm; // 参会部门
  124. // 参会人信息
  125. $attendee_arr = explode(',', $attendee);
  126. $attendee_info = DB::connection('mysql_fwe10')->table('eteams.employee')->where('id', $attendee_arr)->get();
  127. $attendee_mobile = [];
  128. $template_info = [];
  129. // ${uname},您好,${meetdate} 在“${meetroom}”会议室有主题为“${meetname}”的会议需要您的参加,详情登录安宁查看。
  130. for($i = 0; $i < count($attendee_info); $i++) {
  131. $info = $attendee_info[$i];
  132. $attendee_mobile[] = $info->MOBILE;
  133. $template_info[] = [
  134. "uname"=>$info->USERNAME,
  135. "meetdate"=>$meeting_date,
  136. "meetroom"=>$meeting_room_name,
  137. "meetname"=>$meeting_title
  138. ];
  139. }
  140. // 给参会人 发送短信
  141. if (count($template_info) > 0) {
  142. $smsServices->sendBatchSms($attendee_mobile, $template_info, 2);
  143. }
  144. // 参会部门信息
  145. $dept_arr = explode(',', $attend_dept);
  146. $dept_info = DB::connection('mysql_fwe10')->table('eteams.department')->where('id', $dept_arr)->get();
  147. $dept_leader = DB::connection('mysql_fwe10')
  148. ->table('eteams.employee')
  149. ->where("sec_level","=","65")
  150. ->where('DEPARTMENT', $attend_dept)
  151. ->get();
  152. // 组装部门信息map
  153. $dept_info_map = [];
  154. for($i = 0; $i < count($dept_info); $i ++) {
  155. $info = $dept_info[$i];
  156. $dept_info_map[$info->ID] = $info->NAME;
  157. }
  158. $attendee_dept_mobile = [];
  159. $template_dept_info = [];
  160. for($i = 0; $i < count($dept_leader); $i++) {
  161. $info = $dept_leader[$i];
  162. $mobile = $info->MOBILE;
  163. $attendee_dept_mobile[] = $mobile;
  164. // 如果已经给个人发了,就跳过
  165. if (in_array($mobile, $attendee_mobile)) {
  166. continue;
  167. }
  168. // 您好,${meetdate} 在“${meetroom}”会议室有主题为“${meetname}”的会议需要您的部门参加,详情登录安宁查看。
  169. $template_dept_info[] = [
  170. "meetdate"=>$meeting_date,
  171. "meetroom"=>$meeting_room_name,
  172. "meetname"=>$meeting_title
  173. ];
  174. }
  175. // 给部门领导发送短信
  176. if (count($template_dept_info) > 0) {
  177. $smsServices->sendBatchSms($attendee_dept_mobile, $template_dept_info, 3);
  178. }
  179. return [
  180. "code"=>200,
  181. "msg"=>"已发送",
  182. "data"=>[
  183. "attendee" =>$template_info,
  184. "dept" => $template_info
  185. ]
  186. ];
  187. }
  188. return [
  189. "code"=>200,
  190. "msg"=>"已发送",
  191. "data"=>[]
  192. ];
  193. }
  194. }