Subscribe.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | A3Mall
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2020 http://www.a3-mall.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: xzncit <158373108@qq.com>
  8. // +----------------------------------------------------------------------
  9. namespace app\common\service\subscribe\wechat;
  10. use app\common\models\Area as AreaModel;
  11. use app\common\library\wechat\Factory;
  12. use app\common\models\order\Order as OrderModel;
  13. use app\common\models\order\OrderRefundment as OrderRefundmentModel;
  14. use app\common\models\order\OrderDelivery as OrderDeliveryModel;
  15. use app\common\models\wechat\SubscribeMessage as SubscribeMessageModel;
  16. class Subscribe {
  17. public static function refund($openid,$order_no){
  18. if(!$config = self::getConfig("order_refund_template")){
  19. return false;
  20. }
  21. if(!$refund = OrderRefundmentModel::where("order_no",$order_no)->find()){
  22. return false;
  23. }
  24. $data = [];
  25. foreach($config['attribute'] as $key=>$value){
  26. if($value["field"] == "first"){
  27. $data[$value["value"]] = ["value" => "退款处理结果", "color" => "#173177"];
  28. }else if($value["field"] == "remark"){
  29. $data[$value["value"]] = ["value" => $refund['pay_status'] == 2 ? '退款成功' : '拒绝退款', "color" => "#173177"];
  30. }else if($value["field"] == "create_time"){
  31. $data[$value["value"]] = ["value" => date("Y年m月d日 H:i:s",$refund["create_time"]), "color" => "#173177"];
  32. }else{
  33. $field = isset($refund[$value['field']]) ? $refund[$value['field']] : "";
  34. $data[$value["value"]] = [
  35. "value" => $field, "color" => "#173177"
  36. ];
  37. }
  38. }
  39. try{
  40. Factory::wechat()->template->send($openid,$config["template_id"],"",$data,"#173177");
  41. return true;
  42. }catch (\Exception $ex){}
  43. return false;
  44. }
  45. public static function delivery($openid,$delivery_id){
  46. if(!$config = self::getConfig("order_delivery_template")){
  47. return false;
  48. }
  49. if(!$orderDelivery = OrderDeliveryModel::where("id",$delivery_id)->find()){
  50. return false;
  51. }
  52. if(!$order = OrderModel::where("id",$orderDelivery["order_id"])->find()){
  53. return false;
  54. }
  55. $data = [];
  56. foreach($config['attribute'] as $key=>$value){
  57. if($value["field"] == "first"){
  58. $data[$value["value"]] = ["value" => "您的订单已发货", "color" => "#173177"];
  59. }else if($value["field"] == "remark"){
  60. $data[$value["value"]] = ["value" => '请注意关注签收', "color" => "#173177"];
  61. }else if($value["field"] == "send_time"){
  62. $data[$value["value"]] = ["value" => date("Y年m月d日 H:i:s",$order["send_time"]), "color" => "#173177"];
  63. }else if($value["field"] == "address") {
  64. $area = AreaModel::getArea([$order["province"],$order["city"],$order["area"]],",");
  65. $data[$value["value"]] = [
  66. "value" => $area . $order["address"],
  67. "color" => "#173177"
  68. ];
  69. }else{
  70. $field = isset($refund[$value['field']]) ? $refund[$value['field']] : "";
  71. $data[$value["value"]] = [
  72. "value" => $field, "color" => "#173177"
  73. ];
  74. }
  75. }
  76. try{
  77. Factory::wechat()->template->send($openid,$config["template_id"],"",$data,"#173177");
  78. return true;
  79. }catch (\Exception $ex){}
  80. return false;
  81. }
  82. public static function pay($openid,$order_id){
  83. $config = self::getConfig("order_delivery_template");
  84. if(!$config){
  85. return false;
  86. }
  87. if(!$order = OrderModel::where("id",$order_id)->find()){
  88. return false;
  89. }
  90. if($order['pay_status'] != 1){
  91. return false;
  92. }
  93. $data = [];
  94. foreach($config['attribute'] as $key=>$value){
  95. if($value["field"] == "first"){
  96. $data[$value["value"]] = ["value" => "您的订单已支付成功!", "color" => "#173177"];
  97. }else if($value["field"] == "remark"){
  98. $data[$value["value"]] = ["value" => '您还可以在会员中心“我的订单”中查看订单状态。', "color" => "#173177"];
  99. }else{
  100. $field = isset($refund[$value['field']]) ? $refund[$value['field']] : "";
  101. $data[$value["value"]] = [
  102. "value" => $field, "color" => "#173177"
  103. ];
  104. }
  105. }
  106. try{
  107. Factory::wechat()->template->send($openid,$config["template_id"],"",$data,"#173177");
  108. return true;
  109. }catch (\Exception $ex){}
  110. return false;
  111. }
  112. public static function getConfig($sign=""){
  113. $result = SubscribeMessageModel::where("sign",$sign)->where("status",0)->find();
  114. if(empty($result) || empty($result["content"])){
  115. return false;
  116. }
  117. if($result["status"]){
  118. return false;
  119. }
  120. $attr = json_decode($result["content"],true);
  121. if(is_null($attr)){
  122. return false;
  123. }
  124. $array = [];
  125. foreach($attr["name"] as $k=>$v){
  126. $value = str_replace(["{{","}}",".DATA"],["","",""],$attr["value"][$k]);
  127. $array[$k] = [
  128. "name"=>$v,
  129. "field"=>$attr["field"][$k],
  130. "value"=>$value,
  131. ];
  132. }
  133. return [
  134. "template_id"=>$result["temp_id"],
  135. "attribute"=>$array
  136. ];
  137. }
  138. }