用户实名注册限制
邀请收益规则调整 新手任务领取限制 红包功能调整 元旦换肤
This commit is contained in:
@@ -75,6 +75,22 @@ class Theme extends controller
|
||||
$reslut['theme_name'] = $theme['theme_name'];
|
||||
$reslut['is_open'] = 1;
|
||||
}
|
||||
return V(1,'操作成功', $reslut);
|
||||
|
||||
//版本号
|
||||
$app_version = request()->header('App-Version');
|
||||
$system = request()->header('system');
|
||||
$api_version = 0;
|
||||
if ($system == 'iOS') {
|
||||
$api_versions = db::name('version')->where(['type' => 2, 'status' => 1])->order('id', 'desc')->find();
|
||||
//app的版本和用户使用的当前版本比对
|
||||
//$api_versions['newversion'] 是数据库当前的版本 也是用户使用的版本
|
||||
//$app_version 有可能是appstore里面的审核版本 审核版本比用户的版本高
|
||||
//审核版本给前端返回1
|
||||
$result = version_compare($api_versions['newversion'],$app_version);
|
||||
if ($result < 0) {//-1:前面版本小于后面版本,0:相等,1:前面版本大于后面版本
|
||||
$api_version = 1;
|
||||
}
|
||||
}
|
||||
return V(1,'操作成功', $reslut,$api_version);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -888,7 +888,7 @@ class Guild extends Model
|
||||
* @return array
|
||||
*/
|
||||
public function user_is_join($user_id){
|
||||
$guild = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'delete_time'=>0])->find();
|
||||
$guild = Db::name('vs_guild_user')->where(['user_id'=>$user_id,'delete_time'=>0])->order('apply_time desc,id desc')->find();
|
||||
if(empty($guild)){
|
||||
return 0;
|
||||
}else{
|
||||
|
||||
@@ -58,6 +58,11 @@ class Invited extends Model
|
||||
|
||||
//下级充值推荐人收益计算
|
||||
public function invited_reward($sub_user_id,$money){
|
||||
//查询下级用户充值总金额
|
||||
$sub_user_all_money = db::name('vs_user_recharge')->where('pay_status',2)->sum('money');
|
||||
if($sub_user_all_money > 1000){
|
||||
return ['code' => 1, 'msg' => "下级充值金额大于1000元不需返利", 'data' => null];
|
||||
}
|
||||
//查询上级
|
||||
$invited_user_id = $this->where('sub_user_id', $sub_user_id)->value('user_id');
|
||||
if(!$invited_user_id){
|
||||
|
||||
@@ -106,6 +106,14 @@ class Tasks extends Model
|
||||
$reslut['gift_box_list'][$key]['status_str'] = '已用完('.$reslut['gift_box_list'][$key]['taday_number'].'/'.$ext['num'].')';
|
||||
}
|
||||
}
|
||||
//判断用户是否实名认证,并查询用户手机号下的用户
|
||||
$is_real = model('UserData')->real_name_info($user_id);
|
||||
if($is_real['code']==1){
|
||||
if($is_real['data']['is_real'] ==1){
|
||||
$user_ids = db::name('vs_user')->where('mobile',$is_real['mobile'])->column('id');
|
||||
}
|
||||
}
|
||||
|
||||
//任务列表
|
||||
$data = db::name('vs_tasks')
|
||||
->field('id as task_id,icon,task_name,target_quantity,task_type,jump_type,tasks_bag_id')
|
||||
@@ -141,7 +149,11 @@ class Tasks extends Model
|
||||
->whereTime('createtime', 'today')
|
||||
->find();
|
||||
}else{
|
||||
$user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id',$user_id)->where('task_id',$v['task_id'])->find();
|
||||
if($v['task_type'] == 1 && count($user_ids)>1){
|
||||
$user_daily_tasks = Db::name('vs_tasks_user_daily')->whereIn('user_id',$user_ids)->where('task_id',$v['task_id'])->find();
|
||||
}else{
|
||||
$user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id',$user_id)->where('task_id',$v['task_id'])->find();
|
||||
}
|
||||
if($v['jump_type']==4){
|
||||
//跳转的房间路径
|
||||
$v['from_id'] = model('api/Room')->task_jump_room_recommend($v['task_id']);
|
||||
@@ -322,7 +334,20 @@ class Tasks extends Model
|
||||
if($task_info['task_type']==2){
|
||||
$user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id',$user_id)->where('task_id',$task_id)->whereTime('createtime', 'today')->find();
|
||||
}else{
|
||||
$user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id',$user_id)->where('task_id',$task_id)->find();
|
||||
if($task_info['task_type'] == 1){
|
||||
//判断用户是否实名认证,并查询用户手机号下的用户
|
||||
$is_real = model('UserData')->real_name_info($user_id);
|
||||
if($is_real['code']==1){
|
||||
if($is_real['data']['is_real'] ==1){
|
||||
$user_ids = db::name('vs_user')->where('mobile',$is_real['mobile'])->column('id');
|
||||
$user_daily_tasks = Db::name('vs_tasks_user_daily')->whereIn('user_id',$user_ids)->where('task_id',$task_id)->find();
|
||||
if($user_daily_tasks){
|
||||
return ['code' => 0, 'msg' => '您已完成该任务','data' => null];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id', $user_id)->where('task_id', $task_id)->find();
|
||||
}
|
||||
$is_completed = 0;
|
||||
$completion_time = null;
|
||||
@@ -415,6 +440,8 @@ class Tasks extends Model
|
||||
}else{
|
||||
if($is_real['data']['is_real'] !=1){
|
||||
return ['code' => 0, 'msg' => '请先实名认证','data' => null];
|
||||
}else{
|
||||
$user_ids = db::name('vs_user')->where('mobile',$is_real['mobile'])->column('id');
|
||||
}
|
||||
}
|
||||
$task_info = Db::name('vs_tasks')->where('id',$task_id)->find();
|
||||
@@ -460,7 +487,11 @@ class Tasks extends Model
|
||||
if($task_info['task_type']==2){
|
||||
$user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id',$user_id)->where('task_id',$task_id)->whereTime('createtime', 'today')->find();
|
||||
}else{
|
||||
$user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id',$user_id)->where('task_id',$task_id)->find();
|
||||
if($task_info['task_type'] == 1 && count($user_ids)>1){
|
||||
$user_daily_tasks = Db::name('vs_tasks_user_daily')->whereIn('user_id',$user_ids)->where('task_id',$task_id)->find();
|
||||
}else{
|
||||
$user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id',$user_id)->where('task_id',$task_id)->find();
|
||||
}
|
||||
}
|
||||
if (!$user_daily_tasks) {
|
||||
return ['code' => 0, 'msg' => '请完成该任务','data' => null];
|
||||
@@ -471,9 +502,20 @@ class Tasks extends Model
|
||||
if ($user_daily_tasks['is_claimed'] == 1) {
|
||||
return ['code' => 0, 'msg' => '您已领取该奖励','data' => null];
|
||||
}
|
||||
if($user_daily_tasks['user_id'] != $user_id && $task_info['task_type']== 1){
|
||||
return ['code' => 0, 'msg' => '请用您的另一个实名认证账号领取,此账号无权领取','data' => null];
|
||||
}
|
||||
}
|
||||
Db::startTrans();
|
||||
|
||||
// 使用更严格的事务处理,统一加锁顺序
|
||||
$lockKey = 'task_receive_' . $user_id . '_' . $task_id . ($student_id ? '_' . $student_id : '');
|
||||
$lock = cache($lockKey);
|
||||
if ($lock) {
|
||||
return ['code' => 0, 'msg' => '操作过于频繁,请稍后再试','data' => null];
|
||||
}
|
||||
cache($lockKey, 1, 2); // 2秒锁
|
||||
try {
|
||||
Db::startTrans();
|
||||
if($task_id==24){
|
||||
//师徒任务
|
||||
$reslut = Db::name('vs_user_sign_task')->where('id',$user_sign_task['id'])->update([
|
||||
@@ -481,6 +523,7 @@ class Tasks extends Model
|
||||
]);
|
||||
if (!$reslut) {
|
||||
Db::rollback();
|
||||
cache($lockKey, null);
|
||||
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
|
||||
}
|
||||
Db::name('vs_tasks_user_daily')->insert([
|
||||
@@ -529,6 +572,7 @@ class Tasks extends Model
|
||||
]);
|
||||
if (!$reslut) {
|
||||
Db::rollback();
|
||||
cache($lockKey, null);
|
||||
return ['code' => 0, 'msg' => '操作失败', 'data' => null];
|
||||
}
|
||||
}
|
||||
@@ -538,6 +582,7 @@ class Tasks extends Model
|
||||
$op_bag_re = $this->open_tasks_bag($user_id,$task_info['tasks_bag_id']);
|
||||
if ($op_bag_re['code'] != 1) {
|
||||
Db::rollback();
|
||||
cache($lockKey, null);
|
||||
return ['code' => 0, 'msg' => $op_bag_re['msg'], 'data' => null];
|
||||
}
|
||||
}else{
|
||||
@@ -546,15 +591,18 @@ class Tasks extends Model
|
||||
$res = model('common/UserWallet')->change_user_money($user_id, $user_sign_task['value'], model('common/UserWallet')::MONEYTYPEARNINGS, model('common/UserWallet')::SIGN_MASTER_DAILY_RETURN,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::SIGN_MASTER_DAILY_RETURN)." 第".$user_sign_task['times']."天");
|
||||
if ($res['code'] != 1) {
|
||||
Db::rollback();
|
||||
cache($lockKey, null);
|
||||
return ['code' => 0, 'msg' => $res['msg'], 'data' => null];
|
||||
}
|
||||
}
|
||||
// 提交事务
|
||||
Db::commit();
|
||||
cache($lockKey, null);
|
||||
return ['code' => 1, 'msg' => "领取成功", 'data' => null];
|
||||
}catch (\Exception $e) {
|
||||
// 回滚事务
|
||||
Db::rollback();
|
||||
cache($lockKey, null);
|
||||
return ['code' => 0, 'msg' => "请重试", 'data' => null];
|
||||
}
|
||||
}
|
||||
@@ -905,7 +953,7 @@ class Tasks extends Model
|
||||
->where(['user_id'=>$user_id,'is_claimed'=>0,'is_completed'=>1])
|
||||
->where('task_id', 'in', $daily_task_ids)
|
||||
->whereTime('createtime', 'today')
|
||||
->count();
|
||||
->count('id');
|
||||
$task_user_count += $daily_task_count;
|
||||
}
|
||||
|
||||
@@ -926,7 +974,7 @@ class Tasks extends Model
|
||||
$task_user = Db::name('vs_tasks_user_daily')
|
||||
->where(['user_id'=>$user_id,'is_claimed'=>0,'is_completed'=>1])
|
||||
->where('task_id',$v['task_id'])
|
||||
->count();
|
||||
->count('id');
|
||||
}
|
||||
$task_user_count +=$task_user;
|
||||
}
|
||||
|
||||
@@ -283,7 +283,10 @@ class UserData extends Model
|
||||
}else{
|
||||
$is_real = false;
|
||||
}
|
||||
|
||||
$mobile_count = db::name('user')->where(['mobile' => $new_mobile,'status'=>1])->count('id');
|
||||
if($mobile_count>=2){
|
||||
return ['code' => 0, 'msg' => '该手机号已存在两个以上的账号!请使用其他手机号!','data' =>null];
|
||||
}
|
||||
if($is_real){
|
||||
//开启事务
|
||||
db::startTrans();
|
||||
@@ -314,9 +317,13 @@ class UserData extends Model
|
||||
return ['code' => 0, 'msg' => '请先绑定手机号','data' =>null];
|
||||
}
|
||||
$card_id_count = db::name('user_auth')->where(['card_id' => $id_card,'is_real' => 1])->count();
|
||||
if($card_id_count >= 3){
|
||||
if($card_id_count >= 2){
|
||||
return ['code' => 0, 'msg' => '该身份证实名已达上限!','data' =>null];
|
||||
}
|
||||
$mobile_count = db::name('user')->where(['mobile' => $user_mobile,'status'=>1])->count('id');
|
||||
if($mobile_count >= 2){
|
||||
return ['code' => 0, 'msg' => '该手机号已绑定多个账号!请勿重复注册!','data' =>null];
|
||||
}
|
||||
//查询是否已经提交过数据了
|
||||
$is_real = db::name('user_auth')->where(['card_id' => $id_card,'mobile' =>$user_mobile])->find();
|
||||
if($is_real){
|
||||
|
||||
@@ -51,12 +51,12 @@ class UserWallet extends Model
|
||||
// 8.礼盒奖励 9.房间补贴 10.购买礼物 11.收礼增加收益 12.工会补贴 13.转赠金币(接收) 14.收益兑换
|
||||
// 15.首充 16.天降好礼充值 17.退出工会扣款 18.房主收益 19.主持人收益,20.发布头条扣除余额,21.公会长收益,22.提现驳回或提现失败返还,23.财富等级奖励金币领取,24.删除关系扣金币
|
||||
//27.小时榜获得,28-新人充值好礼,32-发红包(金币),29-发红包(钻石),30-抢红包(金币),31-抢红包(钻石) 33-红包剩余退回(金币),34-红包剩余退回(钻石)
|
||||
//50-签约 51-签约失败退回,52-首次被签约收入 53-师徒签到 54-叛徒补偿,55-徒弟收礼返佣,56-续约,57签到,58爆币
|
||||
//50-签约 51-签约失败退回,52-首次被签约收入 53-师徒签到 54-叛徒补偿,55-徒弟收礼返佣,56-续约,57签到,58爆币,59红包手续费
|
||||
if($gift_type == 1){ //1金币,2收益(钻石)
|
||||
if($in_out_type == 1){//1收入
|
||||
$in_out_types = [2,5,6,8,13,14,15,16,22,23,26,27,30,28,33,51,57,58];
|
||||
}elseif($in_out_type == 2){//2支出
|
||||
$in_out_types = [4,7,10,17,20,24,25,32,50,56];
|
||||
$in_out_types = [4,7,10,17,20,24,25,32,50,56,59];
|
||||
}
|
||||
}elseif($gift_type == 2){ //1金币,2收益(钻石)
|
||||
if($in_out_type == 1){//1收入
|
||||
|
||||
@@ -48,18 +48,26 @@ class Redpacket extends Model
|
||||
// var_dump($data);exit;
|
||||
Db::startTrans();
|
||||
try {
|
||||
//发红包最小金额
|
||||
$minAmount = get_system_config_value('red_packet_min_amount') ?? 0;
|
||||
//发红包手续费
|
||||
$fee = get_system_config_value('red_packet_fee') ?? 0;
|
||||
|
||||
// 验证用户余额
|
||||
$wallet = Db::name('user_wallet')->where('user_id', $data['user_id'])->find();
|
||||
|
||||
$coinField = $data['coin_type'] == self::COIN_GOLD ? 'coin' : 'earnings';
|
||||
if ($wallet[$coinField] < $data['total_amount']) {
|
||||
if($data['total_amount'] < $minAmount){
|
||||
return ['code' => 0, 'msg' => '红包金额不能小于'.$minAmount, 'data' => null];
|
||||
}
|
||||
if ($wallet[$coinField] < $data['total_amount']+$fee) {
|
||||
return ['code' => 0, 'msg' => '余额不足', 'data' => null];
|
||||
}
|
||||
|
||||
// 扣除余额
|
||||
$delres = Db::name('user_wallet')
|
||||
->where('user_id', $data['user_id'])
|
||||
->dec($coinField, $data['total_amount'])
|
||||
->dec($coinField, $data['total_amount']+$fee)
|
||||
->update();
|
||||
//记录日志 32-发红包(金币),29-发红包(钻石),30-抢红包(金币),31-抢红包(钻石)
|
||||
//记录用户金币日志
|
||||
@@ -73,8 +81,20 @@ class Redpacket extends Model
|
||||
'remarks' => $data['coin_type'] == self::COIN_GOLD ? '金币(发红包)' : '钻石(发红包)',
|
||||
'createtime' => time()
|
||||
];
|
||||
|
||||
$res = Db::name('vs_user_money_log')->insert($data_log);
|
||||
//记录手续费日志
|
||||
$data_log = [
|
||||
'user_id' => $data['user_id'],
|
||||
'change_value' => $fee,
|
||||
'room_id' => $data['room_id'],
|
||||
'money_type' => $data['coin_type'],
|
||||
'change_type' => model('common/UserWallet')::RED_PACKET_FEE ,
|
||||
'from_id' => $data['room_id'],
|
||||
'remarks' => model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::RED_PACKET_FEE),
|
||||
'createtime' => time()
|
||||
];
|
||||
$res = Db::name('vs_user_money_log')->insert($data_log);
|
||||
|
||||
if(!$res || !$delres){
|
||||
Db::rollback();
|
||||
}
|
||||
|
||||
@@ -110,6 +110,8 @@ class UserWallet extends Model
|
||||
const DAILY_SIGN = 57;
|
||||
//爆币
|
||||
const BOMB_COIN = 58;
|
||||
//红包手续费
|
||||
const RED_PACKET_FEE = 59;
|
||||
|
||||
|
||||
|
||||
@@ -124,6 +126,7 @@ class UserWallet extends Model
|
||||
self::RED_PACKET_COIN,
|
||||
self::SIGN,
|
||||
self::RENEWAL,
|
||||
self::RED_PACKET_FEE,
|
||||
];
|
||||
//钻石支出类型数组
|
||||
public $diamond_consumption_type_array = [
|
||||
@@ -196,6 +199,8 @@ class UserWallet extends Model
|
||||
self::RENEWAL => '续约',
|
||||
self::DAILY_SIGN => '每日签到',
|
||||
self::BOMB_COIN => '参与幸运币活动获得',
|
||||
self::RED_PACKET_FEE => '发红包手续费'
|
||||
|
||||
|
||||
];
|
||||
if($type){
|
||||
|
||||
@@ -693,4 +693,94 @@ class Test
|
||||
echo $time_value . "工会周补贴数据生成完成-共" . $data_count . "条数据\n";
|
||||
}
|
||||
|
||||
/*
|
||||
* 生成工会补贴数据
|
||||
* 配置:定时脚本每周一 执行
|
||||
* 配置:/cron/Subsidy/createGuildSubsidyData
|
||||
*/
|
||||
public function createGuildSubsidyDataNew(){
|
||||
//获取上周第一天时间
|
||||
$week_start_time = strtotime('last week Monday');
|
||||
$week_end_time = strtotime(date('Y-m-d 23:59:59',strtotime('last week Sunday')));
|
||||
|
||||
// $week_start_time = strtotime('2025-12-08');
|
||||
// $week_end_time = strtotime('2025-12-15');
|
||||
|
||||
// $week_start_time = strtotime('2025-12-15');
|
||||
// $week_end_time = strtotime('2025-12-22');
|
||||
|
||||
//获取上周时间
|
||||
$time_value = date('o-W', $week_start_time);
|
||||
echo $time_value . "工会周补贴数据生成开始\n";
|
||||
//查询所有工会
|
||||
$guild_list = db::name('vs_guild')->where(['delete_time'=>0])->field('id')->select();
|
||||
$data_count = 0;
|
||||
foreach ($guild_list as $key => $value) {
|
||||
//获取所有工会房间ID
|
||||
$guild_user_data = db::name('vs_guild_user')->where('guild_id', $value['id'])->where(['apply_time'=>['>',0],'status'=>1,'room_id'=>['>',0]])->field('room_id,apply_time,quit_time')->select();
|
||||
$transaction = 0;
|
||||
foreach ($guild_user_data as $k => $v) {
|
||||
$week_start_time_seach = $week_start_time;
|
||||
$week_end_time_seach = $week_end_time;
|
||||
if($v['apply_time'] && $week_end_time_seach < $v['apply_time']){
|
||||
continue;
|
||||
}
|
||||
if($v['quit_time'] && $v['quit_time'] < $week_start_time_seach){
|
||||
continue;
|
||||
}
|
||||
if($v['apply_time'] && $week_start_time_seach < $v['apply_time']){
|
||||
$week_start_time_seach = $v['apply_time'];
|
||||
}
|
||||
if($v['quit_time'] && ($week_end_time_seach > $v['quit_time'])){
|
||||
$week_end_time_seach = $v['quit_time'];
|
||||
}
|
||||
$transaction_one = db::name('vs_give_gift')
|
||||
->whereIn('from_id',$v['room_id'])
|
||||
->where(['from'=>['in',[2,3,6]],'createtime' => ['between', [$week_start_time_seach, $week_end_time_seach]]])
|
||||
->sum('total_price');
|
||||
$transaction += $transaction_one;
|
||||
}
|
||||
|
||||
if($transaction > 0){
|
||||
//判断是否已经生成过
|
||||
if (db::name('vs_guild_subsidy')->where(['guild_id'=>$value['id'],'week'=>$time_value])->find()) {
|
||||
continue;
|
||||
}
|
||||
//获取补贴配置
|
||||
$config = db::name('vs_guild_subsidy_config')->where(['status' => 1])->order('end_amount desc')->select(); //配置查询
|
||||
if (!$config) {
|
||||
echo '补贴配置为空\n';
|
||||
die;
|
||||
}
|
||||
$subsidy_ratio = 0;
|
||||
$subsidy_amount = 0;
|
||||
foreach ($config as $k => $v) {
|
||||
if ($transaction >= $v['end_amount']) {
|
||||
$subsidy_ratio = $v['subsidy_ratio'];
|
||||
$subsidy_amount = ($transaction * ($subsidy_ratio / 100)) / get_system_config_value('rmb_coin_ratio');//转为钻石
|
||||
break; // 找到匹配项后提前退出循环
|
||||
}
|
||||
}
|
||||
//生成补贴数据
|
||||
$data = [
|
||||
'guild_id' => $value['id'],
|
||||
'week' => $time_value,
|
||||
'start_time' => date('Y-m-d H:i:s', $week_start_time),
|
||||
'end_time' =>date('Y-m-d H:i:s', $week_end_time),
|
||||
'total_transaction' => $transaction,
|
||||
'subsidy_amount' => $subsidy_amount,
|
||||
'subsidy_ratio' => $subsidy_ratio,
|
||||
'status' => 0,
|
||||
'createtime' => time(),
|
||||
];
|
||||
echo "工会".$value['id']."生成数据:流水金额:{$transaction} 补贴比例:{$subsidy_ratio}% 补贴金额:{$subsidy_amount}\n";
|
||||
// $subsidy_id = Db::name('vs_guild_subsidy_1')->insertGetId($data);。。。。11
|
||||
// if ($subsidy_id) {
|
||||
// echo "工会".$value['id']."生成成功(补贴ID:".$subsidy_id." 补贴金额:".$subsidy_amount.")\n";
|
||||
// $data_count++;
|
||||
// }
|
||||
}
|
||||
}
|
||||
echo $time_value . "工会周补贴数据生成完成-共" . $data_count . "条数据\n";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user