商品图片同步总后台

lszyh
lqmac 5 months ago
parent 1ec0dafde7
commit 56490d1e5c
  1. 27
      app/api/model/Goods.php
  2. 21
      app/api/model/Order.php
  3. 26
      app/api/model/OrderRefund.php
  4. 1
      app/api/service/order/Checkout.php
  5. 28
      app/common/model/Goods.php
  6. 7
      app/store/controller/Order.php
  7. 5
      app/store/model/Goods.php
  8. 16
      app/store/model/Order.php
  9. 27
      app/store/model/OrderRefund.php

@ -154,17 +154,27 @@ class Goods extends GoodsModel
$model = new GoodsBrowseLog;
$end_time = date('Y-m-d');
$start_time = date('Y-m-d', strtotime($end_time . ' - 15 days'));
$list = $model->with(['sku', 'goods', 'images.file'])
$list = $model->with(['goods', 'images.file'])
->whereBetween('ctime', [$start_time, $end_time])
// ->where('ctime', '>=', $start_time)
// ->where('ctime', '<=', $end_time)
->order('ctime', 'desc')
->where(['user_id' => $userId])
->select();
$goodsList = $list->toArray()['data'] ?? $list->toArray();
//
$origin_goods_ids = [];
foreach ($list as $key => $value) {
$origin_goods_ids[] = $value['goods']['origin_goods_id'] ?? 0;
}
$goods_images = $this->storeUsePlatformGoodsImage($origin_goods_ids);
$data = [];
$array = ["周日", "周一", "周二", "周三", "周四", "周五", "周六"];
if (!$list->isEmpty()) {
foreach ($list as $value) {
if ($value['goods']['origin_goods_id'] && $value['store_id'] > 0) {
$value['images'] = $goods_images[$value['goods']['origin_goods_id']] ?? [];
}
$data[$value['ctime']]['name'] = date('m-d', strtotime($value['ctime']));
$data[$value['ctime']]['week'] = $array[date("w", strtotime($value['ctime']))];
$data[$value['ctime']]['list'][] = $value;
@ -436,7 +446,6 @@ class Goods extends GoodsModel
}
// 获取商品记录
$goodsInfo = $this->getGoodsMain($goodsId, $with, $verifyStatus);
//$this->dealGoodsImage($goodsInfo);
// 商品规格列表
@ -581,6 +590,16 @@ class Goods extends GoodsModel
$value->goods_sku_no = $goodsInfo['goods_no_other'];
}
}
//使用总后台的商品的图片作为商城商品的图片
if ($goodsInfo->origin_goods_id && $goodsInfo->store_id > 0) {
$goods_images = $this->storeUsePlatformGoodsImage([$goodsInfo->origin_goods_id]);
$goodsInfo->images = $goods_images[$goodsInfo->origin_goods_id] ?? [];
// echo "<pre>";
// print_r($goodsInfo->images);
// exit();
}
//是否展示看同款按钮
$goodsInfo->is_show_ktk = 1;
if (in_array($goodsInfo['channel'], ['sn','sn1']) && !$goodsInfo['link_other']) {

@ -133,22 +133,28 @@ class Order extends OrderModel
->where($where)
->where('is_delete', '=', 0)
->order(['create_time' => 'desc']);
$list = $query->paginate(15)->toArray();
$list = $query->paginate(10)->toArray();
//这边后面改成多商户的话需要根据storeid去获取信息
$service = new StoreService;
$goodsModel = new GoodsModel;
$info = $service->data();
if (!empty($info['storeInfo'])) {
//if (!empty($info['storeInfo'])) {
$info = $info['storeInfo']->toArray();
foreach ($list['data'] as &$v) {
$v['storeInfo'] = $info;
$total_num = 0;
foreach ($v['goods'] as $value) {
$goods_images = $goodsModel->storeUsePlatformGoodsImage(array_column($v['goods'], 'origin_goods_id'));
foreach ($v['goods'] as &$value) {
//使用总后台的商品图片
if ($value['origin_goods_id'] && $v['store_id'] > 0) {
$value['goods_image'] = $goods_images[$value['origin_goods_id']][0]['file']['preview_url'] ?? "";
}
$total_num += $value['total_num'] ?? 0;
}
$v['total_num'] = $total_num;
$v['delivery'] = DeliveryModel::where('order_id', $v['order_id'])->find();
}
}
//}
return $list;
}
@ -499,8 +505,13 @@ class Order extends OrderModel
$order->storeInfo = $info['storeInfo']->toArray();
}
$total_num = 0;
$goodsModel = new GoodsModel;
$goods_images = $goodsModel->storeUsePlatformGoodsImage(array_column($order->goods->toArray(), 'origin_goods_id'));
if (isset($order->goods) && $order->goods) {
foreach ($order->goods as $value) {
foreach ($order->goods as &$value) {
if ($value['origin_goods_id'] && $order['store_id'] > 0) {
$value['goods_image'] = $goods_images[$value['origin_goods_id']][0]['file']['preview_url'] ?? "";
}
$total_num += $value->total_num ?? 0;
}
}

@ -19,7 +19,7 @@ use app\common\enum\order\refund\RefundStatus as RefundStatusEnum;
use app\common\enum\order\refund\RefundType as RefundTypeEnum;
use app\common\model\OrderRefund as OrderRefundModel;
use cores\exception\BaseException;
use app\common\model\Goods as GoodsModel;
/**
* 售后单模型
* Class OrderRefund
@ -103,11 +103,24 @@ class OrderRefund extends OrderRefundModel
// 当前用户ID
$userId = UserService::getCurrentLoginUserId();
// 查询列表记录
return $this->with(['orderGoods.image'])
$list = $this->with(['orderGoods.image'])
->where($filter)
->where('user_id', '=', $userId)
->order(['create_time' => 'desc'])
->paginate(15);
if ($list->isEmpty()) {
return $list;
}
$goodsModel = new GoodsModel;
foreach ($list->items() as $key => &$value) {
if ($value->orderGoods->origin_goods_id > 0) {
$goods_images = $goodsModel->storeUsePlatformGoodsImage([$value->orderGoods->origin_goods_id]);
$value['orderGoods']['goods_image'] = $goods_images[$value->orderGoods->origin_goods_id][0]['file']['preview_url'] ?? "";
}
}
return $list;
}
/**
@ -127,6 +140,15 @@ class OrderRefund extends OrderRefundModel
'order_refund_id' => $orderRefundId
], $with);
empty($detail) && throwError('未找到该售后单');
$goodsModel = new GoodsModel;
if ($detail->orderGoods->origin_goods_id > 0) {
$goods_images = $goodsModel->storeUsePlatformGoodsImage([$detail->orderGoods->origin_goods_id]);
$detail['orderGoods']['goods_image'] = $goods_images[$detail->orderGoods->origin_goods_id][0]['file']['preview_url'] ?? "";
}
return $detail;
}

@ -922,6 +922,7 @@ class Checkout extends BaseService
'user_id' => $this->user['user_id'],
'store_id' => $this->storeId,
'goods_id' => $goods['goods_id'],
'origin_goods_id' => $goods['origin_goods_id'] ?? 0,
'goods_type' => $goods['goods_type'],
'goods_name' => $goods['goods_name'],
'goods_no' => $goods['goods_no'] ?: '',

@ -25,7 +25,8 @@ use think\model\relation\BelongsTo;
use think\model\relation\HasMany;
use think\model\relation\HasOne;
use think\Paginator;
use app\store\model\GoodsImage as GoodsImageModel;
use app\store\model\UploadFile as UploadFileModel;
/**
* 商品模型
* Class Goods
@ -589,7 +590,25 @@ class Goods extends BaseModel
// 实例化新查询对象
return $query->where($filter);
}
/**
* 使用总后台的商品的图片作为商城商品的图片
* [storeUsePlatformGoodsImage description]
* @param array $origin_goods_ids [description]
* @return [type] [description]
*/
public function storeUsePlatformGoodsImage(array $origin_goods_ids){
$goods_images = GoodsImageModel::withoutGlobalScope()->whereIn('goods_id', $origin_goods_ids)->select()->toArray();
$goods_image_ids = array_column($goods_images, "image_id");
$files = UploadFileModel::withoutGlobalScope()->whereIn('file_id', $goods_image_ids)->select()->toArray();
$files = array_column($files, null, "file_id");
$arr = [];
foreach ($goods_images as &$goods_image) {
$goods_image['file'] = $files[$goods_image['image_id']] ?? [];
$arr[$goods_image['goods_id']][] = $goods_image;
}
return $arr;
}
/**
* 设置商品展示的数据
* @param Collection|Paginator $list 商品列表
@ -601,10 +620,15 @@ class Goods extends BaseModel
if ($list->isEmpty()) {
return $list;
}
//使用总后台的商品的图片作为商城商品的图片
$goodsList = $list->toArray()['data'] ?? $list->toArray();
$goods_images = $this->storeUsePlatformGoodsImage(array_column($goodsList, 'origin_goods_id'));
// 遍历商品列表整理数据
foreach ($list as &$goods) {
if ($goods->origin_goods_id && $goods->store_id > 0) {
$goods->images = $goods_images[$goods->origin_goods_id] ?? [];
}
$goods = $this->setGoodsData($goods, $callback);
}

@ -13,6 +13,7 @@ declare (strict_types=1);
namespace app\store\controller;
use app\store\model\Order as OrderModel;
use app\store\model\Goods as GoodsModel;
use think\response\Json;
use app\common\model\UploadFile as UploadFileModel;
/**
@ -35,11 +36,17 @@ class Order extends Controller
$params['merchantId'] = $this->merchantId;
$result = $model->getList($params);
$data = $result->items();
$goodsModel = new GoodsModel;
if (!empty($data)) {
foreach ($data as $key => $value) {
$data[$key]['address_match_text'] = '--';
$copy_text = "订单号:{$value['order_no']}\n";
$goods_images = $goodsModel->storeUsePlatformGoodsImage(array_column($value['goods']->toArray(), 'origin_goods_id'));
foreach ($value['goods'] as $good) {
//使用总后台的商品图片
if ($good['origin_goods_id'] && $value['store_id'] > 0) {
$good['goods_image'] = $goods_images[$good['origin_goods_id']][0]['file']['preview_url'] ?? "";
}
$copy_text .= "商品名称:{$good['goods_name']}\n";
if (!empty($good['goods_no'])) {
$copy_text .= "商品编码:{$good['goods_no']}\n";

@ -76,6 +76,11 @@ class Goods extends GoodsModel
// $goodsInfo->rules = [];
// 获取商品记录
$goodsInfo = static::detail($goodsId, $with);
//使用总后台的商品的图片作为商城商品的图片
if ($goodsInfo->origin_goods_id && $goodsInfo->store_id > 0) {
$goods_images = $this->storeUsePlatformGoodsImage([$goodsInfo->origin_goods_id]);
$goodsInfo->images = $goods_images[$goodsInfo->origin_goods_id] ?? [];
}
if ($goodsInfo->region && $goodsInfo->region_text) {
$goodsInfo->rules = [['key' => 0, 'region' => json_decode($goodsInfo->region), 'region_text' => json_decode($goodsInfo->region_text)]];
}

@ -25,6 +25,7 @@ use app\common\service\Order as OrderService;
use app\common\service\order\Printer as PrinterService;
use app\common\service\order\Refund as RefundService;
use cores\exception\BaseException;
use app\store\model\Goods as GoodsModel;
/**
* 订单管理
@ -48,9 +49,17 @@ class Order extends OrderModel
'trade',
]);
$order->merchant_remark = $order->merchant_remark ? htmlspecialchars_decode($order->merchant_remark) : "";
$goods = $order->goods ? $order->goods->toArray() : [];
if ($goods) {
$goodsModel = new GoodsModel;
$goods_images = $goodsModel->storeUsePlatformGoodsImage(array_column($order->goods->toArray(), 'origin_goods_id'));
if ($order->goods) {
//使用总后台的商品图片
foreach ($order->goods as &$value) {
if ($value->origin_goods_id && $order->store_id > 0) {
$value->goods_image = $goods_images[$value->origin_goods_id][0]['file']['preview_url'] ?? "";
}
}
$goods = $order->goods ? $order->goods->toArray() : [];
$goods = array_column($goods, null, 'goods_id');
if ($order->delivery) {
foreach ($order->delivery as &$val) {
@ -102,8 +111,7 @@ class Order extends OrderModel
if (!empty($filterOr)) {
$query = $query->whereOr($filterOr);
}
$list = $query->order(['order.create_time' => 'desc'])
->paginate($param['pageSize'] ?? 15);
$list = $query->order(['order.create_time' => 'desc'])->paginate($param['pageSize'] ?? 15);
return $list;
}

@ -27,6 +27,7 @@ use app\common\service\order\Refund as RefundService;
use app\store\model\User as UserModel;
use app\store\model\Order as OrderModel;
use app\store\model\OrderGoods as OrderGoodsMOdel;
use app\common\model\Goods as GoodsModel;
/**
* 售后单模型
@ -62,10 +63,22 @@ class OrderRefund extends OrderRefundModel
if (!empty($filterOr)) {
$query = $query->whereOr($filterOr);
}
$list = $query->order(['refund.create_time' => 'desc', 'refund.' . $this->getPk()])
->paginate(10);
$list = $query->order(['refund.create_time' => 'desc', 'refund.' . $this->getPk()])->paginate($param['pageSize'] ?? 15);
if ($list->isEmpty()) {
return $list;
}
$list = static::preload($list, ['orderGoods.image', 'orderData', 'user.avatar']);
$goodsModel = new GoodsModel;
foreach ($list->items() as $key => &$value) {
if ($value->orderGoods->origin_goods_id > 0) {
$goods_images = $goodsModel->storeUsePlatformGoodsImage([$value->orderGoods->origin_goods_id]);
$value->orderGoods->goods_image = $goods_images[$value->orderGoods->origin_goods_id][0]['file']['preview_url'] ?? "";
}
}
// 加载关联订单数据
return static::preload($list, ['orderGoods.image', 'orderData', 'user.avatar']);
return $list;
}
/**
@ -133,9 +146,15 @@ class OrderRefund extends OrderRefundModel
*/
public function getDetail(int $orderRefundId)
{
return static::detail($orderRefundId, [
$detail = static::detail($orderRefundId, [
'orderData', 'images.file', 'orderGoods.image', 'express', 'address', 'user'
]) ?: false;
$goodsModel = new GoodsModel;
if ($detail->orderGoods->origin_goods_id > 0) {
$goods_images = $goodsModel->storeUsePlatformGoodsImage([$detail->orderGoods->origin_goods_id]);
$detail['orderGoods']['goods_image'] = $goods_images[$detail->orderGoods->origin_goods_id][0]['file']['preview_url'] ?? "";
}
return $detail;
}
/**

Loading…
Cancel
Save