新增获取会员订单列表-最近下单
This commit is contained in:
parent
4b8671a765
commit
068830fff7
@ -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)
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
26
utils/tz.go
26
utils/tz.go
@ -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 "十天前"
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user