OrderController.php 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: wniu
  5. * Date: 2022/2/28
  6. * Time: 2:22 下午
  7. */
  8. namespace addons\CloudStock\backend\controllers;
  9. use addons\CloudStock\backend\services\CloudStockAgentOrderService;
  10. use addons\CloudStock\common\enums\CloudStockEnum;
  11. use addons\CloudStock\common\models\CloudStockAgentOrder;
  12. use addons\CloudStock\common\models\CloudStockBuyingOrder;
  13. use addons\CloudStock\common\models\CloudStockDeductionDetail;
  14. use addons\CloudStock\common\models\CloudStockDispenseOrder;
  15. use addons\CloudStock\common\models\CloudStockFillOrder;
  16. use addons\CloudStock\common\models\CloudStockFillOrderRelation;
  17. use addons\CloudStock\common\models\CloudStockOrderBatchDelivery;
  18. use addons\CloudStock\common\models\CloudStockOrderBatchDeliveryError;
  19. use addons\CloudStock\common\models\CloudStockPriceDifferenceOrder;
  20. use addons\CloudStock\common\services\CloudStockDispenseOrderService;
  21. use addons\CloudStock\common\services\CloudStockPriceDifferenceGiftPackageOrderService;
  22. use common\components\export\CsvTool;
  23. use common\enums\RabbitMqEnum;
  24. use common\models\common\CapitalLog;
  25. use common\models\common\PaymentTrade;
  26. use common\enums\PayTypeEnum;
  27. use common\enums\StatusEnum;
  28. use common\models\common\Express;
  29. use common\models\common\Region;
  30. use common\models\goods\Goods;
  31. use common\models\order\Order;
  32. use common\models\user\User;
  33. use common\helpers\csv\CsvExportHelper;
  34. use common\enums\DownloadEnum;
  35. use common\models\user\UserLevel;
  36. use Yii;
  37. use yii\db\Expression;
  38. class OrderController extends BaseController
  39. {
  40. public $enableCsrfValidation = false;
  41. public function actionIndex()
  42. {
  43. if (\Yii::$app->request->isAjax) {
  44. if (\Yii::$app->request->isPost) {
  45. $data = \Yii::$app->request->post();
  46. if($data['list_type'] == 'fill_order'){
  47. $title = '代理商补货列表';
  48. $class = CloudStockFillOrder::class;
  49. } else if ($data['list_type'] == 'diff_order') {
  50. $title = '价差礼包列表';
  51. $class = CloudStockPriceDifferenceGiftPackageOrderService::class;
  52. } else if ($data['list_type'] == 'dispense_order') {
  53. $title = '代理商配货列表';
  54. $class = CloudStockDispenseOrderService::class;
  55. }else{
  56. $title = '用户买货订单列表';
  57. $class = CloudStockBuyingOrder::class;
  58. }
  59. $filename = $title. '-' . date('YmdHis').'_'.rand(10000,99999);
  60. $data['mall_id'] = $this->mall_id;
  61. $res = CsvExportHelper::exportDownLoadCenter($this->mall_id,$filename,DownloadEnum::TYPE_CLOUD_STOCK,$class,'exportOrder',$data);
  62. if ($res === false) return $this->error('加入导出任务失败'.CsvExportHelper::getStaticError());
  63. return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
  64. }else{
  65. $params = Yii::$app->request->get();
  66. if (!empty($params['list_type']) && $params['list_type'] == 'diff_order') {
  67. $params['mall_id'] = $this->mall_id;
  68. $data = (new CloudStockPriceDifferenceGiftPackageOrderService(['mall_id' => $this->mall_id]))->index($params);
  69. return $this->success('操作成功', $data);
  70. }
  71. if (!empty($params['list_type']) && $params['list_type'] == 'dispense_order') {
  72. $params['mall_id'] = $this->mall_id;
  73. $data = (new CloudStockDispenseOrderService(['mall_id' => $this->mall_id]))->index($params);
  74. return $this->success('操作成功', $data);
  75. }
  76. $where[] = ['=', 'mall_id', $this->mall_id];
  77. $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]];
  78. if (!empty($params['keyword'])) {
  79. $user_list = User::find()->where(['or',
  80. ['id' => $params['keyword']],
  81. ['nickname' => $params['keyword']],
  82. ['like', 'mobile', $params['keyword']]])->select('id')->asArray()->all();
  83. $user_id_arr = array_column($user_list, 'id');
  84. $where[] = ['user_id' => $user_id_arr];
  85. }
  86. if (!empty($params['goods_name'])) {
  87. $goods_list = Goods::find()->where(['like', 'goods_name', $params['goods_name']])->select('id')->asArray()->all();
  88. if ($goods_list) {
  89. $goods_id_arr = array_column($goods_list, 'id');
  90. $where[] = ['goods_id' => $goods_id_arr];
  91. }
  92. }
  93. if (!empty($params['payment_type'])) $where[] = ['=', 'payment_type', $params['payment_type'] ];
  94. if (!empty($params['start'])) $where[] = ['>=', 'created_at', strtotime($params['start'])];
  95. if (!empty($params['end'])) $where[] = ['<=', 'created_at', strtotime($params['end'])];
  96. $params['order'] = 'id desc';
  97. $params['with'] = ['user', 'order', 'orderDetail', 'goods'];
  98. if ($params['list_type'] == 'fill_order') {
  99. if (!empty($params['id'])) {
  100. $where[] = ['=', 'id', $params['id']];
  101. }
  102. if (isset($params['is_pay']) && is_numeric($params['is_pay'])) {
  103. $where[] = ['=', 'is_pay', $params['is_pay']];
  104. }
  105. $where[] = ['price_difference_order_id' => 0];
  106. $params['where'] = $where;
  107. $params['with'] = ['user', 'goods'];
  108. $page_data = CloudStockFillOrder::listPage($params, false);
  109. $page_data['export_list'] = CloudStockFillOrder::fieldsLists();
  110. if(!empty($page_data['list'])){
  111. $trade_nos = array_column($page_data['list'],'trade_no');
  112. $payment_trade_arr = PaymentTrade::lists(['where'=>[['out_trade_no'=>$trade_nos]],'index'=>'out_trade_no','select'=>'out_trade_no,pay_type as payment_type,rand_fee']);
  113. $fill_order_ids = [];
  114. $order_id_arr = array_column($page_data['list'], 'id');
  115. $deduction_list = CloudStockDeductionDetail::lists([
  116. 'where' => [
  117. ['mall_id' => $this->mall_id],
  118. ['order_id' => $order_id_arr],
  119. ['order_type' => CloudStockEnum::STOCK_ORDER_TYPE_REPLENISH],
  120. ['changes_type' => CloudStockEnum::CHANGE_TYPE_DEDUTION_FILL]
  121. ],
  122. 'select' => 'user_id,order_id',
  123. ]
  124. );
  125. $deduction_user_ids = array_column($deduction_list, 'user_id');
  126. $deduction_user_id_arr = [];
  127. foreach ($deduction_list as $val) {
  128. $deduction_user_id_arr[$val['order_id']][] = $val['user_id'];
  129. }
  130. $user_list = User::lists([
  131. 'where' => [
  132. ['id' => $deduction_user_ids]
  133. ],
  134. 'index' => 'id',
  135. 'select' => 'id,nickname,mobile,avatar_url',
  136. ]
  137. );
  138. $user_list[0] = ['id' => 0,
  139. 'nickname' => '平台',
  140. 'mobile' => '',
  141. 'avatar_url' => '',];
  142. foreach ($page_data['list'] as $val){
  143. if(empty($val['trade_no'])){
  144. $fill_order_ids[]=$val['id'];
  145. }
  146. }
  147. if(!empty($fill_order_ids)){
  148. $fill_order_relations = CloudStockFillOrderRelation::lists(['where'=>[['fill_order_id'=>$fill_order_ids]],'index'=>'fill_order_id','select'=>'fill_order_id,order_id']);
  149. $order_ids = array_column($fill_order_relations,'order_id');
  150. $order_arr = Order::lists(['where'=>[['id'=>$order_ids]],'index'=>'id','select'=>'id,payment_type']);
  151. }
  152. foreach ($page_data['list'] as &$item){
  153. if(!empty($item['trade_no'])){
  154. $item['payment_type'] = $payment_trade_arr[$item['trade_no']]['payment_type']??'';
  155. $item['rand_fee'] = $payment_trade_arr[$item['trade_no']]['rand_fee'];
  156. }else{
  157. if(isset($fill_order_relations[$item['id']])){
  158. $order_id = $fill_order_relations[$item['id']]['order_id'];
  159. if(isset($order_arr)&&isset($order_arr[$order_id])){
  160. $item['payment_type'] = $order_arr[$order_id]['payment_type'];
  161. }
  162. }
  163. }
  164. $item['from_user'] = [];
  165. if (isset($deduction_user_id_arr[$item['id']])) {
  166. foreach ($deduction_user_id_arr[$item['id']] as $uid) {
  167. if (!isset($user_list[$uid])) {
  168. continue;
  169. }
  170. $item['from_user'][] = [
  171. 'id' => $uid,
  172. 'nickname' => $user_list[$uid]['nickname'],
  173. 'mobile' => $user_list[$uid]['mobile'],
  174. 'avatar_url' => $user_list[$uid]['avatar_url'],
  175. ];
  176. }
  177. }
  178. }
  179. }
  180. } else {
  181. if (!empty($params['id'])) {
  182. $where[] = ['=', 'id', $params['id']];
  183. }
  184. $params['where'] = $where;
  185. $params['with'] = ['user', 'order', 'orderDetail', 'goods'];
  186. $page_data = CloudStockBuyingOrder::listPage($params, false);
  187. if (!empty($page_data['list'])) {
  188. $order_id_arr = array_column($page_data['list'], 'id');
  189. $deduction_list = CloudStockDeductionDetail::lists([
  190. 'where' => [
  191. ['order_id' => $order_id_arr],
  192. ['order_type' => CloudStockEnum::STOCK_ORDER_TYPE_USER]
  193. ],
  194. 'select' => 'user_id,order_id',
  195. ]
  196. );
  197. $deduction_user_ids = array_column($deduction_list, 'user_id');
  198. $deduction_user_id_arr = [];
  199. foreach ($deduction_list as $val) {
  200. $deduction_user_id_arr[$val['order_id']][] = $val['user_id'];
  201. }
  202. $user_list = User::lists([
  203. 'where' => [
  204. ['id' => $deduction_user_ids]
  205. ],
  206. 'index' => 'id',
  207. 'select' => 'id,nickname,mobile,avatar_url',
  208. ]
  209. );
  210. $user_list[0] = [
  211. 'id' => 0,
  212. 'nickname' => '平台',
  213. 'mobile' => '',
  214. 'avatar_url' => ''
  215. ];
  216. }
  217. foreach ($page_data['list'] as &$item) {
  218. $item['from_user'] = [];
  219. if (isset($deduction_user_id_arr[$item['id']])) {
  220. foreach ($deduction_user_id_arr[$item['id']] as $uid) {
  221. if (!isset($user_list[$uid])) {
  222. continue;
  223. }
  224. $item['from_user'][] = [
  225. 'id' => $uid,
  226. 'nickname' => $user_list[$uid]['nickname'],
  227. 'mobile' => $user_list[$uid]['mobile'],
  228. 'avatar_url' => $user_list[$uid]['avatar_url'],
  229. ];
  230. }
  231. }
  232. }
  233. $page_data['export_list'] = CloudStockBuyingOrder::fieldsLists();
  234. }
  235. $page_data['payment_type_list']= PayTypeEnum::getMap();
  236. return $this->success('操作成功', $page_data);
  237. }
  238. }
  239. return $this->render('index', []);
  240. }
  241. public function actionInvite()
  242. {
  243. if (\Yii::$app->request->isAjax) {
  244. if (\Yii::$app->request->isPost) {
  245. $data = \Yii::$app->request->post();
  246. $filename = '自取订单-' . date('YmdHis').'_'.rand(10000,99999);
  247. $data['mall_id'] = $this->mall_id;
  248. $res = CsvExportHelper::exportDownLoadCenter($this->mall_id,$filename,DownloadEnum::TYPE_CLOUD_STOCK,CloudStockAgentOrder::class,'exportOrder',$data);
  249. if ($res === false) return $this->error('加入导出任务失败'.CsvExportHelper::getStaticError());
  250. return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
  251. }else{
  252. $params = Yii::$app->request->get();
  253. $where[] = ['=', 'mall_id', $this->mall_id];
  254. $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]];
  255. if (!empty($params['keyword'])) {
  256. $user_list = User::find()->where(['or',
  257. ['id' => $params['keyword']],
  258. ['like', 'mobile', $params['keyword']],
  259. ['like', 'nickname', $params['keyword']]])->select('id')->asArray()->all();
  260. $user_id_arr = array_column($user_list, 'id');
  261. $where[] = ['user_id' => $user_id_arr];
  262. }
  263. if ($params['status'] != '') {
  264. if (abs($params['status']) == \addons\CloudStock\common\enums\CloudStockEnum::PICK_ORDER_STATUS4) {
  265. $where[] = ['=', 'send_status', \addons\CloudStock\common\enums\CloudStockEnum::PICK_ORDER_STATUS4];
  266. $where[] = [$params['status'] > 0 ? '=' : '>', 'cancel_admin_id', 0];
  267. } else {
  268. $where[] = ['=', 'send_status', $params['status']];
  269. }
  270. }
  271. if (!empty($params['order_type'])) {
  272. $where[] = ['order_type' => $params['order_type']];
  273. }
  274. if (!empty($params['express_no'])) {
  275. $where[] = ['=', 'express_no', $params['express_no']];
  276. }
  277. if (!empty($params['out_trade_no'])) {
  278. $where[] = ['=', 'trade_no', $params['out_trade_no']];
  279. }
  280. if (!empty($params['order_no'])) {
  281. $where[] = ['=', 'order_no', $params['order_no']];
  282. }
  283. if (!empty($params['created_at'])) {
  284. $where[] = ['between', 'created_at', strtotime(reset($params['created_at'])), strtotime(end($params['created_at']))];
  285. }
  286. if (isset($params['receiving_info']) && $params['receiving_info'] !== '') {
  287. $where[] = [
  288. 'or',
  289. ['like', 'mobile', $params['receiving_info']],
  290. ['like', 'name', $params['receiving_info']]
  291. ];
  292. }
  293. if (!empty($params['areaIds'])) {
  294. $where[] = [
  295. 'or',
  296. ['province_id' => $params['areaIds']],
  297. ['city_id' => $params['areaIds']],
  298. ['district_id' => $params['areaIds']]
  299. ];
  300. }
  301. $params['where'] = $where;
  302. $params['order'] = 'id desc';
  303. $params['with'] = [
  304. 'user',
  305. 'details' => function ($query) {
  306. $query
  307. ->with(['goods' => function ($query) {
  308. $query->select('id, cover_pic, goods_name');
  309. }]);
  310. }
  311. ];
  312. $page_data = CloudStockAgentOrder::listPage($params, false);
  313. if(!empty($page_data['list'])){
  314. $express_codes = array_column($page_data['list'],'express_code');
  315. $express_list = Express::getExpresses([['code'=>$express_codes]], [], true, '*');
  316. $express_arr = array_column($express_list,'name','code');
  317. $regionList = Region::find()->indexBy('id')->select('name')->column();
  318. foreach ($page_data['list'] as &$item){
  319. $item['express_name'] = $express_arr[$item['express_code']]??'';
  320. $item['order_type_text'] = $item['order_type'] == 1 ? "云仓自提" : "价差礼包自提";
  321. $item['region_name'] = sprintf('%s %s %s', $regionList[$item['province_id']] ?? '', $regionList[$item['city_id']] ?? '', $regionList[$item['district_id']] ?? '');
  322. }
  323. }
  324. $page_data['export_list'] = CloudStockAgentOrder::fieldsLists();
  325. $send_status_map = CloudStockEnum::getAgentOrdetStatusMap();
  326. $page_data['send_status_map'] = $send_status_map;
  327. $page_data['payment_type_list']= PayTypeEnum::getMap();
  328. $page_data['payment_type_list'][0] = '免支付';
  329. return $this->success('操作成功', $page_data);
  330. }
  331. }
  332. return $this->render('invite', []);
  333. }
  334. public function actionBatchDelivery()
  335. {
  336. if (\Yii::$app->request->isAjax) {
  337. if (\Yii::$app->request->isPost) {
  338. $params = Yii::$app->request->post();
  339. // 失败订单导出
  340. if(\Yii::$app->request->post('flag') == 'EXPORT'){
  341. $rules = [[['batch_delivery_id'], 'required'], [['batch_delivery_id'], 'integer']];
  342. $res = Yii::$app->services->validate->validate($params, $rules);
  343. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  344. $download['mall_id'] = $this->mall_id;
  345. $download['batch_delivery_id'] = $params['batch_delivery_id'];
  346. $filename = '批量发货失败-' . date('YmdHis').'_'.rand(10000,99999);
  347. $res = CsvExportHelper::exportDownLoadCenter($this->mall_id,$filename,DownloadEnum::TYPE_ORDERS,CloudStockOrderBatchDeliveryError::class,'exportHandle',$download);
  348. if ($res === false) return $this->error('加入导出任务失败'.CsvExportHelper::getStaticError());
  349. return $this->success('添加导出任务成功,任务完成后请在下载中心进行下载!');
  350. }
  351. $rules = [
  352. [['express_id','express_name','delivery_file'], 'required'],
  353. [['express_id'], 'integer'],
  354. [['delivery_file','express_name'], 'string'],
  355. ];
  356. $res = Yii::$app->services->validate->validate($params, $rules);
  357. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  358. try {
  359. $params['operator_id'] = $this->admin->id;
  360. $params['operator_name'] = $this->admin->account;
  361. $model = CloudStockOrderBatchDelivery::setData($this->mall_id, $params);
  362. if ($model == false) throw new \Exception(CloudStockOrderBatchDelivery::getStaticError());
  363. //CloudStockAgentOrder::asyncBatchDelivery(['id' => $model->id]);
  364. // 提交到异步处理
  365. Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_ORDER, RabbitMqEnum::ORDER_QUEUE, ['id' => $model->id], CloudStockAgentOrder::class, 'asyncBatchDelivery');
  366. return $this->success('提交成功,正在处理异步处理批量发货');
  367. } catch (\Exception $e) {
  368. return $this->error('提交失败:' . $e->getMessage());
  369. }
  370. }else{
  371. $params = Yii::$app->request->get();
  372. $rules = [
  373. [['delivery_status'], 'integer'],
  374. [['start_time','end_time','operator_name'], 'string'],
  375. ];
  376. $res = Yii::$app->services->validate->validate($params, $rules);
  377. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  378. // 条件组合
  379. $where = [['mall_id' => $this->mall_id]];
  380. $where[] = ['=', 'status', StatusEnum::ENABLED];
  381. isset($params['start_time']) && isset($params['end_time']) && $where[] = ['between', 'created_at', strtotime($params['start_time']), strtotime($params['end_time'])];
  382. isset($params['operator_name']) && $where[] = ['=', 'operator_name', $params['operator_name']];
  383. isset($params['delivery_status']) && $where[] = ['=', 'delivery_status', $params['delivery_status']];
  384. $with=[];
  385. $order = "id desc";
  386. $list_params = compact('where', 'with', 'order');
  387. $list = CloudStockOrderBatchDelivery::listPage($list_params, false, true);
  388. if ($list === false) return $this->error(CloudStockOrderBatchDelivery::getStaticError());
  389. return $this->success('操作成功', $list);
  390. }
  391. }
  392. return $this->render($this->action->id);
  393. }
  394. public function actionDownloadDeliveryTemplate()
  395. {
  396. $csv = new CsvTool();
  397. $csv->filename = '批量发货模板';
  398. $csv->file_dirname = DownloadEnum::getTypeStorageDirMap(DownloadEnum::TYPE_ORDERS);
  399. $csv->export_mode = CsvTool::EXPORT_MODE_SYNC;
  400. $csv->header = ['订单号', '物流单号'];
  401. $csv->export(true);
  402. }
  403. public function actionBatchDeliveryError()
  404. {
  405. if (\Yii::$app->request->isAjax) {
  406. if (\Yii::$app->request->isGet) {
  407. $params = Yii::$app->request->get();
  408. $rules = [
  409. [['delivery_id'], 'required'],
  410. [['delivery_id'], 'integer'],
  411. ];
  412. $res = Yii::$app->services->validate->validate($params, $rules);
  413. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  414. // 条件组合
  415. $where = [['mall_id' => $this->mall_id],['batch_delivery_id' => $params['delivery_id']],['=', 'status', StatusEnum::ENABLED]];
  416. $order = "id desc";
  417. $select = "id,order_no,express_no,content";
  418. $list_params = compact('where', 'select', 'order');
  419. $list = CloudStockOrderBatchDeliveryError::listPage($list_params, false, true);
  420. if ($list === false) return $this->error(CloudStockOrderBatchDeliveryError::getStaticError());
  421. return $this->success('操作成功', $list);
  422. }
  423. }
  424. return $this->render($this->action->id);
  425. }
  426. public function actionExpressList()
  427. {
  428. $express_list = Express::getExpresses([], [], true, '*');
  429. return $this->success('成功', $express_list);
  430. }
  431. public function actionDelivery()
  432. {
  433. if (\Yii::$app->request->isAjax) {
  434. $params = Yii::$app->request->post();
  435. $params['send_status'] = CloudStockEnum::SEND_STATUS_1;
  436. unset($params['_csrf']);
  437. CloudStockAgentOrder::setData($this->mall_id, $params);
  438. return $this->success('发货成功');
  439. }
  440. return $this->render('invite', []);
  441. }
  442. public function actionViewLogistics(){
  443. try {
  444. $id = Yii::$app->request->get('id', '');
  445. $traces = CloudStockAgentOrder::viewLogistics($id,$this->mall_id);
  446. $is_true = 0;
  447. if(!empty($traces)) $is_true = 1;
  448. return $this->success('',['traces'=>$traces,'is_true'=>$is_true]);
  449. }catch (\Exception $e){
  450. return $this->error($e->getMessage());
  451. }
  452. }
  453. public function actionCommissionAndScoreList(){
  454. $params = Yii::$app->request->get();
  455. $wallet_type = 'commission';
  456. $level = UserLevel::find()->select("name,level")->where(['mall_id' => $this->mall_id,'status' => StatusEnum::ENABLED])->asArray()->all();
  457. $level_data = array_column($level,'name','level');
  458. $list = [];
  459. if(!empty($params['wallet_type'])) $wallet_type = $params['wallet_type'];
  460. $condition['select'] = 'id';
  461. $condition = [
  462. 'where'=>[
  463. ['source_table'=>['cloud_stock_agent_order']],
  464. ['source_table_id'=>$params['order_id']]
  465. ],
  466. ];
  467. CapitalLog::$capitalType = "{$wallet_type}";
  468. $temp_list = CapitalLog::getList($condition,0);
  469. if(!empty($temp_list)) $list = array_merge($list,$temp_list);
  470. $level = UserLevel::find()->select("name,level")->where(['mall_id' => $this->mall_id,'status' => StatusEnum::ENABLED])->asArray()->all();
  471. $level_data = array_column($level,'name','level');
  472. CapitalLog::$capitalType = "{$wallet_type}_frozen";
  473. $condition['where'][] = ['status'=>0];
  474. $frozen_list = CapitalLog::getList($condition,1);
  475. if(!empty($frozen_list)) $list = array_merge($list,$frozen_list);
  476. return $this->success('操作成功',['list'=>$list,'user_level'=>$level_data]);
  477. }
  478. /**
  479. * 编辑卖家备注
  480. *
  481. * @return void
  482. */
  483. public function actionModifySellerRemark()
  484. {
  485. $params = Yii::$app->request->post();
  486. $rules = [
  487. [['id'], 'required'],
  488. [['id'], 'integer'],
  489. [['seller_remark'], 'string', 'max' => 255],
  490. ];
  491. $res = Yii::$app->services->validate->validate($params, $rules);
  492. if ($res === false) {
  493. return $this->error(Yii::$app->services->validate->getErrorMessage());
  494. }
  495. $service = new CloudStockAgentOrderService(['mall_id' => $this->mall_id]);
  496. if (!$service->modifyRemark($params['id'], $params['seller_remark'], true)) {
  497. $this->error($service->getError());
  498. return;
  499. }
  500. $this->success();
  501. }
  502. /**
  503. * 修改收货地址
  504. *
  505. * @return void
  506. */
  507. public function actionModifyAddress()
  508. {
  509. $params = Yii::$app->request->post();
  510. $rules = [
  511. [['id', 'name', 'mobile', 'address', 'province_id', 'city_id', 'district_id'], 'required'],
  512. [['id','province_id','city_id','district_id'], 'integer'],
  513. [['mobile'], 'number'],
  514. [['name'], 'string', 'max' => 125],
  515. [['address'], 'string', 'max' => 128],
  516. ];
  517. $res = Yii::$app->services->validate->validate($params, $rules);
  518. if ($res === false) {
  519. return $this->error(Yii::$app->services->validate->getErrorMessage());
  520. }
  521. $service = new CloudStockAgentOrderService(['mall_id' => $this->mall_id]);
  522. if (!$service->modifyAddress($params)) {
  523. $this->error($service->getError());
  524. return;
  525. }
  526. $this->success();
  527. }
  528. /**
  529. * 取消自提
  530. *
  531. * @return void
  532. */
  533. public function actionCancelAgentOrder()
  534. {
  535. $params = Yii::$app->request->post();
  536. $rules = [
  537. [['id'], 'required'],
  538. [['id'], 'integer'],
  539. ];
  540. $res = Yii::$app->services->validate->validate($params, $rules);
  541. if ($res === false) {
  542. return $this->error(Yii::$app->services->validate->getErrorMessage());
  543. }
  544. $service = new CloudStockAgentOrderService(['mall_id' => $this->mall_id, 'admin_id' => $this->admin->id]);
  545. if (!$service->cancelAgentOrder($params['id'])) {
  546. $this->error($service->getError());
  547. return;
  548. }
  549. $this->success();
  550. }
  551. }