StoreAdminOrderForm.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756
  1. <?php
  2. /**
  3. * 重庆赤晓店信息科技有限公司
  4. * https://www.chixiaodian.com
  5. * Copyright (c) 2023 赤店商城 All rights reserved.
  6. */
  7. namespace app\modules\alliance\models\store;
  8. use app\constants\OptionSetting;
  9. use app\models\CloudGoodsBind;
  10. use app\models\common\ExpressDetail;
  11. use app\models\Express;
  12. use app\models\Goods;
  13. use app\models\Option;
  14. use app\models\Order;
  15. use app\models\OrderDetail;
  16. use app\models\OrderGoodsCancel;
  17. use app\models\OrderRefund;
  18. use app\models\OrderTransit;
  19. use app\models\RefundAddress;
  20. use app\models\Store;
  21. use app\modules\alliance\models\OrderRevokeForm;
  22. use app\utils\Notice\NoticeSend;
  23. use app\utils\PrintOrder;
  24. use yii\base\Model;
  25. class StoreAdminOrderForm extends Model
  26. {
  27. public $model;
  28. public $id;
  29. public $status;
  30. public $date_range;
  31. public $remark;
  32. public $type;
  33. public $mch_name;
  34. public $mch_mobile;
  35. public $mch_address;
  36. public $is_default;
  37. public $store_id;
  38. public function initOrder()
  39. {
  40. $this->model = Order::find()->where(['store_id'=>$this->store_id, 'is_delete' => 0]);
  41. }
  42. public function rules()
  43. {
  44. return [
  45. [['id', 'status', 'type', 'is_default'], 'integer'],
  46. [['date_range'], 'array'],
  47. [['remark', 'mch_name', 'mch_mobile', 'mch_address'], 'string']
  48. ];
  49. }
  50. //订单管理
  51. public function orderList(){
  52. $status = $this->status;
  53. $date_range = $this->date_range;
  54. $this->initOrder();
  55. $model = $this->model;
  56. $order_query = $model->select('id, order_no, pay_price, total_price, is_pay, trade_status, created_at, is_sale, trade_status, apply_delete, pay_type')->with(['orderDetail'])->orderBy('created_at desc');
  57. //筛选状态
  58. switch ($status) {
  59. case 1:
  60. // $time = time() - 60 * 15;
  61. $order_query->andWhere(['OR', ['is_pay' => Order::IS_PAY_FALSE, 'trade_status' => Order::ORDER_FLOW_DEFAULT], ['AND', ['is_pay' => Order::IS_PAY_FALSE, 'pay_type' => Order::PAY_TYPE_COD], ['<>', 'trade_status', Order::ORDER_FLOW_CANCEL]]]); //未支付
  62. break;
  63. case 2:
  64. $order_query->andWhere(['OR', ['trade_status' => Order::ORDER_FLOW_NO_SEND], ['is_pay' => Order::IS_PAY_FALSE, 'pay_type' => Order::PAY_TYPE_COD, 'trade_status' => Order::ORDER_FLOW_DEFAULT]]); //待发货
  65. break;
  66. case 3:
  67. $order_query->andWhere(['trade_status' => 2]); //待收获
  68. break;
  69. }
  70. if (!empty($date_range)) {
  71. //获取开始结束时间
  72. $begin_time = strtotime($date_range['begin_time']);
  73. $end_time = strtotime($date_range['end_time']) + (60 * 60 * 24);
  74. $order_query->andWhere(['and', ['>', 'created_at', $begin_time], ['<', 'created_at', $end_time]]);
  75. }
  76. $page = pagination_make($order_query);
  77. $list = $page['list'];
  78. foreach ($list as &$item) {
  79. foreach ($item['orderDetail'] as &$od) {
  80. if (!empty($od['attr'])) {
  81. $od['attr'] = json_decode($od['attr'],true);
  82. }
  83. unset($od['goods_info']);
  84. unset($od['goods_attr']);
  85. }
  86. $item['status'] = (int)$item['trade_status'];
  87. if ($item['is_sale'] == 1) {
  88. $item['status'] = 4;
  89. }
  90. // if ($item['status'] === -1 && ($item['created_at'] + 60 * 15 < time()) && $item['is_pay'] == 0 && intval($item['pay_type']) !== 2) {
  91. // $item['status'] = 1;
  92. // }
  93. $item['pay_type'] = intval($item['pay_type']);
  94. //获取退款的总商品金额 / 获取最新一条的状态
  95. $cancel_info = [];
  96. $order_cancel = OrderGoodsCancel::find()->where(['order_id' => $item['id']])
  97. ->orderBy('id desc')->select('status')->asArray()->one();
  98. if ($order_cancel) {
  99. $cancel_info['refund_price'] = OrderGoodsCancel::find()->where(['order_id' => $item['id']])->sum('refund_price');
  100. $cancel_info['status_text'] = OrderGoodsCancel::$status_desc[$order_cancel['status']];
  101. }
  102. $item['cancel_info'] = $cancel_info ?: null;
  103. unset($item['trade_status']);
  104. }
  105. //查询快递公司
  106. $express_list = Express::find()->where(['is_delete' => 0])->select('id, name')->all();
  107. return [
  108. 'code' => 0,
  109. 'msg' => "获取成功",
  110. 'data' => [
  111. 'list' => $list,
  112. 'express_list'=>$express_list,
  113. 'pageNo' => $page['pageNo'],
  114. 'totalCount' => $page['totalCount']
  115. ]
  116. ];
  117. }
  118. //取消订单
  119. public function orderCancel(){
  120. try {
  121. $id = $this->id;
  122. $this->initOrder();
  123. $model = $this->model;
  124. $remark = $this->remark;
  125. $order = $model->andWhere(['id' => $id])->select('id, remark, mch_id, user_id, mobile, order_no, pay_price, store_id, saas_id')->one();
  126. if (!$order || $order->mch_id > 0) {
  127. throw new \Exception('订单不存在,请刷新页面后重试');
  128. }
  129. // 发送备注消息
  130. $order->remark = $remark??'';
  131. $order->first_price = 0;
  132. $order->second_price = 0;
  133. $order->third_price = 0;
  134. $form = new OrderRevokeForm();
  135. $form->order_id = $order->id;
  136. $form->delete_pass = true;
  137. $form->user_id = $order->user_id;
  138. $form->store_id = $order->store_id;
  139. $form->saas_id = $order->saas_id;
  140. $res = $form->save();
  141. if ($res['code'] == 0) {
  142. if (!$order->save()) {
  143. throw new \Exception(json_encode($order->errors));
  144. }
  145. $goods = Goods::findOne(OrderDetail::findOne(['order_id' => $order->id])->goods_id);
  146. //通知用户
  147. NoticeSend::OrderCancel($order->user_id, $order->mobile, $order->order_no, $order->pay_price, $goods->name, 0);
  148. //打印
  149. $printer_order = new PrintOrder($order->store_id, $order->id, 'confirm', 0, 0, 0, $order['mch_id']);
  150. $printer_order->is_refund = true;
  151. $res = $printer_order->print_order();
  152. // if ($res['code'] != 0) {
  153. // throw new \Exception($res['msg']);
  154. // }
  155. //如果已经转单 就调用取消接口
  156. $orderTransit = OrderTransit::findOne(['order_id' => $order->id, 'is_delete' => 0]);
  157. if ($orderTransit) {
  158. $merchant = new \app\modules\admin\models\MerchantForm();
  159. $merchant->order_id = $orderTransit->cloud_order_id;
  160. $merchant->store_id = $order->store_id;
  161. $purchaseOrderCancel = $merchant->purchaseOrderCancel();
  162. }
  163. return [
  164. 'code' => 0,
  165. 'msg' => '操作成功',
  166. ];
  167. } else {
  168. throw new \Exception($res['msg']);
  169. }
  170. } catch (\Exception $e) {
  171. return [
  172. 'code' => 1,
  173. 'msg' => $e->getMessage().$e->getLine()
  174. ];
  175. }
  176. }
  177. //拒绝取消订单
  178. public function orderRejectCancel(){
  179. $where = [
  180. 'id' => $this->id,
  181. 'is_delete' => Order::IS_DELETE_FALSE,
  182. 'store_id' => $this->store_id,
  183. 'mch_id' => 0,
  184. ];
  185. $order = Order::findOne($where);
  186. if (!$order || $order->mch_id > 0) {
  187. return [
  188. 'code' => 1,
  189. 'msg' => '订单不存在,请刷新页面后重试'
  190. ];
  191. }
  192. $order->apply_delete = Order::ORDER_APPLY_DELETE_DEFAULT;
  193. if(!$order->save()){
  194. return [
  195. 'code' => 1,
  196. 'msg' => '操作失败,' . array_shift($order->getFirstErrors()),
  197. ];
  198. }
  199. return [
  200. 'code' => 0,
  201. 'msg' => '操作成功',
  202. ];
  203. }
  204. //售后订单
  205. public function orderRefund(){
  206. try {
  207. $status = $this->status;
  208. $date_range = $this->date_range;
  209. $store_id = $this->store_id;
  210. $query = OrderRefund::find()->alias('or')->where(['or.user_delete' => 0, 'or.store_id' => $store_id, 'or.md_id' => 0]);
  211. //商家信息
  212. $query->leftJoin(['s' => Store::tableName()], 's.id = or.store_id');
  213. //订单总金额信息
  214. $query->leftJoin(['o' => Order::tableName()], 'o.id = or.order_id');
  215. $query->select('or.id, or.store_id, or.order_id, or.order_detail_id, or.status, or.is_agree, or.updated_at, s.name, o.pay_price all_price, o.mobile, or.created_at')->orderBy('created_at desc');
  216. switch ($status) {
  217. case 1: //处理中
  218. $query->andWhere(['or.status' => 0]);
  219. break;
  220. case 2: //已完成
  221. $query->andWhere(['or', ['or.status' => 1], ['or.status' => 2], ['or.status' => 3]]);
  222. break;
  223. }
  224. if (!empty($date_range)) {
  225. //获取开始结束时间
  226. $begin_time = strtotime($date_range['begin_time']);
  227. $end_time = strtotime($date_range['end_time']) + (60 * 60 * 24);
  228. $query->andWhere(['and', ['>', 'or.created_at', $begin_time], ['<', 'or.created_at', $end_time]]);
  229. }
  230. $page = pagination_make($query);
  231. $list = $page['list'];
  232. foreach($list as &$item){
  233. $order_detail_id = json_decode($item['order_detail_id'],true);
  234. $item['orderDetail'] = OrderDetail::find()->where(['id' => $order_detail_id])->select('id, goods_name name, num, total_price, attr, pic')->asArray()->all();
  235. foreach($item['orderDetail'] as &$od){
  236. $od['attr'] = json_decode($od['attr'], true);
  237. }
  238. if ($item['is_agree'] == 1 && $item['status'] == 0) { //已经同意,需要用户发货
  239. $item['status'] = 4;
  240. }
  241. if ($item['is_user_send'] == 1) { //用户已经发货 商家等待收货
  242. $item['status'] = 5;
  243. }
  244. }
  245. return [
  246. 'code' => 0,
  247. 'msg' => "获取成功",
  248. 'data' => [
  249. 'list' => $list,
  250. 'pageNo' => $page['pageNo'],
  251. 'totalCount' => $page['totalCount']
  252. ]
  253. ];
  254. } catch (\Exception $e) {
  255. return [
  256. 'code' => 0,
  257. 'msg' => $e->getMessage()
  258. ];
  259. }
  260. }
  261. //订单详情
  262. public function orderDetail(){
  263. try {
  264. $id = $this->id;
  265. $type = $this->type;
  266. $store_id = $this->store_id;
  267. // 判断是否为普通订单 or 售后订单
  268. if ($type == 0) {
  269. $model = Order::find()->where(['o.store_id'=>$store_id, 'o.is_delete' => 0])->alias('o');
  270. $model = $model->andWhere(['o.id' => $id])->with(['detail'=>function($query){
  271. $query->select('id, goods_name, pic, total_price, delivery_type, attr, num, order_id, order_transit_id, goods_id')->asArray();
  272. }])->leftJoin(['s' => Store::tableName()], 's.id = o.store_id')
  273. ->select('o.id, o.is_pay, o.trade_status, o.name, o.mobile, o.address, o.store_id, o.order_no, o.created_at, o.pay_type, o.pay_price, o.express_price, o.send_time, o.express, o.express_no, s.name store_name, s.logo, o.province_id, o.city_id, o.district_id, o.md_id')
  274. ->asArray()->one();
  275. if (empty($model)) {
  276. throw new \Exception("订单信息错误");
  277. }
  278. $model['is_trans'] = false;
  279. foreach ($model['detail'] as &$item) {
  280. $item['cancel_info'] = OrderGoodsCancel::find()->where(['order_detail_id' => $item['id'], 'status' => [
  281. OrderGoodsCancel::STATUS_APPLY, OrderGoodsCancel::STATUS_PAY_FAIL
  282. ]])->select('id, status, num, refund_price, created_at')->asArray()->one();
  283. if ($item['cancel_info']) {
  284. $item['cancel_info']['created_at'] = date('Y-m-d H:i:s', $item['cancel_info']['created_at']);
  285. $item['cancel_info']['status_text'] = OrderGoodsCancel::$status_text[$item['cancel_info']['status']];
  286. }
  287. $item['cancel_info'] = $item['cancel_info'] ?: null;
  288. $item['attr'] = json_decode($item['attr'], true);
  289. //当前商品绑定的云仓商品
  290. $item['goods_bind'] = (bool)CloudGoodsBind::findOne(['store_id' => $this->store_id, 'goods_id' => $item['goods_id'], 'is_delete' => 0]);
  291. if ($item['goods_bind']) {
  292. //存在订单转单id
  293. if ($item['order_transit_id']) {
  294. $order_transit = OrderTransit::findOne($item['order_transit_id']);
  295. if ($order_transit) {
  296. $item['status'] = (int)$order_transit->status;
  297. } else {
  298. $model['is_trans'] = true;
  299. $item['status'] = 3;
  300. }
  301. } else {
  302. //可转单
  303. $item['status'] = 3;
  304. $model['is_trans'] = true;
  305. }
  306. }
  307. }
  308. $model['status'] = $model['trade_status'] * 1;
  309. $model['goods_price'] = sprintf("%.2f", $model['pay_price'] - $model['express_price']);
  310. $model['delivery_type'] = $model['detail'][0]['delivery_type'];
  311. $model['created_at'] = date("Y-m-d H:i:s", $model['created_at']);
  312. //判断何时会自动收货
  313. $time = time();
  314. $delivery_time = Option::get(OptionSetting::STORE_DELIVERY_TIME)['value'];
  315. $delivery_time = $time - ($delivery_time * 86400);
  316. // 查询物流信息
  317. $express_detail = new ExpressDetail();
  318. $express_detail->express = $model['express'];
  319. $express_detail->express_no = $model['express_no'];
  320. $express_detail->receive_mobile = $model['mobile'];
  321. $express_detail->store_id = $store_id;
  322. $res = $express_detail->search();
  323. $model['express_detail'] = null;
  324. if ($res['code'] != 0) {
  325. $model['express_detail']['list'] = [];
  326. $model['express_detail']['status'] = 0;
  327. $model['express_detail']['status_text'] = '未知';
  328. } else {
  329. $model['express_detail'] = $res['data'];
  330. }
  331. if ($model['status'] == 2) {
  332. $model['pay_time'] = $delivery_time;
  333. }
  334. $address = [];
  335. //获取退款的总商品金额 / 获取最新一条的状态
  336. $handle_cancel = OrderGoodsCancel::find()->where(['order_id' => $model['id'], 'status' => [
  337. OrderGoodsCancel::STATUS_APPLY, OrderGoodsCancel::STATUS_PAY_FAIL
  338. ]])->select('SUM(num) as num, SUM(refund_price) as refund_price')->groupBy('order_id')->asArray()->one() ?: null;
  339. $model['handle_cancel'] = $handle_cancel ?: null;
  340. } else {
  341. $model = OrderRefund::find()->where(['store_id' => $store_id, 'is_delete' => 0, 'user_delete' => 0, 'id' => $id])
  342. ->select('id, store_id, user_id, order_detail_id, status, is_agree, order_refund_no, is_user_send, created_at, refuse_desc, address_id, pic_list, refund_price, desc, type, user_send_express, user_send_express_no')->asArray()->one();
  343. if (empty($model)) {
  344. throw new \Exception("订单信息错误");
  345. }
  346. $model['pic_list'] = json_decode($model['pic_list'], true);
  347. $order_detail_id = json_decode($model['order_detail_id'], true);
  348. $model['detail'] = OrderDetail::find()->where(['id' => $order_detail_id])->select('id, goods_name, num, total_price, attr, pic')->asArray()->all();
  349. foreach ($model['detail'] as &$item) {
  350. $item['attr'] = json_decode($item['attr'], true);
  351. $item['created_at'] = date("Y-m-d H:i:s", $item['created_at']);
  352. }
  353. $model['store'] = RefundAddress::find()->where(['id' => $model['address_id']])->select('id, name, address, mobile')->asArray()->one();
  354. \Yii::error($model['status'],"这是一个status");
  355. $model['status'] = $model['status'] * 1;
  356. if ($model['is_agree'] == 1 && $model['status'] == 0) { //已经同意,需要用户发货
  357. $model['status'] = 4;
  358. }
  359. if ($model['is_user_send'] == 1 && $model['status'] == 0) { //用户已经发货 商家等待收货
  360. $model['status'] = 5;
  361. }
  362. // 查询物流信息
  363. $express_detail = new ExpressDetail();
  364. $express_detail->express = $model['user_send_express'];
  365. $express_detail->express_no = $model['user_send_express_no'];
  366. $express_detail->store_id = $store_id;
  367. $res = $express_detail->search();
  368. $model['express_detail'] = null;
  369. if ($res['code'] != 0) {
  370. $model['express_detail']['list'] = [];
  371. $model['express_detail']['status'] = 0;
  372. $model['express_detail']['status_text'] = '未知';
  373. } else {
  374. $model['express_detail'] = $res['data'];
  375. }
  376. //如果地址存在则用订单地址 如果不存在则用默认地址
  377. $where = ['id' => $model['address_id']];
  378. if (empty($model['address_id'])) {
  379. $where = ['is_default' => 1];
  380. }
  381. $address_one = RefundAddress::find()->where(['store_id' => $store_id, 'is_delete' => 0])->andWhere($where)->select('id, name, address, mobile')->asArray()->one();
  382. if (!empty($address_one)) {//'is_default' => 1
  383. $model['name'] = $address_one["name"];
  384. $model['mobile'] = $address_one["mobile"];
  385. $model['address'] = $address_one["address"];
  386. }
  387. $address = RefundAddress::find()->where(['store_id' => $store_id, 'is_delete' => 0])->select('id, name, address, mobile, is_default')->asArray()->all();
  388. }
  389. //查询快递公司
  390. $express_list = Express::find()->where(['is_delete' => 0])->select('id, name')->all();
  391. return [
  392. 'code' => 0,
  393. 'msg' => "获取成功",
  394. 'data' => [
  395. 'order' => $model,
  396. 'express' => $express_list,
  397. 'address' => $address
  398. ]
  399. ];
  400. } catch (\Exception $e) {
  401. return [
  402. 'code' => 1,
  403. 'msg' => $e->getMessage()
  404. ];
  405. }
  406. }
  407. //获取快递公司数据
  408. public function express(){
  409. $store_id = $this->store_id;
  410. $storeExpressList = Order::find()
  411. ->select('express')
  412. ->where([
  413. 'and',
  414. ['store_id' => $store_id],
  415. ['is_pay' => Order::IS_PAY_TRUE],
  416. ['in', 'trade_status', [Order::ORDER_FLOW_SEND, Order::ORDER_FLOW_CONFIRM]],
  417. ['!=', 'express', ''],
  418. ])->groupBy('express, send_time')->orderBy('send_time DESC')->limit(5)->asArray()->all();
  419. $expressLst = Express::getExpressList();
  420. $newStoreExpressList = [];
  421. foreach ($storeExpressList as $i => $item) {
  422. foreach ($expressLst as $value) {
  423. if ($value['name'] == $item['express']) {
  424. $newStoreExpressList[] = $item['express'];
  425. break;
  426. }
  427. }
  428. }
  429. $newPublicExpressList = [];
  430. foreach ($expressLst as $i => $item) {
  431. $newPublicExpressList[] = $item['name'];
  432. }
  433. $express_list = array_merge($newStoreExpressList, $newPublicExpressList);
  434. return [
  435. 'code' => 0,
  436. 'msg' => "获取成功",
  437. 'data' => [
  438. 'express' => $express_list,
  439. ]
  440. ];
  441. }
  442. //售后订单申请
  443. public function orderRefundApply(){
  444. try {
  445. $id = $this->id;
  446. $status = $this->status;
  447. $model = OrderRefund::find()->where(['id' => $id])->select('id, is_agree, status')->one();
  448. if (empty($model)) {
  449. throw new \Exception("订单信息错误");
  450. }
  451. //已同意
  452. if ($status == 1) {
  453. $model->status = 1;
  454. } elseif ($status == 2) { //商户拒绝
  455. $model->status = 3;
  456. }
  457. if ($model->save()) {
  458. throw new \Exception("取消申请失败");
  459. }
  460. return [
  461. 'code' => 0,
  462. 'msg' => "操作成功"
  463. ];
  464. } catch (\Exception $e) {
  465. return [
  466. 'code' => 1,
  467. 'msg' => $e->getMessage()
  468. ];
  469. }
  470. }
  471. //售后订单删除
  472. public function orderRefundDelete(){
  473. try {
  474. $id = $this->id;
  475. $model = OrderRefund::find()->where(['id' => $id])->select('id, is_delete')->one();
  476. if (empty($model)) {
  477. throw new \Exception("订单信息错误");
  478. }
  479. $model->is_delete = 1;
  480. if ($model->save()) {
  481. throw new \Exception("删除失败");
  482. }
  483. return [
  484. 'code' => 0,
  485. 'msg' => "删除成功"
  486. ];
  487. } catch (\Exception $e) {
  488. return [
  489. 'code' => 1,
  490. 'msg' => $e->getMessage()
  491. ];
  492. }
  493. }
  494. //商户收货地址保存
  495. public function refundAddressSave(){
  496. try {
  497. $id = $this->id;
  498. $store_id = $this->store_id;
  499. $model = RefundAddress::findOne($id)?:new RefundAddress();
  500. $model->store_id = $store_id;
  501. $model->name = $this->mch_name;
  502. $model->mobile = $this->mch_mobile;
  503. $model->address = $this->mch_address;
  504. if (!$model->save()) {
  505. throw new \Exception("保存失败");
  506. }
  507. //是否默认
  508. if ($this->is_default) {
  509. $this->id = $model->id;
  510. $this->refundAddressDefault();
  511. }
  512. return [
  513. 'code' => 0,
  514. 'msg' => "保存成功",
  515. 'data' => [
  516. 'address_id' => $model->id
  517. ]
  518. ];
  519. } catch (\Exception $e) {
  520. return [
  521. 'code' => 1,
  522. 'msg' => $e->getMessage()
  523. ];
  524. }
  525. }
  526. //获取地址列表
  527. public function refundAddress(){
  528. try {
  529. $store_id = $this->store_id;
  530. $list = RefundAddress::find()->where(['store_id' => $store_id, 'mch_id' => 0, 'is_delete' => 0])->select('id, name, address, mobile, is_default')->asArray()->all();
  531. foreach ($list as &$item) {
  532. $item['is_default'] *= 1;
  533. }
  534. return [
  535. 'code' => 0,
  536. 'msg' => "获取成功",
  537. 'data' => $list
  538. ];
  539. } catch (\Exception $e) {
  540. return [
  541. 'code' => 1,
  542. 'msg' => $e->getMessage()
  543. ];
  544. }
  545. }
  546. //获取地址详情
  547. public function getAddressInfo(){
  548. try {
  549. $id = $this->id;
  550. $model = RefundAddress::findOne($id);
  551. return [
  552. 'code' => 0,
  553. 'msg' => "获取成功",
  554. 'data' => $model
  555. ];
  556. } catch (\Exception $e) {
  557. return [
  558. 'code' => 1,
  559. 'msg' => $e->getMessage()
  560. ];
  561. }
  562. }
  563. //设置默认地址
  564. public function refundAddressDefault(){
  565. try {
  566. $id = $this->id;
  567. $store_id = $this->store_id;
  568. RefundAddress::updateAll(['is_default' => 0],['store_id' => $store_id]);
  569. $model = RefundAddress::findOne($id);
  570. if (empty($model)) {
  571. throw new \Exception("查询不到地址信息");
  572. }
  573. $model->is_default = 1;
  574. if (!$model->save()) {
  575. throw new \Exception("设置失败");
  576. }
  577. return [
  578. 'code' => 0,
  579. 'msg' => "设置成功",
  580. ];
  581. } catch (\Exception $e) {
  582. return [
  583. 'code' => 1,
  584. 'msg' => $e->getMessage()
  585. ];
  586. }
  587. }
  588. //商户地址删除
  589. public function refundAddressDel(){
  590. try {
  591. $id = $this->id;
  592. $model = RefundAddress::findOne($id);
  593. if (empty($model)) {
  594. throw new \Exception("查询不到地址信息");
  595. }
  596. $model->is_delete = 1;
  597. if (!$model->save()) {
  598. throw new \Exception("删除失败");
  599. }
  600. return [
  601. 'code' => 0,
  602. 'msg' => "删除成功",
  603. ];
  604. } catch (\Exception $e) {
  605. return [
  606. 'code' => 1,
  607. 'msg' => $e->getMessage()
  608. ];
  609. }
  610. }
  611. //设置订单收货地址
  612. public function setRefundAddress(){
  613. try {
  614. $id = $this->id;
  615. $address_id = $this->mch_address;
  616. $model = OrderRefund::findOne($id);
  617. $model->address_id = $address_id;
  618. if (!$model->save()) {
  619. throw new \Exception("设置失败");
  620. }
  621. return [
  622. 'code' => 0,
  623. 'msg' => "设置成功",
  624. ];
  625. } catch (\Exception $e) {
  626. return [
  627. 'code' => 1,
  628. 'msg' => $e->getMessage()
  629. ];
  630. }
  631. }
  632. }