userinfo.go 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695
  1. package user
  2. import (
  3. "fmt"
  4. "sync"
  5. badge "bet24.com/servers/micros/badge/proto"
  6. userservices "bet24.com/servers/micros/userservices/proto"
  7. )
  8. func NewUserInfo(userIndex int32) *UserInfo {
  9. u := new(UserInfo)
  10. u.userIndex = userIndex
  11. u.lock = &sync.RWMutex{}
  12. u.Clear()
  13. return u
  14. }
  15. type UserInfo struct {
  16. lock *sync.RWMutex
  17. userIndex int32 // 网络索引,只读,如果需要改变,需另外创建一个对象
  18. userId int // 用户ID
  19. gold int // 金币
  20. YyfUid int // 用户ID
  21. YyfFaceId string // 用户ID
  22. YyfName string // 用户ID
  23. YyfGold int // 金币
  24. bankamount int // 保险柜数量
  25. nickName string // 昵称
  26. faceUrl string // 头像地址
  27. faceId int // 默认头像ID
  28. sex int //性别
  29. session string // 登录session或token
  30. payamount float64 // 充值金额
  31. viplevel int // vip等级
  32. status int // 状态
  33. tableId int // 所在桌子
  34. chairId int // 所在椅子
  35. userIp string // ip地址
  36. userWords string //个性签名
  37. isRobot int //是否机器人
  38. loginTime int64
  39. teacherid int //师父ID
  40. higherUserID int // 上级ID
  41. grade int // 代理等级
  42. chip int // 筹码
  43. chipBank int // 筹码保险柜
  44. level int
  45. experience int
  46. autoLoginChip int
  47. mailVipTip bool // 重要邮件(含附件)
  48. lastTableId int
  49. currency string // 币种
  50. currencyIsModify int // 是否允许修改(1=允许修改 其他=禁止修改)
  51. utmSource string // 流量渠道
  52. isGuest bool
  53. decorations []userservices.UserDecoration
  54. badges []badge.BadgePosition // 徽章
  55. // 比赛带入的信息
  56. score int // 当前分数
  57. setCount int // 当前局数
  58. baseScore int // 当前底分
  59. vipPoint int
  60. vipExpire int
  61. partnerId int
  62. versionCode int
  63. charm int
  64. }
  65. func (u *UserInfo) Clear() {
  66. u.lock.Lock()
  67. defer u.lock.Unlock()
  68. u.userId = 0
  69. u.gold = 0
  70. u.bankamount = 0
  71. u.nickName = ""
  72. u.faceId = 0
  73. u.faceUrl = ""
  74. u.sex = 0
  75. u.session = ""
  76. u.payamount = 0
  77. u.viplevel = 0
  78. u.status = UserStatus_NotLogin
  79. u.tableId = -1
  80. u.chairId = -1
  81. u.userWords = ""
  82. u.isRobot = 0
  83. u.loginTime = 0
  84. u.teacherid = 0
  85. u.higherUserID = 0
  86. u.grade = 0
  87. u.chip = 0
  88. u.chipBank = 0
  89. u.level = 0
  90. u.experience = 0
  91. u.autoLoginChip = 0
  92. u.mailVipTip = false
  93. u.lastTableId = -1
  94. u.currency = ""
  95. u.currencyIsModify = 0
  96. u.utmSource = ""
  97. u.isGuest = false
  98. }
  99. func (u *UserInfo) GetLogonTime() int64 {
  100. return u.loginTime
  101. }
  102. func (u *UserInfo) SetLogonTime(t int64) {
  103. u.loginTime = t
  104. }
  105. func (u *UserInfo) GetUserIndex() int32 {
  106. return u.userIndex
  107. }
  108. func (u *UserInfo) GetUserId() int {
  109. u.lock.RLock()
  110. defer u.lock.RUnlock()
  111. return u.userId
  112. }
  113. func (u *UserInfo) SetUserId(value int) {
  114. u.lock.Lock()
  115. defer u.lock.Unlock()
  116. u.userId = value
  117. }
  118. func (u *UserInfo) IsRobot() bool {
  119. u.lock.Lock()
  120. defer u.lock.Unlock()
  121. if u.isRobot == 1 {
  122. return true
  123. }
  124. return false
  125. }
  126. func (u *UserInfo) SetRobot() {
  127. u.isRobot = 1
  128. }
  129. func (u *UserInfo) GetUserIp() string {
  130. u.lock.RLock()
  131. defer u.lock.RUnlock()
  132. return u.userIp
  133. }
  134. func (u *UserInfo) SetUserIp(value string) {
  135. u.lock.Lock()
  136. defer u.lock.Unlock()
  137. u.userIp = value
  138. }
  139. func (u *UserInfo) GetUserStatus() int {
  140. u.lock.RLock()
  141. defer u.lock.RUnlock()
  142. return u.status
  143. }
  144. func (u *UserInfo) SetUserStatus(value int) {
  145. u.lock.Lock()
  146. defer u.lock.Unlock()
  147. u.status = value
  148. }
  149. func (u *UserInfo) IsPlayer() bool {
  150. u.lock.Lock()
  151. defer u.lock.Unlock()
  152. return u.status >= UserStatus_Sit && u.status != UserStatus_Watch
  153. }
  154. func (u *UserInfo) GetUserGold() int {
  155. u.lock.RLock()
  156. defer u.lock.RUnlock()
  157. return u.gold
  158. //return u.YyfGold
  159. }
  160. func (u *UserInfo) SetUserGold(value int) {
  161. u.lock.Lock()
  162. defer u.lock.Unlock()
  163. u.gold = value
  164. }
  165. func (u *UserInfo) GetUserBankamount() int {
  166. u.lock.RLock()
  167. defer u.lock.RUnlock()
  168. return u.bankamount
  169. }
  170. func (u *UserInfo) SetUserBankamount(value int) {
  171. u.lock.Lock()
  172. defer u.lock.Unlock()
  173. u.bankamount = value
  174. }
  175. func (u *UserInfo) GetUserSession() string {
  176. u.lock.RLock()
  177. defer u.lock.RUnlock()
  178. return u.session
  179. }
  180. func (u *UserInfo) SetUserSession(value string) {
  181. u.lock.Lock()
  182. defer u.lock.Unlock()
  183. u.session = value
  184. }
  185. func (u *UserInfo) GetUserNickName() string {
  186. u.lock.RLock()
  187. defer u.lock.RUnlock()
  188. return u.nickName
  189. }
  190. func (u *UserInfo) SetUserNickName(value string) {
  191. u.lock.Lock()
  192. defer u.lock.Unlock()
  193. u.nickName = value
  194. }
  195. func (u *UserInfo) GetUserFaceUrl() string {
  196. u.lock.RLock()
  197. defer u.lock.RUnlock()
  198. return u.faceUrl
  199. }
  200. func (u *UserInfo) SetUserFaceUrl(value string) {
  201. u.lock.Lock()
  202. defer u.lock.Unlock()
  203. u.faceUrl = value
  204. }
  205. func (u *UserInfo) GetUserFaceId() int {
  206. u.lock.RLock()
  207. defer u.lock.RUnlock()
  208. return u.faceId
  209. }
  210. func (u *UserInfo) SetUserFaceId(value int) {
  211. u.lock.Lock()
  212. defer u.lock.Unlock()
  213. u.faceId = value
  214. }
  215. func (u *UserInfo) GetUserSex() int {
  216. u.lock.RLock()
  217. defer u.lock.RUnlock()
  218. return u.sex
  219. }
  220. func (u *UserInfo) SetUserSex(value int) {
  221. u.lock.Lock()
  222. defer u.lock.Unlock()
  223. u.sex = value
  224. }
  225. func (u *UserInfo) GetUserPayAmount() float64 {
  226. u.lock.RLock()
  227. defer u.lock.RUnlock()
  228. return u.payamount
  229. }
  230. func (u *UserInfo) SetUserPayAmount(value float64) {
  231. u.lock.Lock()
  232. defer u.lock.Unlock()
  233. u.payamount = value
  234. }
  235. func (u *UserInfo) GetUserVipLevel() int {
  236. u.lock.RLock()
  237. defer u.lock.RUnlock()
  238. return u.viplevel
  239. }
  240. func (u *UserInfo) GetUserVipPoint() int {
  241. u.lock.RLock()
  242. defer u.lock.RUnlock()
  243. return u.vipPoint
  244. }
  245. func (u *UserInfo) GetUserVipExpire() int {
  246. u.lock.RLock()
  247. defer u.lock.RUnlock()
  248. return u.vipExpire
  249. }
  250. func (u *UserInfo) SetUserVipLevel(level int, point, expire int) {
  251. u.lock.Lock()
  252. defer u.lock.Unlock()
  253. u.viplevel = level
  254. u.vipPoint = point
  255. u.vipExpire = expire
  256. }
  257. func (u *UserInfo) GetUserTableId() int {
  258. u.lock.RLock()
  259. defer u.lock.RUnlock()
  260. return u.tableId
  261. }
  262. func (u *UserInfo) SetUserTableId(value int) {
  263. u.lock.Lock()
  264. defer u.lock.Unlock()
  265. u.tableId = value
  266. }
  267. func (u *UserInfo) GetUserChairId() int {
  268. u.lock.RLock()
  269. defer u.lock.RUnlock()
  270. return u.chairId
  271. }
  272. func (u *UserInfo) SetUserChairId(value int) {
  273. u.lock.Lock()
  274. defer u.lock.Unlock()
  275. u.chairId = value
  276. }
  277. func (u *UserInfo) GetUserLastTableId() int {
  278. u.lock.RLock()
  279. defer u.lock.RUnlock()
  280. return u.lastTableId
  281. }
  282. func (u *UserInfo) SetUserLastTableId(value int) {
  283. u.lock.Lock()
  284. defer u.lock.Unlock()
  285. u.lastTableId = value
  286. }
  287. func (u *UserInfo) GetAutoLoginChip() int {
  288. u.lock.RLock()
  289. defer u.lock.RUnlock()
  290. return u.autoLoginChip
  291. }
  292. func (u *UserInfo) SetAutoLoginChip(value int) {
  293. u.lock.Lock()
  294. defer u.lock.Unlock()
  295. u.autoLoginChip = value
  296. }
  297. func (u *UserInfo) GetMailVipTip() bool {
  298. u.lock.RLock()
  299. defer u.lock.RUnlock()
  300. return u.mailVipTip
  301. }
  302. func (u *UserInfo) SetMailVipTip(value bool) {
  303. u.lock.Lock()
  304. defer u.lock.Unlock()
  305. u.mailVipTip = value
  306. }
  307. func (u *UserInfo) GetUserInfo_Login(code, isGuest, chipSend, loginAward, isWhite int, isRegister bool) UserInfo_Login {
  308. u.lock.RLock()
  309. defer u.lock.RUnlock()
  310. u.isGuest = isGuest == 1
  311. return UserInfo_Login{
  312. UserInfo_Base: UserInfo_Base{
  313. UserId: u.userId,
  314. Gold: u.gold,
  315. Vip: u.viplevel,
  316. NickName: u.nickName,
  317. FaceUrl: u.faceUrl,
  318. // UserId: u.YyfUid,
  319. //Gold: u.YyfGold,
  320. //NickName: u.YyfName,
  321. //FaceUrl: u.YyfFaceId,
  322. YyfUid: u.YyfUid,
  323. YyfGold: u.YyfGold,
  324. YyfName: u.YyfName,
  325. YyfFaceId: u.YyfFaceId,
  326. FaceId: u.faceId,
  327. Sex: u.sex,
  328. UserWords: u.userWords,
  329. Chip: u.chip,
  330. Decorations: u.decorations,
  331. Charm: u.charm,
  332. Level: u.level,
  333. VipExpire: u.vipExpire,
  334. Badges: u.badges,
  335. },
  336. BankAmount: u.bankamount,
  337. Session: u.session,
  338. PayAmount: u.payamount,
  339. Code: code,
  340. IsGuest: isGuest,
  341. TeacherId: u.teacherid,
  342. HigherUserID: u.higherUserID,
  343. Grade: u.grade,
  344. ChipBank: u.chipBank,
  345. ChipSend: chipSend,
  346. Experience: u.experience,
  347. LoginAward: loginAward,
  348. IsWhite: isWhite,
  349. AutoLoginChip: u.autoLoginChip,
  350. MailVipTip: u.mailVipTip,
  351. IsRegister: isRegister,
  352. Currency: u.currency,
  353. CurrencyIsModify: u.currencyIsModify,
  354. VipPoint: u.vipPoint,
  355. }
  356. }
  357. func (u *UserInfo) GetUserInfo_Table(self bool) UserInfo_Table {
  358. u.lock.RLock()
  359. defer u.lock.RUnlock()
  360. ret := UserInfo_Table{
  361. UserInfo_Base: UserInfo_Base{
  362. UserId: u.userId,
  363. YyfGold: u.YyfGold,
  364. YyfUid: u.YyfUid,
  365. YyfFaceId: u.YyfFaceId,
  366. YyfName: u.nickName,
  367. Gold: u.gold,
  368. Vip: u.viplevel,
  369. NickName: u.nickName,
  370. FaceUrl: u.faceUrl,
  371. FaceId: u.faceId,
  372. Sex: u.sex,
  373. UserWords: u.userWords,
  374. Chip: u.chip,
  375. Decorations: u.decorations,
  376. Charm: u.charm,
  377. Level: u.level,
  378. VipExpire: u.vipExpire,
  379. Badges: u.badges,
  380. },
  381. Status: u.status,
  382. TableId: u.tableId,
  383. ChairId: u.chairId,
  384. }
  385. //if !self && int(time.Now().Unix()) > u.vipExpire {
  386. // ret.Vip = 0
  387. //}
  388. return ret
  389. }
  390. func (u *UserInfo) SetTableChairId(tableId, chairId int) {
  391. u.lock.Lock()
  392. defer u.lock.Unlock()
  393. u.tableId = tableId
  394. u.chairId = chairId
  395. if tableId != -1 {
  396. u.lastTableId = tableId
  397. }
  398. }
  399. func (u *UserInfo) GetUserWords() string {
  400. u.lock.RLock()
  401. defer u.lock.RUnlock()
  402. return u.userWords
  403. }
  404. func (u *UserInfo) SetUserWords(value string) {
  405. u.lock.Lock()
  406. defer u.lock.Unlock()
  407. u.userWords = value
  408. }
  409. func (u *UserInfo) GetUserTeacher() int {
  410. u.lock.RLock()
  411. defer u.lock.RUnlock()
  412. return u.teacherid
  413. }
  414. func (u *UserInfo) SetUserTeacher(value int) {
  415. u.lock.Lock()
  416. defer u.lock.Unlock()
  417. u.teacherid = value
  418. }
  419. func (u *UserInfo) GetHigherUserID() int {
  420. u.lock.RLock()
  421. defer u.lock.RUnlock()
  422. return u.higherUserID
  423. }
  424. func (u *UserInfo) SetHigherUserID(value int) {
  425. u.lock.Lock()
  426. defer u.lock.Unlock()
  427. u.higherUserID = value
  428. }
  429. func (u *UserInfo) GetGrade() int {
  430. u.lock.RLock()
  431. defer u.lock.RUnlock()
  432. return u.grade
  433. }
  434. func (u *UserInfo) SetGrade(value int) {
  435. u.lock.Lock()
  436. defer u.lock.Unlock()
  437. u.grade = value
  438. }
  439. func (u *UserInfo) GetChip() int {
  440. u.lock.RLock()
  441. defer u.lock.RUnlock()
  442. return u.chip
  443. }
  444. func (u *UserInfo) SetChip(value int) {
  445. u.lock.Lock()
  446. defer u.lock.Unlock()
  447. u.chip = value
  448. }
  449. func (u *UserInfo) GetChipBank() int {
  450. u.lock.RLock()
  451. defer u.lock.RUnlock()
  452. return u.chipBank
  453. }
  454. func (u *UserInfo) SetChipBank(value int) {
  455. u.lock.Lock()
  456. defer u.lock.Unlock()
  457. u.chipBank = value
  458. }
  459. func (u *UserInfo) DumpUserInfo() string {
  460. u.lock.RLock()
  461. u.lock.RUnlock()
  462. return fmt.Sprintf("UserInfo[%d:%d] %s Gold:%d Status:%d TableChair:%d.%d Robot[%d] Level:%d(%d) Chip:%d",
  463. u.userIndex, u.userId, u.nickName, u.gold, u.status, u.tableId, u.chairId, u.isRobot, u.level, u.experience, u.chip)
  464. }
  465. func (u *UserInfo) GetCopy() *UserInfo {
  466. userInfo := *u
  467. return &userInfo
  468. }
  469. func (u *UserInfo) GetUserLevel() int {
  470. u.lock.RLock()
  471. defer u.lock.RUnlock()
  472. return u.level
  473. }
  474. func (u *UserInfo) SetUserLevel(value int) {
  475. u.lock.Lock()
  476. defer u.lock.Unlock()
  477. u.level = value
  478. }
  479. func (u *UserInfo) GetUserExperience() int {
  480. u.lock.RLock()
  481. defer u.lock.RUnlock()
  482. return u.experience
  483. }
  484. func (u *UserInfo) SetUserExperience(value int) {
  485. u.lock.Lock()
  486. defer u.lock.Unlock()
  487. u.experience = value
  488. }
  489. func (u *UserInfo) GetCurrency() string {
  490. u.lock.RLock()
  491. defer u.lock.RUnlock()
  492. return u.currency
  493. }
  494. func (u *UserInfo) SetCurrency(value string) {
  495. u.lock.Lock()
  496. defer u.lock.Unlock()
  497. u.currency = value
  498. }
  499. func (u *UserInfo) GetCurrencyIsModify() int {
  500. u.lock.RLock()
  501. defer u.lock.RUnlock()
  502. return u.currencyIsModify
  503. }
  504. func (u *UserInfo) SetCurrencyIsModify(value int) {
  505. u.lock.Lock()
  506. defer u.lock.Unlock()
  507. u.currencyIsModify = value
  508. }
  509. func (u *UserInfo) GetUTMSource() string {
  510. u.lock.RLock()
  511. defer u.lock.RUnlock()
  512. return u.utmSource
  513. }
  514. func (u *UserInfo) SetUTMSource(value string) {
  515. u.lock.Lock()
  516. defer u.lock.Unlock()
  517. u.utmSource = value
  518. }
  519. func (u *UserInfo) IsGuest() bool {
  520. return u.isGuest
  521. }
  522. func (u *UserInfo) GetDecorations() []userservices.UserDecoration {
  523. u.lock.RLock()
  524. defer u.lock.RUnlock()
  525. return u.decorations
  526. }
  527. func (u *UserInfo) SetDecorations(value []userservices.UserDecoration) {
  528. u.lock.Lock()
  529. defer u.lock.Unlock()
  530. u.decorations = value
  531. }
  532. func (u *UserInfo) GetBadges() []badge.BadgePosition {
  533. u.lock.RLock()
  534. defer u.lock.RUnlock()
  535. return u.badges
  536. }
  537. func (u *UserInfo) SetBadges(value []badge.BadgePosition) {
  538. u.lock.Lock()
  539. defer u.lock.Unlock()
  540. u.badges = value
  541. }
  542. func (u *UserInfo) GetScore() int {
  543. u.lock.RLock()
  544. defer u.lock.RUnlock()
  545. return u.score
  546. }
  547. func (u *UserInfo) SetScore(value int) {
  548. u.lock.Lock()
  549. defer u.lock.Unlock()
  550. u.score = value
  551. }
  552. func (u *UserInfo) GetBaseScore() int {
  553. u.lock.RLock()
  554. defer u.lock.RUnlock()
  555. return u.baseScore
  556. }
  557. func (u *UserInfo) SetBaseScore(value int) {
  558. u.lock.Lock()
  559. defer u.lock.Unlock()
  560. u.baseScore = value
  561. }
  562. func (u *UserInfo) GetSetCount() int {
  563. u.lock.RLock()
  564. defer u.lock.RUnlock()
  565. return u.setCount
  566. }
  567. func (u *UserInfo) SetSetCount(value int) {
  568. u.lock.Lock()
  569. defer u.lock.Unlock()
  570. u.setCount = value
  571. }
  572. func (u *UserInfo) GetPartnerId() int {
  573. u.lock.RLock()
  574. defer u.lock.RUnlock()
  575. return u.partnerId
  576. }
  577. func (u *UserInfo) SetPartnerId(value int) {
  578. u.lock.Lock()
  579. defer u.lock.Unlock()
  580. u.partnerId = value
  581. }
  582. func (u *UserInfo) GetVersionCode() int {
  583. u.lock.RLock()
  584. defer u.lock.RUnlock()
  585. return u.versionCode
  586. }
  587. func (u *UserInfo) SetVersionCode(value int) {
  588. u.lock.Lock()
  589. defer u.lock.Unlock()
  590. u.versionCode = value
  591. }
  592. func (u *UserInfo) GetUserCharm() int {
  593. u.lock.RLock()
  594. defer u.lock.RUnlock()
  595. return u.charm
  596. }
  597. func (u *UserInfo) SetUserCharm(value int) {
  598. u.lock.Lock()
  599. defer u.lock.Unlock()
  600. u.charm = value
  601. }