HuoSession.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. <?php
  2. /**
  3. * HuoSession.php UTF-8
  4. * 火树Session
  5. *
  6. * @date : 2018/5/24 12:01
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\common;
  13. use huo\model\member\MemoauthModel;
  14. use huolib\constant\CacheConst;
  15. use think\Cache;
  16. class HuoSession {
  17. private $mem_id = 0;
  18. private $app_id = 0;
  19. private $type = '';
  20. private $cache_key = CacheConst::CACHE_MEM_SESSION_PREFIX;
  21. private static $token_cache_key = CacheConst::CACHE_MEM_APP_TOKEN_PREFIX;
  22. private static $cp_role_report_cnt_cache_key = CacheConst::CACHE_CP_ROLE_REPORT_CNT_PREFIX;
  23. public function __construct($mem_id = 0, $app_id = 0) {
  24. $this->mem_id = $mem_id;
  25. $this->app_id = $app_id;
  26. $this->setCacheKey($mem_id, $app_id);
  27. }
  28. /**
  29. * @return string
  30. */
  31. public function getCacheKey() {
  32. return $this->cache_key;
  33. }
  34. /**
  35. * @param int $mem_id
  36. * @param int $app_id
  37. */
  38. public function setCacheKey($mem_id, $app_id) {
  39. $this->cache_key = $this->cache_key.$mem_id.$app_id;
  40. }
  41. private function getCacheData() {
  42. return Cache::get($this->cache_key);
  43. }
  44. private function setCacheData($data) {
  45. return Cache::set($this->cache_key, $data);
  46. }
  47. /**
  48. * 设置第三方Session
  49. * openid
  50. * unionid
  51. * channel
  52. * nickname
  53. * gender
  54. * avatar
  55. * token
  56. * [
  57. * access_token
  58. * expires_in
  59. *
  60. * ]
  61. * @param $oauth_data
  62. */
  63. public function setOauthSession($oauth_data) {
  64. $_data = $this->getCacheData();
  65. $_data['oauth'] = $oauth_data;
  66. $this->setCacheData($_data);
  67. }
  68. /**
  69. * 获取OpenId
  70. *
  71. * @return string
  72. */
  73. public function getOpenId() {
  74. if (empty($this->mem_id)) {
  75. return '';
  76. }
  77. if (!empty($this->app_id)) {
  78. $_mo_data = (new MemoauthModel())->getInfoByAppMemId($this->app_id, $this->mem_id);
  79. if (!empty($_mo_data) && isset($_mo_data['openid'])) {
  80. return $_mo_data['openid'];
  81. }
  82. } else {
  83. $_data = $this->getCacheData();
  84. if (isset($_data['oauth']) && isset($_data['oauth']['openid'])) {
  85. return $_data['oauth']['openid'];
  86. } else {
  87. return (new MemoauthModel())->getOpenidByMemId($this->type, $this->mem_id);
  88. }
  89. }
  90. return '';
  91. }
  92. /**
  93. * 设置OpenId
  94. *
  95. * @param string $open_id
  96. */
  97. public function setOpenId($open_id) {
  98. $_data = $this->getCacheData();
  99. $_data['oauth']['openid'] = $open_id;
  100. $this->setCacheData($_data);
  101. }
  102. /**
  103. * 设置第三方access_token
  104. *
  105. * @param string $access_token
  106. */
  107. public function setAccessToken($access_token) {
  108. $_data = $this->getCacheData();
  109. $_data['oauth']['access_token'] = $access_token;
  110. $this->setCacheData($_data);
  111. }
  112. /**
  113. * 获取第三方token
  114. *
  115. * @return string
  116. */
  117. public function getAccessToken() {
  118. if (empty($this->mem_id)) {
  119. return '';
  120. }
  121. if (!empty($this->app_id)) {
  122. $_mo_data = (new MemoauthModel())->getInfoByAppMemId($this->app_id, $this->mem_id);
  123. if (!empty($_mo_data) && isset($_mo_data['access_token'])) {
  124. return $_mo_data['access_token'];
  125. }
  126. } else {
  127. $_data = $this->getCacheData();
  128. if (isset($_data['oauth']) && isset($_data['oauth']['access_token'])) {
  129. return $_data['oauth']['access_token'];
  130. }
  131. }
  132. return '';
  133. }
  134. /**
  135. * 设置游戏登陆的mg_mem_id
  136. *
  137. * @param int $mg_mem_id 玩家游戏ID
  138. */
  139. public function setMgMemId($mg_mem_id) {
  140. $_key = $this->app_id.'mg_mem_id';
  141. $_data = $this->getCacheData();
  142. $_data['mem'][$_key] = $mg_mem_id;
  143. $this->setCacheData($_data);
  144. }
  145. /**
  146. * 获取游戏玩家Id mg_mem_id
  147. *
  148. * @return mixed
  149. */
  150. public function getMgMemId() {
  151. if (empty($this->mem_id)) {
  152. return 0;
  153. }
  154. $_key = $this->app_id.'mg_mem_id';
  155. $_data = $this->getCacheData();
  156. if (isset($_data['mem']) && isset($_data['mem'][$_key])) {
  157. return $_data['mem'][$_key];
  158. }
  159. return '';
  160. }
  161. /**
  162. * @param $agent_id
  163. */
  164. public function setAgentId($agent_id) {
  165. $_data = $this->getCacheData();
  166. $_data['agent']['agent_id'] = $agent_id;
  167. $this->setCacheData($_data);
  168. }
  169. /**
  170. * 获取Session中的agent_id
  171. *
  172. * @return int
  173. */
  174. public function getAgentId() {
  175. if (empty($this->mem_id)) {
  176. return 0;
  177. }
  178. $_data = $this->getCacheData();
  179. if (isset($_data['agent']) && isset($_data['agent']['agent_id'])) {
  180. return $_data['agent']['agent_id'];
  181. }
  182. return 0;
  183. }
  184. /**
  185. * @param int $open_cnt
  186. */
  187. public function setOpenCnt($open_cnt) {
  188. $_data = $this->getCacheData();
  189. $_data['device']['open_cnt'] = $open_cnt;
  190. $this->setCacheData($_data);
  191. }
  192. /**
  193. * 获取Session中的open_cnt
  194. *
  195. * @return mixed
  196. */
  197. public function getOpenCnt() {
  198. if (empty($this->mem_id)) {
  199. return 0;
  200. }
  201. $_data = $this->getCacheData();
  202. if (isset($_data['device']) && isset($_data['device']['open_cnt'])) {
  203. return $_data['device']['open_cnt'];
  204. }
  205. return '';
  206. }
  207. /**
  208. * 设置小号交易token
  209. *
  210. * @param string $pay_token
  211. */
  212. public function setAgToken($pay_token) {
  213. $_data = $this->getCacheData();
  214. $_data['account_deal']['pay_token'] = $pay_token;
  215. $this->setCacheData($_data);
  216. }
  217. /**
  218. * 获取小号交易token
  219. *
  220. * @return mixed
  221. */
  222. public function getAgToken() {
  223. if (empty($this->mem_id)) {
  224. return '';
  225. }
  226. $_data = $this->getCacheData();
  227. if (isset($_data['account_deal']) && isset($_data['account_deal']['pay_token'])) {
  228. return $_data['account_deal']['pay_token'];
  229. }
  230. return '';
  231. }
  232. /**
  233. * 获取小号交易token
  234. *
  235. * @return mixed
  236. */
  237. public function clearAgToken() {
  238. if (empty($this->mem_id)) {
  239. return false;
  240. }
  241. $_data = $this->getCacheData();
  242. if (isset($_data['account_deal']) && isset($_data['account_deal']['pay_token'])) {
  243. unset($_data['account_deal']['pay_token']);
  244. }
  245. return $this->setCacheData($_data);
  246. }
  247. public static function getOpenIdByMemId($mem_id) {
  248. $_cache_key = '';
  249. }
  250. public static function setCpCheckCnt($token, $cnt) {
  251. $_key = self::$token_cache_key.$token;
  252. $_data = Cache::get($_key);
  253. $_data['cnt'] = $cnt;
  254. Cache::set($_key, $_data);
  255. }
  256. public static function getCpCheckCnt($token) {
  257. $_key = self::$token_cache_key.$token;
  258. $_data = Cache::get($_key);
  259. if (empty($_data) || empty($_data['cnt'])) {
  260. return 0;
  261. }
  262. return $_data['cnt'];
  263. }
  264. public static function setCpReleReportCnt($mg_mem_id, $cnt) {
  265. $_key = self::$cp_role_report_cnt_cache_key.$mg_mem_id;
  266. $_data = Cache::get($_key);
  267. $_data['cnt'] = $cnt;
  268. Cache::set($_key, $_data);
  269. }
  270. public static function getCpReleReportCnt($mg_mem_id) {
  271. $_key = self::$cp_role_report_cnt_cache_key.$mg_mem_id;
  272. $_data = Cache::get($_key);
  273. if (empty($_data) || empty($_data['cnt'])) {
  274. return 0;
  275. }
  276. return $_data['cnt'];
  277. }
  278. public static function setAppId($token, $app_id) {
  279. $_key = self::$token_cache_key.$token;
  280. $_data = Cache::get($_key);
  281. $_data['app_id'] = $app_id;
  282. Cache::set($_key, $_data);
  283. }
  284. public static function getAppId($token) {
  285. $_key = self::$token_cache_key.$token;
  286. $_data = Cache::get($_key);
  287. if (empty($_data) || empty($_data['app_id'])) {
  288. return 0;
  289. }
  290. return $_data['app_id'];
  291. }
  292. /**
  293. * @return string
  294. */
  295. public function getType() {
  296. return $this->type;
  297. }
  298. /**
  299. * @param string $type
  300. */
  301. public function setType($type) {
  302. $this->type = $type;
  303. }
  304. }