GoodsController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?php
  2. namespace addons\CloudStockTwo\backend\controllers;
  3. use addons\CloudStockTwo\common\models\CloudStockTwoAgent;
  4. use addons\CloudStockTwo\common\models\CloudStockTwoGoods;
  5. use addons\CloudStockTwo\common\models\CloudStockTwoLevel;
  6. use common\enums\StatusEnum;
  7. use common\models\goods\Goods;
  8. use Yii;
  9. /**
  10. * 默认控制器
  11. *
  12. * Class DefaultController
  13. * @package addons\CloudStockTwo\backend\controllers
  14. */
  15. class GoodsController extends BaseController
  16. {
  17. public $enableCsrfValidation = false;
  18. public function actionIndex()
  19. {
  20. if (\Yii::$app->request->isAjax) {
  21. $where[] = ['=', 'mall_id', $this->mall_id];
  22. $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]];
  23. $params = [
  24. 'where' => $where, 'order' => 'id desc'
  25. ];
  26. $page_data = CloudStockTwoGoods::listPage($params,false);
  27. $level_list = CloudStockTwoLevel::lists(['where' => [['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED]], 'order' => 'level asc', 'index' => 'level', 'select' => 'level,name']);
  28. array_unshift($level_list,[
  29. 'level' => 0,
  30. 'name' => '销售公司',
  31. ]);
  32. if (!empty($page_data['list'])) {
  33. $goods_id_arr = array_column($page_data['list'], 'goods_id');
  34. $goods_arr = Goods::lists(['where' => [['id' => $goods_id_arr]], 'index' => 'id']);
  35. foreach ($page_data['list'] as &$item) {
  36. $item['goods_name'] = $item['price'] = $item['cover_pic'] = '';
  37. if ($goods_arr[$item['goods_id']]) {
  38. $item['goods_name'] = $goods_arr[$item['goods_id']]['goods_name'];
  39. $item['price'] = $goods_arr[$item['goods_id']]['price'];
  40. $item['cover_pic'] = $goods_arr[$item['goods_id']]['cover_pic'];
  41. }
  42. $equal_level_list_arr = json_decode($item['equal_level_list'], true);
  43. $fill_level_list_arr = json_decode($item['fill_level_list'], true);
  44. $agent_price_arr = json_decode($item['agent_price'], true);
  45. $over_level_list_arr = json_decode($item['over_level_list'], true);
  46. if (!empty($over_level_list_arr)) $over_level_list_arr = array_column($over_level_list_arr, null, 'level');
  47. $over_level_list_arr_2 = [];
  48. if(!empty($item['over_level_list_2'])){
  49. $over_level_list_arr_2 = json_decode($item['over_level_list_2'], true);
  50. if (!empty($over_level_list_arr_2)) $over_level_list_arr_2 = array_column($over_level_list_arr_2, null, 'level');
  51. }
  52. if (!empty($fill_level_list_arr)) $fill_level_list_arr = array_column($fill_level_list_arr, null, 'level');
  53. $equal_level_list_rows = [];
  54. if (!empty($equal_level_list_arr)) {
  55. foreach ($equal_level_list_arr as $val) {
  56. $equal_level_list_rows[$val['level'] . $val['config_key']] = $val;
  57. }
  58. }
  59. if (!empty($agent_price_arr)) $agent_price_arr = array_column($agent_price_arr, null, 'level');
  60. list($agent_price,$over_level_list,$over_level_list_2,$fill_level_list,$equal_level_list) = $this->formatData($level_list,$agent_price_arr,$over_level_list_arr,$over_level_list_arr_2,$fill_level_list_arr,$equal_level_list_rows);
  61. if(!empty($over_level_list_2)){
  62. $over_level_list_2_arr = array_column($over_level_list_2, null, 'level');
  63. }
  64. foreach ($over_level_list as &$value){
  65. $value['price2'] = $over_level_list_2_arr[$value['level']]['price']??0;
  66. }
  67. $item['agent_price'] = $agent_price;
  68. $item['over_level_list'] = $over_level_list;
  69. $item['over_level_list_2'] = $over_level_list_2;
  70. $item['fill_level_list'] = $fill_level_list;
  71. $item['equal_level_list'] = $equal_level_list;
  72. }
  73. }
  74. return $this->success('操作成功', $page_data);
  75. }
  76. return $this->render($this->action->id, []);
  77. }
  78. public function actionEdit()
  79. {
  80. try {
  81. $request = Yii::$app->request;
  82. if ($request->isAjax) {
  83. if ($request->isGet) {
  84. $id = Yii::$app->request->get('id', '');
  85. $data = CloudStockTwoGoods::getOne([['id' => $id], ['mall_id' => $this->mall_id], ['status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]]], true);
  86. if (!empty($data)) {
  87. $level_list = CloudStockTwoLevel::lists(['where' => [['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED]], 'order' => 'level asc']);
  88. array_unshift($level_list,[
  89. 'level' => 0,
  90. 'name' => '销售公司',
  91. ]);
  92. $data['agent_price'] = json_decode($data['agent_price'], true);
  93. $agent_price_arr = array_column($data['agent_price'], null, 'level');
  94. $data['equal_level_list'] = json_decode($data['equal_level_list'], true);
  95. $equal_level_list_rows = [];
  96. foreach ($data['equal_level_list'] as $val) {
  97. $equal_level_list_rows[$val['level'] . $val['config_key']] = $val;
  98. }
  99. $data['fill_level_list'] = json_decode($data['fill_level_list'], true);
  100. $fill_level_list_arr = array_column($data['fill_level_list'], null, 'level');
  101. $data['over_level_list'] = json_decode($data['over_level_list'], true);
  102. $over_level_list_arr = array_column($data['over_level_list'], null, 'level');
  103. $over_level_list_arr_2 = [];
  104. if(!empty($data['over_level_list_2'])){
  105. $data['over_level_list_2'] = json_decode($data['over_level_list_2'], true);
  106. $over_level_list_arr_2 = array_column($data['over_level_list_2'], null, 'level');
  107. }
  108. list($agent_price,$over_level_list,$over_level_list_2,$fill_level_list,$equal_level_list) = $this->formatData($level_list,$agent_price_arr,$over_level_list_arr,$over_level_list_arr_2,$fill_level_list_arr,$equal_level_list_rows);
  109. $data['agent_price'] = $agent_price;
  110. $data['fill_level_list'] = $fill_level_list;
  111. $data['over_level_list'] = $over_level_list;
  112. $data['over_level_list_2'] = $over_level_list_2;
  113. $data['equal_level_list'] = $equal_level_list;
  114. }
  115. $goods = Goods::findOne(['id' => $data['goods_id']]);
  116. $data['goods_name'] = $goods['goods_name'];
  117. $data['cover_pic'] = $goods['cover_pic'];
  118. $data['price'] = $goods['price'];
  119. return $this->success('操作成功', $data);
  120. }
  121. if ($request->isPost) {
  122. $params = Yii::$app->request->post();
  123. $params['mall_id'] = $this->mall_id;
  124. $res = CloudStockTwoGoods::setData($params);
  125. if ($res === false) return $this->error(CloudStockTwoAgent::getStaticError());
  126. return $this->success('操作成功');
  127. }
  128. }
  129. } catch (\Exception $e) {
  130. return $this->error($e->getMessage(), []);
  131. }
  132. return $this->render('edit');
  133. }
  134. protected function formatData($level_list,$agent_price_arr,$over_level_list_arr,$over_level_list_arr_2,$fill_level_list_arr,$equal_level_list_rows){
  135. $agent_price = $over_level_list = $over_level_list_2 = $fill_level_list = $equal_level_list = [];
  136. foreach ($level_list as $val) {
  137. $row = [
  138. 'name' => $val['name'],
  139. 'level' => $val['level'],
  140. 'is_use' => 1,
  141. ];
  142. $row['price'] = $agent_price_arr[$val['level']]['price'] ?? 0;
  143. $agent_price[] = $row;
  144. $row['price'] = $over_level_list_arr[$val['level']]['price'] ?? 0;
  145. $over_level_list[] = $row;
  146. $row['price'] = $over_level_list_arr_2[$val['level']]['price'] ?? 0;
  147. $over_level_list_2[] = $row;
  148. $row['price'] = $fill_level_list_arr[$val['level']]['price'] ?? 0;
  149. $fill_level_list[] = $row;
  150. $equal_key = 'a_equal_level_one';
  151. $row = [
  152. 'level_name' => $val['name'] . '平一级',
  153. 'level' => $val['level'],
  154. 'config_key' => $equal_key,
  155. 'config_value' => $equal_level_list_rows[$val['level'] . $equal_key]['config_value'] ?? 0,
  156. 'mall_id' => $val['mall_id'],
  157. 'is_use' => 1,
  158. ];
  159. $equal_level_list[] = $row;
  160. $equal_key = 'a_equal_level_two';
  161. $row = [
  162. 'level_name' => $val['name'] . '平二级',
  163. 'level' => $val['level'],
  164. 'config_key' => $equal_key,
  165. 'config_value' => $equal_level_list_rows[$val['level'] . $equal_key]['config_value'] ?? 0,
  166. 'mall_id' => $val['mall_id'],
  167. 'is_use' => 1,
  168. ];
  169. $equal_level_list[] = $row;
  170. }
  171. return [$agent_price,$over_level_list,$over_level_list_2,$fill_level_list,$equal_level_list];
  172. }
  173. //不用验证权限
  174. public function actionGetSingleGoodsList()
  175. {
  176. $params = Yii::$app->request->get();
  177. $where[] = ['=', 'mall_id', $this->mall_id];
  178. $where[] = ['=', 'is_attr', 0];
  179. $where[] = ['=', 'is_on_sale', 1];
  180. $where[] = ['>', 'stock', 0];
  181. $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]];
  182. if(!empty($params['keyword'])) $where[] = ['like','goods_name',trim($params['keyword']),false];
  183. $params['where'] = $where;
  184. $params['order'] = 'id desc';
  185. $params['select'] = 'id,goods_name,cover_pic,price';
  186. $page_data = Goods::listPage($params, false);
  187. return $this->success('操作成功', $page_data);
  188. }
  189. public function actionPatch()
  190. {
  191. $request = Yii::$app->request;
  192. if ($request->isAjax) {
  193. if ($request->isPost) {
  194. $params = $request->post();
  195. CloudStockTwoGoods::patch($params);
  196. return $this->success('操作成功');
  197. }
  198. }
  199. }
  200. }