go-common/app/interface/main/activity/service/bws/check.go

211 lines
4.8 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
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
}