123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <?php
- declare (strict_types = 1);
- namespace app\store\model\user;
- use app\common\library\helper;
- use app\common\model\User;
- use app\common\model\user\CommissionsDetail as CommissionDetailModel;
- use think\facade\Db;
- use app\common\model\chef\ChefAreas as RegionModel;
- use app\store\model\Order as OrderModel;
- /**
- * 分佣列表模型
- * Class CommissionSteps
- * @package app\common\model
- */
- class CommissionDetail extends CommissionDetailModel
- {
- /**
- * 设置检索查询条件
- * @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']];
- }
- // 下单起止时间
- if (!empty($params['betweenTime'])) {
- $times = between_time_format($params['betweenTime']);
- $filter[] = ['cm.order_create_time', '>=', $times['start_time']];
- $filter[] = ['cm.order_create_time', '<', $times['end_time']];
- }
- //结算状态,0:待结算,1:已结算 2:已退款
- if(isset($params['clearingStatus'])&&$params['clearingStatus']>-1){
- $filter[] = ['cm.clearing_status','=',$params['clearingStatus']];
- }
-
- return $filter;
- }
- public function getList($param){
- $filter = $this->getQueryFilter($param);
- $order = new OrderModel;
- return CommissionDetail::alias('cm')->where($filter)
- ->leftJoin('order o','cm.order_id=o.order_id')
- ->leftJoin('user u','u.user_id=cm.user_id')
- ->leftJoin('shops s','s.shop_id=cm.shop_id')
- // ->where('cm.clearing_status',0)
- ->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)
- ->paginate(15)->each(function($item) use($order){
- $item['order_create_time'] = Date("Y-m-d H:i:s",$item['order_create_time']);
- $item['shop_name'] = $item['shop_name']??'';
- $region = '';
- if(isset($item['city_id'])){
- $province = RegionModel::getNameById($item['province_id']);
- $city = RegionModel::getNameById($item['city_id']);
- if($province==$city){
- $region = $province;
- }else{
- $region = $province.$city;
- }
- }
- $item['region'] = $region;
- // $item['remark'] = '';
- $order_amount = 0;
- // $order_id_arr = [$item['order_id']];
- // $order_amount = $order->getOrderSellPrice($order_id_arr);
- $item['order_amount'] = helper::bcadd($item['order_sale_volume'],0,2);
- $item['role_text'] = CommissionDetail::ROLE[$item['role']]??'';
- $item['clearing_status_text'] = CommissionDetail::CLEARING_STATUS[$item['clearing_status']]??'';
- $item['commission_percent'] = $item['commission_percent']."%";
- if($item['clearing_status']==2){
- $item['clearing_money'] = '0.00';
- }else{
- $item['clearing_money'] = helper::bcadd($item['clearing_money'],0,2);
- }
- });
- }
- /**
- * 推荐官基本佣金明细
- * @param $params
- * @return mixed
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\DbException
- * @throws \think\db\exception\ModelNotFoundException
- */
- public function commerDetails($params){
- $times = null;
- if (!empty($params['betweenTime'])){
- $times = between_time($params['betweenTime']);
- }
- $where[] = ['commission_detail.is_delete','=',0];
- $where[] = ['user.role','=',User::COMMISSION_USER];
- if (!empty($params['userId']) && $params['userId'] >0 )$where[] = ['commission_detail.user_id','=', $params['userId']];
- if (!empty($params['nickName']))$where[] = ['user.nick_name', 'like','%'.$params['nickName'].'%'];
- if (!empty($params['mobile']))$where[] = ['user.mobile', 'like','%'.$params['mobile'].'%'];
- if (!empty($params['sellerGrade']) && $params['sellerGrade'] >0)$where[] = ['user.seller_grade','=', $params['sellerGrade']];
- if (!empty($params['cLevel']) && $params['cLevel'] >0)$where[] = ['commission_detail.commission_level','=', $params['cLevel']];
- if (!empty($params['orderNo']))$where[] = ['order.order_no', 'like','%'.$params['orderNo'].'%'];
- if (isset($params['clearingStatus']) && intval($params['clearingStatus']) >=0)$where[] = ['commission_detail.clearing_status','=', $params['clearingStatus']];
- if ($times){
- $where[] = ['commission_detail.order_create_time','>=', $times['start_time']];
- $where[] = ['commission_detail.order_create_time','<=', $times['end_time']];
- }
- return self::alias('commission_detail')
- ->leftJoin('user user','commission_detail.user_id=user.user_id')
- ->leftJoin('order order','commission_detail.order_id=order.order_id')
- ->where($where)
- ->field('user.user_id,user.nick_name,user.mobile,order.order_no,
- commission_detail.id,commission_detail.order_id,commission_detail.clearing_money,commission_detail.clearing_status,
- commission_detail.commission_level,commission_detail.seller_grade,commission_detail.commission_percent,commission_detail.order_sale_volume,
- commission_detail.order_create_time,commission_detail.remark,order.staff_user_id')
- ->order('commission_detail.id desc')
- ->paginate(15)->each(function(&$item){
- $item->order_create_time = date('Y-m-d H:i:s',$item->order_create_time);
- $item->down_user = null;
- if ($item->commission_level == 2){
- /* $firstUserId = self::where('order_id',$item->order_id)->where('commission_level',1)
- ->field('user_id')->find();*/
- $item->down_user = \app\store\model\User::where('user_id',$item->staff_user_id)
- ->field('user_id,nick_name,mobile')->find();
- }
- if ($item->clearing_status == 2){
- $item->clearing_money = 0.0000;
- }
- });
- }
- }
|