// +---------------------------------------------------------------------- declare (strict_types = 1); namespace app\store\model\user; use app\common\model\BaseModel; use app\common\model\user\UserCommissionsView as UserCommissionsViewModel; use app\store\model\Order as OrderModel; use app\common\model\chef\ChefAreas as RegionModel; use app\store\model\user\CommissionDetail; /** * 用户佣金模板 * Class Delivery * @package app\common\model */ class UserCommissionsView extends UserCommissionsViewModel { /** * 设置检索查询条件 * @param array $param * @return array */ private function getQueryFilter(array $param): array { // 默认参数 $params = $this->setQueryDefaultValue($param, [ 'betweenTime' => [], // 起止时间 'userId' => 0, // 会员ID 'nickName'=>'', //会员昵称 'mobile'=>'',//手机号码 'role'=>-1,//角色 'clearingStatus'=>-1, //结算状态,0:待结算,1:已结算 2:已退款 'shopName'=>'', //门店 'cityName'=>'' ]); // 检索查询条件 $filter = []; // 用户id $params['userId'] > 0 && $filter[] = ['cm.user_id', '=', (int)$params['userId']]; if(!empty($params['cityName'])){ $region = new RegionModel; $city_id_arr = $region->where('name','like','%'.$params['cityName'].'%')->where('level',2)->column("id"); if(count($city_id_arr)>0){ $filter[] = ['s.city_id','in',$city_id_arr]; } } //会员昵称 if(!empty($params['nickName'])){ $filter[] = ['u.nick_name','like',"%{$params['nickName']}%"]; } //用户手机 !empty($params['mobile']) && $filter[] = ['u.mobile', 'like', "%{$params['mobile']}%"]; //店铺名称 !empty($params['shopName']) && $filter[] = ['s.shop_name', 'like', "%{$params['shopName']}%"]; // 订单号 if (!empty($params['orderNo'])) { $filter[] = ['o.order_no', 'like', "%{$params['orderNo']}%"]; } //角色 if(isset($params['role'])&&$params['role']>-1){ $filter[] = ['cm.role','=',$params['role']]; } //用户id if(isset($params['userId'])&&$params['userId']>0){ $filter[] = ['cm.user_id','=',$params['userId']]; } return $filter; } //用户佣金 public function getList($param =[]){ $model = new UserCommissionsView(); $from = 1633017600; $to = time(); $city_id_arr = []; // 下单起止时间 if (!empty($param['betweenTime'])) { $times = between_time_format($param['betweenTime']); $from = $times['start_time']; $to = $times['end_time']; } $filter = $this->getQueryFilter($param); $model = $model->alias('cm')->where($filter) ->leftJoin('shops s','cm.shop_id=s.shop_id') ->leftJoin('user u','u.user_id=cm.user_id') ->field('u.nick_name,u.mobile,cm.role,cm.user_id,cm.shop_id,s.shop_name,s.city_id,s.province_id') ->with(['storeCommission'=>function($query) use ($from,$to){ $query->where('clearing_status','in',[0,1])->whereBetweenTime('order_create_time',$from,$to); }]); $order = new OrderModel; $list = $model->order('s.shop_id','desc')->paginate(15)->each(function($item)use ($from,$to){ $region =''; if(isset($item['city_id'])){ $province = RegionModel::getNameById($item['province_id']??0); $city = RegionModel::getNameById($item['city_id']??0); if($province==$city){ $region = $province; }else{ $region = $province.$city; } } $item['region'] = $region; $item['role_text'] = CommissionDetail::ROLE[$item['role']]??''; $tFilter['user_id'] =$item['user_id']; $tFilter['role'] = $item['role']; $tFilter['shop_id'] = $item['shop_id']; $item['order_cnt'] = CommissionDetail::where($tFilter)->where('clearing_status','<',2)->whereBetweenTime('order_create_time',$from,$to)->count(); $item['order_amount'] = CommissionDetail::where($tFilter)->where('clearing_status','<',2)->whereBetweenTime('order_create_time',$from,$to)->sum('order_sale_volume'); $item['yj_amount'] = CommissionDetail::where($tFilter)->where('clearing_status','<',2)->whereBetweenTime('order_create_time',$from,$to)->sum('clearing_money'); $item['djs_yj_amount'] = CommissionDetail::where(array_merge($tFilter,['clearing_status'=>0]))->whereBetweenTime('order_create_time',$from,$to)->sum('clearing_money'); $item['js_yj_amount'] = CommissionDetail::where(array_merge($tFilter,['clearing_status'=>1]))->whereBetweenTime('order_create_time',$from,$to)->sum('clearing_money'); })->toArray(); return $list; } }