WxShopOrderController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. <?php
  2. namespace App\Admin\Controllers\Shop;
  3. use App\Admin\Actions\Grid\ShopOrderSupplyAction;
  4. use App\Admin\Exports\CommonAdminCollectExport;
  5. use App\Admin\Repositories\Shop\WxShopOrder;
  6. use App\Admin\Actions\Grid\OrderAction;
  7. use App\Jobs\Shop\ShopOrderDeliverInfoManage;
  8. use App\Wen\Utils\Settings;
  9. use Dcat\Admin\Admin;
  10. use Dcat\Admin\Form;
  11. use Dcat\Admin\Grid;
  12. use Dcat\Admin\Show;
  13. use Dcat\Admin\Http\Controllers\AdminController;
  14. class WxShopOrderController extends AdminController
  15. {
  16. /**
  17. * Make a grid builder.
  18. *
  19. * @return Grid
  20. */
  21. protected function grid()
  22. {
  23. $app_coin_name = Settings::get('app_coin_name', '硬币');
  24. $admin_user = Admin::user();
  25. return Grid::make(new WxShopOrder(['user']), function (Grid $grid) use ($app_coin_name, $admin_user){
  26. if(!$admin_user->isAdministrator()){
  27. if(_empty_($admin_user->uid)){
  28. $grid->model()->where('id', '<', -1);
  29. }else{
  30. $grid->model()->where('seller_user_id', $admin_user->uid);
  31. }
  32. }
  33. $grid->simplePaginate();
  34. $grid->quickSearch(['id', 'order_id', 'goods.name', 'user_id'])->placeholder('搜索记录id,订单ID,商品名称,用户id...')->width(70);
  35. $grid->model()->where('order_from', 0)->orderBy('id', 'desc');
  36. $grid->column('id')->sortable();
  37. $grid->column('order_id');
  38. $grid->column('user', '用户')->display(function ($v){
  39. if(_empty_($v)){
  40. return '';
  41. }
  42. return '<a href="'.admin_url('/users?id='.$v->id).'" target="_blank"><img src="'.$v->user_avatar.'" style="width: 30px; height: 30px;margin-right: 10px; border-radius: 50%;">'.$v->user_name. '</a>';
  43. });
  44. $grid->column('order_googs', '购物袋商品')->display(function (){
  45. return '<a href="'.admin_url('/shop/orderGoods?id=&order_id='.$this->id).'" target="_blank">查看商品</a>';
  46. });
  47. $grid->column('seller', '商家')->display(function ($v){
  48. if(_empty_($v)){
  49. return '系统自营';
  50. }
  51. return '<a href="'.admin_url('/users?id='.$v->id).'" target="_blank"><img src="'.$v->user_avatar.'" style="width: 30px; height: 30px;margin-right: 10px; border-radius: 50%;">'.$v->user_name. '</a>';
  52. });
  53. $grid->column('goods_amount_total', '商品总价')->display(function ($v) use ($app_coin_name){
  54. $str = '';
  55. if($this->goods_amount > 0){
  56. $str .= '¥'.$this->goods_amount;
  57. }
  58. if($this->goods_amount > 0 && $this->goods_amount_coin > 0){
  59. $str .= '+';
  60. }
  61. if($this->goods_amount_coin > 0){
  62. $str .= $app_coin_name.$this->goods_amount_coin;
  63. }
  64. return $str;
  65. });
  66. $grid->column('discounts_amount_total', '优惠金额')->display(function ($v) use ($app_coin_name){
  67. $str = '';
  68. if($this->discounts_amount > 0){
  69. $str .= '¥'.$this->discounts_amount;
  70. }
  71. if($this->discounts_amount > 0 && $this->discounts_amount_coin > 0){
  72. $str .= '+';
  73. }
  74. if($this->discounts_amount_coin > 0){
  75. $str .= $app_coin_name.$this->discounts_amount_coin;
  76. }
  77. return $str;
  78. });
  79. $grid->column('order_amount_total', '订单总额')->display(function ($v) use ($app_coin_name){
  80. if($this->status == 9){
  81. ShopOrderDeliverInfoManage::dispatch('virtual-upload', $this->id, null);
  82. }else if($this->status == 10){
  83. ShopOrderDeliverInfoManage::dispatch('virtual-query', $this->id, null);
  84. }
  85. $str = '';
  86. if($this->order_amount > 0){
  87. $str .= '¥'.$this->order_amount;
  88. }
  89. if($this->order_amount > 0 && $this->order_amount_coin > 0){
  90. $str .= '+';
  91. }
  92. if($this->order_amount_coin > 0){
  93. $str .= $app_coin_name.$this->order_amount_coin;
  94. }
  95. return $str;
  96. });
  97. $grid->column('payed', '支付金额');
  98. $grid->column('pay_way', '支付方式');
  99. // $grid->column('serial_number');
  100. $grid->column('pay_status')->using([1 => '未付款', 2 => '已付款', 3 => '已退款'])->label([
  101. 1 => 'gray',
  102. 2 => 'green',
  103. 3 => 'red'
  104. ]);
  105. $grid->column('status', '状态')->using([0 => '正常', 1 => '未发货', 2 => '已发货', 3 => '确认收货', 4 => '已退货', 5 => '取消', 6 => '用户删除', 7=>'退款中', 8=>'自提发货待确定', 9=>'虚拟发货待同步', 10=>'虚拟发货待确定'])->label([
  106. 0 => 'blue',
  107. 1 => 'red',
  108. 2 => 'primary',
  109. 3 => 'green',
  110. 4 => 'orange2',
  111. 5 => 'pink',
  112. 6 => 'gray',
  113. 7 => 'red',
  114. 8 => 'gray'
  115. ]);
  116. $grid->column('cost_freight', '配送费');
  117. // $grid->column('adds_name');
  118. // $grid->column('adds_mobile');
  119. // $grid->column('address');
  120. // $grid->column('express');
  121. // $grid->column('express_no');
  122. // $grid->column('remark');
  123. $grid->column('user_remark')->limit(20);
  124. // $grid->column('payment_time');
  125. // $grid->column('ship_at');
  126. // $grid->column('confirm_time');
  127. $grid->column('created_at')->sortable();
  128. // $grid->column('updated_at')->sortable();
  129. $grid->filter(function (Grid\Filter $filter) {
  130. $filter->equal('id');
  131. $filter->equal('order_id');
  132. $filter->where('order_googs', function ($query) {
  133. $query->whereHas('goods', function ($query) {
  134. $query->where('name', 'like', "%{$this->input}%");
  135. });
  136. }, '包含商品名称');
  137. $filter->equal('user_id')->select()->ajax('select/users');
  138. $filter->equal('pay_status')->multipleSelect([1 => '未付款', 2 => '已付款', 3 => '已退款']);
  139. $filter->equal('status')->multipleSelect([0 => '正常', 1 => '未发货', 2 => '已发货', 3 => '确认收货', 4 => '已退货', 5 => '取消', 6 => '用户删除', 7=>'退款中', 8=>'自提发货待确定', 9=>'虚拟发货待同步', 10=>'虚拟发货待确定']);
  140. $filter->between('goods_amount');
  141. $filter->between('discounts_amount');
  142. $filter->between('order_amount');
  143. $filter->between('payed');
  144. $filter->between('created_at')->datetime();
  145. $filter->between('payment_time')->datetime();
  146. $filter->between('confirm_time')->datetime();
  147. });
  148. $grid->actions(function (Grid\Displayers\Actions $actions) {
  149. $actions->append((new OrderAction())->setKey($this->id));
  150. });
  151. $grid->disableCreateButton();
  152. // $grid->disableActions();
  153. // 禁用编辑按钮
  154. $grid->disableEditButton();
  155. $grid->disableDeleteButton();
  156. $grid->batchActions(function ($batch) {
  157. $batch->add(new ShopOrderSupplyAction());
  158. });
  159. $grid->export(new CommonAdminCollectExport('商品订单数据', 'WxShopOrder'));
  160. });
  161. }
  162. /**
  163. * Make a show builder.
  164. *
  165. * @param mixed $id
  166. *
  167. * @return Show
  168. */
  169. protected function detail($id)
  170. {
  171. return Show::make($id, new WxShopOrder(), function (Show $show) {
  172. $show->field('id');
  173. $show->field('order_id');
  174. $show->field('user_id');
  175. $show->field('goods_amount');
  176. $show->field('discounts_amount');
  177. $show->field('order_amount');
  178. $show->field('payed');
  179. $show->field('serial_number');
  180. $show->field('pay_status');
  181. $show->field('status');
  182. $show->field('cost_freight');
  183. $show->field('adds_id');
  184. $show->field('adds_name');
  185. $show->field('adds_mobile');
  186. $show->field('address');
  187. $show->field('express');
  188. $show->field('express_no');
  189. $show->field('remark');
  190. $show->field('user_remark');
  191. $show->field('payment_time');
  192. $show->field('ship_at');
  193. $show->field('confirm_time');
  194. $show->field('created_at');
  195. $show->field('updated_at');
  196. $show->disableEditButton();
  197. });
  198. }
  199. /**
  200. * Make a form builder.
  201. *
  202. * @return Form
  203. */
  204. protected function form()
  205. {
  206. return Form::make(new WxShopOrder(), function (Form $form) {
  207. $form->display('id');
  208. $form->text('order_id');
  209. $form->text('user_id');
  210. $form->text('goods_amount');
  211. $form->text('discounts_amount');
  212. $form->text('order_amount');
  213. $form->text('payed');
  214. $form->text('serial_number');
  215. $form->text('pay_status');
  216. $form->text('status');
  217. $form->text('cost_freight');
  218. $form->text('adds_id');
  219. $form->text('adds_name');
  220. $form->text('adds_mobile');
  221. $form->text('address');
  222. $form->text('express');
  223. $form->text('express_no');
  224. $form->text('remark');
  225. $form->text('user_remark');
  226. $form->text('payment_time');
  227. $form->text('ship_at');
  228. $form->text('confirm_time');
  229. $form->deleting(function (Form $form){
  230. global $__MINI_GLOBAL_TENANT_ID__;
  231. if($__MINI_GLOBAL_TENANT_ID__ > 0){
  232. return $form->response()->error('权限不足,不可以删除其他分站对象');
  233. }
  234. });
  235. });
  236. }
  237. }