1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package service
- import (
- "context"
- "strings"
- "time"
- "go-common/app/admin/main/vip/model"
- vipmol "go-common/app/service/main/vip/model"
- "go-common/library/ecode"
- "github.com/google/uuid"
- "github.com/pkg/errors"
- )
- //OrderList order list.
- func (s *Service) OrderList(c context.Context, arg *model.ArgPayOrder) (res []*model.PayOrder, count int64, err error) {
- if count, err = s.dao.OrderCount(c, arg); err != nil {
- err = errors.WithStack(err)
- return
- }
- if res, err = s.dao.OrderList(c, arg); err != nil {
- err = errors.WithStack(err)
- }
- return
- }
- //Refund refund order.
- func (s *Service) Refund(c context.Context, orderNo, username string, refundAmount float64) (err error) {
- var (
- order *model.PayOrder
- )
- if order, err = s.dao.SelOrder(c, orderNo); err != nil {
- err = errors.WithStack(err)
- return
- }
- if order == nil {
- err = ecode.VipOrderNoErr
- return
- }
- if order.Status != model.SUCCESS {
- err = ecode.VipOrderStatusErr
- return
- }
- if order.ToMid > 0 {
- err = ecode.VipOrderToMidErr
- return
- }
- if order.AppID == vipmol.EleAppID {
- return ecode.VipEleOrderCanNotReFundErr
- }
- if order.Money < refundAmount {
- err = ecode.VipOrderMoneyErr
- return
- }
- if order.Money < refundAmount+order.RefundAmount {
- err = ecode.VipOrderMoneyErr
- return
- }
- var timefmt = time.Now().Format("20060102150405")
- if len(order.ThirdTradeNo) <= 0 || order.ThirdTradeNo[0:len(timefmt)] == timefmt {
- err = ecode.VipOldOrderErr
- return
- }
- refundID := strings.Replace(uuid.New().String(), "-", "", -1)[4:20]
- if err = s.dao.PayRefund(c, order, refundAmount, refundID); err != nil {
- err = errors.WithStack(err)
- return
- }
- olog := new(model.PayOrderLog)
- olog.OrderNo = order.OrderNo
- olog.Mid = order.Mid
- olog.RefundID = refundID
- olog.Status = model.REFUNDING
- olog.Operator = username
- olog.RefundAmount = refundAmount
- if err = s.dao.AddPayOrderLog(c, olog); err != nil {
- err = errors.WithStack(err)
- }
- return
- }
|