request->filter('trim,strip_tags,htmlspecialchars'); } /* * 工会列表 * @param int $page * @param int $page_limit * @param string search_id * @param string search_name * @param string search_stime * @param string search_etime * @return array */ public function guild_lists() { $page = input('page',1); $page = $page > 0 ? $page : 1; $page_limit = input('page_limit',30); $search_id = input('search_id',''); $search_name = input('search_name',''); $search_stime = input('search_stime',''); $search_etime = input('search_etime',''); $where = []; if (!empty($search_id)) { $where['guild_special_id'] = $search_id; } if (!empty($search_name)) { $where['guild_name'] = ['like',"%{$search_name}%"]; } // if (!empty($search_stime)) { // $where['createtime'] = ['>=',strtotime($search_stime)]; // } // if (!empty($search_etime)) { // $where['createtime'] = ['<=',strtotime($search_etime.' 23:59:59')]; // } // if(!empty($search_stime) && !empty($search_etime)){ // $where['createtime'] = ['between',[strtotime($search_stime),strtotime($search_etime.' 23:59:59')]]; // } $count = db::name('vs_guild')->where($where)->count(); $data = db::name('vs_guild')->where($where)->page($page,$page_limit)->select(); $list = []; foreach ($data as $k=>$v) { $list[$k]['id'] = $v['id']; $list[$k]['code_id'] = $v['guild_special_id']; $special_num = db::name('vs_user_decorate')->where(['type'=>8,'user_id'=>$v['user_id'],'is_using'=>1])->where('end_time',['>=',time()],'or')->value('special_num'); if($special_num){ $list[$k]['guild_special_id'] = $special_num; }else{ $list[$k]['guild_special_id'] = "无"; } $list[$k]['guild_name'] = $v['guild_name']; $user = model('User')->getOne(['id'=>$v['user_id']]); if(!$user){ $list[$k]['user_name'] = "无"; }else{ $list[$k]['user_name'] = $user['user_code'].'-'.$user['nickname']; } $list[$k]['guild_logo'] = $v['cover']; //当日流水 $list[$k]['today_money'] = model('Guild')->getTodayMoney($v['id'],$search_stime,$search_etime); $list[$k]['is_show'] = $v['is_show']; $list[$k]['status'] = $v['status']; $list[$k]['status_str'] = $v['status'] == 1 ? '正常' : '解散'; $list[$k]['createtime'] = date('Y-m-d H:i:s',$v['createtime']); $list[$k]['updatetime'] = date('Y-m-d H:i:s',$v['updatetime']); $list[$k]['user_id'] = $user['user_code']; $list[$k]['intro'] = $v['intro']; } // 数组按today_money 排序 usort($list, function($a, $b) { return $b['today_money'] - $a['today_money']; }); $reslut = []; $reslut['page'] = $page; $reslut['page_limit'] = $page_limit; $reslut['count'] = $count; $reslut['list'] = $list; return V(1,"成功", $reslut); } /** * 工会添加 * @param guild_special_id 靓号 guild_special_id * @param user_id 会长ID user_id * @param guild_name 工会名称 guild_name * @param guild_desc 工会描述 intro * @param guild_logo 工会logo cover * */ public function guild_add(){ if ($this->request->isPost()) { $request = $this->request->post(); if (empty($request['guild_name'])) { return V(0, "请填写工会名称"); } $guild = model('Guild')->getOne(['guild_name'=>$request['guild_name'],'delete_time'=>0]); if(!empty($guild)) { return V(0, "该工会名称已存在"); } if(empty($request['user_id'])) { return V(0, "请填写会长用户ID"); } $user = db('user')->where('user_code', $request['user_id'])->find(); if(empty($user)) { return V(0, "会长ID不存在"); } $user_id = $user['id']; if(empty($request['guild_logo'])) { return V(0, "请上传工会logo"); } $guild_to_usser = model('Guild')->getOne(['user_id'=>$user_id,'delete_time'=>0]); if ($guild_to_usser) { return V(0, "该会长已创建工会"); } $guild_user = db::name('vs_guild_user')->where('user_id',$user_id)->where('delete_time',0)->find(); if ($guild_user) { return V(0, "该会长已加入其他工会"); } //靓号处理 if(empty($request['guild_special_id'])){ $guild_special_id = model('Guild')->getGuildSpecialId(); }else{ $vip_code = db::name('vip_code')->where(['type' => 3, 'status' => 1,'is_use' => 1])->where('code', $request['guild_special_id'])->field('code')->select(); if (empty($vip_code)) { return V(0, "请输入正确的靓号"); } $guild_special_id = model('Guild')->getOne(['guild_special_id'=>$request['guild_special_id']]); if ($guild_special_id) { return V(0, "靓号已使用"); } } Db::startTrans(); try { $data = [ 'guild_special_id' => $guild_special_id, 'user_id' => $user_id, 'guild_name' => $request['guild_name'], 'intro' => $request['guild_desc'], 'cover' => $request['guild_logo'] ]; $res = model('Guild')->add($data); if (!$res) { db::rollback(); return V(0, "创建失败"); } //会长是否有房间 $rid = 0; $room_info = db::name('vs_room')->where('user_id', $user_id)->find(); if($room_info){ $rid = $room_info['id']; } $insert_data = []; $insert_data['user_id'] = $user_id; $insert_data['guild_id'] = $res; $insert_data['room_id'] = $rid; $insert_data['status'] = 1; $insert_data['is_deacon'] = 1; $insert_data['createtime'] = time(); $insert_data['is_show_room'] = 1; $re = db::name('vs_guild_user')->insert($insert_data); if (!$re) { db::rollback(); return V(0, "加入失败"); } $reslut = model('api/Tencent')->create_group($user_id,'g'.$res,"Public",$request['guild_logo'],$request['guild_name']); if ($reslut['code'] ==0 ) { db::rollback(); return V(0, $reslut['msg']); } model('api/Tencent')->send_group_system_notification('g'.$res, $request['guild_name'].'工会群聊创建成功'); db::commit(); return V(1,"成功", []); } catch (\Exception $e) { db::rollback(); return V(0, $e->getMessage()); } }else{ return V(0,"参数错误", []); } } /* * 修改 */ public function guild_edit(){ if ($this->request->isPost()) { $request = $this->request->post(); if (empty($request['id'])) { return V(0, "请选择要修改的工会"); } $guild = model('Guild')->getOne(['id'=>$request['id']]); if (empty($guild)) { return V(0, "该工会不存在"); } if (!empty($request['guild_name'])) { $guild_name = model('Guild')->getOne(['guild_name'=>$request['guild_name']]); if (!empty($guild_name) && $guild_name['id'] != $request['id']) { return V(0, "该工会名称已存在"); } } //靓号处理 if(!empty($request['guild_special_id']) && is_numeric($request['guild_special_id'])){ $decorate = model('api/Decorate')->where(['type'=>8,'special_num'=>$request['guild_special_id']])->find(); if (!$decorate) { return V(0, "请输入正确的靓号"); } if($decorate['is_user_buy'] ==1){ return V(0, "该靓号已使用"); } //装扮靓号 $decorate_price_info = db::name('vs_decorate_price')->where(['did' => $decorate['did'],'is_delete' => 1])->order('day','asc')->find(); model('api/Decorate')->pay_decorate($guild['user_id'], $decorate['did'], $decorate_price_info['day'],2); } Db::startTrans(); try { $data =[]; if(isset($request['guild_name']) && $request['guild_name']){ $data['guild_name'] = $request['guild_name']; } if(isset($request['user_id']) && $request['user_id']){ $userID = db::name('user')->where('user_code',$request['user_id'])->value('id'); $data['user_id'] = $userID; } if(isset($request['guild_logo']) && $request['guild_logo']){ $data['cover'] = $request['guild_logo']; } if(isset($request['guild_desc']) && $request['guild_desc']){ $data['intro'] = $request['guild_desc']; } $res = model('Guild')->edit(['id' => $request['id']], $data); if ($res) { db::commit(); return V(1, "修改成功"); } else { db::rollback(); return V(0, "修改失败"); } } catch (\Exception $e) { db::rollback(); return V(0, $e->getMessage()); } }else{ return V(0,"参数错误", []); } } /* * 解散工会 */ public function guild_dissolve(){ if(request()->isPost()){ $id = input('id'); if(!$id){ return V(0,"参数错误"); } $guild = model('Guild')->getOne(['id'=>$id]); if(empty($guild)){ return V(0,"该工会不存在"); } if($guild['status'] == 2){ return V(0,"该工会已解散"); } $res = model('Guild')->edit(['id'=>$id],['status'=>2,'delete_time'=>time()]); if($res){ db('vs_guild_user')->where(['guild_id'=>$id,'quit_type'=>0])->update(['quit_type'=>3,'quit_time'=>time()]); //解散群 model('Tencent')->delete_group('g'.$id); return V(1,"解散成功"); }else{ return V(0,"解散失败"); } } return V(0,"参数错误"); } /* * 查看工会成员 */ public function guild_member_lists(){ //管理员ID $page = input('page', 1); $page_limit = input('page_limit', 30); $guild_id = input('guild_id', 0); $search_stime = input('search_stime',''); $search_etime = input('search_etime',''); $user_id = input('user_id', 0); $where=['a.status'=>1]; if(!$guild_id){ return V(0,"参数错误"); } if($user_id){ if(is_numeric($user_id)){ $where['b.user_code'] = $user_id; }else{ $where['b.nickname'] = ['like', '%'.$user_id.'%']; } } $count = db::name($this->table_guild_user)->alias('a') ->join('user b', 'a.user_id = b.id', 'left') ->where(['a.guild_id'=>$guild_id,'a.quit_type'=>['in',[0,3]]])->where($where)->count(); $list = db::name($this->table_guild_user)->alias('a') ->field('a.*,b.nickname,b.user_code') ->join('user b', 'a.user_id = b.id', 'left') ->where(['a.guild_id'=>$guild_id,'a.quit_type'=>['in',[0,3]]])->where($where)->page($page, $page_limit)->select(); $rum_lists = []; $coin_consumption_type_array = model('common/UserWallet')->coin_consumption_type_array; $coin_consumption_type_array = array_diff($coin_consumption_type_array, [model('common/UserWallet')::OPERATION_CONSUME]); foreach ($list as $k=>$v){ $user_info = model('api/User')->get_user_info($v['user_id'],['user','user_level']); $rum_lists[$k]['id']=$v['id']; $rum_lists[$k]['user_id']=$v['user_id']; $rum_lists[$k]['user_code']=model('api/Decorate')->user_decorate_detail($v['user_id'],6); $rum_lists[$k]['nickname']=$user_info['nickname']; $rum_lists[$k]['charm_level']=$user_info['charm_level']; $rum_lists[$k]['wealth_level']=$user_info['wealth_level']; //用户流水 $consumption_sql = db::name('vs_user_money_log') ->whereIn('change_type',$coin_consumption_type_array) ->where(['money_type'=>1,'user_id' => $v['user_id']]); if($v['quit_type'] == 3){ $consumption_sql->where(['createtime'=>['<=',$v['delete_time']]]); $consumption_sql->where(['createtime'=>['>=',$v['createtime']]]); } if($search_stime){ $consumption_sql->where(['createtime'=>['>=',$search_stime]]); } if($search_etime){ $consumption_sql->where(['createtime'=>['<=',$search_etime]]); } $consumption = $consumption_sql->sum('change_value'); $rum_lists[$k]['consumption'] = $consumption; $rum_lists[$k]['add_time'] = date('Y-m-d H:i:s',$v['createtime']); } $return_data = [ 'page' =>$page, 'page_limit' => $page_limit, 'count' => $count, 'lists' => $rum_lists ]; return V(1,"成功", $return_data); } /* * 查看房间 */ public function guild_room_lists(){ $page = input('page', 1); $page_limit = input('page_limit', 30); $guild_id = input('guild_id', 0); $search_stime = input('search_stime',''); $search_etime = input('search_etime',''); $room_id = input('room_id', 0); $where=['a.status'=>1]; $where=['a.room_id'=>['>',0]]; if(!$guild_id){ return V(0,"参数错误"); } if($room_id){ if(is_numeric($room_id)){ $where['b.room_number'] = $room_id; }else{ $where['b.room_name'] = ['like', '%'.$room_id.'%']; } } $count = db::name($this->table_guild_user)->alias('a') ->join('vs_room b', 'a.room_id = b.id', 'left') ->where(['a.guild_id'=>$guild_id,'a.quit_type'=>['in',[0,3]]])->where($where)->count(); $list = db::name($this->table_guild_user)->alias('a') ->join('vs_room b', 'a.room_id = b.id', 'left') ->where(['a.guild_id'=>$guild_id,'a.quit_type'=>['in',[0,3]]])->where($where)->page($page, $page_limit)->select(); if(!$list){ return V(0,"暂无数据"); } $rum_lists = []; foreach ($list as $k=>$v){ $room_info = db::name('vs_room')->where(['id'=>$v['room_id']])->find(); $rum_lists[$k]['id']=$v['id']; $rum_lists[$k]['room_id']=$v['room_id']; $rum_lists[$k]['room_code']= model('api/Decorate')->user_decorate_detail($v['room_id'], 7); $rum_lists[$k]['room_name']=$room_info['room_name']?? ''; $rum_lists[$k]['room_cover']=$room_info['room_cover']?? ''; //房间流水 $rum_lists[$k]['consumption']= model('Room')->getRoomFlow($v['room_id'],$search_stime,$search_etime); $rum_lists[$k]['add_time'] = date('Y-m-d H:i:s',$v['createtime']); } $return_data = [ 'page' =>$page, 'page_limit' => $page_limit, 'count' => $count, 'lists' => $rum_lists ]; return V(1,"成功", $return_data); } //踢出公会 public function kick_guild_member(){ $user_id = input('user_id', 0); $guild_id = input('guild_id', 0); if(!$guild_id){ return V(0,"参数错误"); } $guild_info = Db::name('vs_guild')->where('id', $guild_id)->find(); if(!$guild_info){ return V(0,"公会不存在"); } $reslut = model('api/Guild')->kick_out_guild($guild_info['user_id'], $user_id, $guild_id); return V($reslut['code'],$reslut['msg'], $reslut['data']); } /* * 合并工会 */ public function merge_guild(){ $guild_id = input('guild_id', ''); $merge_guild_id = input('merge_guild_id', ''); //解散工会 $guild = model('Guild')->getOne(['id'=>$guild_id]); if(empty($guild)){ return V(0,"该工会不存在"); } if($guild['status'] == 2){ return V(0,"该工会已解散"); } db::startTrans(); try{ $res = model('Guild')->edit(['id'=>$guild_id],['status'=>2,'delete_time'=>time()]); //并入工会 if(!$merge_guild_id){ db::rollback(); return V(0,"参数错误"); } $merge_guild = model('Guild')->getOne(['id'=>$merge_guild_id]); if(empty($merge_guild)){ db::rollback(); return V(0,"并入工会不存在"); } $merge_guild_user = db('vs_guild_user')->where(['guild_id'=>$merge_guild_id,'quit_type'=>0])->select(); foreach ($merge_guild_user as $key=>$value){ $res = db('vs_guild_user')->insert([ 'user_id'=>$value['user_id'], 'guild_id'=>$merge_guild_id, 'room_id'=>$value['room_id'], 'coin'=>$value['coin'], 'status'=>$value['status'], 'is_deacon'=>$value['is_deacon'], 'is_show_room'=>$value['is_show_room'], 'remarks'=>$value['remarks'], 'apply_time'=>$value['apply_time'], 'createtime'=>time(), ]); if(!$res){ db::rollback(); return V(0,"失败"); } //拉用户进入工会群聊 $rid = 'g'.$merge_guild_id; $reslut = model('api/Tencent')->add_group_member($rid, $value['user_id']); } $return = db('vs_guild_user')->where(['guild_id'=>$guild_id,'quit_type'=>0])->update(['quit_type'=>3,'quit_time'=>time(),'updatetime'=>time(),'delete_time'=>time()]); if (!$return) { db::rollback(); return V(0,"失败"); } //解散群 model('Tencent')->delete_group('g'.$guild_id); db::commit(); return V(1,"成功"); } catch(\Exception $e) { db::rollback(); return V(0,$e->getMessage()); } } /* * 工会补贴配置添加 */ public function guild_subsidy_config_add(){ $start_amount = input('start_amount', 0); $end_amount = input('end_amount', 0); $subsidy_ratio = input('subsidy_ratio', 0); if ($start_amount && $end_amount && $subsidy_ratio) { $res = db::name($this->table_guild_subsidy_config)->insertGetId([ 'start_amount' => $start_amount, 'end_amount' => $end_amount, 'subsidy_ratio' => $subsidy_ratio, 'createtime' => time(), ]); if (!$res) { return V(0, "添加失败"); } }else{ return V(0, "参数错误"); } return V(1, "添加成功"); } /* * 工会补贴配置列表 */ public function guild_subsidy_config_lists(){ $page = input('page', 1); $page_limit = input('page_limit', 30); $where=[]; $count = db::name($this->table_guild_subsidy_config)->where($where)->count(); $lists = db::name($this->table_guild_subsidy_config)->where($where)->page($page, $page_limit)->order('end_amount asc')->select(); foreach ($lists as $key => $value) { $lists[$key]['createtime'] = date('Y-m-d H:i:s', $value['createtime']); } $return_data = [ 'page' =>$page, 'page_limit' => $page_limit, 'count' => $count, 'lists' => $lists ]; return V(1,"成功", $return_data); } /* * 工会补贴配置 删除 */ public function del_guild_config_subsidy(){ $id = input('id', ''); if($id == ''){ return V(0,"参数错误"); } $result = db::name($this->table_guild_subsidy_config)->where(['id'=>$id])->delete(); if(!$result){ return V(0,"删除失败"); } return V(1,"成功"); } /* * 工会补贴配置 编辑 */ public function edit_guild_config_subsidy(){ $id = input('id', ''); if($id == ''){ return V(0,"参数错误"); } $guild_subsidy_config = db::name($this->table_guild_subsidy_config)->where(['id'=>$id])->find(); if(!$guild_subsidy_config){ return V(0,"数据不存在"); } $start_amount = input('start_amount', ""); $end_amount = input('end_amount', ""); $subsidy_ratio = input('subsidy_ratio', ""); $data=[]; if($start_amount != ""){ $data['start_amount'] = $start_amount; } if($end_amount != ""){ $data['end_amount'] = $end_amount; } if($subsidy_ratio != ""){ $data['subsidy_ratio'] = $subsidy_ratio; } $result = db::name($this->table_guild_subsidy_config)->where(['id'=>$id])->update($data); if(!$result){ return V(0,"修改失败"); } return V(1,"成功"); } /* * 工会补贴配置 状态修改 */ public function guild_config_subsidy_status(){ $id = input('id', ''); if($id == ''){ return V(0,"参数错误"); } $status = input('status', ''); if($status == ''){ return V(0,"参数错误"); } $result = db::name($this->table_guild_subsidy_config)->where(['id'=>$id])->update(['status'=>$status]); if(!$result){ return V(0,"修改失败"); } return V(1,"成功"); } /* * 工会周补贴列表 */ public function guild_subsidy_list(){ $page = input('page', 1); $page_limit = input('page_limit', 30); $search_user_id = input('search_user_id', ''); $search_guild_id = input('search_guild_id', ''); $search_status_time = input('search_status_time', ''); $search_end_time = input('search_end_time', ''); $search_status = input('search_status', ''); $where = ['b.delete_time'=>0]; if($search_user_id){ $where['b.user_id'] = $search_user_id; } if($search_guild_id){ $where['a.guild_id'] = $search_guild_id; } if($search_status_time){ $where['a.start_time'] = ['>=', $search_status_time]; } if($search_end_time){ $where['a.end_time'] = ['<=', $search_end_time]; } if($search_status){ $where['a.status'] = $search_status; } $count = db::name($this->table_guild_subsidy)->alias('a') ->join('vs_guild b','a.guild_id = b.id') ->where($where) ->count(); $lists_data = db::name($this->table_guild_subsidy)->alias('a') ->join('vs_guild b','a.guild_id = b.id') ->where($where) ->order('a.id desc') ->field('a.*,b.guild_name,b.user_id,b.guild_special_id') ->page($page,$page_limit) ->select(); $lists = []; foreach ($lists_data as $key => $value) { $lists[$key]['id'] = $value['id']; $lists[$key]['user_id'] = $value['user_id']; $lists[$key]['user_name'] = model('user')->where(['id'=>$value['user_id']])->value('nickname'); $lists[$key]['guild_id'] = $value['guild_special_id']; $lists[$key]['guild_name'] = $value['guild_name']; $lists[$key]['total_transaction'] = $value['total_transaction']; $lists[$key]['subsidy_amount'] = $value['subsidy_amount']; $lists[$key]['time'] = date('Y-m-d',strtotime($value['start_time'])) .'~'.date('Y-m-d',strtotime($value['end_time'])); $lists[$key]['status'] = $value['status']; $lists[$key]['status_str'] = $value['status'] ? '已发放' : '未发放'; } $return_data = [ 'page' =>$page, 'page_limit' => $page_limit, 'count' => $count, 'lists' => $lists ]; return V(1,"成功", $return_data); } /* * 补贴发放 */ public function subsidy_give(){ $id = input('id'); $status = input('status', 0); $remark = input('remark', 0); if(!$id){ return V(0,"参数错误"); } $data = db::name($this->table_guild_subsidy)->alias('a') ->join('vs_guild b','a.guild_id = b.id') ->where(['a.id'=>$id]) ->field('a.subsidy_amount,b.user_id,a.status,a.id') ->find(); if(!$data){ return V(0,"参数错误"); } if($data['status']!=0){ return V(0,"该申请已处理"); } Db::startTrans(); try{ if($status==1){ //发放处理用户资金 $reslut = model('common/UserWallet')->change_user_money($data['user_id'], $data['subsidy_amount'], model('common/UserWallet')::MONEYTYPEARNINGS, model('common/UserWallet')::GUILD_SUBSIDY,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::GUILD_SUBSIDY)); if ($reslut['code'] != 1) { Db::rollback(); return V($reslut['code'],$reslut['msg']); } } $res = DB::name($this->table_guild_subsidy)->where('id', $id)->update([ 'status' => $status, 'remark' => $remark ]); if($res){ Db::commit(); return V(1,"操作成功"); }else{ Db::rollback(); return V(0,"操作失败"); } } catch (Exception $e) { Db::rollback(); return V(0,$e->getMessage()); } } /* * 批量补贴发放 */ public function subsidy_give_batch() { $ids = input('ids'); $status = input('status', 0); $remark = input('remark', 0); $ids = explode(',', $ids); if (!$ids) { return V(0, "参数错误"); } $data = db::name($this->table_guild_subsidy)->alias('a') ->join('vs_guild b','a.guild_id = b.id') ->whereIn('guild_id',$ids) ->field('a.subsidy_amount,b.user_id,a.status,a.id') ->select(); if (!$data) { return V(0, "参数错误"); } Db::startTrans(); try { foreach ($data as $key => $value) { if ($value['status'] != 0) { continue; } if($status==1){ //发放处理用户资金 $reslut = model('common/UserWallet')->change_user_money($value['user_id'], $value['subsidy_amount'], model('common/UserWallet')::MONEYTYPEARNINGS, model('common/UserWallet')::GUILD_SUBSIDY,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::GUILD_SUBSIDY)); if ($reslut['code'] != 1) { Db::rollback(); return V($reslut['code'],$reslut['msg']); } } } $res = DB::name($this->table_guild_subsidy)->whereIn('id', $ids)->where('status', 0)->update([ 'status' => $status, 'remark' => $remark ]); if($res){ Db::commit(); return V(1,"操作成功"); }else{ Db::rollback(); return V(0,"操作失败"); } } catch (Exception $e) { Db::rollback(); return V(0, $e->getMessage()); } } }