合并代码

This commit is contained in:
Rzy 2024-08-02 18:38:51 +08:00
parent b781a61f21
commit aa1481b923
6 changed files with 101 additions and 117 deletions

View File

@ -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微信JSAPI2微信H53微信app4微信Native5微信小程序6支付宝网页&移动应用7支付宝小程序8支付宝JSAPI

View File

@ -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:"商户公钥"`

View File

@ -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) // 商户列表
}
}

View File

@ -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

View File

@ -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
View File

@ -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