123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <?php
- // +----------------------------------------------------------------------
- // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
- // +----------------------------------------------------------------------
- // | Author: 萤火科技 <admin@yiovo.com>
- // +----------------------------------------------------------------------
- declare (strict_types = 1);
- namespace app\store\controller;
- use app\common\enum\order\PayStatus as PayStatusEnum;
- use app\common\library\helper;
- use app\common\model\user\CommissionsDetail;
- use app\store\model\Order;
- use app\store\model\OrderGoods;
- use app\store\model\User as UserModel;
- use app\api\model\User as UserApiModel;
- use app\store\model\user\BonusHistory;
- /**
- * 用户管理
- * Class User
- * @package app\store\controller
- */
- class User extends Controller
- {
- /**
- * 用户列表
- * @return array
- * @throws \think\db\exception\DbException
- */
- public function list()
- {
- // 用户列表
- $model = new UserModel;
- $list = $model->getList($this->request->param());
- return $this->renderSuccess(compact('list'));
- }
- /**
- * 详情记录
- * @param int $userId
- * @return array
- */
- public function detail(int $userId)
- {
- $model = new UserModel;
- $detail = $model::detail($userId, ['avatar']);
- $detail->order_paid_count = Order::where('user_id',$userId)->where('pay_status',PayStatusEnum::SUCCESS)->count();// 消费订单数
- $detail->order_paid_amount = Order::where('user_id',$userId)->where('pay_status',PayStatusEnum::SUCCESS)->sum('pay_price'); // 消费金额
- $detail->promote_user_count = UserApiModel::countSubordinates($userId, $detail['shop_id'], $detail['role']); // 直推人数
- $detail->promoter_order_count = Order::where('staff_user_id',$userId)->count(); // 推广订单
- // $detail->fc_yj_amount = $detail->can_withdraw_money; // 历史总佣金
- $djs_amount = CommissionsDetail::where('user_id', $userId)->where('clearing_status', 0)->sum('clearing_money') ?? 0.00;
- $detail->djs_amount = helper::bcsub($djs_amount, 0, 2); // 待结算佣金
- $detail->history_base_amount = helper::bcadd(CommissionsDetail::where('user_id', $userId)->where('clearing_status', 1)->sum('clearing_money') ,0);// 总基本佣金
- $detail->history_bonus = helper::bcadd(BonusHistory::where('user_id', $userId)->where('clearing_status', 1)->sum('bonus_money'),0); // 总达量奖励金
- $detail->djs_bonus = helper::bcadd(BonusHistory::where('user_id', $userId)->where('clearing_status', 0)->sum('bonus_money'),0); // 待结算奖励金
- $detail->fc_yj_amount = helper::bcadd($detail->history_base_amount+$detail->history_bonus+$detail->djs_amount+$detail->djs_bonus,0); // 总佣金(待结算+已结算)=已结算基本佣金+已结算奖励金+待结算基本佣金+待结算奖励金
- return $this->renderSuccess(compact('detail'));
- }
- /**
- * 详情记录
- * @param int $userId
- * @return array
- */
- public function details(int $userId)
- {
- $model = new UserModel;
- $detail = $model::detail($userId);
- return $this->renderSuccess(compact('detail'));
- }
- /**
- * Notes:佣金明细
- * Author: zhangs
- * DateTime: 2021/10/11 11:56
- * @param int $userId
- * @return array
- */
- public function commissionDetail(int $userId)
- {
- $model = new UserModel;
- $list = $model->userCommissionDetailList($userId);
- return $this->renderSuccess(compact('list'));
- }
- /**
- * Notes:奖励金明细
- * Author: zhangq
- * DateTime: 2021/10/11 11:56
- * @param int $userId
- * @return array
- */
- public function bonusDetail(int $userId)
- {
- $list = BonusHistory::bonusList($userId);
- return $this->renderSuccess(compact('list'));
- }
- /**
- * 删除用户
- * @param int $userId
- * @return array
- */
- public function delete(int $userId)
- {
- // 用户详情
- $model = UserModel::detail($userId);
- if ($model->setDelete()) {
- return $this->renderSuccess('删除成功');
- }
- return $this->renderError($model->getError() ?: '删除失败');
- }
- /**
- * 用户充值
- * @param int $userId
- * @param string $target
- * @return array
- */
- public function recharge(int $userId, string $target)
- {
- // 用户详情
- $model = UserModel::detail($userId);
- if ($model->recharge($target, $this->postForm())) {
- return $this->renderSuccess('操作成功');
- }
- return $this->renderError($model->getError() ?: '操作失败');
- }
- /**
- * 修改会员等级
- * @param int $userId
- * @return array
- */
- public function grade(int $userId)
- {
- // 用户详情
- $model = UserModel::detail($userId);
- if ($model->updateGrade($this->postForm())) {
- return $this->renderSuccess('操作成功');
- }
- return $this->renderError($model->getError() ?: '操作失败');
- }
- //下级推荐官
- public function upperuser(){
- $param = $this->request->param();
- $from = strtotime(date('Y-m-01').'-1 month');
- $to = time();
- $filter = [];
- // 下单起止时间
- if (!empty($param['betweenTime'])) {
- $times = between_time_format($param['betweenTime']);
- $from = $times['start_time'];
- $to = $times['end_time'];
- // $filter[] = ['commissions_detail_order.order_create_time', '>=', $from];
- // $filter[] = ['commissions_detail_order.order_create_time', '<', $to];
- }
- if(!empty($param['userId'])){
- $filter[] = ['u.upper_user_id','=',$param['userId']];
- }else{
- $filter[] = ['u.upper_user_id','>',0];
- }
-
- $filter[] = ['u.role','=',99];
- $list = UserModel::alias('u')->with(['commissionTotal'])->field("mobile,nick_name,u.user_id,u.upper_user_id,avatar_id,u.create_time,u.role,u.upper_user_id")->with(['avatar'])->where($filter)->where(function($query) use ($from ,$to){
- // $query->whereBetweenTime("order_create_time",$from,$to);
- })
- ->paginate(15)->each(function ($item) use ($from,$to) {
- $tFilter['user_id'] =$item['user_id'];
- $item['order_cnt'] = CommissionsDetail::where($tFilter)->where('clearing_status','<',2)->whereBetweenTime('order_create_time',$from,$to)->count();
- $item['order_amount'] = CommissionsDetail::where($tFilter)->where('clearing_status','<',2)->whereBetweenTime('order_create_time',$from,$to)->sum('order_sale_volume');
- // $item['order_cnt'] = count(array_unique(array_column($item['commissionTotal']->toArray(),'order_id')));
- // $item['order_amount'] = array_sum(array_column($item['commissionTotal']->toArray(),'order_sale_volume'));
- $item['upper_user_mobile'] = UserModel::where("user_id",$item['upper_user_id'])->value("mobile")??'';
-
- }
- );
- return $this->renderSuccess(compact('list'));
- }
-
- }
|