更改微信支付号;代理新增是否显示价格

This commit is contained in:
liangzai 2025-06-26 16:59:06 +08:00
parent 0c54504f40
commit 6a1d18926d
12 changed files with 87 additions and 78 deletions

View File

@ -98,6 +98,7 @@ type (
AgentGeneratingLinkReq { AgentGeneratingLinkReq {
Product string `json:"product"` Product string `json:"product"`
Price string `json:"price"` Price string `json:"price"`
ShowPrice int64 `json:"show_price"`
} }
AgentGeneratingLinkResp { AgentGeneratingLinkResp {
LinkIdentifier string `json:"link_identifier"` LinkIdentifier string `json:"link_identifier"`
@ -368,6 +369,7 @@ type (
LinkIdentifier string `form:"link_identifier"` LinkIdentifier string `form:"link_identifier"`
} }
GetLinkDataResp { GetLinkDataResp {
ShowPrice int64 `json:"show_price"`
Product Product
} }
) )

View File

@ -33,10 +33,10 @@ TianyuanConfig:
Key: "ff83609b2b24fc73196aac3d3dfb874f" Key: "ff83609b2b24fc73196aac3d3dfb874f"
AccessId: "aa16cc6e9da90461" AccessId: "aa16cc6e9da90461"
Alipay: Alipay:
AppID: "2021005113664540" AppID: "2021004165608254"
PrivateKey: "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCA1mtTVZmB/7/wWV37Z8hUXEXFs0Gn1/Ie7c6rPQQRUlPHyJGcPAZvDii+ySC1/bplneMENRAjCuoJEM1z4X1FMt8rLggCqnF1xzUN2p9fdXUwcRPmSV4yi9ggMiFXldm0/eyaobV2fj0/VSLED2Qc8xBStM9pqkfszwf2rsAAKL15WQXOUiQw0s25s+Du18H4+YgkQ0HBr0+VPfhL4QoOvsE34ZYP0TuTwxVheYNkvSOPXFXmtE3z/b+75y2n2msa9S4HItNVYpOkB7z3GDB+0/rvX+Q+GvYI9BSBbgJwEuqiMN2SwQyAjH608JBoAUGnk0ygfG8juF77shBxzr/vAgMBAAECggEAQTlL2EJrlm59IxZ7B72Ao4SbJf0b7fba8mF90R7wojxFgcy+OpQAxdQrOHrl/nxXEv6dYRHj+3mZBcHl4RZ0rsWUSW3iTEcxbWjOKRdWu6LhEwcMBfd6oqg9X/9A9fA86O3sDFR1Y2mBZECbexo3mphK2TQEFQBJrU8aPv404V784u0wTh1oLO0Z3NjgvXOAy3ZsM64oZROVCkObXnZGyrY8Hf6W+YLmCoI7eajOQ9QTFy1x24fm8LFdWNizG9/DFa4EC7ZjiYzFhGpfpKb4964QnN3Krlf18Ryhgf3PO6IDO04JOdnHLKhR8+kHIN5m6AMIyKxbZ/vKw4X09Z8XoQKBgQD7jNHzEhIo4IOmRzgdoGxSCLXe1cUbwFL4tU3n7miUCYL/k6wpiNkCGwikaHMiSG0Om2D6+I9gX/rBrTrp2MAmcHA6ymn1GARSYMv7rz+5afGygfBDNr/7xQ2ASCatB65TObH+AUZzdq82B5dpr46AJhilRcHnQEyc/SyIelft2QKBgQCDHeDYt3vTDJ1vIPtXeyO1NHbGQY7cUucx3sZ+QVdF0abstcutT0LrHOgDCWFtnvjia1f0QRPDnTzUtq4GQxj63/9zZr1pMGsd7gjgIvVjM0LqUQXU0TMpO1DuU2zyemRyJTfWDDN+vTvA2+376cW0QxKq2CKOhX45WZRrUBbXBwKBgQCPVFe0ZlGOlQ6uSdpBl0zhGTF3vNpIy7b7G2M+ietwnlLUCXKJX/42YuzzsMgZeqcZMZN6rPIU+dtJS8lLwUMLI/nupbLmAj9EKP9RczOeFC2xhrQ9uA6ACHF+7J2M7dl4dmFi15sq4y9GW+D8SRmrDwnv8eVgPJTqxp7/TKaZUQKBgCMMI4QKV7DsWFDSMh0KL1tKcM1BzNwb1OzBrbEl6hwhlEsFtTHYU/zgtyvIoCBbNA/hvZruokfRiecaBZ5q5Qx6P6ArQEoTxS406G5xKcKgeyyDB9oBKXnF/zYVWrPd/2d7h1dR35nrH0PIBe8mZ9BtdVnxeBs8l6bgyQl+WPyVAoGBAPW7XxyLUAZ4X6JD4b5Iqq4E40xmDO3rUysrH8Zj7MN47ykZI0SlwA9B6hqliRLLJXkzhaAamecWb1RNJFDWfcg4bIyew4ukRbYB07RI+l0DXEgOxxTBcvN6BNUoIiQSEKXkOv+xt7Ez2TBoDm67xD58vwSXT4aPt4qxnd4i7Ves" PrivateKey: "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCPsXuwFJeHAL8CwI0QdD9GP7xQ8eejIoQKg6J3/peu26su68JCtGSRhlDm/7vbLHJcFR6h7at+INoz2juc7SqlmNO7i9wKc3+Ua0487y1G2fCsneRNxTTqbceBZwqjj9/AAN0u5/4nSl0bcqTeMddofdpTGOvwGvIJh6CZgCglnhMZnH4D6H6yiIyZf7Q6k2d/qBpVGK8kluYEtSnf/vEQCHhxRx+/DgTL7V1LjbA3BYoPTELZ15JAj0uIzuxextAtxOm4+Huli0RJFAN3q/to2L1Zs8yYY1gKJyTaPWKsJWBx8zI+gZcC/e45k6CZnGgh1Fn3+Xqkf7eGxJGGHs1fAgMBAAECggEAM2rkApbrvdBDiV2TXK7sMVv/K8vUAmkIbKa7zUpZxqUuNSUBp1LbpcM1UeNyujPGXDLmejUMp55j1igiKr4nA4iTQ0oBm+/GWDqpjV5cijzURUBegIGvtK9Bs4lGok6KVy839l/nbvHKLVcxrZySIv7dz9xcGNfbghN5IVRdiU/kOokNbtwQNC837piG5q4PHL6bzwIUGbrLED/RDmw/IwVMMmZovcQQ2JAuWJBo9CS9LB0Nc3I4MOPNx/0Rl+5URSSfmJAriL5ihlWckocQCUHwhRpSGQ6Q4xAXFYvb8OsApAQG3WU9SciBfs2wg/QfGNFzwQgGFofPcTQg3DTeuQKBgQDUHBTsgoe3WXnGo6qZKw1zA4OtF67IJJoltHo5JtkBRKCNVU3BJ+q+6i/fn0MBwScKQ1mhPjWe3h+qTRT207RRxGaxb6ljATOiU+BxmpHvu6jP+DVYtP5F3M7MCAGqpDAEoXgoAWttxmijqk+5YuLOLe0j/btCmpzuH7zwxSnqlQKBgQCtbTvaS/g+Jeu4Ml6iv7xi5//JCjeTn2wUJpXnNmN0jn+riRwEO81z4GWuOI8WukZHHAnufI6qWk2sLH0gcdLQ/STsMnl2L3NbeUyO8o5w2JSAlnZDYfaFfasGqFkGJrBLqG6bh/Bk1DP3/Bl6iMEwDbmu7Ptoy8ihokng9dEPIwKBgBHdi6WgGO5IiwlAH85m4eseEKkzpXUWICWs3d6SdxS0QxGkbbgnNI6ACyg6sdoj+rXSlmoOY1XOP7yIYYuoqTd542xui0XbhA3YIr9u1XvrwnxB27xtAj3AK2rkAb/ttF2ve/9inznPzGB8p9plidTz6VVuuacSfsVPxwpAkRdBAoGAR7c9Ifd6b1DFGkWSBuEc6RWhG6Si+OPbELYoFRXTqNZoiynGsSV9v2ZTBemTmkVrXGqG3N0bLezr47/9+lW3ZP7ZrubsfWf/3xrZAt/g8V9OgaI2w4SWKfuepsElFzsWeiLroltjmH58Axd3/cjhgpqaZ3DOQjbK/7QZsvJUAlsCgYEAqTQVhKLizM7BvXu1N6Z2K8trfJbiN+f90XhZIRPkIIcom0PnOfXhRtT76MCxz9n+lwf+alOKOfbQFy0pZtWG/eaFSYroQlXL+EfmqlFPXZR6D0NQLeygWAKH8161IQUh2VF3Qkhle6g6ZkyJA3Ev4RmqH2BYGv8hcZTTHsZ3Ic4="
AlipayPublicKey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0kkRL7lgKYs7f8Xi4DNKzp2ggjwy4By7RunwT4Ur4A71HVOqRQed9r45a6/W4JPuVv51tiHMojZifEKX7ixSlDG6be677RiNslMJ5G3mjw/+Ku01tV9Qzw5YyhvxbqmS8Qp9vgL8VPYhxqTxKO6WW+xiyVvxko+mrU+dbSFIVbBjp88NVVcquu+vZT/uwtjriKSwsesAm8DkKT6mTqY5P/JroMzTU7xa3/ErAMte6t2dOsxPS7kqWjJyoLBHRk+AH87X5lNBEjLgYPk1ADU7zFsLdC+nv4fm7nihYre7fCrdCTVKguXmPCEFBjqwSkag7BSIxRQjS3qHxi+DUMst7wIDAQAB" AlipayPublicKey: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2CqoCp95w/JV3RT/gzF4/8QmVT1HQNaeW7yUp+mA7x9AbjvlTW/+eRn6oGAL/XhZLjvHD0XjKLVKX0MJVS1aUQHEHEbOJN4Eu8II45OavD4iZISa7Kp9V6AM+i4qTyaeV2wNDnGxHQBaLVUGCfMR+56EK2YpORdE1H9uy72SSQseVb3bmpsV9EW/IJNmcVL/ut3uA1JWAoRmzlQ7ekxg7p8AYXzYPEHQr1tl7W+M4zv9wO9GKZCxIqMA8U3RP5npPfRaCfIRGzXzCqFEEUvWuidOB7frsvN4jiPD07qpL2Bi9LM1X/ee2kC/oM8Uhd7ERZhG8MbZfijZKxgrsDKBcwIDAQAB"
AppCertPath: "etc/merchant/appCertPublicKey_2021005113664540.crt" AppCertPath: "etc/merchant/appCertPublicKey_2021004165608254.crt"
AlipayCertPath: "etc/merchant/alipayCertPublicKey_RSA2.crt" AlipayCertPath: "etc/merchant/alipayCertPublicKey_RSA2.crt"
AlipayRootCertPath: "etc/merchant/alipayRootCert.crt" AlipayRootCertPath: "etc/merchant/alipayRootCert.crt"
IsProduction: true IsProduction: true
@ -44,13 +44,14 @@ Alipay:
ReturnURL: "http://localhost:5678/inquire" ReturnURL: "http://localhost:5678/inquire"
Wxpay: Wxpay:
AppID: "wxa581992dc74d860e" AppID: "wx442ee1ac1ee75917"
MchID: "1704330055" MchID: "1683589176"
MchCertificateSerialNumber: "749065854D0CECCE8F98EAFEA55AD4FB17F868C4" MchCertificateSerialNumber: "63139CD5FF5A703B261050D11BB991C3FAA68471"
MchApiv3Key: "A9f3G7kL2mP5sQ8tV1xY4zB6nC0dE3hJ" MchApiv3Key: "K7mP9nQ2xV8bF4wR6sL1dG3hJ5yT0uC9"
MchPrivateKeyPath: "etc/merchant/apiclient_key.pem" MchPrivateKeyPath: "etc/merchant/apiclient_key.pem"
MchPublicKeyID: "PUB_KEY_ID_0117043300552025010900447500000187" MchPublicKeyID: "PUB_KEY_ID_0116835891762025062600211574000800"
MchPublicKeyPath: "etc/merchant/pub_key.pem" MchPublicKeyPath: "etc/merchant/pub_key.pem"
MchPlatformRAS: "5E37D285DDB2D2C226183C7F9290BEDC5E993821"
NotifyUrl: "https://6m4685017o.goho.co/api/v1/pay/wechat/callback" NotifyUrl: "https://6m4685017o.goho.co/api/v1/pay/wechat/callback"
RefundNotifyUrl: "https://6m4685017o.goho.co/api/v1/wechat/refund_callback" RefundNotifyUrl: "https://6m4685017o.goho.co/api/v1/wechat/refund_callback"
Applepay: Applepay:

View File

@ -46,13 +46,13 @@ Alipay:
ReturnURL: "https://ycc.quannengcha.com/payment/result" ReturnURL: "https://ycc.quannengcha.com/payment/result"
Wxpay: Wxpay:
AppID: "wx442ee1ac1ee75917" AppID: "wx442ee1ac1ee75917"
MchID: "1682635136" MchID: "1683589176"
MchCertificateSerialNumber: "5369B8AEEBDCF7AF274510252E6A8C0659C30F61" MchCertificateSerialNumber: "63139CD5FF5A703B261050D11BB991C3FAA68471"
MchApiv3Key: "e3ea4cf0765f1e71b01bb387dfcdbc9f" MchApiv3Key: "K7mP9nQ2xV8bF4wR6sL1dG3hJ5yT0uC9"
MchPrivateKeyPath: "etc/merchant/apiclient_key.pem" MchPrivateKeyPath: "etc/merchant/apiclient_key.pem"
MchPublicKeyID: "PUB_KEY_ID_0116826351362025060900382267001601" MchPublicKeyID: "PUB_KEY_ID_0116835891762025062600211574000800"
MchPublicKeyPath: "etc/merchant/pub_key.pem" MchPublicKeyPath: "etc/merchant/pub_key.pem"
MchPlatformRAS: "1FFEC3F62E31885FAB4C91ADCB8D7557E9488781" MchPlatformRAS: "5E37D285DDB2D2C226183C7F9290BEDC5E993821"
NotifyUrl: "https://ycc.quannengcha.com/api/v1/pay/wechat/callback" NotifyUrl: "https://ycc.quannengcha.com/api/v1/pay/wechat/callback"
RefundNotifyUrl: "https://ycc.quannengcha.com/api/v1/pay/wechat/refund_callback" RefundNotifyUrl: "https://ycc.quannengcha.com/api/v1/pay/wechat/refund_callback"
Applepay: Applepay:

View File

@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY----- -----BEGIN PRIVATE KEY-----
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
5DljdOYX9IYIHHn3Ig4GeTGe Hx/bi3ojz/NLb2kX5GACG7cQ
-----END PRIVATE KEY----- -----END PRIVATE KEY-----

View File

@ -1,9 +1,9 @@
-----BEGIN PUBLIC KEY----- -----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvwSy7dS/ICZV38tI0HxM MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArw9V+Nc7LZ/2Sul64PWT
SAIE7+Ug92qryuNlkNyaNDRjfsykHsrPCSsUUQEZblBNmZOLfLQxmAaWC+cQqWCv rIpnWKAILD5Mt+lStWBm48sWxGsDDXcZVlp8Pk58Otrxl/d1yuGOWDa3WAp6W1cs
zfy4rXGAHE1widWFkHGzQzaw6cB0VdDXatK9yAt1PgXdp5jzBRzOn9Z3u4t0s771 xWnx4jfG5V9sh/xWWEMnGTnOYC+KwtOADFLqIXPbkNeieDjaIxoVyDQEQFxIjN6W
2zjuxCnLxMq84DovNgh2y0LBiuorWbtuTFTd8SXUGk2Jyuojq/02U3KTuyh+7SmW lNdHbA0iWH8rqzFPtLwlP1U4X/xXpZvN/vwfEbuC/+tDhMROYbi1uGCEoYVpT8i4
ffJXKrzhrKwSpGh59e/fFxqX2xGlVoJ1kdohMZPo/7k+e5jP7qjrf93l7JVeUKYa cd6UfO46CG40VuT2V+ZWGC0Ulu5dxjG/MSmIwhFhSoaF8Ec9wxR+yumTUhRG4Ahv
V27hNVowJ4oho21WVCJ1AYo41IbPJWI+6WxlaVeoR4zKix0Mb2timaWayyLoN53y ZRBylfZrJFk95LYWVEXf7dbJvbc5wYpWTOH4k3A4Nvo5ILzN4KQoA5WoULLCHUeu
aQIDAQAB vQIDAQAB
-----END PUBLIC KEY----- -----END PUBLIC KEY-----

View File

@ -63,6 +63,7 @@ type WxpayConfig struct {
MchPrivateKeyPath string MchPrivateKeyPath string
MchPublicKeyID string MchPublicKeyID string
MchPublicKeyPath string MchPublicKeyPath string
MchPlatformRAS string
NotifyUrl string NotifyUrl string
RefundNotifyUrl string RefundNotifyUrl string
} }

View File

@ -101,6 +101,7 @@ func (l *GeneratingLinkLogic) GeneratingLink(req *types.AgentGeneratingLinkReq)
agentLink.LinkIdentifier = encrypted agentLink.LinkIdentifier = encrypted
agentLink.ProductId = productModel.Id agentLink.ProductId = productModel.Id
agentLink.Price = price agentLink.Price = price
agentLink.ShowPrice = req.ShowPrice
_, err = l.svcCtx.AgentLinkModel.Insert(l.ctx, nil, &agentLink) _, err = l.svcCtx.AgentLinkModel.Insert(l.ctx, nil, &agentLink)
if err != nil { if err != nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "生成代理链接, %v", err) return nil, errors.Wrapf(xerr.NewErrCode(xerr.DB_ERROR), "生成代理链接, %v", err)

View File

@ -41,6 +41,7 @@ func (l *GetLinkDataLogic) GetLinkData(req *types.GetLinkDataReq) (resp *types.G
copier.Copy(&product, productModel) copier.Copy(&product, productModel)
product.SellPrice = agentLinkModel.Price product.SellPrice = agentLinkModel.Price
return &types.GetLinkDataResp{ return &types.GetLinkDataResp{
ShowPrice: agentLinkModel.ShowPrice,
Product: product, Product: product,
}, nil }, nil
} }

View File

@ -106,12 +106,12 @@ func newWechatPayServiceWithPlatformCert(c config.Config, userAuthModel model.Us
// newWechatPayServiceWithWxPayPubKey 使用微信支付公钥初始化微信支付服务 // newWechatPayServiceWithWxPayPubKey 使用微信支付公钥初始化微信支付服务
func newWechatPayServiceWithWxPayPubKey(c config.Config, userAuthModel model.UserAuthModel) *WechatPayService { func newWechatPayServiceWithWxPayPubKey(c config.Config, userAuthModel model.UserAuthModel) *WechatPayService {
// 从配置中加载商户信息 // 从配置中加载商户信息
mchID := c.Wxpay.MchID mchID := c.Wxpay.MchID // 商户号
mchCertificateSerialNumber := c.Wxpay.MchCertificateSerialNumber mchCertificateSerialNumber := c.Wxpay.MchCertificateSerialNumber // 商户证书序列号
mchAPIv3Key := c.Wxpay.MchApiv3Key mchAPIv3Key := c.Wxpay.MchApiv3Key // 商户APIv3密钥
mchPrivateKeyPath := c.Wxpay.MchPrivateKeyPath mchPrivateKeyPath := c.Wxpay.MchPrivateKeyPath // 商户私钥路径
mchPublicKeyID := c.Wxpay.MchPublicKeyID mchPublicKeyID := c.Wxpay.MchPublicKeyID // 商户公钥ID
mchPublicKeyPath := c.Wxpay.MchPublicKeyPath mchPublicKeyPath := c.Wxpay.MchPublicKeyPath // 商户公钥路径
// 从文件中加载商户私钥 // 从文件中加载商户私钥
mchPrivateKey, err := utils.LoadPrivateKeyWithPath(mchPrivateKeyPath) mchPrivateKey, err := utils.LoadPrivateKeyWithPath(mchPrivateKeyPath)
if err != nil { if err != nil {

View File

@ -757,6 +757,7 @@ type AgentCommissionListItem struct {
type AgentGeneratingLinkReq struct { type AgentGeneratingLinkReq struct {
Product string `json:"product"` Product string `json:"product"`
Price string `json:"price"` Price string `json:"price"`
ShowPrice int64 `json:"show_price"`
} }
type AgentGeneratingLinkResp struct { type AgentGeneratingLinkResp struct {
@ -1111,6 +1112,7 @@ type GetLinkDataReq struct {
} }
type GetLinkDataResp struct { type GetLinkDataResp struct {
ShowPrice int64 `json:"show_price"`
Product Product
} }

View File

@ -26,8 +26,8 @@ var (
agentLinkRowsExpectAutoSet = strings.Join(stringx.Remove(agentLinkFieldNames, "`id`", "`create_time`", "`update_time`"), ",") agentLinkRowsExpectAutoSet = strings.Join(stringx.Remove(agentLinkFieldNames, "`id`", "`create_time`", "`update_time`"), ",")
agentLinkRowsWithPlaceHolder = strings.Join(stringx.Remove(agentLinkFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?" agentLinkRowsWithPlaceHolder = strings.Join(stringx.Remove(agentLinkFieldNames, "`id`", "`create_time`", "`update_time`"), "=?,") + "=?"
cacheyccAgentLinkIdPrefix = "cache:ycc:agentLink:id:" cacheYccAgentLinkIdPrefix = "cache:ycc:agentLink:id:"
cacheyccAgentLinkLinkIdentifierPrefix = "cache:ycc:agentLink:linkIdentifier:" cacheYccAgentLinkLinkIdentifierPrefix = "cache:ycc:agentLink:linkIdentifier:"
) )
type ( type (
@ -59,6 +59,7 @@ type (
Id int64 `db:"id"` Id int64 `db:"id"`
ProductId int64 `db:"product_id"` ProductId int64 `db:"product_id"`
Price float64 `db:"price"` Price float64 `db:"price"`
ShowPrice int64 `db:"show_price"` // 是否显示价格0-不显示1-显示
UserId int64 `db:"user_id"` UserId int64 `db:"user_id"`
AgentId int64 `db:"agent_id"` AgentId int64 `db:"agent_id"`
LinkIdentifier string `db:"link_identifier"` LinkIdentifier string `db:"link_identifier"`
@ -79,19 +80,19 @@ func newAgentLinkModel(conn sqlx.SqlConn, c cache.CacheConf) *defaultAgentLinkMo
func (m *defaultAgentLinkModel) Insert(ctx context.Context, session sqlx.Session, data *AgentLink) (sql.Result, error) { func (m *defaultAgentLinkModel) Insert(ctx context.Context, session sqlx.Session, data *AgentLink) (sql.Result, error) {
data.DelState = globalkey.DelStateNo data.DelState = globalkey.DelStateNo
yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheyccAgentLinkIdPrefix, data.Id) yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheYccAgentLinkIdPrefix, data.Id)
yccAgentLinkLinkIdentifierKey := fmt.Sprintf("%s%v", cacheyccAgentLinkLinkIdentifierPrefix, data.LinkIdentifier) yccAgentLinkLinkIdentifierKey := fmt.Sprintf("%s%v", cacheYccAgentLinkLinkIdentifierPrefix, data.LinkIdentifier)
return m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { return m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentLinkRowsExpectAutoSet) query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?, ?, ?, ?, ?, ?)", m.table, agentLinkRowsExpectAutoSet)
if session != nil { if session != nil {
return session.ExecCtx(ctx, query, data.ProductId, data.Price, data.UserId, data.AgentId, data.LinkIdentifier, data.DeleteTime, data.DelState, data.Version) return session.ExecCtx(ctx, query, data.ProductId, data.Price, data.ShowPrice, data.UserId, data.AgentId, data.LinkIdentifier, data.DeleteTime, data.DelState, data.Version)
} }
return conn.ExecCtx(ctx, query, data.ProductId, data.Price, data.UserId, data.AgentId, data.LinkIdentifier, data.DeleteTime, data.DelState, data.Version) return conn.ExecCtx(ctx, query, data.ProductId, data.Price, data.ShowPrice, data.UserId, data.AgentId, data.LinkIdentifier, data.DeleteTime, data.DelState, data.Version)
}, yccAgentLinkIdKey, yccAgentLinkLinkIdentifierKey) }, yccAgentLinkIdKey, yccAgentLinkLinkIdentifierKey)
} }
func (m *defaultAgentLinkModel) FindOne(ctx context.Context, id int64) (*AgentLink, error) { func (m *defaultAgentLinkModel) FindOne(ctx context.Context, id int64) (*AgentLink, error) {
yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheyccAgentLinkIdPrefix, id) yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheYccAgentLinkIdPrefix, id)
var resp AgentLink var resp AgentLink
err := m.QueryRowCtx(ctx, &resp, yccAgentLinkIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error { err := m.QueryRowCtx(ctx, &resp, yccAgentLinkIdKey, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", agentLinkRows, m.table) query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", agentLinkRows, m.table)
@ -108,7 +109,7 @@ func (m *defaultAgentLinkModel) FindOne(ctx context.Context, id int64) (*AgentLi
} }
func (m *defaultAgentLinkModel) FindOneByLinkIdentifier(ctx context.Context, linkIdentifier string) (*AgentLink, error) { func (m *defaultAgentLinkModel) FindOneByLinkIdentifier(ctx context.Context, linkIdentifier string) (*AgentLink, error) {
yccAgentLinkLinkIdentifierKey := fmt.Sprintf("%s%v", cacheyccAgentLinkLinkIdentifierPrefix, linkIdentifier) yccAgentLinkLinkIdentifierKey := fmt.Sprintf("%s%v", cacheYccAgentLinkLinkIdentifierPrefix, linkIdentifier)
var resp AgentLink var resp AgentLink
err := m.QueryRowIndexCtx(ctx, &resp, yccAgentLinkLinkIdentifierKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) { err := m.QueryRowIndexCtx(ctx, &resp, yccAgentLinkLinkIdentifierKey, m.formatPrimary, func(ctx context.Context, conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
query := fmt.Sprintf("select %s from %s where `link_identifier` = ? and del_state = ? limit 1", agentLinkRows, m.table) query := fmt.Sprintf("select %s from %s where `link_identifier` = ? and del_state = ? limit 1", agentLinkRows, m.table)
@ -132,14 +133,14 @@ func (m *defaultAgentLinkModel) Update(ctx context.Context, session sqlx.Session
if err != nil { if err != nil {
return nil, err return nil, err
} }
yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheyccAgentLinkIdPrefix, data.Id) yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheYccAgentLinkIdPrefix, data.Id)
yccAgentLinkLinkIdentifierKey := fmt.Sprintf("%s%v", cacheyccAgentLinkLinkIdentifierPrefix, data.LinkIdentifier) yccAgentLinkLinkIdentifierKey := fmt.Sprintf("%s%v", cacheYccAgentLinkLinkIdentifierPrefix, data.LinkIdentifier)
return m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { return m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, agentLinkRowsWithPlaceHolder) query := fmt.Sprintf("update %s set %s where `id` = ?", m.table, agentLinkRowsWithPlaceHolder)
if session != nil { if session != nil {
return session.ExecCtx(ctx, query, newData.ProductId, newData.Price, newData.UserId, newData.AgentId, newData.LinkIdentifier, newData.DeleteTime, newData.DelState, newData.Version, newData.Id) return session.ExecCtx(ctx, query, newData.ProductId, newData.Price, newData.ShowPrice, newData.UserId, newData.AgentId, newData.LinkIdentifier, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
} }
return conn.ExecCtx(ctx, query, newData.ProductId, newData.Price, newData.UserId, newData.AgentId, newData.LinkIdentifier, newData.DeleteTime, newData.DelState, newData.Version, newData.Id) return conn.ExecCtx(ctx, query, newData.ProductId, newData.Price, newData.ShowPrice, newData.UserId, newData.AgentId, newData.LinkIdentifier, newData.DeleteTime, newData.DelState, newData.Version, newData.Id)
}, yccAgentLinkIdKey, yccAgentLinkLinkIdentifierKey) }, yccAgentLinkIdKey, yccAgentLinkLinkIdentifierKey)
} }
@ -155,14 +156,14 @@ func (m *defaultAgentLinkModel) UpdateWithVersion(ctx context.Context, session s
if err != nil { if err != nil {
return err return err
} }
yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheyccAgentLinkIdPrefix, data.Id) yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheYccAgentLinkIdPrefix, data.Id)
yccAgentLinkLinkIdentifierKey := fmt.Sprintf("%s%v", cacheyccAgentLinkLinkIdentifierPrefix, data.LinkIdentifier) yccAgentLinkLinkIdentifierKey := fmt.Sprintf("%s%v", cacheYccAgentLinkLinkIdentifierPrefix, data.LinkIdentifier)
sqlResult, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { sqlResult, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("update %s set %s where `id` = ? and version = ? ", m.table, agentLinkRowsWithPlaceHolder) query := fmt.Sprintf("update %s set %s where `id` = ? and version = ? ", m.table, agentLinkRowsWithPlaceHolder)
if session != nil { if session != nil {
return session.ExecCtx(ctx, query, newData.ProductId, newData.Price, newData.UserId, newData.AgentId, newData.LinkIdentifier, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion) return session.ExecCtx(ctx, query, newData.ProductId, newData.Price, newData.ShowPrice, newData.UserId, newData.AgentId, newData.LinkIdentifier, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
} }
return conn.ExecCtx(ctx, query, newData.ProductId, newData.Price, newData.UserId, newData.AgentId, newData.LinkIdentifier, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion) return conn.ExecCtx(ctx, query, newData.ProductId, newData.Price, newData.ShowPrice, newData.UserId, newData.AgentId, newData.LinkIdentifier, newData.DeleteTime, newData.DelState, newData.Version, newData.Id, oldVersion)
}, yccAgentLinkIdKey, yccAgentLinkLinkIdentifierKey) }, yccAgentLinkIdKey, yccAgentLinkLinkIdentifierKey)
if err != nil { if err != nil {
return err return err
@ -386,8 +387,8 @@ func (m *defaultAgentLinkModel) Delete(ctx context.Context, session sqlx.Session
return err return err
} }
yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheyccAgentLinkIdPrefix, id) yccAgentLinkIdKey := fmt.Sprintf("%s%v", cacheYccAgentLinkIdPrefix, id)
yccAgentLinkLinkIdentifierKey := fmt.Sprintf("%s%v", cacheyccAgentLinkLinkIdentifierPrefix, data.LinkIdentifier) yccAgentLinkLinkIdentifierKey := fmt.Sprintf("%s%v", cacheYccAgentLinkLinkIdentifierPrefix, data.LinkIdentifier)
_, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) { _, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
query := fmt.Sprintf("delete from %s where `id` = ?", m.table) query := fmt.Sprintf("delete from %s where `id` = ?", m.table)
if session != nil { if session != nil {
@ -398,7 +399,7 @@ func (m *defaultAgentLinkModel) Delete(ctx context.Context, session sqlx.Session
return err return err
} }
func (m *defaultAgentLinkModel) formatPrimary(primary interface{}) string { func (m *defaultAgentLinkModel) formatPrimary(primary interface{}) string {
return fmt.Sprintf("%s%v", cacheyccAgentLinkIdPrefix, primary) return fmt.Sprintf("%s%v", cacheYccAgentLinkIdPrefix, primary)
} }
func (m *defaultAgentLinkModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary interface{}) error { func (m *defaultAgentLinkModel) queryPrimary(ctx context.Context, conn sqlx.SqlConn, v, primary interface{}) error {
query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", agentLinkRows, m.table) query := fmt.Sprintf("select %s from %s where `id` = ? and del_state = ? limit 1", agentLinkRows, m.table)

View File

@ -13,7 +13,7 @@ $tables = @(
# "agent_closure", # "agent_closure",
# "agent_commission", # "agent_commission",
# "agent_commission_deduction", # "agent_commission_deduction",
# "agent_link", "agent_link"
# "agent_membership_config", # "agent_membership_config",
# "agent_membership_recharge_order" # "agent_membership_recharge_order"
# "agent_membership_user_config", # "agent_membership_user_config",
@ -36,7 +36,7 @@ $tables = @(
# "query_cleanup_config" # "query_cleanup_config"
# "user" # "user"
# "user_auth" # "user_auth"
"user_temp" # "user_temp"
# "example" # "example"
# "admin_user" # "admin_user"
# "admin_user_role" # "admin_user_role"