瀏覽代碼

wip: p688 回款二维码接口调整

fuwencai 1 周之前
父節點
當前提交
ffd59b8717

+ 9 - 6
internal/consts/consts.go

@@ -8,11 +8,11 @@ import (
 const (
 	ContextKey = "UserMsgKey"
 
-	OrderListTableName       = "dataexport_order" //订单表
-	OrderDetailTableName     = "jy_order_detail"  //订单明细表
-	MoneyCorrectionTableName = "moneyCorrection"  // 红冲记录
-	DBCBS                    = "cbs"              // cbs数据所在数据库名
-	RedTypeContractMoney     = "合同金额红冲"           // 红冲类型: 合同金额红冲
+	OrderListTableName          = "dataexport_order"     //订单表
+	OrderDetailTableName        = "jy_order_detail"      //订单明细表
+	MoneyCorrectionTableName    = "moneyCorrection"      // 红冲记录
+	DBCBS                       = "cbs"                  // cbs数据所在数据库名
+	OrderDepositOnlineTableName = "order_deposit_online" // 订单保证金支付信息
 )
 
 var (
@@ -22,5 +22,8 @@ var (
 )
 
 const (
-	OrderStatusFinished = 1 // 订单状态-已完成
+	OrderStatusFinished        = 1        // 订单状态-已完成
+	ReturnParamsPayTypeDeposit = 1        //  回款二维码参数 支付类型: 1-保证金
+	RedTypeContractMoney       = "合同金额红冲" // 红冲类型: 合同金额红冲
+
 )

+ 79 - 1
internal/controller/returnOnlineHandler.go

@@ -9,6 +9,8 @@ import (
 	"github.com/gogf/gf/v2/util/gconv"
 	uuid2 "github.com/google/uuid"
 	"github.com/pkg/errors"
+	"jyOrderManager/internal/consts"
+	"jyOrderManager/internal/logic/order"
 	"jyOrderManager/internal/model"
 	"regexp"
 	"strings"
@@ -22,7 +24,10 @@ func GetReturnOnlineHandler(r *ghttp.Request) {
 		if err != nil {
 			return nil, errors.Wrap(err, "数据校验异常")
 		}
-
+		if param.PayType == consts.ReturnParamsPayTypeDeposit {
+			return depositHandler(r, param)
+			//  如果是保证金的
+		}
 		var (
 			doType    = param.DoType
 			orderCode = param.OrderCode
@@ -97,6 +102,79 @@ func GetReturnOnlineHandler(r *ghttp.Request) {
 	}
 	r.Response.WriteJson(NewResult(rData, err))
 }
+func depositHandler(r *ghttp.Request, param model.OrderReturnOnlineParams) (interface{}, error) {
+	depositMoney, err := order.GetDepositMoney(r.Context(), param.OrderCode)
+	if err != nil {
+		return nil, gerror.Wrapf(err, "查询保证金异常%s", param.OrderCode)
+	}
+	if depositMoney == 0 {
+		return nil, fmt.Errorf("未查询到保证金信息%s", param.OrderCode)
+	}
+	payMoney, err := order.GetDepositPayMoney(r.Context(), param.OrderCode)
+	if err != nil {
+		return nil, err
+	}
+	if payMoney > 0 {
+		return nil, fmt.Errorf("该笔订单已收到保证金")
+	}
+	var (
+		doType    = param.DoType
+		orderCode = param.OrderCode
+		money     = gconv.Int(param.Money)
+		payWay    = param.PayWay
+	)
+	orderRes, err := g.DB().GetOne(r.Context(), "SELECT buy_subject,user_phone,company_name,product_type,pay_money+(select IFNULL(sum(payMoney),0) as return_money from moneyCorrection where orderCode=?) as pay_money FROM dataexport_order WHERE order_code=?", orderCode, orderCode)
+	if err != nil {
+		return nil, gerror.Wrapf(err, "查询订单数据异常%s", orderCode)
+	}
+	var (
+		orderMap = orderRes.Map()
+	)
+	switch doType {
+	case "query":
+
+		account, product := formatShow(orderMap)
+		return map[string]interface{}{
+			"product": product,
+			"account": account,
+			"money":   depositMoney,
+		}, nil
+	case "getPay":
+		var (
+			now        = time.Now()
+			exDay      = now.AddDate(0, 0, 3)
+			targetTime = time.Date(exDay.Year(), exDay.Month(), exDay.Day(), 23, 59, 59, 0, time.Local)
+			token      = uuid2.New().String()
+			payPath    string
+		)
+		// TODO 替换调配置
+		switch payWay {
+		case 1:
+			payPath = "/weixin/pay/returnMoney"
+		case 2:
+			payPath = "/returnMoney/aliPage"
+		default:
+			return nil, fmt.Errorf("方式异常")
+		}
+
+		if _, err := g.DB().Insert(r.Context(), consts.OrderDepositOnlineTableName, map[string]interface{}{
+			"status":       0,
+			"token":        token,
+			"order_code":   orderCode,
+			"return_money": money,
+			"expire_time":  targetTime.Format("2006-01-02 15:04:05"),
+			"creat_time":   now.Format("2006-01-02 15:04:05"),
+		}); err != nil {
+			return nil, gerror.Wrapf(err, "保存回款数据异常")
+		}
+		return map[string]interface{}{
+			"product": fmt.Sprintf("%s%s?token=%s", g.Cfg("global").MustGet(r.Context(), "webDomain.jy").String(), payPath, token),
+			"expire":  targetTime.Unix(),
+		}, nil
+	}
+	return nil, fmt.Errorf("未知操作")
+
+}
 
 func formatShow(orderMap map[string]interface{}) (string, string) {
 	var account string

+ 15 - 1
internal/logic/order/deposit.go

@@ -245,7 +245,21 @@ func HasDepositOperate(ctx context.Context, orderCode string) (bool, error) {
 
 // GetDepositPayMoney 获取保证金已支付金额
 func GetDepositPayMoney(ctx context.Context, orderCode string) (int64, error) {
-	data, err := g.DB().Query(ctx, "SELECT pay_money FROM order_deposit WHERE order_code=? and state=1 and is_del=0 ", orderCode)
+	data, err := g.DB().Query(ctx, "SELECT pay_money FROM order_deposit_payment WHERE order_code=? and is_del=0 ", orderCode)
+	if err != nil {
+		log.Println("获取保证金已支付金额异常:", err, orderCode)
+		return 0, err
+	}
+	if data.Len() == 0 {
+		return 0, nil
+	}
+	dataMap := data[0].Map()
+	return common.Int64All(dataMap["pay_money"]), nil
+}
+
+// GetDepositMoney 获取保证金金额
+func GetDepositMoney(ctx context.Context, orderCode string) (int64, error) {
+	data, err := g.DB().Query(ctx, "SELECT money FROM order_deposit WHERE order_code=?", orderCode)
 	if err != nil {
 		log.Println("获取保证金已支付金额异常:", err, orderCode)
 		return 0, err

+ 1 - 0
internal/model/orderParams.go

@@ -258,6 +258,7 @@ type (
 		OrderCode string `json:"orderCode,omitempty"`
 		Money     int64  `json:"money,omitempty"`
 		PayWay    int64  `json:"payWay,omitempty"`
+		PayType   int64  `json:"payType,omitempty"` // 0-正常回款(默认值)1-保证金
 	}
 	InvoiceUploadParams struct {
 		Id               string `json:"id,omitempty"`