From 038fedc8a0bfb61f0894b8879838001d3847aaa6 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Tue, 23 Dec 2025 18:06:57 +0800
Subject: [PATCH] 修改供需求发布报错 需求发布底部导航发布点击弹出需求和供应发布 后台链接添加商家列表链接
---
admin/app/api/model/product/Product.php | 195 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 194 insertions(+), 1 deletions(-)
diff --git a/admin/app/api/model/product/Product.php b/admin/app/api/model/product/Product.php
index dd9af3a..ec0f8b0 100644
--- a/admin/app/api/model/product/Product.php
+++ b/admin/app/api/model/product/Product.php
@@ -4,6 +4,7 @@
use app\api\model\plus\seckill\Active as ActiveModel;
use app\common\model\product\Product as ProductModel;
+use app\common\model\settings\Setting;
use app\common\service\product\BaseProductService;
use app\common\library\helper;
use app\api\model\supplier\Supplier as SupplierModel;
@@ -11,7 +12,8 @@
use app\common\model\supplier\User as SupplierUserModel;
use app\api\model\user\CardRecord as CardRecordModel; // 会员卡 by lyzflash
use app\common\model\plus\advance\Product as AdvanceProductModel;
-
+use app\supplier\model\product\ProductSku;
+use app\api\model\order\Cart as CartModel;
/**
* 商品模型
*/
@@ -161,6 +163,13 @@
private function setProductListDataFromApi(&$data, $isMultiple, $param)
{
return parent::setProductListData($data, $isMultiple, function ($product) use ($param) {
+ if(!empty($param['userInfo'])){
+ $CartModel=new CartModel();
+ $product['cart']=$CartModel->getCartCount($param['userInfo']['user_id'],$product['product_id']);
+ }else{
+ $product['cart']=['total_num'=>0];
+ }
+
// 计算并设置商品会员价
$this->setProductGradeMoney($param['userInfo'], $product);
});
@@ -285,4 +294,188 @@
{
return $this->save(['product_status' => $data['product_status']]);
}
+
+ public function add($data)
+ {
+ if (!isset($data['image']) || empty($data['image'])) {
+ $this->error = '请上传商品图片';
+ return false;
+ }
+ //如果支持核销 by yj
+ if ($data['is_virtual'] && $data['is_verify']) {
+ if ($data['verify_type'] == 20) {
+ if (empty($data['verify_time'])) {
+ $this->error = '请选择核销有效时间';
+ return false;
+ }
+ $data["verify_start_time"] = strtotime(array_shift($data['verify_time']));
+ $data["verify_end_time"] = strtotime(array_pop($data['verify_time']));
+ }
+ if ($data['verify_store_ids']) {
+ $data['verify_store_ids'] = implode(',', array_unique($data['verify_store_ids']));
+ }
+ }
+ $data['content'] = isset($data['content']) ? $data['content'] : '';
+ $data['app_id'] = $data['sku']['app_id'] = self::$app_id;
+
+ $this->processContent($data);
+ // 开启事务
+ $this->startTrans();
+ try {
+ // 添加商品
+ $this->save($data);
+ // 商品规格
+ $this->addProductSpec($data);
+ // 商品图片
+ $this->addProductImages($data['image'], $data['shop_supplier_id']);
+ // 商品详情图片
+ if($data['is_picture'] == 1){
+ $this->addProductContentImages($data['contentImage']);
+ }
+ $this->commit();
+ return true;
+ } catch (\Exception $e) {
+ $this->error = $e->getMessage();
+ $this->rollback();
+ return false;
+ }
+ }
+ /**
+ * 处理内容
+ */
+ private function processContent(&$data)
+ {
+ $pattern = "/src=[\"\'](.*?)[\"\']/is";
+ preg_match_all($pattern, $data['content'], $match);
+ }
+ /**
+ * 添加商品图片
+ */
+ private function addProductImages($images, $shop_supplier_id)
+ {
+ $this->image()->delete();
+ $data = array_map(function ($images) use ($shop_supplier_id) {
+ isset($images['file_id']) && $image_id = $images['file_id'];
+ isset($images['image_id']) && $image_id = $images['image_id'];
+ if(!isset($images['file_id']) && !isset($images['image_id'])){
+ $image_id = $images['file_path'];
+ }
+ return [
+ 'image_id' => $image_id,
+ 'app_id' => self::$app_id
+ ];
+ }, $images);
+ return $this->image()->saveAll($data);
+ }
+
+ /**
+ * 添加商品详情图片
+ */
+ private function addProductContentImages($images)
+ {
+ $this->contentImage()->delete();
+ $data = array_map(function ($images) {
+ return [
+ 'image_id' => isset($images['file_id']) ? $images['file_id'] : $images['image_id'],
+ 'image_type' => 1,
+ 'app_id' => self::$app_id
+ ];
+ }, $images);
+ return $this->contentImage()->saveAll($data);
+ }
+
+ /**
+ * 编辑商品
+ */
+ public function edit($data)
+ {
+ if (!isset($data['image']) || empty($data['image'])) {
+ $this->error = '请上传商品图片';
+ return false;
+ }
+ //如果支持核销 by yj
+ if ($data['is_verify']) {
+ if ($data['verify_type'] == 20) {
+ if (empty($data['verify_time'])) {
+ $this->error = '请选择核销有效时间';
+ return false;
+ }
+ $data["verify_start_time"] = strtotime(array_shift($data['verify_time']));
+ $data["verify_end_time"] = strtotime(array_pop($data['verify_time']));
+ }
+ if ($data['verify_store_ids']) {
+ $data['verify_store_ids'] = implode(',', array_unique($data['verify_store_ids']));
+ }
+ }
+ $data['spec_type'] = isset($data['spec_type']) ? $data['spec_type'] : $this['spec_type'];
+ $data['content'] = isset($data['content']) ? $data['content'] : '';
+ $data['app_id'] = $data['sku']['app_id'] = self::$app_id;
+ $productSkuIdList = helper::getArrayColumn(($this['sku']), 'product_sku_id');
+ return $this->transaction(function () use ($data, $productSkuIdList) {
+ // 商品状态,如果已审核过的,看平台配置是否需要再次审核
+ $edit_audit = Setting::getItem('store')['edit_audit'];
+ if($edit_audit && $data['audit_status'] == 0){
+ $data['audit_status'] = 0;
+ }
+ // 保存商品
+ $this->save($data);
+ // 商品规格
+ $this->addProductSpec($data, true, $productSkuIdList);
+ // 商品图片
+ $this->addProductImages($data['image'], $this['shop_supplier_id']);
+ // 商品详情图片
+ if($data['is_picture'] == 1){
+ $this->addProductContentImages($data['contentImage']);
+ }
+ return true;
+ });
+ }
+
+ /**
+ * 添加商品规格
+ */
+ private function addProductSpec($data, $isUpdate = false, $productSkuIdList = [])
+ {
+ // 更新模式: 先删除所有规格
+ $model = new ProductSku;
+ $isUpdate && $model->removeAll($this['product_id']);
+ $stock = 0;//总库存
+ $product_price = 0;
+ $line_price = 0;
+ // 商城设置
+ $settings = Setting::getItem('store');
+ // 添加规格数据
+ if ($data['spec_type'] == '10') {
+ // 删除多规格遗留数据
+ $isUpdate && $model->removeSkuBySpec($this['product_id']);
+ // 单规格
+ $this->sku()->save($data['sku']);
+ $stock = $data['sku']['stock_num'];
+ $product_price = $data['sku']['product_price'];
+ $line_price = $data['sku']['line_price'];
+ } else if ($data['spec_type'] == '20') {
+ // 添加商品与规格关系记录
+ $model->addProductSpecRel($this['product_id'], $data['spec_many']['spec_attr']);
+ // 添加商品sku
+ $model->addSkuList($this['product_id'], $data['spec_many']['spec_list'], $productSkuIdList);
+ $product_price = $data['spec_many']['spec_list'][0]['spec_form']['product_price'];
+ foreach ($data['spec_many']['spec_list'] as &$item) {
+ $stock += $item['spec_form']['stock_num'];
+ if($item['spec_form']['product_price'] < $product_price){
+ $product_price = $item['spec_form']['product_price'];
+ }
+ if($item['spec_form']['line_price'] < $line_price){
+ $line_price = $item['spec_form']['line_price'];
+ }
+ }
+ }
+ $save_data = [
+ 'product_stock' => $stock,
+ 'product_price' => $product_price,
+ 'line_price' => $line_price
+ ];
+ // 商品价格
+ $save_data['product_price'] = $product_price;
+ $this->save($save_data);
+ }
}
\ No newline at end of file
--
Gitblit v1.9.2