OrderrefundController.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <?php
  2. namespace app\admin\controller;
  3. use think\exception\ValidateException;
  4. use app\model\Order;
  5. use app\model\OrderStaff;
  6. use app\model\Store;
  7. use app\model\OrderStatus;
  8. use app\model\Paymethod;
  9. use app\model\Member;
  10. use app\model\OrderTimescard;
  11. use app\model\Category;
  12. use app\model\RefundAddress;
  13. use app\model\OrderRefund;
  14. use app\model\Operatingcity;
  15. use app\model\Tuanzhang;
  16. class OrderrefundController extends Base
  17. {
  18. function index()
  19. {
  20. $weid = weid();
  21. $keyword = input('post.keyword', '', 'serach_in');
  22. $query = Order::where(['weid' => $weid, 'order_status_id' => 6]);
  23. if (!empty($this->sid)) {
  24. $query->where('sid', $this->sid);
  25. }
  26. if (!empty($this->ocid)) {
  27. $Operatingcitydata = Operatingcity::find($this->ocid);
  28. if ($Operatingcitydata) {
  29. $Operatingcitydata = $Operatingcitydata->toArray();
  30. if(empty($Operatingcitydata['areatype'])){
  31. $Operatingcitydata['areatype'] = 3;
  32. }
  33. if ($Operatingcitydata['areatype'] == 3) {
  34. $query->where('shipping_district_name', $Operatingcitydata['district_name']);
  35. } elseif ($Operatingcitydata['areatype'] == 2) {
  36. $query->where('shipping_city_name', $Operatingcitydata['city_name']);
  37. } elseif ($Operatingcitydata['areatype'] == 1) {
  38. $query->where('shipping_province_name', $Operatingcitydata['province_name']);
  39. }
  40. }
  41. }
  42. if (!empty($this->tzid)) {
  43. $Tuanzhangdata = Tuanzhang::find($this->tzid);
  44. if ($Tuanzhangdata) {
  45. $Tuanzhangdata = $Tuanzhangdata->toArray();
  46. $query->where('shipping_district_name', $Tuanzhangdata['district_name']);
  47. } else {
  48. $query->where('shipping_city_name', '无');
  49. }
  50. }
  51. $query->with(['orderRefund','orderTimescard', 'member', 'orderGoods', 'paymethod']);
  52. if (!empty($keyword)) {
  53. $query->where('name', 'like', '%' . $keyword . '%');
  54. }
  55. $res = $query->order('id desc')
  56. ->paginate(getpage())
  57. ->toArray();
  58. foreach ($res['data'] as &$vo) {
  59. $vo['sid'] = Store::getTitle($vo['sid']);
  60. $vo['staff'] = OrderStaff::staff($vo['id']);
  61. $vo['pay_time'] = time_format($vo['pay_time']);
  62. if (empty($vo['orderGoods'])) {
  63. if (!empty($vo['cat_id'])) {
  64. $vo['orderGoods'][0]['image'] = Category::getImage($vo['cat_id']);
  65. }
  66. $vo['orderGoods'][0]['name'] = '【用户发布需求】' . $vo['pay_subject'];
  67. }
  68. if ($vo['ptype'] == 1) {
  69. $vo['order_status'] = OrderStatus::get_order_status_name($vo['order_status_id']);
  70. $vo['order_status'] = $vo['order_status'] . '【' . refundStatus(($vo['orderRefund']['refund_status'])) . '】';
  71. $vo['orderRefund']['refund_type_name'] = refundType($vo['orderRefund']['refund_type']);
  72. $vo['shipping_type'] = getgoodsdeliverymode($vo['deliverymode']);
  73. } else {
  74. $vo['order_status'] = OrderStatus::get_order_status_name($vo['order_status_id'], 'service');
  75. $vo['order_status'] = $vo['order_status'] . '【' . refundStatus_yuyue(($vo['orderRefund']['refund_status'])) . '】';
  76. $vo['orderRefund']['refund_type_name'] = refundType_yuyue($vo['orderRefund']['refund_type']);
  77. $vo['shipping_type'] = getservicedeliverymode($vo['deliverymode']);
  78. }
  79. $vo['payment_code_name'] = paymentCode($vo['payment_code']);
  80. if ($vo['is_times'] == 1) {
  81. $OrderTimescard = OrderTimescard::where('order_id', $vo['id'])->order('id asc')->select()->toArray();
  82. if ($OrderTimescard) {
  83. foreach ($OrderTimescard as $tcvo) {
  84. if ($tcvo['yue_date']) {
  85. if ($tcvo['orderTimescard']['timestype'] == 1) {
  86. if ($vo['yue_time']) {
  87. $vo['yue_time'] .= ';每月:' . $tcvo['yue_date'] . '号';
  88. } else {
  89. $vo['yue_time'] = '每月:' . $tcvo['yue_date'] . '号';
  90. }
  91. } else {
  92. if ($vo['yue_time']) {
  93. $vo['yue_time'] .= ';每周周:' . $tcvo['yue_date'];
  94. } else {
  95. $vo['yue_time'] = '每周周:' . $tcvo['yue_date'];
  96. }
  97. }
  98. }
  99. }
  100. }
  101. if (empty($vo['yue_time'])) {
  102. $vo['yue_time'] = '还没有预约时间';
  103. }
  104. } else {
  105. $vo['yue_time'] = time_format($vo['begin_time']) . ' 到 ' . date('H:i', $vo['end_time']);
  106. }
  107. if (!empty($vo['orderGoods'])) {
  108. foreach ($vo['orderGoods'] as &$vvo) {
  109. $vvo['image'] = toimg($vvo['image']);
  110. }
  111. }
  112. }
  113. $data['data'] = $res;
  114. $RefundAddress = RefundAddress::where(['weid' => weid(), 'status' => 1])->order('id asc')->select()->toArray();
  115. $data['field_data']['RefundAddress'] = $RefundAddress;
  116. return $this->json($data);
  117. }
  118. function getInfo()
  119. {
  120. $id = $this->request->post('id', '', 'serach_in');
  121. if (!$id) throw new ValidateException('参数错误');
  122. $data = Order::order_info($id);
  123. if ($data['orderInfo']['sid'] == 0) {
  124. $data['orderInfo']['sid'] = '';
  125. }
  126. return $this->json(['data' => $data]);
  127. }
  128. // 处理售后订单
  129. public function refundhandle()
  130. {
  131. $postdata = input('post.');
  132. try {
  133. if ($postdata['OrderRefund']['refund_status'] == 1) {
  134. $res = Order::refund_order($postdata['OrderRefund']['order_id'], $postdata['OrderRefund']['response_time'], $postdata['OrderRefund']);
  135. if ($res['code']) {
  136. $postdata['OrderRefund']['response_time'] = time();
  137. $res['code'] = OrderRefund::where('id', $postdata['OrderRefund']['id'])->update($postdata['OrderRefund']);
  138. }
  139. if ($res['code']) {
  140. return $this->json(['msg' => '微信支付退款处理成功!']);
  141. } else {
  142. throw new ValidateException($res['return_msg'] . $res['err_code_des']);
  143. }
  144. } else {
  145. unset($postdata['OrderRefund']['refund_price']);
  146. OrderRefund::where('id', $postdata['OrderRefund']['id'])->update($postdata['OrderRefund']);
  147. if ($postdata['OrderRefund']['refund_type'] == 1) {
  148. Order::update(['order_status_id' => 2, 'id' => $postdata['OrderRefund']['order_id']]);
  149. }
  150. if ($postdata['OrderRefund']['refund_type'] == 2) {
  151. Order::update(['order_status_id' => 5, 'id' => $postdata['OrderRefund']['order_id']]);
  152. }
  153. return $this->json(['msg' => '处理成功!']);
  154. }
  155. } catch (\Exception $e) {
  156. throw new ValidateException($e->getMessage());
  157. }
  158. }
  159. function delete()
  160. {
  161. $idx = $this->request->post('id', '', 'serach_in');
  162. if (!$idx) throw new ValidateException('参数错误');
  163. if (!is_array($idx)) {
  164. $idx = explode(',', $idx);
  165. }
  166. Order::destroy(['id' => $idx], true);
  167. OrderRefund::where(['order_id' => $idx])->delete();
  168. return $this->json(['msg' => '操作成功']);
  169. }
  170. }