You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

HotDataServices.php 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. namespace app\services\other;
  3. use app\services\activity\discounts\StoreDiscountsServices;
  4. use app\services\activity\integral\StoreIntegralServices;
  5. use app\services\activity\bargain\StoreBargainServices;
  6. use app\services\activity\combination\StoreCombinationServices;
  7. use app\services\activity\seckill\StoreSeckillServices;
  8. use app\services\BaseServices;
  9. use app\services\product\sku\StoreProductAttrValueServices;
  10. use crmeb\services\CacheService;
  11. use crmeb\traits\ServicesTrait;
  12. /**
  13. * Class HotDataServices
  14. * @package app\services\product\product
  15. */
  16. class HotDataServices extends BaseServices
  17. {
  18. use ServicesTrait;
  19. public function hot(int $type = 0)
  20. {
  21. /** @var StoreProductAttrValueServices $productAttrValueServices */
  22. $productAttrValueServices = app()->make(StoreProductAttrValueServices::class);
  23. switch ($type) {
  24. case 0://普通商品
  25. break;
  26. case 1://秒杀商品
  27. /** @var StoreSeckillServices $seckillServices */
  28. $seckillServices = app()->make(StoreSeckillServices::class);
  29. $products = $seckillServices->getListByTime(0);
  30. if ($products) {
  31. $products = array_column($products, 'id');
  32. $attrValue = $productAttrValueServices->getSkuArray([['product_id', 'IN', $products], ['type', '=', 1], ['quota', '>', 0]], 'unique,quota,quota_show');
  33. if ($attrValue) {
  34. foreach ($attrValue as $item) {
  35. CacheService::setStock($item['unique'], (int)$item['quota'], 1);
  36. }
  37. }
  38. }
  39. break;
  40. case 2://砍价商品
  41. /** @var StoreBargainServices $bargainServices */
  42. $bargainServices = app()->make(StoreBargainServices::class);
  43. $products = $bargainServices->bargainList();
  44. if ($products) {
  45. $products = array_column($products, 'id');
  46. $attrValue = $productAttrValueServices->getSkuArray([['product_id', 'IN', $products], ['type', '=', 2], ['quota', '>', 0]], 'unique,quota,quota_show');
  47. if ($attrValue) {
  48. foreach ($attrValue as $item) {
  49. CacheService::setStock($item['unique'], (int)$item['quota'], 2);
  50. }
  51. }
  52. }
  53. break;
  54. case 3://拼团商品
  55. /** @var StoreCombinationServices $combinationServices */
  56. $combinationServices = app()->make(StoreCombinationServices::class);
  57. $products = $combinationServices->combinationList(['is_del' => 0, 'is_show' => 1, 'pinkIngTime' => true, 'storeProductId' => true]);
  58. if ($products) {
  59. $products = array_column($products, 'id');
  60. $attrValue = $productAttrValueServices->getSkuArray([['product_id', 'IN', $products], ['type', '=', 3], ['quota', '>', 0]], 'unique,quota,quota_show');
  61. if ($attrValue) {
  62. foreach ($attrValue as $item) {
  63. CacheService::setStock($item['unique'], (int)$item['quota'], 3);
  64. }
  65. }
  66. }
  67. break;
  68. case 4://积分商品
  69. /** @var StoreIntegralServices $integralServices */
  70. $integralServices = app()->make(StoreIntegralServices::class);
  71. $products = $integralServices->getColumn(['is_del' => 0], 'id');
  72. if ($products) {
  73. $attrValue = $productAttrValueServices->getSkuArray([['product_id', 'IN', $products], ['type', '=', 4], ['quota', '>', 0]], 'unique,quota,quota_show');
  74. if ($attrValue) {
  75. foreach ($attrValue as $item) {
  76. CacheService::setStock($item['unique'], (int)$item['quota'], 4);
  77. }
  78. }
  79. }
  80. break;
  81. case 5://套餐
  82. /** @var StoreDiscountsServices $discountsServices */
  83. $discountsServices = app()->make(StoreDiscountsServices::class);
  84. $products = $discountsServices->getColumn([['is_del', '=', 0], ['is_limit', '>', 0]], 'id,limit_num');
  85. if ($products) {
  86. foreach ($products as $item) {
  87. CacheService::setStock(md5($item['id']), (int)$item['limit_num'], 5);
  88. }
  89. }
  90. break;
  91. }
  92. }
  93. }