IaCache.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. /**
  3. * IaCache.php UTF-8
  4. * 积分活动
  5. *
  6. * @date : 2018/5/5 13:59
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\integral;
  13. use huo\controller\common\Base;
  14. use huo\model\integral\IntegralActivityModel;
  15. use huolib\status\IntegralStatus;
  16. use think\Cache;
  17. class IaCache extends Base {
  18. /**
  19. * 实例化
  20. *
  21. * @return static
  22. */
  23. public static function ins() {
  24. return new static();
  25. }
  26. /**
  27. * @param int $ia_id
  28. *
  29. * @return int|array
  30. */
  31. public function getIa($ia_id = 0) {
  32. if (empty($ia_id)) {
  33. return IntegralStatus::ITG_IA_ID_EMPTY;
  34. }
  35. $_ias = $this->getIas();
  36. if (!isset($_ias[$ia_id])) {
  37. return IntegralStatus::ITG_IA_ERROR;
  38. }
  39. return $_ias[$ia_id];
  40. }
  41. /**
  42. * 获取积分活动KEY
  43. *
  44. *
  45. * @return string
  46. */
  47. public function getIasKey() {
  48. return 'itg_acts';
  49. }
  50. /**
  51. * 获取积分活动数据
  52. *
  53. * @return array|bool|mixed
  54. */
  55. public function getIas() {
  56. $_key = $this->getIasKey();
  57. $_ias_data_json = Cache::get($_key);
  58. $_ias_data = json_decode($_ias_data_json, true);
  59. if(!is_array($_ias_data)){
  60. $_ias_data = $_ias_data_json;
  61. }
  62. if (!is_array($_ias_data) || empty($_ias_data)) {
  63. $_ias_data = (new IntegralActivityModel())->getIas();
  64. if (empty($_ias_data)) {
  65. return false;
  66. }
  67. $this->saveIasCache($_ias_data);
  68. }
  69. return $_ias_data;
  70. }
  71. /**
  72. * 设置积分活动数据
  73. *
  74. * @param array $ias_data
  75. * @param int $ttl
  76. */
  77. public function saveIasCache($ias_data, $ttl = 3600) {
  78. $_key = $this->getIasKey();
  79. Cache::set($_key, json_encode($ias_data), $ttl);
  80. }
  81. /**
  82. * 更新积分活动信息
  83. *
  84. * @param int $ia_id
  85. * @param array $ia_data
  86. *
  87. * @return bool
  88. */
  89. public function updateIa($ia_id, $ia_data) {
  90. $_key = $this->getIasKey();
  91. Cache::rm($_key);
  92. return (new IntegralActivityModel())->updateIa($ia_data, $ia_id);
  93. }
  94. }