From b38405fe5db4961314caecfefd8b2bb44fb823e3 Mon Sep 17 00:00:00 2001 From: wuhui_zzw <1760308791@qq.com> Date: Fri, 1 Dec 2023 18:53:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=EF=BC=9A=E6=96=B0=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E4=B8=AD=E5=BF=83=20=E7=9B=B8=E5=85=B3=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/models/member/MemberChildren.php | 9 +- .../src/api/IndexController.php | 177 +++++++++++++++++- .../src/api/LegumesController.php | 70 +++++++ .../team-dividend/src/PluginApplication.php | 1 + 4 files changed, 253 insertions(+), 4 deletions(-) create mode 100644 plugins/cultural-space/src/api/LegumesController.php diff --git a/app/common/models/member/MemberChildren.php b/app/common/models/member/MemberChildren.php index 112b75e1..21bda0ce 100644 --- a/app/common/models/member/MemberChildren.php +++ b/app/common/models/member/MemberChildren.php @@ -18,19 +18,22 @@ use Illuminate\Support\Facades\DB; class MemberChildren extends BaseModel { public $table = 'yz_member_children'; - /** * Common: 获取我的客户(团队总人数,不包括已删除用户) 查询模型 * Author: wu-hui * Time: 2023/10/19 10:20 - * @param $uid + * @param $uid + * @param int $level * @return BaseModel */ - public static function getTeamModel($uid){ + public static function getTeamModel($uid,$level = 0){ return self::uniacid() ->join('yz_member', function ($join) { $join->on('yz_member.member_id', '=', 'yz_member_children.child_id')->whereNull('deleted_at'); }) + ->when($level > 0,function($query) use ($level){ + $query->where('yz_member_children.level',$level); + }) ->where('yz_member_children.uniacid',\YunShop::app()->uniacid) ->where('yz_member_children.member_id',$uid); } diff --git a/plugins/cultural-space/src/api/IndexController.php b/plugins/cultural-space/src/api/IndexController.php index 2bc2e294..c0d5bccb 100644 --- a/plugins/cultural-space/src/api/IndexController.php +++ b/plugins/cultural-space/src/api/IndexController.php @@ -9,6 +9,7 @@ use app\common\models\Income; use app\common\models\Member; use app\common\models\member\MemberChildren; use app\common\models\Order; +use app\common\models\Withdraw; use app\common\services\credit\ConstService; use app\common\services\finance\BalanceChange; use app\common\services\password\PasswordService; @@ -26,6 +27,7 @@ use Yunshop\TeamDividend\models\TeamDividendAgencyModel; use Yunshop\TeamDividend\models\TeamDividendLevelModel; use Yunshop\TeamDividend\models\TeamDividendModel; use Yunshop\TeamDividend\models\Uplog; +use Yunshop\UseStaff\models\UseStaff; class IndexController extends ApiController{ /** @@ -50,6 +52,7 @@ class IndexController extends ApiController{ $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['one_team_total'] = MemberChildren::getTeamModel($uid,1)->count(); // 获取统计信息 $data['statistics'] = (new CulturalSpace())->getStatistics($uid); @@ -431,7 +434,7 @@ class IndexController extends ApiController{ if($legumesWithdrawalId <= 0) return $this->errorJson('非法请求,参数错误!'); // 获取提现详情 $info = CulturalSpaceLegumesWithdrawal::uniacid() - ->select(['id','uid','withdrawal_total_num','current_fee','commission_num','reality_amount','created_at']) + ->select(['id','uid','withdrawal_total_num','current_fee','commission_num','reality_amount','created_at','status','reject_reason']) ->with(['useStaff'=>function($query){ $query->select(['id','uid','card_num']); }]) @@ -451,6 +454,178 @@ class IndexController extends ApiController{ + /** + * Common: 获取相关统计信息 + * Author: wu-hui + * Time: 2023/12/01 18:18 + * @return \Illuminate\Http\JsonResponse + */ + public function getPublicStatistics(){ + // 参数获取 + $uid = \YunShop::app()->getMemberId(); + $typeName = request()->input('type_name'); + $info = []; + // 获取相关统计信息 + switch($typeName){ + // 生态发展收益 + case 'ecological': + $amount = Income::uniacid() + ->select(['yz_member_income.id','yz_member_income.amount']) + ->leftJoin('yz_team_dividend','yz_team_dividend.id','yz_member_income.incometable_id') + ->where('yz_member_income.incometable_type', 'Yunshop\TeamDividend\models\TeamDividendModel') + ->where('yz_member_income.status', Income::STATUS_WITHDRAW) + ->where('yz_member_income.member_id', $uid) + ->whereIn('yz_team_dividend.type', [4,5]) + ->sum('yz_member_income.amount'); + + $poundage = Income::uniacid() + ->leftJoin('yz_team_dividend','yz_team_dividend.id','yz_member_income.incometable_id') + ->leftJoin('yz_withdraw_income_apply','yz_withdraw_income_apply.income_id','yz_member_income.id') + ->leftJoin('yz_withdraw','yz_withdraw.id','yz_withdraw_income_apply.withdraw_id') + ->where('yz_member_income.incometable_type', 'Yunshop\TeamDividend\models\TeamDividendModel') + ->where('yz_member_income.status', Income::STATUS_WITHDRAW) + ->where('yz_member_income.member_id', $uid) + ->whereIn('yz_team_dividend.type', [4,5]) + ->groupBy('yz_withdraw_income_apply.withdraw_id') + ->sum('yz_withdraw.poundage'); + + + $info = [ + 'service_income' => TeamDividendModel::getTypeTotalIncome((int)$uid,(int)4)->sum('yz_member_income.amount'),// 生态服务 + 'contribution_income' => TeamDividendModel::getTypeTotalIncome((int)$uid,(int)5)->sum('yz_member_income.amount'),// 生态贡献 + 'share_reward' => CommissionOrder::getIncome((int)$uid,(int)1,'undrawn')->sum('yz_member_income.amount'),// 分享奖励 + 'commission' => $poundage,// 总手续费 + 'withdrawal' => $amount,// 总提现金额 + ]; + break; + // 贡献分红 + case 'contribution': + $poundage = Withdraw::uniacid() + ->where('type', 'Yunshop\CulturalSpace\models\ContributionBonusLog') + ->where('status', 2) + ->sum('poundage'); + + $info = [ + 'contribution_bonus' => ContributionBonusLog::getIncomeSum($uid)->sum('yz_member_income.amount'),// 贡献值分红 + 'contribution_bonus_withdrawn' => ContributionBonusLog::getIncomeSum($uid,'withdrawn')->sum('yz_member_income.amount'),// 已提现 + 'contribution_bonus_undrawn' => ContributionBonusLog::getIncomeSum($uid,'undrawn')->sum('yz_member_income.amount'),// 可提现 + 'poundage' => $poundage,// 总服务费 + ]; + break; + // 股权收益 + case 'shareholding': + + $poundage = Income::uniacid() + ->leftJoin('yz_shareholder_dividend','yz_shareholder_dividend.id','yz_member_income.incometable_id') + ->leftJoin('yz_withdraw_income_apply','yz_withdraw_income_apply.income_id','yz_member_income.id') + ->leftJoin('yz_withdraw','yz_withdraw.id','yz_withdraw_income_apply.withdraw_id') + ->where('yz_member_income.dividend_code', 64) + ->where('yz_member_income.status', Income::STATUS_WITHDRAW) + ->where('yz_member_income.member_id', $uid) + ->where('yz_shareholder_dividend.income_type', 1) + ->groupBy('yz_withdraw_income_apply.withdraw_id') + ->sum('yz_withdraw.poundage'); + + + $info = [ + 'weight_income' => ShareholderDividendModel::getIncome((int)$uid,(int)1)->sum('yz_member_income.amount'),// 加权收益 + 'weight_income_withdrawn' => ShareholderDividendModel::getIncome((int)$uid,(int)1,'withdrawn')->sum('yz_member_income.amount'),// 已提现 + 'weight_income_undrawn' => ShareholderDividendModel::getIncome((int)$uid,(int)1,'undrawn')->sum('yz_member_income.amount'),// 可提现 + 'poundage' => $poundage,// 总服务费 + ]; + break; + } + + return $this->successJson('success',$info); + } + /** + * Common: 获取相关信息列表 + * Author: wu-hui + * Time: 2023/12/01 18:18 + * @return \Illuminate\Http\JsonResponse + */ + public function getPublicList(){ + // 参数获取 + $uid = \YunShop::app()->getMemberId(); + $typeName = request()->input('type_name'); + $result = []; + // 获取相关统计信息 + switch($typeName){ + // 生态发展收益 + case 'ecological': + $result = Income::uniacid() + ->select(['yz_withdraw.amounts','yz_withdraw.id','yz_withdraw.created_at','yz_withdraw.actual_amounts','yz_withdraw.poundage','yz_withdraw.status']) + ->leftJoin('yz_team_dividend','yz_team_dividend.id','yz_member_income.incometable_id') + ->leftJoin('yz_withdraw_income_apply','yz_withdraw_income_apply.income_id','yz_member_income.id') + ->leftJoin('yz_withdraw','yz_withdraw.id','yz_withdraw_income_apply.withdraw_id') + ->where('yz_member_income.incometable_type', 'Yunshop\TeamDividend\models\TeamDividendModel') + ->where('yz_member_income.status', Income::STATUS_WITHDRAW) + ->where('yz_member_income.member_id', $uid) + ->whereIn('yz_team_dividend.type', [4,5]) + ->groupBy('yz_withdraw_income_apply.withdraw_id') + ->orderBy('yz_withdraw.created_at','DESC') + ->paginate(20) + ->toArray(); + break; + // 贡献分红 + case 'contribution': + $result = Withdraw::uniacid() + ->select(['id','amounts','created_at','actual_amounts','poundage','status']) + ->where('type', 'Yunshop\CulturalSpace\models\ContributionBonusLog') + ->orderBy('created_at','DESC') + ->paginate(20) + ->toArray(); + break; + // 股权收益 + case 'shareholding': + $result = Income::uniacid() + ->select(['yz_withdraw.id','yz_withdraw.amounts','yz_withdraw.created_at','yz_withdraw.actual_amounts','yz_withdraw.poundage','yz_withdraw.status']) + ->leftJoin('yz_shareholder_dividend','yz_shareholder_dividend.id','yz_member_income.incometable_id') + ->leftJoin('yz_withdraw_income_apply','yz_withdraw_income_apply.income_id','yz_member_income.id') + ->leftJoin('yz_withdraw','yz_withdraw.id','yz_withdraw_income_apply.withdraw_id') + ->where('yz_member_income.dividend_code', 64) + ->where('yz_member_income.status', Income::STATUS_WITHDRAW) + ->where('yz_member_income.member_id', $uid) + ->where('yz_shareholder_dividend.income_type', 1) + ->groupBy('yz_withdraw_income_apply.withdraw_id') + ->orderBy('yz_withdraw.created_at','DESC') + ->paginate(20) + ->toArray(); + + + + break; + } + + foreach($result['data'] as &$item){ + $item['created_at'] = date("Y/m/d H:i",strtotime($item['created_at'])); + } + + return $this->successJson('success',[ + 'current_page' => (int)$result['current_page'], + 'data' => (array)$result['data'], + 'last_page' => (int)$result['last_page'], + ]); + } + // 获取相关结算信息 + public function getPublicDetails(){ + $withdrawId = request()->input('withdraw_id'); + $info = Withdraw::uniacid() + ->where('id', $withdrawId) + ->first(); + if($info) $info = $info->toArray(); + $info['expected_receipt_time'] = date("Y-m-d",strtotime($info['created_at']. " +2 day")); + // 银行卡获取 + $staff = UseStaff::uniacid()->where('uid',$info['member_id'])->first(); + if($staff) { + $staff = $staff->toArray(); + $info['card_num'] = substr($staff['card_num'], 0, 4) . ' **** **** **** '.substr($staff['card_num'], -3, 3) ; + } + + + return $this->successJson('success',$info); + } + diff --git a/plugins/cultural-space/src/api/LegumesController.php b/plugins/cultural-space/src/api/LegumesController.php new file mode 100644 index 00000000..42627774 --- /dev/null +++ b/plugins/cultural-space/src/api/LegumesController.php @@ -0,0 +1,70 @@ +getMemberId(); + // 获取用户持有信息 + $info = CulturalSpace::uniacid()->where('uid',$uid)->first(); + // 共享基金 仅计算已打款 + $fundNum = CulturalSpaceLegumesWithdrawal::uniacid() + ->where('uid',$uid) + ->where('status',3) + ->sum('fund_num'); + // 已提现文创豆 + $withdrawalTotalNum = CulturalSpaceLegumesWithdrawal::uniacid() + ->where('uid',$uid) + ->where('status',3) + ->sum('withdrawal_total_num'); + + $data = [ + 'total_get' => $info->voucher_number,// 总获得 + 'voucher_number' => $info->voucher_number,// 当前持有 + 'goods_legumes' => $info->goods_legumes,// 商品兑换 + 'fund_num' => $fundNum,// 共享基金 + 'withdrawal_total_num' => $withdrawalTotalNum + ]; + + return $this->successJson('success',$data); + } + /** + * Common: 提现记录 + * Author: wu-hui + * Time: 2023/12/01 16:09 + * @return \Illuminate\Http\JsonResponse + */ + public function withdrawalRecord(){ + $uid = \YunShop::app()->getMemberId(); + // 获取业绩列表 + $result = CulturalSpaceLegumesWithdrawal::uniacid() + ->select(['id','created_at','reality_amount','commission_num','withdrawal_total_num','status']) + ->where('uid',$uid) + ->orderBY('id','desc') + ->paginate(20) + ->toArray(); + foreach($result['data'] as $item){ + $item['created_at'] = date("Y/m/d H:i",strtotime($item['created_at'])); + } + + return $this->successJson('success',[ + 'current_page' => (int)$result['current_page'], + 'data' => (array)$result['data'], + 'last_page' => (int)$result['last_page'], + ]); + } + + + + + +} \ No newline at end of file diff --git a/plugins/team-dividend/src/PluginApplication.php b/plugins/team-dividend/src/PluginApplication.php index 17a9fc74..b736bad3 100644 --- a/plugins/team-dividend/src/PluginApplication.php +++ b/plugins/team-dividend/src/PluginApplication.php @@ -644,6 +644,7 @@ class PluginApplication extends \app\common\services\PluginApplication if($uid > 0){ $culturalLevelId = TeamDividendAgencyModel::uniacid()->where('uid',$uid)->value('cultural_level_id'); $teamDividendCulturalName = TeamDividendLevelModel::uniacid()->where('id',$culturalLevelId)->value('cultural_level_name'); + $teamDividendCulturalName = !empty($teamDividendCulturalName) ? $teamDividendCulturalName : '服务津贴'; } return [ 'teamDividend' => [