MemIaCache.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. /**
  3. * MemIaCache.php UTF-8
  4. * 玩家积分活动缓存
  5. *
  6. * @date : 2018/5/5 20:19
  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\MemItgModel;
  15. use huolib\tool\Time;
  16. use think\Cache;
  17. class MemIaCache extends Base {
  18. /**
  19. *获取玩家积分活动KEY
  20. *
  21. * @param int $ia_id
  22. * @param int $mem_id
  23. *
  24. * @return string
  25. */
  26. public function getMemIaKey($ia_id, $mem_id) {
  27. return 'mem_ia_'.$ia_id.'_'.$mem_id;
  28. }
  29. /**
  30. * 获取玩家积分活动信息
  31. *
  32. * @param int $ia_id
  33. * @param int $mem_id
  34. *
  35. * @return array|bool|mixed
  36. */
  37. public function getMemIaByMemIaId($ia_id, $mem_id) {
  38. $_key = $this->getMemIaKey($ia_id, $mem_id);
  39. $_mia_data_json = Cache::get($_key);
  40. $_mia_data = json_decode($_mia_data_json, true);
  41. if (!is_array($_mia_data)) {
  42. $_mia_data = $_mia_data_json;
  43. }
  44. if (!is_array($_mia_data) || empty($_mia_data)) {
  45. $_mia_data = (new MemItgModel())->getMemIaByMemIaId($ia_id, $mem_id);
  46. if (empty($_mia_data)) {
  47. return false;
  48. }
  49. $this->saveMemIaCache($ia_id, $mem_id, $_mia_data);
  50. }
  51. return $_mia_data;
  52. }
  53. /**
  54. * 保存玩家积分活动
  55. *
  56. * @param int $ia_id
  57. * @param int $mem_id
  58. * @param array $mia_data
  59. * @param int $ttl
  60. */
  61. public function saveMemIaCache($ia_id, $mem_id, $mia_data, $ttl = 3600) {
  62. $_key = $this->getMemIaKey($ia_id, $mem_id);
  63. Cache::set($_key, json_encode($mia_data), $ttl);
  64. }
  65. /**
  66. * 更新玩家信息积分活动数据
  67. *
  68. * @param int $ia_id
  69. * @param int $mem_id
  70. * @param int $integral
  71. *
  72. * @return bool
  73. */
  74. public function updateMemIa($ia_id, $mem_id, $integral) {
  75. if ($ia_id <= 0) {
  76. return false;
  77. }
  78. /* 更新积分活动 */
  79. $_mia_data = $this->getMemIaByMemIaId($ia_id, $mem_id);
  80. $_mi_model = new MemItgModel();
  81. if (empty($_mia_data)) {
  82. $_mia_data['mem_id'] = $mem_id;
  83. $_mia_data['ia_id'] = $ia_id;
  84. $_mia_data['integral_total'] = $integral;
  85. $_mia_data['integral'] = $integral;
  86. $_mia_data['total_cnt'] = 1;
  87. $_mia_data['today_cnt'] = 1;
  88. $_mia_data['last_time'] = time();
  89. $_rs = $_mi_model->addMemIa($_mia_data);
  90. } else {
  91. list($_start_time, $_end_time) = Time::today();
  92. $_mia_data['integral_total'] += $integral;
  93. if ($integral > 0) {
  94. $_mia_data['total_cnt'] += 1;
  95. }
  96. if ($_mia_data['last_time'] < $_start_time) {
  97. $_mia_data['today_cnt'] = 1;
  98. $_mia_data['integral'] = $integral;
  99. } else {
  100. if ($integral > 0) {
  101. $_mia_data['today_cnt'] += 1;
  102. }
  103. $_mia_data['integral'] += $integral;
  104. }
  105. $_mia_data['last_time'] = time();
  106. $_rs = $_mi_model->updateIa($_mia_data, $_mia_data['id']);
  107. }
  108. if (false == $_rs) {
  109. return false;
  110. }
  111. $_key = $this->getMemIaKey($ia_id, $mem_id);
  112. Cache::rm($_key);
  113. return true;
  114. }
  115. /**
  116. * 更新玩家信息积分活动数据--今日完成次数
  117. *
  118. * @param int $ia_id
  119. * @param int $mem_id
  120. * @param int $today_cnt
  121. *
  122. * @return bool
  123. */
  124. public function updateMemTodayCnt($ia_id, $mem_id, $today_cnt) {
  125. if ($ia_id <= 0) {
  126. return false;
  127. }
  128. /* 更新积分活动 */
  129. $_mia_data = $this->getMemIaByMemIaId($ia_id, $mem_id);
  130. $_mi_model = new MemItgModel();
  131. if (empty($_mia_data)) {
  132. $_mia_data['mem_id'] = $mem_id;
  133. $_mia_data['ia_id'] = $ia_id;
  134. $_mia_data['integral_total'] = 0;
  135. $_mia_data['integral'] = 0;
  136. $_mia_data['total_cnt'] = $today_cnt;
  137. $_mia_data['today_cnt'] = $today_cnt;
  138. $_mia_data['last_time'] = time();
  139. $_rs = $_mi_model->addMemIa($_mia_data);
  140. } else {
  141. $_mia_data['total_cnt'] += $today_cnt;
  142. $_mia_data['today_cnt'] = $today_cnt;
  143. $_mia_data['last_time'] = time();
  144. $_rs = $_mi_model->updateIa($_mia_data, $_mia_data['id']);
  145. }
  146. if (false == $_rs) {
  147. return false;
  148. }
  149. $_key = $this->getMemIaKey($ia_id, $mem_id);
  150. Cache::rm($_key);
  151. return true;
  152. }
  153. }