UserLevel.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. <?php
  2. namespace app\admin\controller\user;
  3. use app\admin\controller\AuthController;
  4. use app\admin\model\system\SystemUserLevel;
  5. use app\admin\model\system\SystemUserTask;
  6. use service\FormBuilder as Form;
  7. use service\JsonService;
  8. use service\UtilService;
  9. use think\Url;
  10. use traits\CurdControllerTrait;
  11. use app\admin\model\user\UserLevel as UserLevelModel;
  12. /**
  13. * 会员设置
  14. * Class UserLevel
  15. * @package app\admin\controller\user
  16. */
  17. class UserLevel extends AuthController
  18. {
  19. use CurdControllerTrait;
  20. /*
  21. * 等级展示
  22. * */
  23. public function index()
  24. {
  25. return $this->fetch();
  26. }
  27. /*
  28. * 创建form表单
  29. * */
  30. public function create($id=0)
  31. {
  32. if($id) $vipinfo=SystemUserLevel::get($id);
  33. $field[]= Form::input('name','等级名称',isset($vipinfo) ? $vipinfo->name : '')->col(Form::col(24));
  34. $field[]= Form::radio('is_forever','是否为永久',isset($vipinfo) ? $vipinfo->is_forever : 0)->options([['label'=>'永久','value'=>1],['label'=>'非永久','value'=>0]])->col(24);
  35. $field[]= Form::number('money','等级价格',isset($vipinfo) ? $vipinfo->money : 0)->min(0)->col(24);
  36. $field[]= Form::radio('is_pay','是否需要购买',isset($vipinfo) ? $vipinfo->is_pay : 0)->options([['label'=>'需要','value'=>1],['label'=>'免费','value'=>0]])->col(24);
  37. $field[]= Form::number('valid_date','有效时间(天)',isset($vipinfo) ? $vipinfo->valid_date : 0)->min(0)->col(8);
  38. $field[]= Form::number('grade','等级',isset($vipinfo) ? $vipinfo->grade : 0)->min(0)->col(8);
  39. $field[]= Form::number('discount','享受折扣',isset($vipinfo) ? $vipinfo->discount : 0)->min(0)->col(8);
  40. $field[]= Form::frameImageOne('icon','图标',Url::build('admin/widget.images/index',array('fodder'=>'icon')),isset($vipinfo) ? $vipinfo->icon : '')->icon('image')->width('100%')->height('500px');
  41. $field[]= Form::frameImageOne('image','会员背景',Url::build('admin/widget.images/index',array('fodder'=>'image')),isset($vipinfo) ? $vipinfo->image : '')->icon('image')->width('100%')->height('500px');
  42. $field[]= Form::radio('is_show','是否显示',isset($vipinfo) ? $vipinfo->is_show : 0)->options([['label'=>'显示','value'=>1],['label'=>'隐藏','value'=>0]])->col(8);
  43. $field[]= Form::textarea('explain','等级说明',isset($vipinfo) ? $vipinfo->explain : '');
  44. $form = Form::make_post_form('添加等级设置',$field,Url::build('save',['id'=>$id]),2);
  45. $this->assign(compact('form'));
  46. return $this->fetch('public/form-builder');
  47. }
  48. /*
  49. * 会员等级添加或者修改
  50. * @param $id 修改的等级id
  51. * @return json
  52. * */
  53. public function save($id=0)
  54. {
  55. $data=UtilService::postMore([
  56. ['name',''],
  57. ['is_forever',0],
  58. ['money',0],
  59. ['is_pay',0],
  60. ['valid_date',0],
  61. ['grade',0],
  62. ['discount',0],
  63. ['icon',''],
  64. ['image',''],
  65. ['is_show',''],
  66. ['explain',''],
  67. ]);
  68. if(!$data['name']) return JsonService::fail('请输入等级名称');
  69. if(!$data['grade']) return JsonService::fail('请输入等级');
  70. if(!$data['explain']) return JsonService::fail('请输入等级说明');
  71. if($data['is_forever']==0 && !$data['valid_date']) return JsonService::fail('请输入有效时间(天)');
  72. if($data['is_pay'] && !$data['money']) return JsonService::fail('请输入购买金额');
  73. if(!$data['icon']) return JsonService::fail('请上传等级图标');
  74. if(!$data['image']) return JsonService::fail('请上传等级背景图标');
  75. SystemUserLevel::beginTrans();
  76. try{
  77. //修改
  78. if($id){
  79. if(SystemUserLevel::edit($data,$id)){
  80. SystemUserLevel::commitTrans();
  81. return JsonService::successful('修改成功');
  82. }else{
  83. SystemUserLevel::rollbackTrans();
  84. return JsonService::fail('添加失败');
  85. }
  86. }else{
  87. //新增
  88. $data['add_time']=time();
  89. if(SystemUserLevel::set($data)){
  90. SystemUserLevel::commitTrans();
  91. return JsonService::successful('添加成功');
  92. }else{
  93. SystemUserLevel::rollbackTrans();
  94. return JsonService::fail('添加失败');
  95. }
  96. }
  97. }catch (\Exception $e){
  98. SystemUserLevel::rollbackTrans();
  99. return JsonService::fail($e->getMessage());
  100. }
  101. }
  102. /*
  103. * 获取系统设置的vip列表
  104. * @param int page
  105. * @param int limit
  106. * */
  107. public function get_system_vip_list()
  108. {
  109. $where=UtilService::getMore([
  110. ['page',0],
  111. ['limit',10],
  112. ['title',''],
  113. ['is_show',''],
  114. ]);
  115. return JsonService::successlayui(SystemUserLevel::getSytemList($where));
  116. }
  117. /*
  118. * 删除会员等级
  119. * @param int $id
  120. * */
  121. public function delete($id=0)
  122. {
  123. if(SystemUserLevel::edit(['is_del'=>1],$id))
  124. return JsonService::successful('删除成功');
  125. else
  126. return JsonService::fail('删除失败');
  127. }
  128. /**
  129. * 设置单个产品上架|下架
  130. *
  131. * @return json
  132. */
  133. public function set_show($is_show='',$id=''){
  134. ($is_show=='' || $id=='') && Json::fail('缺少参数');
  135. $res=SystemUserLevel::where(['id'=>$id])->update(['is_show'=>(int)$is_show]);
  136. if($res){
  137. return JsonService::successful($is_show==1 ? '显示成功':'隐藏成功');
  138. }else{
  139. return JsonService::fail($is_show==1 ? '显示失败':'隐藏失败');
  140. }
  141. }
  142. /**
  143. * 快速编辑
  144. *
  145. * @return json
  146. */
  147. public function set_value($field='',$id='',$value=''){
  148. $field=='' || $id=='' || $value=='' && Json::fail('缺少参数');
  149. if(SystemUserLevel::where(['id'=>$id])->update([$field=>$value]))
  150. return JsonService::successful('保存成功');
  151. else
  152. return JsonService::fail('保存失败');
  153. }
  154. /*
  155. * 等级任务列表
  156. * @param int $vip_id 等级id
  157. * @return json
  158. * */
  159. public function tash($level_id=0)
  160. {
  161. $this->assign('level_id',$level_id);
  162. return $this->fetch();
  163. }
  164. /**
  165. * 快速编辑
  166. *
  167. * @return json
  168. */
  169. public function set_tash_value($field='',$id='',$value=''){
  170. $field=='' || $id=='' || $value=='' && Json::fail('缺少参数');
  171. if(SystemUserTask::where(['id'=>$id])->update([$field=>$value]))
  172. return JsonService::successful('保存成功');
  173. else
  174. return JsonService::fail('保存失败');
  175. }
  176. /**
  177. * 设置单个产品上架|下架
  178. *
  179. * @return json
  180. */
  181. public function set_tash_show($is_show='',$id=''){
  182. ($is_show=='' || $id=='') && Json::fail('缺少参数');
  183. $res=SystemUserTask::where(['id'=>$id])->update(['is_show'=>(int)$is_show]);
  184. if($res){
  185. return JsonService::successful($is_show==1 ? '显示成功':'隐藏成功');
  186. }else{
  187. return JsonService::fail($is_show==1 ? '显示失败':'隐藏失败');
  188. }
  189. }
  190. /**
  191. * 设置单个产品上架|下架
  192. *
  193. * @return json
  194. */
  195. public function set_tash_must($is_must='',$id=''){
  196. ($is_must=='' || $id=='') && Json::fail('缺少参数');
  197. $res=SystemUserTask::where(['id'=>$id])->update(['is_must'=>(int)$is_must]);
  198. if($res){
  199. return JsonService::successful('设置成功');
  200. }else{
  201. return JsonService::fail('设置失败');
  202. }
  203. }
  204. /*
  205. * 生成任务表单
  206. * @param int $id 任务id
  207. * @param int $vip_id 会员id
  208. * @return html
  209. * */
  210. public function create_tash($id=0,$level_id=0)
  211. {
  212. if($id) $tash=SystemUserTask::get($id);
  213. $field[]= Form::select('task_type','任务类型',isset($tash) ? $tash->task_type : '')->setOptions(function(){
  214. $list = SystemUserTask::getTaskTypeAll();
  215. $menus=[];
  216. foreach ($list as $menu){
  217. $menus[] = ['value'=>$menu['type'],'label'=>$menu['name'].'----单位['.$menu['unit'].']'];
  218. }
  219. return $menus;
  220. })->filterable(1);
  221. $field[]= Form::number('number','限定数量',isset($tash) ? $tash->number : 0)->min(0)->col(24);
  222. $field[]= Form::number('sort','排序',isset($tash) ? $tash->sort : 0)->min(0)->col(24);
  223. $field[]= Form::radio('is_show','是否显示',isset($tash) ? $tash->is_show : 1)->options([['label'=>'显示','value'=>1],['label'=>'隐藏','value'=>0]])->col(24);
  224. $field[]= Form::radio('is_must','是否务必达成',isset($tash) ? $tash->is_must : 1)->options([['label'=>'务必达成','value'=>1],['label'=>'完成其一','value'=>0]])->col(24);
  225. $field[]= Form::textarea('illustrate','任务说明',isset($tash) ? $tash->illustrate : '');
  226. $form = Form::make_post_form('添加任务',$field,Url::build('save_tash',['id'=>$id,'level_id'=>$level_id]),2);
  227. $this->assign(compact('form'));
  228. return $this->fetch('public/form-builder');
  229. }
  230. /*
  231. * 保存或者修改任务
  232. * @param int $id 任务id
  233. * @param int $vip_id 会员id
  234. * */
  235. public function save_tash($id=0,$level_id=0)
  236. {
  237. if(!$level_id) return JsonService::fail('缺少参数');
  238. $data=UtilService::postMore([
  239. ['task_type',''],
  240. ['number',0],
  241. ['is_show',0],
  242. ['sort',0],
  243. ['is_must',0],
  244. ['illustrate',''],
  245. ]);
  246. if(!$data['task_type']) return JsonService::fail('请选择任务类型');
  247. if($data['number'] < 0) return JsonService::fail('请输入限定数量');
  248. $tash=SystemUserTask::getTaskType($data['task_type']);
  249. if($tash['max_number']!=0 && $data['number'] > $tash['max_number']) return JsonService::fail('您设置的限定数量超出最大限制,最大限制为:'.$tash['max_number']);
  250. $data['name']=SystemUserTask::setTaskName($data['task_type'],$data['number']);
  251. try{
  252. if($id){
  253. SystemUserTask::edit($data,$id);
  254. return JsonService::successful('修改成功');
  255. }else{
  256. $data['level_id']=$level_id;
  257. $data['add_time']=time();
  258. $data['real_name']=$tash['real_name'];
  259. if(SystemUserTask::set($data))
  260. return JsonService::successful('添加成功');
  261. else
  262. return JsonService::fail('添加失败');
  263. }
  264. }catch (\Exception $e){
  265. return JsonService::fail($e->getMessage());
  266. }
  267. }
  268. /*
  269. * 异步获取等级任务列表
  270. * @param int $vip_id 会员id
  271. * @param int $page 分页
  272. * @param int $limit 显示条数
  273. * @return json
  274. * */
  275. public function get_tash_list($level_id=0)
  276. {
  277. list($page,$limit)=UtilService::getMore([
  278. ['page',1],
  279. ['limit',10],
  280. ],$this->request,true);
  281. return JsonService::successlayui(SystemUserTask::getTashList($level_id,(int)$page,(int)$limit));
  282. }
  283. /*
  284. * 删除任务
  285. * @param int 任务id
  286. * */
  287. public function delete_tash($id=0)
  288. {
  289. if(!$id) return JsonService::fail('缺少差参数');
  290. if(SystemUserTask::del($id))
  291. return JsonService::successful('删除成功');
  292. else
  293. return JsonService::fail('删除失败');
  294. }
  295. /*
  296. * 会员等级展示
  297. *
  298. * */
  299. public function user_level_list()
  300. {
  301. $this->assign('level',SystemUserLevel::where('is_del',0)->where('is_show',1)->order('grade asc')->field(['id','name'])->select());
  302. return $this->fetch();
  303. }
  304. public function get_user_vip_list()
  305. {
  306. $where=UtilService::getMore([
  307. ['page',1],
  308. ['limit',10],
  309. ['nickname',''],
  310. ['level_id',''],
  311. ]);
  312. return JsonService::successlayui(UserLevelModel::getUserVipList($where));
  313. }
  314. }