DengBiao 10 місяці тому
джерело
коміт
f3435c10d6
5 змінених файлів з 98 додано та 9 видалено
  1. +76
    -0
      app/utils/aes/aes_utils.go
  2. +2
    -2
      consume/init.go
  3. +12
    -1
      consume/mall_add_supply_goods.go
  4. +4
    -2
      consume/supply_cloud_chain_fenxiao_new_change.go
  5. +4
    -4
      etc/cfg.yml

+ 76
- 0
app/utils/aes/aes_utils.go Переглянути файл

@@ -0,0 +1,76 @@
package aes

import (
"bytes"
"crypto/aes"
"encoding/base64"
)

const AesKey = "zhiyingos@qq.com"

// 加密
func AesEncryptByECB(key, data string) string {
// 判断key长度
keyLenMap := map[int]struct{}{16: {}, 24: {}, 32: {}}
if _, ok := keyLenMap[len(key)]; !ok {
panic("key长度必须是 16、24、32 其中一个")
}
// 密钥和待加密数据转成[]byte
originByte := []byte(data)
keyByte := []byte(key)
// 创建密码组,长度只能是16、24、32 字节
block, _ := aes.NewCipher(keyByte)
// 获取密钥长度
blockSize := block.BlockSize()
// 补码
originByte = PKCS7Padding(originByte, blockSize)
// 创建保存加密变量
encryptResult := make([]byte, len(originByte))
// CEB是把整个明文分成若干段相同的小段,然后对每一小段进行加密
for bs, be := 0, blockSize; bs < len(originByte); bs, be = bs+blockSize, be+blockSize {
block.Encrypt(encryptResult[bs:be], originByte[bs:be])
}
res := base64.StdEncoding.EncodeToString(encryptResult)
return res
}

// 补码
func PKCS7Padding(originByte []byte, blockSize int) []byte {
// 计算补码长度
padding := blockSize - len(originByte)%blockSize
// 生成补码
padText := bytes.Repeat([]byte{byte(padding)}, padding)
// 追加补码
return append(originByte, padText...)
}

// 解密
func AesDecryptByECB(key, data string) string {
// 判断key长度
keyLenMap := map[int]struct{}{16: {}, 24: {}, 32: {}}
if _, ok := keyLenMap[len(key)]; !ok {
panic("key长度必须是 16、24、32 其中一个")
}
// 反解密码base64
originByte, _ := base64.StdEncoding.DecodeString(data)
// 密钥和待加密数据转成[]byte
keyByte := []byte(key)
// 创建密码组,长度只能是16、24、32字节
block, _ := aes.NewCipher(keyByte)
// 获取密钥长度
blockSize := block.BlockSize()
// 创建保存解密变量
decrypted := make([]byte, len(originByte))
for bs, be := 0, blockSize; bs < len(originByte); bs, be = bs+blockSize, be+blockSize {
block.Decrypt(decrypted[bs:be], originByte[bs:be])
}
// 解码
return string(PKCS7UNPadding(decrypted))
}

// 解码
func PKCS7UNPadding(originDataByte []byte) []byte {
length := len(originDataByte)
unpadding := int(originDataByte[length-1])
return originDataByte[:(length - unpadding)]
}

+ 2
- 2
consume/init.go Переглянути файл

@@ -72,10 +72,10 @@ func initConsumes() {
//jobs[consumeMd.CloudIssuanceMsgCallBackFunName] = CloudIssuanceMsgCallBackConsume

//////////////////////////////////////// V2 /////////////////////////////////////////////////////
jobs[consumeMd.SupplyCloudChainFenxiaoNewChangeFunName] = SupplyCloudChainFenxiaoNewChangeConsume
//jobs[consumeMd.SupplyCloudChainFenxiaoNewChangeFunName] = SupplyCloudChainFenxiaoNewChangeConsume

//////////////////////////////////////// // V3 // /////////////////////////////////////////////////////
//jobs[consumeMd.MallAddSupplyGoodsFunName] = MallAddSupplyGoodsConsume
jobs[consumeMd.MallAddSupplyGoodsFunName] = MallAddSupplyGoodsConsume

}



+ 12
- 1
consume/mall_add_supply_goods.go Переглянути файл

@@ -2,6 +2,7 @@ package consume

import (
svc2 "applet/app/svc"
"applet/app/utils/aes"
"applet/app/utils/logx"
"applet/consume/md"
md3 "applet/mall/md"
@@ -24,6 +25,9 @@ func MallAddSupplyGoodsConsume(queue md.MqQueue) {
return
}
defer ch.Release()

//1、将自己绑定到交换机上
ch.Bind(queue.Name, queue.ExchangeName, queue.RoutKey)
//2、取出数据进行消费
ch.Qos(10)
delivery := ch.Consume(queue.Name, false)
@@ -47,7 +51,14 @@ func MallAddSupplyGoodsConsume(queue md.MqQueue) {
}

func handleMallAddSupplyGoodsConsume(msgData []byte) error {
var msg map[string]string
err := json.Unmarshal(msgData, &msg)
if err != nil {
panic(err)
}

//解析mq中queue的数据结构体
strs := aes.AesDecryptByECB(aes.AesKey, msg["aes_data"])
var pushStuct struct {
Args struct {
GoodsInfo []*md3.OfficialGoods `json:"goods_info"`
@@ -55,7 +66,7 @@ func handleMallAddSupplyGoodsConsume(msgData []byte) error {
} `json:"args"`
Mid string `json:"mid"`
}
err := json.Unmarshal(msgData, &pushStuct)
err = json.Unmarshal([]byte(strs), &pushStuct)
if err != nil {
panic(err)
}


+ 4
- 2
consume/supply_cloud_chain_fenxiao_new_change.go Переглянути файл

@@ -17,6 +17,7 @@ import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/streadway/amqp"
"strconv"
"strings"
"time"
)
@@ -191,6 +192,8 @@ func handleSupplyCloudChainFenxiaoNewChangeConsume(msgData []byte) error {

utils.FilePutContents("cloudChainGoods", utils.SerializeStr(cloudChainGoods))
for _, id := range ids {
var req md2.AddGoodsReq

if cloudChainGoods[id] == nil {
continue
}
@@ -203,9 +206,8 @@ func handleSupplyCloudChainFenxiaoNewChangeConsume(msgData []byte) error {
continue
}
if getV2 {
continue
req.Base.GoodsId = strconv.FormatInt(goods.GoodsId, 10)
}
var req md2.AddGoodsReq
req.Base.GoodsType = 1
req.Base.CloudChainGoodsId = id
req.Base.SaleState = enum.MallGoodsSaleStateOnShelf


+ 4
- 4
etc/cfg.yml Переглянути файл

@@ -29,10 +29,10 @@ wxapplet_filepath:

# 连接官网数据库获取db mapping
db:
host: 'zhios123.rwlb.rds.aliyuncs.com:3306'
name: 'zyos_website'
user: 'canal'
psw: 'canal'
host: '119.23.182.117:3306'
name: 'zyso_website_back'
user: 'root'
psw: 'Fnuo123com@'
show_log: true
max_lifetime: 30
max_open_conns: 100


Завантаження…
Відмінити
Зберегти