where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => &$v) { } $data = []; $data['count'] = db::name('gift_multiple_type')->where($map)->count(); $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //编辑类型 public function edit_gift_multiple_type($data) { if (empty($data)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $info = db::name('gift_multiple_type')->find($data['id']); if (empty($info)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $update_data = []; $update_data['name'] = $data['name']; $update_data['update_time'] = time(); $reslut = db::name('gift_multiple_type')->where(['id' => $data['id']])->update($update_data); if (!$reslut) { return ['code' => 201, 'msg' => '修改失败', 'data' => null]; } else { return ['code' => 200, 'msg' => '修改成功', 'data' => null]; } } //添加类型 public function add_gift_multiple_type($data) { $add_data = []; $add_data['name'] = $data['name']; $add_data['update_time'] = time(); $add_data['add_time'] = time(); $reslut = db::name('gift_multiple_type')->insert($add_data); if (!$reslut) { return ['code' => 201, 'msg' => '添加失败', 'data' => null]; } else { return ['code' => 200, 'msg' => '添加成功', 'data' => null]; } } //获取类型信息 public function get_gift_multiple_type_info($id) { if (empty($id)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $info = db::name('gift_multiple_type')->where(['id' => $id])->find(); return ['code' => 200, 'msg' => '获取成功', 'data' => $info]; } //删除类型 public function del_gift_multiple_type($id) { if (empty($id)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $reslut = db::name('gift_multiple_type')->where(['id' => $id])->update(['is_delete' => 2, 'update_time' => time()]); if (!$reslut) { return ['code' => 201, 'msg' => '删除失败', 'data' => null]; } else { return ['code' => 200, 'msg' => '删除成功', 'data' => null]; } } //列表 public function get_gift_multiple_rate_list($pid, $order, $sort, $page = 1, $limit = 20) { set_time_limit(0); ini_set('memory_limit', '1024M'); $redis = connectionRedis(); $map = []; if (!empty($pid)) { $map[] = ['pid', '=', $pid]; } $map[] = ['is_delete', '=', 1]; $count = db::name('gift_multiple_rate')->where($map)->sum('rate_num'); $list = db::name('gift_multiple_rate')->where($map)->order($order, $sort)->page($page, $limit)->select(); $total_unopen_num = 0; $total_open_num = 0; foreach ($list as $k => &$v) { $v['rate'] = round(($v['rate_num']/$count),6)*100; $v['rate'] = $v['rate'].'%'; $un_redis_list = []; if(in_array($v['pid'],$un_redis_list)){ $v['unopen_num'] = $v['rate_num']; $v['open_num'] = $v['rate_num']; }else{ $keyname = "multiple:list:type:".$v['pid']; $redis_data_list = $redis->Lrange($keyname, 0, -1); $redis_gift_data = []; foreach ($redis_data_list as $a => $b) { $gift_data = explode('-', $b); if (empty($redis_gift_data[$gift_data[1]])) { $redis_gift_data[$gift_data[1]] = 1; } else { $redis_gift_data[$gift_data[1]]++; } } if (empty($redis_gift_data[$v['multiple']])) { $v['unopen_num'] = 0; } else { $v['unopen_num'] = $redis_gift_data[$v['multiple']]; } // $total_unopen_num += $v['unopen_num']; $sum_num = $count; if(count($redis_data_list) > $sum_num){ $count_redis_data_list = count($redis_data_list); $place = ceil($count_redis_data_list/$sum_num); $v['open_num'] = $v['rate_num']*$place - $v['unopen_num']; }else{ $v['open_num'] = $v['rate_num'] - $v['unopen_num']; } // $total_open_num += $v['open_num']; } } $data = []; $data['count'] = db::name('gift_multiple_rate')->where($map)->count(); $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //编辑 public function edit_gift_multiple_rate($data) { if (empty($data)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $info = db::name('gift_multiple_rate')->find($data['id']); if (empty($info)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $map = []; $map[] = ['multiple', '=', $data['multiple']]; $map[] = ['pid', 'neq', $info['pid']]; $map[] = ['is_delete', '=', 1]; $gift_multiple_rate = db::name('gift_multiple_rate')->where($map)->find(); if($gift_multiple_rate){ return ['code' => 201, 'msg' => '该倍率已添加过', 'data' => null]; } // dump($data);exit; $update_data = []; $update_data['multiple'] = $data['multiple']; $update_data['rate_num'] = $data['rate_num']; $update_data['update_time'] = time(); $reslut = db::name('gift_multiple_rate')->where(['id' => $data['id']])->update($update_data); if (!$reslut) { return ['code' => 201, 'msg' => '修改失败', 'data' => null]; } else { return ['code' => 200, 'msg' => '修改成功', 'data' => null]; } } //添加 public function add_gift_multiple_rate($data) { $map = []; $map[] = ['pid', '=', $data['pid']]; $map[] = ['multiple', '=', $data['multiple']]; $map[] = ['is_delete', '=', 1]; $gift_multiple_rate = db::name('gift_multiple_rate')->where($map)->find(); if($gift_multiple_rate){ return ['code' => 201, 'msg' => '该倍率已添加过', 'data' => null]; } $add_data = []; $add_data['pid'] = $data['pid']; $add_data['multiple'] = $data['multiple']; $add_data['rate_num'] = $data['rate_num']; $add_data['update_time'] = time(); $add_data['add_time'] = time(); $reslut = db::name('gift_multiple_rate')->insert($add_data); if (!$reslut) { return ['code' => 201, 'msg' => '添加失败', 'data' => null]; } else { return ['code' => 200, 'msg' => '添加成功', 'data' => null]; } } //获取信息 public function get_gift_multiple_rate_info($id) { if (empty($id)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $info = db::name('gift_multiple_rate')->where(['id' => $id])->find(); return ['code' => 200, 'msg' => '获取成功', 'data' => $info]; } //删除 public function del_gift_multiple_rate($id) { if (empty($id)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $reslut = db::name('gift_multiple_rate')->where(['id' => $id])->update(['is_delete' => 2, 'update_time' => time()]); if (!$reslut) { return ['code' => 201, 'msg' => '删除失败', 'data' => null]; } else { return ['code' => 200, 'msg' => '删除成功', 'data' => null]; } } // public function get_user_send_gift_rate_list($uid, $room_id, $room_uid, $receive_uid, $gid, $gift_name, $start, $end, $order, $sort, $page = 1, $limit = 20) { $map = []; if (!empty($uid)) { $map[] = ['a.uid', '=', $uid]; } if (!empty($room_id)) { $map[] = ['c.room_number', '=', $room_id]; } if (!empty($room_uid)) { $map[] = ['a.room_uid', '=', $room_uid]; } if (!empty($receive_uid)) { $map[] = ['a.receive_uid', '=', $receive_uid]; } if (!empty($gid)) { $map[] = ['a.gid', '=', $gid]; } if (!empty($gift_name)) { $map[] = ['a.gift_name', 'like', '%' . $gift_name . '%']; } if (!empty($start)) { $map[] = ['a.add_time', '>=', strtotime($start)]; } if (!empty($end)) { $map[] = ['a.add_time', '<=', strtotime($end)]; } if (empty($order)) { $order = 'a.sid'; } if (empty($sort)) { $sort = 'desc'; } $list = db::name('user_send_gift_rate') ->alias('a')->join('yy_user b', 'a.uid = b.uid')->join('yy_room c', 'a.rid = c.rid') ->field('a.*,b.nick_name,c.room_name')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => $v) { $list[$k]['user_nick_name'] = $v['uid'] . '-' . $v['nick_name']; } $data = []; $data['list'] = $list; $totalRowData = db::name('user_send_gift_rate')->alias('a')->join('yy_user b', 'a.uid = b.uid')->join('yy_room c', 'a.rid = c.rid')->field('count(a.sid) as count,SUM(a.gift_num) as gift_num,SUM(a.gift_total_price) as gift_total_price,SUM(a.win_price) as win_price,SUM(a.room_owner_profit) as room_owner_profit, SUM(a.room_host_profit) as room_host_profit, SUM(a.receiver_profit) as receiver_profit')->where($map)->find(); $data['count'] = $totalRowData['count']; unset($totalRowData['count']); //dump($totalRowData); $data['totalRow'] = $totalRowData; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //获取列表 public function room_subsidy($order, $sort, $page, $limit) { $map = []; $map[] = ['is_delete', '=', 1]; $list = db::name('room_subsidy_lucky')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => &$v){ if($v['type'] == 2){ $v['money'] = $v['money'].'%'; } } $data = []; $data['count'] = db::name('room_subsidy_lucky')->where($map)->count(); $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //删除 public function room_subsidy_del($id) { $del = db::name('room_subsidy_lucky')->where(['id' => $id])->update(['is_delete' => 2]); if ($del) { return ['code' => 200, 'msg' => '删除成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '删除失败', 'data' => null]; } } //获取 public function room_subsidy_info($id) { if (empty($id)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $room_subsidy_info = db::name('room_subsidy_lucky')->find($id); return ['code' => 200, 'msg' => '获取成功', 'data' => $room_subsidy_info]; } //修改 public function edit_room_subsidy($id, $level_name, $total_gift_price, $money, $type) { if (empty($id)) { return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $arr = []; $arr['type'] = $type; $arr['level_name'] = $level_name; $arr['total_gift_price'] = $total_gift_price; $arr['money'] = $money; $arr['update_time'] = time(); $upd = db::name('room_subsidy_lucky')->where(['id' => $id])->update($arr); if ($upd) { return ['code' => 200, 'msg' => '修改成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '修改失败', 'data' => null]; } } //添加 public function add_room_subsidy($level_name, $total_gift_price, $money, $type) { $arr = []; $arr['type'] = $type; $arr['level_name'] = $level_name; $arr['total_gift_price'] = $total_gift_price; $arr['money'] = $money; $arr['add_time'] = time(); $add = db::name('room_subsidy_lucky')->insert($arr); if ($add) { return ['code' => 200, 'msg' => '添加成功', 'data' => null]; } else { return ['code' => 201, 'msg' => '添加失败', 'data' => null]; } } //获取列表 public function give_room_subsidy_list($room_number, $uid, $is_delete, $order, $sort, $page, $limit, $start){ $map = []; if(!empty($room_number)){ $rid = db::name('room')->where('room_number', $room_number)->value('rid'); $map[] = ['rid', '=', $rid]; } if(!empty($uid)){ $map[] = ['uid', '=', $uid]; } if(!empty($is_delete)){ $map[] = ['is_delete', '=', $is_delete]; } if(!empty($start)){ $now_time = strtotime($start); $last_week = strtotime('-1 week last sunday', $now_time); $map[] = ['last_week_time', '=', $last_week]; }else{ $now_time = time(); $last_week = strtotime('-1 week last sunday', $now_time); $map[] = ['last_week_time', '=', $last_week]; } $map[] = ['type', '=', 2]; $list = db::name('user_room_week_earnings')->where($map)->order($order, $sort)->page($page, $limit)->select(); foreach ($list as $k => &$v){ $room_info = db::name('room')->find($v['rid']); $v['room_number'] = $room_info['room_number']; $v['room_name'] = mb_convert_encoding(base64_decode($room_info['base64_room_name']), 'UTF-8', 'UTF-8'); $user_info = db::name('user')->find($v['uid']); $v['nick_name'] = mb_convert_encoding(base64_decode($user_info['base64_nick_name']), 'UTF-8', 'UTF-8'); } $data = []; $data['count'] = db::name('user_room_week_earnings')->where($map)->count(); $data['list'] = $list; return ['code' => 200, 'msg' => '获取成功', 'data' => $data]; } //批量结算 public function batch_give_room_subsidy($data){ if(empty($data)){ return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $gid_list = []; foreach ($data as $k => $v){ if(in_array($v['is_delete'], [2])) { return ['code' => 201, 'msg' => '批量结算中包含已发放的', 'data' => null]; } $gid_list[] = $v['id']; } Db::startTrans(); try { $map = []; $map[] = ['id', 'in', $gid_list]; $map[] = ['is_delete', '=', 1]; $list = db::name('user_room_week_earnings')->where($map)->select(); if(!empty($list)){ foreach ($list as $k => $v){ $reslut = model('admin/User')->change_user_money_by_uid($v['uid'], $v['user_earnings'], 1, 35, '房间幸运补贴收益', $v['uid'], 0, $v['rid']); if ($reslut['code'] == 201) { Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } $reslut = db::name('user_room_week_earnings')->where('id', $v['id'])->update(['is_delete' => 2, 'update_time' => time()]); if (!$reslut) { Db::rollback(); return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null]; } } } // 提交事务 Db::commit(); return ['code' => 200, 'msg' => "发放成功", 'data' => null]; } catch (\Exception $e) { // 回滚事务 Db::rollback(); return ['code' => 201, 'msg' => "发放失败", 'data' => null]; } } //补贴详情 public function get_give_room_subsidy_info($id){ if(empty($id)){ return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $user_room_week_earnings = db::name('user_room_week_earnings')->where('id', $id)->find(); if(!$user_room_week_earnings){ return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } return ['code' => 200, 'msg' => '获取成功', 'data' => $user_room_week_earnings]; } //修改补贴 public function edit_give_room_subsidy($id, $user_earnings){ if(empty($id)){ return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } $user_room_week_earnings = db::name('user_room_week_earnings')->where('id', $id)->find(); if(!$user_room_week_earnings){ return ['code' => 201, 'msg' => '参数异常', 'data' => null]; } if($user_earnings < 0){ return ['code' => 201, 'msg' => '收益不能小于0', 'data' => null]; } if($user_room_week_earnings['is_delete'] == 2){ return ['code' => 201, 'msg' => '该收益已结算,无法编辑', 'data' => null]; } $update = []; $update['user_earnings'] = $user_earnings; $update['update_time'] = time(); $reslut = db::name('user_room_week_earnings')->where('id', $id)->update($update); if($reslut){ return ['code' => 200, 'msg' => '编辑成功', 'data' => null]; }else{ return ['code' => 201, 'msg' => '编辑失败', 'data' => null]; } } //监控宝箱redis list 剩余宝箱数量 生成 //tid 宝箱类型 //is_reset 0不重置 1重置 public function control_gift_multiple($id = 0, $is_reset = 0) { set_time_limit(0); ini_set('memory_limit', '1024M'); $redis = connectionRedis(); // dump($id); // dump($is_reset); // exit; $map = []; if (!empty($id)) { $map[] = ['id', '=', $id]; } $map[] = ['is_delete', '=', 1]; $gift_multiple_type_list = db::name('gift_multiple_type')->where($map)->select(); $list_len = 0; foreach ($gift_multiple_type_list as $k => $v) { $map = []; $map[] = ['pid', '=', $v['id']]; $map[] = ['is_delete', '=', 1]; $gift_multiple_rate_list = Db::name('gift_multiple_rate')->where($map)->select(); $keyname = "multiple:list:type:" . $v['id']; if ($is_reset == 1) { $redis->del($keyname); //如果重置则删除原队列 } //剩余开奖次数少于5000 则补充下一期奖池 if ($redis->llen($keyname) < 500) { $insert_data = []; $total_gift_value = 0; foreach ($gift_multiple_rate_list as $m => $n) { //更新添加次数 for ($q = 0; $q < $n['rate_num']; $q++) { $insert_data[] = $n['multiple']; } } shuffle($insert_data); if (!empty($gift_multiple_rate_list)) { //插入期日志表 $data = []; $data['pid'] = $v['id']; $data['total_num'] = count($insert_data); $data['open_num'] = 0; $data['config_text'] = json_encode($gift_multiple_rate_list); $data['add_time'] = time(); $data['update_time'] = time(); $bl_id = db::name('gift_multiple_log')->insertGetId($data); foreach ($insert_data as $p => $q) { $insert_data[$p] = $bl_id . '-' . $insert_data[$p]; } // shuffle($insert_data); array_unshift($insert_data, $keyname); call_user_func_array([$redis, 'rPush'], $insert_data); } } $list_len = $redis->llen($keyname); //echo date('Y-m-d H:i:s') . " " . $keyname . "宝箱剩余数量:$list_len" . "\r\n"; } return ['code' => 200, 'msg' => '生成成功', 'data' => "剩余数量: $list_len"]; } }