zengzhengrong 10 months ago
parent
commit
d70d41372d
6 changed files with 103 additions and 9 deletions
  1. +76
    -0
      app/utils/aes/aes_utils.go
  2. +1
    -1
      app/utils/convert.go
  3. +5
    -0
      consume/init.go
  4. +13
    -2
      consume/mall_add_supply_goods.go
  5. +4
    -2
      consume/supply_cloud_chain_fenxiao_new_change.go
  6. +4
    -4
      etc/cfg.yml

+ 76
- 0
app/utils/aes/aes_utils.go View File

@@ -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)]
}

+ 1
- 1
app/utils/convert.go View File

@@ -140,7 +140,7 @@ func AnyToString(raw interface{}) string {
case bool: case bool:
return strconv.FormatBool(i) return strconv.FormatBool(i)
} }
return fmt.Sprintf("%#v", raw)
return fmt.Sprintf("%+v", raw)
} }


func AnyToFloat64(raw interface{}) float64 { func AnyToFloat64(raw interface{}) float64 {


+ 5
- 0
consume/init.go View File

@@ -68,8 +68,13 @@ func initConsumes() {
//////////////////////////////////////// V2 ///////////////////////////////////////////////////// //////////////////////////////////////// V2 /////////////////////////////////////////////////////
//jobs[consumeMd.SupplyCloudChainFenxiaoNewChangeFunName] = SupplyCloudChainFenxiaoNewChangeConsume //jobs[consumeMd.SupplyCloudChainFenxiaoNewChangeFunName] = SupplyCloudChainFenxiaoNewChangeConsume


<<<<<<< HEAD
//////////////////////////////////////// V3 ///////////////////////////////////////////////////// //////////////////////////////////////// V3 /////////////////////////////////////////////////////
//jobs[consumeMd.MallAddSupplyGoodsFunName] = MallAddSupplyGoodsConsume //jobs[consumeMd.MallAddSupplyGoodsFunName] = MallAddSupplyGoodsConsume
=======
//////////////////////////////////////// // V3 // /////////////////////////////////////////////////////
jobs[consumeMd.MallAddSupplyGoodsFunName] = MallAddSupplyGoodsConsume
>>>>>>> f3435c10d69e233109d274335127cef21a8310f8


} }




+ 13
- 2
consume/mall_add_supply_goods.go View File

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


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

//1、将自己绑定到交换机上
ch.Bind(queue.Name, queue.ExchangeName, queue.RoutKey)
//2、取出数据进行消费 //2、取出数据进行消费
ch.Qos(1)
ch.Qos(10)
delivery := ch.Consume(queue.Name, false) delivery := ch.Consume(queue.Name, false)


var res amqp.Delivery var res amqp.Delivery
@@ -47,7 +51,14 @@ func MallAddSupplyGoodsConsume(queue md.MqQueue) {
} }


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

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


+ 4
- 2
consume/supply_cloud_chain_fenxiao_new_change.go View File

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


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

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


+ 4
- 4
etc/cfg.yml View File

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


# 连接官网数据库获取db mapping # 连接官网数据库获取db mapping
db: 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 show_log: true
max_lifetime: 30 max_lifetime: 30
max_open_conns: 100 max_open_conns: 100


Loading…
Cancel
Save