From 04102f7237efefa744090ed7c25f7b5d0807b679 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Thu, 05 Feb 2026 18:11:57 +0800
Subject: [PATCH] 完成运营中心提现和运营中心权限管理
---
admin/app/common/model/product/Product.php | 99 +++++++++++++++++++++++++++++++++++++++----------
1 files changed, 79 insertions(+), 20 deletions(-)
diff --git a/admin/app/common/model/product/Product.php b/admin/app/common/model/product/Product.php
index 37d190a..009985d 100644
--- a/admin/app/common/model/product/Product.php
+++ b/admin/app/common/model/product/Product.php
@@ -39,13 +39,51 @@
{
return json_encode($data);
}
-
+
/**
* 修改器:预告开启购买时间
*/
public function setPreviewTimeAttr($value)
{
return $value ? strtotime($value) : 0;
+ }
+
+ /**
+ * 优惠券数组转换
+ * @param $value
+ * @param $data
+ * @return string
+ */
+ public function setOpenCouponsAttr($value)
+ {
+ return $value ? json_encode($value) : '';
+ }
+
+ /**
+ * 数组转换
+ * @param $value
+ * @param $data
+ * @return string
+ */
+ public function getOpenCouponsAttr($value)
+ {
+ return $value ? json_decode($value, 1) : [];
+ }
+
+ /**
+ * 关联商品多分类表
+ */
+ public function categorys()
+ {
+ return $this->hasMany('app\\common\\model\\product\\ProductCategory', 'product_id', 'product_id');
+ }
+
+ /**
+ * 关联商品多分类表
+ */
+ public function category_ids()
+ {
+ return $this->hasMany('app\\common\\model\\product\\ProductCategory', 'product_id', 'product_id');
}
/**
@@ -110,7 +148,7 @@
public function supplier()
{
return $this->belongsTo('app\\common\\model\\supplier\\Supplier', 'shop_supplier_id', 'shop_supplier_id')
- ->field(['shop_supplier_id', 'name', 'address', 'logo_id']);
+ ->field(['shop_supplier_id', 'name', 'address', 'logo_id','supplier_type','gift_type']);
}
/**
@@ -120,6 +158,7 @@
{
return $this->hasOne('app\\common\\model\\file\\UploadFile', 'file_id', 'video_id');
}
+
/**
* 关联视频封面
*/
@@ -172,17 +211,25 @@
'audit_status' => -1, //审核状态
'is_virtual' => -1, //商品类型
'is_good' => -1, //商品类型
+ 'is_gift_pack' => -1, //是否是升级礼包
], $param);
-
// 筛选条件
$filter = [];
$model = $this;
if ($params['category_id'] > 0) {
$arr = Category::getSubCategoryId($params['category_id']);
- $model = $model->where('product.category_id', 'IN', $arr);
+ $productIds = ProductCategory::getProductIds($params['category_id']);
+ if ($productIds) {
+ $model = $model->whereRaw('product.category_id in (' . implode(',', $arr) . ') OR product_id in (' . implode(',', $productIds) . ')');
+ } else {
+ $model = $model->where('product.category_id', 'IN', $arr);
+ }
}
if (!empty($params['product_name'])) {
$model = $model->where('product_name', 'like', '%' . trim($params['product_name']) . '%');
+ }
+ if ($params['is_gift_pack']>-1) {
+ $model = $model->where('is_gift_pack', $params['is_gift_pack']);
}
if (!empty($params['search'])) {
$model = $model->where('product_name', 'like', '%' . trim($params['search']) . '%');
@@ -203,7 +250,7 @@
// 是否有城市ids by yj
if (!empty($params['city_supplier_ids'])) {
- $city_supplier_ids = explode(",",$params['city_supplier_ids']);
+ $city_supplier_ids = explode(",", $params['city_supplier_ids']);
$model = $model->where('product.shop_supplier_id', 'IN', $city_supplier_ids);
}
// 排序规则
@@ -220,14 +267,14 @@
if (isset($params['type'])) {
$model = $this->buildProductType($model, $params['type']);
}
- if(isset($params['shop_supplier_id'])&&$params['shop_supplier_id']){
+ if (isset($params['shop_supplier_id']) && $params['shop_supplier_id']) {
$model = $model->where('product.shop_supplier_id', '=', $params['shop_supplier_id']);
}
- if(isset($params['shop_supplier_ids'])&&$params['shop_supplier_ids']){
+ if (isset($params['shop_supplier_ids']) && $params['shop_supplier_ids']) {
$model = $model->where('product.shop_supplier_id', 'in', $params['shop_supplier_ids']);
}
- if(isset($params['product_id'])&&$params['product_id']){
- $model = $model->whereNotIn('product_id',$params['product_id']);
+ if (isset($params['product_id']) && $params['product_id']) {
+ $model = $model->whereNotIn('product_id', $params['product_id']);
}
// 多规格商品 最高价与最低价
$ProductSku = new ProductSku;
@@ -242,8 +289,8 @@
"$minPriceSql AS product_min_price",
"$maxPriceSql AS product_max_price"
])
- ->with(['category', 'image.file', 'sku', 'supplier'])
- ->join('supplier supplier', 'product.shop_supplier_id = supplier.shop_supplier_id','left')
+ ->with(['category', 'image.file', 'sku', 'supplier', 'spec_rel.spec'])
+ ->join('supplier supplier', 'product.shop_supplier_id = supplier.shop_supplier_id', 'left')
->where('product.is_delete', '=', 0)
->where('supplier.is_delete', '=', 0)
->where('supplier.status', '=', 0)
@@ -343,24 +390,35 @@
// 商品默认规格
$product['product_sku'] = self::getShowSku($product);
// 等级id转换成数组
- if(!is_array ($product['grade_ids'])){
- if($product['grade_ids'] != ''){
+ if (!is_array($product['grade_ids'])) {
+ if ($product['grade_ids'] != '') {
$product['grade_ids'] = explode(',', $product['grade_ids']);
} else {
$product['grade_ids'] = [];
}
}
// 可核销门店ids by yj
- if(!is_array($product['verify_store_ids'])){
- if($product['verify_store_ids'] != ''){
+ if (!is_array($product['verify_store_ids'])) {
+ if ($product['verify_store_ids'] != '') {
$product['verify_store_ids'] = explode(',', $product['verify_store_ids']);
} else {
$product['verify_store_ids'] = [];
}
}
// 核销有效时间段
- if($product['verify_type'] == 20){
+ if ($product['verify_type'] == 20) {
$product['verify_time'] = [date('Y-m-d H:i:s', $product['verify_start_time']), date('Y-m-d H:i:s', $product['verify_end_time'])];
+ }
+ // 商品多分类 by lyzflash
+ $product['category_ids'] = [];
+ if (!$product['categorys']->isEmpty()) {
+ $product['category_ids'] = helper::getArrayColumn($product['categorys'], 'category_id');
+ $product['category_names'] = implode('、', helper::getArrayColumn((new Category)->getListByIds($product['category_ids']), 'name'));
+ } else {
+ // 兼容没有多分类前的数据 by lyzflash
+ if ($product['category_id']) {
+ $product['category_ids'] = [$product['category_id']];
+ }
}
// 回调函数
is_callable($callback) && call_user_func($callback, $product);
@@ -508,6 +566,7 @@
'supplier.logo',
'video',
'poster',
+ 'categorys.category',
'contentImage.file',
])->where('product_id', '=', $product_id)
->find();
@@ -561,12 +620,12 @@
public static function getShowSku($product)
{
//如果是单规格
- if($product['spec_type'] == 10){
+ if ($product['spec_type'] == 10) {
return $product['sku'][0];
- }else{
+ } else {
//多规格返回最低价
- foreach ($product['sku'] as $sku){
- if($product['product_price'] == $sku['product_price']){
+ foreach ($product['sku'] as $sku) {
+ if ($product['product_price'] == $sku['product_price']) {
return $sku;
}
}
--
Gitblit v1.9.2