| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package record
- import (
- "strconv"
- "sync"
- "bet24.com/log"
- pb "bet24.com/servers/micros/userservices/proto"
- )
- type userRecord struct {
- userId int
- records []pb.Record
- }
- type recordmgr struct {
- userlist map[int]*userRecord
- lock *sync.RWMutex
- }
- func newRecordMgr() *recordmgr {
- ret := new(recordmgr)
- ret.userlist = make(map[int]*userRecord)
- ret.lock = &sync.RWMutex{}
- return ret
- }
- func (rd *recordmgr) doRecord(userId, recordId, count int) {
- log.Release("userId:%d, recordId:%d, count:%d", userId, recordId, count)
- rd.lock.Lock()
- defer rd.lock.Unlock()
- result := 0
- _, ret := rd.userlist[userId]
- if !ret {
- var d userRecord
- d.userId = userId
- s := pb.Record{RecordId: recordId, Count: count}
- d.records = append(d.records, s)
- rd.userlist[userId] = &d
- result = count
- } else {
- e := false
- for i := 0; i < len(rd.userlist[userId].records); i++ {
- if rd.userlist[userId].records[i].RecordId == recordId {
- e = true
- if recordId != pb.Record_MaxWin {
- rd.userlist[userId].records[i].Count += count
- } else {
- if rd.userlist[userId].records[i].Count < count {
- rd.userlist[userId].records[i].Count = count
- }
- }
- result = rd.userlist[userId].records[i].Count
- break
- }
- }
- if !e {
- s := pb.Record{RecordId: recordId, Count: count}
- rd.userlist[userId].records = append(rd.userlist[userId].records, s)
- result = count
- }
- }
- trans_updataUserRecord(userId, recordId, result)
- }
- func (rd *recordmgr) getUserRecordList(userId int) []pb.Record {
- rd.lock.Lock()
- defer rd.lock.Unlock()
- u, ret := rd.userlist[userId]
- if ret {
- return u.records
- }
- u.records = trans_getUserRecord(userId)
- return u.records
- }
- func (rd *recordmgr) dump(param string) {
- if param == "" {
- return
- }
- userId, _ := strconv.Atoi(param)
- log.Release("UserId:%d", userId)
- rd.lock.Lock()
- defer rd.lock.Unlock()
- u, ret := rd.userlist[userId]
- if ret {
- log.Release("UserRecord:%v", u)
- }
- }
|