package user import ( "SciencesServer/app/api/enterprise/model" "SciencesServer/app/basic/controller" model2 "SciencesServer/app/common/model" "SciencesServer/app/session" "strings" ) // Consume 消耗日志 type Consume struct { *session.Enterprise local string } type ConsumeHandle func(session *session.Enterprise, local string) *Consume type ( // ConsumeInfo 消耗日志信息 ConsumeInfo struct { ID string `json:"id"` *model2.UserConsume } // ConsumePageInfo 消耗日志分页信息 ConsumePageInfo struct { controller.ReturnPages TotalConsume float64 `json:"total_consume"` } ) // Instance 列表信息 func (c *Consume) Instance(source int, createdAt string, page, pageSize int) (*controller.ReturnPages, error) { mUserConsume := model.NewUserConsume() where := []*model2.ModelWhereOrder{ &model2.ModelWhereOrder{ Where: model2.NewWhere("uid", c.UID), Order: model2.NewOrder("id", model2.OrderModeToDesc), }, } if source > 0 { where = append(where, &model2.ModelWhereOrder{Where: model2.NewWhere("source", source)}) } if createdAt != "" { _wheres := model2.NewWhereSectionAt("created_at", strings.Split(createdAt, " ~ ")) where = append(where, &model2.ModelWhereOrder{ Where: _wheres[0], }, &model2.ModelWhereOrder{ Where: _wheres[1], }) } out := make([]*model2.UserConsume, 0) var count int64 if err := model2.Pages(mUserConsume.UserConsume, &out, page, pageSize, &count, where...); err != nil { return nil, err } list := make([]*ConsumeInfo, 0) for _, v := range out { list = append(list, &ConsumeInfo{ ID: v.GetEncodeID(), UserConsume: v, }) } return &controller.ReturnPages{Data: list, Count: count}, nil } // Exchange 兑换信息 func (c *Consume) Exchange(orderNo string, createdAt string, page, pageSize int) (*ConsumePageInfo, error) { mUserConsume := model.NewUserConsume() where := []*model2.ModelWhere{ model2.NewWhere("uid", c.UID), model2.NewWhereIn("source", []model2.UserConsumeSource{ model2.UserConsumeSourceForExchangeCoin, }), } if orderNo != "" { where = append(where, model2.NewWhereLike("order_no", orderNo)) } if createdAt != "" { where = append(where, model2.NewWhereSectionAt("created_at", strings.Split(createdAt, " ~ "))...) } out := new(ConsumePageInfo) res, err := mUserConsume.Exchange(page, pageSize, &out.Count, &out.TotalConsume) if err != nil { return nil, err } list := make([]*ConsumeInfo, 0) for _, v := range res { list = append(list, &ConsumeInfo{ID: v.GetEncodeID(), UserConsume: v}) } out.Data = list return out, nil } // Delete 删除操作 func (c *Consume) Delete(id uint64) error { mUserConsume := model.NewUserConsume() mUserConsume.ID = id return model2.Delete(mUserConsume.UserConsume) } func NewConsume() ConsumeHandle { return func(session *session.Enterprise, local string) *Consume { return &Consume{ Enterprise: session, local: local, } } }