zhaojs
2023-07-20 8c00bd0245ca4756ca04483a4980ad202714e43e
application/api/logic/commission/Dy.php
@@ -62,6 +62,69 @@
    }
    /**
     * 返利入库和更新(新),加上首单逻辑
     *
     * @return void
     */
    public function fanliCommissionNew($order)
    {
        $trade_id = isset($order['trade_id']) ? $order['trade_id'] : '';
        if(empty($trade_id)) return ['status'=>false,'info'=>'订单号为空'];
        //判断是实付金额是否大于4元,大于4元直接普通返利
        if(floatval($order['pay_price'])>4){
            $res=self::fanliCommission($order);
            return $res;
        }
        //根据淘宝绑定渠道id查询用户信息
        $ModelUser = new ModelUser();
        $user = $ModelUser->where(['common_relation_id'=>$order['channel_code']])->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=$order['product_id'];
                $first_good=DB::name('user_first_free_browse')->where(['user_id'=>$user['id'],'is_order'=>0,'new_goodsId'=>$itemid])->find();
                if(empty($first_good)){
                    dump('没进入首单返利');
                    $res=self::fanliCommission($order);
                    return $res;
                }
                else{
                    //计算首单返利
                    dump('进入首单返利');
                    $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'=>'无需分销'];
        }
    }
    /**
     * 返利入库和更新
@@ -250,5 +313,103 @@
        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'=>'订单号为空'];
        Db::startTrans();
        $ModelUser = new ModelUser();
        $user = $ModelUser->where(['common_relation_id'=>$order['channel_code']])->find();
        $ModelOrder = new ModelDyOrder();
        if(empty($user)){
            //标记订单为无需分销
            $ModelOrder->where(['id'=>$order['id']])->update(['is_distribution'=>2,'tk_z_status'=>1,'change_time'=>time()]);
            Db::commit();
            return ['status'=>true,'info'=>'无需分销'];
        }
        $userLevelInfo = $this->getLevelInfo($user['level']); //用户等级信息
        $find_commission = $this->model->where(['trade_id'=>$trade_id])->select();
        $push_data = [];
        if(empty($find_commission)){ //开始反佣入库
            //自购反佣
            $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['pay_price'],
                'pub_share_pre_fee' => empty($order['pay_price']) ? "" : $order['pay_price'],
                'refund_tag' => 0,
                'item_img' => $order['item_img'],
                'item_title' => $order['item_title'],
                'tk_status' => $order['order_status'],
                'item_id' => $order['product_id'],
                'member_commission_rate' => $userLevelInfo['own_commission_rate'],
                'is_settle' => 0,
                'tb_paid_time' => empty($order['paid_time']) ? "" : (date("Y-m-d H:i:s",$order['paid_time'])),
                'tk_earning_time' =>empty($order['earning_time']) ? "" : $order['earning_time'],
                'create_time' => time()
            ];
            if($order['settled_status'] == '1'){
                $tmp_1['pub_share_fee'] = $order['pay_price'];
                $tmp_1['pay_price'] = $order['pay_price'];
                // $push_data[] = [
                //     'user' => $user,
                //     'title' => '恭喜,您有一笔新的订单收益',
                //     'body' => "您有一笔新的自购订单收益,佣金" + $tmp_1['pub_share_fee'] + "元,继续加油哦",
                // ];
            }
            $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,'change_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['pay_price'],
                    'pub_share_pre_fee' => empty($order['pay_price']) ? "" : $order['pay_price'],
                    'pub_share_fee' => $order['settled_status'] == '1' ? $order['pay_price'] : "",
                    'refund_tag' => 0,
                    'tk_status' => $order['order_status'],
                    'pay_price' => $order['settled_status'] == '1' ? $order['pay_price'] : $item['pay_price'],
                    'tk_earning_time' => empty($order['earning_time']) ? "" : $order['earning_time'],
                    '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']];
                }
            }
            //更新订单
            $update_order = $ModelOrder->where(['id'=>$order['id']])->update(['tk_z_status'=>1,'update_time'=>time()]);
            if(!$update_order){
                Db::rollback();
                return ['status'=>false,'info'=>'更新订单tk_z_status错误,订单ID为:'.$order['id']];
            }
        }
        Db::name('user_first_free_browse')->where(['user_id'=>$user['id'],'new_goodsId'=>$order['product_id']])->update(['tid'=>$trade_id,'is_order'=>1]);
        Db::commit();
        return ['status'=>true,'info'=>'拆分成功'];
    }