Inform.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * @copyright Copyright (c) 2017 https://www.sapixx.com All rights reserved.
  4. * @license Licensed (http://www.apache.org/licenses/LICENSE-2.0).
  5. * @author pillar<ltmn@qq.com>
  6. * 通用模板消息
  7. */
  8. namespace app\common\widget;
  9. use app\common\facade\WechatProgram;
  10. use app\common\model\MemberWechatTpl;
  11. use app\common\model\MemberForm;
  12. use app\common\model\MemberMiniapp;
  13. use app\common\model\MemberSmsQueue;
  14. use app\common\model\User;
  15. use Exception;
  16. class Inform{
  17. /**
  18. * 通用通知
  19. * @param int $uid 用户ID
  20. * @param int $miniapp_id 小程序ID
  21. * @param array $param
  22. * $param['title'] = 标题;
  23. * $param['content'] = 内容;
  24. * $param['type'] = 类型;
  25. * $param['state'] = 状态;
  26. * $param['remark'] = 备注;
  27. * @return void
  28. */
  29. public function sms(int $uid,int $miniapp_id,array $param){
  30. if(empty($uid) || empty($param['title']) ||empty($param['content'])){
  31. return;
  32. }
  33. return MemberSmsQueue::create(['uid' => $uid,'member_miniapp_id' => $miniapp_id,'param' => json_encode($param),'is_send' => 0,'create_time' => time()]);
  34. }
  35. /**
  36. * 群发队列服务
  37. */
  38. public function smsQueue(){
  39. $info = MemberSmsQueue::where(['is_send' => 0])->find();
  40. if(empty($info)){
  41. return;
  42. }
  43. $miniapp_id = $info->member_miniapp_id;
  44. $uid = $info->uid;
  45. $param = json_decode($info->param,true);
  46. $title = $param['title']; //通知标题
  47. $content = $param['content']; //业务内容
  48. $type = empty($param['type']) ? '申请' : $param['type']; //业务类型
  49. $state = empty($param['state']) ? '待审' : $param['state']; //状态
  50. $remark = empty($param['remark']) ? '如要疑问请咨询官方客服' : $param['remark']; //备注
  51. $url = empty($param['url']) ? 'pages/index/index' : $param['url']; //访问地址
  52. $miniapp = MemberMiniapp::where(['id' => $miniapp_id])->field('id,mp_appid,miniapp_appid')->find();
  53. if(empty($miniapp)){
  54. return;
  55. }
  56. $user = User::where(['id' => $uid])->field('official_uid')->find();
  57. if (empty($user->official_uid)) {
  58. MemberSmsQueue::where(['id' => $info->id])->update(['is_send' => 1]);
  59. return;
  60. }
  61. //用户类别
  62. $wechat = WechatProgram::isTypes($miniapp->id);
  63. if (empty($wechat)) {
  64. return;
  65. }
  66. $setting = MemberWechatTpl::getConfig($miniapp->id);
  67. if (empty($setting)) {
  68. return;
  69. }
  70. //小程序模板消息
  71. $weapp_template_msg = [];
  72. //公众号消息
  73. if(!empty($miniapp->mp_appid) || !empty($setting->tplmsg_common_wechat)){
  74. try {
  75. $rel = $wechat->uniform_message->send([
  76. 'touser' => $user->official_uid,
  77. 'weapp_template_msg' => $weapp_template_msg,
  78. 'mp_template_msg' => [
  79. 'appid' => $miniapp->mp_appid,
  80. 'template_id' => $setting->tplmsg_common_wechat,
  81. 'url' => $url,
  82. 'miniprogram' => [
  83. 'pagepath' => $url,
  84. 'appid' => $miniapp->miniapp_appid
  85. ],
  86. 'data' => [
  87. 'first' => $title,
  88. 'keyword1' => $type, //业务类型
  89. 'keyword2' => $content, //业务内容
  90. 'keyword3' => $state, //处理结果
  91. 'keyword4' => date('Y-m-d H:i:s'), //时间
  92. 'keyword5' => $remark
  93. ],
  94. ],
  95. ]);
  96. if($rel['errcode'] == 0){
  97. MemberSmsQueue::where(['id' => $info->id])->update(['is_send' => 1]);
  98. return true;
  99. }
  100. }catch (Exception $e) {
  101. return;
  102. }
  103. }
  104. }
  105. }