ActivityLogic.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace addons\Seckill\common\logic;
  3. use common\enums\AddonsEnum;
  4. use common\enums\RedisKeyEnum;
  5. use common\traits\ErrorTrait;
  6. use Yii;
  7. use Exception;
  8. use addons\Seckill\common\models\SeckillActivity;
  9. class ActivityLogic
  10. {
  11. private static function getStockKey($activity_id)
  12. {
  13. $key = RedisKeyEnum::suffix(RedisKeyEnum::SECKILL_ACTIVITY_STOCK, $activity_id, true);
  14. return $key;
  15. }
  16. public static function getNowStock($activity_id)
  17. {
  18. $key = self::getStockKey($activity_id);
  19. $redis = Yii::$app->redis;
  20. $stock = $redis->get($key);
  21. return $stock;
  22. }
  23. /**
  24. * 设置活动缓存[当缓存不存在时有效]
  25. * @param $activity_id
  26. * @param $activity_stock
  27. * @return
  28. */
  29. public static function setStock($activity_id,$activity_stock,$force=false)
  30. {
  31. $key = self::getStockKey($activity_id);
  32. $redis = Yii::$app->redis;
  33. if($force){
  34. $res = $redis->set($key,$activity_stock);
  35. }else{
  36. $res = $redis->setnx($key,$activity_stock);
  37. }
  38. return $res;
  39. }
  40. /**
  41. * 库存减1操作
  42. * @param $activity_id
  43. * @return bool
  44. */
  45. public static function decrStock($activity_id)
  46. {
  47. $key = self::getStockKey($activity_id);
  48. $redis = Yii::$app->redis;
  49. $result = $redis->decr($key);
  50. if($result >= 0){
  51. return true;
  52. }
  53. return false;
  54. }
  55. /**
  56. * 库存减1操作
  57. * @param $activity_id
  58. * @return bool
  59. */
  60. public static function incrStock($activity_id)
  61. {
  62. $key = self::getStockKey($activity_id);
  63. $redis = Yii::$app->redis;
  64. $result = $redis->incr($key);
  65. if($result >= 0){
  66. return true;
  67. }
  68. return false;
  69. }
  70. }