Files
midi-php/application/adminapi/controller/Guild.php
2025-10-20 15:12:17 +08:00

811 lines
31 KiB
PHP

<?php
namespace app\adminapi\controller;
use app\common\controller\adminApi;
use think\Controller;
use think\Db;
use think\Session;
/*
* 工会
*/
class Guild extends adminApi
{
protected $noNeedLogin = [];
protected $noNeedRight = [];
protected $layout = '';
protected $table_guild_subsidy_config = 'vs_guild_subsidy_config';
protected $table_guild_subsidy = 'vs_guild_subsidy';
protected $table_guild_user = 'vs_guild_user';
public function _initialize()
{
parent::_initialize();
//移除HTML标签
$this->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;
$where = [
'user_id' => $user_id,
'delete_time' => 0
];
$where['apply_status'] = 2;//1待审核 2审核通过 3审核失败
$where['type_id'] = ['<>',6];
$room_info = db::name('vs_room')->where($where)->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(),'delete_time'=>time()]);
//解散群
model('api/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']??0;
$rum_lists[$k]['wealth_level']=$user_info['wealth_level']??0;
//用户流水
$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_str = input('search_stime','');
$search_etime_str = 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])->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])->where($where)
// ->page($page, $page_limit)
->select();
if(!$list){
return V(0,"暂无数据");
}
$rum_lists = [];
foreach ($list as $k=>$v){
$search_stime = $search_stime_str;
$search_etime = $search_etime_str;
if($search_stime!=""){
if($search_stime!="" && $v['createtime'] < strtotime($search_stime)){
$search_stime = $search_stime;
}else{
$search_stime = date('Y-m-d H:i:s',$v['createtime']) ;
}
}else{
$search_stime = $search_stime;
}
if($search_etime!=""){
if($v['quit_time']){
if($search_etime!="" && $v['quit_time'] > strtotime($search_etime)){
$search_etime = $search_etime;
}else{
$search_etime = date('Y-m-d H:i:s',$v['quit_time']);
}
}else{
$search_etime = $search_etime;
}
}else{
$search_etime = $search_etime;
}
$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']);
}
usort($rum_lists, function($a, $b) {
return $b['consumption'] - $a['consumption'];
});
//分页
$rum_lists = array_slice($rum_lists, ($page-1)*$page_limit, $page_limit);
$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];
$where = [];
if($search_user_id){
$where['b.user_id'] = $search_user_id;
}
if($search_guild_id){
//$where['a.guild_id'] = $search_guild_id;
$where['b.guild_special_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.total_transaction 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());
}
}
}