合并代码
This commit is contained in:
parent
b781a61f21
commit
aa1481b923
|
@ -3,7 +3,7 @@ package common
|
|||
const (
|
||||
TOKEN_PRE = "player_token_"
|
||||
TOKEN_Admin = "Admin_token_"
|
||||
ADMIN_V1 = "/pay/admin/api/v1
|
||||
ADMIN_V1 = "/pay/admin/api/v1"
|
||||
FRONT_V1 = "/api/v1"
|
||||
|
||||
// 支付渠道枚举,1微信JSAPI,2微信H5,3微信app,4微信Native,5微信小程序,6支付宝网页&移动应用,7支付宝小程序,8支付宝JSAPI
|
||||
|
|
|
@ -16,8 +16,8 @@ type AppResponse struct {
|
|||
MerchantId int64 `json:"merchant_id"`
|
||||
AppName string `json:"app_name"`
|
||||
AppRemark string `json:"app_remark"`
|
||||
Status int `json:"status"`
|
||||
KeyType int `json:"key_type"`
|
||||
Status int32 `json:"status"`
|
||||
KeyType int32 `json:"key_type"`
|
||||
PublicKey string `json:"public_key"`
|
||||
PrivateKey string `json:"private_key"`
|
||||
MerchantPublicKey string `json:"merchant_public_key"`
|
||||
|
@ -45,8 +45,8 @@ type AppCreateRequest struct {
|
|||
MerchantId int64 `json:"merchant_id" validate:"required" label:"商户ID"`
|
||||
AppName string `json:"app_name" validate:"required" label:"应用名称"`
|
||||
AppRemark string `json:"app_remark" label:"应用备注"`
|
||||
Status int `json:"status" validate:"oneof=0 1 2" label:"应用状态"`
|
||||
KeyType int `json:"key_type" validate:"required" label:"应用密钥类型"`
|
||||
Status int32 `json:"status" validate:"oneof=0 1 2" label:"应用状态"`
|
||||
KeyType int32 `json:"key_type" validate:"required" label:"应用密钥类型"`
|
||||
PublicKey string `json:"public_key" validate:"required" label:"应用公钥"`
|
||||
PrivateKey string `json:"private_key" validate:"required" label:"应用私钥"`
|
||||
MerchantPublicKey string `json:"merchant_public_key" label:"商户公钥"`
|
||||
|
@ -72,8 +72,8 @@ type AppUpdateRequest struct {
|
|||
Id int64 `json:"id" validate:"required" label:"应用ID"`
|
||||
AppName string `json:"app_name" label:"应用名称"`
|
||||
AppRemark string `json:"app_remark" label:"应用备注"`
|
||||
Status int `json:"status" label:"应用状态"`
|
||||
KeyType int `json:"key_type" label:"应用密钥类型"`
|
||||
Status int32 `json:"status" label:"应用状态"`
|
||||
KeyType int32 `json:"key_type" label:"应用密钥类型"`
|
||||
PublicKey string `json:"public_key" label:"应用公钥"`
|
||||
PrivateKey string `json:"private_key" label:"应用私钥"`
|
||||
MerchantPublicKey string `json:"merchant_public_key" label:"商户公钥"`
|
||||
|
|
|
@ -4,14 +4,15 @@ package routes
|
|||
* 配置路由
|
||||
*/
|
||||
import (
|
||||
"PaymentCenter/app/constants/common"
|
||||
"PaymentCenter/app/http/controllers"
|
||||
"PaymentCenter/app/http/controllers/front"
|
||||
"PaymentCenter/app/http/controllers/backend"
|
||||
"PaymentCenter/app/http/controllers/front"
|
||||
"PaymentCenter/app/http/middlewares"
|
||||
"PaymentCenter/app/http/trace"
|
||||
"PaymentCenter/app/utils/metric"
|
||||
"PaymentCenter/config"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
"github.com/swaggo/gin-swagger/swaggerFiles"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/qit-team/snow-core/http/middleware"
|
||||
|
@ -45,8 +46,6 @@ func RegisterRoute(router *gin.Engine) {
|
|||
router.NoRoute(controllers.Error404)
|
||||
|
||||
//router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
v1 := router.Group(common.FRONT_V1, middlewares.ValidateRequest())
|
||||
{
|
||||
|
||||
v1 := router.Group("/v1")
|
||||
{
|
||||
|
@ -61,6 +60,4 @@ func RegisterRoute(router *gin.Engine) {
|
|||
router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
|
||||
pay := v1.Group("pay", middlewares.ValidatePayRequest())
|
||||
pay.POST("web", backend.MerchantList) // 商户列表
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -65,14 +65,6 @@ func AppUpdate(app *appmodel.App) (code int) {
|
|||
} else {
|
||||
_, err = repo.AppUpdate(app, conn)
|
||||
}
|
||||
if !has {
|
||||
return errorcode.MerchantNotFound
|
||||
}
|
||||
|
||||
// 拼接查询条件
|
||||
uconn := builder.NewCond()
|
||||
uconn = uconn.And(builder.Eq{"Id": App.Id})
|
||||
_, err = repo.AppUpdate(App, uconn, "app_remark")
|
||||
|
||||
code = handErr(err)
|
||||
return
|
||||
|
|
|
@ -1,89 +1,89 @@
|
|||
package mq
|
||||
|
||||
import (
|
||||
"PaymentCenter/app/utils"
|
||||
"PaymentCenter/config"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/Shopify/sarama"
|
||||
"github.com/qit-team/snow-core/redis"
|
||||
|
||||
"strconv"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type KafkaMq struct {
|
||||
}
|
||||
|
||||
// 同步
|
||||
func (n KafkaMq) Produce(name string, log interface{}, delayTime int, args ...interface{}) error {
|
||||
kafConfig := sarama.NewConfig()
|
||||
kafConfig.Producer.RequiredAcks = sarama.WaitForAll // 发送完数据需要leader和follow都确认
|
||||
kafConfig.Producer.Partitioner = sarama.NewRandomPartitioner // 新选出一个partition
|
||||
kafConfig.Producer.Return.Successes = true // 成功交付的消息将在success channel返回
|
||||
|
||||
// 构造一个消息
|
||||
msg := &sarama.ProducerMessage{}
|
||||
msg.Topic = name
|
||||
var data, _ = json.Marshal(log)
|
||||
msg.Value = sarama.StringEncoder(string(data))
|
||||
// 连接kafka
|
||||
client, err := sarama.NewSyncProducer(config.GetConf().KafkaUrl, kafConfig)
|
||||
if err != nil {
|
||||
fmt.Println("producer closed, err:", err)
|
||||
return nil
|
||||
}
|
||||
defer client.Close()
|
||||
// 发送消息
|
||||
pid, offset, err := client.SendMessage(msg)
|
||||
if err != nil {
|
||||
utils.Log(nil, "send msg failed, err:", err, pid, offset)
|
||||
return nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (n KafkaMq) Consume(name string, hand interface{}) {
|
||||
consumer, err := sarama.NewConsumer(config.GetConf().KafkaUrl, nil)
|
||||
if err != nil {
|
||||
utils.Log(nil, "kafka comsume", err.Error())
|
||||
return
|
||||
}
|
||||
partitionList, err := consumer.Partitions(name) // 根据topic取到所有的分区
|
||||
if err != nil {
|
||||
utils.Log(nil, "kafka comsume", err.Error())
|
||||
return
|
||||
}
|
||||
//utils.Log(nil,"kafka comsume",name,partitionList)
|
||||
for partition := range partitionList { // 遍历所有的分区
|
||||
// 针对每个分区创建一个对应的分区消费者
|
||||
var offsetReDis, _ = redis.GetRedis().Incr(context.Background(), "kafka_consume:"+strconv.Itoa(int(partition))).Result() //保证多消费者不重复消费
|
||||
var offset int64 = sarama.OffsetNewest
|
||||
if offsetReDis > 0 {
|
||||
//offset = int64(offsetReDis)
|
||||
}
|
||||
pc, err := consumer.ConsumePartition(name, int32(partition), offset)
|
||||
//utils.Log(nil,"partion",int32(partition))
|
||||
if err != nil {
|
||||
fmt.Printf("failed to start consumer for partition %d,err:%v\n", partition, err)
|
||||
return
|
||||
}
|
||||
defer pc.AsyncClose()
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(1)
|
||||
// 异步从每个分区消费信息
|
||||
go func(sarama.PartitionConsumer) {
|
||||
for msg := range pc.Messages() {
|
||||
defer wg.Done()
|
||||
var handler = hand.(func(tag uint64, ch interface{}, msg []byte))
|
||||
handler(0, nil, msg.Value)
|
||||
//utils.Log(nil,"hand msg",string(msg.Value),msg.Offset)
|
||||
}
|
||||
}(pc)
|
||||
wg.Wait()
|
||||
}
|
||||
}
|
||||
func (n KafkaMq) DelyConsume(name string, hand interface{}) {
|
||||
|
||||
}
|
||||
//
|
||||
//import (
|
||||
// "PaymentCenter/app/utils"
|
||||
// "PaymentCenter/config"
|
||||
// "context"
|
||||
// "fmt"
|
||||
// "github.com/Shopify/sarama"
|
||||
// "github.com/qit-team/snow-core/redis"
|
||||
//
|
||||
// "strconv"
|
||||
// "sync"
|
||||
//)
|
||||
//
|
||||
//type KafkaMq struct {
|
||||
//}
|
||||
//
|
||||
//// 同步
|
||||
//func (n KafkaMq) Produce(name string, log interface{}, delayTime int, args ...interface{}) error {
|
||||
// //kafConfig := sarama.NewConfig()
|
||||
// //kafConfig.Producer.RequiredAcks = sarama.WaitForAll // 发送完数据需要leader和follow都确认
|
||||
// //kafConfig.Producer.Partitioner = sarama.NewRandomPartitioner // 新选出一个partition
|
||||
// //kafConfig.Producer.Return.Successes = true // 成功交付的消息将在success channel返回
|
||||
// //
|
||||
// //// 构造一个消息
|
||||
// //msg := &sarama.ProducerMessage{}
|
||||
// //msg.Topic = name
|
||||
// //var data, _ = json.Marshal(log)
|
||||
// //msg.Value = sarama.StringEncoder(string(data))
|
||||
// //// 连接kafka
|
||||
// //client, err := sarama.NewSyncProducer(config.GetConf().KafkaUrl, kafConfig)
|
||||
// //if err != nil {
|
||||
// // fmt.Println("producer closed, err:", err)
|
||||
// // return nil
|
||||
// //}
|
||||
// //defer client.Close()
|
||||
// //// 发送消息
|
||||
// //pid, offset, err := client.SendMessage(msg)
|
||||
// //if err != nil {
|
||||
// // utils.Log(nil, "send msg failed, err:", err, pid, offset)
|
||||
// // return nil
|
||||
// //}
|
||||
// return nil
|
||||
//}
|
||||
//
|
||||
//func (n KafkaMq) Consume(name string, hand interface{}) {
|
||||
// consumer, err := sarama.NewConsumer(config.GetConf().KafkaUrl, nil)
|
||||
// if err != nil {
|
||||
// utils.Log(nil, "kafka comsume", err.Error())
|
||||
// return
|
||||
// }
|
||||
// partitionList, err := consumer.Partitions(name) // 根据topic取到所有的分区
|
||||
// if err != nil {
|
||||
// utils.Log(nil, "kafka comsume", err.Error())
|
||||
// return
|
||||
// }
|
||||
// //utils.Log(nil,"kafka comsume",name,partitionList)
|
||||
// for partition := range partitionList { // 遍历所有的分区
|
||||
// // 针对每个分区创建一个对应的分区消费者
|
||||
// var offsetReDis, _ = redis.GetRedis().Incr(context.Background(), "kafka_consume:"+strconv.Itoa(int(partition))).Result() //保证多消费者不重复消费
|
||||
// var offset int64 = sarama.OffsetNewest
|
||||
// if offsetReDis > 0 {
|
||||
// //offset = int64(offsetReDis)
|
||||
// }
|
||||
// pc, err := consumer.ConsumePartition(name, int32(partition), offset)
|
||||
// //utils.Log(nil,"partion",int32(partition))
|
||||
// if err != nil {
|
||||
// fmt.Printf("failed to start consumer for partition %d,err:%v\n", partition, err)
|
||||
// return
|
||||
// }
|
||||
// defer pc.AsyncClose()
|
||||
// var wg sync.WaitGroup
|
||||
// wg.Add(1)
|
||||
// // 异步从每个分区消费信息
|
||||
// go func(sarama.PartitionConsumer) {
|
||||
// for msg := range pc.Messages() {
|
||||
// defer wg.Done()
|
||||
// var handler = hand.(func(tag uint64, ch interface{}, msg []byte))
|
||||
// handler(0, nil, msg.Value)
|
||||
// //utils.Log(nil,"hand msg",string(msg.Value),msg.Offset)
|
||||
// }
|
||||
// }(pc)
|
||||
// wg.Wait()
|
||||
// }
|
||||
//}
|
||||
//func (n KafkaMq) DelyConsume(name string, hand interface{}) {
|
||||
//
|
||||
//}
|
||||
|
|
7
go.mod
7
go.mod
|
@ -117,17 +117,12 @@ require (
|
|||
go.uber.org/atomic v1.9.0 // indirect
|
||||
go.uber.org/multierr v1.6.0 // indirect
|
||||
go.uber.org/zap v1.21.0 // indirect
|
||||
golang.org/x/arch v0.6.0 // indirect
|
||||
golang.org/x/crypto v0.25.0 // indirect
|
||||
golang.org/x/net v0.25.0 // indirect
|
||||
golang.org/x/sync v0.7.0 // indirect
|
||||
golang.org/x/sys v0.22.0 // indirect
|
||||
golang.org/x/text v0.16.0 // indirect
|
||||
golang.org/x/arch v0.6.0 // indirect
|
||||
golang.org/x/crypto v0.17.0 // indirect
|
||||
golang.org/x/net v0.17.0 // indirect
|
||||
golang.org/x/sync v0.1.0 // indirect
|
||||
golang.org/x/sys v0.15.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
golang.org/x/time v0.1.0 // indirect
|
||||
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
|
||||
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
|
||||
|
|
Loading…
Reference in New Issue