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 = ¬ifySuccess 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 = ¬ifySuccess 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) }