Files
huangjingfen/pro_v3.5.1/app/services/other/HotDataServices.php
panchengyong c1e74d8e68 chore(php): 统一 ScottPan 文件头与注释域名替换
- 按 docs/renew-code-comment.md 将 PHP 文件头改为带边框的 Author 注释\n- 注释中的 crmeb.com 替换为 uj345.cn(代码字符串中的外链未改)\n- 新增 docs/renew-code-comment.md 说明

Made-with: Cursor
2026-03-29 11:22:58 +08:00

106 lines
4.9 KiB
PHP

<?php
// +----------------------------------------------------------------------
// | Author: ScottPan Team
// +----------------------------------------------------------------------
namespace app\services\other;
use app\services\activity\discounts\StoreDiscountsServices;
use app\services\activity\integral\StoreIntegralServices;
use app\services\activity\bargain\StoreBargainServices;
use app\services\activity\combination\StoreCombinationServices;
use app\services\activity\seckill\StoreSeckillServices;
use app\services\BaseServices;
use app\services\product\sku\StoreProductAttrValueServices;
use crmeb\services\CacheService;
/**
* Class HotDataServices
* @package app\services\product\product
*/
class HotDataServices extends BaseServices
{
/**
* 活动商品缓存库存预热
* @param int $type 商品类型 0-普通商品 1-秒杀 2-砍价 3-拼团 4-积分 5-套餐
* @return void
*/
public function hot(int $type = 0)
{
/** @var StoreProductAttrValueServices $productAttrValueServices */
$productAttrValueServices = app()->make(StoreProductAttrValueServices::class);
switch ($type) {
case 0://普通商品
break;
case 1://秒杀商品
/** @var StoreSeckillServices $seckillServices */
$seckillServices = app()->make(StoreSeckillServices::class);
$products = $seckillServices->getListByTime(0);
if ($products) {
$products = array_column($products, 'id');
$attrValue = $productAttrValueServices->getSkuArray([['product_id', 'IN', $products], ['type', '=', 1], ['quota', '>', 0]], 'unique,quota,quota_show');
if ($attrValue) {
foreach ($attrValue as $item) {
CacheService::setStock($item['unique'], (int)$item['quota'], 1);
}
}
}
break;
case 2://砍价商品
/** @var StoreBargainServices $bargainServices */
$bargainServices = app()->make(StoreBargainServices::class);
$products = $bargainServices->bargainList();
if ($products) {
$products = array_column($products, 'id');
$attrValue = $productAttrValueServices->getSkuArray([['product_id', 'IN', $products], ['type', '=', 2], ['quota', '>', 0]], 'unique,quota,quota_show');
if ($attrValue) {
foreach ($attrValue as $item) {
CacheService::setStock($item['unique'], (int)$item['quota'], 2);
}
}
}
break;
case 3://拼团商品
/** @var StoreCombinationServices $combinationServices */
$combinationServices = app()->make(StoreCombinationServices::class);
$products = $combinationServices->combinationList(['is_del' => 0, 'is_show' => 1, 'pinkIngTime' => true, 'storeProductId' => true]);
if ($products) {
$products = array_column($products, 'id');
$attrValue = $productAttrValueServices->getSkuArray([['product_id', 'IN', $products], ['type', '=', 3], ['quota', '>', 0]], 'unique,quota,quota_show');
if ($attrValue) {
foreach ($attrValue as $item) {
CacheService::setStock($item['unique'], (int)$item['quota'], 3);
}
}
}
break;
case 4://积分商品
/** @var StoreIntegralServices $integralServices */
$integralServices = app()->make(StoreIntegralServices::class);
$products = $integralServices->getColumn(['is_del' => 0], 'id');
if ($products) {
$attrValue = $productAttrValueServices->getSkuArray([['product_id', 'IN', $products], ['type', '=', 4], ['quota', '>', 0]], 'unique,quota,quota_show');
if ($attrValue) {
foreach ($attrValue as $item) {
CacheService::setStock($item['unique'], (int)$item['quota'], 4);
}
}
}
break;
case 5://套餐
/** @var StoreDiscountsServices $discountsServices */
$discountsServices = app()->make(StoreDiscountsServices::class);
$products = $discountsServices->getColumn([['is_del', '=', 0], ['is_limit', '>', 0]], 'id,limit_num');
if ($products) {
foreach ($products as $item) {
CacheService::setStock(md5($item['id']), (int)$item['limit_num'], 5);
}
}
break;
}
}
}