1、修改获取用户数据接口UserData,新增超期标志和通知字段:mark, overdueNotice;

2、开通会员时默认把mark设置为0;
3、租赁订单只有物流订单才触发消息通知;
4、修改租赁订单列表接口GetOrderCardList,增加超期提示字段OverdueNotice,状态为7表示超期;
5、超期提示从配置表config中读取,支持实时配置;
This commit is contained in:
chenlin 2025-07-17 11:11:39 +08:00
parent ed91928ae3
commit 48e0cd78d4
7 changed files with 86 additions and 14 deletions

View File

@ -591,6 +591,11 @@ func UserData(c *gin.Context) {
m.RoleName = roleInfo.RoleName
}
if m.Mark == 1 {
notice, _ := model.GetDepositNotice()
m.OverdueNotice = notice
}
// 查询最近一条邀请记录
var inviteRecord model.UserInviteRecord
err = model.NewUserInviteRecordQuerySet(model.DB).ToUidEq(uc.Uid).OrderDescByCreatedAt().OrderDescByID().Limit(1).Find(&inviteRecord)

View File

@ -616,7 +616,8 @@ func PushWXPayNotice(c *gin.Context) {
}
//openMemberTime := newTime
userUpdateQs := model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel).
SetMemberGenre(record.MemberGenre).SetMemberExpire(expireTime).SetDeposit(memberConfig.MemberDeposit)
SetMemberGenre(record.MemberGenre).SetMemberExpire(expireTime).SetDeposit(memberConfig.MemberDeposit).
SetMark(0)
if user.OpenMemberTime.IsZero() {
//openMemberTime = user.OpenMemberTime
userUpdateQs = userUpdateQs.SetOpenMemberTime(newTime).SetOpenMemberLevel(record.MemberLevel)
@ -2153,7 +2154,8 @@ func HmPushWXPayNotice(c *gin.Context) {
}
//openMemberTime := newTime
userUpdateQs := model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel).
SetMemberGenre(record.MemberGenre).SetMemberExpire(expireTime).SetDeposit(memberConfig.MemberDeposit)
SetMemberGenre(record.MemberGenre).SetMemberExpire(expireTime).SetDeposit(memberConfig.MemberDeposit).
SetMark(0)
if user.OpenMemberTime.IsZero() {
//openMemberTime = user.OpenMemberTime
userUpdateQs = userUpdateQs.SetOpenMemberTime(newTime).SetOpenMemberLevel(record.MemberLevel)

View File

@ -434,12 +434,14 @@ func RentCardOrderCreate(c *gin.Context) {
go model.ShoppingCartCreateOrder(uc.Uid, req.GameCardList)
// 触发消息
model.TriggerBizEvent(model.BizTypeOnRentCard, model.EventOnDeliver, map[string]interface{}{
"order_id": order.ID,
"uid": order.Uid,
"createdAt": order.CreatedAt,
}, uint32(order.StoreId))
if userCoupon.ID != 0 && userCoupon.ActivityType == 3 {
// 触发消息
model.TriggerBizEvent(model.BizTypeOnRentCard, model.EventOnDeliver, map[string]interface{}{
"order_id": order.ID,
"uid": order.Uid,
"createdAt": order.CreatedAt,
}, uint32(order.StoreId))
}
RespOK(c, ret)
return

View File

@ -15423,6 +15423,7 @@ var UserDBSchema = struct {
Version UserDBSchemaField
InviteTime UserDBSchemaField
DepositType UserDBSchemaField
Mark UserDBSchemaField
}{
ID: UserDBSchemaField("id"),
@ -15463,6 +15464,7 @@ var UserDBSchema = struct {
Version: UserDBSchemaField("version"),
InviteTime: UserDBSchemaField("invite_time"),
DepositType: UserDBSchemaField("deposit_type"),
Mark: UserDBSchemaField("mark"),
}
// Update updates User fields by primary key
@ -15947,6 +15949,13 @@ func (qs UserRentCardQuerySet) MemberLevelEq(memberLevel uint32) UserRentCardQue
return qs.w(qs.db.Where("member_level = ?", memberLevel))
}
// SetMark is an autogenerated method
// nolint: dupl
func (u UserUpdater) SetMark(mark int8) UserUpdater {
u.fields[string(UserDBSchema.Mark)] = mark
return u
}
// MemberLevelGt is an autogenerated method
// nolint: dupl
func (qs UserRentCardQuerySet) MemberLevelGt(memberLevel uint32) UserRentCardQuerySet {

View File

@ -40,6 +40,7 @@ const (
ConfigPostagePackageFee = "postage_package_fee_config" // 运费包费
ConfigPaymentGenre = "payment_genre_config" // 支付方式
ConfigNamePrivilegeMember = "privilege_member_config" // 尊享会员配置
ConfigNameOverdueNotice = "overdue_notice" // 超期提示语
)
func PayConfigInfo() (*PayConfig, error) {
@ -141,6 +142,48 @@ func GetPrivilegeMemberFee() (uint32, error) {
return memberConfig.MemberFee, nil
}
func GetOrderNotice() (string, error) {
var noticeConfig struct {
OrderNotice string `json:"order_notice"` // 超期提示(租赁订单)
DepositNotice string `json:"deposit_notice"` // 超期提示(保证金)
}
var configAllocation Config
err := NewConfigQuerySet(DB).NameEq(ConfigNameOverdueNotice).One(&configAllocation)
if err != nil {
logger.Error("err:", err)
return "", err
}
err = json.Unmarshal([]byte(configAllocation.Value), &noticeConfig)
if err != nil {
logger.Error("err:", err)
return "", err
}
return noticeConfig.OrderNotice, nil
}
func GetDepositNotice() (string, error) {
var noticeConfig struct {
OrderNotice string `json:"order_notice"` // 超期提示(租赁订单)
DepositNotice string `json:"deposit_notice"` // 超期提示(保证金)
}
var configAllocation Config
err := NewConfigQuerySet(DB).NameEq(ConfigNameOverdueNotice).One(&configAllocation)
if err != nil {
logger.Error("err:", err)
return "", err
}
err = json.Unmarshal([]byte(configAllocation.Value), &noticeConfig)
if err != nil {
logger.Error("err:", err)
return "", err
}
return noticeConfig.DepositNotice, nil
}
// ShortMemberConfigMap_Dev 会员费配置
// 开发环境配置
var ShortMemberConfigMap_Dev = map[uint32]*MemberConfig{

View File

@ -13,12 +13,13 @@ import (
)
const (
OrderCardStatusUnPick = 1 // 待取货中
OrderCardStatusPlaying = 2 // 游玩中
OrderCardStatusReturning = 3 // 归还中
OrderCardStatusCompleted = 4 // 已完成
OrderCardStatusCancel = 5 // 已取消
OrderCardStatusRefund = 6 // 已退款
OrderCardStatusUnPick = 1 // 待取货中
OrderCardStatusPlaying = 2 // 游玩中
OrderCardStatusReturning = 3 // 归还中
OrderCardStatusCompleted = 4 // 已完成
OrderCardStatusCancel = 5 // 已取消
OrderCardStatusRefund = 6 // 已退款
OrderCardStatusSystemReturn = 7 // 系统处理(超期卡)
DeliveryTypeStorePick = 1 // 门店取货
DeliveryTypeExpress = 2 // 快递取货
@ -115,6 +116,7 @@ type OrderCard struct {
GameCard *GameCard `json:"game_card" gorm:"-"` // 游戏
Store *Store `json:"store" gorm:"-"` // 游戏
RevertStore *Store `json:"revert_store" gorm:"-"` // 游戏
OverdueNotice string `json:"overdue_notice" gorm:"-"` // 超期提示
//Status uint8 `json:"status" gorm:"index"` // 1-待领取 2-游玩中 3-已归还 4-未领取
//PickupCode string `json:"pickup_code"` // 取货码
}
@ -254,6 +256,13 @@ func (m *OrderListReq) GetOrderCardList() ([]OrderCard, uint32, error) {
totalPage = uint32(count/m.PageSize + 1)
fmt.Println("orderCards:", orderCards)
for i, _ := range orderCards {
if orderCards[i].CardStatus == OrderCardStatusSystemReturn {
notice, _ := GetOrderNotice()
orderCards[i].OverdueNotice = notice
}
}
orderCards = OrderCardListSetGameInfo(orderCards)
return orderCards, totalPage, nil

View File

@ -57,6 +57,8 @@ type User struct {
UserVm *UserVm `json:"user_vm" gorm:"-"` //
InviteTime time.Time `json:"invite_time"` //
DepositType uint32 `json:"deposit_type"` // 押金类型: 3-未充值
Mark int8 `json:"mark"` // 标记
OverdueNotice string `json:"overdue_notice" gorm:"-"` // 超期提示
StoreList []StoreInfo `gorm:"-" json:"store_list"` // 有效门店列表
RoleId uint32 `json:"role_id" gorm:"-"` // 角色id
RoleKey string `json:"role_key" gorm:"-"` // 角色代码