123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- <?php
- // +----------------------------------------------------------------------
- // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
- // +----------------------------------------------------------------------
- // | Author: 萤火科技 <admin@yiovo.com>
- // +----------------------------------------------------------------------
- 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;
- }
- }
|