From 5eda526df4068bfae6d1026315db5cf8ee602f65 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 8 Dec 2022 14:16:23 +0800 Subject: [PATCH 1/5] tlpay --- business/partner/pay/tlpay/tlcallback.go | 1 + business/partner/pay/tlpay/tlconst.go | 70 +++++++++++++++++++++++ business/partner/pay/tlpay/tlfinancial.go | 1 + business/partner/pay/tlpay/tlpay.go | 26 +++++++++ 4 files changed, 98 insertions(+) create mode 100644 business/partner/pay/tlpay/tlcallback.go create mode 100644 business/partner/pay/tlpay/tlconst.go create mode 100644 business/partner/pay/tlpay/tlfinancial.go create mode 100644 business/partner/pay/tlpay/tlpay.go diff --git a/business/partner/pay/tlpay/tlcallback.go b/business/partner/pay/tlpay/tlcallback.go new file mode 100644 index 000000000..f62d2ed84 --- /dev/null +++ b/business/partner/pay/tlpay/tlcallback.go @@ -0,0 +1 @@ +package tlpay diff --git a/business/partner/pay/tlpay/tlconst.go b/business/partner/pay/tlpay/tlconst.go new file mode 100644 index 000000000..45439aaeb --- /dev/null +++ b/business/partner/pay/tlpay/tlconst.go @@ -0,0 +1,70 @@ +package tlpay + +const ( //交易方式 + PayWxScan = "W01" //微信扫码支付 + PayWxJS = "W02" //微信JS支付 + PayWxMini = "W06" //微信小程序支付 + PayAlScan = "A01" //支付宝扫码支付 + PayAlJS = "A02" //支付宝JS支付 + PayAlApp = "A03" //支付宝APP支付 + PayQqScan = "Q01" //手机QQ扫码支付 + PayQqJS = "Q02" //手机QQ JS支付 + PayCsbScan = "U01" //银联扫码支付(CSB) + PayCsbJS = "U02" //银联JS支付 + PayDigitalH5 = "S03" //数字货币H5 +) + +const ( //交易类型 + PayTypeWx = "VSP501" //微信支付 + PayTypeWxCancel = "VSP502" //微信支付撤销 + PayTypeWxRefund = "VSP503" //微信支付退款 + PayTypeQq = "VSP505" //手机QQ支付 + PayTypeQqCancel = "VSP506" //手机QQ支付撤销 + PayTypeQqRefund = "VSP507" //手机QQ支付退款 + PayTypeAl = "VSP511" //支付宝支付 + PayTypeAlCancel = "VSP512" //支付宝支付撤销 + PayTypeAlRefund = "VSP513" //支付宝支付退款 + PayTypeCsb = "VSP551" //银联扫码支付 + PayTypeCsbCancel = "VSP552" //银联扫码撤销 + PayTypeCsbRefund = "VSP553" //银联扫码退货 + PayTypeDigitalH5 = "VSP611" //数字货币支付 + PayTypeDigitalH5Cancel = "VSP612" //数字货币撤销 + PayTypeDigitalH5Refund = "VSP613" //数字货币退货 +) + +const ( //交易返回码trxStatus说明 + trxStatusSuccess = 0000 //交易成功 + trxStatusAbsent = 1001 //交易不存在 + trxStatusProcessing1 = 2008 + trxStatusProcessing2 = 2000 //交易处理中,请查询交易 + //以下都代表交易失败(3开头) + trxStatusDuplicateReqSN = 3888 //流水号重复 + trxStatusControlFail = 3889 //交易控制失败,具体原因看errMsg + trxStatusMerchantFail = 3099 //渠道商户错误 + trxStatusAmountLessThanCharge = 3014 //交易金额小于应收手续费 + trxStatusRealCheckingFail = 3031 //校验实名信息失败 + trxStatusNotPay = 3088 //交易未支付 + trxStatusCancelAbnormal = 3089 //撤销异常 + trxStatusOtherError1 = 3045 + trxStatusOtherError2 = 3999 //其他错误,具体原因看errMsg + trxStatusAlreadyCanceled = 3050 //交易已被撤销 +) + +var ( + trxStatus = map[int]string{ + trxStatusSuccess: "交易成功", + trxStatusAbsent: "交易不存在", + trxStatusProcessing1: "交易处理中1", + trxStatusProcessing2: "交易处理中2", + trxStatusDuplicateReqSN: "流水号重复", + trxStatusControlFail: "交易控制失败", + trxStatusMerchantFail: "渠道商户错误", + trxStatusAmountLessThanCharge: "交易金额小于应收手续费", + trxStatusRealCheckingFail: "校验实名信息失败", + trxStatusNotPay: "交易未支付", + trxStatusCancelAbnormal: "撤销异常", + trxStatusOtherError1: "其他错误1", + trxStatusOtherError2: "其他错误2", + trxStatusAlreadyCanceled: "交易已被撤销", + } +) diff --git a/business/partner/pay/tlpay/tlfinancial.go b/business/partner/pay/tlpay/tlfinancial.go new file mode 100644 index 000000000..f62d2ed84 --- /dev/null +++ b/business/partner/pay/tlpay/tlfinancial.go @@ -0,0 +1 @@ +package tlpay diff --git a/business/partner/pay/tlpay/tlpay.go b/business/partner/pay/tlpay/tlpay.go new file mode 100644 index 000000000..8cb052e44 --- /dev/null +++ b/business/partner/pay/tlpay/tlpay.go @@ -0,0 +1,26 @@ +package tlpay + +import ( + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/model" +) + +type tlPayParam struct { + CusID string `json:"cusID"` //商户号 + AppID string `json:"appID "` //应用ID + TrxAmt int `json:"trxAmt"` //交易金额 + ReqSN string `json:"reqSN"` //商户交易单号 + PayType string `json:"payType"` //交易方式 + RandomStr string `json:"randomStr"` //随机字符串 + SignType string `json:"signType"` //签名方式 + Sign string `json:"sign"` //签名 +} +type PayHandler struct { + Ctx *jxcontext.Context + PayType string `json:"payType"` + Order *model.OrderPay + TLPayParam *tlPayParam `json:"tlPayParam"` +} +type PayHandlerInterface struct { + //CreatePay() (err error) +} From 6a29bc5c2100d3bc72fb70549b32dbe1956d7135 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 8 Dec 2022 14:48:22 +0800 Subject: [PATCH 2/5] tlpay --- business/partner/pay/tlpay/tlfinancial.go | 127 ++++++++++++++++++ .../purchase/jx/localjx/tonglianpay.go | 2 +- 2 files changed, 128 insertions(+), 1 deletion(-) diff --git a/business/partner/pay/tlpay/tlfinancial.go b/business/partner/pay/tlpay/tlfinancial.go index f62d2ed84..c318a7dfd 100644 --- a/business/partner/pay/tlpay/tlfinancial.go +++ b/business/partner/pay/tlpay/tlfinancial.go @@ -1 +1,128 @@ package tlpay + +const ( + sigKey = "sign" + sigTypeMd5 = "MD5" + sigTypeSha256 = "HMAC-SHA256" +) + +//var ( +// payMap = map[string]*wxpayapi.API{ +// "weixinapp": api.WxpayAPI, +// "weixinmini": api.WxpayAPI2, +// } +//) + +//func (p *PayHandler) CreatePay(txDB orm.TxOrmer, subAppID string) (err error) { +// switch p.PayType { +// case PayTypeWx: +// param := &tonglianpayapi.CreateFakeOrderRes{ +// Trxamt: p.Order.PayPrice, +// NotifyUrl: globals.TLPayNotifyURL, +// Reqsn: p.Order.OrderID, +// PayType: p.VendorPayType, +// } +// //暂时做兼容处理 +// if p.VendorPayType == "JSAPI" { +// param.PayType = tonglianpayapi.PayTypeWxXcx +// } +// if p.VendorPayType == tonglianpayapi.PayTypeWxXcx { +// param.SubAppID = subAppID +// authInfo, err := p.Ctx.GetV2AuthInfo() +// // 微信小程序支付 +// if err == nil && authInfo.GetAuthType() == weixin.AuthTypeMini && authInfo.GetAuthTypeID() == subAppID { +// param.Acct = authInfo.GetAuthID() +// } +// } +// if p.VendorPayType == tonglianpayapi.PayTypeZfbJS || p.VendorPayType == tonglianpayapi.PayTypeZfbApp { +// if authInfo, err := p.Ctx.GetV2AuthInfo(); err == nil { +// param.Acct = authInfo.GetAuthID() +// } +// if param.Acct == "" { +// return fmt.Errorf("未找到用户的认证ID!") +// } +// } +// if p.VendorPayType == tonglianpayapi.PayTypeH5 { +// param2 := &tonglianpayapi.CreateH5UnitorderOrderParam{ +// Trxamt: p.Order.PayPrice, +// NotifyUrl: globals.TLPayNotifyURL, +// Body: "冲天猴", +// Charset: "UTF-8", +// } +// err = api.TLpayAPI.CreateH5UnitorderOrder(param2) +// } else { +// result, err := api.TLpayAPI.CreateUnitorderOrder(param) +// if err != nil { +// return err +// } +// +// var result2 tonglianpayapi.PayInfo +// json.Unmarshal([]byte(result.PayInfo), &result2) +// p.Order.PrepayID = result2.Package[strings.LastIndex(result2.Package, "=")+1 : len(result2.Package)] +// p.Order.TransactionID = result.TrxID +// +// if _, err = dao.UpdateEntityTx(txDB, p.Order, "PrepayID", "TransactionID"); err != nil { +// return err +// } +// wxPay := &WxPayParam{ +// Prepayid: p.Order.PrepayID, +// Noncestr: result2.NonceStr, +// Timestamp: utils.Int64ToStr(utils.MustInterface2Int64(result2.TimeStamp)), +// Package: result2.Package, +// Partnerid: "", // 商户Id +// Appid: result2.AppID, +// Sign: result2.PaySign, +// } +// p.WxPayParam = wxPay +// } +// // 暂时不支持微信直接支付 +// case model.PayTypeWX: +// param := &wxpayapi.CreateOrderParam{ +// OutTradeNo: p.Order.OrderID, +// Body: "冲天猴儿App账户充值", +// NotifyURL: globals.WxpayNotifyURL, +// SpbillCreateIP: p.Ctx.GetRealRemoteIP(), +// TradeType: p.VendorPayType, +// TotalFee: p.Order.PayPrice, +// TimeStart: wxpayapi.Time2PayTime(time.Now()), +// // ProfitSharing: wxpayapi.OptYes, +// } +// authBinds, err := dao.GetUserBindAuthInfo(dao.GetDB(), p.Ctx.GetUserID(), model.AuthBindTypeAuth, []string{p.Order.Way}, "", "", "") +// if err != nil { +// return err +// } +// if len(authBinds) == 0 { +// return fmt.Errorf("未绑定微信认证方式!") +// } +// param.OpenID = authBinds[0].AuthID +// result, err2 := payMap[p.Order.Way].CreateUnifiedOrder(param) +// if err2 == nil { +// param2 := make(map[string]interface{}) +// param2["prepayid"] = result.PrepayID +// param2["noncestr"] = utils.GetUUID() +// param2["timestamp"] = time.Now().Unix() +// param2["package"] = "Sign=WXPay" +// param2["partnerid"] = result.MchID +// param2["appid"] = result.AppID +// sign := signParam(sigTypeMd5, param2) +// wxPay := &WxPayParam{ +// Prepayid: param2["prepayid"].(string), +// Noncestr: param2["noncestr"].(string), +// Timestamp: utils.Int64ToStr(utils.MustInterface2Int64(param2["timestamp"])), +// Package: param2["package"].(string), +// Partnerid: param2["partnerid"].(string), +// Appid: param2["appid"].(string), +// Sign: sign, +// } +// p.WxPayParam = wxPay +// p.Order.PrepayID = result.PrepayID +// p.Order.Comment = result.CodeURL +// _, err = dao.UpdateEntityTx(txDB, p.Order, "PrepayID", "Comment") +// } else { +// return err2 +// } +// default: +// err = fmt.Errorf("支付方式:%d当前不支持", p.PayType) +// } +// return err +//} diff --git a/business/partner/purchase/jx/localjx/tonglianpay.go b/business/partner/purchase/jx/localjx/tonglianpay.go index c0953c940..5cd317a9f 100644 --- a/business/partner/purchase/jx/localjx/tonglianpay.go +++ b/business/partner/purchase/jx/localjx/tonglianpay.go @@ -27,7 +27,7 @@ func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, payType int, // } // } payCreatedAt := time.Now() - param := &tonglianpayapi.CreateUnitorderOrderParam{ + param := &tonglianpayapi.CreateUnitOrderOrderResult{ Trxamt: int(order.ActualPayPrice), NotifyUrl: globals.TLPayNotifyURL, Reqsn: order.VendorOrderID, From dcf9a269719477d7f04f6b58d6162972256400b2 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Fri, 9 Dec 2022 11:20:38 +0800 Subject: [PATCH 3/5] 1 --- business/partner/pay/tlpay/tlcallback.go | 1 - business/partner/pay/tlpay/tlconst.go | 70 ------------ business/partner/pay/tlpay/tlfinancial.go | 128 ---------------------- business/partner/pay/tlpay/tlpay.go | 26 ----- 4 files changed, 225 deletions(-) delete mode 100644 business/partner/pay/tlpay/tlcallback.go delete mode 100644 business/partner/pay/tlpay/tlconst.go delete mode 100644 business/partner/pay/tlpay/tlfinancial.go delete mode 100644 business/partner/pay/tlpay/tlpay.go diff --git a/business/partner/pay/tlpay/tlcallback.go b/business/partner/pay/tlpay/tlcallback.go deleted file mode 100644 index f62d2ed84..000000000 --- a/business/partner/pay/tlpay/tlcallback.go +++ /dev/null @@ -1 +0,0 @@ -package tlpay diff --git a/business/partner/pay/tlpay/tlconst.go b/business/partner/pay/tlpay/tlconst.go deleted file mode 100644 index 45439aaeb..000000000 --- a/business/partner/pay/tlpay/tlconst.go +++ /dev/null @@ -1,70 +0,0 @@ -package tlpay - -const ( //交易方式 - PayWxScan = "W01" //微信扫码支付 - PayWxJS = "W02" //微信JS支付 - PayWxMini = "W06" //微信小程序支付 - PayAlScan = "A01" //支付宝扫码支付 - PayAlJS = "A02" //支付宝JS支付 - PayAlApp = "A03" //支付宝APP支付 - PayQqScan = "Q01" //手机QQ扫码支付 - PayQqJS = "Q02" //手机QQ JS支付 - PayCsbScan = "U01" //银联扫码支付(CSB) - PayCsbJS = "U02" //银联JS支付 - PayDigitalH5 = "S03" //数字货币H5 -) - -const ( //交易类型 - PayTypeWx = "VSP501" //微信支付 - PayTypeWxCancel = "VSP502" //微信支付撤销 - PayTypeWxRefund = "VSP503" //微信支付退款 - PayTypeQq = "VSP505" //手机QQ支付 - PayTypeQqCancel = "VSP506" //手机QQ支付撤销 - PayTypeQqRefund = "VSP507" //手机QQ支付退款 - PayTypeAl = "VSP511" //支付宝支付 - PayTypeAlCancel = "VSP512" //支付宝支付撤销 - PayTypeAlRefund = "VSP513" //支付宝支付退款 - PayTypeCsb = "VSP551" //银联扫码支付 - PayTypeCsbCancel = "VSP552" //银联扫码撤销 - PayTypeCsbRefund = "VSP553" //银联扫码退货 - PayTypeDigitalH5 = "VSP611" //数字货币支付 - PayTypeDigitalH5Cancel = "VSP612" //数字货币撤销 - PayTypeDigitalH5Refund = "VSP613" //数字货币退货 -) - -const ( //交易返回码trxStatus说明 - trxStatusSuccess = 0000 //交易成功 - trxStatusAbsent = 1001 //交易不存在 - trxStatusProcessing1 = 2008 - trxStatusProcessing2 = 2000 //交易处理中,请查询交易 - //以下都代表交易失败(3开头) - trxStatusDuplicateReqSN = 3888 //流水号重复 - trxStatusControlFail = 3889 //交易控制失败,具体原因看errMsg - trxStatusMerchantFail = 3099 //渠道商户错误 - trxStatusAmountLessThanCharge = 3014 //交易金额小于应收手续费 - trxStatusRealCheckingFail = 3031 //校验实名信息失败 - trxStatusNotPay = 3088 //交易未支付 - trxStatusCancelAbnormal = 3089 //撤销异常 - trxStatusOtherError1 = 3045 - trxStatusOtherError2 = 3999 //其他错误,具体原因看errMsg - trxStatusAlreadyCanceled = 3050 //交易已被撤销 -) - -var ( - trxStatus = map[int]string{ - trxStatusSuccess: "交易成功", - trxStatusAbsent: "交易不存在", - trxStatusProcessing1: "交易处理中1", - trxStatusProcessing2: "交易处理中2", - trxStatusDuplicateReqSN: "流水号重复", - trxStatusControlFail: "交易控制失败", - trxStatusMerchantFail: "渠道商户错误", - trxStatusAmountLessThanCharge: "交易金额小于应收手续费", - trxStatusRealCheckingFail: "校验实名信息失败", - trxStatusNotPay: "交易未支付", - trxStatusCancelAbnormal: "撤销异常", - trxStatusOtherError1: "其他错误1", - trxStatusOtherError2: "其他错误2", - trxStatusAlreadyCanceled: "交易已被撤销", - } -) diff --git a/business/partner/pay/tlpay/tlfinancial.go b/business/partner/pay/tlpay/tlfinancial.go deleted file mode 100644 index c318a7dfd..000000000 --- a/business/partner/pay/tlpay/tlfinancial.go +++ /dev/null @@ -1,128 +0,0 @@ -package tlpay - -const ( - sigKey = "sign" - sigTypeMd5 = "MD5" - sigTypeSha256 = "HMAC-SHA256" -) - -//var ( -// payMap = map[string]*wxpayapi.API{ -// "weixinapp": api.WxpayAPI, -// "weixinmini": api.WxpayAPI2, -// } -//) - -//func (p *PayHandler) CreatePay(txDB orm.TxOrmer, subAppID string) (err error) { -// switch p.PayType { -// case PayTypeWx: -// param := &tonglianpayapi.CreateFakeOrderRes{ -// Trxamt: p.Order.PayPrice, -// NotifyUrl: globals.TLPayNotifyURL, -// Reqsn: p.Order.OrderID, -// PayType: p.VendorPayType, -// } -// //暂时做兼容处理 -// if p.VendorPayType == "JSAPI" { -// param.PayType = tonglianpayapi.PayTypeWxXcx -// } -// if p.VendorPayType == tonglianpayapi.PayTypeWxXcx { -// param.SubAppID = subAppID -// authInfo, err := p.Ctx.GetV2AuthInfo() -// // 微信小程序支付 -// if err == nil && authInfo.GetAuthType() == weixin.AuthTypeMini && authInfo.GetAuthTypeID() == subAppID { -// param.Acct = authInfo.GetAuthID() -// } -// } -// if p.VendorPayType == tonglianpayapi.PayTypeZfbJS || p.VendorPayType == tonglianpayapi.PayTypeZfbApp { -// if authInfo, err := p.Ctx.GetV2AuthInfo(); err == nil { -// param.Acct = authInfo.GetAuthID() -// } -// if param.Acct == "" { -// return fmt.Errorf("未找到用户的认证ID!") -// } -// } -// if p.VendorPayType == tonglianpayapi.PayTypeH5 { -// param2 := &tonglianpayapi.CreateH5UnitorderOrderParam{ -// Trxamt: p.Order.PayPrice, -// NotifyUrl: globals.TLPayNotifyURL, -// Body: "冲天猴", -// Charset: "UTF-8", -// } -// err = api.TLpayAPI.CreateH5UnitorderOrder(param2) -// } else { -// result, err := api.TLpayAPI.CreateUnitorderOrder(param) -// if err != nil { -// return err -// } -// -// var result2 tonglianpayapi.PayInfo -// json.Unmarshal([]byte(result.PayInfo), &result2) -// p.Order.PrepayID = result2.Package[strings.LastIndex(result2.Package, "=")+1 : len(result2.Package)] -// p.Order.TransactionID = result.TrxID -// -// if _, err = dao.UpdateEntityTx(txDB, p.Order, "PrepayID", "TransactionID"); err != nil { -// return err -// } -// wxPay := &WxPayParam{ -// Prepayid: p.Order.PrepayID, -// Noncestr: result2.NonceStr, -// Timestamp: utils.Int64ToStr(utils.MustInterface2Int64(result2.TimeStamp)), -// Package: result2.Package, -// Partnerid: "", // 商户Id -// Appid: result2.AppID, -// Sign: result2.PaySign, -// } -// p.WxPayParam = wxPay -// } -// // 暂时不支持微信直接支付 -// case model.PayTypeWX: -// param := &wxpayapi.CreateOrderParam{ -// OutTradeNo: p.Order.OrderID, -// Body: "冲天猴儿App账户充值", -// NotifyURL: globals.WxpayNotifyURL, -// SpbillCreateIP: p.Ctx.GetRealRemoteIP(), -// TradeType: p.VendorPayType, -// TotalFee: p.Order.PayPrice, -// TimeStart: wxpayapi.Time2PayTime(time.Now()), -// // ProfitSharing: wxpayapi.OptYes, -// } -// authBinds, err := dao.GetUserBindAuthInfo(dao.GetDB(), p.Ctx.GetUserID(), model.AuthBindTypeAuth, []string{p.Order.Way}, "", "", "") -// if err != nil { -// return err -// } -// if len(authBinds) == 0 { -// return fmt.Errorf("未绑定微信认证方式!") -// } -// param.OpenID = authBinds[0].AuthID -// result, err2 := payMap[p.Order.Way].CreateUnifiedOrder(param) -// if err2 == nil { -// param2 := make(map[string]interface{}) -// param2["prepayid"] = result.PrepayID -// param2["noncestr"] = utils.GetUUID() -// param2["timestamp"] = time.Now().Unix() -// param2["package"] = "Sign=WXPay" -// param2["partnerid"] = result.MchID -// param2["appid"] = result.AppID -// sign := signParam(sigTypeMd5, param2) -// wxPay := &WxPayParam{ -// Prepayid: param2["prepayid"].(string), -// Noncestr: param2["noncestr"].(string), -// Timestamp: utils.Int64ToStr(utils.MustInterface2Int64(param2["timestamp"])), -// Package: param2["package"].(string), -// Partnerid: param2["partnerid"].(string), -// Appid: param2["appid"].(string), -// Sign: sign, -// } -// p.WxPayParam = wxPay -// p.Order.PrepayID = result.PrepayID -// p.Order.Comment = result.CodeURL -// _, err = dao.UpdateEntityTx(txDB, p.Order, "PrepayID", "Comment") -// } else { -// return err2 -// } -// default: -// err = fmt.Errorf("支付方式:%d当前不支持", p.PayType) -// } -// return err -//} diff --git a/business/partner/pay/tlpay/tlpay.go b/business/partner/pay/tlpay/tlpay.go deleted file mode 100644 index 8cb052e44..000000000 --- a/business/partner/pay/tlpay/tlpay.go +++ /dev/null @@ -1,26 +0,0 @@ -package tlpay - -import ( - "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" - "git.rosy.net.cn/jx-callback/business/model" -) - -type tlPayParam struct { - CusID string `json:"cusID"` //商户号 - AppID string `json:"appID "` //应用ID - TrxAmt int `json:"trxAmt"` //交易金额 - ReqSN string `json:"reqSN"` //商户交易单号 - PayType string `json:"payType"` //交易方式 - RandomStr string `json:"randomStr"` //随机字符串 - SignType string `json:"signType"` //签名方式 - Sign string `json:"sign"` //签名 -} -type PayHandler struct { - Ctx *jxcontext.Context - PayType string `json:"payType"` - Order *model.OrderPay - TLPayParam *tlPayParam `json:"tlPayParam"` -} -type PayHandlerInterface struct { - //CreatePay() (err error) -} From 2ed41dae8c2bbc40f3fe0d522d5b71a622fa8e53 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Mon, 12 Dec 2022 10:29:33 +0800 Subject: [PATCH 4/5] setfence --- .../purchase/tiktok_store/transport.go | 1 + .../tiktok_store/transport_callback.go | 9 ++++ .../purchase/tiktok_store/warehouse.go | 42 +++++++++++-------- 3 files changed, 35 insertions(+), 17 deletions(-) create mode 100644 business/partner/purchase/tiktok_store/transport.go create mode 100644 business/partner/purchase/tiktok_store/transport_callback.go diff --git a/business/partner/purchase/tiktok_store/transport.go b/business/partner/purchase/tiktok_store/transport.go new file mode 100644 index 000000000..ef32b7246 --- /dev/null +++ b/business/partner/purchase/tiktok_store/transport.go @@ -0,0 +1 @@ +package tiktok_store diff --git a/business/partner/purchase/tiktok_store/transport_callback.go b/business/partner/purchase/tiktok_store/transport_callback.go new file mode 100644 index 000000000..c54a3e7c8 --- /dev/null +++ b/business/partner/purchase/tiktok_store/transport_callback.go @@ -0,0 +1,9 @@ +package tiktok_store + +type TransportCallbackResp struct { + Tag string `json:"tag"` + MsgID string `json:"msgID"` +} + +type ShipmentInfo struct { +} diff --git a/business/partner/purchase/tiktok_store/warehouse.go b/business/partner/purchase/tiktok_store/warehouse.go index 8341e4474..67abf66c9 100644 --- a/business/partner/purchase/tiktok_store/warehouse.go +++ b/business/partner/purchase/tiktok_store/warehouse.go @@ -122,7 +122,7 @@ func CreateFenceByStore(appOrgCode string, storeID int64) (fenceID string, err e } else { return "", fmt.Errorf("storeID必填") } - if err = dao.GetRow(db, &localStore, sqlStr, sqlParam...); err == nil { + if err = dao.GetRow(db, &localStore, sqlStr, sqlParam); err == nil { if localStore.DeliveryRangeType == LocalShapeCircular { param = &warehouse_createFence_request.WarehouseCreateFenceParam{ FenceInfo: &warehouse_createFence_request.FenceInfo{ @@ -177,6 +177,7 @@ func UpdateFenceByStore(appOrgCode, outFenceID string, storeID int) error { db *dao.DaoDB localStore *LocalStore vertex []warehouse_setFence_request.VerticesItem + param = &warehouse_setFence_request.WarehouseSetFenceParam{} ) sqlParam := []interface{}{} sqlStr := `SELECT t.lng,t.lat,t.delivery_range_type,t.delivery_range FROM store t` @@ -186,23 +187,22 @@ func UpdateFenceByStore(appOrgCode, outFenceID string, storeID int) error { } else { return fmt.Errorf("storeID必填") } - if err := dao.GetRow(db, &localStore, sqlStr, sqlParam...); err == nil { - param := &warehouse_setFence_request.WarehouseSetFenceParam{ - FenceInfo: &warehouse_setFence_request.FenceInfo{ - OutFenceId: outFenceID, - Shape: int32(localStore.DeliveryRangeType), - }, - } - if localStore.DeliveryRangeType == tiktok_api.ShapeCircular { - circular := &warehouse_setFence_request.Circular{ - Center: &warehouse_setFence_request.Center{ - Longitude: float64(localStore.Lng) / float64(1000000), - Latitude: float64(localStore.Lat) / float64(1000000), + if err := dao.GetRow(db, &localStore, sqlStr, sqlParam); err == nil { + if localStore.DeliveryRangeType == LocalShapeCircular { + param = &warehouse_setFence_request.WarehouseSetFenceParam{ + FenceInfo: &warehouse_setFence_request.FenceInfo{ + OutFenceId: outFenceID, + Shape: tiktok_api.ShapeCircular, + Circular: &warehouse_setFence_request.Circular{ + Center: &warehouse_setFence_request.Center{ + Longitude: float64(localStore.Lng) / float64(1000000), + Latitude: float64(localStore.Lat) / float64(1000000), + }, + Radius: utils.Str2Float64(localStore.DeliveryRange), + }, }, - Radius: utils.Str2Float64(localStore.DeliveryRange), } - param.FenceInfo.Circular = circular - } else if localStore.DeliveryRangeType == tiktok_api.ShapePolygon { + } else if localStore.DeliveryRangeType == LocalShapePolygon { tempStr := strings.Split(localStore.DeliveryRange, ";") for v := len(tempStr) - 1; v >= 0; v-- { s2 := strings.Split(tempStr[v], ",") @@ -212,7 +212,15 @@ func UpdateFenceByStore(appOrgCode, outFenceID string, storeID int) error { } vertex = append(vertex, vertices) } - param.FenceInfo.Polygon.Vertices = vertex + param = &warehouse_setFence_request.WarehouseSetFenceParam{ + FenceInfo: &warehouse_setFence_request.FenceInfo{ + OutFenceId: outFenceID, + Shape: tiktok_api.ShapePolygon, + Polygon: &warehouse_setFence_request.Polygon{ + Vertices: vertex, + }, + }, + } } if err := getAPI(appOrgCode, 0, "").SetFence(param); err != nil { return err From 7360ad60910269c9795b5870b99350ae698f3527 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Mon, 12 Dec 2022 14:21:51 +0800 Subject: [PATCH 5/5] setfence --- .../partner/delivery/tiktok_store/store.go | 56 ------------------ .../partner/delivery/tiktok_store/waybill.go | 3 +- .../partner/purchase/tiktok_store/store.go | 58 ++++++++++--------- 3 files changed, 32 insertions(+), 85 deletions(-) delete mode 100644 business/partner/delivery/tiktok_store/store.go diff --git a/business/partner/delivery/tiktok_store/store.go b/business/partner/delivery/tiktok_store/store.go deleted file mode 100644 index ffb3f8e98..000000000 --- a/business/partner/delivery/tiktok_store/store.go +++ /dev/null @@ -1,56 +0,0 @@ -package tiktok_store - -import ( - warehouse_setFence_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_setFence/request" - "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" - "git.rosy.net.cn/baseapi/utils" - "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" - "git.rosy.net.cn/jx-callback/business/model" - "git.rosy.net.cn/jx-callback/business/model/dao" - "git.rosy.net.cn/jx-callback/globals" - "strings" - //"git.rosy.net.cn/jx-callback/globals/api" -) - -//更新抖店电子围栏 -func (c *DeliveryHandler) UpdateStore(ctx *jxcontext.Context, storeDetail *dao.StoreDetail2) (err error) { - var ( - db = dao.GetDB() - vertex []warehouse_setFence_request.VerticesItem - ) - if _, err := dao.GetStoresMapList(db, []int{model.VendorIDDD}, []int{storeDetail.Store.ID}, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "", ""); err != nil { - - } - - if globals.EnableStoreWrite { - param := &warehouse_setFence_request.WarehouseSetFenceParam{ - FenceInfo: &warehouse_setFence_request.FenceInfo{ - OutFenceId: utils.Int2Str(storeDetail.Store.ID), //外部id 为京西门店id - Shape: int32(storeDetail.DeliveryRangeType), - }, - } - if storeDetail.DeliveryRangeType == tiktok_api.ShapeCircular { - circular := &warehouse_setFence_request.Circular{ - Center: &warehouse_setFence_request.Center{ - Longitude: utils.Int2Float64(storeDetail.Lng), - Latitude: utils.Int2Float64(storeDetail.Lat), - }, - Radius: utils.Str2Float64(storeDetail.DeliveryRange), - } - param.FenceInfo.Circular = circular - } else if storeDetail.DeliveryRangeType == tiktok_api.ShapePolygon { - tempStr := strings.Split(storeDetail.DeliveryRange, ";") - for v := len(tempStr) - 1; v >= 0; v-- { - s2 := strings.Split(tempStr[v], ",") - vertices := warehouse_setFence_request.VerticesItem{ - Longitude: utils.Str2Float64(s2[0]), - Latitude: utils.Str2Float64(s2[1]), - } - vertex = append(vertex, vertices) - } - param.FenceInfo.Polygon.Vertices = vertex - } - //_, err = api.MtpsAPI.ShopUpdate(shopInfo) - } - return err -} diff --git a/business/partner/delivery/tiktok_store/waybill.go b/business/partner/delivery/tiktok_store/waybill.go index e96cde8d6..8b4b7885e 100644 --- a/business/partner/delivery/tiktok_store/waybill.go +++ b/business/partner/delivery/tiktok_store/waybill.go @@ -24,8 +24,7 @@ func init() { } func (c *DeliveryHandler) GetVendorID() int { - //TODO implement me - panic("implement me") + return model.VendorIDDD } func (c *DeliveryHandler) CreateStore(ctx *jxcontext.Context, storeDetail *dao.StoreDetail2) (vendorStoreID string, status int, err error) { diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index c06f64c06..55544cb9b 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -362,6 +362,7 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin storeInfo *dao.StoreDetail errList = errlist.New() timeStr = "" + tempFenceID string FreightTemplate = &model.FreightTemplate{} ) if db == nil { @@ -423,42 +424,45 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin errList.AddErr(fmt.Errorf("修改门店(%d) 信息失败:%v", utils.Str2Int64(storeInfo.VendorStoreID), err3)) } //电子围栏 - if bind, err := GetWarehouseByStore(storeInfo.VendorOrgCode, utils.Str2Int64(storeInfo.VendorStoreID)); err != nil { + bind, err := GetWarehouseByStore(storeInfo.VendorOrgCode, utils.Str2Int64(storeInfo.VendorStoreID)) + if err != nil { errList.AddErr(fmt.Errorf("获取门店(%d) 电子围栏失败:%v", utils.Str2Int64(storeInfo.VendorStoreID), err)) - } else { - if len(bind[storeInfo.VendorStoreID][0].OutFenceIds) > 0 { - //默认更新第一个电子围栏 - outFenceID := bind[storeInfo.VendorStoreID][0].OutFenceIds[0] - if err = UpdateFenceByStore(storeInfo.VendorOrgCode, outFenceID, storeID); err != nil { - return errors.New(fmt.Sprintf("更新电子围栏失败,原因:%v", err)) - } - FreightTemplate.FenceID = outFenceID + } else if len(bind[storeInfo.VendorStoreID][0].OutFenceIds) == 0 { + //检查是否以storeID创建过 + if bindFence, err := GetFence(storeInfo.VendorOrgCode, []string{utils.Int2Str(storeID)}); err == nil { + tempFenceID = bindFence[0].OutFenceId } else { if fenceID, err := CreateFenceByStore(storeInfo.VendorOrgCode, int64(storeID)); err != nil || len(fenceID) == 0 { //创建 globals.SugarLogger.Debug("门店(%d) 创建电子围栏失败:%v", storeID, err) errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err)) } else { - if err := BindFenceByStore(storeInfo.VendorOrgCode, utils.Str2Int64(storeInfo.VendorStoreID), []string{utils.Int2Str(storeID)}); err != nil { - globals.SugarLogger.Debug("门店(%d) 绑定电子围栏:%s失败:%v", storeID, fenceID, err) - errList.AddErr(fmt.Errorf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, fenceID, err)) - } else { - FreightTemplate.FenceID = utils.Int2Str(storeID) - } + tempFenceID = fenceID } } - } - - //同步进数据库 - FreightTemplate.StoreID = storeID - FreightTemplate.VendorStoreID = storeInfo.VendorStoreID - if err = dao.CreateEntity(db, FreightTemplate); err != nil { - if _, err1 := dao.UpdateEntity(db, FreightTemplate, "FenceID", "StoreID", "VendorStoreID"); err1 != nil { - globals.SugarLogger.Debugf("db update storeID,vendorStoreID defeat on :%v", err1) - errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1)) - } else { - globals.SugarLogger.Debugf("db create storeID,vendorStoreID defeat on :%v", err) - errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err)) + if err := BindFenceByStore(storeInfo.VendorOrgCode, utils.Str2Int64(storeInfo.VendorStoreID), []string{tempFenceID}); err != nil { + globals.SugarLogger.Debug("门店(%d) 绑定电子围栏:%s失败:%v", storeID, tempFenceID, err) + errList.AddErr(fmt.Errorf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, tempFenceID, err)) } + } else if len(bind[storeInfo.VendorStoreID][0].OutFenceIds) > 0 { + //默认更新第一个电子围栏 + outFenceID := bind[storeInfo.VendorStoreID][0].OutFenceIds[0] + if err = UpdateFenceByStore(storeInfo.VendorOrgCode, outFenceID, storeID); err != nil { + errList.AddErr(errors.New(fmt.Sprintf("更新电子围栏失败,原因:%v", err))) + } + FreightTemplate.FenceID = outFenceID + } + } + //同步进数据库 + FreightTemplate.FenceID = tempFenceID + FreightTemplate.StoreID = storeID + FreightTemplate.VendorStoreID = storeInfo.VendorStoreID + if err = dao.CreateEntity(db, FreightTemplate); err != nil { + if _, err1 := dao.UpdateEntity(db, FreightTemplate, "FenceID", "StoreID", "VendorStoreID"); err1 != nil { + globals.SugarLogger.Debugf("db update storeID,vendorStoreID defeat on :%v", err1) + //errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1)) + } else { + globals.SugarLogger.Debugf("db create storeID,vendorStoreID defeat on :%v", err) + //errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err)) } } endErr := errList.GetErrListAsOne()