|
@@ -798,105 +798,6 @@ class GoodsLogic
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @notes 商品规格价格导入
|
|
|
|
|
- * @param array $params
|
|
|
|
|
- * @return bool|string
|
|
|
|
|
- * @author
|
|
|
|
|
- * @date 2024/01/01 00:00
|
|
|
|
|
- */
|
|
|
|
|
- public function importSpecPrice(array $params)
|
|
|
|
|
- {
|
|
|
|
|
- if (empty($params['file'])) {
|
|
|
|
|
- return '请上传导入文件';
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- Db::startTrans();
|
|
|
|
|
- try {
|
|
|
|
|
- // 处理上传的Excel文件
|
|
|
|
|
- $file = $params['file'];
|
|
|
|
|
- $data = $this->parseExcelFile($file);
|
|
|
|
|
-
|
|
|
|
|
- if (empty($data)) {
|
|
|
|
|
- return '导入文件为空或格式错误';
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- $successCount = 0;
|
|
|
|
|
- $errorMessages = [];
|
|
|
|
|
-
|
|
|
|
|
- foreach ($data as $row => $item) {
|
|
|
|
|
- try {
|
|
|
|
|
- // 验证必要字段
|
|
|
|
|
- if (empty($item['item_id']) || empty($item['goods_id'])) {
|
|
|
|
|
- $errorMessages[] = "第{$row}行:商品ID或规格ID不能为空";
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 检查商品是否存在
|
|
|
|
|
- $goods = Goods::find($item['goods_id']);
|
|
|
|
|
- if (!$goods) {
|
|
|
|
|
- $errorMessages[] = "第{$row}行:商品ID {$item['goods_id']} 不存在";
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 检查规格是否存在
|
|
|
|
|
- $goodsItem = GoodsItem::where('id', $item['item_id'])
|
|
|
|
|
- ->where('goods_id', $item['goods_id'])
|
|
|
|
|
- ->find();
|
|
|
|
|
-
|
|
|
|
|
- if (!$goodsItem) {
|
|
|
|
|
- $errorMessages[] = "第{$row}行:规格ID {$item['item_id']} 不存在或不属于该商品";
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 更新规格价格信息
|
|
|
|
|
- $updateData = [];
|
|
|
|
|
- if (isset($item['sell_price']) && is_numeric($item['sell_price'])) {
|
|
|
|
|
- $updateData['sell_price'] = $item['sell_price'];
|
|
|
|
|
- }
|
|
|
|
|
- if (isset($item['lineation_price']) && is_numeric($item['lineation_price'])) {
|
|
|
|
|
- $updateData['lineation_price'] = $item['lineation_price'];
|
|
|
|
|
- }
|
|
|
|
|
- if (isset($item['cost_price']) && is_numeric($item['cost_price'])) {
|
|
|
|
|
- $updateData['cost_price'] = $item['cost_price'];
|
|
|
|
|
- }
|
|
|
|
|
- if (isset($item['stock']) && is_numeric($item['stock'])) {
|
|
|
|
|
- $updateData['stock'] = $item['stock'];
|
|
|
|
|
- }
|
|
|
|
|
- if (isset($item['weight']) && is_numeric($item['weight'])) {
|
|
|
|
|
- $updateData['weight'] = $item['weight'];
|
|
|
|
|
- }
|
|
|
|
|
- if (isset($item['volume']) && is_numeric($item['volume'])) {
|
|
|
|
|
- $updateData['volume'] = $item['volume'];
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- if (!empty($updateData)) {
|
|
|
|
|
- GoodsItem::where('id', $item['item_id'])->update($updateData);
|
|
|
|
|
-
|
|
|
|
|
- // 更新商品的最小最大价格
|
|
|
|
|
- $this->updateGoodsMinMaxPrice($item['goods_id']);
|
|
|
|
|
-
|
|
|
|
|
- $successCount++;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- } catch (\Exception $e) {
|
|
|
|
|
- $errorMessages[] = "第{$row}行:" . $e->getMessage();
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- Db::commit();
|
|
|
|
|
-
|
|
|
|
|
- if (!empty($errorMessages)) {
|
|
|
|
|
- return "导入完成,成功{$successCount}条,失败" . count($errorMessages) . "条。错误信息:" . implode(';', array_slice($errorMessages, 0, 5));
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return true;
|
|
|
|
|
-
|
|
|
|
|
- } catch (\Exception $e) {
|
|
|
|
|
- Db::rollback();
|
|
|
|
|
- return '导入失败:' . $e->getMessage();
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @notes 商品规格价格导入列表处理
|
|
* @notes 商品规格价格导入列表处理
|