From accff30f46ca0478b12ebdd19798c44a96989111 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E4=BF=8A=E6=88=90?= Date: Tue, 26 Sep 2023 17:57:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=87=E6=BB=A4=E6=97=A0=E6=BB=9E=E7=BA=B3?= =?UTF-8?q?=E9=87=91=E5=B7=B2=E6=A0=87=E8=AE=B0=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/usermanage/user.go | 3 ++- app/admin/models/user.go | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/app/admin/apis/usermanage/user.go b/app/admin/apis/usermanage/user.go index 823b706..38fc051 100644 --- a/app/admin/apis/usermanage/user.go +++ b/app/admin/apis/usermanage/user.go @@ -30,6 +30,7 @@ func UserList(c *gin.Context) { NameKey string `json:"nameKey"` // 昵称搜索 SortField string `json:"sort_field"` //排序字段 SortType string `json:"sort_type"` //排序类型 + Filter bool `json:"filter"` //是否过滤无滞纳金已标记用户 }{ Page: 1, PageSize: 10, @@ -61,7 +62,7 @@ func UserList(c *gin.Context) { //req.SysUid = fmt.Sprintf("%.0f", sysUid) userList, _, count, err := models.GetUserList(req.Page, req.PageSize, req.Uid, req.MemberLevel, req.StoreId, - req.UserType, req.CooperativeBusinessId, req.Tel, req.StartTime, req.EndTime, req.NameKey, req.SortField, req.SortType) + req.UserType, req.CooperativeBusinessId, req.Tel, req.StartTime, req.EndTime, req.NameKey, req.SortField, req.SortType, req.Filter) if err != nil { logger.Errorf("err:", err) app.Error(c, http.StatusInternalServerError, err, "查询失败") diff --git a/app/admin/models/user.go b/app/admin/models/user.go index 785dd24..d91d9a3 100644 --- a/app/admin/models/user.go +++ b/app/admin/models/user.go @@ -61,7 +61,7 @@ type UserInfo struct { Mark int8 `json:"mark"` //标记 Store *Store `json:"store" gorm:"-"` - OrderCards []OrderCard `json:"order_cards" gorm:"-"` + OrderCards []OrderCard `json:"order_cards" gorm:"foreignKey:uid;references:uid"` ForfeitPenalty int `json:"forfeit_penalty" gorm:"-"` //滞纳金 } @@ -214,7 +214,7 @@ type U struct { MemberExpireDays uint32 `json:"member_expire_days"` //会员过期天数 } -func GetUserList(page, pageSize, uid, memberLevel, storeId, userType, cooperativeBusinessId int, tel, startTime, endTime, nameKey, sortFiled, sortType string) ([]U, uint32, uint32, error) { +func GetUserList(page, pageSize, uid, memberLevel, storeId, userType, cooperativeBusinessId int, tel, startTime, endTime, nameKey, sortFiled, sortType string, filter bool) ([]U, uint32, uint32, error) { var ( users = make([]U, 0) totalPage uint32 @@ -284,6 +284,25 @@ func GetUserList(page, pageSize, uid, memberLevel, storeId, userType, cooperativ //计算过期天数 qs = qs.Select("*, CASE WHEN (member_level IN (2, 4, 5) AND member_expire < ?) THEN DATEDIFF(?,member_expire) ELSE 0 END AS member_expire_days", currentTime, currentTime) + + if filter { + + qs = orm.Eloquent.Table("(?) as a", qs) + //qs = qs.Preload("OrderCards", func(db *gorm.DB) *gorm.DB { + // return db.Where("pay_status = ? AND card_status IN (?)", 2, []int{1, 2, 3}). + // Group("uid"). + // Having("count(uid) > 0") + //}) + + qs = qs.Select("a.*"). + Joins("inner join order_card as oc on a.uid=oc.uid"). + Where("pay_status = ? AND card_status IN (?)", 2, []int{1, 2, 3}). + Group("oc.uid"). + Having("count(oc.uid) > 0") + + qs = qs.Where("member_expire_days > 0").Where("mark = ?", UNMARK) + } + err = qs.Order(fmt.Sprintf("%s %s", sortFiled, sortType)).Offset(page * pageSize).Limit(pageSize).Find(&users).Error if err != nil && err != RecordNotFound { logger.Errorf("err:", err)