|
@@ -138,7 +138,7 @@ class GoodsService
|
|
|
* @param Request $request
|
|
|
* @return Response
|
|
|
*/
|
|
|
- public static function selectList(Request $request, $goodsClassify="SERVICE")
|
|
|
+ public static function selectList(Request $request, $goodsClassify = "SERVICE")
|
|
|
{
|
|
|
$keywords = $request->get('keywords', '');
|
|
|
// if (!$keywords){
|
|
@@ -146,8 +146,8 @@ class GoodsService
|
|
|
// }
|
|
|
|
|
|
$goods = Goods::where('goods_classify', $goodsClassify)
|
|
|
- ->when($keywords != '', function ($query) use($keywords) {
|
|
|
- $query->where('goods_name','like',"%".$keywords."%");
|
|
|
+ ->when($keywords != '', function ($query) use ($keywords) {
|
|
|
+ $query->where('goods_name', 'like', "%" . $keywords . "%");
|
|
|
})
|
|
|
->select('goods_id', 'goods_name', 'goods_sales_price')
|
|
|
->get()
|
|
@@ -202,6 +202,10 @@ class GoodsService
|
|
|
$running = GoodsRunning::where('join_running_goods_id', $goodsId)->first();
|
|
|
if (!empty($running)) {
|
|
|
$running = $running->toArray();
|
|
|
+ if (!empty($running['goods_running_off_json']) && is_json($running['goods_running_off_json'])) {
|
|
|
+ $goodsRunningOffJson = json_decode($running['goods_running_off_json'], true);
|
|
|
+ $running['goods_off_addtimes'] = isset($goodsRunningOffJson['time']) ? date("Y-m-d H:i", $goodsRunningOffJson['time']) : '';
|
|
|
+ }
|
|
|
} else {
|
|
|
$running = [];
|
|
|
}
|
|
@@ -299,6 +303,10 @@ class GoodsService
|
|
|
$running = GoodsRunning::where('join_running_goods_id', $goodsId)->first();
|
|
|
if (!empty($running)) {
|
|
|
$running = $running->toArray();
|
|
|
+ if (!empty($running['goods_running_off_json']) && is_json($running['goods_running_off_json'])) {
|
|
|
+ $goodsRunningOffJson = json_decode($running['goods_running_off_json'], true);
|
|
|
+ $running['goods_off_addtimes'] = isset($goodsRunningOffJson['time']) ? date("Y-m-d H:i", $goodsRunningOffJson['time']) : '';
|
|
|
+ }
|
|
|
} else {
|
|
|
$running = [];
|
|
|
}
|
|
@@ -310,9 +318,13 @@ class GoodsService
|
|
|
$ids = [];
|
|
|
$contentList = [];
|
|
|
foreach ($component as $item) {
|
|
|
+ if (empty($item['join_component_goods_id'])) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
$ids[] = $item['join_component_goods_id'];
|
|
|
$configJson = json_decode($item['goods_component_config_json'], true);
|
|
|
$contentList[] = [
|
|
|
+ 'goods_id' => $item['join_component_goods_id'],
|
|
|
'goods_name' => $configJson['goods_name'] ?? '',
|
|
|
'goods_sales_price' => $item['goods_component_price'],
|
|
|
'nbr' => $configJson['nbr'] ?? 0
|
|
@@ -377,6 +389,12 @@ class GoodsService
|
|
|
$key = date('YmdHi', strtotime($params['goods_on_addtimes']));
|
|
|
$redis->sAdd(Goods::LISTING_KEY_PREFIX . $key, $params['goods_id']);
|
|
|
}
|
|
|
+ // 自动下架
|
|
|
+ if ($params['goods_running_off_type'] == 'T' && !empty($params['goods_off_addtimes'])) {
|
|
|
+ $redis = Redis::connection();
|
|
|
+ $key = Goods::LISTING_OFF_KEY_PREFIX . date('YmdHi', strtotime($params['goods_off_addtimes']));
|
|
|
+ $redis->sAdd($key, $params['goods_id']);
|
|
|
+ }
|
|
|
Db::commit();
|
|
|
} catch (\PDOException $e) {
|
|
|
Db::rollBack();
|
|
@@ -684,7 +702,7 @@ class GoodsService
|
|
|
$model->goods_running_storage = $params['goods_running_storage'] ?? '';
|
|
|
$model->goods_running_sale = $params['goods_running_sale'] ?? '';
|
|
|
$model->goods_running_off_type = $params['goods_running_off_type'] ?? '';
|
|
|
- $model->goods_running_off_json = $params['goods_running_off_json'] ?? '{}';
|
|
|
+ $model->goods_running_off_json = $params['goods_running_off_type'] == 'T' && !empty($params['goods_off_addtimes']) ? json_encode(['time' => strtotime($params['goods_off_addtimes'])]) : '[]';
|
|
|
if (!$model->save()) {
|
|
|
throw new BusinessException('数据写入失败');
|
|
|
}
|
|
@@ -835,9 +853,39 @@ class GoodsService
|
|
|
$data = self::inputFilter($params, new GoodsRunning());
|
|
|
// 根据goods_id 查详情ID
|
|
|
$detail = GoodsRunning::where('join_running_goods_id', $params['goods_id'])->first();
|
|
|
+ if ($params['goods_running_off_type'] == 'T') {
|
|
|
+ $redis = Redis::connection();
|
|
|
+ if (!empty($detail->goods_running_off_json)) {
|
|
|
+ $goodsRunningOffJson = json_decode($detail->goods_running_off_json, true);
|
|
|
+ if (isset($goodsRunningOffJson['time'])) {
|
|
|
+ $oldKey = Goods::LISTING_OFF_KEY_PREFIX . date('YmdHi', $goodsRunningOffJson['time']);
|
|
|
+ $goodsRunningOffJson['time'] = strtotime($params['goods_off_addtimes']);
|
|
|
+ $data['goods_running_off_json'] = json_encode($goodsRunningOffJson);
|
|
|
+ // 有老的下架时间,删除老的
|
|
|
+ $redis->srem($oldKey, $params['goods_id']);
|
|
|
+ } else {
|
|
|
+ $goodsRunningOffJson['time'] = strtotime($params['goods_off_addtimes']);
|
|
|
+ $data['goods_running_off_json'] = json_encode($goodsRunningOffJson);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $data['goods_running_off_json'] = json_encode(['time' => strtotime($params['goods_off_addtimes'])]);
|
|
|
+ }
|
|
|
+ // 加入自动下架
|
|
|
+ $newKey = Goods::LISTING_OFF_KEY_PREFIX . date('YmdHi', strtotime($params['goods_off_addtimes']));
|
|
|
+ $redis->sAdd($newKey, $params['goods_id']);
|
|
|
+
|
|
|
+ } else if ($params['goods_running_off_type'] == 'H' && $detail->goods_running_off_type == 'T') {
|
|
|
+ $goodsRunningOffJson = json_decode($detail->goods_running_off_json, true);
|
|
|
+ if (isset($goodsRunningOffJson['time'])) {
|
|
|
+ $oldKey = Goods::LISTING_OFF_KEY_PREFIX . date('YmdHi', $goodsRunningOffJson['time']);
|
|
|
+ $redis = Redis::connection();
|
|
|
+ $redis->srem($oldKey, $params['goods_id']);
|
|
|
+ }
|
|
|
+ }
|
|
|
if ($detail) {
|
|
|
self::doUpdate($detail->join_running_goods_id, $data, new GoodsRunning());
|
|
|
}
|
|
|
+
|
|
|
} catch (BusinessException $e) {
|
|
|
throw new BusinessException($e->getMessage());
|
|
|
} catch (\Exception $e) {
|
|
@@ -967,11 +1015,34 @@ class GoodsService
|
|
|
{
|
|
|
$key = Goods::LISTING_KEY_PREFIX . date('YmdHi');
|
|
|
$redis = Redis::connection();
|
|
|
- if ($redis->exists($key)) {
|
|
|
- $goodsIds = $redis->sMembers($key);
|
|
|
- if (Goods::whereIn('goods_id', $goodsIds)->update(['goods_status' => 'ON'])) {
|
|
|
- $redis->del($key);
|
|
|
- }
|
|
|
+ if (!$redis->exists($key)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ $goodsIds = $redis->sMembers($key);
|
|
|
+ if (Goods::whereIn('goods_id', $goodsIds)->update(['goods_status' => 'ON'])) {
|
|
|
+ $redis->del($key);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Desc 自动下架
|
|
|
+ * @Author Gorden
|
|
|
+ * @Date 2024/4/26 15:26
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public static function checkOffListing()
|
|
|
+ {
|
|
|
+ $key = Goods::LISTING_OFF_KEY_PREFIX . date('YmdHi');
|
|
|
+ $redis = Redis::connection();
|
|
|
+ if (!$redis->exists($key)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ $goodsIds = $redis->sMembers($key);
|
|
|
+ if (Goods::whereIn('goods_id', $goodsIds)->update(['goods_status' => 'OFF'])) {
|
|
|
+ $redis->del($key);
|
|
|
}
|
|
|
}
|
|
|
}
|