Files
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

85 lines
2.7 KiB
Go

package daichongctrl
import (
"encoding/json"
"net/http"
"time"
"91porn-server/common"
"91porn-server/common/constant"
"91porn-server/common/daichong"
"91porn-server/common/log"
"91porn-server/common/stderr"
"91porn-server/models/l/operatorlgmod"
"91porn-server/models/v/rchgordmod"
"91porn-server/web/service/daichongser"
"github.com/gin-gonic/gin"
)
// 代充 doc
// @Summary 手动回调代充订单结果
// @Description 手动回调代充订单结果
// @Tags 代充-订单
// @Accept mpfd,json
// @Produce json,html
// @Param oid formData string true "订单ID"
// @Success 200 {string} json "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /daichong/order/handScore [post]
func HandAddScore(c *gin.Context) {
manager, err := common.GetAdminAct(c)
if err != nil {
common.ServeJSON(c, stderr.AdminIDErr, err.Error())
return
}
var arg struct {
OID string `form:"oid" json:"oid" binding:"required"`
}
if err := c.ShouldBind(&arg); err != nil {
common.ServeJSON(c, stderr.ErrParamError, err)
return
}
order, _ := rchgordmod.FindRechargeOrderByThirdOrderId(arg.OID)
if order.NotifyStatus == rchgordmod.Notify_SUCCESS {
c.JSON(http.StatusOK, gin.H{"code": stderr.Failure, "msg": "不可重复手动通知,已经成功通知的订单"})
return
}
var orderStatus int
switch order.Status {
case rchgordmod.SUCCESS:
orderStatus = daichong.Success
case rchgordmod.FAILURE:
orderStatus = daichong.Failed
}
if orderStatus != daichong.Success && orderStatus != daichong.Failed {
c.JSON(http.StatusOK, gin.H{"code": stderr.Failure, "msg": "订单状态不是成功或失败状态,无法手动通知"})
return
}
resp, code := daichongser.OrderCallBack(c, daichong.OrderCallSign{
OrderId: arg.OID,
Time: order.NotifyTime,
Status: orderStatus,
})
selector := rchgordmod.ReplaceEditSelector{}
if code == http.StatusOK {
notifySuccess := rchgordmod.Notify_SUCCESS
selector.NotifyStatus = &notifySuccess
log.InfoX(c, "daichong order call back send http request successfully",
log.Any("msg", resp.Msg),
log.Any("orderStatus", orderStatus),
log.Any("orderId", arg.OID),
log.Any("time", time.Now().Format(time.RFC3339)))
} else {
notifySuccess := rchgordmod.Notify_SUCCESS
selector.NotifyStatus = &notifySuccess
log.WarnX(c, "daichong order call back send http request failed", log.Any("responseCode", code),
log.Any("msg", resp.Msg))
}
_ = rchgordmod.UpdateBaseOnOidAndStatus(nil, arg.OID, order.Status, selector)
logFiled, _ := json.Marshal(&arg)
_ = operatorlgmod.RecordOperation(manager, constant.TradeManageRechargeOrder, constant.Modify, string(logFiled),
c.Request.URL.RequestURI())
c.JSON(http.StatusOK, resp)
}