Files
mier-php/application/api/model/GuildSubsidy.php

146 lines
6.2 KiB
PHP
Raw Normal View History

2025-08-11 10:22:05 +08:00
<?php
namespace app\api\model;
use think\Db;
use think\Model;
class GuildSubsidy extends Model
{
//统计上周公会流水
public function statistics_guild_last_week_earnings($subsidy_id){
set_time_limit(0);
ini_set('memory_limit', '1024M');
//公会补贴信息
$room_subsidy_info = db::name('guild_subsidy')->where('id', $subsidy_id)->field('id,type,level_name,total_gift_price,money')->where('is_delete', 1)->order('id asc')->select();
$last_week_time = strtotime('-1 week last sunday', time());
//获取所有公会上周流水
$map = [];
$map[] = ['type', '=', 1];
$last_week_income = db::name('room_guild_charm_count_day')->where($map)->field('guild_id,sum(amount) as amount')->whereTime('add_time', 'last week')->group('guild_id')->select();
$insert_all = [];
if(!empty($last_week_income)){
foreach ($last_week_income as $k => $v){
//上周补贴奖励金额
$subsidy_money = 0;
foreach ($room_subsidy_info as $a => &$b){
$money = $b['money'];
if($b['total_gift_price'] > $v['amount']){
break;
}else{
if($b['type'] == 1){
$subsidy_money = $b['money'];
}else{
$subsidy_money = $v['amount'] * $money * 0.001;
}
}
}
//上周是否已添加
$where = [];
$where[] = ['guild_id', '=', $v['guild_id']];
$where[] = ['subsidy_id', '=', $subsidy_id];
$where[] = ['type', '=', 1];
$where[] = ['last_week_time', '=', $last_week_time];
$info = db::name('guild_week_earnings_log')->where($where)->find();
if(empty($info)){
$insert = [];
$insert['guild_id'] = $v['guild_id'];
$insert['type'] = 1;
$insert['subsidy_id'] = $subsidy_id;
$insert['change_value'] = $v['amount'];
$insert['earnings'] = $subsidy_money;
$insert['add_time'] = time();
$insert['last_week_time'] = $last_week_time;
$insert_all[] = $insert;
}
}
if(!empty($insert_all)){
$reslut = db::name('guild_week_earnings_log')->insertAll($insert_all);
if(!$reslut){
echo date('Y-m-d H:i:s').'执行失败';
}
}
}
echo date('Y-m-d H:i:s').'执行成功';
}
//统计公会长收益
public function gives_user_guild_week_earnings($subsidy_id){
set_time_limit(0);
ini_set('memory_limit', '1024M');
$last_week_time = strtotime('-1 week last sunday', time());
//获取未发送的公会上周收益
$map = [];
$map[] = ['subsidy_id', '=', $subsidy_id];
$map[] = ['type', '=', 1];
$map[] = ['is_delete', '=', 1];
$map[] = ['last_week_time', '=', $last_week_time];
$list = db::name('guild_week_earnings_log')->where($map)->select();
if(!empty($list)){
foreach ($list as $k => $v){
if($v['earnings'] > 0){
Db::startTrans();
try {
$insert_all = [];
//公会长获取公会补贴
$deacon_uid = db::name('guild')->where('id', $v['guild_id'])->value('uid');
$surplus_ratio = 100;
$owner_subsidy_money = $v['earnings'] * $surplus_ratio * 0.01;
// $reslut = model('admin/User')->change_user_money_by_uid($room_owner_uid, $owner_subsidy_money, 1, $user_money_log, $remarks, $room_owner_uid, 0, $v['rid']);
// if ($reslut['code'] == 201) {
// Db::rollback();
// return ['code' => 201, 'msg' => $reslut['msg'], 'data' => null];
// }
$insert = [];
$insert['type'] = 1;
$insert['user_type'] = 1;
$insert['guild_id'] = $v['guild_id'];
$insert['subsidy_id'] = $subsidy_id;
$insert['uid'] = $deacon_uid;
$insert['ratio'] = $surplus_ratio;
$insert['change_value'] = $v['change_value'];
$insert['room_earnings'] = $v['earnings'];
$insert['user_earnings'] = $owner_subsidy_money;
$insert['add_time'] = time();
$insert['is_delete'] = 1;
$insert['last_week_time'] = $last_week_time;
$insert_all[] = $insert;
$reslut = db::name('user_guild_week_earnings')->insertAll($insert_all);
if(!$reslut){
Db::rollback();
return ['code' => 201, 'msg' => '失败', 'data' => null];
}
$reslut = db::name('guild_week_earnings_log')->where('id', $v['id'])->update(['is_delete' => 2, 'update_time' => time()]);
if(!$reslut){
Db::rollback();
return ['code' => 201, 'msg' => '失败', 'data' => null];
}
Db::commit();
} catch (\Exception $e) {
// 回滚事务
Db::rollback();
}
}else{
db::name('guild_week_earnings_log')->where('id', $v['id'])->update(['is_delete' => 2, 'update_time' => time()]);
}
}
}
echo date('Y-m-d H:i:s').'执行成功';
}
}