From 70b5c72ff8e70855a3f93aced7fddce0eb33934c Mon Sep 17 00:00:00 2001 From: wuhui_zzw <1760308791@qq.com> Date: Wed, 22 Nov 2023 16:14:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=EF=BC=9A=E6=96=87=E5=88=9B?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=20-=20=E7=BB=9F=E8=AE=A1=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/IndexController.php | 141 +++++++++++++++++- .../src/models/ContributionBonusLog.php | 7 +- .../src/models/ContributionLog.php | 8 +- .../src/models/CulturalSpace.php | 25 ++-- .../src/models/TeamDividendModel.php | 8 +- 5 files changed, 158 insertions(+), 31 deletions(-) diff --git a/plugins/cultural-space/src/api/IndexController.php b/plugins/cultural-space/src/api/IndexController.php index 0a98e2f8..cefc7b4f 100644 --- a/plugins/cultural-space/src/api/IndexController.php +++ b/plugins/cultural-space/src/api/IndexController.php @@ -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(); + } diff --git a/plugins/cultural-space/src/models/ContributionBonusLog.php b/plugins/cultural-space/src/models/ContributionBonusLog.php index b2b2e83c..1c96f28e 100644 --- a/plugins/cultural-space/src/models/ContributionBonusLog.php +++ b/plugins/cultural-space/src/models/ContributionBonusLog.php @@ -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'); + }); } diff --git a/plugins/cultural-space/src/models/ContributionLog.php b/plugins/cultural-space/src/models/ContributionLog.php index 4f9f9f81..45af05c0 100644 --- a/plugins/cultural-space/src/models/ContributionLog.php +++ b/plugins/cultural-space/src/models/ContributionLog.php @@ -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() : []; } diff --git a/plugins/cultural-space/src/models/CulturalSpace.php b/plugins/cultural-space/src/models/CulturalSpace.php index 21ec7592..c4ac16fc 100644 --- a/plugins/cultural-space/src/models/CulturalSpace.php +++ b/plugins/cultural-space/src/models/CulturalSpace.php @@ -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']); diff --git a/plugins/team-dividend/src/models/TeamDividendModel.php b/plugins/team-dividend/src/models/TeamDividendModel.php index 1f1fd7b3..edd6d35d 100644 --- a/plugins/team-dividend/src/models/TeamDividendModel.php +++ b/plugins/team-dividend/src/models/TeamDividendModel.php @@ -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'); + }); }