webman_duanju/app/api/model/Invite.php

179 lines
6.5 KiB
PHP

<?php
namespace app\api\model;
use app\common\library\DatabaseRoute;
use app\common\model\Common;
use extend\ba\Random;
use think\facade\Db;
use support\Log;
use think\Model;
class Invite extends Model
{
public static function saveBody($user_id, $inviter)
{
$inviter_model = new self;
$inviter_model->create_time = date('Y-m-d H:i:s');
$inviter_model->state = 0;
$inviter_model->money = 0.00;
$inviter_model->user_id = $inviter['user_id'];
$inviter_model->invitee_user_id = $user_id;
$inviter_model->user_type = 1;
$inviter_model->save();
// 同步二级
if(!empty($inviter['inviter_user_id'])) {
$inviter_level_two = new self;
$inviter_level_two->create_time = date('Y-m-d H:i:s');
$inviter_level_two->state = 0;
$inviter_level_two->money = 0.00;
$inviter_level_two->user_id = $inviter['inviter_user_id'];
$inviter_level_two->invitee_user_id = $user_id;
$inviter_level_two->user_type = 2;
$inviter_level_two->save();
}
$where = $sale = ['user_id' => $inviter['user_id']];
Common::saveDbData('tb_user',
$sale,
['invite_count' => $inviter['invite_count'] + 1 ],
'update',
$where
);
// 金币
$money = CommonInfo::where(['type' => 911])->find()->value;
if($money > 0 && $inviter['user_id'] != 1) {
$for_money = formatTo4Decimal($money);
$insert_data = [
'id' => Random::generateRandomPrefixedId(19),
'user_id' => $inviter['user_id'],
'type' => 1,
'classify' => 1,
'state' => 2,
'money_type' => 2,
'title' => "[分享奖励金币]",
'content' => '获取金币:' . $money,
'money' => $for_money,
'create_time' => date('Y-m-d H:i:s'),
];
$a = Common::saveDbData('user_money_details', $sale, $insert_data);
$usermoney = Common::saveDbData('user_money', $sale, [], 'find', $where);
if($usermoney) {
$user_money_update_data = [
'money' => !empty($usermoney['money'])? $usermoney['money'] + $for_money:$for_money,
'invite_income_coin' => !empty($usermoney['invite_income_coin'])? $usermoney['invite_income_coin'] + $for_money:$for_money,
];
// 更新邀请人钱包
Common::saveDbData('user_money',
$sale,
$user_money_update_data,
'update',
$where
);
}
return true;
}
}
public static function updateInviteMoneySum($userId, $money)
{
$count = DatabaseRoute::getDb('invite_money', $userId)->count();
if (!$count) {
DatabaseRoute::getDb('invite_money', $userId, true)->insert([
'cash_out' => 0,
'user_id' => $userId,
'money' => 0,
'money_sum' => 0
]);
}
$money = floatval($money);
$model = DatabaseRoute::getDb('invite_money', $userId, true, true)->inc('money', $money)->inc('money_sum', $money);
$model->update();
}
// 我的收益
public static function selectInviteMoney($user):array
{
$inviteMoney = InviteMoney::selectInviteMoney($user['user_id']);
$inviteCount = TbUser::GetByuserInvite($user['invitation_code']);
$inviteSignCount = InviteAchievement::GetByInviteAchievementInvite($user['user_id']);
$userMoney = UserMoney::selectUserMoneyfind($user['user_id']);
return returnSuccessData([
'inviteMoney' => $inviteMoney,
'inviteCount' => $inviteCount,
'inviteSignCount' => $inviteSignCount,
'earning' => [
'inviteGoldMoney' => $userMoney['invite_income_coin'],
'inviteMoney' => $userMoney['invite_income_money'],
],
]);
}
// 查看我邀请的人员列表(查看所有邀请列表)
public static function selectInviteByUserIdLists($user, $get, $os)
{
if(empty($get['page']) || empty($get['limit'])) {
return returnErrorData('参数不完整');
}
// 拿到下级列表
$junior_list = TbUser::GetByuserInviteselect($user['invitation_code'], $get['page'], $get['limit']);
$return = [
'currPage' => 1,
'pageSize' => $get['limit'],
'totalCount' => 0,
'totalPage' => 0,
];
if(empty($junior_list)) {
$return['list'] = [];
if($os == 'admin') {
return returnSuccessData(['pageUtils' => $return]);
}else {
return returnSuccessData($return);
}
}
// 下级user_id集合
$junior_user_list = extract_user_ids($junior_list);
Log::info('下级user_id集合'. json_encode($junior_user_list));
$ach_select = DatabaseRoute::getDb('invite_achievement', $user['user_id'])
->where('count', '>=', 3)
->where(['user_id' => $user['user_id']])
->whereIn('target_user_id', $junior_user_list)
->select()
->toArray();
Log::info('签到集合'. json_encode($ach_select));
foreach ($ach_select as $k => &$v) {
$v['user_id'] = (string) $v['user_id'];
}
// 下级user_id集合
$ach_user_list = extract_target_user_ids($ach_select);
Log::info('签到user_id集合---'. json_encode($ach_user_list));
$commonInfoCount = CommonInfo::where(['type' => 913])->find()->value;
$date = date('Y-m-d 00:00:00');
foreach ($junior_list as $k => $v) {
$count = DatabaseRoute::getDb('orders', $v['user_id'])->where(['user_id' => $v['user_id'], 'status' => 1, 'pay_way' => 9])->where('create_time', '>', $date)->count();
$return['list'][] = [
'userId' => $v['user_id'],
'avatar' => $v['avatar'],
'userName' => $v['user_name'],
'recordNum' => in_array($v['user_id'], $ach_user_list)?1:0,
'userTag' => $count >= $commonInfoCount ? 1 : 0,
];
}
if($os == 'admin') {
return returnSuccessData(['pageUtils' => $return]);
}else {
return returnSuccessData($return);
}
}
}