From 2d25adc7f8a9f8fef748b4d7937491c4e73ca4c1 Mon Sep 17 00:00:00 2001 From: hujiebin Date: Fri, 9 Jun 2023 14:19:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=86=85=E9=83=A8=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=94=A8=E6=88=B7cp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cv/cp_cv/cp.go | 8 +++++ route/router.go | 1 + route/user_r/inner.go | 78 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 cv/cp_cv/cp.go diff --git a/cv/cp_cv/cp.go b/cv/cp_cv/cp.go new file mode 100644 index 0000000..0a0c5d6 --- /dev/null +++ b/cv/cp_cv/cp.go @@ -0,0 +1,8 @@ +package cp_cv + +// cp信息 +type CvCp struct { + CpInfo CvCpInfo `json:"cpInfo"` // cp信息 + CpLevel CvCpLevel `json:"cpLevel"` // cp等级 + PrivilegeList []CvPrivilege `json:"privilegeList"` // 等级特权 +} diff --git a/route/router.go b/route/router.go index d37c5fd..be5a1ce 100755 --- a/route/router.go +++ b/route/router.go @@ -49,6 +49,7 @@ func InitRouter() *gin.Engine { { innerUser.GET("/levels", wrapper(user_r.MGetUserLevels)) innerUser.GET("/bag/id", wrapper(user_r.GetUserBagId)) + innerUser.GET("/cp", wrapper(user_r.GetUserCp)) } // 道具相关 innerProp := inner.Group("/prop") diff --git a/route/user_r/inner.go b/route/user_r/inner.go index cb1d627..9cf4447 100644 --- a/route/user_r/inner.go +++ b/route/user_r/inner.go @@ -5,8 +5,11 @@ import ( "git.hilo.cn/hilo-common/mycontext" "git.hilo.cn/hilo-common/resource/mysql" "github.com/gin-gonic/gin" + "hilo-user/_const/enum/cp_e" + "hilo-user/cv/cp_cv" "hilo-user/cv/user_cv" "hilo-user/domain/model/bag_m" + "hilo-user/domain/model/cp_m" "hilo-user/domain/model/noble_m" "hilo-user/domain/model/res_m" "hilo-user/domain/model/user_m" @@ -90,3 +93,78 @@ func GetUserBagId(c *gin.Context) (*mycontext.MyContext, error) { }) return myCtx, nil } + +type GetUserCpReq struct { + Id mysql.ID `form:"id" binding:"required"` +} + +// @Tags 用户-内部 +// @Summary 获取用户cp +// @Param id query int true "用户id" +// @Success 200 {object} cp_cv.CvCp +// @Router /inner/user/cp [get] +func GetUserCp(c *gin.Context) (*mycontext.MyContext, error) { + myContext := mycontext.CreateMyContext(c.Keys) + var model = domain.CreateModelContext(myContext) + var req GetUserCpReq + if err := c.ShouldBindQuery(&req); err != nil { + return myContext, err + } + userId := req.Id + userInfo, err := user_m.GetUser(model, userId) + if err != nil { + return myContext, err + } + var response cp_cv.CvCp + cpLevel := cp_e.CpLevel0 + cpRelation, exists := cp_m.GetCpRelation(model, userId) + if !exists { + resp.ResponseOk(c, response) + } + var cpUserInfo *user_m.User + var myPrivilegeList []cp_cv.CvPrivilege + level := cp_m.GetCpLevel(model, cpRelation.ID) + if level.ExpireAt.Before(time.Now()) { + level.ExpireAt = time.Now().AddDate(0, 1, 0) + } + cpLevel = level.Level + cpUserId := cpRelation.UserId2 + if cpUserId == userId { + cpUserId = cpRelation.UserId1 + } + cpUserInfo, err = user_m.GetUser(model, cpUserId) + if err != nil { + return myContext, err + } + userPrivileges, err := cp_m.MGetUserSvipPrivilege(model, []uint64{userId}) + if err != nil { + return myContext, err + } + privilegeList := cp_cv.CopyCpLevelPrivilegeList(level.Level, "en") + for i, v := range privilegeList { + if v.CanSwitch { + privilegeList[i].UserSwitch = userPrivileges[userId][v.Type] + } + } + // 我的特权,有开关并且打开才返回 + for i, v := range privilegeList { + if !v.CanSwitch { + myPrivilegeList = append(myPrivilegeList, privilegeList[i]) + } else if v.UserSwitch { + myPrivilegeList = append(myPrivilegeList, privilegeList[i]) + } + } + // 返回值 + response = cp_cv.CvCp{ + CpInfo: cp_cv.CvCpInfo{ + UserInfo: user_cv.UserToTiny(*userInfo), + CpUserInfo: user_cv.UserToTiny(*cpUserInfo), + }, + CpLevel: cp_cv.CvCpLevel{ + Level: cpLevel, + }, + PrivilegeList: myPrivilegeList, + } + resp.ResponseOk(c, response) + return myContext, nil +} -- 2.22.0