用户列表新增字段

- 滞纳金
- 过期天数
- 未归还卡带信息
This commit is contained in:
范俊成 2023-09-26 10:51:58 +08:00
parent 94e7a0a14a
commit 95a83d62bf
3 changed files with 75 additions and 10 deletions

View File

@ -23,11 +23,13 @@ func UserList(c *gin.Context) {
Uid int `json:"uid"` // 用户id Uid int `json:"uid"` // 用户id
CooperativeBusinessId int `json:"cooperative_business_id"` CooperativeBusinessId int `json:"cooperative_business_id"`
MemberLevel int `json:"memberLevel"` MemberLevel int `json:"memberLevel"`
StoreId int `json:"store_id"` // 门店id StoreId int `json:"store_id"` // 门店id
UserType int `json:"user_type"` // 用户类型 用户类型 1-普通用户 2-店员 UserType int `json:"user_type"` // 用户类型 用户类型 1-普通用户 2-店员
StartTime string `json:"startTime"` // 开始时间 StartTime string `json:"startTime"` // 开始时间
EndTime string `json:"endTime"` // 结束时间 EndTime string `json:"endTime"` // 结束时间
NameKey string `json:"nameKey"` // 昵称搜索 NameKey string `json:"nameKey"` // 昵称搜索
SortField string `json:"sort_field"` //排序字段
SortType string `json:"sort_type"` //排序类型
}{ }{
Page: 1, Page: 1,
PageSize: 10, PageSize: 10,
@ -59,13 +61,35 @@ func UserList(c *gin.Context) {
//req.SysUid = fmt.Sprintf("%.0f", sysUid) //req.SysUid = fmt.Sprintf("%.0f", sysUid)
userList, _, count, err := models.GetUserList(req.Page, req.PageSize, req.Uid, req.MemberLevel, req.StoreId, 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.UserType, req.CooperativeBusinessId, req.Tel, req.StartTime, req.EndTime, req.NameKey, req.SortField, req.SortType)
if err != nil { if err != nil {
logger.Errorf("err:", err) logger.Errorf("err:", err)
app.Error(c, http.StatusInternalServerError, err, "查询失败") app.Error(c, http.StatusInternalServerError, err, "查询失败")
return return
} }
var uids []uint32
for _, u := range userList {
if u.MemberExpireDays > 0 {
uids = append(uids, u.Uid)
}
}
//未归还卡带
cards, err := models.GetUserExpiredCards(uids)
if err != nil {
logger.Errorf("err:", err)
app.Error(c, http.StatusInternalServerError, err, "查询失败")
return
}
for i, u := range userList {
c, ok := cards[u.Uid]
if ok {
userList[i].OrderCards = c
//滞纳金 一个卡带一天2块钱
userList[i].ForfeitPenalty = len(c) * 200 * int(userList[i].MemberExpireDays)
}
}
ret := map[string]interface{}{ ret := map[string]interface{}{
"count": count, "count": count,
"list": userList, "list": userList,

View File

@ -1449,3 +1449,27 @@ func (m *CooperativeOrderReq) List() ([]Order, int64, error) {
return orders, count, nil return orders, count, nil
} }
func GetUserExpiredCards(userId []uint32) (map[uint32][]OrderCard, error) {
var m = make(map[uint32][]OrderCard)
var oc []OrderCard
err := orm.Eloquent.Table("order_card").
Where("uid in (?)", userId).
Where("pay_status = ?", 2).Where("card_status in ?", []int{1, 2, 3}).
Find(&oc).Error
if err != nil {
return m, err
}
for _, card := range oc {
l, ok := m[card.Uid]
if ok {
m[card.Uid] = append(l, card)
} else {
m[card.Uid] = []OrderCard{card}
}
}
return m, nil
}

View File

@ -59,7 +59,9 @@ type UserInfo struct {
RenewalTime time.Time `json:"renewal_time"` RenewalTime time.Time `json:"renewal_time"`
RenewalMemberLevel uint32 `json:"renewal_member_level"` RenewalMemberLevel uint32 `json:"renewal_member_level"`
Store *Store `json:"store" gorm:"-"` Store *Store `json:"store" gorm:"-"`
OrderCards []OrderCard `json:"order_cards" gorm:"-"`
ForfeitPenalty int `json:"forfeit_penalty" gorm:"-"` //滞纳金
} }
func (m *UserInfo) TableName() string { func (m *UserInfo) TableName() string {
@ -201,9 +203,14 @@ type OperationLog struct {
Remark string `json:"remark"` // 备注 Remark string `json:"remark"` // 备注
} }
func GetUserList(page, pageSize, uid, memberLevel, storeId, userType, cooperativeBusinessId int, tel, startTime, endTime, nameKey string) ([]UserInfo, uint32, uint32, error) { type U struct {
UserInfo
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) {
var ( var (
users = make([]UserInfo, 0) users = make([]U, 0)
totalPage uint32 totalPage uint32
) )
fmt.Println("tel:", tel) fmt.Println("tel:", tel)
@ -213,6 +220,12 @@ func GetUserList(page, pageSize, uid, memberLevel, storeId, userType, cooperativ
if page < 0 { if page < 0 {
page = 0 page = 0
} }
if sortFiled == "" {
sortFiled = "id"
}
if sortType == "" {
sortType = "DESC"
}
user := &UserInfo{} user := &UserInfo{}
qs := orm.Eloquent.Table(user.TableName()).Debug() qs := orm.Eloquent.Table(user.TableName()).Debug()
@ -261,7 +274,11 @@ func GetUserList(page, pageSize, uid, memberLevel, storeId, userType, cooperativ
return users, 0, 0, err return users, 0, 0, err
} }
err = qs.Order("id DESC").Offset(page * pageSize).Limit(pageSize).Find(&users).Error currentTime := time.Now()
//计算过期天数
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)
err = qs.Order(fmt.Sprintf("%s %s", sortFiled, sortType)).Offset(page * pageSize).Limit(pageSize).Find(&users).Error
if err != nil && err != RecordNotFound { if err != nil && err != RecordNotFound {
logger.Errorf("err:", err) logger.Errorf("err:", err)
return users, 0, 0, err return users, 0, 0, err