Commit 3a670845 by 杨树贤

完善上架校验

parent 7767996a
...@@ -137,7 +137,10 @@ class SkuApiController extends Controller ...@@ -137,7 +137,10 @@ class SkuApiController extends Controller
$this->response(-1, '请设置上架有效期'); $this->response(-1, '请设置上架有效期');
} }
} }
(new SkuService())->batchUpdateSkuStatus($data); $result = (new SkuService())->batchUpdateSkuStatus($data);
if ($result !== true) {
$this->response(-1, $result);
}
$this->response(0, '操作成功,请等待后台上下架任务完成刷新查看'); $this->response(0, '操作成功,请等待后台上下架任务完成刷新查看');
} }
......
...@@ -326,7 +326,6 @@ class SkuService extends BaseService ...@@ -326,7 +326,6 @@ class SkuService extends BaseService
//批量更新sku状态,走队列的 //批量更新sku状态,走队列的
public function batchUpdateSkuStatus($data) public function batchUpdateSkuStatus($data)
{ {
try {
$skuIds = explode(',', $data['sku_ids']); $skuIds = explode(',', $data['sku_ids']);
//上架时验证cp_time限制 //上架时验证cp_time限制
if ($data['operate_type'] == SkuService::OPERATE_TYPE_PUTAWAY) { if ($data['operate_type'] == SkuService::OPERATE_TYPE_PUTAWAY) {
...@@ -336,11 +335,16 @@ class SkuService extends BaseService ...@@ -336,11 +335,16 @@ class SkuService extends BaseService
$now = time(); $now = time();
$redis = new RedisModel(); $redis = new RedisModel();
$skuList = $redis->hmget('sku', $skuIds); $skuList = $redis->hmget('sku', $skuIds);
$skuList = array_map(function ($sku) {
return \json_decode($sku, true);
}, $skuList);
$skuList = array_filter($skuList, function ($value) { $skuList = array_filter($skuList, function ($value) {
return $value; return $value;
}); });
$supplierCpTimeMap = SupplierChannelModel::select('supplier_code', 'cp_time_day', 'futures_cp_time_day')->whereIn('supplier_code', array_column($skuList, 'canal'))->pluck('cp_time_day', 'supplier_code')->toArray(); $supplierCpTimeMap = SupplierChannelModel::select('supplier_code', 'cp_time_day', 'futures_cp_time_day')->whereIn('supplier_code', array_column($skuList, 'canal'))->get()->keyBy('supplier_code')->toArray();
foreach ($skuIds as $skuId) { foreach ($skuIds as $skuId) {
$sku = $redis->hget('sku', $skuId);
$sku = \json_decode($sku, true);
//获取goods_tag信息 //获取goods_tag信息
$goodsTagsStr = $redis->hget('goods_tag', $skuId); $goodsTagsStr = $redis->hget('goods_tag', $skuId);
$isFutures = false; $isFutures = false;
...@@ -358,22 +362,24 @@ class SkuService extends BaseService ...@@ -358,22 +362,24 @@ class SkuService extends BaseService
} }
//获取SKU信息以获取供应商编码 //获取SKU信息以获取供应商编码
$skuInfo = isset($skuList[$skuId]) ? json_decode($skuList[$skuId], true) : null; $skuInfo = $sku;
if (!$skuInfo || empty($skuInfo['canal'])) { if (!$skuInfo || empty($skuInfo['canal'])) {
$invalidSkuIds[] = $skuId; $invalidSkuIds[] = $skuId;
continue; continue;
} }
$supplierCode = $skuInfo['canal']; $supplierCode = $skuInfo['canal'];
//获取对应的cp_time限制 //获取对应的cp_time限制
if (!isset($supplierCpTimeMap[$supplierCode])) { if (!isset($supplierCpTimeMap[$supplierCode])) {
$invalidSkuIds[] = $skuId; $invalidSkuIds[] = [
'sku_id' => $skuId,
'supplier_code' => $supplierCode,
'cp_time_limit' => '',
];
continue; continue;
} }
$cpTimeLimit = $isFutures ? $supplierCpTimeMap[$supplierCode]['futures_cp_time_day'] : $supplierCpTimeMap[$supplierCode]['cp_time_day']; $cpTimeLimit = $isFutures ? $supplierCpTimeMap[$supplierCode]['futures_cp_time_day'] : $supplierCpTimeMap[$supplierCode]['cp_time_day'];
// -1表示不限制 // -1表示不限制
if ($cpTimeLimit == -1) { if ($cpTimeLimit == -1) {
continue; continue;
...@@ -381,19 +387,29 @@ class SkuService extends BaseService ...@@ -381,19 +387,29 @@ class SkuService extends BaseService
//计算允许的最大cp_time(当前时间+限制天数) //计算允许的最大cp_time(当前时间+限制天数)
$maxCpTime = $now + ($cpTimeLimit * 86400); $maxCpTime = $now + ($cpTimeLimit * 86400);
//获取传入的cp_time(从请求中获取,这里假设传入的是2051193600) //获取传入的cp_time(从请求中获取,这里假设传入的是2051193600)
$inputCpTime = $data['cp_time']; $inputCpTime = $data['cp_time'];
//验证cp_time是否超过限制 //验证cp_time是否超过限制
if (!$inputCpTime) {
$inputCpTime = 100000000000;
}
$inputCpTime = strtotime($inputCpTime);
if ($inputCpTime > $maxCpTime) { if ($inputCpTime > $maxCpTime) {
$invalidSkuIds[] = $skuId; $invalidSkuIds[] = [
'sku_id' => $skuId,
'supplier_code' => $supplierCode,
'cp_time_limit' => $cpTimeLimit,
];
} }
} }
//如果有不符合要求的SKU,全部拒绝 //如果有不符合要求的SKU,全部拒绝
if (!empty($invalidSkuIds)) { if (!empty($invalidSkuIds)) {
return new Exception("以下SKU的cp_time超过限制:" . implode('</br>', $invalidSkuIds)); $errorMessages = [];
foreach ($invalidSkuIds as $invalidSku) {
$errorMessages[] = "SKU ID: {$invalidSku['sku_id']}, 供应商编码: {$invalidSku['supplier_code']}, 过期时间限制: {$invalidSku['cp_time_limit']}天";
}
return "以下SKU的过期时间超过限制:" . implode('</br>', $errorMessages);
} }
} }
$supplierCodes = explode(',', $data['supplier_codes']); $supplierCodes = explode(',', $data['supplier_codes']);
...@@ -424,9 +440,6 @@ class SkuService extends BaseService ...@@ -424,9 +440,6 @@ class SkuService extends BaseService
} }
QueueService::publishQueueSecond($queueName, $queueData); QueueService::publishQueueSecond($queueName, $queueData);
} catch (\Exception $exception) {
return $exception;
}
return true; return true;
} }
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
success: function (res) { success: function (res) {
if (res.err_code === 0) { if (res.err_code === 0) {
admin.closeThisDialog(); admin.closeThisDialog();
parent.layer.msg(res.err_msg, {icon: 6}); layer.msg(res.err_msg, {icon: 6});
} else { } else {
layer.msg(res.err_msg, {icon: 5}); layer.msg(res.err_msg, {icon: 5});
} }
......
...@@ -396,7 +396,7 @@ ...@@ -396,7 +396,7 @@
if (status !== 'offshelf') { if (status !== 'offshelf') {
layer.open({ layer.open({
type: 2, type: 2,
area: ['600px', '500px'], area: ['800px', '500px'],
offset: '100px', offset: '100px',
fixed: false, //不固定 fixed: false, //不固定
maxmin: true, maxmin: true,
...@@ -425,14 +425,14 @@ ...@@ -425,14 +425,14 @@
success: function (res) { success: function (res) {
console.log(res); console.log(res);
if (res.err_code === 0) { if (res.err_code === 0) {
layer.msg(res.err_msg, {icon: 6}); parent.layer.msg(res.err_msg, {icon: 6});
table.reload('skuList', { table.reload('skuList', {
page: { page: {
curr: currentPage curr: currentPage
}, },
}); });
} else { } else {
layer.msg(res.err_msg, {icon: 5}); parent.layer.msg(res.err_msg, {icon: 5});
return false; return false;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment