|
@@ -1,11 +1,14 @@
|
|
|
package api
|
|
package api
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
|
+ "encoding/json"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/gin-gonic/gin"
|
|
|
"github.com/shopspring/decimal"
|
|
"github.com/shopspring/decimal"
|
|
|
|
|
+ "go_zh/model"
|
|
|
"go_zh/pkg/validator"
|
|
"go_zh/pkg/validator"
|
|
|
"go_zh/request/api"
|
|
"go_zh/request/api"
|
|
|
|
|
+ "go_zh/server"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
type ShopOrderController struct {
|
|
type ShopOrderController struct {
|
|
@@ -14,10 +17,7 @@ type ShopOrderController struct {
|
|
|
|
|
|
|
|
func (shopOrder ShopOrderController) GetOrderSn(c *gin.Context) {
|
|
func (shopOrder ShopOrderController) GetOrderSn(c *gin.Context) {
|
|
|
mId := c.GetInt("mId")
|
|
mId := c.GetInt("mId")
|
|
|
- if mId == 0 {
|
|
|
|
|
- shopOrder.responseError(c, 401, "缺少登陆信息")
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
|
|
+
|
|
|
//数据验证
|
|
//数据验证
|
|
|
var data api.CreateOrderRequest
|
|
var data api.CreateOrderRequest
|
|
|
msg, ok := validator.ValidatorData(c, &data)
|
|
msg, ok := validator.ValidatorData(c, &data)
|
|
@@ -25,6 +25,13 @@ func (shopOrder ShopOrderController) GetOrderSn(c *gin.Context) {
|
|
|
shopOrder.responseError(c, 400, msg)
|
|
shopOrder.responseError(c, 400, msg)
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
+ if data.PayType == 1 {
|
|
|
|
|
+ if mId == 0 {
|
|
|
|
|
+ shopOrder.responseError(c, 401, "缺少登陆信息")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
//对金额进行精度处理
|
|
//对金额进行精度处理
|
|
|
money, err := decimal.NewFromString(data.PayMoney)
|
|
money, err := decimal.NewFromString(data.PayMoney)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -37,6 +44,78 @@ func (shopOrder ShopOrderController) GetOrderSn(c *gin.Context) {
|
|
|
shopOrder.responseError(c, 400, "金额不合法")
|
|
shopOrder.responseError(c, 400, "金额不合法")
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- fmt.Println("money", money)
|
|
|
|
|
- fmt.Println(data)
|
|
|
|
|
|
|
+
|
|
|
|
|
+ redisServer := server.GetRedisServerInstance()
|
|
|
|
|
+ //获取商户银联信息
|
|
|
|
|
+ shopMchidModel := model.XShopMchid{}
|
|
|
|
|
+ var shopMchidInfo = model.XShopMchid{}
|
|
|
|
|
+
|
|
|
|
|
+ shopMchidKey := fmt.Sprintf("%s%s", "shopMachidInfo", data.ShopId)
|
|
|
|
|
+
|
|
|
|
|
+ shopMchidJson := redisServer.GetStr(shopMchidKey)
|
|
|
|
|
+ if len(shopMchidJson) == 0 { //没缓存信息
|
|
|
|
|
+ shopMchidInfo, err = shopMchidModel.GetShopBankMchid(data.ShopId)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ shopOrder.responseError(c, 400, "商户号信息错误"+err.Error())
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ //存入缓存
|
|
|
|
|
+ jsonData, _ := json.Marshal(shopMchidInfo)
|
|
|
|
|
+ redisServer.SetStr(shopMchidKey, string(jsonData), 120)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ _ = json.Unmarshal([]byte(shopMchidJson), &shopMchidInfo)
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ isBank := 0
|
|
|
|
|
+ if shopMchidInfo.ID > 0 { //如果有银联信息就是银联支付
|
|
|
|
|
+ isBank = 1
|
|
|
|
|
+ }
|
|
|
|
|
+ //获取商户配置
|
|
|
|
|
+ shopSetModel := model.XShopSet{}
|
|
|
|
|
+ var shopSetInfo = model.XShopSet{}
|
|
|
|
|
+
|
|
|
|
|
+ shopSetKey := fmt.Sprintf("%s%s", "shopSetInfo", data.ShopId)
|
|
|
|
|
+
|
|
|
|
|
+ shopSetJson := redisServer.GetStr(shopSetKey)
|
|
|
|
|
+ if len(shopSetJson) == 0 { //没缓存信息
|
|
|
|
|
+ shopSetInfo, err = shopSetModel.GetShopSetInfo(data.ShopId)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ shopOrder.responseError(c, 400, "商户配置信息错误")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ //存入缓存
|
|
|
|
|
+ shopSetJsonData, _ := json.Marshal(shopSetInfo)
|
|
|
|
|
+ redisServer.SetStr(shopSetKey, string(shopSetJsonData), 120)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ _ = json.Unmarshal([]byte(shopSetJson), &shopSetInfo)
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ var discount decimal.Decimal
|
|
|
|
|
+ if shopSetInfo.ID <= 0 { //如果没有
|
|
|
|
|
+ discount, _ = decimal.NewFromString("0")
|
|
|
|
|
+ } else {
|
|
|
|
|
+ discount = shopSetInfo.Discount
|
|
|
|
|
+ }
|
|
|
|
|
+ orderSnServer := server.GetOrderSnServerInstance(1)
|
|
|
|
|
+ orderSn := orderSnServer.GenerateString("382FS")
|
|
|
|
|
+ //创建订单信息
|
|
|
|
|
+ shopOrderModel := model.XShopOrder{}
|
|
|
|
|
+ shopOrderModel.ShopID = data.ShopId
|
|
|
|
|
+ shopOrderModel.PayType = data.PayType
|
|
|
|
|
+ shopOrderModel.MID = mId
|
|
|
|
|
+ shopOrderModel.RsSn = orderSn
|
|
|
|
|
+ shopOrderModel.PayMoney = money
|
|
|
|
|
+ shopOrderModel.Status = 1
|
|
|
|
|
+ shopOrderModel.Discount = discount
|
|
|
|
|
+ shopOrderModel.IsClearing = 0
|
|
|
|
|
+ shopOrderModel.IsReport = 0
|
|
|
|
|
+ shopOrderModel.PayCodeSource = data.PayCodeSource
|
|
|
|
|
+ shopOrderModel.IsBank = isBank
|
|
|
|
|
+
|
|
|
|
|
+ err = shopOrderModel.CreateShopOrder()
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ shopOrder.responseError(c, 400, "订单创建失败")
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ shopOrder.responseSuccess(c, shopOrderModel.ID)
|
|
|
}
|
|
}
|