SmsController.php 7.9 KB

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