You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
4.8 KiB
210 lines
4.8 KiB
package bws |
|
|
|
import ( |
|
"context" |
|
"encoding/json" |
|
|
|
bwsmdl "go-common/app/interface/main/activity/model/bws" |
|
"go-common/library/ecode" |
|
"go-common/library/log" |
|
) |
|
|
|
// RedisInfo . |
|
func (s *Service) RedisInfo(c context.Context, loginMid, mid int64, key, day, typ string, del int) (data json.RawMessage, err error) { |
|
if !s.isAdmin(loginMid) { |
|
err = ecode.ActivityNotAdmin |
|
return |
|
} |
|
if key == "" { |
|
if key, err = s.midToKey(c, mid); err != nil { |
|
return |
|
} |
|
} |
|
var ( |
|
bid int64 = 1 |
|
bs []byte |
|
) |
|
switch typ { |
|
case "point": |
|
if del == 1 { |
|
err = s.dao.DelCachePoints(c, bid) |
|
return |
|
} |
|
var points *bwsmdl.Points |
|
if points, err = s.dao.CachePoints(c, bid); err != nil || points == nil || len(points.Points) == 0 { |
|
log.Error("RedisInfo point error (%v)", err) |
|
return |
|
} |
|
if bs, err = json.Marshal(points.Points); err != nil { |
|
log.Error("RedisInfo point json error (%v)", err) |
|
return |
|
} |
|
data = json.RawMessage(bs) |
|
case "achieve": |
|
if del == 1 { |
|
err = s.dao.DelCacheAchievements(c, bid) |
|
return |
|
} |
|
var achieves *bwsmdl.Achievements |
|
if achieves, err = s.dao.CacheAchievements(c, bid); err != nil || achieves == nil || len(achieves.Achievements) == 0 { |
|
log.Error("RedisInfo achieve error (%v)", err) |
|
return |
|
} |
|
if bs, err = json.Marshal(achieves.Achievements); err != nil { |
|
log.Error("RedisInfo achieve json error (%v)", err) |
|
return |
|
} |
|
data = json.RawMessage(bs) |
|
case "user_point": |
|
if del == 1 { |
|
err = s.dao.DelCacheUserPoints(c, bid, key) |
|
return |
|
} |
|
var res []*bwsmdl.UserPoint |
|
if res, err = s.dao.CacheUserPoints(c, bid, key); err != nil { |
|
log.Error("RedisInfo user point key(%s) error (%v)", key, err) |
|
return |
|
} |
|
if bs, err = json.Marshal(res); err != nil { |
|
log.Error("RedisInfo user point json error (%v)", err) |
|
return |
|
} |
|
data = json.RawMessage(bs) |
|
case "user_achieve": |
|
if del == 1 { |
|
err = s.dao.DelCacheUserAchieves(c, bid, key) |
|
return |
|
} |
|
var res []*bwsmdl.UserAchieve |
|
if res, err = s.dao.CacheUserAchieves(c, bid, key); err != nil { |
|
log.Error("RedisInfo user achieve key(%s) error (%v)", key, err) |
|
return |
|
} |
|
if bs, err = json.Marshal(res); err != nil { |
|
log.Error("RedisInfo user achieve json error (%v)", err) |
|
return |
|
} |
|
data = json.RawMessage(bs) |
|
case "achieve_cnt": |
|
if day == "" { |
|
day = today() |
|
} |
|
if del == 1 { |
|
err = s.dao.DelCacheAchieveCounts(c, bid, day) |
|
return |
|
} |
|
var res []*bwsmdl.CountAchieves |
|
if res, err = s.dao.CacheAchieveCounts(c, bid, day); err != nil { |
|
log.Error("RedisInfo achieve_cnt day(%s) error (%v)", day, err) |
|
return |
|
} |
|
if bs, err = json.Marshal(res); err != nil { |
|
log.Error("RedisInfo achieve_cnt json error (%v)", err) |
|
return |
|
} |
|
data = json.RawMessage(bs) |
|
case "achieve_cnt_db": |
|
if day == "" { |
|
day = today() |
|
} |
|
var res []*bwsmdl.CountAchieves |
|
if res, err = s.dao.RawAchieveCounts(c, bid, day); err != nil { |
|
log.Error("RedisInfo achieve_cnt_db day(%s) error (%v)", day, err) |
|
return |
|
} |
|
if bs, err = json.Marshal(res); err != nil { |
|
log.Error("RedisInfo achieve_cnt_db json error (%v)", err) |
|
return |
|
} |
|
data = json.RawMessage(bs) |
|
default: |
|
err = ecode.RequestErr |
|
} |
|
return |
|
} |
|
|
|
// KeyInfo . |
|
func (s *Service) KeyInfo(c context.Context, loginMid, keyID, mid int64, key, typ string, del int) (data json.RawMessage, err error) { |
|
if !s.isAdmin(loginMid) { |
|
err = ecode.ActivityNotAdmin |
|
return |
|
} |
|
var ( |
|
bs []byte |
|
) |
|
switch typ { |
|
case "id": |
|
if keyID == 0 { |
|
err = ecode.RequestErr |
|
return |
|
} |
|
var user *bwsmdl.Users |
|
if user, err = s.dao.UserByID(c, keyID); err != nil { |
|
return |
|
} |
|
if bs, err = json.Marshal(user); err != nil { |
|
return |
|
} |
|
data = json.RawMessage(bs) |
|
case "mid": |
|
if mid == 0 { |
|
err = ecode.RequestErr |
|
return |
|
} |
|
if del == 1 { |
|
err = s.dao.DelCacheUsersMid(c, mid) |
|
return |
|
} |
|
var res *bwsmdl.Users |
|
if res, err = s.dao.CacheUsersMid(c, mid); err != nil { |
|
return |
|
} |
|
if bs, err = json.Marshal(res); err != nil { |
|
return |
|
} |
|
data = json.RawMessage(bs) |
|
case "key": |
|
if key == "" { |
|
err = ecode.RequestErr |
|
return |
|
} |
|
if del == 1 { |
|
err = s.dao.DelCacheUsersKey(c, key) |
|
return |
|
} |
|
var res *bwsmdl.Users |
|
if res, err = s.dao.CacheUsersKey(c, key); err != nil { |
|
return |
|
} |
|
if bs, err = json.Marshal(res); err != nil { |
|
return |
|
} |
|
data = json.RawMessage(bs) |
|
default: |
|
err = ecode.RequestErr |
|
} |
|
return |
|
} |
|
|
|
// AdminInfo get admin info. |
|
func (s *Service) AdminInfo(c context.Context, bid, mid int64) (data *bwsmdl.AdminInfo, err error) { |
|
data = new(bwsmdl.AdminInfo) |
|
if s.isAdmin(mid) { |
|
data.IsAdmin = true |
|
} |
|
var points *bwsmdl.Points |
|
if points, err = s.dao.Points(c, bid); err != nil || points == nil || len(points.Points) == 0 { |
|
log.Error("s.dao.Points error(%v)", err) |
|
err = ecode.ActivityPointFail |
|
return |
|
} |
|
for _, v := range points.Points { |
|
if v.Ower == mid { |
|
data.Point = v |
|
} |
|
} |
|
if data.Point == nil { |
|
data.Point = struct{}{} |
|
} |
|
return |
|
}
|
|
|