bztang-admin/app/backend/modules/member/controllers/MemberIncomeController.php

159 lines
6.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Created by PhpStorm.
* User: yunzhong
* Date: 2018/3/9
* Time: 15:07
*/
namespace app\backend\modules\member\controllers;
use app\backend\modules\member\models\Member;
use app\backend\modules\member\models\MemberGroup;
use app\backend\modules\member\models\MemberLevel;
use app\backend\modules\member\services\MemberServices;
use app\common\components\BaseController;
use app\common\models\IncomeFreezeSet;
use Yunshop\Commission\models\Agents;
use app\common\models\Income;
use Yunshop\TeamDividend\models\TeamDividendLevelModel;
/**
* 收入
*/
class MemberIncomeController extends BaseController
{
/**
* 加載模板
* @return string
* @throws \Throwable
*/
public function index()
{
return view('member.income', [])->render();
}
/**
* @return string
* @throws \Throwable
*/
public function show()
{
// $groups = MemberGroup::getMemberGroupList();
// $levels = MemberLevel::getMemberLevelList();
$uid = \YunShop::request()->id ? intval(\YunShop::request()->id) : 0;
if ($uid == 0 || !is_int($uid)) {
$this->error('参数错误');
}
$member = Member::select(['uid', 'mobile', 'realname', 'avatar'])->uniacid()->where('uid', $uid)->first();
$incomeModel = Income::getIncomes()->where('member_id', $uid)->get();
$config = \app\backend\modules\income\Income::current()->getItems();
unset($config['balance']);
$incomeAll = [
'income' => sprintf("%.2f",$incomeModel->sum('amount')),
'withdraw' => sprintf("%.2f", $incomeModel->where('status', 1)->sum('amount')),
'no_withdraw' => sprintf("%.2f", $incomeModel->where('status', 0)->sum('amount'))
];
foreach ($config as $key => $item) {
$typeModel = $incomeModel->where('incometable_type', $item['class']);
$incomeData[$key] = [
'type_name' => $item['title'],
'income' => sprintf("%.2f", $typeModel->sum('amount')),
'withdraw' => sprintf("%.2f", $typeModel->where('status', 1)->sum('amount')),
'no_withdraw' => sprintf("%.2f", $typeModel->where('status', 0)->sum('amount'))
];
if ($item['agent_class']) {
$agentModel = $item['agent_class']::{$item['agent_name']}(\YunShop::app()->getMemberId());
if ($item['agent_status']) {
$agentModel = $agentModel->where('status', 1);
}
//推广中心显示
if (!$agentModel) {
$incomeData[$key]['can'] = false;
} else {
$agent = $agentModel->first();
if ($agent) {
$incomeData[$key]['can'] = true;
} else {
$incomeData[$key]['can'] = false;
}
}
} else {
$incomeData[$key]['can'] = true;
}
}
return $this->successJson('ok', [
'member' => $member,
'incomeAll' => $incomeAll,
'item' => $incomeData
]);
}
/**
* Common: 佣金冻结设置
* Author: wu-hui
* Time: 2023/12/20 15:36
* @return array|\Illuminate\Http\JsonResponse|string
* @throws \Throwable
*/
public function incomeFreezeSet(){
// 获取设置信息 判断是否为设置
$memberId = request()->input('member_id');
$setInfo = request()->input('set_income_list');
if ($setInfo) {
// 设置信息
if (IncomeFreezeSet::setInfo($memberId,$setInfo)) return $this->successJson('编辑成功');
else return $this->errorJson('设置失败');
}else{
// 获取信息
$userSetInfo = IncomeFreezeSet::getInfo($memberId);
$teamDividendLevel = TeamDividendLevelModel::uniacid()->select(['id','level_name'])->get()->toArray();
$incomeList = \app\backend\modules\income\Income::current()->getItems();
$setIncomeList = [];
# 每种提现类型的设置全部放在set_info中字段内容及类型自定义但是需要在前端进行独立处理
foreach($incomeList as $incomeInfo){
// 单独处理内容
switch($incomeInfo['type']){
// 权重收益
case 'shaerholderDividend':
$currentUserSetInfo = $userSetInfo['shaerholderDividend']['set_info'];
$levelList = $currentUserSetInfo['level_list'];
$levelList = array_map(function($lvInfo) use ($levelList){
return [
'level_id' => $lvInfo['id'],
'level_name' => $lvInfo['level_name'],
'freeze_money' => $levelList[$lvInfo['id']] ? $levelList[$lvInfo['id']]['freeze_money'] : 0,// 冻结金额
];
},$teamDividendLevel);
$incomeInfo['set_info'] = [
'total' => $currentUserSetInfo['total'] ?? 0,
'freeze_type' => $currentUserSetInfo['freeze_type'] ?? 0,// 冻结设置0=统一设置1=每个等级独立设置
'level_list' => array_column($levelList,NULL,'level_id'),
];
break;
}
// 是否支持设置冻结金额
if(!empty($incomeInfo['set_info'])){
$setIncomeList[] = [
'title' => $incomeInfo['title'],
'type' => $incomeInfo['type'],
'set_info' => $incomeInfo['set_info'],
];
}
}
return view('member.income.set', [
'set_income_list' => $setIncomeList,
'member_id' => $memberId
])->render();
}
}
}