DefaultController.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <?php
  2. namespace addons\Redpack\backend\controllers;
  3. use addons\Redpack\common\enums\RedpackEnum;
  4. use addons\Redpack\common\models\Redpack;
  5. use addons\Redpack\common\models\RedpackGoodsSetting;
  6. use common\enums\StatusEnum;
  7. use common\models\common\PlatformSetting;
  8. use common\models\user\UserLevel;
  9. use Yii;
  10. use common\controllers\AddonsController;
  11. use yii\db\Exception;
  12. use yii\helpers\Json;
  13. /**
  14. * 默认控制器
  15. *
  16. * Class DefaultController
  17. * @package addons\Redpack\backend\controllers
  18. */
  19. class DefaultController extends BaseController
  20. {
  21. public $enableCsrfValidation = false;
  22. /**
  23. * 首页
  24. *
  25. * @return string
  26. */
  27. public function actionIndex()
  28. {
  29. try {
  30. $request = Yii::$app->request;
  31. if ($request->isAjax) {
  32. // 提交等级内容
  33. if ($request->isPost) {
  34. $params = Yii::$app->request->post();
  35. $res = Yii::$app->services->validate->validate($params, [
  36. [['page','title','id','date_start','date_end'], 'safe'],
  37. ]);
  38. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  39. if(!empty($params['title'])) $where[] = ['like','title',$params['title']];
  40. if(!empty($params['id'])) $where[] = ['=','id',$params['id']];
  41. if($params['date_start'] && $params['date_end']) $where[] = ['between', 'created_at', strtotime($params['date_start']),strtotime($params['date_end'])];
  42. $where[] = ['=','mall_id',$this->mall_id];
  43. $where[] = ['>=','status',StatusEnum::DISABLED];
  44. $order = 'id desc';
  45. //var_dump($where);
  46. $list = Redpack::listPage(['where' => $where,'order' => $order],false);
  47. $list['redpack_type'] = RedpackEnum::getRedpackType('', $this->mall_id);
  48. $list['new_time'] = time();
  49. $Platform_config = PlatformSetting::getConfByGroup( 'system', true);
  50. $web_url = $Platform_config['h5_url']['value'];
  51. $mall_sign = $this->mall['mall_sign'];
  52. $list['redpacklinks'] = $web_url.'/#/'.RedpackEnum::REDPACK_LINKS."?sign=".$mall_sign;
  53. return $this->success('操作成功',$list);
  54. }
  55. }
  56. } catch (\Exception $e) {
  57. return $this->error($e->getMessage(), []);
  58. }
  59. return $this->render($this->action->id);
  60. }
  61. /**
  62. * @Author: ltm
  63. * @DateTime: 2022/3/21 0021 16:16
  64. * @Copyright: copyright (c) 2021 广东七件事集团
  65. * @param $data
  66. * @return string
  67. */
  68. public function actionEdit(){
  69. try {
  70. $request = Yii::$app->request;
  71. if ($request->isAjax) {
  72. // 提交等级内容
  73. if ($request->isGet) {
  74. $params = Yii::$app->request->get();
  75. $res = Yii::$app->services->validate->validate($params, [
  76. [['id','type'], 'safe'],
  77. ]);
  78. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  79. $detail = Redpack::getOne([['id'=>$params['id']]],true);
  80. $user_level_list = UserLevel::getUserLevel([['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED]], [], 1,'level,name,id');
  81. $default['level'] = 0;
  82. $default['name'] = '系统默认会员等级';
  83. $default['id'] = 0;
  84. array_unshift($user_level_list,$default);
  85. $list = [];
  86. if(!empty($detail['rule_values'])) $detail['rule_data'] = json_decode($detail['rule_values']);
  87. if(!empty($detail['limit_user_level'])) $detail['limit_user_level'] = json_decode($detail['limit_user_level']);
  88. if(!empty($detail['rule'])) $detail['rule'] = json_decode($detail['rule']);
  89. if(!empty($detail['start_time'])) $detail['start_time'] = date("Y-m-d H:i:s",$detail['start_time']);
  90. if(!empty($detail['end_time'])) $detail['end_time'] = date("Y-m-d H:i:s",$detail['end_time']);
  91. if(!empty($detail['limit_user_level_num'])) {
  92. $detail['limit_user_level_num'] = Json::decode($detail['limit_user_level_num']);
  93. } else {
  94. foreach ($user_level_list as $item) {
  95. $detail['limit_user_level_num'][$item['level']] = 0;
  96. }
  97. }
  98. if($params['type'] == 1) unset($detail['id']);
  99. $list['detail'] = $detail;
  100. $list['limit_user_level_list'] = $user_level_list;
  101. $redpack_name = Yii::$app->services->setting->addons->get($this->mall_id, RedpackEnum::ADDONS_NAME, 'basic.redpack_name');
  102. $redpack_name = empty($redpack_name) ? '红包' : $redpack_name;
  103. $list['redpack_name'] = $redpack_name;
  104. return $this->success('操作成功',$list);
  105. }
  106. //提交等级内容
  107. if ($request->isPost) {
  108. $params = Yii::$app->request->post();
  109. $res = Yii::$app->services->validate->validate($params, [
  110. [['title','time_type','redpack_type'], 'required'],
  111. [['times','id','redpack_type','status','rule','rule_data', 'limit_user_level_num', 'is_show_red_envelope_num',
  112. 'is_show_invite_button', 'reward_parent_rate', 'is_limit_user_level_num', 'is_show_reward_amount'], 'safe'],
  113. [['description','cover','time_type_time','award','day_award','limit_user_level','virtual_award'],'safe']
  114. ]);
  115. $params = Redpack::exceptNullVal($params);
  116. $params['start_time'] = strtotime($params['time_type_time']['0']);
  117. $params['end_time'] = strtotime($params['time_type_time']['1']);
  118. $params['rule'] = json_encode($params['rule']);
  119. $params['rule_values'] = json_encode($params['rule_data']);
  120. $params['limit_user_level'] = json_encode($params['limit_user_level']);
  121. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  122. $params['mall_id'] = $this->mall_id;
  123. $res = Redpack::setData($params);
  124. if ($res === false) throw new Exception(Redpack::getStaticCodeError()['error']);
  125. return $this->success('操作成功');
  126. }
  127. }
  128. } catch (\Exception $e) {
  129. return $this->error($e->getMessage(), []);
  130. }
  131. return $this->render($this->action->id);
  132. }
  133. /**
  134. * 失效或删除
  135. * @Author: ltm
  136. * @DateTime: 2022/3/23 0023 14:06
  137. * @Copyright: copyright (c) 2021 广东七件事集团
  138. * @return mixed|string|void
  139. */
  140. public function actionDelOrEnable(){
  141. try {
  142. $request = Yii::$app->request;
  143. if ($request->isAjax) {
  144. if ($request->isPost) {
  145. $params = Yii::$app->request->post();
  146. $res = Yii::$app->services->validate->validate($params, [
  147. [['id','type'], 'required'],
  148. ]);
  149. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  150. if($params['type'] == StatusEnum::ENABLED) $params['status'] = StatusEnum::ENABLED;
  151. if($params['type'] == StatusEnum::DISABLED) $params['status'] = StatusEnum::DISABLED;
  152. if($params['type'] == StatusEnum::DELETE) $params['status'] = StatusEnum::DELETE;
  153. $params['mall_id'] = $this->mall_id;
  154. $res = Redpack::setData($params);
  155. if ($res === false) throw new Exception(Redpack::getStaticCodeError()['error']);
  156. return $this->success('操作成功');
  157. }
  158. }
  159. } catch (\Exception $e) {
  160. return $this->error($e->getMessage(), []);
  161. }
  162. return $this->render($this->action->id);
  163. }
  164. /**
  165. * 商品红包设置
  166. * @Author: lun
  167. * @DateTime: 2022/3/23 0023 14:07
  168. * @Copyright: copyright (c) 2021 广东七件事集团
  169. */
  170. public function actionGoodsSetting()
  171. {
  172. $request = Yii::$app->request;
  173. if ($request->isAjax && $request->isPost) {
  174. $post = Yii::$app->request->post();
  175. $res = Yii::$app->services->validate->validate($post, [
  176. [['goods_id'], 'required'],
  177. ]);
  178. if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage());
  179. $where[] = ['=', 'mall_id', $this->mall_id];
  180. $where[] = ['=', 'goods_id', $post['goods_id']];
  181. $where[] = ['=', 'status', StatusEnum::ENABLED];
  182. $select = "goods_id,redpack_wallet_type,is_enable,is_percent,give,deduct_type,deduct_money,is_deduct_percent";
  183. $params = compact('where', 'select');
  184. $list = RedpackGoodsSetting::lists($params);
  185. return $this->success('操作成功', $list);
  186. }
  187. }
  188. }