StoreVoucherOrderController.php 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <?php
  2. namespace addons\Happiness\backend\controllers;
  3. use addons\Happiness\common\enums\HappinessPensionEnum;
  4. use addons\Happiness\common\enums\HappinessVoucherEnum;
  5. use addons\Happiness\common\models\HappinessPension;
  6. use addons\Happiness\common\models\HappinessStore;
  7. use addons\Happiness\common\models\HappinessVoucherExpress;
  8. use addons\Happiness\common\models\HappinessVoucherExpressGoods;
  9. use addons\Happiness\common\models\HappinessVoucherGoods;
  10. use addons\Happiness\common\models\HappinessVoucherOrder;
  11. use addons\Happiness\common\service\VoucherService;
  12. use common\enums\StatusEnum;
  13. use common\models\goods\Goods;
  14. use common\models\goods\GoodsAttr;
  15. use Yii;
  16. class StoreVoucherOrderController extends BaseController
  17. {
  18. public function actionIndex()
  19. {
  20. if(Yii::$app->request->isAjax)
  21. {
  22. if (\Yii::$app->request->isGet)
  23. {
  24. $page = \Yii::$app->request->get('page', 1);
  25. $limit = \Yii::$app->request->get('limit', $this->pageSize);
  26. $store_keyword=\Yii::$app->request->get('store_keyword');
  27. $start_time=\Yii::$app->request->get('start_time');
  28. $end_time=\Yii::$app->request->get('end_time');
  29. $wheres = [];
  30. $wheres[]=['=', 'status', StatusEnum::ENABLED];
  31. $wheres[]=['=', 'mall_id', $this->mall_id];
  32. if(!empty($store_keyword))
  33. {
  34. $store_where=[
  35. 'or',
  36. ['=', 'id', $store_keyword],
  37. ['like', 'store_name', $store_keyword]
  38. ];
  39. $store_ids=HappinessStore::find()->where(['status' => StatusEnum::ENABLED,'mall_id' =>
  40. $this->mall_id])->andWhere($store_where)
  41. ->select('id')->column()??[];
  42. $wheres[] = ['in','store_id' ,$store_ids];
  43. }
  44. if(!empty($start_time))
  45. {
  46. $wheres[] = ['>=','created_at', strtotime($start_time)];
  47. }
  48. if(!empty($end_time))
  49. {
  50. $wheres[] = ['<=','created_at', strtotime($end_time)+86400];
  51. }
  52. $params = [
  53. 'select' => '*',
  54. 'where' => $wheres,
  55. 'order' => 'created_at desc',
  56. 'page' => $page,
  57. 'limit' => $limit,
  58. 'with' => [
  59. 'store'=>function ($query) {
  60. $query->select('id,store_name');
  61. }
  62. ],
  63. ];
  64. $list = HappinessVoucherOrder::listPage($params);
  65. if (false === $list) {
  66. return $this->error(HappinessVoucherOrder::getStaticError());
  67. }
  68. if(!empty($list['list']))
  69. {
  70. foreach ($list['list'] as &$item)
  71. {
  72. $item['order_status_text'] = HappinessVoucherEnum::getOrderStatusMap()[$item['order_status']];
  73. $item['order_no']=$item['order_no'].' ';
  74. }
  75. }
  76. return $this->success('操作成功',$list);
  77. }
  78. }
  79. return $this->render('index');
  80. }
  81. public function actionSwitchStatus()
  82. {
  83. $id = Yii::$app->request->post('id');
  84. $status = Yii::$app->request->post('status');
  85. $model = HappinessVoucherOrder::findOne(['id' => $id,'mall_id' => $this->mall_id]);
  86. $remark = Yii::$app->request->post('remark');
  87. if (!$model) {
  88. return $this->error('数据不存在');
  89. }
  90. if ($model->order_status==HappinessVoucherEnum::ORDER_STATUS_IS_AUDIT) {
  91. return $this->error('已审核过了,禁止操作');
  92. }
  93. if ($model->order_status!=HappinessVoucherEnum::ORDER_STATUS_NO_AUDIT) {
  94. return $this->error('非待审核状态,禁止操作');
  95. }
  96. if($status==0)
  97. {
  98. $order_status=HappinessVoucherEnum::ORDER_STATUS_REFUSE;
  99. }
  100. else
  101. {
  102. $order_status=HappinessVoucherEnum::ORDER_STATUS_IS_AUDIT;
  103. }
  104. $model->order_status = $order_status;
  105. $model->remark = $remark;
  106. if ($model->save()) {
  107. $service=new VoucherService();
  108. if($order_status==HappinessVoucherEnum::ORDER_STATUS_REFUSE)
  109. {
  110. $res=$service->returnVoucher($model->id);
  111. if($res===false)
  112. {
  113. return $this->error($service->getError());
  114. }
  115. }
  116. return $this->success('操作成功');
  117. }
  118. return $this->error('操作失败');
  119. }
  120. //发货
  121. public function actionSend()
  122. {
  123. if(Yii::$app->request->isAjax)
  124. {
  125. if (\Yii::$app->request->isPost)
  126. {
  127. $post=Yii::$app->request->post();
  128. $service=new VoucherService(['mall_id' => $this->mall_id]);
  129. $res=$service->send($post);
  130. if($res===false)
  131. {
  132. return $this->error($service->getError());
  133. }
  134. return $this->success('操作成功');
  135. }
  136. if (\Yii::$app->request->isGet)
  137. {
  138. $id = Yii::$app->request->get('id');
  139. $model = HappinessVoucherOrder::findOne(['id' => $id,'mall_id' => $this->mall_id]);
  140. }
  141. }
  142. }
  143. public function actionExpress()
  144. {
  145. if(Yii::$app->request->isAjax)
  146. {
  147. if (\Yii::$app->request->isGet)
  148. {
  149. $id = Yii::$app->request->get('id');
  150. $list = HappinessVoucherExpress::find()->with(['goods'])->where(['order_id' => $id,'mall_id' =>
  151. $this->mall_id])
  152. ->asArray()->all();
  153. $goods_ids=[];
  154. $goods_attr_ids=[];
  155. foreach ($list as &$item)
  156. {
  157. foreach ($item['goods'] as &$goods)
  158. {
  159. $goods_ids[]=$goods['goods_id'];
  160. $goods_attr_ids[]=$goods['attr_id'];
  161. }
  162. }
  163. $goods_list=Goods::find()->where(['id' => $goods_ids,'mall_id' =>
  164. $this->mall_id])
  165. ->asArray()
  166. ->indexBy('id')
  167. ->all();
  168. $goods_attr_list=GoodsAttr::find()->where(['id' => $goods_attr_ids])
  169. ->asArray()
  170. ->indexBy('id')
  171. ->all();
  172. $voucherGoods=HappinessVoucherGoods::find()->where(['order_id' => $id,'mall_id' =>
  173. $this->mall_id])
  174. ->asArray()
  175. ->indexBy('attr_id')
  176. ->all();
  177. foreach ($list as &$item)
  178. {
  179. foreach ($item['goods'] as &$goods)
  180. {
  181. $goods['buy_num']=$voucherGoods[$goods['attr_id']]['num'];
  182. $goods['goods_name']=$goods_list[$goods['goods_id']]['goods_name'];
  183. $goods['goods_attr_name']=$goods_attr_list[$goods['attr_id']]['name'];
  184. $goods['cover_pic']=empty($goods_attr_list[$goods['attr_id']]['pic_url'])?$goods_list[$goods['goods_id']]['cover_pic']:$goods_attr_list[$goods['attr_id']]['pic_url'];
  185. }
  186. }
  187. return $this->success('操作成功',$list);
  188. }
  189. }
  190. }
  191. public function actionDetail()
  192. {
  193. if(Yii::$app->request->isAjax)
  194. {
  195. if (\Yii::$app->request->isGet)
  196. {
  197. $id = Yii::$app->request->get('id');
  198. $model = HappinessVoucherOrder::find()->with(['goods'])->where(['id' => $id,'mall_id' =>
  199. $this->mall_id])
  200. ->asArray()
  201. ->one();
  202. if(!$model)
  203. {
  204. return $this->error('数据不存在');
  205. }
  206. $goods_attr_ids=array_column($model['goods'],'attr_id');
  207. $goods_ids=array_column($model['goods'],'goods_id');
  208. $goods_list=Goods::find()->where(['id' => $goods_ids,'mall_id' =>
  209. $this->mall_id])
  210. ->asArray()
  211. ->indexBy('id')
  212. ->all();
  213. $goods_attr_list=GoodsAttr::find()->where(['id' => $goods_attr_ids])
  214. ->asArray()
  215. ->indexBy('id')
  216. ->all();
  217. foreach ($model['goods'] as &$item)
  218. {
  219. $item['goods_name']=$goods_list[$item['goods_id']]['goods_name'];
  220. $item['goods_attr_name']=$goods_attr_list[$item['attr_id']]['name'];
  221. $item['cover_pic']=empty($goods_attr_list[$item['attr_id']]['pic_url'])?$goods_list[$item['goods_id']]['cover_pic']:$goods_attr_list[$item['attr_id']]['pic_url'];
  222. }
  223. return $this->success('操作成功',$model);
  224. }
  225. }
  226. }
  227. }