zhaojs
2023-06-09 9df5e4341a95c35b00e651d49ff789576f28e897
application/api/logic/commission/Tb.php
@@ -27,7 +27,7 @@
     */
    public function getEstimateCommission($user_id,$time_type,$is_own)
    {
        $info = Db::name('taobao_order_commission')->field("COUNT(id) as order_num,COALESCE(SUM(pub_share_pre_fee),0) as money,COALESCE(SUM(alipay_total_price),0) as sales_volume,'淘宝' as name")->where(['member_id'=>$user_id,'is_own'=>$is_own])->whereTime('tb_paid_time', $time_type)->find();
        $info = Db::name('taobao_order_commission')->field("COUNT(id) as order_num,COALESCE(SUM(pub_share_pre_fee),0) as money,COALESCE(SUM(alipay_total_price),0) as sales_volume,'淘宝' as name")->where(['member_id'=>$user_id,'is_own'=>$is_own])->whereTime('tb_paid_time', $time_type)->whereIn('tk_status',[3,12,14])->find();
        return $info;
    }
@@ -61,6 +61,61 @@
        return empty($list) ? [] : $list;
    }
     /**
     * 返利入库和更新(新),加上首单逻辑
     *
     * @return void
     */
    public function fanliCommissionNew($order)
    {
        $trade_id = isset($order['trade_id']) ? $order['trade_id'] : '';
        if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空'];
        //根据淘宝绑定渠道id查询用户信息
        $ModelUser = new ModelUser();
        $user = $ModelUser->where(['t_relation_id'=>$order['relation_id']])->find();
        if(!empty($user))
        {
            $browse=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'is_order'=>1])->find();
            if(!empty($browse)){
                //查询是否是首单商品
            $first_browse=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'tid'=>$order['trade_id']])->find();
            if(!empty('first_browse')){
                //计算首单返利
                $res=self::fanliCommissionForFree($order);
                return $res;
            }
            else{
                $res=self::fanliCommission($order);
                return $res;
            }
            }
            else{
                $itemid=explode("-",$order['item_id']);
                $first_good=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'is_order'=>0])->where('new_goodsId','like','%' . $itemid[1] . '')->find();
                if(empty($first_good)){
                    $res=self::fanliCommission($order);
                    return $res;
                }
                else{
                    //计算首单返利
                    $res=self::fanliCommissionForFree($order);
                    return $res;
                }
            }
        }
        else{
            //标记订单为无需分销
            $ModelOrder = new ModelTaobaoOrder();
            $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'update_time'=>time()]);
            Db::commit();
            return ['status'=>true,'info'=>'无需分销'];
        }
    }
    /**
     * 返利入库和更新
@@ -69,6 +124,7 @@
     */
    public function fanliCommission($order)
    {
        $trade_id = isset($order['trade_id']) ? $order['trade_id'] : '';
        if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空'];
        Db::startTrans();
@@ -247,5 +303,105 @@
        return ['status'=>true,'info'=>'拆分成功'];
    }
    /**
     * 首单返利入库和更新
     *
     * @return void
     */
    public function fanliCommissionForFree($order)
    {
        $trade_id = isset($order['trade_id']) ? $order['trade_id'] : '';
        if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空'];
        $itemid=explode("-",$order['item_id']);
        Db::startTrans();
        $ModelUser = new ModelUser();
        $user = $ModelUser->where(['t_relation_id'=>$order['relation_id']])->find();
        $ModelOrder = new ModelTaobaoOrder();
        if(empty($user)){
            //标记订单为无需分销
            $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'update_time'=>time()]);
            Db::commit();
            return ['status'=>true,'info'=>'无需分销1'];
        }
        $userLevelInfo = $this->getLevelInfo($user['level']); //用户等级信息
        $find_commission = $this->model->where(['trade_id'=>$trade_id])->select();
        $push_data = [];
        if(empty($find_commission)){ //开始反佣入库
            if($order['tk_status'] == 13){ //订单失效,更新订单为无需分销
                $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'update_time'=>time()]);
                //更新首单标记记录
                Db::name('user_first_free_browse')->where(['user_id'=>$user['id']])->where('new_goodsId','like','%' . $itemid[1] . '')->update(['tid'=>$trade_id,'is_order'=>0]);
                Db::commit();
                return ['status'=>true,'info'=>'订单失效,无需分销'];
            }
            //自购反佣
            $tmp_1 = [
                'trade_parent_id' => $order['trade_parent_id'],
                'trade_id' => $trade_id,
                'member_id' => $user['id'],
                'buy_member_id' => $user['id'],
                'is_own' => 1,
                'alipay_total_price' => $order['alipay_total_price'],
                'pub_share_pre_fee' => !empty($order['pub_share_pre_fee']) ? $order['alipay_total_price'] : "",
                'pub_share_fee' => !empty($order['pay_price']) ? $order['alipay_total_price'] : "",
                'refund_tag' => $order['refund_tag'],
                'item_img' => $order['item_img'],
                'item_title' => $order['item_title'],
                'tk_status' => $order['tk_status'],
                'item_id' => $order['item_id'],
                'member_commission_rate' => $userLevelInfo['own_commission_rate'],
                'is_settle' => 0,
                'tb_paid_time' => $order['tb_paid_time'],
                'pay_price' => $order['pay_price'],
                'tk_earning_time' => !empty($order['tk_earning_time']) ? strtotime($order['tk_earning_time']) : 0,
                'create_time' => time()
            ];
            $save_data[] = $tmp_1;
            $result = $this->model->saveAll($save_data);
            if(!$result){
                Db::rollback();
                return ['status'=>false,'info'=>'反佣入库失败'];
            }
            if($order['is_distribution'] == 0){
                $res_order = $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>1,'update_time'=>time()]);
                if(!$res_order){
                    Db::rollback();
                    return ['status'=>false,'info'=>'订单状态修改失败'];
                }
            }
            // if(!empty($push_data)){
            //     $this->userPush($push_data);
            // }
        }else{ //已经拆分订单,进行更新
            foreach($find_commission as $item){
                $item_data = [
                    'alipay_total_price' => $order['alipay_total_price'],
                    'pub_share_pre_fee' => !empty($order['pub_share_pre_fee']) ? $order['alipay_total_price'] : "",
                'pub_share_fee' => !empty($order['pay_price']) ? $order['alipay_total_price'] : "",
                    'refund_tag' => $order['refund_tag'],
                    'tk_status' => $order['tk_status'],
                    'pay_price' => $order['pay_price'],
                    'tk_earning_time' => !empty($order['tk_earning_time']) ? strtotime($order['tk_earning_time']) : 0,
                    'update_time' => time()
                ];
                $update_commission = $this->model->where(['id'=>$item['id']])->update($item_data);
                if(!$update_commission){
                    Db::rollback();
                    return ['status'=>false,'info'=>'更新拆分记录错误,ID为:'.$item['id']];
                }
            }
            //更新订单sign
            $update_order = $ModelOrder->where(['id'=>$order['id']])->update(['one_sign'=>$order['two_sign'],'update_time'=>time()]);
            if(!$update_order){
                Db::rollback();
                return ['status'=>false,'info'=>'更新订单sign错误,订单ID为:'.$order['id']];
            }
        }
        Db::name('user_first_free_browse')->where(['user_id'=>$user['id']])->where('new_goodsId','like','%' . $itemid[1] . '')->update(['tid'=>$trade_id,'is_order'=>1]);
        Db::commit();
        return ['status'=>true,'info'=>'首单拆分成功'];
    }