quanwei
2 days ago 04102f7237efefa744090ed7c25f7b5d0807b679
admin/app/common/model/order/Order.php
@@ -3,6 +3,7 @@
namespace app\common\model\order;
use app\common\enum\order\OrderSourceEnum;
use app\common\enum\supplier\SupplierType;
use app\common\exception\BaseException;
use app\common\library\easywechat\AppWx;
use app\common\library\easywechat\wx\WxOrder;
@@ -48,7 +49,6 @@
        'order_source_text',
        'pay_end_time_text',
    ];
    /**
     * 关联预售定金订单
     * @return \think\model\relation\HasOne
@@ -128,7 +128,7 @@
     */
    public function supplier()
    {
        return $this->belongsTo('app\\common\\model\\supplier\\Supplier', 'shop_supplier_id', 'shop_supplier_id')->field(['shop_supplier_id', 'name', 'user_id', 'referee_id']);
        return $this->belongsTo('app\\common\\model\\supplier\\Supplier', 'shop_supplier_id', 'shop_supplier_id')->field(['shop_supplier_id', 'name', 'user_id', 'referee_id','supplier_type','gift_type']);
    }
    
    /**
@@ -621,7 +621,7 @@
                // 回退用户积分
                $user = UserModel::detail($this['user_id']);
                $describe = "订单取消:{$this['order_no']}";
                $this['points_num'] > 0 && $user->setIncPoints($this['points_num'], $describe);
                $this['points_num'] > 0 && $user->setIncPoints($this['points_num'], $describe,0,true,($this['supplier']['supplier_type'] == SupplierType::GROUPBUYING?1:0));
                //预售订单
                if ($this['order_source'] == OrderSourceEnum::ADVANCE) {
                    if ($this['advance']['money_return'] == 1) {//预售订单退定金
@@ -1037,4 +1037,37 @@
        return $num;
    }
    /**
     * 获取用户是否购买过指定商品
     * @param int $user_id 用户ID
     * @param array $product_ids 商品ID数组
     * @param bool $is_complete 是否只查询已完成的订单
     * @return array|bool
     */
    public static function getOrderProductIds($user_id, $product_ids = [], $is_complete = false)
    {
        // 构建查询条件
        $model = (new static())->alias('o')
            ->join('order_product op', 'o.order_id = op.order_id')
            ->where('o.user_id', '=', $user_id)
            ->where('o.order_source', '=', OrderSourceEnum::MASTER)
            ->where('o.is_delete', '=', 0);
        // 如果指定了商品ID,则只查询这些商品
        if (!empty($product_ids)) {
            $model->where('op.product_id', 'in', $product_ids);
        }
        // 如果只查询已完成的订单
        if ($is_complete) {
            $model->where('o.order_status', '=', 30); // 已完成状态
        } else {
            // 排除已取消的订单
            $model->where('o.order_status', '<>', 20);
        }
        // 查询用户购买过的商品ID
        $result = $model->group('op.product_id')->column('op.product_id');
        return $result ?true:false;
    }
}