BonusLevelController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <?php
  2. namespace addons\CloudStock\backend\controllers;
  3. use addons\CloudStock\common\models\CloudStockBonusPoolLevel;
  4. use addons\CloudStock\common\models\CloudStockBonusPoolLog;
  5. use addons\CloudStock\common\models\CloudStockLevel;
  6. use common\enums\StatusEnum;
  7. use common\models\goods\Goods;
  8. use Yii;
  9. use yii\helpers\Json;
  10. /**
  11. * 默认控制器
  12. *
  13. * Class DefaultController
  14. * @package addons\CloudStock\backend\controllers
  15. */
  16. class BonusLevelController extends BaseController
  17. {
  18. public $enableCsrfValidation = false;
  19. public function actionIndex()
  20. {
  21. if (\Yii::$app->request->isAjax) {
  22. $where[] = ['=', 'mall_id', $this->mall_id];
  23. $where[] = ['in', 'status', [StatusEnum::DISABLED, StatusEnum::ENABLED]];
  24. $params = [
  25. 'where' => $where, 'order' => 'level desc'
  26. ];
  27. $page_data = CloudStockBonusPoolLevel::listPage($params, false);
  28. if($page_data==false) return $this->error(CloudStockBonusPoolLevel::getStaticError());
  29. return $this->success('操作成功', $page_data);
  30. }
  31. return $this->render($this->action->id, []);
  32. }
  33. public function actionEdit()
  34. {
  35. try {
  36. $request = Yii::$app->request;
  37. if ($request->isAjax) {
  38. if ($request->isGet) {
  39. $id = Yii::$app->request->get('id', '');
  40. $data = CloudStockBonusPoolLevel::getOne([['id' => $id], ['mall_id' => $this->mall_id], ['status' => [StatusEnum::DISABLED, StatusEnum::ENABLED]]], true);
  41. if (!empty($data)) {
  42. $data['checked_condition_values'] = json_decode($data['checked_condition_values'], true);
  43. $data['checked_condition_keys'] = json_decode($data['checked_condition_keys'], true);
  44. $data['cloud_stock_level'] = json_decode($data['cloud_stock_level'], true);
  45. $checked_condition_values = array_column($data['checked_condition_values'],'key');
  46. if(!isset($checked_condition_values[4])){
  47. $data['checked_condition_values'][]=['key'=>4,'value'=>['direct_people'=>'','direct_level'=>''],];
  48. }
  49. // 解析被选中的商品
  50. $goods_setting = Json::decode($data['goods_setting'],true) ?? [];
  51. if ($goods_setting) {
  52. $goods_ids = array_column($goods_setting, 'goods_id');
  53. $goods_list = Goods::lists(['where'=>[['id'=>$goods_ids]],'select'=>'id,cover_pic,goods_name as name,price','index'=>'id']);
  54. foreach ($goods_setting as &$item) {
  55. if (empty($item['is_percent'])) $item['is_percent'] = 0;
  56. $item['goods'] = $goods_list[$item['goods_id']] ?? [];
  57. }
  58. }
  59. $data['goods_setting'] = $goods_setting;
  60. $levels = CloudStockBonusPoolLevel::lists([
  61. 'where'=>[
  62. ['mall_id' => $this->mall_id],
  63. ['status' => StatusEnum::ENABLED],
  64. ['<=','level',$data['level']]
  65. ],
  66. 'select'=>'level,name'
  67. ]);
  68. $data['levels'] = $levels;
  69. }
  70. return $this->success('操作成功', $data);
  71. }
  72. if ($request->isPost) {
  73. $params = Yii::$app->request->post();
  74. $res = Yii::$app->services->validate->validate($params, [
  75. [['level'], 'required','message'=>'请选择权重'],
  76. [['name'], 'required','message'=>'级名称不能为空'],
  77. [['goods_setting'], 'required','message'=>'计入分红池商品不能为空'],
  78. [['id', 'status', 'condition_type', 'upgrade_type_condition', 'checked_condition_keys','cloud_stock_level', 'checked_condition_values','goods_setting'], 'safe']
  79. ]);
  80. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  81. $params['mall_id'] = $this->mall_id;
  82. foreach ($params['goods_setting'] as $key => $item) {
  83. unset($params['goods_setting'][$key]['goods']);
  84. }
  85. $params['goods_setting'] = Json::encode($params['goods_setting']);
  86. $params['cloud_stock_level'] = Json::encode($params['cloud_stock_level']);
  87. $res = CloudStockBonusPoolLevel::setData($params);
  88. if ($res === false) return $this->error(CloudStockBonusPoolLevel::getStaticError());
  89. return $this->success('操作成功');
  90. }
  91. }
  92. } catch (\Exception $e) {
  93. return $this->error($e->getMessage(), []);
  94. }
  95. return $this->render('edit');
  96. }
  97. public function actionUpdateStatus()
  98. {
  99. $params = Yii::$app->request->post();
  100. if (!in_array($params['status'], [StatusEnum::ENABLED, StatusEnum::DISABLED])) {
  101. return $this->error('参数不对');
  102. }
  103. $params['mall_id'] = $this->mall_id;
  104. $res = CloudStockBonusPoolLevel::setData($params);
  105. if ($res === false) return $this->error(CloudStockBonusPoolLevel::getStaticError());
  106. return $this->success('操作成功');
  107. }
  108. public function actionDel()
  109. {
  110. $params = Yii::$app->request->post();
  111. $params['mall_id'] = $this->mall_id;
  112. $params['status'] = StatusEnum::DELETE;
  113. $res = CloudStockBonusPoolLevel::setData($params);
  114. if ($res === false) return $this->error(CloudStockBonusPoolLevel::getStaticError());
  115. return $this->success('操作成功');
  116. }
  117. //不用验证权限
  118. public function actionGetCanChooseLevelList()
  119. {
  120. $params = Yii::$app->request->get();
  121. $level = isset($params['level']) ? $params['level'] : null;
  122. $can_choose_list = CloudStockBonusPoolLevel::find()->select('level')->where([
  123. 'mall_id' => $this->mall_id,
  124. 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED],
  125. ])->column();
  126. $new_list = [];
  127. for ($i = 1; $i <= 10; $i++) {
  128. $can_choose = 1;
  129. //已经存在的等级为false
  130. if (in_array($i, $can_choose_list)) $can_choose = 0;
  131. //有指定等级,比指定等级小的等级为false
  132. if ($level && $i < $level) $can_choose = 0;
  133. //有指定等级,指定等级为true
  134. if ($level && $i == $level) $can_choose = 1;
  135. $new_list[] = [
  136. 'name' => "等级" . $i,
  137. 'level' => $i,
  138. 'is_can_choose' => $can_choose,
  139. ];
  140. }
  141. return $this->success('操作成功', $new_list);
  142. }
  143. //不用验证权限
  144. public function actionGetLessLevelList()
  145. {
  146. $params = Yii::$app->request->get();
  147. $level = isset($params['level']) ? $params['level'] : 10;
  148. $use_list = CloudStockBonusPoolLevel::find()->select('level')->where([
  149. 'mall_id' => $this->mall_id,
  150. 'status' => [StatusEnum::ENABLED, StatusEnum::DISABLED],
  151. ])->column();
  152. $new_list = [];
  153. $list = CloudStockBonusPoolLevel::lists(
  154. [
  155. 'where' => [
  156. ['mall_id' => $this->mall_id,],
  157. ['status' => [StatusEnum::ENABLED, StatusEnum::DISABLED]],
  158. ],
  159. 'select' => 'name,level',
  160. 'index' => 'level'
  161. ]
  162. );
  163. for ($i = 1; $i <= 10; $i++) {
  164. if (in_array($i, $use_list) && $i <= $level) {
  165. $is_use = 1;
  166. } else {
  167. $is_use = 0;
  168. }
  169. $new_list[] = [
  170. 'name' => $list[$i]['name'] ?? '等级不存在',
  171. 'level' => $i,
  172. 'is_use' => $is_use,
  173. ];
  174. }
  175. return $this->success('操作成功', $new_list);
  176. }
  177. //不用验证权限
  178. public function actionGetCloudStockLevelList()
  179. {
  180. $level_list = CloudStockLevel::lists(['where'=>[['mall_id'=>$this->mall_id],['status'=>StatusEnum::ENABLED]],'select'=>'level,name']);
  181. $data['cloud_stock_level_list'] = $level_list;
  182. return $this->success('操作成功', $data);
  183. }
  184. public function actionGetLevelList()
  185. {
  186. $data = CloudStockBonusPoolLevel::lists(['where' => [['mall_id' => $this->mall_id], ['status' => StatusEnum::ENABLED]]], true);
  187. return $this->success('操作成功', $data);
  188. }
  189. public function actionSend()
  190. {
  191. $retuest = Yii::$app->request;
  192. if ($retuest->isAjax && $retuest->isGet) {
  193. // 检查提交的参数
  194. $get = $retuest->get();
  195. $res = Yii::$app->services->validate->validate($get,[
  196. [['page','limit','level'], 'integer'],
  197. ]);
  198. if($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  199. $where = $list = [];
  200. $where[] = ['=', 'mall_id', $this->mall_id];
  201. !empty($get['level']) && $where[] = ['=', 'level', $get['level']];
  202. $where[] = ['=', 'status', StatusEnum::ENABLED];
  203. $order = 'created_at desc';
  204. $params = array('where' => $where, 'order' => $order, 'limit' => $get['limit']);
  205. $list = CloudStockBonusPoolLog::listPage($params, false, true);
  206. if (empty($list)) return $this->error('获取失败');
  207. foreach ($list['list'] as &$item){
  208. if($item['people']>0){
  209. $item['bonus_money'] = bcdiv($item['money'],$item['people'],2);
  210. }else{
  211. $item['bonus_money'] = 0;
  212. }
  213. if($item['pool_settlement_type']==1){
  214. $item['cycle_type'] = '季度';
  215. }else{
  216. $item['cycle_type'] = '每月';
  217. }
  218. }
  219. return $this->success('获取成功', $list);
  220. }
  221. }
  222. }