bag.go 1.7 KB
Newer Older
hujiebin's avatar
hujiebin committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
package user_r

import (
	"git.hilo.cn/hilo-common/domain"
	"git.hilo.cn/hilo-common/mycontext"
	"github.com/gin-gonic/gin"
	"hilo-user/_const/enum/res_e"
	"hilo-user/cv/user_cv"
	"hilo-user/domain/model/bag_m"
	"hilo-user/domain/model/res_m"
	"hilo-user/myerr/bizerr"
	"hilo-user/req"
	"hilo-user/resp"
	"strconv"
	"time"
)

// @Tags 用户背包
// @Summary 获取用户的背包
// @Param resType path int true "类型:1 礼物"
// @Success 200 {object} []user_cv.UserBag
// @Router /v1/user/bag/{resType} [get]
func UserBag(c *gin.Context) (*mycontext.MyContext, error) {
	myCtx := mycontext.CreateMyContext(c.Keys)
	userId, err := req.GetUserId(c)
	if err != nil {
		return myCtx, err
	}
	model := domain.CreateModelContext(myCtx)
	resType, err := strconv.Atoi(c.Param("resType"))
	if err != nil {
		return myCtx, err
	}
	var results []user_cv.UserBag
	switch res_e.ResUserBag(resType) {
	case res_e.ResUserBagGift:
		userBagGifts, err := bag_m.GetUserValidUserBag(model, userId, res_e.ResUserBagGift)
		if err != nil {
			return myCtx, err
		}
hujiebin's avatar
hujiebin committed
41
		allGifts, err := res_m.FindAllResGiftsMap(model)
hujiebin's avatar
hujiebin committed
42 43 44 45
		if err != nil {
			return myCtx, err
		}
		for _, bagGift := range userBagGifts {
hujiebin's avatar
hujiebin committed
46
			if gift, ok := allGifts[bagGift.ResId]; ok {
hujiebin's avatar
hujiebin committed
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
				results = append(results, user_cv.UserBag{
					BagId:      bagGift.ID,
					ResType:    res_e.ResUserBagGift,
					ResId:      gift.ID,
					GiftId:     gift.ID,
					Name:       gift.Name,
					DiamondNum: gift.DiamondNum,
					IconUrl:    gift.IconUrl,
					SvgaUrl:    gift.SvagUrl,
					Count:      bagGift.Count,
					RemainDays: int(bagGift.EndTime.Sub(time.Now()).Hours() / 24),
				})
			}
		}
	default:
		return myCtx, bizerr.InvalidParameter
	}
	resp.ResponseOk(c, results)
	return myCtx, nil
}