添加:文创中心 - 统计信息变更明细

This commit is contained in:
wuhui_zzw 2023-11-22 16:14:19 +08:00
parent 2063eefa87
commit 70b5c72ff8
5 changed files with 158 additions and 31 deletions

View File

@ -6,11 +6,22 @@ use app\common\components\ApiController;
use app\common\models\Income;
use app\common\models\Member;
use app\common\models\member\MemberChildren;
use app\common\models\Order;
use Yunshop\CulturalSpace\models\ContributionBonusLog;
use Yunshop\CulturalSpace\models\ContributionLog;
use Yunshop\CulturalSpace\models\CulturalOrderFundLog;
use Yunshop\CulturalSpace\models\CulturalSpace;
use Yunshop\ShareholderDividend\models\ShareholderDividendModel;
use Yunshop\TeamDividend\admin\models\MemberChild;
use Yunshop\TeamDividend\models\TeamDividendModel;
class IndexController extends ApiController{
// 文创空间管理中心 - 统计信息获取
/**
* Common: 文创空间管理中心 - 统计信息获取
* Author: wu-hui
* Time: 2023/11/22 11:23
* @return \Illuminate\Http\JsonResponse
*/
public function getCenterData(){
$data = [];
$uid = \YunShop::app()->getMemberId();
@ -28,11 +39,129 @@ class IndexController extends ApiController{
return $this->successJson('success',$data);
}
/**
* Common: 统计明细及变更记录获取
* Author: wu-hui
* Time: 2023/11/22 16:05
* @return \Illuminate\Http\JsonResponse
*/
public function getDetails(){
// 参数获取
$keyName = request()->input('key_name');
$uid = \YunShop::app()->getMemberId();
// 根据类型获取对应的列表
switch($keyName){
// 服务收益明细
case 'service_income':
$result = TeamDividendModel::getTypeTotalIncome((int)$uid,(int)4)
->select(['yz_team_dividend.agent_level','yz_team_dividend.order_sn','yz_team_dividend.status','yz_team_dividend.type','yz_team_dividend.created_at','yz_member_income.amount'])
->paginate(20)
->toArray();
break;
// 贡献收益明细
case 'contribution_income':
$result = TeamDividendModel::getTypeTotalIncome((int)$uid,(int)5)
->select(['yz_team_dividend.agent_level','yz_team_dividend.order_sn','yz_team_dividend.status','yz_team_dividend.type','yz_team_dividend.created_at','yz_member_income.amount'])
->paginate(20)
->toArray();
break;
// 贡献值分红明细
case 'contribution_bonus':
$result = ContributionBonusLog::getIncomeSum($uid)
->leftJoin('yz_cultural_space_contribution_bonus', function ($join) {
$join->on('yz_cultural_space_contribution_bonus.id', 'yz_cultural_space_contribution_bonus_log.cultural_space_contribution_bonus_id');
})
->select([
'yz_cultural_space_contribution_bonus.start_time',
'yz_cultural_space_contribution_bonus.end_time',
'yz_cultural_space_contribution_bonus_log.created_at',
'yz_member_income.amount'
])
->paginate(20)
->toArray();
foreach($result['data'] as &$contributionBonusLogItem){
$contributionBonusLogItem['start_time'] = date("m-d H:s",$contributionBonusLogItem['start_time']);
$contributionBonusLogItem['end_time'] = date("m-d H:s",$contributionBonusLogItem['end_time']);
}
break;
// 文创豆明细
case 'legumes':
$result = CulturalOrderFundLog::uniacid()
->select(['good_name','voucher_number','created_at'])
->where('member_id',$uid)
->orderBy('created_at','DESC')
->paginate(20)
->toArray();
break;
// 文创豆收益明细
case 'legumes_income':break;
// 贡献值明细
case 'contribution_value':
$result = ContributionLog::getList(['uid'=>$uid],(int)20);
break;
// 小区业绩明细
case 'area_performance':
$result = $this->getPerformanceChangeList($uid,'area');
break;
// 团队总业绩明细
case 'team_performance':
$result = $this->getPerformanceChangeList($uid);
break;
// 加权收益明细
case 'weight_income':
$result = ShareholderDividendModel::getIncome((int)$uid,(int)1)
->select([
'yz_shareholder_dividend.created_at',
'yz_member_income.amount'
])
->paginate(20)
->toArray();
break;
// 股权收益明细
case 'shareholding_income':$result = [];break;
}
return $this->successJson('success',[
'current_page' => (int)$result['current_page'],
'data' => (array)$result['data'],
'last_page' => (int)$result['last_page'],
]);
}
/**
* Common: 获取业绩明细列表
* Author: wu-hui
* Time: 2023/11/22 15:33
* @param $uid
* @param string $type team=团队总业绩明细area=小区业绩明细
* @return mixed
*/
public function getPerformanceChangeList($uid,$type = 'team'){
// 获取全部下线
$subUIds = MemberChild::uniacid()->where('member_id',$uid)->pluck('child_id')->toArray();
$notUid = [];
if($type == 'area'){
// 获取直推下级列表
$subIds = MemberChild::uniacid()
->where('level',1)
->where('member_id',$uid)
->pluck('child_id')
->toArray();
$maxPrice = 0;
foreach($subIds as $subUid){
$lineAllUid = MemberChild::uniacid()->where('member_id',$subUid)->pluck('child_id')->toArray();
$lineAllUid[] = $subUid;
$currentLinePrice = Order::whereIn('uid',$lineAllUid)->where('status','>=',0)->sum('yz_order.price');
if($maxPrice < $currentLinePrice) $notUid = $lineAllUid;
}
}
// 获取业绩列表
return Order::whereIn('uid',$subUIds)
->select(['order_sn','created_at','price'])
->where('status','>=',0)
->whereNotIn('uid',$notUid)
->paginate(20)
->toArray();
}

View File

@ -58,10 +58,10 @@ class ContributionBonusLog extends BaseModel{
* Time: 2023/11/20 16:06
* @param int $uid 用户id
* @param string $incomeStatus all=全部收益undrawn=未提现收益withdrawn=已提现收益
* @return float
* @return mixed
*/
public static function getIncomeSum(int $uid,string $incomeStatus = 'all'){
return (float)self::uniacid()
return self::uniacid()
->leftJoin('yz_member_income', function ($join) {
$join->on('yz_member_income.member_id', 'yz_cultural_space_contribution_bonus_log.uid')->on('yz_member_income.incometable_id', 'yz_cultural_space_contribution_bonus_log.id');
})
@ -69,8 +69,7 @@ class ContributionBonusLog extends BaseModel{
->where('yz_cultural_space_contribution_bonus_log.uid',$uid)
->when($incomeStatus != 'all',function($query) use ($incomeStatus){
$query->where('yz_member_income.status',$incomeStatus == 'undrawn' ? 0 : 1);
})
->sum('yz_member_income.amount');
});
}

View File

@ -28,15 +28,15 @@ class ContributionLog extends BaseModel{
'source'
];
/**
* Common: 贡献值变更记录
* Author: wu-hui
* Time: 2023/11/03 9:39
* @param $search
* @param array $search
* @param int $limit
* @return array
*/
public function getList($search){
public function getList($search,$limit = 10){
// 条件生成
$where = [];
if($search['uid'] > 0) $where[] = ['uid','=',$search['uid']];
@ -61,7 +61,7 @@ class ContributionLog extends BaseModel{
])
->orderBy('created_at','DESC')
->orderBy('id','DESC')
->paginate(10);
->paginate($limit);
return $list ? $list->toArray() : [];
}

View File

@ -136,7 +136,6 @@ class CulturalSpace extends BaseModel
DB::rollBack();
}
}
/***
* 计算基金比例
* @param $uid
@ -218,7 +217,6 @@ class CulturalSpace extends BaseModel
DB::rollBack();
}
}
/***
* 增加资本
* @return void
@ -247,7 +245,6 @@ class CulturalSpace extends BaseModel
]
);
}
/**
* Common: 获取订单商品查询model
* Author: wu-hui
@ -270,7 +267,6 @@ class CulturalSpace extends BaseModel
->where('yz_order_goods.order_id', $orderId)
->where('yz_goods_cultural_space.is_open', 1);
}
/**
* Common: 根据用户ids获取用户文创空间相关信息(如果不存在则添加默认信息并且返回默认信息)
* Author: wu-hui
@ -312,15 +308,20 @@ class CulturalSpace extends BaseModel
return $memberList;
}
/**
* Common: 文创空间统计
* Author: wu-hui
* Time: 2023/11/22 11:22
* @param $uid
* @return array[]
*/
public function getStatistics($uid){
// 服务收益 经销商 津贴(补贴) 奖励
$serviceIncome = TeamDividendModel::getTypeTotalIncome((int)$uid,(int)4);
$serviceIncome = TeamDividendModel::getTypeTotalIncome((int)$uid,(int)4)->sum('yz_member_income.amount');
// 贡献收益 经销商 津贴(补贴)平级奖 奖励
$contributionIncome = TeamDividendModel::getTypeTotalIncome((int)$uid,(int)5);
$contributionIncome = TeamDividendModel::getTypeTotalIncome((int)$uid,(int)5)->sum('yz_member_income.amount');
// 贡献值分红
$contributionBonus = ContributionBonusLog::getIncomeSum($uid);
$contributionBonus = ContributionBonusLog::getIncomeSum($uid)->sum('yz_member_income.amount');
// 获取文创空间用户信息
$culturalSpace = CulturalSpace::uniacid()->where('uid',$uid)->select(['uid','contribution','voucher_number'])->first();
if($culturalSpace) $culturalSpace = $culturalSpace->toArray();
@ -341,10 +342,10 @@ class CulturalSpace extends BaseModel
'legumes' => ['key_name' => 'legumes','title' => '文创豆','num' => $culturalSpace['voucher_number'],'sort' => 3],
'legumes_income' => ['key_name' => 'legumes_income','title' => '文创豆收益','num' => $legumesIncome,'sort' => 4],
'contribution_value' => ['key_name' => 'contribution_value','title' => '贡献值','num' => $culturalSpace['contribution'],'sort' => 5],
'area_performance' => ['key_name' => 'area_performance','title' => '小区业绩','num' => $teamAmount['team_amount'],'sort' => 7],
'team_performance' => ['key_name' => 'service_revenue','title' => '团队总业绩','num' => $teamAmount['area_amount'],'sort' => 8],
'area_performance' => ['key_name' => 'area_performance','title' => '小区业绩','num' => $teamAmount['area_amount'],'sort' => 7],
'team_performance' => ['key_name' => 'team_performance','title' => '团队总业绩','num' => $teamAmount['team_amount'],'sort' => 8],
'weight_income' => ['key_name' => 'weight_income','title' => '加权收益','num' => $weightIncome,'sort' => 9],
'shareholding_income' => ['key_name' => 'weight_income','title' => '股权收益','num' => 0,'sort' => 10],
'shareholding_income' => ['key_name' => 'shareholding_income','title' => '股权收益','num' => 0,'sort' => 10],
];
// 合伙人等级增加显示加权收益,不显示服务收益、贡献收益、贡献值分红
// if($isPartner) unset($list['service_income'],$list['contribution_income'],$list['contribution_bonus']);

View File

@ -467,7 +467,6 @@ class TeamDividendModel extends BaseModel
return $query->orderBy('yz_team_dividend.id', 'desc');
}
/**
* Common: 获取用户某个类型的提成
* Author: wu-hui
@ -475,10 +474,10 @@ class TeamDividendModel extends BaseModel
* @param int $uid 用户id
* @param int $type 4=服务收益5=贡献收益
* @param string $incomeStatus all=全部收益undrawn=未提现收益withdrawn=已提现收益
* @return float
* @return mixed
*/
public static function getTypeTotalIncome(int $uid,int $type,string $incomeStatus = 'all'){
return (float)self::uniacid()
return self::uniacid()
->leftJoin('yz_member_income', function ($join) {
$join->on('yz_member_income.member_id', 'yz_team_dividend.member_id')->on('yz_member_income.incometable_id', 'yz_team_dividend.id');
})
@ -487,8 +486,7 @@ class TeamDividendModel extends BaseModel
->where('yz_team_dividend.member_id',$uid)
->when($incomeStatus != 'all',function($query) use ($incomeStatus){
$query->where('yz_member_income.status',$incomeStatus == 'undrawn' ? 0 : 1);
})
->sum('yz_member_income.amount');
});
}