DiyController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. namespace addons\Store\backend\controllers;
  3. use addons\Store\common\enums\StoreEnum;
  4. use addons\Store\common\models\Store;
  5. use addons\Store\common\models\StoreGoods;
  6. use common\enums\StatusEnum;
  7. use common\models\common\AddonsMarketingSetting;
  8. class DiyController extends BaseController
  9. {
  10. public function actionIndex()
  11. {
  12. if (!\Yii::$app->request->isAjax) {
  13. return $this->render('/diy/index');
  14. }
  15. if (\Yii::$app->request->isGet) {
  16. $params['mall_id'] = $this->mall_id;
  17. $params['addons_name'] = StoreEnum::ADDONS_NAME;
  18. $params['status'] = StatusEnum::ENABLED;
  19. $res = AddonsMarketingSetting::findOne($params);
  20. if ($res == false) return $this->success('操作成功', []);
  21. $data = $res->toArray();
  22. $content = json_decode($data['content'], true);
  23. if (!empty($content)) {
  24. if (!empty($content[2]['data']['defaultTabs'])) {
  25. $content[2]['data']['defaultTabs'][] = [
  26. 'name' => 'addons',
  27. 'children' => ['application']
  28. ];
  29. }
  30. if (empty($content['3']['data']['listType'])) {
  31. $store_data = array_pop($content);
  32. $store_ids = [];
  33. if (!empty($store_data['data']['goods'])) {
  34. foreach ($store_data['data']['goods'] as $item) {
  35. $store_ids[] = $item['params']['store_id'];
  36. }
  37. $list = Store::lists(
  38. ['where' => [
  39. ['id' => $store_ids],
  40. ['status' => StatusEnum::ENABLED],
  41. ['mall_id' => $this->mall_id]
  42. ], 'select' => 'id']
  43. );
  44. $list = [];
  45. $store_id_arr = array_column($list, 'id'); //没有被删除的活动id
  46. $goods_data = [];
  47. foreach ($store_data['data']['goods'] as $item) {
  48. if (in_array($item['params']['id'], $store_id_arr)) $goods_data[] = $item;
  49. }
  50. $store_data['data']['goods'] = $goods_data;
  51. $content[] = $store_data;
  52. }
  53. }
  54. $data['content'] = json_encode($content);
  55. }
  56. return $this->success('操作成功', $data);
  57. } else {
  58. $params = \Yii::$app->request->post();
  59. $res = \Yii::$app->services->validate->validate($params, [
  60. [['content'], 'required'],
  61. ]);
  62. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  63. $params['mall_id'] = $this->mall_id;
  64. $params['addons_name'] = StoreEnum::ADDONS_NAME;
  65. $res = AddonsMarketingSetting::setData($params);
  66. if ($res == false) return $this->error(AddonsMarketingSetting::getStaticError());
  67. return $this->success('操作成功', []);
  68. }
  69. }
  70. public function actionStoreList()
  71. {
  72. if (!\Yii::$app->request->isGet) {
  73. return $this->error('请求方式错误');
  74. }
  75. $store_ids = \Yii::$app->request->get('store_ids');
  76. $query = Store::find()
  77. ->select('id,mall_id,user_id,store_name,logo_img,store_name as title,logo_img as img')
  78. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'check_status' => StoreEnum::CHECK_ADOPT])
  79. ->andWhere(['or', ['>', 'expire_time', time()], ['expire_time' => 0]]);
  80. if (!empty($store_ids)) {
  81. $query->andWhere(['id' => $store_ids]);
  82. }
  83. $stores = $query->asArray()->indexBy('id')->all();
  84. $data = [];
  85. foreach ($store_ids as $store_id){
  86. if(isset($stores[$store_id])){
  87. $data[]=$stores[$store_id];
  88. }
  89. }
  90. return $this->success('success', $data);
  91. }
  92. public function actionGoodList()
  93. {
  94. if (!\Yii::$app->request->isGet) {
  95. return $this->error('请求方式错误');
  96. }
  97. $good_ids = \Yii::$app->request->get('good_ids');
  98. $query = StoreGoods::find()
  99. ->alias('sg')
  100. ->join('INNER JOIN', Store::tableName() . ' as s', 'sg.store_id = s.id')
  101. ->select('sg.id,sg.goods_name,sg.sales_num,sg.cover_pic,sg.price,sg.original_price')
  102. ->where(['sg.mall_id' => $this->mall_id, 'sg.status' => StatusEnum::ENABLED, 'sg.check_status' => StoreEnum::CHECK_ADOPT, 'sg.is_on_sale' => 1, 's.status' => StatusEnum::ENABLED, 's.check_status' => StoreEnum::CHECK_ADOPT])
  103. ->andWhere(['or', ['>', 'expire_time', time()], ['expire_time' => 0]]);
  104. if (!empty($good_ids)) {
  105. $query->andWhere(['sg.id' => $good_ids]);
  106. }
  107. $goods = $query->asArray()->all();
  108. if (!empty($goods)) {
  109. foreach ($goods as &$good) {
  110. $good['img'] = $good['cover_pic'];
  111. $good['discount'] = bcsub($good['original_price'],$good['price'],2);
  112. if($good['discount']<0) $good['discount']= 0;
  113. }
  114. }
  115. return $this->success('success', $goods);
  116. }
  117. }