Channel.php 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\model\ChannelCat;use app\admin\model\PlatformChannel;use think\App;
  4. use think\facade\Validate;
  5. class Channel extends Base{
  6. public function __construct(App $app) {
  7. parent::__construct($app);
  8. $this->model=new \app\admin\model\Channel();
  9. }
  10. /**@param channel_name 渠道名称
  11. * @param companyNo 业务公司
  12. * @return \think\Response|\think\response\Json|void
  13. */
  14. public function create(){
  15. $param =$this->request->only(['channel_name'=>'','companyNo'=>'','is_del'=>'0'],'post','trim');
  16. $valid =Validate::rule([
  17. 'channel_name|渠道名称'=>'require|max:255|min:4|unique:app\admin\model\Channel,channel_name^is_del^companyNo',
  18. 'companyNo|业务公司'=>'require|max:255'
  19. ]);
  20. if(!$valid->check($param)) return error($valid->getError());
  21. $data=[
  22. 'channel_name'=>$param['channel_name'],
  23. 'companyName'=>\app\user\model\Business::where('companyNo',$param['companyNo'])->value('company'),
  24. 'companyNo'=>$param['companyNo'],
  25. 'apply_id'=>$this->uid,
  26. 'apply_name'=>$this->uname,
  27. ];
  28. $int= $this->model->create($data);
  29. if(!$int) return error('渠道新建失败');
  30. return success('渠道新建成功');
  31. }
  32. /**@param channel_name 渠道名称
  33. * @param id 渠道ID
  34. * @param companyNo 业务公司
  35. * */
  36. public function save(){
  37. $param =$this->request->only(['channel_name'=>'','companyNo'=>'','id'=>'','is_del'=>'0'],'post','trim');
  38. $valid =Validate::rule([
  39. 'id|渠道ID'=>'require|number|gt:0',
  40. 'channel_name|渠道名称'=>'require|max:255|min:4|unique:app\admin\model\Channel,channel_name^is_del^companyNo',
  41. 'companyNo|业务公司'=>'require|max:255'
  42. ]);
  43. if(!$valid->check($param)) return error($valid->getError());
  44. $info = $this->model->findOrEmpty($param['id']);
  45. if($info->isEmpty()) return error('渠道信息未找到');
  46. if($info->is_del==1) return error('渠道已删除');
  47. if($info->status==1) return error('渠道启用状态不可编辑');
  48. if($param['companyNo']!=$info->companyNo){
  49. $isbind =PlatformChannel::where(['channel_id'=>$param['id'],'is_del'=>0])->findOrEmpty();
  50. if(!$isbind->isEmpty()) return error('渠道已绑定平台不可编辑业务公司');
  51. }
  52. $data=[
  53. 'channel_name'=>$param['channel_name'],
  54. 'companyName'=>\app\user\model\Business::where('companyNo',$param['companyNo'])->value('company'),
  55. 'companyNo'=>$param['companyNo'],
  56. ];
  57. $int= $info->save($data);
  58. if(!$int) return error('渠道编辑失败');
  59. return success('渠道编辑成功');
  60. }
  61. /**@param status 状态
  62. * @param id 渠道ID
  63. * */
  64. public function status(){
  65. $param =$this->request->only(['status'=>'','id'=>''],'post','trim');
  66. $valid =Validate::rule([
  67. 'id|渠道ID'=>'require|number|gt:0',
  68. 'status|状态'=>'require|number|in:0,1'
  69. ]);
  70. if(!$valid->check($param)) return error($valid->getError());
  71. $info = $this->model->findOrEmpty($param['id']);
  72. if($info->isEmpty()) return error('渠道信息未找到');
  73. if($info->is_del==1) return error('渠道已删除');
  74. if($info->status==$param['status']) return error('渠道状态未改变');
  75. $info->status=$param['status'];
  76. if($info->save()) return success('渠道状态修改成功');
  77. return error('渠道状态修改失败');
  78. }
  79. /**@param channel_name 渠道名称
  80. * @param companyNo 业务公司
  81. * @param page 页码
  82. * @param size 每页显示数量
  83. *@param status 状态
  84. * @param apply_id 申请人ID
  85. */
  86. public function list(){
  87. $param =$this->request->only(['channel_name'=>'','companyNo'=>'','status'=>'','apply_id'=>'','page'=>'1','size'=>'10'],'post','trim');
  88. $where=[["is_del","=",0]];
  89. if($param['channel_name']!=="") $where[]=['channel_name','like',"%{$param['channel_name']}%"];
  90. if($param['companyNo']!=="") $where[]=['companyNo','=',$param['companyNo']];
  91. if($param['status']!=="") $where[]=['status','=',$param['status']];
  92. if($param['apply_id']!=="") $where[]=['apply_id','=',$param['apply_id']];
  93. $data = $this->model->where($where)
  94. ->order('id','desc')
  95. ->paginate(["page"=>$param['page'],"list_rows"=>$param['size']]);
  96. return success("获取成功",["list"=>$data->items(),"count"=>$data->total()]);
  97. }
  98. /**@param channel_name 渠道名称
  99. * @param status 状态
  100. * @param companyNo 业务公司
  101. * */
  102. public function query(){
  103. $param =$this->request->only(['channel_name'=>'','companyNo'=>'','status'=>''],'post','trim');
  104. $where=[["is_del","=",0]];
  105. if($param['channel_name']!=="") $where[]=['channel_name','like',"%{$param['channel_name']}%"];
  106. if($param['companyNo']!=="") $where[]=['companyNo','=',$param['companyNo']];
  107. if($param['status']!=="") $where[]=['status','=',$param['status']];
  108. $data = $this->model->where($where)
  109. ->field('*,LENGTH(channel_name) as weight')->order('weight desc')
  110. ->select();
  111. return success("获取成功",$data);
  112. }
  113. /**@param id 渠道ID
  114. **/
  115. public function delete(){
  116. $param =$this->request->only(['id'=>''],'post','trim');
  117. $valid =Validate::rule([
  118. 'id|渠道ID'=>'require|number|gt:0'
  119. ]);
  120. if(!$valid->check($param)) return error($valid->getError());
  121. $info = $this->model->findOrEmpty($param['id']);
  122. if($info->isEmpty()) return error('渠道信息未找到');
  123. if($info->is_del==1) return error('渠道已删除');
  124. if($info->status==1) return error('渠道启用状态不可删除');
  125. $info->is_del=1;
  126. $this->model->startTrans();
  127. try{
  128. if($info->save()){
  129. $pc= PlatformChannel::where(['channel_id'=>$param['id'],'is_del'=>0])->update(['is_del'=>1]);
  130. if(!$pc)throw new \Exception('删除渠道平台绑定失败');
  131. }else{
  132. throw new \Exception('删除渠道失败');
  133. }
  134. $this->model->commit();
  135. }catch(\Exception $e){
  136. $this->model->rollback();
  137. return error($e->getMessage());
  138. }
  139. return success('删除渠道成功');
  140. }
  141. /**@param channel_id 渠道ID
  142. * @param cat_id 分类ID
  143. * @param cat_name 分类名称
  144. * */
  145. public function CatChannelList(){
  146. $param=$this->request->only(["channel_id"=>"0","cat_id"=>'',"cat_name"=>"",'page'=>'1','size'=>'15'],'post','trim');
  147. $where=[["is_del","=",0],["pid","=",0]];
  148. if($param['channel_id']!=="0")$where[]=['channel_id','=',$param['channel_id']];
  149. if($param['cat_id']!=="") $where[]=['id','=',$param['cat_id']];
  150. if($param['cat_name']!=="") $where[]=['cat_name','like',"%{$param['cat_name']}%"];
  151. $data = \app\admin\model\Cat::alias('a')->join('channel_cat b','a.id=b.cat_id')
  152. ->where($where)
  153. ->field('a.id as cat_id,cat_name,ifnull(b.rate,0) rate,ifnull(b.id,0) as channel_cat_id,ifnull(b.channel_id,0) channel_id')
  154. ->order('id','desc')
  155. ->paginate(["page"=>$param['page'],"list_rows"=>$param['size']]);
  156. return success("获取成功",["list"=>$data->items(),"count"=>$data->total()]);
  157. }
  158. /**@param channel_id 渠道ID
  159. * @param cat_id 分类ID
  160. * @param rate 费率
  161. * */
  162. public function CatChannelSave(){
  163. $param=$this->request->only(["channel_id"=>"0","cat_id"=>"","rate"=>"0"],'post','trim');
  164. $valid =Validate::rule([
  165. 'channel_id|渠道ID'=>'require|number|gt:0',
  166. 'cat_id|分类ID'=>'require|number|gt:0',
  167. 'rate|费率'=>'require|number|between:0,100'
  168. ]);
  169. if(!$valid->check($param)) return error($valid->getError());
  170. $cat = \app\admin\model\Cat::findOrEmpty($param['cat_id']);
  171. if($cat->isEmpty()) return error('分类信息未找到');
  172. if($cat->pid!=0) return error('只能绑定一级分类');
  173. $channel = $this->model->findOrEmpty($param['channel_id']);
  174. if($channel->isEmpty()) return error('渠道信息未找到');
  175. $catChannel = ChannelCat::where(['channel_id'=>$param['channel_id'],'cat_id'=>$param['cat_id'],'is_del'=>0])->findOrEmpty();
  176. $catChannel->channel_id=$param['channel_id'];
  177. $catChannel->cat_id=$param['cat_id'];
  178. $catChannel->rate=$param['rate'];
  179. if($catChannel->save()) return success('绑定成功');
  180. return error('绑定失败');
  181. }
  182. }