OrderrefundController.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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\MemberCashlogs;
  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', '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'] = Paymethod::get_paymethod_name($vo['payment_code']);
  80. if ($vo['is_times'] == 1) {
  81. if ($vo['timesdate']) {
  82. if ($vo['timestype'] == 1) {
  83. $vo['yue_time'] = '每月:' . $vo['timesdate'] . '号';
  84. } else {
  85. $vo['yue_time'] = '每周周:' . $vo['timesdate'];
  86. }
  87. } else {
  88. $vo['yue_time'] = '还没有预约时间';
  89. }
  90. } else {
  91. $vo['yue_time'] = time_format($vo['begin_time']) . ' 到 ' . date('H:i', $vo['end_time']);
  92. }
  93. if (!empty($vo['orderGoods'])) {
  94. foreach ($vo['orderGoods'] as &$vvo) {
  95. $vvo['image'] = toimg($vvo['image']);
  96. }
  97. }
  98. }
  99. $data['data'] = $res;
  100. $RefundAddress = RefundAddress::where(['weid' => weid(), 'status' => 1])->order('id asc')->select()->toArray();
  101. $data['field_data']['RefundAddress'] = $RefundAddress;
  102. return $this->json($data);
  103. }
  104. function getInfo()
  105. {
  106. $id = $this->request->post('id', '', 'serach_in');
  107. if (!$id) throw new ValidateException('参数错误');
  108. $data = Order::order_info($id);
  109. if ($data['orderInfo']['sid'] == 0) {
  110. $data['orderInfo']['sid'] = '';
  111. }
  112. return $this->json(['data' => $data]);
  113. }
  114. // 处理售后订单
  115. public function refundhandle()
  116. {
  117. $postdata = input('post.');
  118. try {
  119. if ($postdata['OrderRefund']['refund_status'] == 1) {
  120. $res = Order::refund_order($postdata['OrderRefund']['order_id'], $postdata['OrderRefund']['response_time'], $postdata['OrderRefund']);
  121. if ($res['code']) {
  122. $postdata['OrderRefund']['response_time'] = time();
  123. $res['code'] = OrderRefund::where('id', $postdata['OrderRefund']['id'])->update($postdata['OrderRefund']);
  124. }
  125. if ($res['code']) {
  126. return $this->json(['msg' => '微信支付退款处理成功!']);
  127. } else {
  128. throw new ValidateException($res['return_msg'] . $res['err_code_des']);
  129. }
  130. } else {
  131. unset($postdata['OrderRefund']['refund_price']);
  132. OrderRefund::where('id', $postdata['OrderRefund']['id'])->update($postdata['OrderRefund']);
  133. if ($postdata['OrderRefund']['refund_type'] == 1) {
  134. Order::update(['order_status_id' => 2, 'id' => $postdata['OrderRefund']['order_id']]);
  135. }
  136. if ($postdata['OrderRefund']['refund_type'] == 2) {
  137. Order::update(['order_status_id' => 5, 'id' => $postdata['OrderRefund']['order_id']]);
  138. }
  139. return $this->json(['msg' => '处理成功!']);
  140. }
  141. } catch (\Exception $e) {
  142. throw new ValidateException($e->getMessage());
  143. }
  144. }
  145. function delete()
  146. {
  147. $idx = $this->request->post('id', '', 'serach_in');
  148. if (!$idx) throw new ValidateException('参数错误');
  149. if (!is_array($idx)) {
  150. $idx = explode(',', $idx);
  151. }
  152. Order::destroy(['id' => $idx], true);
  153. OrderRefund::where(['order_id' => $idx])->delete();
  154. return $this->json(['msg' => '操作成功']);
  155. }
  156. }