添加:装修页面链接选择内容添加文创空间管理中心链接

添加:文创空间管理中心统计信息(加权收益未统计)
This commit is contained in:
wuhui_zzw 2023-11-20 17:39:46 +08:00
parent 8aa17c4cf0
commit db1fbfcf59
8 changed files with 180 additions and 8 deletions

View File

@ -348,6 +348,7 @@ class ComponentService
$uniacid = \YunShop::app()->uniacid;
// 获取经销商等级列表
$lvList = TeamDividendLevelModel::uniacid()
->where('level_type',0)
->select(['id','level_name'])
->get()
->toArray();
@ -356,8 +357,8 @@ class ComponentService
$data[] = [
'name' => $lvItem['level_name'].'中心',
'mini_url' => '',
'path_url' => yzAppFullUrl('member/weight_value_home',['team_level_id'=>$lvItem['id']]),
'url' => "member/weight_value_home?i={$uniacid}&team_level_id={$lvItem['id']}&",
'path_url' => yzAppFullUrl('member/weight_value_home',['team_level_id'=>$lvItem['id'],'content_type'=>'broker']),
'url' => "member/weight_value_home?i={$uniacid}&team_level_id={$lvItem['id']}&content_type=broker&",
];
}
@ -375,6 +376,7 @@ class ComponentService
protected static function otherLink()
{
$name = '其他链接';
$uniacid = \YunShop::app()->uniacid;
//如果是插件请加上plugin_name
$data = [
['name' => '会员信息', 'mini_url' => '/packageA/member/info/info', 'url' => 'member/info', 'plugin_name' => ''],
@ -406,6 +408,7 @@ class ComponentService
['name' => '典藏室', 'mini_url' => '', 'url' => 'member/collection_room'],
['name' => '关于我们', 'mini_url' => '', 'url' => 'member/tool/about_us'],
['name' => '消息中心', 'mini_url' => '', 'url' => 'member/message_center/index'],
['name' => '文创空间管理中心', 'mini_url' => '', 'url' => "member/weight_value_home?i={$uniacid}&content_type=cultural_space&", 'plugin_name' => 'cultural-space','params'=>['type'=>'cultural_space']],
];
$data = static::delNotOpenPlugin($data);
@ -433,7 +436,7 @@ class ComponentService
unset($pluginList[$pluginKey]['plugin_name']);
}
//完整url
$plugin['path_url'] = isset($plugin['url']) ? yzAppFullUrl($plugin['url']) : null;
$plugin['path_url'] = isset($plugin['url']) ? yzAppFullUrl($plugin['url'],($plugin['params'] ?? [])) : null;
}
$pluginList = array_values($pluginList);
return $pluginList;

View File

@ -12,7 +12,7 @@ class PluginApplication extends \app\common\services\PluginApplication{
\app\backend\modules\menu\Menu::current()->setPluginMenu('cultural-space', [
'name' => '文创空间',
'type' => 'marketing',
'url' => 'plugin.cultural-space.admin.index.index',// url 可以填写http 也可以直接写路由
'url' => 'plugin.cultural-space.admin.contribution.index',// url 可以填写http 也可以直接写路由
'url_params' => '',//如果是url填写的是路由则启用参数否则不启用
'permit' => 1,//如果不设置则不会做权限检测
'menu' => 1,//如果不设置则不显示菜单,子菜单也将不显示

View File

@ -0,0 +1,39 @@
<?php
namespace Yunshop\CulturalSpace\Api;
use app\common\components\ApiController;
use app\common\models\Income;
use app\common\models\Member;
use app\common\models\member\MemberChildren;
use Yunshop\CulturalSpace\models\CulturalSpace;
class IndexController extends ApiController{
// 文创空间管理中心 - 统计信息获取
public function getCenterData(){
$data = [];
$uid = \YunShop::app()->getMemberId();
// 获取等级信息
$data['level_name'] = '管理';
// 获取当前用户信息
$user = Member::getMemberById($uid,['uid','nickname','realname','avatar']);
$data['user'] = $user ? $user->toArray() : [];
// 获取可提现金额&团队人数
$data['income'] = (float)Income::uniacid()->where('member_id', $uid)->where('status', 0)->sum('amount');// 可提现金额(仅计算未提现)
$data['total_income'] = (float)Income::uniacid()->where('member_id', $uid)->sum('amount');// 累计收入(包括已提现收入)
$data['team_total'] = MemberChildren::getTeamModel($uid)->count();
// 获取统计信息
$data['statistics'] = (new CulturalSpace())->getStatistics($uid);
return $this->successJson('success',$data);
}
}

View File

@ -52,6 +52,27 @@ class ContributionBonusLog extends BaseModel{
return $list ? $list->toArray() : [];
}
/**
* Common: 获取用户贡献值分红
* Author: wu-hui
* Time: 2023/11/20 16:06
* @param int $uid 用户id
* @param string $incomeStatus all=全部收益undrawn=未提现收益withdrawn=已提现收益
* @return float
*/
public static function getIncomeSum(int $uid,string $incomeStatus = 'all'){
return (float)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');
})
->where('yz_member_income.dividend_code',201)
->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

@ -4,8 +4,13 @@ use app\common\facades\Setting;
use app\common\models\BaseModel;
use app\common\models\Member;
use app\common\models\member\MemberParent;
use app\common\models\Order;
use app\common\models\OrderGoods;
use Illuminate\Support\Facades\DB;
use Yunshop\TeamDividend\admin\models\MemberChild;
use Yunshop\TeamDividend\models\TeamDividendAgencyModel;
use Yunshop\TeamDividend\models\TeamDividendModel;
class CulturalSpace extends BaseModel
{
@ -297,6 +302,82 @@ class CulturalSpace extends BaseModel
return $memberList;
}
public function getStatistics($uid){
// 服务收益 经销商 津贴(补贴) 奖励
$serviceIncome = TeamDividendModel::getTypeTotalIncome((int)$uid,(int)4);
// 贡献收益 经销商 津贴(补贴)平级奖 奖励
$contributionIncome = TeamDividendModel::getTypeTotalIncome((int)$uid,(int)5);
// 贡献值分红
$contributionBonus = ContributionBonusLog::getIncomeSum($uid);
// 获取文创空间用户信息
$culturalSpace = CulturalSpace::uniacid()->where('uid',$uid)->select(['uid','contribution','voucher_number'])->first();
if($culturalSpace) $culturalSpace = $culturalSpace->toArray();
// 当前文创豆汇率
$exchangeRate = CulturalFund::uniacid()->value('current_fee');
// 文创豆收益
$legumesIncome = sprintf("%.2f",$culturalSpace['voucher_number'] * $exchangeRate);
// 获取小区业绩(去除最大的线的业绩)和团队总业绩
$teamAmount = $this->getTeamOrderAmount($uid);
// $isPartner = 0;
$list = [
'service_income' => ['key_name' => 'service_income','title' => '服务收益','num' => $serviceIncome,'sort' => 0],
'contribution_income' => ['key_name' => 'contribution_income','title' => '贡献收益','num' => $contributionIncome,'sort' => 1],
'contribution_bonus' => ['key_name' => 'contribution_bonus','title' => '贡献值分红','num' => $contributionBonus,'sort' => 2],
'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],
'weight_income' => ['key_name' => 'weight_income','title' => '加权收益','num' => 0,'sort' => 9],
];
// 合伙人等级增加显示加权收益,不显示服务收益、贡献收益、贡献值分红
// if($isPartner) unset($list['service_income'],$list['contribution_income'],$list['contribution_bonus']);
// else unset($list['weight_income']);
// 排序
$sorts = array_column($list,'sort');
array_multisort($sorts,SORT_ASC,$list);
return $list;
}
/**
* Common: 获取团队业绩
* Author: wu-hui
* Time: 2023/11/20 16:18
* @return float[]
*/
public function getTeamOrderAmount($uid){
// 获取直推下级列表
$subIds = MemberChild::uniacid()
->where('level',1)
->where('member_id',$uid)
->pluck('child_id')
->toArray();
$subPerformance = [];// 每条线的业绩
foreach($subIds as $subUid){
$lineAllUid = MemberChild::uniacid()->where('member_id',$subUid)->pluck('child_id')->toArray();
$lineAllUid[] = $subUid;
$subPerformance[$subUid] = Order::whereIn('uid',$lineAllUid)->where('status','>=',0)->sum('yz_order.price');
}
// 计算业绩 小区业绩 && 团队总业绩
$teamAmount = (float)sprintf("%.2f",array_sum($subPerformance));// 总业绩
$maxAmount = max($subPerformance);// 最大一条线的业绩
$areaAmount = (float)sprintf("%.2f",$teamAmount - $maxAmount);// 小区业绩 = 总业绩 - 最大一条线的业绩
return [
'team_amount' => $teamAmount,
'area_amount' => $areaAmount
];
}
/**
* Common: 一对一关联 用户信息
* Author: wu-hui

View File

@ -17,8 +17,9 @@ class OrderPaidListener{
public function subscribe(Dispatcher $events){
$events->listen(\app\common\events\order\AfterOrderPaidEvent::class, function ($event) {
date_default_timezone_set("PRC");
$model = $event->getOrderModel();
\Log::debug('--- 股东分红 - 订单支付成功后进行结算 - 触发 ----',$model->id);
date_default_timezone_set("PRC");
(new TimedTaskService())->shareholderDividendOrder($model->id);
});
}

View File

@ -393,9 +393,9 @@ class TeamAgencyController extends BaseController
public function test(){
//因为model偶尔会出现status异常的问题所以重新查询一遍
$model = Order::with('hasManyOrderGoods')->find(84);
$set = \Setting::get('plugin.team_dividend');
(new NewUpgrateJob($model->uid, $set, $model->uniacid, TeamDividendLevelUpgrade::ORDER_PAY, $model))->handle();
// $model = Order::with('hasManyOrderGoods')->find(84);
// $set = \Setting::get('plugin.team_dividend');
// (new NewUpgrateJob($model->uid, $set, $model->uniacid, TeamDividendLevelUpgrade::ORDER_PAY, $model))->handle();
// $order = Order::find(87);
// $TeamReturnService = ReturnConfig::getClass();

View File

@ -467,4 +467,31 @@ class TeamDividendModel extends BaseModel
return $query->orderBy('yz_team_dividend.id', 'desc');
}
/**
* Common: 获取用户某个类型的提成
* Author: wu-hui
* Time: 2023/11/20 15:15
* @param int $uid 用户id
* @param int $type 4=服务收益5=贡献收益
* @param string $incomeStatus all=全部收益undrawn=未提现收益withdrawn=已提现收益
* @return float
*/
public static function getTypeTotalIncome(int $uid,int $type,string $incomeStatus = 'all'){
return (float)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');
})
->where('yz_member_income.dividend_code',2)
->where('yz_team_dividend.type',$type)
->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');
}
}