parent
8aa17c4cf0
commit
db1fbfcf59
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,//如果不设置则不显示菜单,子菜单也将不显示
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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');
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue