mh_goadmin_server/app/admin/models/activity.go

123 lines
2.8 KiB
Go
Raw Normal View History

2023-09-16 02:56:39 +00:00
package models
import (
"fmt"
"github.com/codinl/go-logger"
orm "go-admin/common/global"
"time"
)
type UserCouponReq struct {
Page int `json:"pageIndex"`
PageSize int `json:"pageSize"`
State uint32 `json:"state"` // 1-未使用 2-已使用 3-已过期
Uid uint32 `json:"uid"`
RedeemCode string `json:"redeem_code"`
MemberLevel uint32 `json:"member_level"` // 会员等级 1-用户 2-会员
StartTime time.Time `json:"start_time"` // 开始时间
EndTime time.Time `json:"end_time"` // 结束时间
}
func (u *UserCouponReq) List() ([]UserCoupon, int64, error) {
var userCoupons []UserCoupon
if u.PageSize == 0 {
u.PageSize = 10
}
qs := orm.Eloquent.Table("user_coupon")
if u.Uid != 0 {
qs = qs.Where("uid=?", u.Uid)
}
if u.State != 0 {
qs = qs.Where("state=?", u.State)
}
if u.MemberLevel != 0 {
qs = qs.Where("member_level=?", u.MemberLevel)
}
if !u.StartTime.IsZero() {
fmt.Println("起始时间:", u.StartTime.Unix())
qs = qs.Where("created_at > ?", u.StartTime)
}
if !u.EndTime.IsZero() {
fmt.Println("时间:", u.StartTime.Unix())
qs = qs.Where("created_at < ?", u.EndTime)
}
if u.RedeemCode != "" {
qs = qs.Where("redeem_code=?", u.RedeemCode)
}
var count int64
err := qs.Count(&count).Error
if err != nil {
logger.Error("err:", err)
return userCoupons, 0, err
}
page := u.Page
pageSize := u.PageSize
page -= 1
if page < 0 {
page = 0
}
err = qs.Order("id DESC").Offset(page * pageSize).Limit(pageSize).Find(&userCoupons).Error
if err != nil {
logger.Error("err:", err)
return userCoupons, 0, err
}
UserCouponListSetUserAndCoupon(userCoupons)
return userCoupons, count, nil
}
func UserCouponListSetUserAndCoupon(list []UserCoupon) {
uids := make([]uint32, 0, len(list))
couponIds := make([]uint32, 0, len(list))
for i, _ := range list {
uids = append(uids, list[i].Uid)
couponIds = append(couponIds, list[i].CouponId)
}
infoMap, err := GetUserInfoMap(uids)
if err != nil {
logger.Error("get user info map err:", err)
return
}
couponMap, err := GetCouponMap(couponIds)
if err != nil {
logger.Error("get coupon map err:", err)
return
}
for i, _ := range list {
v, ok := infoMap[list[i].Uid]
if ok {
list[i].UserInfo = v
}
coupon, ok2 := couponMap[list[i].CouponId]
if ok2 {
list[i].Coupon = &coupon
}
}
}
func GetCouponMap(ids []uint32) (map[uint32]Coupon, error) {
couponMap := make(map[uint32]Coupon, 0)
if len(ids) == 0 {
logger.Error("ids is nil")
return couponMap, nil
}
var coupons []Coupon
err := orm.Eloquent.Table("coupon").Where("id in (?)", ids).Find(&coupons).Error
if err != nil {
logger.Error("coupons err:", err)
return couponMap, err
}
for i, _ := range coupons {
couponMap[coupons[i].ID] = coupons[i]
}
return couponMap, nil
}