Files
go-common/app/interface/main/growup/http/withdraw.go
2019-04-22 18:49:16 +08:00

91 lines
1.8 KiB
Go

package http
import (
"sync"
"go-common/library/ecode"
"go-common/library/log"
bm "go-common/library/net/http/blademaster"
)
var (
mapLock sync.Mutex
// Lock withdraw lock
Lock map[int64]*sync.Mutex
)
func getWithdraw(c *bm.Context) {
v := new(struct {
DateVersion string `form:"dateVersion" validate:"required"`
Page int `form:"pageNo" default:"1" validate:"min=1"`
Size int `form:"size" default:"15" validate:"min=1"`
})
if err := c.Bind(v); err != nil {
return
}
from := (v.Page - 1) * v.Size
count, data, err := svc.GetWithdraw(c, v.DateVersion, from, v.Size)
if err != nil {
log.Error("growup svc.upWithdraw error(%v)", err)
c.JSON(nil, err)
return
}
Lock = make(map[int64]*sync.Mutex)
c.JSON(map[string]interface{}{
"page": v.Page,
"total_count": count,
"data": data,
}, nil)
}
func withdrawSuccess(c *bm.Context) {
v := new(struct {
OrderNo int64 `form:"order_no" validate:"required"`
TradeStatus int `form:"trade_status" validate:"required"`
})
if err := c.Bind(v); err != nil {
return
}
lock := getLock(v.OrderNo)
lock.Lock()
defer lock.Unlock()
err := svc.WithdrawSuccess(c, v.OrderNo, v.TradeStatus)
if err != nil {
log.Error("growup svc.WithdrawSuccess error(%v)", err)
}
c.JSON(nil, err)
}
func getLock(orderNo int64) *sync.Mutex {
mapLock.Lock()
defer mapLock.Unlock()
if Lock == nil {
Lock = make(map[int64]*sync.Mutex)
}
if _, ok := Lock[orderNo]; !ok {
Lock[orderNo] = new(sync.Mutex)
}
return Lock[orderNo]
}
func withdrawDetail(c *bm.Context) {
midI, ok := c.Get("mid")
if !ok {
c.JSON(nil, ecode.NoLogin)
return
}
mid, _ := midI.(int64)
data, err := svc.WithdrawDetail(c, mid)
if err != nil {
log.Error("growup svc.WithdrawDetail error(%v)", err)
c.JSON(nil, err)
return
}
c.JSON(data, nil)
}