UserCommissionsView.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | 萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017~2021 https://www.yiovo.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
  8. // +----------------------------------------------------------------------
  9. // | Author: 萤火科技 <admin@yiovo.com>
  10. // +----------------------------------------------------------------------
  11. declare (strict_types = 1);
  12. namespace app\store\model\user;
  13. use app\common\model\BaseModel;
  14. use app\common\model\user\UserCommissionsView as UserCommissionsViewModel;
  15. use app\store\model\Order as OrderModel;
  16. use app\common\model\chef\ChefAreas as RegionModel;
  17. use app\store\model\user\CommissionDetail;
  18. /**
  19. * 用户佣金模板
  20. * Class Delivery
  21. * @package app\common\model
  22. */
  23. class UserCommissionsView extends UserCommissionsViewModel
  24. {
  25. /**
  26. * 设置检索查询条件
  27. * @param array $param
  28. * @return array
  29. */
  30. private function getQueryFilter(array $param): array
  31. {
  32. // 默认参数
  33. $params = $this->setQueryDefaultValue($param, [
  34. 'betweenTime' => [], // 起止时间
  35. 'userId' => 0, // 会员ID
  36. 'nickName'=>'', //会员昵称
  37. 'mobile'=>'',//手机号码
  38. 'role'=>-1,//角色
  39. 'clearingStatus'=>-1, //结算状态,0:待结算,1:已结算 2:已退款
  40. 'shopName'=>'', //门店
  41. 'cityName'=>''
  42. ]);
  43. // 检索查询条件
  44. $filter = [];
  45. // 用户id
  46. $params['userId'] > 0 && $filter[] = ['cm.user_id', '=', (int)$params['userId']];
  47. if(!empty($params['cityName'])){
  48. $region = new RegionModel;
  49. $city_id_arr = $region->where('name','like','%'.$params['cityName'].'%')->where('level',2)->column("id");
  50. if(count($city_id_arr)>0){
  51. $filter[] = ['s.city_id','in',$city_id_arr];
  52. }
  53. }
  54. //会员昵称
  55. if(!empty($params['nickName'])){
  56. $filter[] = ['u.nick_name','like',"%{$params['nickName']}%"];
  57. }
  58. //用户手机
  59. !empty($params['mobile']) && $filter[] = ['u.mobile', 'like', "%{$params['mobile']}%"];
  60. //店铺名称
  61. !empty($params['shopName']) && $filter[] = ['s.shop_name', 'like', "%{$params['shopName']}%"];
  62. // 订单号
  63. if (!empty($params['orderNo'])) {
  64. $filter[] = ['o.order_no', 'like', "%{$params['orderNo']}%"];
  65. }
  66. //角色
  67. if(isset($params['role'])&&$params['role']>-1){
  68. $filter[] = ['cm.role','=',$params['role']];
  69. }
  70. //用户id
  71. if(isset($params['userId'])&&$params['userId']>0){
  72. $filter[] = ['cm.user_id','=',$params['userId']];
  73. }
  74. return $filter;
  75. }
  76. //用户佣金
  77. public function getList($param =[]){
  78. $model = new UserCommissionsView();
  79. $from = 1633017600;
  80. $to = time();
  81. $city_id_arr = [];
  82. // 下单起止时间
  83. if (!empty($param['betweenTime'])) {
  84. $times = between_time_format($param['betweenTime']);
  85. $from = $times['start_time'];
  86. $to = $times['end_time'];
  87. }
  88. $filter = $this->getQueryFilter($param);
  89. $model = $model->alias('cm')->where($filter)
  90. ->leftJoin('shops s','cm.shop_id=s.shop_id')
  91. ->leftJoin('user u','u.user_id=cm.user_id')
  92. ->field('u.nick_name,u.mobile,cm.role,cm.user_id,cm.shop_id,s.shop_name,s.city_id,s.province_id')
  93. ->with(['storeCommission'=>function($query) use ($from,$to){
  94. $query->where('clearing_status','in',[0,1])->whereBetweenTime('order_create_time',$from,$to);
  95. }]);
  96. $order = new OrderModel;
  97. $list = $model->order('s.shop_id','desc')->paginate(15)->each(function($item)use ($from,$to){
  98. $region ='';
  99. if(isset($item['city_id'])){
  100. $province = RegionModel::getNameById($item['province_id']??0);
  101. $city = RegionModel::getNameById($item['city_id']??0);
  102. if($province==$city){
  103. $region = $province;
  104. }else{
  105. $region = $province.$city;
  106. }
  107. }
  108. $item['region'] = $region;
  109. $item['role_text'] = CommissionDetail::ROLE[$item['role']]??'';
  110. $tFilter['user_id'] =$item['user_id'];
  111. $tFilter['role'] = $item['role'];
  112. $tFilter['shop_id'] = $item['shop_id'];
  113. $item['order_cnt'] = CommissionDetail::where($tFilter)->where('clearing_status','<',2)->whereBetweenTime('order_create_time',$from,$to)->count();
  114. $item['order_amount'] = CommissionDetail::where($tFilter)->where('clearing_status','<',2)->whereBetweenTime('order_create_time',$from,$to)->sum('order_sale_volume');
  115. $item['yj_amount'] = CommissionDetail::where($tFilter)->where('clearing_status','<',2)->whereBetweenTime('order_create_time',$from,$to)->sum('clearing_money');
  116. $item['djs_yj_amount'] = CommissionDetail::where(array_merge($tFilter,['clearing_status'=>0]))->whereBetweenTime('order_create_time',$from,$to)->sum('clearing_money');
  117. $item['js_yj_amount'] = CommissionDetail::where(array_merge($tFilter,['clearing_status'=>1]))->whereBetweenTime('order_create_time',$from,$to)->sum('clearing_money');
  118. })->toArray();
  119. return $list;
  120. }
  121. }