CommissionDetail.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <?php
  2. declare (strict_types = 1);
  3. namespace app\store\model\user;
  4. use app\common\library\helper;
  5. use app\common\model\User;
  6. use app\common\model\user\CommissionsDetail as CommissionDetailModel;
  7. use think\facade\Db;
  8. use app\common\model\chef\ChefAreas as RegionModel;
  9. use app\store\model\Order as OrderModel;
  10. /**
  11. * 分佣列表模型
  12. * Class CommissionSteps
  13. * @package app\common\model
  14. */
  15. class CommissionDetail extends CommissionDetailModel
  16. {
  17. /**
  18. * 设置检索查询条件
  19. * @param array $param
  20. * @return array
  21. */
  22. private function getQueryFilter(array $param): array
  23. {
  24. // 默认参数
  25. $params = $this->setQueryDefaultValue($param, [
  26. 'betweenTime' => [], // 起止时间
  27. 'userId' => 0, // 会员ID
  28. 'nickName'=>'', //会员昵称
  29. 'mobile'=>'',//手机号码
  30. 'role'=>-1,//角色
  31. 'clearingStatus'=>-1, //结算状态,0:待结算,1:已结算 2:已退款
  32. 'shopName'=>'', //门店
  33. 'cityName'=>''
  34. ]);
  35. // 检索查询条件
  36. $filter = [];
  37. // 用户id
  38. $params['userId'] > 0 && $filter[] = ['cm.user_id', '=', (int)$params['userId']];
  39. if(!empty($params['cityName'])){
  40. $region = new RegionModel;
  41. $city_id_arr = $region->where('name','like','%'.$params['cityName'].'%')->where('level',2)->column("id");
  42. if(count($city_id_arr)>0){
  43. $filter[] = ['s.city_id','in',$city_id_arr];
  44. }
  45. }
  46. //会员昵称
  47. if(!empty($params['nickName'])){
  48. $filter[] = ['u.nick_name','like',"%{$params['nickName']}%"];
  49. }
  50. //用户手机
  51. !empty($params['mobile']) && $filter[] = ['u.mobile', 'like', "%{$params['mobile']}%"];
  52. //店铺名称
  53. !empty($params['shopName']) && $filter[] = ['s.shop_name', 'like', "%{$params['shopName']}%"];
  54. // 订单号
  55. if (!empty($params['orderNo'])) {
  56. $filter[] = ['o.order_no', 'like', "%{$params['orderNo']}%"];
  57. }
  58. //角色
  59. if(isset($params['role'])&&$params['role']>-1){
  60. $filter[] = ['cm.role','=',$params['role']];
  61. }
  62. // 下单起止时间
  63. if (!empty($params['betweenTime'])) {
  64. $times = between_time_format($params['betweenTime']);
  65. $filter[] = ['cm.order_create_time', '>=', $times['start_time']];
  66. $filter[] = ['cm.order_create_time', '<', $times['end_time']];
  67. }
  68. //结算状态,0:待结算,1:已结算 2:已退款
  69. if(isset($params['clearingStatus'])&&$params['clearingStatus']>-1){
  70. $filter[] = ['cm.clearing_status','=',$params['clearingStatus']];
  71. }
  72. return $filter;
  73. }
  74. public function getList($param){
  75. $filter = $this->getQueryFilter($param);
  76. $order = new OrderModel;
  77. return CommissionDetail::alias('cm')->where($filter)
  78. ->leftJoin('order o','cm.order_id=o.order_id')
  79. ->leftJoin('user u','u.user_id=cm.user_id')
  80. ->leftJoin('shops s','s.shop_id=cm.shop_id')
  81. // ->where('cm.clearing_status',0)
  82. ->field('cm.remark,u.nick_name,u.mobile,cm.role,cm.id,cm.order_id,cm.user_id,cm.clearing_money,cm.commission_percent,o.order_no,cm.order_create_time,cm.clearing_status,cm.shop_id,s.shop_name,s.city_id,s.province_id,cm.order_sale_volume')->where("cm.shop_id",">",0)
  83. ->paginate(15)->each(function($item) use($order){
  84. $item['order_create_time'] = Date("Y-m-d H:i:s",$item['order_create_time']);
  85. $item['shop_name'] = $item['shop_name']??'';
  86. $region = '';
  87. if(isset($item['city_id'])){
  88. $province = RegionModel::getNameById($item['province_id']);
  89. $city = RegionModel::getNameById($item['city_id']);
  90. if($province==$city){
  91. $region = $province;
  92. }else{
  93. $region = $province.$city;
  94. }
  95. }
  96. $item['region'] = $region;
  97. // $item['remark'] = '';
  98. $order_amount = 0;
  99. // $order_id_arr = [$item['order_id']];
  100. // $order_amount = $order->getOrderSellPrice($order_id_arr);
  101. $item['order_amount'] = helper::bcadd($item['order_sale_volume'],0,2);
  102. $item['role_text'] = CommissionDetail::ROLE[$item['role']]??'';
  103. $item['clearing_status_text'] = CommissionDetail::CLEARING_STATUS[$item['clearing_status']]??'';
  104. $item['commission_percent'] = $item['commission_percent']."%";
  105. if($item['clearing_status']==2){
  106. $item['clearing_money'] = '0.00';
  107. }else{
  108. $item['clearing_money'] = helper::bcadd($item['clearing_money'],0,2);
  109. }
  110. });
  111. }
  112. /**
  113. * 推荐官基本佣金明细
  114. * @param $params
  115. * @return mixed
  116. * @throws \think\db\exception\DataNotFoundException
  117. * @throws \think\db\exception\DbException
  118. * @throws \think\db\exception\ModelNotFoundException
  119. */
  120. public function commerDetails($params){
  121. $times = null;
  122. if (!empty($params['betweenTime'])){
  123. $times = between_time($params['betweenTime']);
  124. }
  125. $where[] = ['commission_detail.is_delete','=',0];
  126. $where[] = ['user.role','=',User::COMMISSION_USER];
  127. if (!empty($params['userId']) && $params['userId'] >0 )$where[] = ['commission_detail.user_id','=', $params['userId']];
  128. if (!empty($params['nickName']))$where[] = ['user.nick_name', 'like','%'.$params['nickName'].'%'];
  129. if (!empty($params['mobile']))$where[] = ['user.mobile', 'like','%'.$params['mobile'].'%'];
  130. if (!empty($params['sellerGrade']) && $params['sellerGrade'] >0)$where[] = ['user.seller_grade','=', $params['sellerGrade']];
  131. if (!empty($params['cLevel']) && $params['cLevel'] >0)$where[] = ['commission_detail.commission_level','=', $params['cLevel']];
  132. if (!empty($params['orderNo']))$where[] = ['order.order_no', 'like','%'.$params['orderNo'].'%'];
  133. if (isset($params['clearingStatus']) && intval($params['clearingStatus']) >=0)$where[] = ['commission_detail.clearing_status','=', $params['clearingStatus']];
  134. if ($times){
  135. $where[] = ['commission_detail.order_create_time','>=', $times['start_time']];
  136. $where[] = ['commission_detail.order_create_time','<=', $times['end_time']];
  137. }
  138. return self::alias('commission_detail')
  139. ->leftJoin('user user','commission_detail.user_id=user.user_id')
  140. ->leftJoin('order order','commission_detail.order_id=order.order_id')
  141. ->where($where)
  142. ->field('user.user_id,user.nick_name,user.mobile,order.order_no,
  143. commission_detail.id,commission_detail.order_id,commission_detail.clearing_money,commission_detail.clearing_status,
  144. commission_detail.commission_level,commission_detail.seller_grade,commission_detail.commission_percent,commission_detail.order_sale_volume,
  145. commission_detail.order_create_time,commission_detail.remark,order.staff_user_id')
  146. ->order('commission_detail.id desc')
  147. ->paginate(15)->each(function(&$item){
  148. $item->order_create_time = date('Y-m-d H:i:s',$item->order_create_time);
  149. $item->down_user = null;
  150. if ($item->commission_level == 2){
  151. /* $firstUserId = self::where('order_id',$item->order_id)->where('commission_level',1)
  152. ->field('user_id')->find();*/
  153. $item->down_user = \app\store\model\User::where('user_id',$item->staff_user_id)
  154. ->field('user_id,nick_name,mobile')->find();
  155. }
  156. if ($item->clearing_status == 2){
  157. $item->clearing_money = 0.0000;
  158. }
  159. });
  160. }
  161. }