You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
1.8 KiB
90 lines
1.8 KiB
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) |
|
}
|
|
|