|
@@ -3,19 +3,15 @@ package railsadmin_controller
|
|
|
import (
|
|
import (
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"fohow.com/apps"
|
|
"fohow.com/apps"
|
|
|
- "fohow.com/apps/models/balance_model"
|
|
|
|
|
"fohow.com/apps/models/order_model"
|
|
"fohow.com/apps/models/order_model"
|
|
|
- "fohow.com/apps/models/sys_config"
|
|
|
|
|
- "fohow.com/libs/wx_mp"
|
|
|
|
|
"math/rand"
|
|
"math/rand"
|
|
|
"strings"
|
|
"strings"
|
|
|
|
|
|
|
|
- "github.com/astaxie/beego"
|
|
|
|
|
"strconv"
|
|
"strconv"
|
|
|
"time"
|
|
"time"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-//订单商品汇总
|
|
|
|
|
|
|
+// 订单商品汇总
|
|
|
func (self *RailsadminController) OrderRefund() {
|
|
func (self *RailsadminController) OrderRefund() {
|
|
|
|
|
|
|
|
_id := self.Ctx.Input.Param(":id")
|
|
_id := self.Ctx.Input.Param(":id")
|
|
@@ -33,82 +29,15 @@ func (self *RailsadminController) OrderRefund() {
|
|
|
if o.Status == order_model.STATUS_UNPAY || o.Status == order_model.STATUS_REFUNDED {
|
|
if o.Status == order_model.STATUS_UNPAY || o.Status == order_model.STATUS_REFUNDED {
|
|
|
self.ReturnError(404, apps.OrderStatusNotSuit, "", nil)
|
|
self.ReturnError(404, apps.OrderStatusNotSuit, "", nil)
|
|
|
}
|
|
}
|
|
|
- o.Status = order_model.STATUS_REFUNDED
|
|
|
|
|
- if !o.Save() {
|
|
|
|
|
- beego.BeeLogger.Error("OrderRefund[%d] fail", id)
|
|
|
|
|
- } else {
|
|
|
|
|
- refund.Status = true
|
|
|
|
|
- refund.RefundTime = time.Now().Unix()
|
|
|
|
|
- err := refund.Save()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- self.ReturnError(404, apps.OrderRefundError, "", nil)
|
|
|
|
|
- }
|
|
|
|
|
- //扣除上级佣金
|
|
|
|
|
- source := balance_model.CASH_SOURCE_PRODUCT_BENEFIT
|
|
|
|
|
- cash := balance_model.GetCashBalanceBySourceAndRId(source, refund.OrderId)
|
|
|
|
|
- if cash != nil {
|
|
|
|
|
- //佣金账户增加扣款记录
|
|
|
|
|
- refund_source := balance_model.CASH_SOURCE_PRODUCT_REFUND
|
|
|
|
|
- remark := fmt.Sprintf("%s%s", refund.OrderId, "退款")
|
|
|
|
|
- cb := balance_model.GetCashBalanceByWxUIdAndRIdAndSource(cash.WxUId, refund.OrderId, refund_source)
|
|
|
|
|
- if cb == nil {
|
|
|
|
|
- cb = new(balance_model.CashBalance).Create(cash.WxUId, -cash.Count, refund_source, refund.OrderId, remark)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //返还上级提货券
|
|
|
|
|
- balance_source := balance_model.BALANCE_FREND_BUY
|
|
|
|
|
- balance := balance_model.GetBalanceBySourceAndRId(balance_source, refund.OrderId)
|
|
|
|
|
- if balance != nil {
|
|
|
|
|
- count := int64(0)
|
|
|
|
|
- if balance.Count <= 0 {
|
|
|
|
|
- count = -balance.Count
|
|
|
|
|
- }
|
|
|
|
|
- source := balance_model.BALANCE_SOURCE_ALL_REFUNDED
|
|
|
|
|
- remark := fmt.Sprintf("取消订单退款")
|
|
|
|
|
- new(balance_model.Balance).Create(balance.WxUserId, balance.UserId, count, source, refund.OrderId, remark)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //返还会员提货券账户
|
|
|
|
|
- if o.CouponPrice > int64(0) {
|
|
|
|
|
- source := balance_model.BALANCE_SOURCE_ALL_REFUNDED_NAME
|
|
|
|
|
- remark := fmt.Sprintf("取消订单退提货券")
|
|
|
|
|
- new(balance_model.Balance).Create(o.WxUserId, o.UserId, o.CouponPrice, source, o.OrderId, remark)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //返还会员银豆账户
|
|
|
|
|
- if o.PaiedSilver > int64(0) {
|
|
|
|
|
- source := balance_model.BALANCE_SOURCE_ALL_REFUNDED_NAME
|
|
|
|
|
- remark := fmt.Sprintf("取消订单退银豆")
|
|
|
|
|
- new(balance_model.Silver).Create(o.WxUserId, o.UserId, o.PaiedSilver, source, o.OrderId, remark)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //返还会员佣金账户
|
|
|
|
|
- if o.PaiedCash > int64(0) {
|
|
|
|
|
- source := balance_model.BALANCE_SOURCE_ALL_REFUNDED_NAME
|
|
|
|
|
- remark := fmt.Sprintf("取消订单退佣金")
|
|
|
|
|
- new(balance_model.CashBalance).Create(o.WxUserId, o.PaiedCash, source, o.OrderId, remark)
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- //微信支付金额原路退款
|
|
|
|
|
- if o.PaiedPrice > int64(0) {
|
|
|
|
|
- outTradeNo := fmt.Sprintf("%s-%d", refund.OrderId, refund.Id)
|
|
|
|
|
- outRefundNo := createOrderId("refund")
|
|
|
|
|
- remark := fmt.Sprintf("%s%s", refund.OrderId, "退款")
|
|
|
|
|
- payCode := sys_config.GetPayConfigByDepart(o.Depart, false)
|
|
|
|
|
- payData := wx_mp.GetRefundDataPay(outTradeNo, outRefundNo, refund.RefundFee, o.TradeNo, remark, payCode)
|
|
|
|
|
- if payData != nil {
|
|
|
|
|
- if payData["return_code"] == "SUCCESS" {
|
|
|
|
|
- fmt.Printf("接口已全额退款")
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ err := order_model.Refund(o, refund)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ self.ReturnError(404, apps.OrderRefundError, "", nil)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
self.ServeJSON()
|
|
self.ServeJSON()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-//生成订单ID
|
|
|
|
|
|
|
+// 生成订单ID
|
|
|
func createOrderId(prefix string) string {
|
|
func createOrderId(prefix string) string {
|
|
|
n1 := time.Now().UnixNano()
|
|
n1 := time.Now().UnixNano()
|
|
|
n2 := RandInt64(100, 999)
|
|
n2 := RandInt64(100, 999)
|