添加:文创中心 - 统计信息变更明细
This commit is contained in:
parent
2063eefa87
commit
70b5c72ff8
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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() : [];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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']);
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue