Procházet zdrojové kódy

order refund status change

abiao před 2 roky
rodič
revize
add5ee43c2

+ 1 - 7
go/gopath/src/fohow.com/apps/controllers/order_controller/order_controller.go

@@ -837,13 +837,7 @@ func (self *OrderController) Operate() {
 		}
 	} else if operate == order_model.OPERATE_CANCEL && o.Status == order_model.STATUS_PROCESSING {
 		//发起退款流程
-		refund := new(order_model.OrderRefund).Create(o.WxUserId, o.TotalPrice, o.PaiedPrice, o.OrderId, o.TradeNo)
-		if refund != nil {
-			err := order_model.Refund(o, refund)
-			if err != nil {
-				self.ReturnError(403, apps.OrderRefundError, "", nil)
-			}
-		}
+		self.httpRequest(o.WxUserId, o.TotalPrice, o.PaiedPrice, o.OrderId, o.TradeNo)
 	} else if operate == order_model.OPERATE_CONFIRM && o.Status == order_model.STATUS_DISPATCH {
 		o.Status = order_model.STATUS_COMPLETE
 		o.ReceiveTime = time.Now()

+ 74 - 3
go/gopath/src/fohow.com/apps/controllers/railsadmin_controller/order_refund_controller.go

@@ -3,10 +3,14 @@ package railsadmin_controller
 import (
 	"fmt"
 	"fohow.com/apps"
+	"fohow.com/apps/models/balance_model"
 	"fohow.com/apps/models/order_model"
+	"fohow.com/apps/models/sys_config"
+	"fohow.com/libs/wx_mp"
 	"math/rand"
 	"strings"
 
+	"github.com/astaxie/beego"
 	"strconv"
 	"time"
 )
@@ -29,9 +33,76 @@ func (self *RailsadminController) OrderRefund() {
 	if o.Status == order_model.STATUS_UNPAY || o.Status == order_model.STATUS_REFUNDED {
 		self.ReturnError(404, apps.OrderStatusNotSuit, "", nil)
 	}
-	err := order_model.Refund(o, refund)
-	if err != nil {
-		self.ReturnError(404, apps.OrderRefundError, "", 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("接口已全额退款")
+				}
+			}
+		}
 	}
 
 	self.ServeJSON()

+ 0 - 81
go/gopath/src/fohow.com/apps/models/order_model/order_reund.go

@@ -1,12 +1,7 @@
 package order_model
 
 import (
-	"errors"
 	"fmt"
-	"fohow.com/apps/models/balance_model"
-	"fohow.com/apps/models/sys_config"
-	"fohow.com/libs/wx_mp"
-
 	// "strings"
 	"time"
 
@@ -80,79 +75,3 @@ func (self *OrderRefund) Save() error {
 	}
 	return nil
 }
-
-func Refund(o *Order, refund *OrderRefund) error {
-	o.Status = STATUS_REFUNDED
-	if !o.Save() {
-		beego.BeeLogger.Error("OrderRefund[%d] fail", refund.Id)
-		return errors.New("退款失败")
-	} else {
-		refund.Status = true
-		refund.RefundTime = time.Now().Unix()
-		err := refund.Save()
-		if err != nil {
-			return err
-		}
-		//扣除上级佣金
-		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("接口已全额退款")
-				}
-			}
-		}
-	}
-	return nil
-}