From 5773e85ebb954ba69e9c1270ca4b05d51754a54a Mon Sep 17 00:00:00 2001 From: kanade <3136520963@qq.com> Date: Fri, 9 Oct 2020 10:57:22 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E5=88=86=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controller/order/goods.go | 8 +---- .../user/{grend => trend}/comment.go | 2 +- .../user/{grend => trend}/comment/praise.go | 0 .../user/{grend => trend}/praise.go | 2 +- app/lib/asset/asset.go | 8 ++--- app/lib/recook/order.go | 4 +-- app/lib/secure/decrypt.go | 29 ++++++++++++++++++- app/router/router.go | 8 ++--- config/app.test.ini | 3 +- 9 files changed, 43 insertions(+), 21 deletions(-) rename app/controller/user/{grend => trend}/comment.go (99%) rename app/controller/user/{grend => trend}/comment/praise.go (100%) rename app/controller/user/{grend => trend}/praise.go (98%) diff --git a/app/controller/order/goods.go b/app/controller/order/goods.go index 492e69a..afd7081 100644 --- a/app/controller/order/goods.go +++ b/app/controller/order/goods.go @@ -2,7 +2,6 @@ package order import ( "github.com/gin-gonic/gin" - "live/app/common" "live/app/lib" "live/app/lib/back" "live/app/lib/recook" @@ -13,17 +12,12 @@ type Goods struct { } func (g *Goods) Histroy(c *gin.Context) { - uid := common.GetUserId(c) - if uid <= 0 { - back.Fail(c, "未登录") - return - } page := lib.Page{} if err := tools.ParseParams(&page, c); err != nil { back.Fail(c, err.Error()) return } - list, err := recook.Order.GetHistoryGoods(uid, c.Request.Header.Get("X-Recook-Token"), page) + list, err := recook.Order.GetHistoryGoods(c.Request.Header.Get("X-Recook-Id"), c.Request.Header.Get("X-Recook-Token"), page) if err != nil { back.Fail(c, err.Error()) return diff --git a/app/controller/user/grend/comment.go b/app/controller/user/trend/comment.go similarity index 99% rename from app/controller/user/grend/comment.go rename to app/controller/user/trend/comment.go index cddf863..dced158 100644 --- a/app/controller/user/grend/comment.go +++ b/app/controller/user/trend/comment.go @@ -1,4 +1,4 @@ -package grend +package trend import ( "github.com/gin-gonic/gin" diff --git a/app/controller/user/grend/comment/praise.go b/app/controller/user/trend/comment/praise.go similarity index 100% rename from app/controller/user/grend/comment/praise.go rename to app/controller/user/trend/comment/praise.go diff --git a/app/controller/user/grend/praise.go b/app/controller/user/trend/praise.go similarity index 98% rename from app/controller/user/grend/praise.go rename to app/controller/user/trend/praise.go index 22621d6..5543f42 100644 --- a/app/controller/user/grend/praise.go +++ b/app/controller/user/trend/praise.go @@ -1,4 +1,4 @@ -package grend +package trend import ( "github.com/gin-gonic/gin" diff --git a/app/lib/asset/asset.go b/app/lib/asset/asset.go index 24269df..e50475c 100644 --- a/app/lib/asset/asset.go +++ b/app/lib/asset/asset.go @@ -79,7 +79,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _configAppDevIni = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x51\x5b\x4f\x1b\x3d\x14\x7c\xf7\x8f\xd9\xf8\xb6\xde\x18\xc9\x0f\x20\x10\x44\x41\x1f\xfa\x2a\x5a\x95\xa0\xa8\xf2\xe5\x2c\x71\xf7\x62\x63\x7b\x21\x9b\x5f\x5f\x65\x41\xa5\xf2\xcb\xf8\xcc\x8c\x3c\xe3\xe3\xc0\x4c\x2f\xaa\xa4\x09\x90\x76\x2e\x29\x5c\x2d\xe7\x62\x8d\xa5\x44\xe8\x79\x98\xf3\x6b\xbf\x47\xce\x1c\x42\x2e\x8a\xd0\x66\xa1\x09\x72\x26\x86\x54\x14\x63\x58\x20\x67\xa6\x0c\x49\xa5\x10\xca\x79\xae\x73\x7e\x0f\xc9\xa9\x02\xf9\x7c\x1f\xf5\x00\x1f\x38\x26\x68\xfd\x71\xc1\xbf\xd0\xa0\x8f\x1b\xd7\x83\x22\xf8\x0c\x1f\x22\x8c\xaa\xc6\x08\x3d\x17\x18\x2d\x8c\x65\x8f\xb2\xeb\x2e\x63\xdc\x38\x45\x38\xc6\x9c\x32\x29\x08\xf2\x0e\xc6\xe2\x5b\x0f\x49\x69\x37\xf8\xd1\xe7\x92\x74\x09\x09\xc1\x31\xfa\x04\x4a\x60\xd4\xc1\xac\x28\x01\xcd\x8c\xd1\xd2\x30\xd1\xe2\x46\x4a\xdc\xb2\x96\x32\x21\x29\x17\x2d\x76\xd2\x36\xd8\x69\xcc\x79\x03\xb5\xe5\x9c\x5b\x59\x53\x8e\x19\x97\x82\x18\x23\xac\x20\x28\x83\x4d\x50\x36\x4e\x5d\x6e\x37\xd7\x0f\xbb\x6f\xeb\x5d\x77\x79\xf7\xfb\x0a\xf2\x29\xbd\xbe\xc9\x27\x6f\x6e\x1e\x4f\xb7\xb7\xa7\xc7\xc3\xf8\x70\x95\x3f\xd5\x5b\x98\x95\xc1\x92\xb0\x78\xaf\x77\x9b\xe1\x3d\x12\x12\xae\xff\x23\xff\x3f\xdd\x75\xc7\xc9\x50\x2f\xb7\x37\x09\xe9\x8f\x46\xb4\xa6\x98\x92\x75\x5d\xff\xed\x5b\xf5\xfe\x0d\xf6\x4b\x7a\xa6\x1b\x6c\x24\xb4\x0d\x6f\x1b\xca\x1b\x59\x4b\xe6\x2c\x08\x20\x94\x62\x8c\x09\x41\x2e\x0c\xda\x8f\x8a\x10\x4a\x04\x5f\x8c\x71\xca\x87\x6a\x98\x5f\x6d\x1f\x26\x57\xd9\x30\x7c\x7d\x08\x46\x25\x81\x2e\xb3\x4a\x65\x88\x9f\xe3\x47\x3f\x80\x5a\x0b\x8e\xf1\xd7\xfb\xf9\x10\x52\xd9\xff\xeb\x0b\xe3\x22\xfc\xa1\x7b\xef\x14\x59\xa2\x59\x36\xce\xb7\xdd\xb5\x0d\x65\xad\x7f\x6e\xed\xcb\xf7\xdd\x3d\x20\xf4\x9c\xc0\x86\xd0\xed\xd1\x94\x7a\x75\x28\x25\xe6\x8b\xd5\xea\xbc\x65\x1d\x7d\x95\x60\x21\x2b\x3b\xae\x74\xf4\xab\x37\xf2\x27\x00\x00\xff\xff\x1f\xcf\xb1\x34\x71\x02\x00\x00") +var _configAppDevIni = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x51\xd9\xce\xab\xb8\xba\xbc\xcf\xab\x20\x2d\xcc\x6c\xb6\x94\x0b\x66\x08\x04\x42\x02\x49\xa0\xb5\xb4\xc5\x60\x86\x30\xcf\x84\xa7\x3f\x5a\x7f\xb7\x4e\x6f\xf9\xa6\xfc\x55\x95\x5d\x65\xa7\x28\x5e\xf2\xf3\x3c\x2e\xe8\x14\xa5\xe9\x78\x06\xbf\x7e\xd6\x7f\x20\xe0\xf9\xd3\xe9\xaf\xe6\x3b\x0d\xf5\xef\x53\x1a\x17\xdd\x34\x9f\x09\x92\xfb\xa1\x89\x53\x1a\xf7\xdd\x38\x9f\x29\x0a\xb0\xa7\x34\x5e\x26\x34\x9e\xc7\xae\x9b\xff\xcc\xa3\x69\xda\xba\x31\x3d\xcf\x68\xfa\xb3\x6f\xa3\x06\xfd\x8d\xfb\x11\x65\xe5\xfe\x83\xff\x7b\x6a\xa2\xdd\x48\x6b\x74\x26\xc0\x1f\xe8\xf4\xa8\x3d\x33\xe0\x74\xfa\x6b\x46\x6d\x82\xda\xf9\xf7\x69\x4a\x2b\xa1\xef\x8d\xf4\x4c\xd0\x00\xd0\x24\xc5\xb3\xc4\xa9\x4c\x51\x3b\x97\x59\x89\xc6\x73\x94\x36\x65\x5b\x4e\xf3\x18\xcd\xdd\x78\x42\x7b\x5f\x8e\xe8\xcc\x82\x53\x85\xbe\x67\x92\x40\x11\x15\xc7\x11\x1f\x53\x6c\x06\x38\x9e\x07\x19\x95\x91\x14\xcb\x93\x34\x9b\x81\x94\x4f\x38\x90\x46\x80\xa6\x39\xc4\x24\x34\x4d\x27\x3c\x43\xd2\x80\xa2\x79\x96\x88\x63\x36\x61\x89\xd3\x84\x92\x11\xcd\x46\x7a\x16\x4c\x43\x76\xc2\x3b\x0c\x2b\x41\xff\x88\x68\x3a\xc6\x61\xe5\x83\x32\x56\xbc\x43\xd3\x0e\xaf\x68\x1d\x71\xfa\x47\x6d\xa2\xef\x39\x06\x3c\x41\xf5\x56\x14\x1a\xcd\xd6\x13\x44\x27\xdb\x84\x1b\xe8\xd5\xbe\xc4\x64\xc9\x9b\xca\x78\x8a\xfe\x6e\x44\x32\x24\x20\x09\xc8\x30\xff\xdf\xf7\x57\x5d\xae\xe8\xf7\x4f\x7a\x2a\xe2\x40\xcc\xa3\x8c\xa3\x33\x8e\xa4\x39\x9e\xe1\xa9\x34\x41\x2c\x22\x48\x12\x00\x40\x10\xa7\xb4\x6b\xa2\xb2\x3d\x13\x04\x49\xb0\xf4\x8f\xb1\x5f\xa6\xe2\x57\xf3\x1d\x92\xba\x5b\xd2\x5f\x49\xd7\xfc\xfb\x20\xe0\x34\x8f\x28\x9a\xbf\xe7\x71\x6e\xfa\x7f\xc6\x5e\xd9\xa0\x33\x64\x69\x00\xfe\xbd\x7f\x2a\xba\x71\xfe\xfd\xbf\xbe\xae\xfd\x11\x3e\xa3\xba\x4c\xcf\xc4\x4f\xb4\x84\x6a\xbf\x5a\x25\x27\xdd\x0c\xa3\xb7\x99\xe4\x7e\x68\xa1\xd3\xe9\xaf\x11\x25\x5d\x57\xfd\x3e\x2d\x63\x7d\x2e\xe6\xb9\x9f\xfe\x83\xe3\x7f\x7e\x39\xea\xcb\x5f\x23\xfa\x21\x7f\x25\x2d\x1e\xf5\x25\xbe\x12\xa7\x7e\x2c\xd7\x68\x46\xff\xfd\x73\xe0\xd5\x30\x94\x6e\x33\x44\x41\x30\x25\xc1\x55\x84\xc3\x7e\x7d\x3f\x01\xa2\x86\x99\x0e\xee\x9e\xbc\x09\xf6\x2e\xdf\x6c\x4b\xb8\xf0\x5e\x28\x2e\xfa\xf4\x18\x1e\x9f\xcb\x95\x11\x29\x26\x13\xc4\xcd\xa6\xf2\xad\x61\x5c\xfc\x21\x1d\x38\x5b\xe5\xa6\x37\xa0\x47\x2e\x3d\x6f\x6a\x50\x38\xf8\xe1\xc8\xac\x06\x4d\x4e\xb9\x58\xf9\xce\x33\xa1\x81\x04\x91\x57\xaa\x17\xb6\x8f\x85\x2a\xcb\x73\xe1\x87\x42\x25\x00\xea\xd0\x2f\x0e\xfb\xa8\x54\xd3\x49\x4a\x4b\x7d\x96\x3c\x2d\xa6\x52\xaa\xd5\xb6\x5a\xb7\x91\x28\x0e\x02\x06\xdf\xab\xd4\xcb\xc4\x13\xca\x6a\x82\xf3\x49\x1f\x33\x65\x12\xae\x6d\xbe\xc0\x55\xa9\xb6\x2a\x0e\x12\x24\xbd\x4d\xff\x6a\xef\xdd\x3b\xc0\x15\x32\x51\x11\xcc\xc8\xf9\xa9\xde\x99\xfe\x5e\xb9\xf9\xdd\x8a\xaf\x1c\xf8\xcc\xf4\x57\xd4\x1c\x19\xf6\xf1\x52\xb1\x59\xd2\xca\x5c\x5e\x68\xaf\xfc\xb8\x0e\x38\xa4\x19\x9b\xda\x8c\xc7\xc3\xeb\xf1\x5c\x70\x73\x48\x03\x4a\xad\x30\x28\x74\x16\xa6\x9a\xf9\xee\x57\x1f\xdf\xe9\x6f\x06\xf9\x1e\x93\xde\x6d\x80\xd2\x17\x8b\xf0\xa6\x2f\xe0\xbd\x76\x94\xbe\xb0\x9e\x72\x0b\x83\xef\xe0\x5b\xca\x5b\xf3\xc8\xcb\x52\x35\x05\xb0\x1f\x95\xed\x00\x95\xe2\xf7\xcd\x90\x05\x57\x10\x85\xce\x10\x05\x57\x12\x86\x7b\x70\x7b\x15\x15\xda\x03\x17\x37\x63\xa8\x61\x84\x3d\x95\x82\xe8\xef\x97\xe2\x9e\x91\x7e\x88\xc2\x8b\xaf\x6c\x8c\x9c\x98\x4a\x50\x0c\xf8\xce\x16\x52\xbf\x31\x96\x65\x39\x83\x6d\xd3\xf5\x07\x0e\xe6\xd5\xaf\x45\x65\x90\x90\xb0\x31\x64\x45\xd5\xda\x38\xcd\x93\xce\x94\x25\xa4\xd8\x66\x65\x83\x6a\x8a\xbf\xa2\x7e\xb0\x92\x7b\xe7\xa3\x56\xb1\xc2\x2b\xc0\xda\x66\x54\x69\xc1\x62\xf6\xa7\x76\x34\x39\xfd\x9c\xf5\x36\x91\x4b\x58\xce\x32\xd6\xbf\x13\x99\x8a\xdf\x9f\x23\x4b\x54\xec\xb1\x2c\x57\x76\xc4\xdc\x49\xfa\x56\xb9\x97\xe0\x9f\x0d\xbb\xb3\xda\xe0\xe8\xab\x4c\xc3\xc6\x77\x25\x03\xe0\xef\x8d\xfd\x7c\x84\x97\xef\x17\xe0\x73\x7f\x93\xe2\x6a\xb9\x5b\x92\x24\x51\xcb\x84\x52\x28\x53\x12\x77\x85\xb9\xb6\xdc\x55\x87\x5c\x47\x58\xab\x75\xe9\x6e\x5f\xd5\xce\xb7\xb1\x57\xb0\x78\xb4\xd0\xd5\x46\x96\x7e\x10\x0f\x76\xbd\x6e\xd9\x30\x52\x23\x7d\x1d\x38\xb8\x79\x65\xd1\x1d\x08\xa3\x2a\x63\x62\xe6\x54\x01\xc1\xbd\xba\xf4\xd1\xcd\x4a\x91\x34\xad\x2e\x2c\xd5\x4c\xe6\xdb\x68\xe6\xb6\xd6\xd6\xf3\xc4\x15\x7d\x8c\x12\x31\xf3\xe3\x5c\xa4\x50\xe8\x34\x51\x70\x9e\x12\x14\x02\x38\x00\x1f\x79\xea\x88\x3a\x9a\x56\xf3\x34\xe2\x2f\x39\x26\x4e\x77\xe0\x6f\xde\xe1\xed\x47\x77\xa4\xdb\xe3\x5a\x18\xd9\x11\xb3\x9d\x1c\xb1\xf3\x2b\x85\x4f\x07\x3c\x59\x35\x1a\x4c\xcc\x1f\xf7\x0f\xeb\xdf\xa8\xcb\x54\x08\xae\x07\x8b\x69\x60\xf5\x02\xce\x4a\xe3\xef\xd4\xb8\xf7\x6e\xfb\x0a\x99\x38\x55\x2f\x32\xc9\x13\x51\x6f\x6e\xde\x33\x97\x8f\x24\xe3\x9a\x8e\xe3\x82\xfe\xd3\x57\x1d\x16\xd0\x4e\x4e\x6d\xc8\xd7\x9c\xf6\x8a\x15\x5e\x7a\x2b\xbd\xce\x6f\xaa\x70\xe5\xa0\x73\xcb\xe3\xfb\x1d\x5b\xe6\xf4\xef\xbc\x0f\x26\xa1\x32\x2e\x4f\xb3\x94\x05\x4d\x2d\x88\x37\x23\xef\x75\x37\x49\x22\xef\xab\xe4\x54\xd0\x49\x6e\x27\x12\xdd\xdb\xbb\x56\x10\x12\xeb\x21\xb1\x1b\xdc\xb7\xe0\x0e\xf2\xde\xd4\x3e\x2c\xbe\x6a\xbc\x8a\x94\x3e\x0f\xac\x12\xfb\xa6\xaf\xd2\x6e\x0f\x1d\x86\x55\x7b\x2b\x05\x29\x08\xd9\x9c\x80\xd2\x51\x4b\x7e\xa2\xfb\x1a\x71\x0b\x0b\xb3\x9b\x89\x23\x7f\xbb\x36\x8f\xbf\x84\xf5\xf3\x0a\x59\x32\x68\x68\x35\xb9\x8d\x4a\xa4\x52\xd8\x02\xe1\xed\xf3\x21\xb9\xd5\x55\x98\xab\xec\x40\x87\x5c\x9e\x77\x77\x33\xb4\x77\xc1\x1f\x42\xa7\x09\x9a\xf5\xd1\xf4\x23\xb0\x6b\xc4\x13\x69\x3d\x5d\xa6\x2c\xcb\x65\xd2\xea\x2e\xd3\x7b\x88\x1b\x3b\xfd\x6c\xdf\xf8\x2a\x15\xec\xa7\x10\x14\xbc\xc3\xb1\x86\x5e\x36\x3a\xd4\xd9\xa8\xae\x93\x54\xc5\x83\x7e\xd1\x09\x55\xd0\x34\x75\x51\x72\xb2\xad\x46\x0f\x67\x28\xf7\x21\x91\xee\xcd\xb0\xb7\xd4\x1d\xb4\x41\xf5\x77\x98\x3c\x7c\x8a\x0e\xde\x9b\x8a\xfb\xb4\xf0\x0c\xb7\xf4\x82\x35\xaf\xea\x96\x7b\xef\x3a\x5b\x0a\xc6\x17\x26\x49\x67\xbe\xf3\x3e\xc4\x84\x83\x5d\x78\xfc\xd6\x8d\x3e\xd9\x27\x0f\x20\xd1\x53\xd9\x7e\x1d\xdf\xb4\x2d\x5f\xca\x03\x51\xbd\xd8\x93\xfe\x6c\x0f\xd2\xbc\xef\x16\xdc\x1b\x8d\x0e\x4c\xea\x95\x89\x96\xc3\x35\xd0\xf9\x1a\x86\xc0\x49\x9f\xe9\x00\xe1\xe7\x46\x53\x92\x59\xd9\x17\xad\x8a\x84\xc7\x31\xbe\xd9\x77\x3c\x0f\xbe\xdc\x83\xf6\x82\xb1\xc1\xea\x1d\x71\xbd\xbc\x21\x5f\x08\x81\x2c\x73\x3c\xf0\x25\xe9\x2e\xcd\xa2\xaf\x9a\xca\xe3\xba\x91\x89\xf2\x2d\x1b\x63\xd6\xd2\x15\x4c\x90\x1b\x2a\x22\x0b\x2b\x21\xb2\x24\x5d\x2c\xf9\x24\xc5\xfa\x91\x60\xe6\x01\x2b\x1e\xab\x0c\x32\x46\x7f\x9a\xeb\xeb\x1a\x0a\x56\x5f\x13\x74\x00\x15\x27\x96\x1e\xa5\x6b\x8a\xb9\x54\x3e\xcc\xeb\xd4\x72\x2f\x06\x69\xcf\x3b\x9d\xe8\x0e\x63\xbb\xf0\xc6\x3e\x49\x10\x3a\x9a\x61\xae\xfe\x74\xf1\xe7\xfa\xb8\xcf\x2d\xba\x28\xf7\xe1\xf9\x0e\x87\x67\xcf\x5f\x93\xb9\xb7\x0e\xbb\x5e\xdc\xab\x76\x78\x77\x22\x55\xda\x3c\x6d\x9d\x88\x9c\x82\x3c\x4d\xa1\xe0\x05\x5f\x60\x6b\x65\xb8\x88\xf2\x55\xa0\x0a\x90\x81\xe8\x39\xb9\x4b\x5c\xdf\x32\x5f\xc3\x80\xab\xe3\xd4\x30\x7e\x6d\xe3\xf1\xb2\xb1\x06\xca\xad\x34\x57\x7d\xe5\x6b\x84\x66\x30\x38\xd8\xf9\xf0\xf9\xac\x1f\xdf\xd8\x58\x0f\x4e\x87\x76\x3d\x1b\xfb\x7b\xc4\xff\x2f\x00\x00\xff\xff\xc0\xdb\xe3\x62\xb2\x08\x00\x00") func configAppDevIniBytes() ([]byte, error) { return bindataRead( @@ -94,7 +94,7 @@ func configAppDevIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/app.dev.ini", size: 625, mode: os.FileMode(420), modTime: time.Unix(1601436925, 0)} + info := bindataFileInfo{name: "config/app.dev.ini", size: 2226, mode: os.FileMode(420), modTime: time.Unix(1602208473, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -119,7 +119,7 @@ func configAppIni() (*asset, error) { return a, nil } -var _configAppTestIni = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x52\x5d\x4f\xdb\x30\x14\x7d\xf7\x8f\x49\xaf\x1d\xc7\xa9\x27\xf9\x01\x04\x2a\x55\xd9\xd0\xb6\x6e\x82\xa2\x0a\xf9\xe3\x86\x7a\x6d\x62\xd7\x76\xa0\xe5\xd7\x4f\x2d\x68\xec\xed\xca\x3e\xc7\x3e\x1f\xd7\xa1\x19\x9f\x55\x49\x23\x12\xf2\xd8\x1f\xf3\x7e\xb7\x26\xce\x6c\x42\x2e\x8a\x52\x56\x51\xc6\x2b\x06\x50\x31\x10\xc4\x99\x18\x52\x51\x75\x7d\x9e\xc7\x8c\x49\x39\xf3\x94\xd0\x86\xb0\x7d\xca\x63\xc4\x74\x82\xe8\x9c\x5f\x43\x72\x2a\xbb\xf1\xda\xc8\xaf\xcb\x9f\x7e\xbf\x79\xc5\xfb\x59\x3c\x68\x20\xce\x0c\xba\xc7\x4f\x1a\x89\x09\x3b\x7f\x50\x1f\x8f\xec\xfc\x0b\x3e\x91\x5e\x1f\xe6\x6e\x87\x8a\xc2\x69\xbc\x8b\x38\xa8\x06\x08\x79\x2c\x38\x58\x1c\xca\x9a\x64\xb7\xbd\x88\x71\xee\x14\xe5\x00\x9c\xd5\x52\x50\xe2\x1d\x0e\xc5\x77\x1e\x93\xd2\xae\xf7\x83\xcf\x25\xe9\x12\x12\xc1\x43\xf4\x09\x95\x00\xb2\xc5\xa3\x62\x14\x75\x6d\x8c\x96\xa6\x16\x1d\xb4\x52\x42\x57\x77\xac\x16\x92\x71\xd1\x81\x93\xb6\x05\xa7\x81\xf3\x16\x1b\xcb\x39\xb7\xb2\x61\x1c\x6a\x2e\x05\x35\x46\x58\x41\x49\x46\x9b\xb0\xcc\x9d\xba\x58\xcc\xaf\xee\x56\x3f\xa6\xab\xed\xc5\xcd\x9f\x4b\xcc\x6f\x69\xff\x22\x1f\xbc\xb9\x5e\xbe\xcd\x66\x6f\xcb\xcd\x70\x77\x99\x3f\xd0\x0b\x3c\x2a\x03\x92\xd6\xf1\x56\xaf\xe6\xfd\x6b\xa4\x34\x5c\x7d\xa3\xdf\x1f\x6e\xb6\x87\xd1\x30\x2f\x17\xd7\x89\xe8\x77\x47\xac\x61\xc0\xe8\xb4\x69\xfe\xf9\xad\x4e\xa9\xac\xcf\xea\x6b\xdd\x82\x91\xd8\xb5\xbc\x6b\x19\x6f\x65\x23\x6b\x67\x51\x20\x65\x0c\x00\x28\x25\x2e\xf4\xda\x0f\xa7\xe6\xa8\xe0\x67\x62\x1c\xf3\xa6\xea\x8f\x7b\xbb\x0b\xa3\xab\x6c\xe8\x3f\x03\x01\x52\x12\xea\x72\x54\xa9\xf4\xf1\xe3\x78\xe9\x7b\x54\x53\xc1\x01\x3e\xff\xcf\x9b\x90\xca\xfa\x7f\x5e\x18\xce\xc0\xdf\x7a\xe7\x9d\xa2\x67\x69\xb6\x1e\x8e\xb3\xed\x95\x0d\x65\xaa\xef\x17\xf6\xf9\xd7\xea\xf6\xb4\x51\xef\xc5\xae\xc9\x98\x76\x6a\x53\x4a\xcc\x5f\x26\x93\x82\xb9\xe8\xe8\xab\x84\xe7\xcb\xca\x0e\x13\x1d\xfd\xe4\x85\xfe\x0d\x00\x00\xff\xff\xfb\x7d\x44\xe7\x8c\x02\x00\x00") +var _configAppTestIni = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x4c\x52\xd7\xae\xa3\x4a\x16\x7d\xf7\xaf\x20\x1d\x8a\x0c\x23\xf9\x81\x0c\x06\x83\xb1\xc1\x06\xae\x5a\x2d\x42\x11\x4c\xce\x98\xaf\x1f\x9d\x73\x5b\xd3\xf3\xb6\x55\xb5\xd6\xae\x15\x2a\x85\xf1\x92\x9f\xe7\x71\x81\xa7\xd3\x3f\xcd\x67\x1a\xea\x5f\xa7\x34\x2e\xba\x69\x3e\x63\x18\xfe\x85\xe1\xe4\x17\x0e\xc0\x17\x0e\xe8\x53\x1a\xf7\xdd\x38\x9f\x09\xe2\x67\x5e\x26\x38\x9e\xd3\xf8\xf7\x08\x93\xae\xab\x7e\x4f\x4b\x0f\xc7\x6f\x48\x34\x4d\x5b\x37\xa6\xe7\x29\x5d\xe4\x98\xbb\xba\x8f\x72\x28\x36\xe8\xab\xfd\x1e\x81\x53\x1a\xb7\x51\x03\xff\xd2\x4e\xfd\x08\xb3\x72\x3f\xff\x59\x52\x97\x2b\xfc\x7d\x6a\xa2\x5d\x4f\x6b\x78\xc6\xc0\xf7\x68\xf7\xb0\x3d\x53\xe0\x74\xfa\x67\x86\x6d\x02\xdb\xf9\xd7\x69\x4a\x2b\xbe\xef\xf5\xf4\x8c\x91\x00\x90\x38\xc1\xd1\xd8\xa9\x4c\x61\x3b\x97\x59\x09\xc7\x73\x94\x36\x65\x5b\x4e\xf3\x18\xcd\xdd\x78\x82\x7b\x5f\x8e\xf0\x4c\x83\x53\x05\x3f\x67\x1c\x83\x11\x11\xc7\x11\x17\x13\x74\x06\x18\x8e\x03\x19\x91\xe1\x04\xcd\xe1\x24\x9d\x81\x94\x4b\x18\x90\x46\x80\x24\x19\x48\x25\x24\x49\x26\x1c\x85\x93\x80\x20\x39\x1a\x8b\x63\x3a\xa1\xb1\xd3\x04\x93\x11\xce\x7a\x7a\xe6\x0d\x5d\xb2\xc3\x3b\x1b\x56\xbc\xf6\x16\xe0\x74\x8c\xc3\xca\x05\x65\x2c\xbb\x87\xaa\x1e\x6e\xd1\xda\xc2\xf4\x07\x6d\xc0\xcf\x39\x06\x1c\x46\xf4\x66\x14\xea\xcd\xd6\x63\x58\x27\x59\x98\x13\x68\xd5\xbe\xc4\x78\xc9\x19\xf2\x78\x8a\xfe\x75\x84\x53\x38\xc0\x31\x96\xa2\xfe\xe7\xf7\xeb\x3b\x95\x5f\x3f\xea\x89\x88\x01\x31\x07\x33\x86\xcc\x18\x9c\x64\x38\x8a\x23\xd2\x04\xd2\x10\xc3\x71\x00\x00\x86\x9d\xd2\xae\x89\xca\xf6\xbb\x39\x8c\x26\x7f\x88\xfd\x32\x15\x5f\xcd\x67\x48\xea\x6e\x49\xbf\x92\xae\xf9\x1b\x08\x38\xcd\x23\x8c\xe6\xcf\x79\x9c\x9b\xfe\xcf\xb1\x5b\x36\xf0\xcc\xd2\x24\x00\x7f\xdf\x9f\x8a\x6e\x9c\x7f\xfd\x3f\xaf\x6b\x7f\x80\xcf\xa8\x2e\xd3\x33\xf6\x23\x2d\x21\xda\x8f\x5a\x49\x49\x37\xb3\x91\x6f\x24\xb9\x17\x9a\xdf\x3f\xea\xdf\x62\x7f\x9d\x96\xb1\x3e\x17\xf3\xdc\x4f\xff\x41\xd1\x19\x4e\x73\xd4\x97\x5f\x23\xfc\xb9\xfc\x4a\x5a\x34\xea\x4b\x74\xc5\x4e\xfd\x58\xae\xd1\x0c\x7f\x7f\x2f\xbc\xea\xba\xdc\x6d\xba\xc0\xf3\x86\xc8\x3b\x32\x7f\x58\xaf\xcf\x3b\x80\xc4\x30\x93\xc1\xdd\x95\x36\xde\xda\xa5\x9b\x65\xf2\x17\xce\x0d\x85\x45\x9b\x1e\xc3\xe3\x7d\xb9\x52\x02\x41\x65\xbc\xb0\x59\x44\xbe\x35\x94\x83\x3e\xc4\x03\xa5\xab\xdc\x70\x07\xf8\xc8\xc5\xe7\x4d\x09\x0a\x1b\x3d\x6c\x89\x56\x59\x83\x91\x2f\x66\xbe\x73\x54\xa8\x43\x5e\xe0\xe4\xea\x85\xec\x63\xa1\x48\xd2\x5c\x78\x21\x5f\xf1\x80\x38\xb4\x8b\x4d\x3f\x2a\xc5\xb0\x93\xd2\x54\x9e\x25\x47\x0a\xa9\x98\xaa\xb5\xa5\xd4\x6d\x24\x08\x03\x8f\xb0\xfe\x2a\xf6\x12\xf6\x64\x25\x25\x41\xb9\xa4\x8f\xa9\x32\x09\xd7\x36\x5f\xd8\x55\xae\xb6\x2a\x0e\x12\x28\xfa\x86\x77\xb5\xf6\xce\x0f\x50\x19\x4f\x14\xc8\x66\xf8\xfc\x54\xee\x54\x7f\xaf\x9c\xfc\x6e\xc6\x57\x06\xbc\x67\xf2\x23\xa8\xb6\xc4\xf6\xf1\x52\xd1\x59\xd2\x4a\x4c\x5e\xa8\xaf\xfc\xb8\x0e\x28\x4b\x52\x16\xb1\xe9\x8f\x87\xdb\xa3\x39\xef\xe4\x2c\x09\x08\xa5\x42\x58\xbe\x33\x11\xc5\xc8\x77\xaf\x7a\x7b\x76\x7f\xd3\x71\x7f\x4c\x7a\xa7\x01\x72\x5f\x2c\xbc\x4f\x5e\x80\xbf\x76\x84\xb6\xd0\xae\x7c\x0b\x83\xcf\xe0\x99\xb2\xaf\xba\xf8\x65\xa9\x9a\x02\x58\x8f\xca\xb2\x81\x42\x70\xfb\xa6\x4b\xbc\xc3\x0b\x7c\xa7\x0b\xbc\x23\xf2\xc3\x3d\xb8\xbd\x8a\x0a\xee\x81\x83\x1a\x31\xab\x22\x98\x35\x95\xbc\xe0\xed\x97\xe2\x9e\xe1\x5e\x08\xc3\x8b\x27\x6f\x94\x94\x18\x72\x50\x0c\xe8\x4e\x17\x62\xbf\x51\xa6\x69\xda\x83\x65\x91\xf5\x9b\x1d\x8c\xab\x57\x0b\xf2\x20\x42\x7e\xa3\xf0\x8a\xa8\xd5\x71\x9a\x27\x8d\x2a\x4b\x96\xa0\x9b\x95\x0e\xaa\x29\xfe\x08\xda\x41\x8b\xce\x9d\x8b\x5a\xd9\x0c\xaf\x00\x69\x9b\x51\x21\x79\x93\xda\x9f\xea\xd1\xe4\xe4\x73\xd6\xda\x44\x2a\xd9\x72\x96\x90\xde\x4f\x24\x22\xf6\xdf\x47\x96\x28\xc8\x63\x59\xae\xf4\x88\x38\x93\xf8\xa9\x72\x37\x41\xdf\x1b\x72\xa7\xd5\xc1\xd6\x56\x89\x64\x1b\xcf\x11\x75\x80\xfa\x1b\xfd\x7e\xf3\x2f\xcf\x2b\xc0\xfb\xee\xe3\xc2\x6a\x3a\x5b\x92\x24\x51\x4b\x85\x62\x28\x11\x22\x73\x65\x73\x75\xb9\x2b\x36\xbe\x8e\x6c\xad\xd4\xa5\xb3\x7d\x14\x2b\xdf\xc6\x5e\x46\xe2\xd1\x84\x57\x0b\x9a\xda\x81\x3d\xe8\xf5\xba\x65\xc3\x48\x8c\xe4\x75\x60\xd8\xcd\x2d\x8b\xee\x80\x08\x51\xe9\x13\x35\xa7\x32\x08\xee\xd5\xa5\x8f\x6e\x66\x0a\xc5\x69\x75\xd8\x52\xc9\x24\xae\x8d\x66\x66\x6b\x2d\x2d\x4f\x1c\xc1\x43\x08\x01\x31\xde\xf6\x45\x0c\xf9\x4e\x15\x78\xfb\x29\xb2\x7c\xc0\x0e\xc0\x83\xae\x32\xc2\x8e\x24\x95\x3c\x8d\xb8\x4b\x8e\x08\xd3\x1d\x78\x9b\x7b\xb8\xfb\xd1\x1d\xe9\xf6\xb8\x16\x7a\x76\xc4\x74\x27\x45\xf4\xfc\x4a\xd9\xa7\x0d\x9e\xb4\x12\x0d\x06\xe2\x8d\xfb\x9b\xf6\x6e\xc4\x65\x2a\x78\xc7\x65\x8b\x69\xa0\xb5\x82\x9d\xe5\xc6\xdb\x89\x71\xef\x9d\xf6\x15\x52\x71\xaa\x5c\x24\x9c\xc3\xa2\xde\xd8\xdc\x67\x2e\x1d\x49\xc6\x34\x1d\xc3\x04\xfd\xbb\xaf\x3a\x24\x20\xed\x9c\xd8\xa0\xa7\xda\xed\x15\x29\xdc\xf4\x56\xba\x9d\xd7\x54\xe1\xca\xb0\xf6\x2d\x8f\xef\x77\x64\x99\xd3\x7f\xf5\x3e\xa8\x84\xc8\x98\x3c\xcd\x52\x1a\x34\x35\x2f\xdc\xf4\xbc\xd7\x9c\x24\x89\xdc\x8f\x9c\x13\x41\x27\x3a\x9d\x80\x75\xbe\x7b\xad\x58\x16\x5b\x0f\x91\xde\xd8\x7d\x0b\xee\x20\xef\x0d\xf5\x4d\xa3\xab\xca\x29\x50\xee\xf3\xc0\x2c\x91\x4f\xfa\x2a\xad\xf6\xd0\xd8\xb0\x6a\x6f\x25\x2f\x06\x21\x9d\x63\xac\x78\xd4\xa2\x97\x68\x9e\x8a\xdd\xc2\xc2\xe8\x66\xec\xc8\x7d\xc7\xe2\xd0\x17\xbf\xbe\x5f\x21\x8d\x07\x0d\xa9\x24\xb7\x51\x8e\x14\x02\x59\x58\xf6\xf6\x7e\xe3\xcc\xea\xc8\xd4\x55\xb2\x59\x1b\x5f\x9e\x77\x67\xd3\x55\xbf\xe0\x0e\xbe\x53\x79\xd5\x7c\xab\xda\x11\x58\x35\xe4\xb0\xb4\x9e\x2e\x53\x96\xe5\x12\x6e\x76\x97\xc9\x1f\xe2\xc6\x4a\xdf\xdb\x27\xbe\x8a\x05\xfd\x2e\x78\x19\xed\x50\xa4\x21\x97\x8d\x0c\x35\x3a\xaa\xeb\x24\x55\xd0\xa0\x5f\x34\x4c\xe1\x55\x55\x59\xe4\x1c\x6f\xab\xd1\x45\x29\xc2\x79\x88\xb8\x73\xd3\xad\x2d\x75\x06\x75\x50\xbc\x9d\x4d\x1e\x1e\x41\x06\xfe\xa6\xa0\x1e\xc9\x3f\xc3\x2d\xbd\x20\xcd\xab\xba\xe5\xae\x5f\x67\x4b\x41\x79\xfc\x24\x6a\xd4\x67\xde\x87\x18\xb3\x91\x0b\x87\xde\xba\xd1\xc3\xfb\xe4\x01\x44\x72\x2a\xdb\x8f\xed\x19\x96\xe9\x89\x79\x20\x28\x17\x6b\xd2\x9e\xed\x81\x1b\xf7\xdd\x64\xf7\x46\x25\x03\x83\x78\x65\x82\x69\x33\x0d\x6b\x7f\x74\x9d\x67\xc4\xf7\x74\x80\xf0\x7d\x23\x09\xd1\xa8\xac\x8b\x5a\x45\xfc\xe3\x18\x7d\xda\x8f\xe7\xc1\x93\x7a\xd0\x5e\x10\x3a\x58\xdd\x23\xae\x17\x9f\xe5\x0a\x3e\x90\x24\x86\x03\x9e\x28\xde\xc5\x59\xf0\x14\x43\x7e\x5c\x37\x3c\x91\x3f\x65\xa3\xcf\x6a\xba\x82\x89\x65\x86\x0a\xcb\xc2\x8a\x8f\x4c\x51\x13\x4a\x2e\x49\x91\x7e\xc4\xa8\x79\x40\x8a\xc7\x2a\x81\x8c\xd2\x9e\xc6\xfa\xba\x86\xbc\xd9\xd7\x18\x19\xb0\xb2\x1d\x8b\x8f\xd2\x31\x84\x5c\x2c\x1f\xc6\x75\x6a\x99\x17\x05\xd5\xe7\x9d\x4c\x34\x9b\xb2\x1c\xf6\x46\x3f\x71\x10\xda\xaa\x6e\xac\xde\x74\xf1\xe6\xfa\xb8\xcf\x2d\xbc\xc8\xf7\xe1\xe9\x87\xc3\xb3\xe7\xae\xc9\xdc\x9b\x87\x55\x2f\xce\x55\x3d\xdc\x3b\x96\xca\x6d\x9e\xb6\x76\x84\x4f\x41\x9e\xa6\x2c\xef\x06\x1f\x60\xa9\x65\xb8\x08\xd2\x95\x27\x0a\x90\x81\xe8\x39\x39\x4b\x5c\xdf\x32\x4f\x45\x80\xa3\xa1\xc4\x30\x7e\x2c\xfd\xf1\xb2\x90\x86\x95\x5a\x71\xae\xfa\xca\x53\x31\x55\xa7\x50\xb0\x73\xe1\xf3\x59\x3f\x3e\xb1\xbe\x1e\x8c\xc6\x5a\xf5\xac\xef\xfe\x88\x9e\xfe\x1b\x00\x00\xff\xff\x27\x06\x61\x4b\xce\x08\x00\x00") func configAppTestIniBytes() ([]byte, error) { return bindataRead( @@ -134,7 +134,7 @@ func configAppTestIni() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/app.test.ini", size: 652, mode: os.FileMode(420), modTime: time.Unix(1601451702, 0)} + info := bindataFileInfo{name: "config/app.test.ini", size: 2254, mode: os.FileMode(420), modTime: time.Unix(1602207728, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/app/lib/recook/order.go b/app/lib/recook/order.go index 4cfe195..e266f43 100644 --- a/app/lib/recook/order.go +++ b/app/lib/recook/order.go @@ -26,13 +26,13 @@ type ArgsHistoryList struct { } // @Title 获取会员购买历史商品 -func (o *order) GetHistoryGoods(id uint, token string, page lib.Page) (result *ArgsHistoryList, err error) { +func (o *order) GetHistoryGoods(id string, token string, page lib.Page) (result *ArgsHistoryList, err error) { result = &ArgsHistoryList{} err = RecookClient.Exec(actionHistory, url.Values{ "page": []string{strconv.Itoa(page.GetPage())}, "limit": []string{strconv.Itoa(page.GetLimit())}, }, result, map[string]string{ - "X-Recook-ID": strconv.FormatUint(uint64(id), 10), + "X-Recook-ID": id, "X-Recook-Token": token, }) if err != nil { diff --git a/app/lib/secure/decrypt.go b/app/lib/secure/decrypt.go index 6ed258f..28f26d4 100755 --- a/app/lib/secure/decrypt.go +++ b/app/lib/secure/decrypt.go @@ -1,7 +1,12 @@ package secure import ( + "crypto/rand" + "crypto/rsa" + "crypto/x509" "encoding/base64" + "encoding/pem" + "errors" jsoniter "github.com/json-iterator/go" "github.com/nanjishidu/gomini/gocrypto" "live/app/lib/config" @@ -20,7 +25,7 @@ func Decrypt(text []byte) ([]byte, error) { } originalKey, _ := base64.StdEncoding.DecodeString(np.Key) - key, err := gocrypto.RSADecrypt(originalKey, config.Config.Section("").Key("private_key").String()) + key, err := RSADecrypt(originalKey, config.Config.Section("recook").Key("private_key").String()) if err != nil { return nil, err } @@ -42,3 +47,25 @@ func Decrypt(text []byte) ([]byte, error) { return body, nil } + +func RSADecrypt(data []byte, privateStr string) ([]byte, error) { + privateKey := "-----BEGIN RSA PRIVATE KEY-----\n" + lenPrivate := len(privateStr) + for i := 0; i < lenPrivate; i += 64 { + if i+64 <= lenPrivate { + privateKey += privateStr[i:i+64] + "\n" + } else { + privateKey += privateStr[i:] + "\n" + } + } + privateKey += "-----END RSA PRIVATE KEY-----" + block, _ := pem.Decode([]byte(privateKey)) + if block == nil { + return nil, errors.New("private key error") + } + priv, err := x509.ParsePKCS1PrivateKey(block.Bytes) + if err != nil { + return nil, err + } + return rsa.DecryptPKCS1v15(rand.Reader, priv, data) +} diff --git a/app/router/router.go b/app/router/router.go index e81ee0a..a3c575f 100644 --- a/app/router/router.go +++ b/app/router/router.go @@ -7,8 +7,8 @@ import ( "live/app/controller/short" "live/app/controller/topic" "live/app/controller/user" - "live/app/controller/user/grend" - grend2 "live/app/controller/user/grend/comment" + "live/app/controller/user/trend" + grend2 "live/app/controller/user/trend/comment" "live/app/router/middleware" ) @@ -58,7 +58,7 @@ func Router(router *gin.Engine) { trendC := &user.Trend{} userR.POST("trend/list", trendC.List) // 会员动态列表 - commentC := &grend.Comment{} + commentC := &trend.Comment{} userR.POST("trend/comment/list", middleware.BothAuth(), commentC.List) // 评论列表 userR.POST("trend/comment/add", middleware.Auth(), commentC.Add) // 评论列表 // 评论点赞 @@ -66,7 +66,7 @@ func Router(router *gin.Engine) { userR.POST("trend/comment/praise/add", middleware.Auth(), commentPraiseC.Add) // 评论点赞 userR.POST("trend/comment/praise/cancel", middleware.Auth(), commentPraiseC.Cancel) // 评论取消点赞 - praiseC := &grend.Praise{} + praiseC := &trend.Praise{} userR.POST("trend/praise/add", middleware.Auth(), praiseC.Add) // 动态点赞 userR.POST("trend/praise/cancel", middleware.Auth(), praiseC.Cancel) // 动态取消点赞 } diff --git a/config/app.test.ini b/config/app.test.ini index f35f28c..b467110 100644 --- a/config/app.test.ini +++ b/config/app.test.ini @@ -30,4 +30,5 @@ oneTimeValid=1 key=c3nyGkDcot8aXKcgUZLe [recook] -url=https://testapi.reecook.cn/api/v1 \ No newline at end of file +url=https://testapi.reecook.cn/api/v1 +private_key=MIIEowIBAAKCAQEAzNWyjYe3qt4YRTDwANxDPNLAJ9TZBuHsSqSjJM5B35fABwN3gwm5Q/SCz/6kgKTqeSgCVPFYhO/zOD6G8K7EJLgx95ZIeAB9EkW+xrhFDDthUZAkA03zHJO6SkFKOciLFVi94BdCdGlNFlnaBBqA+8XvCpD1V8DFc/9cpb5icZvngu8vEkwkbYceCXKUMNxoXY/E2cFe8f2tVFR5pRkQgRLbM70jt4yBGOD8pbuk6fcnD7ghGWgzMq/845N3wISSTp/gAQg8403Fk+8AoL+FKgxUkjUOpPI2XrcpQm0EphuAX4J0Xvo3Hu6TEPZYyqULEXGT2Jukmh0NSkNO0F39xwIDAQABAoIBAQCAqRYPWhkexYQ/Kb8G+1NsiABUxJhRf2UZeZJUEw5DcKEYhq/x6hCpw5LLLOqNN4lj8qKMUlBEqCeAw52k3lGrstsH5ii836mv6YksbyBHz6CQR9anELZM0+nmrF4AL5xVGzmg4VtHncDi8itD+pXcD3bXjzfcF+SuuM6r+QsCykgTc/jw+R6GqOHvD48mUQCI0/Xw6jjAWUUh0jRX2BvLQwcccan5ZCZD3C7M8gGuRFO2vr8lFliQwyFNgwrpE+brLeMNeLHz1S6vMwfqr3r4Mq78wTihoze+3kIs5tdE0YRkJpaPLdeCsvQ8iFfD9nat7wnNHgcQBU+3B+KjOJCZAoGBAOVC8AY8q0UeTFreo44Fgda9Jg+BsR0UwTzTxzozdwSMhIfzb6oDa6tWd8VO0V6FaqK+Urxj6UP3JshAQT8hsq6Hh8tEmUx3rxpQnWZ5bdFJD291apKwTVgDzcf7mo77Ypjpko+Y4Og3weUGOnM+hTdPiToUmkZv78OPgbRR+utdAoGBAOS5c3f7gdfd60mlABPIgpHQccaTyEg3YoCQoB1oXTMk881vzC6w8xwYR0gpKGj6/vG9FeEpgYLi+ydWiNnzH8ZknPiACYZ6g18CzlCUcHUG1PZhKot1zgXQN9/WAvjWZ62Ym4FcPrEaF3+u88Pjj27vQE5MDO8O2uVRQwIGXh9zAoGAGLjGHzYNle91dlsJsffgD2LoJsXqbmNdjwybMCh6jhAE/o/+m4uw4ZH6allcdF/YpuH1FAGGFuEg2nkrT/53QSC2QPINwdQqGqFUx8cSU34YXwF/U4AVZwdJ+mWkPgTXlfuh5UAsCH5ytxqb1O+J9/PorU2pcS0C4sinyOUKNLUCgYBFJNsHVnz2KRxL8xmG4YK3WfBLO7m8OyIIA7Cjsz0ZjP43CKkNJGkaASzrX6XbtqUDp0nJ+6YvTzbluX89hAYDD790UCCRCtBUFKESMw2cEyimItGdv0s87qk1fZkAaLCHBi9cd+pr15tq+hSvD0f5HVKvWMZALpl14Y8EObCSiQKBgCiSKMsn7W5eGVR4cHO5NQ8P6V20ZOGIKvUsJUtlzRtneJERqVXZqVp9MctpLzNluQMGzTR1dEngdnOa2sYgdd8ATYy0NGiZuBDMA3h0f0aVsQublPfUG+0QH/3qryNISWN+m8DnCtkpkUG1GI5/0x9ZVVlSybIvz7H8NltIxXr/