From 8ae7a0fa530be759dbfa5913e42acf4e25f45724 Mon Sep 17 00:00:00 2001
From: Rzy <465386466@qq.com>
Date: Tue, 16 Jul 2024 16:57:26 +0800
Subject: [PATCH] =?UTF-8?q?=E9=92=88=E5=AF=B9=E9=82=AE=E4=B9=90=E7=9A=84?=
 =?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Dockerfile                                 |   3 +-
 cmd/rpc/etc/config.go                      |   2 +
 cmd/rpc/etc/transfer.yaml                  |   6 -
 cmd/rpc/internal/logic/do/market.go        |  15 +-
 cmd/rpc/internal/logic/po/market/market.go |  19 +--
 cmd/rpc/internal/logic/vo/market.go        |   2 +
 cmd/rpc/internal/queue/mq/mq.go            |   1 +
 cmd/rpc/pb/transfer.proto                  |   2 +-
 cmd/rpc/pb/transfer/transfer.pb.go         |   8 +-
 cmd/rpc/queue/queue.go                     |   2 +-
 cmd/rpc/transfer.go                        |   4 +-
 genModel/serverOrderMarketModel_gen.go     |   2 +-
 runtime/produce/2024-07-12                 |   4 +
 runtime/produce/2024-07-15                 |   1 +
 sh/create.sh                               |   4 -
 sh/create_produce.sh                       |  14 ++
 sh/supervisord_include/start.conf          |   5 +-
 test/encrypt.go                            | 156 ---------------------
 test/market/config.go                      |  86 ------------
 test/market/market_api.go                  |  60 --------
 test/market/market_api_test.go             |  33 -----
 test/market/rsa.go                         | 137 ------------------
 22 files changed, 46 insertions(+), 520 deletions(-)
 delete mode 100644 cmd/rpc/etc/transfer.yaml
 create mode 100644 runtime/produce/2024-07-12
 create mode 100644 runtime/produce/2024-07-15
 create mode 100644 sh/create_produce.sh
 delete mode 100644 test/encrypt.go
 delete mode 100644 test/market/config.go
 delete mode 100644 test/market/market_api.go
 delete mode 100644 test/market/market_api_test.go
 delete mode 100644 test/market/rsa.go

diff --git a/Dockerfile b/Dockerfile
index 99dd597..85d0751 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -17,12 +17,13 @@ COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certifi
 COPY --from=builder /src /src
 
 RUN mkdir "/var/log/supervisor"
+RUN mkdir "/var/log/queue"
 WORKDIR /src
 ADD ./sh/startup.sh /opt/startup.sh
 RUN sed -i 's/\r//g' /opt/startup.sh
 ADD ./sh/supervisord.conf /etc/supervisord.conf
 
 WORKDIR /src
-EXPOSE 10002
+EXPOSE 10001
 
 #CMD ["sh","/opt/startup.sh"]
\ No newline at end of file
diff --git a/cmd/rpc/etc/config.go b/cmd/rpc/etc/config.go
index be59ed2..dca5b24 100644
--- a/cmd/rpc/etc/config.go
+++ b/cmd/rpc/etc/config.go
@@ -10,6 +10,8 @@ type NacosConf struct {
 	NameSpace   string
 	TimeOut     uint64
 	ServiceName string
+	Username    string
+	Password    string
 }
 
 type RockerMqConfig struct {
diff --git a/cmd/rpc/etc/transfer.yaml b/cmd/rpc/etc/transfer.yaml
deleted file mode 100644
index 662243d..0000000
--- a/cmd/rpc/etc/transfer.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-Name: transfer.rpc
-ListenOn: 0.0.0.0:8080
-Etcd:
-  Hosts:
-  - 127.0.0.1:2379
-  Key: transfer.rpc
diff --git a/cmd/rpc/internal/logic/do/market.go b/cmd/rpc/internal/logic/do/market.go
index c090a10..288f37a 100644
--- a/cmd/rpc/internal/logic/do/market.go
+++ b/cmd/rpc/internal/logic/do/market.go
@@ -2,7 +2,6 @@ package do
 
 import (
 	"encoding/json"
-	"fmt"
 	"strconv"
 	"trasfer_middleware/cmd/rpc/internal/logic/vo"
 	"trasfer_middleware/genModel"
@@ -13,17 +12,11 @@ func MarketKeyDataSet(order *genModel.ServerOrderMarket, resq string, resp strin
 		orderInfoReq map[string]interface{}
 		orderInfoRes map[string]interface{}
 	)
-	if orderInfoRes["code"].(string) != vo.ZLTX_RS_SUCCESS {
+	err = json.Unmarshal([]byte(resp), &orderInfoRes)
+	if orderInfoRes["errCode"].(string) != vo.MARKET_SUCCESS {
 		return err
 	}
 	err = json.Unmarshal([]byte(resq), &orderInfoReq)
-	if err != nil {
-		return fmt.Errorf("订单已存在")
-	}
-	err = json.Unmarshal([]byte(resp), &orderInfoRes)
-	if err != nil {
-		return err
-	}
 	if err != nil {
 		return err
 	}
@@ -31,14 +24,14 @@ func MarketKeyDataSet(order *genModel.ServerOrderMarket, resq string, resp strin
 	if err != nil {
 		return err
 	}
-	order.ProductId, err = strconv.ParseInt(orderInfoReq["voucher_id"].(string), 16, 64)
+	order.ProductId = orderInfoReq["voucher_id"].(string)
 	if err != nil {
 		return err
 	}
 	order.VoucherNum = orderInfoReq["mem_id"].(string)
 
 	order.OutBizNo = orderInfoReq["req_serial_no"].(string)
-	order.OrderNum = orderInfoReq["voucher_code"].(string)
+	order.OrderNum = orderInfoRes["data"].(map[string]interface{})["voucher_code"].(string)
 
 	return nil
 }
diff --git a/cmd/rpc/internal/logic/po/market/market.go b/cmd/rpc/internal/logic/po/market/market.go
index 008d145..3968a24 100644
--- a/cmd/rpc/internal/logic/po/market/market.go
+++ b/cmd/rpc/internal/logic/po/market/market.go
@@ -4,7 +4,6 @@ import (
 	"context"
 	"encoding/json"
 	"fmt"
-	"time"
 	"trasfer_middleware/cmd/rpc/etc"
 	"trasfer_middleware/cmd/rpc/internal/logic/po"
 	"trasfer_middleware/cmd/rpc/internal/logic/po/market/types"
@@ -33,14 +32,7 @@ func NewMarket(conf types.MarketConf) *Market {
 }
 
 func (r *Market) SetData(c context.Context, data map[string]interface{}, config *etc.RockerMqConfig) *MarketRequest {
-
-	data["timestamp"] = time.Now().Format("20060102150405")
-	private1 := "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC5FGH7Tq5u7pA/eh6AjAS0InykvWDJt095go8yK3w7+TRIhSYDdbRHlTgOQm4nWuMPfz3U2Rs1vJQwyyEYdylcYJ2zFLr7Vb1BdvkJ3Kz/2yJ6sz3BNq6xAHaeCKzA/WZxnc/ypfkGlrmfr2tNqCM9CUHUWryihBjLxwRiWLmo0aKgYpKLKYNixLgyqUYAifD3APncAduv6sSjUPMTyXMOlP1DXgVwX6IaUG/yV8/56Ew72Vdi/y4qZmCKMmXq4PovWrs8ISOEuhxbfLrGWbGCAVYPq7d7XaH+AOY4dhJZm7OZ43UGWw80QKGEPkvU4Oquzu8BqBh12md7Zsd6r0XzAgMBAAECggEAcLgTPKUc437z51UOwqeELdlbJFIaYn/8LTrwz1NgpH4P86L0FeNX2sjsjPK0d8+IvmV2WO2o/r9NWbI9A9N/Iz3MjcawYmZDj11QK0t1KZZil2wWzlfpaO+pTnJmFFvASq4ceeHPms2tW63QokkmvQOoTha9EBV3rJQW/XagDEolty57kkfmB31cQHJuAt+BF5EzBqv3q3jnqhsj8J/ddT0hadyKq65u85VomLH92asu/KKMKYYXC8aHjgX48chAmQUAHGM/HCD2owLHwtei2kPWNDx85ecBsglIX3wy0yhH1dnL+o3eeskVLl89ye3QCJPHJBaNUUfbgucgWT0bsQKBgQD1pPMAe31ZXajl9WlHMtn8qhpAGzi/GiiH6YrrHMQECC2GGuAakBko1Vhc+2HU35gwlPOhwMIOCapB0cCqcZVo3+71AKo78YvZLQ7yMuSsp0/Wn2N79NZ6+++wtHGPP9eHrLuWm23l15W7W0RcQptTaQupbculMQZ8b6cAjh6d1QKBgQDA4c4Xl2ePbQdgMMOuKTPPKF3QI1VhCVtxSV+Gj9MZBZedstz9+ZO3oxHhy8D5S9it1hE6dn6/a+7OWibZ/gBr1S0+11LcwKDb7q30dimr9bQs/srIywpoIIN8wVEkX4P9JLOWgQeAtq53IMba+cElef916aqyJpXuIek9lvUQpwKBgQCD7alNMwWpf3H8v4dhY+BLoRgkIfqiOGxYQogHqhVkjPfWNIzz9zxr/9lLZv+uEsBsJzOKRjpyy6ITY5H0eLhj8REnqMnFE/+mDlsenVLPn7Rzcns90ct3leOvpdnvs7wP9CdzxdqKPPUAAQ5/9o3xiFNpFbzv5Zq0LkslMy8iWQKBgQCiRJWctUxzllcRLpVBTPqAOkaKV195zmR2rzLFQvRmZZUDH7nZlQEYCgF+Q2tqj8uPm7tMwumo4wW55pAu7witr19sMbxNaWUrAeao9kvilkfpXsV9HYv4w/m6l+xKvGyPKDRJ1u1X9Nhb8mA5UsqSW8t2CIoJbHrQJwlRPlGXmwKBgQDg4rcsM2PmShOg8lSrHXPATXiZyyqpPJLpXbV6DRKyt7U6KWjyrplQN7yOoIUgsuD2OC/q67y7w1P3OY7X0RDnMr6MtIV0JyBJHg24eyBTqeLai2DqoHlsBOSvpJDZf+g/DXCjvHMWp1h0wqdj3aLthmU0dHM/CEqr/o7d8GwrGQ=="
-	p := "-----BEGIN RSA PRIVATE KEY-----\n" + private1 + "\n-----END RSA PRIVATE KEY-----"
-	data["app_id"] = "2783278"
-	data["mem_id"] = "2783278"
-	data["pos_id"] = "2783278"
-
+	p := "-----BEGIN RSA PRIVATE KEY-----\n" + data["sign"].(string) + "\n-----END RSA PRIVATE KEY-----"
 	sign, err := common.MarketMakeRsaSign(p, data)
 	if err != nil {
 		panic(err)
@@ -81,14 +73,7 @@ func (r *MarketRequest) request(url string) (*request.Response, error) {
 	if err != nil {
 		sysLog.LogSendMq(r.ctx, err)
 	}
-	/*r.Model.Insert(context.Background(), &genModel.ServerMiddleMarketLogs{
-		Url : url,
-		Code  :int64()
-		Data  :string(reqStr)
-		Resp  :resp.Text,
-		CreateTime :time.Now(),
-	})*/
-	return &resp, err
+	return &resp, nil
 }
 
 func (r *MarketRequest) KeySend() (*transfer.MarketKeySendRes, error) {
diff --git a/cmd/rpc/internal/logic/vo/market.go b/cmd/rpc/internal/logic/vo/market.go
index 390d029..cd7e075 100644
--- a/cmd/rpc/internal/logic/vo/market.go
+++ b/cmd/rpc/internal/logic/vo/market.go
@@ -11,4 +11,6 @@ const (
 	MARKET_KEY_QUERY = "openApi/v1/market/key/query"
 
 	MARKET_LOG_STATU_DEFAULT = 1
+
+	MARKET_SUCCESS = "00"
 )
diff --git a/cmd/rpc/internal/queue/mq/mq.go b/cmd/rpc/internal/queue/mq/mq.go
index 9040f5f..d6ac882 100644
--- a/cmd/rpc/internal/queue/mq/mq.go
+++ b/cmd/rpc/internal/queue/mq/mq.go
@@ -181,6 +181,7 @@ func (m *Market) saveMarketOrder(logId int64, resq string, resp string) error {
 	order.LogId = logId
 	order.ReqTime = time.Now()
 	order.CreateTime = time.Now()
+	order.Status = vo.MARKET_LOG_STATU_DEFAULT
 	err := do.MarketKeyDataSet(order, resq, resp)
 	if err != nil {
 		return err
diff --git a/cmd/rpc/pb/transfer.proto b/cmd/rpc/pb/transfer.proto
index a6fdd84..fd78d67 100644
--- a/cmd/rpc/pb/transfer.proto
+++ b/cmd/rpc/pb/transfer.proto
@@ -129,7 +129,7 @@ message MarketKeySendRes {
 
 message MarketKeySendReq {
   string app_id = 1;
-  uint64 sign = 2;
+  string sign = 2;
   string req_code = 3;
   string mem_id = 4;
   string req_serial_no = 5;
diff --git a/cmd/rpc/pb/transfer/transfer.pb.go b/cmd/rpc/pb/transfer/transfer.pb.go
index ba0432c..a792f83 100644
--- a/cmd/rpc/pb/transfer/transfer.pb.go
+++ b/cmd/rpc/pb/transfer/transfer.pb.go
@@ -689,7 +689,7 @@ type MarketKeySendReq struct {
 	unknownFields protoimpl.UnknownFields
 
 	AppId       string `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
-	Sign        uint64 `protobuf:"varint,2,opt,name=sign,proto3" json:"sign,omitempty"`
+	Sign        string `protobuf:"bytes,2,opt,name=sign,proto3" json:"sign,omitempty"`
 	ReqCode     string `protobuf:"bytes,3,opt,name=req_code,json=reqCode,proto3" json:"req_code,omitempty"`
 	MemId       string `protobuf:"bytes,4,opt,name=mem_id,json=memId,proto3" json:"mem_id,omitempty"`
 	ReqSerialNo string `protobuf:"bytes,5,opt,name=req_serial_no,json=reqSerialNo,proto3" json:"req_serial_no,omitempty"`
@@ -740,11 +740,11 @@ func (x *MarketKeySendReq) GetAppId() string {
 	return ""
 }
 
-func (x *MarketKeySendReq) GetSign() uint64 {
+func (x *MarketKeySendReq) GetSign() string {
 	if x != nil {
 		return x.Sign
 	}
-	return 0
+	return ""
 }
 
 func (x *MarketKeySendReq) GetReqCode() string {
@@ -2174,7 +2174,7 @@ var file_transfer_proto_rawDesc = []byte{
 	0x6b, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x12, 0x15, 0x0a,
 	0x06, 0x61, 0x70, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61,
 	0x70, 0x70, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f,
+	0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f,
 	0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x71, 0x43,
 	0x6f, 0x64, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20,
 	0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x72, 0x65,
diff --git a/cmd/rpc/queue/queue.go b/cmd/rpc/queue/queue.go
index 5e669cf..42db7db 100644
--- a/cmd/rpc/queue/queue.go
+++ b/cmd/rpc/queue/queue.go
@@ -12,7 +12,7 @@ import (
 	"trasfer_middleware/until/sysLog"
 )
 
-var configFile = flag.String("f", "../../../config/transfer.yaml", "the config file")
+var configFile = flag.String("f", "../../../config/transfer_local.yaml", "the config file")
 
 func main() {
 	flag.Parse()
diff --git a/cmd/rpc/transfer.go b/cmd/rpc/transfer.go
index 80bf677..64baa0f 100644
--- a/cmd/rpc/transfer.go
+++ b/cmd/rpc/transfer.go
@@ -18,7 +18,7 @@ import (
 	"trasfer_middleware/cmd/rpc/pb/transfer"
 )
 
-var configFile = flag.String("f", "../../config/transfer.yaml", "the config file")
+var configFile = flag.String("f", "../../config/transfer_local.yaml", "the config file")
 
 func main() {
 	flag.Parse()
@@ -51,6 +51,8 @@ func registerNacos(c *config.Config) {
 		NamespaceId:         c.Nacos.NameSpace,
 		TimeoutMs:           c.Nacos.TimeOut,
 		NotLoadCacheAtStart: true,
+		Username:            c.Nacos.Username,
+		Password:            c.Nacos.Password,
 		LogDir:              "/tmp/nacos/log",
 		CacheDir:            "/tmp/nacos/cache",
 		LogLevel:            "debug",
diff --git a/genModel/serverOrderMarketModel_gen.go b/genModel/serverOrderMarketModel_gen.go
index 4ad76fc..56c5e1d 100755
--- a/genModel/serverOrderMarketModel_gen.go
+++ b/genModel/serverOrderMarketModel_gen.go
@@ -40,7 +40,7 @@ type (
 		OutBizNo   string    `db:"out_biz_no"`  // 用户侧流水号
 		VoucherNum string    `db:"voucher_num"` // 商户号
 		OrderNum   string    `db:"order_num"`   // 系统侧订单号
-		ProductId  int64     `db:"product_id"`  // 平台提供商品id
+		ProductId  string     `db:"product_id"`  // 平台提供商品id
 		Num        int64     `db:"num"`         // 购买数量
 		LogId      int64     `db:"log_id"`      // 对应的日志id
 		ReqTime    time.Time `db:"req_time"`    // 请求时间
diff --git a/runtime/produce/2024-07-12 b/runtime/produce/2024-07-12
new file mode 100644
index 0000000..e0098ab
--- /dev/null
+++ b/runtime/produce/2024-07-12
@@ -0,0 +1,4 @@
+{"@timestamp":"2024-07-12T18:11:31.120+08:00","caller":"market/market.go:96","content":"sendMq:[the topic=online_transfer_market route info not found]","level":"info","span":"5139dd7d49f98616","trace":"c1511bea8fd02ac0b3178bab68348d01"}
+{"@timestamp":"2024-07-12T18:32:40.850+08:00","caller":"market/market.go:96","content":"sendMq:[producer group has been created]","level":"info","span":"49848e601ec056c7","trace":"010c0d971e83368fbfcb7c77bfd0c551"}
+{"@timestamp":"2024-07-12T18:33:54.829+08:00","caller":"market/market.go:96","content":"sendMq:[the topic=online_transfer_market route info not found]","level":"info","span":"b3e8beb1de670367","trace":"ad085836fc7f1cd2ecf979b48ef9aea0"}
+{"@timestamp":"2024-07-12T18:34:56.302+08:00","caller":"market/market.go:96","content":"sendMq:[the topic=testx_transfer_market route info not found]","level":"info","span":"1a5d63deb2ec9569","trace":"d59630d3ef3c72069d6e2a77990893d5"}
diff --git a/runtime/produce/2024-07-15 b/runtime/produce/2024-07-15
new file mode 100644
index 0000000..f4de1bc
--- /dev/null
+++ b/runtime/produce/2024-07-15
@@ -0,0 +1 @@
+{"@timestamp":"2024-07-15T11:34:59.386+08:00","caller":"market/market.go:87","content":"sendMq:[the topic=testx_transfer_market route info not found]","level":"info","span":"59dbedec4cddc60a","trace":"bfce456fdd339411405166a0fd601432"}
diff --git a/sh/create.sh b/sh/create.sh
index a859820..1c7b921 100755
--- a/sh/create.sh
+++ b/sh/create.sh
@@ -7,8 +7,4 @@ V_REFLECT=""
 
 
 docker build -t "${IMAGE}" . --no-cache
-docker stop "${RPC_CONTAINER}"
 
-docker rm "${RPC_CONTAINER}"
-
-docker run -it  -p "${RPC_PORT}:${RPC_PORT}"  --name "$RPC_CONTAINER" "${IMAGE}"
\ No newline at end of file
diff --git a/sh/create_produce.sh b/sh/create_produce.sh
new file mode 100644
index 0000000..8282428
--- /dev/null
+++ b/sh/create_produce.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+IMAGE="transfer_middleware"
+RPC_CONTAINER="transfer_middleware"
+RPC_PORT="10001"
+V_REFLECT=""
+TAGS_NAME="v1"
+ADDRESS="registry.cn-chengdu.aliyuncs.com/go_ls/transfer_middleware_produce"
+
+docker build -t "${IMAGE}:${TAGS_NAME}" . --no-cache
+
+docker tag "${IMAGE}:${TAGS_NAME}" ${ADDRESS}:${TAGS_NAME}
+
+docker push ${ADDRESS}:${TAGS_NAME}
\ No newline at end of file
diff --git a/sh/supervisord_include/start.conf b/sh/supervisord_include/start.conf
index a507805..aadd021 100755
--- a/sh/supervisord_include/start.conf
+++ b/sh/supervisord_include/start.conf
@@ -17,7 +17,8 @@ redirect_stderr=false
 stdout_logfile_maxbytes = 20MB
 #stdout 日志文件备份数
 stdout_logfile_backups = 20
-
+stdout_logfile=/var/log/out.log
+stderr_logfile=/var/log/err.log
 
 [program:queue]
 directory=/src/cmd/rpc/queue
@@ -37,3 +38,5 @@ redirect_stderr=false
 stdout_logfile_maxbytes = 20MB
 #stdout 日志文件备份数
 stdout_logfile_backups = 20
+stdout_logfile=/var/log/queue/out.log
+stderr_logfile=/var/log/queue/err.log
\ No newline at end of file
diff --git a/test/encrypt.go b/test/encrypt.go
deleted file mode 100644
index f1fe650..0000000
--- a/test/encrypt.go
+++ /dev/null
@@ -1,156 +0,0 @@
-package test
-
-import (
-	"bytes"
-	"crypto/aes"
-	"crypto/cipher"
-	crand "crypto/rand"
-	"encoding/base64"
-	"io"
-	"math/rand"
-	"unsafe"
-)
-
-const lettersString = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
-
-// 字符串长度
-const number = 16
-
-/*
-16位码,前15位随机字符串,最后一位通过前15位字符串计算校验生成
-*/
-
-func LotteryEncryptEncode() string {
-	b := make([]byte, number)
-	var sum byte
-	for i := 0; i < number-1; i++ {
-		b[i] = lettersString[rand.Int63()%int64(len(lettersString))]
-		sum += b[i]
-	}
-	b[number-1] = lettersString[sum%byte(len(lettersString))]
-	return *(*string)(unsafe.Pointer(&b))
-}
-
-func LotteryEncryptDecode(str string) bool {
-	if len(str) != number {
-		return false
-	}
-	var sum byte
-	for i := 0; i < len(str)-1; i++ {
-		sum += str[i]
-	}
-	if lettersString[sum%byte(len(lettersString))] != str[len(str)-1] {
-		return false
-	}
-	return true
-}
-
-// =================== CBC ======================
-func AesEncryptCBC(origData []byte, key []byte) (str string) {
-	// 分组秘钥
-	// NewCipher该函数限制了输入k的长度必须为16, 24或者32
-	block, _ := aes.NewCipher(key)
-	blockSize := block.BlockSize()                              // 获取秘钥块的长度
-	origData = pkcs5Padding(origData, blockSize)                // 补全码
-	blockMode := cipher.NewCBCEncrypter(block, key[:blockSize]) // 加密模式
-	encrypted := make([]byte, len(origData))                    // 创建数组
-	blockMode.CryptBlocks(encrypted, origData)                  // 加密
-
-	return base64.StdEncoding.EncodeToString(encrypted)
-}
-func AesDecryptCBC(data string, key []byte) (decrypted []byte) {
-	encrypted, err := base64.StdEncoding.DecodeString(data)
-	if err != nil {
-		return
-	}
-
-	block, _ := aes.NewCipher(key)                              // 分组秘钥
-	blockSize := block.BlockSize()                              // 获取秘钥块的长度
-	blockMode := cipher.NewCBCDecrypter(block, key[:blockSize]) // 加密模式
-	decrypted = make([]byte, len(encrypted))                    // 创建数组
-	blockMode.CryptBlocks(decrypted, encrypted)                 // 解密
-	decrypted = pkcs5UnPadding(decrypted)                       // 去除补全码
-	return decrypted
-}
-func pkcs5Padding(ciphertext []byte, blockSize int) []byte {
-	padding := blockSize - len(ciphertext)%blockSize
-	padtext := bytes.Repeat([]byte{byte(padding)}, padding)
-	return append(ciphertext, padtext...)
-}
-func pkcs5UnPadding(origData []byte) []byte {
-	length := len(origData)
-	unpadding := int(origData[length-1])
-	return origData[:(length - unpadding)]
-}
-
-// =================== ECB ======================
-func AesEncryptECB(origData []byte, key []byte) (encrypted []byte) {
-	cipher, _ := aes.NewCipher(generateKey(key))
-	length := (len(origData) + aes.BlockSize) / aes.BlockSize
-	plain := make([]byte, length*aes.BlockSize)
-	copy(plain, origData)
-	pad := byte(len(plain) - len(origData))
-	for i := len(origData); i < len(plain); i++ {
-		plain[i] = pad
-	}
-	encrypted = make([]byte, len(plain))
-	// 分组分块加密
-	for bs, be := 0, cipher.BlockSize(); bs <= len(origData); bs, be = bs+cipher.BlockSize(), be+cipher.BlockSize() {
-		cipher.Encrypt(encrypted[bs:be], plain[bs:be])
-	}
-
-	return encrypted
-}
-func AesDecryptECB(encrypted []byte, key []byte) (decrypted []byte) {
-	cipher, _ := aes.NewCipher(generateKey(key))
-	decrypted = make([]byte, len(encrypted))
-	//
-	for bs, be := 0, cipher.BlockSize(); bs < len(encrypted); bs, be = bs+cipher.BlockSize(), be+cipher.BlockSize() {
-		cipher.Decrypt(decrypted[bs:be], encrypted[bs:be])
-	}
-
-	trim := 0
-	if len(decrypted) > 0 {
-		trim = len(decrypted) - int(decrypted[len(decrypted)-1])
-	}
-
-	return decrypted[:trim]
-}
-func generateKey(key []byte) (genKey []byte) {
-	genKey = make([]byte, 16)
-	copy(genKey, key)
-	for i := 16; i < len(key); {
-		for j := 0; j < 16 && i < len(key); j, i = j+1, i+1 {
-			genKey[j] ^= key[i]
-		}
-	}
-	return genKey
-}
-
-// =================== CFB ======================
-func AesEncryptCFB(origData []byte, key []byte) (encrypted []byte) {
-	block, err := aes.NewCipher(key)
-	if err != nil {
-		panic(err)
-	}
-	encrypted = make([]byte, aes.BlockSize+len(origData))
-	iv := encrypted[:aes.BlockSize]
-	if _, err := io.ReadFull(crand.Reader, iv); err != nil {
-		panic(err)
-	}
-	stream := cipher.NewCFBEncrypter(block, iv)
-	stream.XORKeyStream(encrypted[aes.BlockSize:], origData)
-	return encrypted
-}
-func AesDecryptCFB(encrypted []byte, key []byte) (decrypted []byte) {
-	block, _ := aes.NewCipher(key)
-	if len(encrypted) < aes.BlockSize {
-		panic("ciphertext too short")
-	}
-	iv := encrypted[:aes.BlockSize]
-	encrypted = encrypted[aes.BlockSize:]
-
-	stream := cipher.NewCFBDecrypter(block, iv)
-	stream.XORKeyStream(encrypted, encrypted)
-	return encrypted
-}
diff --git a/test/market/config.go b/test/market/config.go
deleted file mode 100644
index cd5c985..0000000
--- a/test/market/config.go
+++ /dev/null
@@ -1,86 +0,0 @@
-package market
-
-import (
-	"bytes"
-	"encoding/json"
-	"io/ioutil"
-	"net/http"
-	"qteam/config"
-)
-
-type MarketClient struct {
-	cfg config.MarketConfig
-}
-
-type MarketSendRequest struct {
-	AppId       string `json:"app_id"`        //APP ID
-	Sign        string `json:"sign"`          //签名
-	ReqCode     string `json:"req_code"`      //固定值:voucher.create
-	MemId       string `json:"mem_id"`        //商户号
-	ReqSerialNo string `json:"req_serial_no"` //请求唯一流水号 最大32位
-	TimeTamp    string `json:"timestamp"`     //时间戳 yyyyMMddHHmmss
-	PosId       string `json:"pos_id"`        //商户方平台号
-	VoucherId   string `json:"voucher_id"`    //制码批次号
-	VoucherNum  int    `json:"voucher_num"`   //请券数量,默认是 1
-	MobileNo    string `json:"mobile_no"`     //11 手机号,可传空字符串
-	SendMsg     string `json:"send_msg"`      //是否发送短信:2- 发送 1-不发送
-}
-
-type MarketSenResponse struct {
-	VoucherId    string `json:"voucher_id"`    //制码批次号
-	VoucherCode  string `json:"voucher_code"`  //券码
-	ShortUrl     string `json:"short_url"`     //含二维码、条码的短链接
-	VoucherSdate string `json:"voucher_sdate"` //有效期起
-	VoucherEdate string `json:"voucher_edate"` //有效期止
-	CodeType     string `json:"code_type"`     //码类型: 00- 代金券 01- 满减券
-}
-
-type MarketResponse struct {
-	ErrCode string            `json:"errCode"` //00-成功 其他:失败
-	Msg     string            `json:"msg"`     //描 述 (失败时必填)
-	Data    MarketSenResponse `json:"data"`
-}
-
-func (this *MarketSendRequest) toMap() (resultMap map[string]interface{}) {
-	// Marshal the struct to JSON, ignoring omitempty fields.
-	jsonBytes, err := json.Marshal(this)
-	if err != nil {
-		return
-	}
-	// Unmarshal the JSON into a map to get the final result.
-	err = json.Unmarshal(jsonBytes, &resultMap)
-	if err != nil {
-		return
-	}
-
-	return resultMap
-}
-
-func (this *MarketClient) doPost(url string, jsonBytes []byte) (body []byte, err error) {
-	// 创建POST请求
-	url = this.cfg.Host + url
-	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonBytes))
-	if err != nil {
-		return
-	}
-
-	// 设置Content-Type头
-	req.Header.Set("Content-Type", "application/json")
-
-	// 创建HTTP客户端
-	client := &http.Client{}
-
-	// 发送请求并处理响应
-	resp, err := client.Do(req)
-	if err != nil {
-		return
-	}
-	defer resp.Body.Close()
-
-	// 读取响应体
-	body, err = ioutil.ReadAll(resp.Body)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/test/market/market_api.go b/test/market/market_api.go
deleted file mode 100644
index 9ef5459..0000000
--- a/test/market/market_api.go
+++ /dev/null
@@ -1,60 +0,0 @@
-package market
-
-import (
-	"encoding/json"
-	"qteam/app/utils/encrypt"
-	"qteam/config"
-	"time"
-)
-
-func NewMarketClient(cfg config.MarketConfig) *MarketClient {
-	cfg.Sign = "-----BEGIN RSA PRIVATE KEY-----\n" + cfg.Sign + "\n-----END RSA PRIVATE KEY-----"
-	return &MarketClient{
-		cfg: cfg,
-	}
-}
-
-/*
-MarketSend
-券码生成接口
-- 请求地址:/openApi/v1/market/key/send
-- 说明:发券接口应支持使用同一流水号进行重复请求,即:当调用该接口失败时,可 以使用同一流水号进行再次请求,接口需要根据请求的流水号进行判断,若无该流水 号的券码信息则新生成后返回,若有该流水号的券码信息则直接返回该券码的信息
-orderNo: 订单号
-VoucherId: 制码批次号
-MobileNo: 11 手机号,可传空字符串
-SendMsg: 是否发送短信:2- 发送 1-不发送
-*/
-func (this *MarketClient) MarketSend(orderNo, VoucherId, MobileNo, SendMsg string) (res MarketResponse, err error) {
-	url := "/openApi/v1/market/key/send"
-	request := MarketSendRequest{
-		AppId:       this.cfg.AppId,
-		ReqCode:     this.cfg.ReqCode,
-		MemId:       this.cfg.MemId,
-		PosId:       this.cfg.PosId,
-		TimeTamp:    time.Now().Format("20060102150405"),
-		VoucherId:   VoucherId,
-		ReqSerialNo: orderNo,
-		VoucherNum:  1,
-		MobileNo:    MobileNo,
-		SendMsg:     SendMsg,
-	}
-
-	request.Sign, err = MakeRsaSign(this.cfg.Sign, request.toMap())
-	if err != nil {
-		return res, err
-	}
-
-	bytes, err := json.Marshal(request)
-	if err != nil {
-		return res, err
-	}
-
-	data, err := this.doPost(url, bytes)
-	if err != nil {
-		return res, err
-	}
-	err = json.Unmarshal(data, &res)
-	// 加密
-	res.Data.ShortUrl = encrypt.AesEncryptCBC([]byte(res.Data.ShortUrl), []byte(this.cfg.SecretKey))
-	return res, err
-}
diff --git a/test/market/market_api_test.go b/test/market/market_api_test.go
deleted file mode 100644
index bd131c6..0000000
--- a/test/market/market_api_test.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package market
-
-import (
-	"fmt"
-	"github.com/qit-team/snow-core/kernel/server"
-	"os"
-	"qteam/app/utils"
-	"qteam/config"
-	"testing"
-)
-
-func TestMarketSendRequest_Market(t *testing.T) {
-	opts := config.GetOptions()
-	if opts.ShowVersion {
-		fmt.Printf("%s\ncommit %s\nbuilt on %s\n", server.Version, server.BuildCommit, server.BuildDate)
-		os.Exit(0)
-	}
-
-	//加载配置
-	conf, err := config.Load(opts.ConfFile)
-	if err != nil {
-		utils.Log(nil, "err", err.Error())
-		return
-	}
-	client := NewMarketClient(conf.OpenApiMarketConfig)
-
-	data, err := client.MarketSend("123456789111", "1717567048171", "", "2")
-
-	if err != nil {
-		t.Error(err)
-	}
-	t.Log(data)
-}
diff --git a/test/market/rsa.go b/test/market/rsa.go
deleted file mode 100644
index 1389433..0000000
--- a/test/market/rsa.go
+++ /dev/null
@@ -1,137 +0,0 @@
-package market
-
-import (
-	"crypto"
-	"crypto/rand"
-	"crypto/rsa"
-	"crypto/sha256"
-	"crypto/x509"
-	"encoding/base64"
-	"encoding/pem"
-	"errors"
-	"fmt"
-	"sort"
-)
-
-// getSignString 使用 xx=aa&yy=bb 的字符串拼接
-func getSignString(data map[string]interface{}) string {
-	keys := make([]string, 0, len(data))
-	for key := range data {
-		keys = append(keys, key)
-	}
-	sort.Strings(keys)
-
-	signString := ""
-	separator := ""
-	for _, key := range keys {
-		value := data[key]
-		if key == "sign" || value == nil {
-			continue
-		}
-		signString += fmt.Sprintf("%s%s=%v", separator, key, value)
-		separator = "&"
-	}
-	return signString
-}
-
-// VerifyRsaSign 签名验证
-func VerifyRsaSign(publicKey string, data map[string]interface{}) (map[string]interface{}, error) {
-	// 对 sign nonce timestamp appId 升序排序
-	// 使用 xx=aa&yy=bb 的字符串拼接
-	// 商户的公钥验签 RSA2验签
-	signString := getSignString(data)
-
-	rsaPubKey, err := parseRSAPublicKeyFromPEM([]byte(publicKey))
-	if err != nil {
-		return nil, err
-	}
-
-	signature, err := base64.StdEncoding.DecodeString(data["sign"].(string))
-	if err != nil {
-		return nil, err
-	}
-
-	hashed := sha256.Sum256([]byte(signString))
-	err = rsa.VerifyPKCS1v15(rsaPubKey, crypto.SHA256, hashed[:], signature)
-	if err != nil {
-		return nil, errors.New("签名验证失败")
-	}
-
-	return data, nil
-}
-
-// MakeRsaSign 生成签名
-func MakeRsaSign(privateKey string, data map[string]interface{}) (string, error) {
-	// 对 sign nonce timestamp appId 升序排序
-	// 使用 xx=aa&yy=bb 的字符串拼接
-	// 营销系统生成的私钥生成签名 RSA2加签
-	signString := getSignString(data)
-
-	privKey, err := parseRSAPrivateKeyFromPEM([]byte(privateKey))
-	if err != nil {
-		return "", errors.New("私钥解析失败")
-	}
-
-	hashed := sha256.Sum256([]byte(signString))
-	signature, err := rsa.SignPKCS1v15(rand.Reader, privKey, crypto.SHA256, hashed[:])
-	if err != nil {
-		return "", errors.New("签名失败")
-	}
-
-	return base64.StdEncoding.EncodeToString(signature), nil
-}
-
-// ParseRSAPrivateKeyFromPEM 解析私钥
-func parseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error) {
-	var err error
-
-	// Parse PEM block
-	var block *pem.Block
-	if block, _ = pem.Decode(key); block == nil {
-		return nil, errors.New("私钥解析失败: 无效的PEM格式")
-	}
-
-	var parsedKey interface{}
-	if parsedKey, err = x509.ParsePKCS1PrivateKey(block.Bytes); err != nil {
-		if parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil {
-			return nil, err
-		}
-	}
-
-	var pkey *rsa.PrivateKey
-	var ok bool
-	if pkey, ok = parsedKey.(*rsa.PrivateKey); !ok {
-		return nil, errors.New("密钥不是有效的RSA私钥")
-	}
-
-	return pkey, nil
-}
-
-// parseRSAPublicKeyFromPEM parses a PEM encoded PKCS1 or PKCS8 public key
-func parseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error) {
-	var err error
-
-	// Parse PEM block
-	var block *pem.Block
-	if block, _ = pem.Decode(key); block == nil {
-		return nil, errors.New("公钥解析失败: 无效的PEM格式")
-	}
-
-	// Parse the key
-	var parsedKey interface{}
-	if parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil {
-		if cert, err := x509.ParseCertificate(block.Bytes); err == nil {
-			parsedKey = cert.PublicKey
-		} else {
-			return nil, err
-		}
-	}
-
-	var pkey *rsa.PublicKey
-	var ok bool
-	if pkey, ok = parsedKey.(*rsa.PublicKey); !ok {
-		return nil, errors.New("密钥不是有效的RSA公钥")
-	}
-
-	return pkey, nil
-}