AgentGoodsController.php 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: wniu
  5. * Date: 2022/2/28
  6. * Time: 5:46 下午
  7. */
  8. namespace addons\CloudStockTwo\backend\controllers;
  9. use addons\CloudStockTwo\common\models\CloudStockTwoAgent;
  10. use addons\CloudStockTwo\common\models\CloudStockTwoAgentGoods;
  11. use addons\CloudStockTwo\common\models\CloudStockTwoFillOrder;
  12. use addons\CloudStockTwo\common\models\CloudStockTwoGoods;
  13. use common\enums\StatusEnum;
  14. use common\models\goods\Goods;
  15. use Yii;
  16. class AgentGoodsController extends BaseController
  17. {
  18. public $enableCsrfValidation = false;
  19. public function actionIndexBak()
  20. {
  21. if (\Yii::$app->request->isAjax) {
  22. $get = Yii::$app->request->get();
  23. $stock_agent = CloudStockTwoAgent::getOne([['user_id' => $get['user_id']]]);
  24. if (!$stock_agent) {
  25. return $this->error('没有该代理商');
  26. }
  27. $wheres[] = ['mall_id' => $this->mall_id, 'user_id' => $get['user_id'], 'status' => StatusEnum::ENABLED];
  28. $params = [
  29. 'select' => 'id,mall_id,user_id,goods_id,num as agent_stock,created_at',
  30. 'where' => $wheres,
  31. 'order' => 'created_at desc',
  32. 'page' => $get['page'] ?? 1,
  33. 'limit' => $get['limit'] ?? $this->pageSize,
  34. ];
  35. $list = CloudStockTwoAgentGoods::listPage($params);
  36. if (empty($list['list'])) {
  37. if (!is_array($list['list'])) return $this->error(CloudStockTwoAgentGoods::getStaticError());
  38. return $this->success('success', $list);
  39. }
  40. $good_ids = array_column($list['list'], 'goods_id');
  41. $cloud_stock_goods = CloudStockTwoGoods::find()
  42. ->select('goods_id,agent_price')
  43. ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'goods_id' => $good_ids])
  44. ->asArray()
  45. ->indexBy('goods_id')
  46. ->all();
  47. $mall_goods = Goods::find()
  48. ->select('id,goods_name,price,cover_pic')
  49. ->where(['mall_id' => $this->mall_id,'id' => $good_ids])
  50. ->asArray()
  51. ->indexBy('id')
  52. ->all();
  53. $agent_goods = CloudStockTwoAgentGoods::find()
  54. ->select('goods_id,num')
  55. ->where(['user_id' => $get['user_id'], 'status' => StatusEnum::ENABLED, 'goods_id' => $good_ids])
  56. ->asArray()
  57. ->indexBy('goods_id')
  58. ->all();
  59. foreach ($list['list'] as $lk => &$lv) {
  60. $could_goods = $cloud_stock_goods[$lv['goods_id']] ?? [];
  61. if (empty($could_goods)) {
  62. unset($list['list'][$lk]);
  63. continue;
  64. }
  65. // dd($lv, $could_goods, $stock_agent->level);
  66. $lv['agent_goods_num'] = $agent_goods[$lv['goods_id']] ? $agent_goods[$lv['goods_id']]['num'] : 0;
  67. $lv['level_agent_price'] = CloudStockTwoAgentGoods::getGoodsAgentPrice($could_goods, $stock_agent->level);
  68. $mall_good = $mall_goods[$lv['goods_id']] ?? [];
  69. $price = $mall_good['price'] ?? 0;
  70. $lv['goods_name'] = $mall_good['goods_name'] ?? '';
  71. $lv['cover_pic'] = $mall_good['cover_pic'] ?? '';
  72. // 平台价格,零售价
  73. $lv['goods_price'] = $price;
  74. $lv['profit'] = $price - $lv['level_agent_price'];
  75. }
  76. $list['list'] = array_values($list['list']);
  77. return $this->success('success', $list);
  78. }
  79. return $this->render('index');
  80. }
  81. public function actionIndex()
  82. {
  83. if (\Yii::$app->request->isAjax) {
  84. $page = \Yii::$app->request->get('page', 1);
  85. $limit = \Yii::$app->request->get('limit', $this->pageSize);
  86. $get = Yii::$app->request->get();
  87. $stock_agent = CloudStockTwoAgent::getOne([['user_id' => $get['user_id']]]);
  88. if (!$stock_agent) {
  89. return $this->error('没有该代理商');
  90. }
  91. $wheres[] = ['mall_id' => $this->mall_id];
  92. $params = [
  93. 'select' => 'mall_id,goods_id,agent_price',
  94. 'where' => $wheres,
  95. 'order' => 'created_at desc',
  96. 'page' => $page,
  97. 'limit' => $limit,
  98. ];
  99. $cloud_stock_goods = CloudStockTwoGoods::listPage($params);
  100. if (false === $cloud_stock_goods) {
  101. return $this->error(CloudStockTwoGoods::getStaticError());
  102. }
  103. if (empty($cloud_stock_goods['list'])) {
  104. return $this->success('success', $cloud_stock_goods);
  105. }
  106. $good_ids = array_column($cloud_stock_goods['list'], 'goods_id');
  107. $mall_goods = Goods::find()
  108. ->select('id,goods_name,price,cover_pic')
  109. ->where(['mall_id' => $this->mall_id,'id' => $good_ids])
  110. ->asArray()
  111. ->indexBy('id')
  112. ->all();
  113. $agent_goods = CloudStockTwoAgentGoods::find()
  114. ->select('goods_id,num,created_at')
  115. ->where(['user_id' => $get['user_id'], 'status' => StatusEnum::ENABLED, 'goods_id' => $good_ids])
  116. ->asArray()
  117. ->indexBy('goods_id')
  118. ->all();
  119. foreach ($cloud_stock_goods['list'] as $lk => &$lv) {
  120. $mall_good = $mall_goods[$lv['goods_id']] ?? [];
  121. $agent_good = $agent_goods[$lv['goods_id']] ?? [];
  122. $lv['user_id'] = $get['user_id'];
  123. $lv['level_agent_price'] = CloudStockTwoAgentGoods::getGoodsAgentPrice($lv, $stock_agent->level);
  124. $price = $mall_good['price'] ?? 0;
  125. $lv['goods_name'] = $mall_good['goods_name'] ?? '';
  126. $lv['cover_pic'] = $mall_good['cover_pic'] ?? '';
  127. // 平台价格,零售价
  128. $lv['goods_price'] = $price;
  129. $lv['profit'] = $price - $lv['level_agent_price'];
  130. if (!empty($agent_good)) {
  131. $lv['agent_goods_num'] = $agent_good['num'] ?? 0;
  132. $lv['created_at'] = $agent_good['created_at'] ?? 0;
  133. } else {
  134. $lv['agent_goods_num'] = 0;
  135. $lv['created_at'] = 0;
  136. }
  137. }
  138. return $this->success('success', $cloud_stock_goods);
  139. }
  140. return $this->render('index');
  141. }
  142. }