OrderMessage.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com.cn
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace app\model\order;
  13. use app\model\member\Member;
  14. use app\model\message\Message;
  15. use app\model\message\Email;
  16. use app\model\message\Sms;
  17. use app\model\BaseModel;
  18. use addon\wechat\model\Message as WechatMessage;
  19. /**
  20. * 订单消息操作
  21. *
  22. * @author Administrator
  23. *
  24. */
  25. class OrderMessage extends BaseModel
  26. {
  27. /**
  28. * 订单生成提醒
  29. * @param $data
  30. */
  31. public function messageOrderCreate($data){
  32. //发送短信
  33. $sms_model = new Sms();
  34. $order_id = $data["order_id"];
  35. $order_info = model("order")->getInfo([ [ "order_id", "=", $order_id ] ], "full_address,address,order_no,mobile,member_id,order_type,create_time,order_name,order_money");
  36. $var_parse = array(
  37. "orderno" => $order_info["order_no"],//商品名称
  38. );
  39. $data["sms_account"] = $order_info["mobile"];//手机号
  40. $data["var_parse"] = $var_parse;
  41. $sms_model->sendMessage($data);
  42. //发送邮箱
  43. $email_model = new Email();
  44. $member_model = new Member();
  45. $member_info_result = $member_model->getMemberInfo([["member_id", "=", $order_info["member_id"]]]);
  46. $member_info = $member_info_result["data"];
  47. //有邮箱才发送
  48. if(!empty($member_info) && !empty($member_info["email"])){
  49. $data["email_account"] = $member_info["email"];//邮箱号
  50. $email_model->sendMessage($data);
  51. }
  52. //绑定微信公众号才发送
  53. if (!empty($member_info) && !empty($member_info["wx_openid"])) {
  54. $wechat_model = new WechatMessage();
  55. $data["openid"] = $member_info["wx_openid"];
  56. $data["template_data"] = [
  57. 'keyword1' => $order_info['order_no'],
  58. 'keyword2' => time_to_date($order_info['create_time']),
  59. 'keyword3' => str_sub($order_info['order_name']),
  60. 'keyword4' => $order_info['order_money'],
  61. 'keyword5' => $order_info['full_address'].$order_info['address']." ".$order_info['mobile']
  62. ];
  63. $data["page"] = $this->handleUrl($order_info['order_type'], $order_id);
  64. $wechat_model->sendMessage($data);
  65. }
  66. }
  67. /**
  68. * 消息发送——支付成功
  69. * @param $params
  70. * @return array|mixed|void
  71. */
  72. public function messagePaySuccess($params)
  73. {
  74. // 发送短信
  75. $var_parse = [
  76. "orderno" => $params['order_no'],
  77. "username" => $params["name"],
  78. "ordermoney" => $params["order_money"],
  79. ];
  80. $params["sms_account"] = $params["mobile"] ?? '';//手机号
  81. $params["var_parse"] = $var_parse;
  82. $sms_model = new Sms();
  83. $sms_result = $sms_model->sendMessage($params);
  84. //邮箱发送
  85. $email_model = new Email();
  86. $member_model = new Member();
  87. $member_info_result = $member_model->getMemberInfo([["member_id", "=", $params["member_id"]]]);
  88. $member_info = $member_info_result["data"];
  89. //有邮箱才发送
  90. if(!empty($member_info) && !empty($member_info["email"])){
  91. $params["email_account"] = $member_info["email"];//邮箱号
  92. $email_model->sendMessage($params);
  93. }
  94. $data = $params;
  95. //绑定微信公众号才发送
  96. if (!empty($member_info) && !empty($member_info["wx_openid"])) {
  97. $wechat_model = new WechatMessage();
  98. $data["openid"] = $member_info["wx_openid"];
  99. $data["template_data"] = [
  100. 'keyword1' => time_to_date($params['create_time']),
  101. 'keyword2' => $params['order_no'],
  102. 'keyword3' => str_sub($params['order_name']),
  103. 'keyword4' => $params['order_money'],
  104. ];
  105. $data["page"] = $this->handleUrl($params['order_type'], $params["order_id"]);
  106. $wechat_model->sendMessage($data);
  107. }
  108. }
  109. /**
  110. * 发送支付消息
  111. * @param array $info
  112. */
  113. public function sendMessagePay($info = [])
  114. {
  115. // 支付通知
  116. $param = ["keywords" => "ORDER_PAY"];
  117. $param = array_merge($param, $info);
  118. $message_model = new Message();
  119. $message_model->sendMessage($param);
  120. }
  121. /**
  122. * 订单关闭提醒
  123. * @param $data
  124. */
  125. public function messageOrderClose($data){
  126. //发送短信
  127. $sms_model = new Sms();
  128. $order_id = $data["order_id"];
  129. $order_info = model("order")->getInfo([ [ "order_id", "=", $order_id ] ], "order_type,order_no,mobile,member_id,order_name,create_time,order_money,close_time");
  130. $var_parse = array(
  131. "orderno" => $order_info["order_no"],//商品名称
  132. );
  133. $data["sms_account"] = $order_info["mobile"];//手机号
  134. $data["var_parse"] = $var_parse;
  135. $sms_model->sendMessage($data);
  136. //发送邮箱
  137. $email_model = new Email();
  138. $member_model = new Member();
  139. $member_info_result = $member_model->getMemberInfo([["member_id", "=", $order_info["member_id"]]]);
  140. $member_info = $member_info_result["data"];
  141. //有邮箱才发送
  142. if(!empty($member_info) && !empty($member_info["email"])){
  143. $data["email_account"] = $member_info["email"];//邮箱号
  144. $email_model->sendMessage($data);
  145. }
  146. if (!empty($member_info) && !empty($member_info["wx_openid"])) {
  147. $wechat_model = new WechatMessage();
  148. $data["openid"] = $member_info["wx_openid"];
  149. $data["template_data"] = [
  150. 'keyword1' => str_sub($order_info['order_name']),
  151. 'keyword2' => $order_info['order_no'],
  152. 'keyword3' => time_to_date($order_info['create_time']),
  153. 'keyword4' => $order_info['order_money'],
  154. 'keyword5' => time_to_date($order_info['close_time'])
  155. ];
  156. $data["page"] = $this->handleUrl($order_info['order_type'], $order_id);
  157. $wechat_model->sendMessage($data);
  158. }
  159. }
  160. /**
  161. * 订单完成提醒
  162. * @param $data
  163. */
  164. public function messageOrderComplete($data){
  165. //发送短信
  166. $sms_model = new Sms();
  167. $order_id = $data["order_id"];
  168. $order_info = model("order")->getInfo([ [ "order_id", "=", $order_id ] ], "order_type,order_no,mobile,member_id,order_name,create_time");
  169. $var_parse = array(
  170. "orderno" => $order_info["order_no"],//商品名称
  171. );
  172. $data["sms_account"] = $order_info["mobile"];//手机号
  173. $data["var_parse"] = $var_parse;
  174. $sms_model->sendMessage($data);
  175. //发送邮箱
  176. $email_model = new Email();
  177. $member_model = new Member();
  178. $member_info_result = $member_model->getMemberInfo([["member_id", "=", $order_info["member_id"]]]);
  179. $member_info = $member_info_result["data"];
  180. //有邮箱才发送
  181. if(!empty($member_info) && !empty($member_info["email"])){
  182. $data["email_account"] = $member_info["email"];//邮箱号
  183. $email_model->sendMessage($data);
  184. }
  185. //发送模板消息
  186. $wechat_model = new WechatMessage();
  187. $data["openid"] = $member_info["wx_openid"];
  188. $data["template_data"] = [
  189. 'keyword1' => $order_info['order_no'],
  190. 'keyword2' => str_sub($order_info['order_name']),
  191. 'keyword3' => time_to_date($order_info['create_time']),
  192. ];
  193. $data["page"] = $this->handleUrl($order_info['order_type'], $order_id);
  194. $wechat_model->sendMessage($data);
  195. }
  196. /**
  197. * 订单发货提醒
  198. * @param $data
  199. */
  200. public function messageOrderDelivery($data){
  201. //发送短信
  202. $sms_model = new Sms();
  203. $order_id = $data["order_id"];
  204. $order_info = model("order")->getInfo([ [ "order_id", "=", $order_id ] ], "order_type,order_no,mobile,member_id,order_name,goods_num,order_money,delivery_time");
  205. $var_parse = array(
  206. "orderno" => $order_info["order_no"],//商品名称
  207. );
  208. $data["sms_account"] = $order_info["mobile"];//手机号
  209. $data["var_parse"] = $var_parse;
  210. $sms_model->sendMessage($data);
  211. //发送邮箱
  212. $email_model = new Email();
  213. $member_model = new Member();
  214. $member_info_result = $member_model->getMemberInfo([["member_id", "=", $order_info["member_id"]]]);
  215. $member_info = $member_info_result["data"];
  216. //有邮箱才发送
  217. if(!empty($member_info) && !empty($member_info["email"])){
  218. $data["email_account"] = $member_info["email"];//邮箱号
  219. $email_model->sendMessage($data);
  220. }
  221. //发送模板消息
  222. $wechat_model = new WechatMessage();
  223. $data["openid"] = $member_info["wx_openid"];
  224. $data["template_data"] = [
  225. 'keyword1' => $order_info['order_no'],
  226. 'keyword2' => str_sub($order_info['order_name']),
  227. 'keyword3' => $order_info['goods_num'],
  228. 'keyword4' => $order_info['order_money'],
  229. 'keyword5' => time_to_date($order_info['delivery_time']),
  230. ];
  231. $data["page"] = $this->handleUrl($order_info['order_type'], $order_id);
  232. $wechat_model->sendMessage($data);
  233. }
  234. /**
  235. * 订单收货提醒
  236. * @param $data
  237. */
  238. public function messageOrderTakeDelivery($data){
  239. //发送短信
  240. $sms_model = new Sms();
  241. $order_id = $data["order_id"];
  242. $order_info = model("order")->getInfo([ [ "order_id", "=", $order_id ] ], "order_type,order_no,mobile,member_id,full_address,address,name,order_name,sign_time");
  243. $var_parse = array(
  244. "orderno" => $order_info["order_no"],//商品名称
  245. );
  246. $data["sms_account"] = $order_info["mobile"];//手机号
  247. $data["var_parse"] = $var_parse;
  248. $sms_model->sendMessage($data);
  249. //发送邮箱
  250. $email_model = new Email();
  251. $member_model = new Member();
  252. $member_info_result = $member_model->getMemberInfo([["member_id", "=", $order_info["member_id"]]]);
  253. $member_info = $member_info_result["data"];
  254. //有邮箱才发送
  255. if(!empty($member_info) && !empty($member_info["email"])){
  256. $data["email_account"] = $member_info["email"];//邮箱号
  257. $email_model->sendMessage($data);
  258. }
  259. //发送模板消息
  260. $wechat_model = new WechatMessage();
  261. $data["openid"] = $member_info["wx_openid"];
  262. $data["template_data"] = [
  263. 'keyword1' => $order_info['full_address'].$order_info['address'],
  264. 'keyword2' => $order_info["name"],
  265. 'keyword3' => $order_info['order_no'],
  266. 'keyword4' => $order_info['order_name'],
  267. 'keyword5' => time_to_date($order_info['sign_time']),
  268. ];
  269. $data["page"] = $this->handleUrl($order_info['order_type'], $order_id);
  270. $wechat_model->sendMessage($data);
  271. }
  272. /**
  273. * 订单退款同意提醒
  274. * @param $data
  275. */
  276. public function messageOrderRefundAgree($data){
  277. //发送短信
  278. $sms_model = new Sms();
  279. $order_id = $data["order_id"];
  280. $order_info = model("order")->getInfo([ [ "order_id", "=", $order_id ] ], "order_type,order_no,mobile,member_id");
  281. $order_goods_info = model("order_goods")->getInfo([["order_goods_id", "=", $data["order_goods_id"]]], "refund_apply_money,refund_time,refund_action_time");
  282. $var_parse = array(
  283. "orderno" => $order_info["order_no"],//商品名称
  284. );
  285. $data["sms_account"] = $order_info["mobile"];//手机号
  286. $data["var_parse"] = $var_parse;
  287. $sms_model->sendMessage($data);
  288. //发送邮箱
  289. $email_model = new Email();
  290. $member_model = new Member();
  291. $member_info_result = $member_model->getMemberInfo([["member_id", "=", $order_info["member_id"]]]);
  292. $member_info = $member_info_result["data"];
  293. //有邮箱才发送
  294. if(!empty($member_info) && !empty($member_info["email"])){
  295. $data["email_account"] = $member_info["email"];//邮箱号
  296. $email_model->sendMessage($data);
  297. }
  298. //发送模板消息
  299. $wechat_model = new WechatMessage();
  300. $data["openid"] = $member_info["wx_openid"];
  301. $data["template_data"] = [
  302. 'keyword1' => $order_info['order_no'],
  303. 'keyword2' => $order_goods_info["refund_apply_money"],
  304. 'keyword3' => time_to_date($order_goods_info['refund_time']),
  305. ];
  306. $data["page"] = $this->handleUrl($order_info['order_type'], $order_id);
  307. $wechat_model->sendMessage($data);
  308. }
  309. /**
  310. * 订单退款拒绝提醒
  311. * @param $data
  312. */
  313. public function messageOrderRefundRefuse($data){
  314. //发送短信
  315. $sms_model = new Sms();
  316. $order_id = $data["order_id"];
  317. $order_info = model("order")->getInfo([ [ "order_id", "=", $order_id ] ], "order_type,order_no,mobile,member_id");
  318. $order_goods_info = model("order_goods")->getInfo([["order_goods_id", "=", $data["order_goods_id"]]], "refund_apply_money,refund_time,refund_action_time");
  319. $var_parse = array(
  320. "orderno" => $order_info["order_no"],//商品名称
  321. );
  322. $data["sms_account"] = $order_info["mobile"];//手机号
  323. $data["var_parse"] = $var_parse;
  324. $sms_model->sendMessage($data);
  325. //发送邮箱
  326. $email_model = new Email();
  327. $member_model = new Member();
  328. $member_info_result = $member_model->getMemberInfo([["member_id", "=", $order_info["member_id"]]]);
  329. $member_info = $member_info_result["data"];
  330. //有邮箱才发送
  331. if(!empty($member_info) && !empty($member_info["email"])){
  332. $data["email_account"] = $member_info["email"];//邮箱号
  333. $email_model->sendMessage($data);
  334. }
  335. //发送模板消息
  336. $wechat_model = new WechatMessage();
  337. $data["openid"] = $member_info["wx_openid"];
  338. $data["template_data"] = [
  339. 'keyword1' => $order_info['order_no'],
  340. 'keyword2' => $order_goods_info["refund_apply_money"],
  341. 'keyword3' => time_to_date($order_goods_info['refund_action_time']),
  342. ];
  343. $data["page"] = $this->handleUrl($order_info['order_type'], $order_id);
  344. $wechat_model->sendMessage($data);
  345. }
  346. /**
  347. * 订单核销通知
  348. * @param $data
  349. */
  350. public function messageOrderVerify($data){
  351. //发送短信
  352. $sms_model = new Sms();
  353. $order_id = $data["order_id"];
  354. $order_info = model("order")->getInfo([ [ "order_id", "=", $order_id ] ], "order_type,order_no,mobile,member_id,order_name,goods_num,sign_time");
  355. $var_parse = array(
  356. "orderno" => $order_info["order_no"],//商品名称
  357. );
  358. $data["sms_account"] = $order_info["mobile"];//手机号
  359. $data["var_parse"] = $var_parse;
  360. $sms_model->sendMessage($data);
  361. //发送邮箱
  362. $email_model = new Email();
  363. $member_model = new Member();
  364. $member_info_result = $member_model->getMemberInfo([["member_id", "=", $order_info["member_id"]]]);
  365. $member_info = $member_info_result["data"];
  366. //有邮箱才发送
  367. if(!empty($member_info) && !empty($member_info["email"])){
  368. $data["email_account"] = $member_info["email"];//邮箱号
  369. $email_model->sendMessage($data);
  370. }
  371. }
  372. /**
  373. * 买家发起退款,卖家通知
  374. * @param $data
  375. */
  376. public function messageOrderRefundApply($data){
  377. //发送短信
  378. $sms_model = new Sms();
  379. $order_goods_id = $data["order_goods_id"];
  380. $order_goods_info = model('order_goods')->getInfo(['order_goods_id' => $order_goods_id], 'order_id,refund_no,refund_reason,refund_apply_money,sku_name');
  381. $order_info = model("order")->getInfo([ [ "order_id", "=", $order_goods_info['order_id'] ] ], "order_no,mobile,member_id,site_id,name");
  382. $var_parse = array(
  383. "username" => $order_info["name"],//会员名
  384. "goodsname" => $order_goods_info["sku_name"],//商品名称
  385. "orderno" => $order_info["order_no"],//商品名称
  386. "refundmoney" => $order_goods_info["refund_apply_money"],//退款申请金额
  387. "refundreason" => $order_goods_info["refund_reason"],//退款原因
  388. "refundno" => $order_goods_info["refund_no"],//退款原因
  389. );
  390. $site_id = $order_info['site_id'];
  391. $shop_info = model("shop")->getInfo([ [ "site_id", "=", $site_id ] ], "telephone,email");
  392. $data["sms_account"] = $shop_info["telephone"];//手机号
  393. $data["var_parse"] = $var_parse;
  394. $sms_model->sendMessage($data);
  395. //发送邮箱
  396. $email_model = new Email();
  397. //有邮箱才发送
  398. if(!empty($shop_info) && !empty($shop_info["email"])){
  399. $data["email_account"] = $shop_info["email"];//邮箱号
  400. $email_model->sendMessage($data);
  401. }
  402. }
  403. /**
  404. * 买家已退款,卖家通知
  405. * @param $data
  406. */
  407. public function messageOrderRefundDelivery($data){
  408. //发送短信
  409. $sms_model = new Sms();
  410. $order_id = $data["order_id"];
  411. $order_info = model("order")->getInfo([ [ "order_id", "=", $order_id ] ], "order_no,mobile,member_id,site_id");
  412. $var_parse = array(
  413. "orderno" => $order_info["order_no"],//商品名称
  414. );
  415. $site_id = $order_info['site_id'];
  416. $shop_info = model("shop")->getInfo([ [ "site_id", "=", $site_id ] ], "telephone,email");
  417. $data["sms_account"] = $shop_info["telephone"];//手机号
  418. $data["var_parse"] = $var_parse;
  419. $sms_model->sendMessage($data);
  420. //发送邮箱
  421. $email_model = new Email();
  422. //有邮箱才发送
  423. if(!empty($shop_info) && !empty($shop_info["email"])){
  424. $data["email_account"] = $shop_info["email"];//邮箱号
  425. $email_model->sendMessage($data);
  426. }
  427. }
  428. /**
  429. * 处理订单链接
  430. * @param unknown $order_type
  431. * @param unknown $order_id
  432. * @return string
  433. */
  434. private function handleUrl($order_type, $order_id){
  435. switch ($order_type) {
  436. case 2:
  437. return 'pages/order/detail_pickup/detail_pickup?order_id=' . $order_id;
  438. break;
  439. case 3:
  440. return 'pages/order/detail_local_delivery/detail_local_delivery?order_id=' . $order_id;
  441. break;
  442. case 4:
  443. return 'pages/order/detail_virtual/detail_virtual?order_id=' . $order_id;
  444. break;
  445. default:
  446. return 'pages/order/detail/detail?order_id=' . $order_id;
  447. break;
  448. }
  449. }
  450. }