159 lines
6.0 KiB
PHP
159 lines
6.0 KiB
PHP
<?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();
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
} |