mirror of
https://github.com/yangjian102621/geekai.git
synced 2025-09-17 16:56:38 +08:00
opt: optimize vip recharge logic
This commit is contained in:
parent
e0dbfb0488
commit
13c8be8d06
@ -297,6 +297,9 @@ func (h *PaymentHandler) notify(orderNo string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
h.lock.Lock()
|
||||
defer h.lock.Unlock()
|
||||
|
||||
// 已支付订单,直接返回
|
||||
if order.Status == types.OrderPaidSuccess {
|
||||
return nil
|
||||
@ -318,30 +321,25 @@ func (h *PaymentHandler) notify(orderNo string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// 1. 点卡:days == 0, calls > 0
|
||||
// 2. vip 套餐:days > 0, calls == 0
|
||||
if remark.Days > 0 {
|
||||
if user.ExpiredTime > time.Now().Unix() {
|
||||
if user.Vip { // 已经是 VIP 用户
|
||||
if remark.Days > 0 { // 只延期 VIP,不增加调用次数
|
||||
user.ExpiredTime = time.Unix(user.ExpiredTime, 0).AddDate(0, 0, remark.Days).Unix()
|
||||
} else {
|
||||
user.ExpiredTime = time.Now().AddDate(0, 0, remark.Days).Unix()
|
||||
} else { // 充值点卡,直接增加次数即可
|
||||
user.Calls += remark.Calls
|
||||
user.ImgCalls += remark.ImgCalls
|
||||
}
|
||||
user.Vip = true
|
||||
|
||||
} else if !user.Vip { // 充值点卡的非 VIP 用户
|
||||
user.ExpiredTime = time.Now().AddDate(0, 0, 30).Unix()
|
||||
}
|
||||
} else { // 非 VIP 用户
|
||||
if remark.Days > 0 { // vip 套餐:days > 0, calls == 0
|
||||
user.ExpiredTime = time.Now().AddDate(0, 0, remark.Days).Unix()
|
||||
user.Calls += h.App.SysConfig.VipMonthCalls
|
||||
user.ImgCalls += h.App.SysConfig.VipMonthImgCalls
|
||||
user.Vip = true
|
||||
|
||||
if remark.Calls > 0 { // 充值点卡
|
||||
user.Calls += remark.Calls
|
||||
} else {
|
||||
user.Calls += h.App.SysConfig.VipMonthCalls
|
||||
}
|
||||
|
||||
if remark.ImgCalls > 0 {
|
||||
user.ImgCalls += remark.ImgCalls
|
||||
} else {
|
||||
user.ImgCalls += h.App.SysConfig.VipMonthImgCalls
|
||||
} else { //点卡:days == 0, calls > 0
|
||||
user.Calls += remark.Calls
|
||||
user.ImgCalls += remark.ImgCalls
|
||||
}
|
||||
}
|
||||
|
||||
// 更新用户信息
|
||||
@ -393,8 +391,6 @@ func (h *PaymentHandler) HuPiPayNotify(c *gin.Context) {
|
||||
orderNo := c.Request.Form.Get("trade_order_id")
|
||||
logger.Infof("收到订单支付回调,订单 NO:%s", orderNo)
|
||||
// TODO 是否要保存订单交易流水号
|
||||
h.lock.Lock()
|
||||
defer h.lock.Unlock()
|
||||
|
||||
err = h.notify(orderNo)
|
||||
if err != nil {
|
||||
@ -422,9 +418,6 @@ func (h *PaymentHandler) AlipayNotify(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
h.lock.Lock()
|
||||
defer h.lock.Unlock()
|
||||
|
||||
err = h.notify(r.OutTradeNo)
|
||||
if err != nil {
|
||||
c.String(http.StatusOK, "fail")
|
||||
@ -450,9 +443,6 @@ func (h *PaymentHandler) PayJsNotify(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
h.lock.Lock()
|
||||
defer h.lock.Unlock()
|
||||
|
||||
err = h.notify(orderNo)
|
||||
if err != nil {
|
||||
c.String(http.StatusOK, "fail")
|
||||
|
Loading…
Reference in New Issue
Block a user