91 lines
1.8 KiB
Go
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)
|
|
}
|