GmCache.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * GmCache.php UTF-8
  4. * 游戏币缓存
  5. *
  6. * @date : 2018/6/5 13:35
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\wallet;
  13. use huo\controller\common\Base;
  14. use huo\model\finance\GmMemModel;
  15. use think\Cache;
  16. class GmCache extends Base {
  17. public static function ins() {
  18. return new static();
  19. }
  20. /**
  21. * 获取玩家游戏币KEY
  22. *
  23. * @param string $mem_id
  24. *
  25. * @param $app_id
  26. *
  27. * @return string
  28. */
  29. public function getGmKey($mem_id, $app_id) {
  30. return 'gm_key_'.$mem_id.'_'.$app_id;
  31. }
  32. /**
  33. * 获取游戏币余额
  34. *
  35. * @param int $mem_id
  36. * @param int $app_id
  37. *
  38. * @return float|false
  39. */
  40. public function getRemainByMemGame($mem_id, $app_id) {
  41. $_gm_data = $this->getInfoByMemGame($mem_id, $app_id);
  42. if (empty($_gm_data)) {
  43. return false;
  44. }
  45. return $_gm_data['remain'];
  46. }
  47. /**
  48. * 获取账户游戏币信息
  49. *
  50. * @param int $mem_id
  51. * @param int $app_id
  52. *
  53. * @return array|bool|mixed
  54. */
  55. public function getInfoByMemGame($mem_id, $app_id) {
  56. $_key = $this->getGmKey($mem_id, $app_id);
  57. $_gm_data_json = Cache::get($_key);
  58. $_gm_data = json_decode($_gm_data_json, true);
  59. if (!is_array($_gm_data)) {
  60. $_gm_data = $_gm_data_json;
  61. }
  62. if (!is_array($_gm_data) || empty($_gm_data)) {
  63. $_gm_data = (new GmMemModel())->getInfoByMemGame($mem_id, $app_id);
  64. if (empty($_gm_data)) {
  65. return false;
  66. }
  67. $this->saveGmCache($mem_id, $app_id, $_gm_data);
  68. }
  69. return $_gm_data;
  70. }
  71. /**
  72. * 保存玩家游戏币数据
  73. *
  74. * @param int $mem_id
  75. * @param int $app_id
  76. * @param array $gm_data
  77. * @param int $ttl
  78. */
  79. public function saveGmCache($mem_id, $app_id, $gm_data, $ttl = 3600) {
  80. $_key = $this->getGmKey($mem_id, $app_id);
  81. Cache::set($_key, json_encode($gm_data), $ttl);
  82. }
  83. /**
  84. * 更新帐号信息
  85. *
  86. * @param int $mem_id
  87. * @param int $app_id
  88. * @param array $gm_data
  89. *
  90. * @return bool
  91. */
  92. public function updateGm($mem_id, $app_id, $gm_data) {
  93. $_key = $this->getGmKey($mem_id, $app_id);
  94. Cache::rm($_key);
  95. return (new GmMemModel())->updateDataGm($mem_id, $app_id, $gm_data);
  96. }
  97. }