过滤无滞纳金已标记用户

This commit is contained in:
范俊成 2023-09-26 17:57:18 +08:00
parent 474999b3fb
commit accff30f46
2 changed files with 23 additions and 3 deletions

View File

@ -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, "查询失败")

View File

@ -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)