InformAdminClass.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. <?php
  2. namespace bizMall\message\classes;
  3. use bizMall\admin\classes\AdminClass;
  4. use bizMall\admin\classes\ShopAdminClass;
  5. use bizMall\admin\services\ShopAdminService;
  6. use bizMall\merchant\classes\MerchantClass;
  7. use bizMall\user\classes\UserClass;
  8. use bizMall\wx\classes\WxOpenClass;
  9. use common\components\httpUtil;
  10. use common\components\sms;
  11. use common\components\wxUtil;
  12. use common\services\xhTMessageService;
  13. use Yii;
  14. use bizMall\base\classes\BaseClass;
  15. class InformAdminClass extends BaseClass
  16. {
  17. public static $baseFile = '\bizMall\message\models\InformAdmin';
  18. //增加通知员工 ssh
  19. public static function addInform($params, $shopAdmin, $type, $TMList)
  20. {
  21. //没有关注公众号暂时不进行通知
  22. $subscribe = isset($shopAdmin['adminBaseInfo']['subscribe']) ? $shopAdmin['adminBaseInfo']['subscribe'] : 0;
  23. if ($subscribe == 0) {
  24. return false;
  25. }
  26. //没有小程序id暂时不进行通知,目前只有小程序商家版,没有h5
  27. $miniOpenId = isset($shopAdmin['adminBaseInfo']['miniOpenId']) ? $shopAdmin['adminBaseInfo']['miniOpenId'] : '';
  28. if (empty($miniOpenId)) {
  29. return false;
  30. }
  31. $openMerchant = WxOpenClass::getWxInfo();
  32. $params['miniAppId'] = $openMerchant['miniAppId'];
  33. switch ($type) {
  34. case 'goodsSold':
  35. //宝贝售出
  36. $respond = self::goodsSoldInform($params, $shopAdmin, $TMList);
  37. break;
  38. case 'income':
  39. //收入提醒
  40. $respond = self::incomeInform($params, $shopAdmin, $TMList);
  41. break;
  42. case 'reach':
  43. $respond = self::reachInform($params, $shopAdmin, $TMList);
  44. break;
  45. default:
  46. }
  47. $shopAdminId = $shopAdmin['id'];
  48. $shopId = $shopAdmin['shopId'];
  49. $mobile = isset($shopAdmin['adminBaseInfo']['mobile']) ? $shopAdmin['adminBaseInfo']['mobile'] : '';
  50. //通知管理员的都是平台通知
  51. $isOpen = 1;
  52. $data = [
  53. 'messageType' => 'inform',
  54. 'informWay' => 'miniProgram',
  55. 'userType' => 'admin',
  56. 'mobile' => $mobile,
  57. 'shopAdminId' => $shopAdminId,
  58. 'userId' => 0,
  59. 'shopId' => $shopId,
  60. 'isOpen' => $isOpen,
  61. ];
  62. $data = array_merge($data, $respond);
  63. self::consumeInformQueue($data);
  64. // $producer = Yii::$app->rabbitmq->getProducer('informProducer');
  65. // $msg = serialize($data);
  66. // $producer->publish($msg, 'informExchange', 'informRoute');
  67. }
  68. //宝贝售出提醒 ssh 2020.5.31
  69. public static function goodsSoldInform($params, $admin, $TMList)
  70. {
  71. $totalFee = isset($params['totalFee']) ? $params['totalFee'] : 0;
  72. $orderId = isset($params['orderId']) ? $params['orderId'] : '';
  73. $orderSn = isset($params['orderSn']) ? $params['orderSn'] : '';
  74. $orderName = '商品';
  75. $userName = '石头';
  76. $data['briefContent'] = "客户" . $userName . "付款" . $totalFee . '元';
  77. //收入提醒
  78. $openId = isset($admin['adminBaseInfo']['openId']) ? $admin['adminBaseInfo']['openId'] : '';
  79. $miniOpenId = isset($admin['adminBaseInfo']['miniOpenId']) ? $admin['adminBaseInfo']['miniOpenId'] : '';
  80. $shortTempId = 'OPENTM207422813';
  81. $tempId = isset($TMList[$shortTempId]) ? $TMList[$shortTempId] : '';
  82. $tMessage = [
  83. "touser" => $openId,
  84. "template_id" => $tempId,
  85. "url" => Yii::$app->params['adminUrl'] . '/order/detail',
  86. "data" => [
  87. "first" => ["value" => '您有新的收入!', "color" => "#173177"],
  88. "keyword1" => ["value" => (string)$orderSn, "color" => "#173177"],
  89. "keyword2" => ["value" => $orderName, "color" => "#173177"],
  90. "keyword3" => ["value" => number_format($totalFee, 2) . '元', "color" => "#173177"],
  91. "keyword4" => ["value" => number_format($totalFee, 2) . '元', "color" => "#173177"],
  92. "keyword5" => ["value" => $userName, "color" => "#173177"],
  93. "remark" => ["value" => '点此查看详细', "color" => "#173177"]
  94. ]
  95. ];
  96. if (!empty($miniOpenId)) {
  97. $tMessage['miniprogram']['appid'] = $params['miniAppId'];
  98. $tMessage['miniprogram']['pagepath'] = 'admin/order/detail?id=' . $orderId;
  99. }
  100. $data['tMessage'] = json_encode($tMessage);
  101. $msg = "客户" . $userName . "付款" . $totalFee . '元';
  102. $data['content'] = $msg;
  103. return $data;
  104. }
  105. //送到通知 ssh 2020.1.31
  106. public static function reachInform($params, $admin, $TMList)
  107. {
  108. $totalFee = 199;
  109. $userName = '石头';
  110. $orderId = $params['orderId'];
  111. $data['briefContent'] = "客户" . $userName . "付款" . $totalFee . '元';
  112. $openId = isset($admin['openId']) && !empty($admin['openId']) ? $admin['openId'] : '';
  113. $miniOpenId = isset($admin['miniOpenId']) && !empty($admin['miniOpenId']) ? $admin['miniOpenId'] : '';
  114. $shortTempId = 'OPENTM201205968';
  115. $tempId = isset($TMList[$shortTempId]) ? $TMList[$shortTempId] : '';
  116. $tMessage = [
  117. "touser" => $openId,
  118. "template_id" => $tempId,
  119. "url" => Yii::$app->params['frontUrl'] . "/center/order-detail?id=1225&account=12362",
  120. "data" => [
  121. "first" => ["value" => '客户订单已送达', "color" => "#173177"],
  122. "keyword1" => ["value" => (string)1525, "color" => "#173177"],
  123. "keyword2" => ["value" => '石头', "color" => "#173177"],
  124. "keyword3" => ["value" => '已送达', "color" => "#173177"],
  125. "remark" => ["value" => '。。。。。。。', "color" => "#173177"]
  126. ]
  127. ];
  128. if (!empty($miniOpenId)) {
  129. $tMessage['miniprogram']['appid'] = $params['miniAppId'];
  130. $tMessage['miniprogram']['pagepath'] = 'admin/order/detail?id=' . $orderId;
  131. }
  132. $data['tMessage'] = json_encode($tMessage);
  133. $msg = "客户" . $userName . "付款" . $totalFee . '元';
  134. $data['content'] = $msg;
  135. return $data;
  136. }
  137. //收入提醒 ssh 2020.5.31
  138. public static function incomeInform($params, $admin, $TMList)
  139. {
  140. $order = $params['order'];
  141. $totalFee = isset($order['actPrice']) ? $order['actPrice'] : 0;
  142. $orderId = isset($order['id']) ? $order['id'] : '';
  143. $payTime = isset($order['payTime']) && !empty($order['payTime']) ? date("Y-m-d H:i", $order['payTime']) : '未知';
  144. $store = isset($order['store']) ? $order['store'] : 0;
  145. $sourceTypeId = $order['sourceType'];
  146. if ($store == 1) {
  147. $incomeStyle = '门店收入';
  148. } else {
  149. $sourceTypeList = [0 => '微信', 1 => '支付宝', 2 => '小程序', 3 => '朋友圈', 4 => '美团', 5 => '系统'];
  150. $incomeStyle = isset($sourceTypeList[$sourceTypeId]) ? $sourceTypeList[$sourceTypeId] . '收入' : '未知';
  151. }
  152. $data = [];
  153. $data['briefContent'] = "客户付款" . $totalFee . '元';
  154. $openId = isset($admin['adminBaseInfo']['openId']) ? $admin['adminBaseInfo']['openId'] : '';
  155. $miniOpenId = isset($admin['adminBaseInfo']['miniOpenId']) ? $admin['adminBaseInfo']['miniOpenId'] : '';
  156. $shortTempId = 'OPENTM207422813';
  157. $tempId = isset($TMList[$shortTempId]) ? $TMList[$shortTempId] : '';
  158. $tMessage = [
  159. "touser" => $openId,
  160. "template_id" => $tempId,
  161. "url" => Yii::$app->params['adminUrl'] . '/order/detail',
  162. "data" => [
  163. "first" => ["value" => '恭喜,您有新收入。', "color" => "#173177"],
  164. "keyword1" => ["value" => number_format($totalFee, 2) . '元', "color" => "#173177"],
  165. "keyword2" => ["value" => $incomeStyle, "color" => "#173177"],
  166. "keyword3" => ["value" => $payTime, "color" => "#173177"],
  167. "remark" => ["value" => '点此查看详情', "color" => "#173177"]
  168. ]
  169. ];
  170. if (!empty($miniOpenId)) {
  171. $tMessage['miniprogram']['appid'] = $params['miniAppId'];
  172. $tMessage['miniprogram']['pagepath'] = 'admin/order/detail?id=' . $orderId;
  173. }
  174. $data['tMessage'] = json_encode($tMessage);
  175. $msg = "客户付款" . $totalFee . '元';
  176. $data['content'] = $msg;
  177. return $data;
  178. }
  179. //添加通知内容 ssh 2020.1.8
  180. public static function addData($data)
  181. {
  182. self::add($data);
  183. }
  184. //订单完成通知店长 ssh 2020.3.19
  185. public static function sendComplete($order)
  186. {
  187. $open = WxOpenClass::getWxInfo();
  188. $sjId = $order['sjId'];
  189. $orderId = $order['id'];
  190. $shopId = $order['shopId'];
  191. $merchant = MerchantClass::getMerchantById($sjId);
  192. if (empty($shopId)) {
  193. $shopId = MerchantClass::getDefaultShopId($merchant);
  194. }
  195. $adminList = ShopAdminService::getNoticeAdminList($shopId);
  196. $tm = xhTMessageService::getList(0);
  197. $shortTempId = 'OPENTM201205968';//订单送达通知
  198. $tempId = $tm[$shortTempId];
  199. if (!empty($adminList)) {
  200. foreach ($adminList as $admin) {
  201. if (isset($admin['adminBaseInfo']['subscribe']) && $admin['adminBaseInfo']['subscribe'] == 1) {
  202. $openId = isset($admin['adminBaseInfo']['openId']) ? $admin['adminBaseInfo']['openId'] : '';
  203. $miniOpenId = isset($admin['adminBaseInfo']['miniOpenId']) ? $admin['adminBaseInfo']['miniOpenId'] : '';
  204. $url = Yii::$app->params['shopDomain'] . "/#/admin/order/detail?id=" . $order['id'];
  205. $url = httpUtil::becomeHttps($url);
  206. $data = [
  207. "touser" => $openId,
  208. "template_id" => $tempId,
  209. "url" => $url,
  210. "data" => [
  211. "first" => ["value" => '客户订单已送达', "color" => "#173177"],
  212. "keyword1" => ["value" => (string)$order['orderSn'], "color" => "#173177"],
  213. "keyword2" => ["value" => $order['bookName'], "color" => "#173177"],
  214. "keyword3" => ["value" => '已送达', "color" => "#173177"],
  215. "remark" => ["value" => '', "color" => "#173177"]
  216. ]
  217. ];
  218. if (!empty($miniOpenId)) {
  219. $data['miniprogram']['appid'] = $open['miniAppId'];
  220. $data['miniprogram']['pagepath'] = 'admin/order/detail?id=' . $orderId;
  221. }
  222. wxUtil::sendTaskInform($data, $open);
  223. }
  224. }
  225. }
  226. }
  227. //消费通知内容 ssh 2020.1.1
  228. //['messageType'=>'inform','informWay'=>'miniProgram','userType'=>'admin','shopAdminId'=>913,'mobile'=>'15280215347','tMessage'=>'','content'=>'','briefContent'=>'','isOpen'=>1]
  229. public static function consumeInformQueue($data)
  230. {
  231. $informWay = $data['informWay'];
  232. $shopAdminId = isset($data['shopAdminId']) ? $data['shopAdminId'] : 0;
  233. if (empty($shopAdminId)) {
  234. echo "\n 没有找到门店管理员87 \n";
  235. util::end();
  236. }
  237. $shopAdmin = ShopAdminClass::getById($shopAdminId);
  238. $sjId = $shopAdmin['sjId'];
  239. $adminId = $shopAdmin['adminId'];
  240. $mobile = $data['mobile'];
  241. $isOpen = isset($data['isOpen']) ? $data['isOpen'] : 0;
  242. $merchant = WxOpenClass::getWxInfo();
  243. $hasSend = 0;
  244. $noticeWay = 0;
  245. if ($informWay == 'wx') {
  246. $tMessage = json_decode($data['tMessage'], true);
  247. wxUtil::sendTaskInform($tMessage, $merchant, $isOpen);
  248. $hasSend = 1;
  249. $noticeWay = 0;
  250. } elseif ($informWay == 'sms') {
  251. $msg = $data['content'];
  252. sms::merchantSend($mobile, $msg, $merchant);
  253. $hasSend = 1;
  254. $noticeWay = 1;
  255. } elseif ($informWay == 'miniProgram') {
  256. $tMessage = json_decode($data['tMessage'], true);
  257. wxUtil::sendTaskInform($tMessage, $merchant);
  258. $hasSend = 1;
  259. $noticeWay = 0;
  260. } else {
  261. }
  262. //存入数据库
  263. $informData = [
  264. 'adminId' => $adminId,
  265. 'sjId' => $sjId,
  266. 'noticeType' => 0,
  267. 'content' => $data['briefContent'],
  268. 'noticeWay' => $noticeWay,
  269. 'status' => $hasSend,
  270. 'sourceType' => 0,
  271. 'sourceId' => 0,
  272. 'addTime' => time(),
  273. 'createTime' => date("Y-m-d H:i:s"),
  274. ];
  275. InformAdminClass::addData($informData);
  276. return true;
  277. }
  278. }