新增获取会员订单列表-最近下单

This commit is contained in:
wucongxing8150 2024-08-13 14:07:31 +08:00
parent 4b8671a765
commit 068830fff7
5 changed files with 130 additions and 0 deletions

View File

@ -264,3 +264,52 @@ func (b *OrderMember) GetOrderMemberPayStatus(c *gin.Context) {
responses.OkWithData(g, c)
}
// GetOrderMemberRecentList 获取会员订单列表-最近下单
func (b *OrderMember) GetOrderMemberRecentList(c *gin.Context) {
// 获取数据
orderMemberDao := dao.OrderMemberDao{}
maps := make(map[string]interface{})
maps["order_status"] = 2
maps["is_delete"] = 0
maps["pay_status"] = 2
orderMembers, err := orderMemberDao.GetOrderMemberPreloadOrderLimitList(maps, "created_at desc", 20)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 处理返回值
g := make([]*dto.OrderMemberRecentListDto, len(orderMembers))
userDao := dao.UserDao{}
for i, member := range orderMembers {
response := &dto.OrderMemberRecentListDto{
OrderId: fmt.Sprintf("%d", member.OrderId),
UserId: fmt.Sprintf("%d", member.UserId),
SystemMemberId: fmt.Sprintf("%d", member.SystemMemberId),
CreatedAt: member.CreatedAt,
}
// 获取用户数据
maps = make(map[string]interface{})
maps["user_id"] = member.UserId
user, err := userDao.GetUser(maps)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
response.UserName = user.UserName
response.MemberDays = member.SystemMember.MemberDays
// 处理时间
createdAt := time.Time(member.CreatedAt)
response.TimeDesc = utils.TimeToAgoString(createdAt)
g[i] = response
}
responses.OkWithData(g, c)
}

View File

@ -185,3 +185,21 @@ func (r *OrderMemberDao) GetUserFirstTimeBuyOrderMember(userId int64) (m *model.
}
return m, nil
}
// GetOrderMemberOrderLimitList 获取列表-排序、限制数量
func (r *OrderMemberDao) GetOrderMemberOrderLimitList(maps interface{}, orderField string, limit int) (m []*model.OrderMember, err error) {
err = global.Db.Where(maps).Order(orderField).Limit(limit).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetOrderMemberPreloadOrderLimitList 获取列表-加载全部关联-排序、限制数量
func (r *OrderMemberDao) GetOrderMemberPreloadOrderLimitList(maps interface{}, orderField string, limit int) (m []*model.OrderMember, err error) {
err = global.Db.Preload(clause.Associations).Where(maps).Order(orderField).Limit(limit).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}

View File

@ -52,6 +52,17 @@ type OrderMemberPayStatusDto struct {
ValidDate *model.LocalTime `json:"valid_date"` // 到期时间
}
// OrderMemberRecentListDto 会员订单列表-最近下单
type OrderMemberRecentListDto struct {
OrderId string `json:"order_id"` // 主键id
UserId string `json:"user_id"` // 用户id
SystemMemberId string `json:"system_member_id"` // 会员id
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
UserName string `json:"user_name"` // 用户id
MemberDays uint `json:"member_days"` // 会员天数
TimeDesc string `json:"time_desc"` // 时间描述
}
// GetOrderMemberListDto 列表
func GetOrderMemberListDto(m []*model.OrderMember) []*OrderMemberDto {
// 处理返回值
@ -116,6 +127,28 @@ func GetOrderMemberPayStatus(m *model.OrderMember) *OrderMemberPayStatusDto {
}
}
// GetOrderMemberRecentListDto 获取会员订单列表-最近下单
func GetOrderMemberRecentListDto(m []*model.OrderMember) []*OrderMemberRecentListDto {
// 处理返回值
responses := make([]*OrderMemberRecentListDto, len(m))
if len(m) > 0 {
for i, v := range m {
response := &OrderMemberRecentListDto{
OrderId: fmt.Sprintf("%d", v.OrderId),
UserId: fmt.Sprintf("%d", v.UserId),
SystemMemberId: fmt.Sprintf("%d", v.SystemMemberId),
CreatedAt: v.CreatedAt,
}
// 将转换后的结构体添加到新切片中
responses[i] = response
}
}
return responses
}
// LoadSystemMember 加载会员数据
func (r *OrderMemberDto) LoadSystemMember(m *model.SystemMember) *OrderMemberDto {
if m != nil {

View File

@ -235,6 +235,7 @@ func privateRouter(r *gin.Engine, api controller.Api) {
// 查询订单支付状态-单项
singleGroup.GET("/pay/status/:order_id", api.OrderSingle.GetOrderSinglePayStatus)
}
// 会员订单
@ -251,6 +252,9 @@ func privateRouter(r *gin.Engine, api controller.Api) {
// 查询订单支付状态-会员
memberGroup.GET("/pay/status/:order_id", api.OrderMember.GetOrderMemberPayStatus)
// 获取会员订单列表-最近下单
memberGroup.GET("/recent/list", api.OrderMember.GetOrderMemberRecentList)
}
}

View File

@ -1,6 +1,7 @@
package utils
import (
"fmt"
"hepa-calc-api/api/model"
"time"
)
@ -22,3 +23,28 @@ func StrToLocalTime(s string) (*model.LocalTime, error) {
return &t, nil
}
// TimeToAgoString 根据给定的时间返回一个描述性的字符串
func TimeToAgoString(t time.Time) string {
now := time.Now()
diffTime := now.Sub(t)
switch {
case diffTime < time.Minute:
return "1分钟前"
case diffTime < time.Hour:
minutes := int(diffTime.Minutes())
return fmt.Sprintf("%d分钟前", minutes)
case diffTime < 24*time.Hour:
return "一小时前"
case diffTime < 48*time.Hour:
return "两天前"
case diffTime < 72*time.Hour:
return "三天前"
case diffTime < 10*time.Hour*24:
days := int(diffTime.Hours()) / 24
return fmt.Sprintf("%d天前", days)
default:
return "十天前"
}
}