From 6420b5c01edeb4c99ffcf817d624585a3ac84a11 Mon Sep 17 00:00:00 2001 From: suyl <770236076@qq.com> Date: Thu, 15 Jul 2021 19:04:03 +0800 Subject: [PATCH] aa --- platformapi/jdshopapi/jxshopapi_test.go | 2 +- platformapi/jdshopapi/store_page.go | 7 +- platformapi/jdshopapi/store_page_test.go | 14 +-- platformapi/jxprintapi/jxprintapi.go | 106 ++++++++++++++++++---- platformapi/jxprintapi/jxprintapi_test.go | 59 +++++++++++- platformapi/tibiotapi/tibiotapi.go | 93 +++++++++++++++++++ platformapi/tibiotapi/tibiotapi_test.go | 19 ++++ 7 files changed, 271 insertions(+), 29 deletions(-) create mode 100644 platformapi/tibiotapi/tibiotapi.go create mode 100644 platformapi/tibiotapi/tibiotapi_test.go diff --git a/platformapi/jdshopapi/jxshopapi_test.go b/platformapi/jdshopapi/jxshopapi_test.go index 5dc4e9a0..ebf56d82 100644 --- a/platformapi/jdshopapi/jxshopapi_test.go +++ b/platformapi/jdshopapi/jxshopapi_test.go @@ -17,7 +17,7 @@ func init() { //api = New("de8157b447584885910f429011e49cb93yjq", "E1D746D42474D5F1F1A10CECE75D99F6", "efa7e1d1a22640fa990e6cf164b28608") api = New("9ad9cf5fc8b140b19a1dbbb700b47676kown", "D5E8352BE0786ED16F77B4548F62F09A", "71e1061ac2f246f6ac27efb900edba12") api.SetCookieWithStr(` -__jdu=16193999982702078345144; shshshfpa=972f47df-9252-dc1a-1d6d-40594ce0501b-1619400562; webp=1; visitkey=44137284214309276; shshshfp=4d574741223da61a369c18ce2febefe8; shshshfpb=msX4%202n384blCOGusOxGDvQ%3D%3D; pinId=WMIzMhF5BfI9awOQjAcbdQ; pin=shop_jxcs2020; unick=shop_jxcs2020; _tp=VqmxIvk3BVEJnO6UciQrRA%3D%3D; _pst=shop_jxcs2020; language=zh_CN; __jdv=95931165|direct|-|none|-|1626139457812; QRCodeKEY=CEDFF94E2F62838ABD14AAEB9E971DD4A4C72EF9F23BB22D3F8F3E7CE20A13929D2938D1818DA81A6C2501F503C01641; AESKEY=FDE0FB408DB873F3; UIDKEY=102096759651360469; TrackID=18Rmsry2JrlCR4jAjUYgkWO9CHy6lDi1ATJAzuF1NhRyAqXWBhB5QLvEeE3m9jYcCKGbU5lp2LGl2u4HEduunES9GekGjWNvo_qRm5LeM6m4; thor=5E1D1AE7BBC42FACA3496D9C54AF9F879CF4836860E75FF70BFCDEAC5A75C1C5A7A09FC0949C10573F2FD04E416362ACFDE8BCF94A259D588CC3BB15E6E69FBD1195DD82CE7836A1CB5D8ECED58FE36AB4D51D4442705232086597BC7B9C3F2DF407CBB7A7332804A0AA1DC8D765DEF02B1A3A149E8E2945E010BC7C5C15ED66371DC09459CDD121A6E5FD117593D912; ceshi3.com=000; _base_=YKH2KDFHMOZBLCUV7NSRBWQUJPBI7JIMU5R3EFJ5UDHJ5LCU7R2NILKK5UJ6GLA2RGYT464UKXAI4Z6HPCTN4UQM3WHVQ4ENFP57OC2NCIWTST4KDNCWZES6EV2TD5XDTCNE6YVKRXISVWNQHZDBO6QEKYXMXGPYGVEOCQCSG4SOQWCP5WPWO6EFS7HEHMRWVKBRVHB33TFD4AUHV3TOJD7MGBX53BNNP2E6MSSOORYGL5H2GYFRURR5ACFJ54GH7PTHFL22YL3C6ODFYFTWGV5UAWCX5C6J372TDCL6LDNEERERTGCSRD4JODICQEQYV5Q33MMFXEM7ZVQAQIWW3S2YBFMIMTF6SWAFAQ52UF5TATP7KZIQ; _BELONG_CLIENT_=WPSC4XJXWK5USS4JNZY2X7VRLR5MCBKRSVHEXABGTHDGISIQK5YOLZUXYE7IOIM7MOKO74H6CRN6WHAAR4TMDV3XZWMXZRCRT5XRNE3V356BTOB2Y7LPK66VWQK6HPTGWVXIDXDCPVE3W5WMHAIO6AT2LX2XXVNUCXR34ZWFK6HY45CORGIKOSYDYZBF27WOKTUX6BS4FZMIJWNUX6CB4JAA25ZLF7ZEKYOO4QV5HTSBXGNRM3E242MBI6V5D4C5VJDQ3EOYCOW5BMTUJZACIBHXQFAVLRF76VQY5PNJGGJNBEZHSFYYJA3YORRT7FB5AHCOIFQKF3W5RWNUX6CB4JAA26JNMO7AYWNUPZF5HTSBXGNRM3E242MBI6V5D4C5VJDQ3EOYCOW5BWZDKMOJ5BS6II53ERY6ALV3ZWPF42L4CPUHEGPYIII35KDC4FCNVCORCXFD6IVNLBEDPB2GGP4UHWNRUDOQBDIW7RZJXBA2WV5ANZOTEGUCDWYRVQS2YUTIZNZ276PRYG4N56V6YTII7MBKBC7LYHO7C555HTSBXGNRM3E466AYN67DHWVM5HQFJ4NFDO5BSPSQ5K2XUIBV2LHR26T6IVB4O6Q; _vender_new_=GI63BGTJFDBQ4KTM333PMOGFGXGN2MWJNA4WUIW4ZGGIVOLTPK5TRV2UVRGJOLSZFF5XPPV376V2IZYUUTIZYUOSJ7XLQQXULY7UZCFHNUYZEPA5K4NKJ62CC6Q756VRE47INBENIPCNYN4MUZRCB27NNIDWST32H7A66G2G3UMJWUPPXMHKRJ4I6UJ43SNLTY755O3QKSMGQHPHSOAKK5R74V6PBVCLI56OPZPR7RNFOAEYFZTP2BSCS5ZMNTWN4HIOX5NUKDT5E75AVXNKX43RBTJ6W255CTVTEQ67VYYOGAEFV3CBL4MM5MFU6T2V7DWAKVLHWY2IK72YOJU4FK5DKKOCPDRBPM4JZTBEJGDBPGRYHGA7RXGVJKSRURJWTQTY4IL3HCOMYJCJQYLZUOBZQF4BBC6T7IT4RBGRQHU63BU24NLT3B722WUBKZ7XZVGJA3N5V5QQZAJ27O3QLTP5M5YE6OWLQPEH5LY76SIQJO62K63LPG6XGQM4I32SFFJR3R5NLQZPFLJTI6K74ICYFOP5LP54YOAU3MF223TH7RBNDQKQZAJGFHE3CEO3PDGTDMTFA3LOKDRYE3RCNZ3IIQEQZ3EKQ7Y7EZPHVW2EPN7W4FOKDTFUR4TGVDUVABISWKHYSIKJVXRHIB7RENQODU; b-sec=S2JWP6CAFP7K44GG6BEY2DLMRHSHR25YQUFIV6WL722Y5OZSYAV5X3VSN5YZIAYR3XC6MEXK22XK6; __jda=191429163.16193999982702078345144.1619399998.1625802197.1626139458.19; __jdc=191429163; __jdb=191429163.5.16193999982702078345144|19.1626139458; 3AB9D23F7A4B3C9B=CKENC5MAUU744ZQDKVRY2L7UIJ23PJRDYJ6HF3ZMQHC5FFD46FMUQXRINFCOC4SKHL5MU3PPNPP4C4AX5ZYBXJ7LZ4 +shshshfpa=b02d5da7-4399-dacb-d2af-dc8d6c460307-1606980337; shshshfpb=xasBIJG4GQtMArMLGnT8nqQ%3D%3D; pinId=WMIzMhF5BfI9awOQjAcbdQ; pin=shop_jxcs2020; unick=shop_jxcs2020; _tp=VqmxIvk3BVEJnO6UciQrRA%3D%3D; _pst=shop_jxcs2020; unpl=V2_ZzNtbUsCQRZ2X0EAehAPAmIGFl4RXxcccglBUiwRWFU0VxVaclRCFnUUR1JnGFoUZgoZWUpcQxdFCEdkeBFUAWECE15LZ3Mldgh2VUsZWwRgCxVYR1ZBEnMPRVF5H18EZwIRbXJQQxxFOB0BFR4JBW4GE1tFBEMQJwl2V3MRWAJgABdcclZzF3QJRVJyEVwFbjNZM0MaQxJ0D05TfhxdB2AFFV5HVUUWdAhHV0sYbAY%3d; __jdv=76161171|kong|t_299570028_|tuiguang|8d322f6e08b64452b9e86067f95abe66|1625619552512; user-key=3a88291d-9e3e-42b4-bf51-cea63655518b; shshshfp=804caa46ddc472b1b54a25f9b53b7ade; areaId=22; ipLoc-djd=22-1930-50946-0; language=zh_CN; mba_muid=1606964403676243720102; ceshi3.com=000; netParam=outer; wlfstk_smdl=c7k0jhmhzsrj9xfk5cgt5qtx7txs3vsf; csrf_token=eb6ef1c8-fc03-4ec4-af6e-dcdbf743c3bc; xz_auth="BPGdX7n5305znOqSFjCWybGNDG68uQhtfB74PY3vsZTQdWtHr/Y5JO0ChowJM8FPdQz2Rr6ZFDAlvF8GaUO1Blc05Ud1wGqAhEVUWVUr/lkkJrGaFClhAzsU48lxUPgGG6aQZb5/k3bJXreOm7enHHeDFoC24gqy8meQUdOtyRI="; __jdu=1606964403676243720102; _base_=YKH2KDFHMOZBLCUV7NSRBWQUJPBI7JIMU5R3EFJ5UDHJ5LCU7R2NILKK5UJ6GLA2RGYT464UKXAI4Z6HPCTN4UQM3WHVQ4ENFP57OC2NCIWTST4KDNCWZES6EV2TD5XDTCNE6YVKRXISVWNQHZDBO6QEKYXMXGPYGVEOCQCSG4SOQWCP5WPWO6EFS7HEHMRWVKBRVHB33TFD4AUHV3TOJD7MGBX53BNNP2E6MSSOORYGL5H2GYFRURR5ACFJ54GH7PTHFL22YL3C6ODFYFTWGV5UAWCX5C6J372TDCL6LDNEERERTGCQTU6Y42G5QWTLXRG3QRHJXAUQ3VQAQIWW3S2YBFMIMTF6SWAFAQ52UF5TATP7KZIQ; _BELONG_CLIENT_=WPSC4XJXWK5USS4JNZY2X7VRLR5MCBKRSVHEXABGTHDGISIQK5YOLZUXYE7IOIM7MOKO74H6CRN6WHAAR4TMDV3XZWMXZRCRT5XRNE3V356BTOB2Y7LPK66VWQK6HPTGWVXIDXDCPVE3W5WMHAIO6AT2LX2XXVNUCXR34ZWFK6HY45CORGIKOSYDYZBF27WOKTUX6BS4FZMIJWNUX6CB4JAA25ZLF7ZEKYOO4QV5HTSBXGNRM3E242MBI6V5D4C5VJDQ3EOYCOW5BMTUJZACIBHXQFAVLRF76VQY5PNJGGJNBEZHSFYYJA3YORRT7FB5AHCOIFQKF3W5RWNUX6CB4JAA26JNMO7AYWNUPZF5HTSBXGNRM3E242MBI6V5D4C5VJDQ3EOYCOW5BWZDKMOJ5BS6II53ERY6ALV3ZWPF42L4CPUHEGPYIII35KDC4FCNVCORCXFD6IVNLBEDPB2GGP4UHWNRUDOQBDIW7RZJXBA2WV5ANZOTEGUCDWYRVQS2YUTIZNZ276PRYG4N56V6YTII7MBKBC7LYHO7C555HTSBXGNRM3E466AYN67DHWVM5HQFJ4NFDO5BSDG6OV75QOAOY5BHQ6E342AYZ2Q; _vender_new_=GI63BGTJFDBQ4KTM333PMOGFGXGN2MWJNA4WUIW4ZGGIVOLTPK5TRV2UVRGJOLSZFF5XPPV376V2IZYUUTIZYUOSJ7XLQQXULY7UZCFHNUYZEPA5K4NKJ62CC6Q756VRE47INBENIPCNYN4MUZRCB27NNIDWST32H7A66G2G3UMJWUPPXMHKRJ4I6UJ43SNLTY755O3QKSMGQHPHSOAKK5R74V6PBVCLI56OPZPR7RNFOAEYFZTP2BSCS5ZMNTWN4HIOX5NUKDT5E75AVXNKX43RBTJ6W255CTVTEQ67VYYOGAEFV3CBL4MM5MFU6T2V7DWAKVLHWY2IK72YOJU4FK5DKKMR6JNJKP4AXPN6SSCKNZGZ7GM7RXGVJKSRURJWTEPSLKKT7AF33PUUQSTOJWPZTF4BBC6T7IT4RBGRQHU63BU24NLT3B722WUBKZ7XZVGJA3N5V5QQZAJ27O3QLTP5M5YE6OWLQPEH5LY76SIQJO62K63LPG6XGQM4I32SFFJR3R5NLQZPFLJTI6K74ICYFOP5LP54YOAU3MF223TH7RBNDQKQZAJGFHE3CEO3PDGTDMTFA3LOKDRYE3RCNZ3IIQEQZ3EKQ7Y7EZPHVW2EPN7W4FOKDTFUR4TGVDUV3557VDLCG4A3FKCPENAJB3K5HU; b-sec=S2JWP6CAFP7K44GG6BEY2DLMRHSHR25YQUFIV6WL722Y5OZSYAVRHKIUTSHLDKLYZZZR3FBLTOCDW; chat.jd.com=20170206; QRCodeKEY=B4C2F4F3EC276EF39CCF33EE6027445F7D9AB8909578F6B0507DC53E8C5FE2339D2938D1818DA81A6C2501F503C01641; AESKEY=671FEAB38F01DA4F; UIDKEY=100739238240908193; TrackID=1-1i81bh7lhOFrvzWZMkhenQJrzWPChbcpCIn7dlobK3nWfgt6TkFY4rkCYgg9iDLGk6yLRlBwI7MQLgkseZjxBRZbWprsxQrPN-dWfahYrjo2_i8glZK404CwjTJFU7v; thor=5E1D1AE7BBC42FACA3496D9C54AF9F879CF4836860E75FF70BFCDEAC5A75C1C52CD6F70DEF0E7139F91EF79341116BAB3DB68607851488AE79A102665AF2837BA9600C68C9D382AEDA804220F2211419A5179BCBBAC1D75C430B157722C3955D2FE1FE11A1741B248112B5286D342610E61183CDB4FF2BBA87CEBF9A4D2359AFB8D6F3135CAF66E508D897CB00DDAD19; __jda=122270672.1606964403676243720102.1606964404.1626311036.1626314254.148; __jdb=122270672.4.1606964403676243720102|148.1626314254; __jdc=122270672; 3AB9D23F7A4B3C9B=3LXEVQM6COV5NINMQN77BN64JE2WJ76EIPRTIYTDM7GIU7BHDAMFOVQT7WP33PVNBO2DUGASISKUTTJX65DM4ZME3Y `) // api.SetCookie("thor", "5E1D1AE7BBC42FACA3496D9C54AF9F879CF4836860E75FF70BFCDEAC5A75C1C5E43030CF54E4A3A8F5E760492948E69B763D115FE234A59948BA538A4F7E18F38B80F818E28EAE71F1CF5BFE2D0DC456D56E8BEAEF10D398C709D9A4EB46923C7E63867435BD42996F1570A816FD1B0B247CD9756A1184DD61317D28BBF77F828691684AD6E60801B2BB38F9DE086D73") diff --git a/platformapi/jdshopapi/store_page.go b/platformapi/jdshopapi/store_page.go index eea1dbeb..b6dca116 100644 --- a/platformapi/jdshopapi/store_page.go +++ b/platformapi/jdshopapi/store_page.go @@ -552,7 +552,12 @@ func (a *API) OrderDetail(orderId string) (orderDetailResult *OrderDetailResult, } if len(expectedDeliveredTime) > 0 { expectedDeliveredTime := expectedDeliveredTime[1][:strings.LastIndex(expectedDeliveredTime[1], "-")] + ":00" - orderDetailResult.ExpectedDeliveredTime = utils.Time2Str(utils.Str2Time(expectedDeliveredTime).Add(50 * time.Minute)) + if expectedDeliveredTime2, err := utils.TryStr2Time(expectedDeliveredTime); err == nil { + expectedDeliveredTime = utils.Time2Str(expectedDeliveredTime2) + orderDetailResult.ExpectedDeliveredTime = utils.Time2Str(utils.Str2Time(expectedDeliveredTime).Add(50 * time.Minute)) + } else { + orderDetailResult.ExpectedDeliveredTime = "" + } } else { expectedDeliveredTime2 := regexpOrderDetailDay2.FindStringSubmatch(body) if len(expectedDeliveredTime2) > 0 { diff --git a/platformapi/jdshopapi/store_page_test.go b/platformapi/jdshopapi/store_page_test.go index fa521bf2..21a25b8c 100644 --- a/platformapi/jdshopapi/store_page_test.go +++ b/platformapi/jdshopapi/store_page_test.go @@ -73,7 +73,7 @@ func TestAllOrders(t *testing.T) { } func TestOrderDetail(t *testing.T) { - result, err := api.OrderDetail("213358191041") + result, err := api.OrderDetail("213676047946") if err != nil { t.Fatal(err) } @@ -129,11 +129,13 @@ func PKCS5UnPadding(decrypted []byte) []byte { } func TestShopDetail(t *testing.T) { - result, err := api.ShopDetail(1000069719) - if err != nil { - t.Fatal(err) - } - t.Log(utils.Format4Output(result, false)) + //result, err := api.ShopDetail(1000069719) + //if err != nil { + // t.Fatal(err) + //} + //t.Log(utils.Format4Output(result, false)) + retVal, err := utils.TryStr2Time("2021-07-15 :00") + fmt.Println(retVal, err) } func TestSubmitBasic(t *testing.T) { diff --git a/platformapi/jxprintapi/jxprintapi.go b/platformapi/jxprintapi/jxprintapi.go index 86cb8411..5072d274 100644 --- a/platformapi/jxprintapi/jxprintapi.go +++ b/platformapi/jxprintapi/jxprintapi.go @@ -2,6 +2,7 @@ package jxprintapi import ( "crypto/md5" + "encoding/json" "fmt" "git.rosy.net.cn/baseapi" "git.rosy.net.cn/baseapi/platformapi" @@ -83,7 +84,7 @@ func (a *API) signParams(apiParams map[string]interface{}) string { return fmt.Sprintf("%x", md5.Sum([]byte(a.appID+a.appKey+apiParams["timestamp"].(string)))) } -func (a *API) AccessAPI(apiName string, apiParams map[string]interface{}) (retVal interface{}, err error) { +func (a *API) AccessAPI(apiName string, apiParams map[string]interface{}) (retVal map[string]interface{}, err error) { params := utils.MergeMaps(map[string]interface{}{ "app_id": a.appID, "method": apiName, @@ -96,6 +97,7 @@ func (a *API) AccessAPI(apiName string, apiParams map[string]interface{}) (retVa params[signKey] = sign fullURL := prodURL request, _ := http.NewRequest(http.MethodPost, fullURL, strings.NewReader(utils.Map2URLValues(params).Encode())) + request.Header.Set("charset", "UTF-8") request.Header.Set("Content-Type", "application/x-www-form-urlencoded") return request }, @@ -104,31 +106,97 @@ func (a *API) AccessAPI(apiName string, apiParams map[string]interface{}) (retVa if jsonResult1 == nil { return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil") } - code := int(utils.Interface2Int64WithDefault(jsonResult1["ret"], ResponseCodeSuccess)) + code := int(utils.Interface2Int64WithDefault(jsonResult1["code"], ResponseCodeSuccess)) if code == ResponseCodeSuccess { - retVal = jsonResult1["data"] + retVal = jsonResult1 return platformapi.ErrLevelSuccess, nil } - newErr := utils.NewErrorIntCode(jsonResult1["msg"].(string), code) - if _, ok := exceedLimitCodes[code]; ok { - return platformapi.ErrLevelExceedLimit, newErr - } else if _, ok := canRetryCodes[code]; ok { - return platformapi.ErrLevelRecoverableErr, newErr - } else { - baseapi.SugarLogger.Debugf("feie AccessAPI failed, jsonResult1:%s", utils.Format4Output(jsonResult1, true)) - return platformapi.ErrLevelCodeIsNotOK, newErr - } + newErr := utils.NewErrorIntCode(jsonResult1["desc"].(string), code) + baseapi.SugarLogger.Debugf("jxprint AccessAPI failed, jsonResult1:%s", utils.Format4Output(jsonResult1, true)) + return platformapi.ErrLevelCodeIsNotOK, newErr }) return retVal, err } -func (a *API) UpdatePrinter(print_no, name, sim, sound string, volume int) (err error) { - _, err = a.AccessAPI("UpdatePrinter", map[string]interface{}{ - "print_no": print_no, - "name": name, - "sim": sim, - "sound": sound, - "volume": volume, +type AddPrinterParam struct { + PrintNo string `json:"print_no"` //打印机编号 + Name string `json:"name"` //打印机备注名 + SIM string `json:"sim"` //sim卡号 +} + +func (a *API) AddPrinter(addPrinterParams []*AddPrinterParam) (err error) { + data, _ := json.Marshal(addPrinterParams) + _, err = a.AccessAPI("AddPrinter", map[string]interface{}{ + "prints": string(data), }) return err } + +func (a *API) DelPrinter(printNos []string) (err error) { + data, _ := json.Marshal(printNos) + _, err = a.AccessAPI("DelPrinter", map[string]interface{}{ + "print_nos": string(data), + }) + return err +} + +type UpdatePrinterParam struct { + PrintNo string `json:"print_no"` //打印机编号 + Name string `json:"name,omitempty"` //打印机备注名 + //SIM string `json:"sim,omitempty"` //sim卡号 + Sound string `json:"sound,omitempty"` + Volume int `json:"volume,omitempty"` +} + +func (a *API) UpdatePrinter(updatePrinterParam *UpdatePrinterParam) (err error) { + _, err = a.AccessAPI("UpdatePrinter", utils.Struct2FlatMap(updatePrinterParam)) + return err +} + +func (a *API) DelPrinterSeq(printNo string) (err error) { + _, err = a.AccessAPI("DelPrinterSeq", map[string]interface{}{ + "print_no": printNo, + }) + return err +} + +type GetPrintMsgResult struct { + MsgID string `json:"msg_id"` + PrintNo string `json:"print_no"` + OrderNo int `json:"order_no"` + Content string `json:"content"` + Status int `json:"status"` + Comment string `json:"comment"` +} + +func (a *API) GetPrintMsg(msgID string) (getPrintMsgResult *GetPrintMsgResult, err error) { + result, err := a.AccessAPI("GetPrintMsg", map[string]interface{}{ + "msg_id": msgID, + }) + if err == nil { + utils.Map2StructByJson(result["data"].(map[string]interface{}), &getPrintMsgResult, false) + } + return getPrintMsgResult, err +} + +func (a *API) GetPrinterStatus(printNo string) (status int64, err error) { + result, err := a.AccessAPI("GetPrinterStatus", map[string]interface{}{ + "print_no": printNo, + }) + if err == nil { + status = utils.Interface2Int64WithDefault(result["data"], 0) + } + return status, err +} + +func (a *API) DoPrint(printNo, content string, orderNo int) (msgID string, err error) { + result, err := a.AccessAPI("DoPrint", map[string]interface{}{ + "print_no": printNo, + "content": content, + "order_no": orderNo, + }) + if err == nil { + msgID = result["data"].(string) + } + return msgID, err +} diff --git a/platformapi/jxprintapi/jxprintapi_test.go b/platformapi/jxprintapi/jxprintapi_test.go index bf2c59c9..1a0a5b89 100644 --- a/platformapi/jxprintapi/jxprintapi_test.go +++ b/platformapi/jxprintapi/jxprintapi_test.go @@ -19,10 +19,65 @@ func init() { api = New("1000", "rfBd56ti2SMtYvSg") } -func TestUpdatePrinter(t *testing.T) { - err := api.UpdatePrinter("20210615000011", "", "", "", 0) +func TestAddPrinter(t *testing.T) { + err := api.AddPrinter([]*AddPrinterParam{ + &AddPrinterParam{ + PrintNo: "20210615000012", + Name: "test1", + }, + }) if err != nil { t.Fatalf("PrintMsg return error:%v", err) } //baseapi.SugarLogger.Debug(result) } + +func TestDelPrinter(t *testing.T) { + err := api.DelPrinter([]string{"20210615000012"}) + if err != nil { + t.Fatalf("PrintMsg return error:%v", err) + } + //baseapi.SugarLogger.Debug(result) +} + +func TestUpdatePrinter(t *testing.T) { + err := api.UpdatePrinter(&UpdatePrinterParam{ + PrintNo: "20210615000011", + }) + if err != nil { + t.Fatalf("PrintMsg return error:%v", err) + } + //baseapi.SugarLogger.Debug(result) +} + +func TestDelPrinterSeq(t *testing.T) { + err := api.DelPrinterSeq("20210615000012") + if err != nil { + t.Fatal(err) + } + //t.Log(utils.Format4Output(result, false)) +} + +func TestGetPrintMsg(t *testing.T) { + result, err := api.GetPrintMsg("20210715104649_F3Z2JXyj") + if err != nil { + t.Fatal(err) + } + t.Log(result) +} + +func TestGetPrinterStatus(t *testing.T) { + result, err := api.GetPrinterStatus("20210615000010") + if err != nil { + t.Fatal(err) + } + t.Log(result) +} + +func TestDoPrint(t *testing.T) { + result, err := api.DoPrint("20210615000010", "
测试一下
", 1) + if err != nil { + t.Fatal(err) + } + t.Log(result) +} diff --git a/platformapi/tibiotapi/tibiotapi.go b/platformapi/tibiotapi/tibiotapi.go new file mode 100644 index 00000000..5c2b456b --- /dev/null +++ b/platformapi/tibiotapi/tibiotapi.go @@ -0,0 +1,93 @@ +package tibiotapi + +import ( + "crypto/md5" + "fmt" + "git.rosy.net.cn/baseapi" + "git.rosy.net.cn/baseapi/platformapi" + "git.rosy.net.cn/baseapi/utils" + "net/http" + "strings" + "time" +) + +const ( + prodURL = "https://api.tibiot.cn/api" + signKey = "password" +) + +const ( + // ResponseCodeSuccess 操作成功 + ResponseCodeSuccess = 0 +) + +var ( + exceedLimitCodes = map[int]int{} + + canRetryCodes = map[int]int{} +) + +type API struct { + platformapi.APICookie + + appID string + appKey string + client *http.Client + config *platformapi.APIConfig +} + +func New(appID, appKey string, config ...*platformapi.APIConfig) *API { + curConfig := platformapi.DefAPIConfig + if len(config) > 0 { + curConfig = *config[0] + } + return &API{ + appID: appID, + appKey: appKey, + client: &http.Client{Timeout: curConfig.ClientTimeout}, + config: &curConfig, + } +} + +func (a *API) signParams(apiParams map[string]interface{}) string { + return fmt.Sprintf("%x", md5.Sum([]byte(a.appID+a.appKey+apiParams["timestamp"].(string)))) +} + +func (a *API) AccessAPI(apiName string, apiParams map[string]interface{}) (retVal interface{}, err error) { + params := utils.MergeMaps(map[string]interface{}{ + "app_id": a.appID, + "method": apiName, + }, apiParams) + + err = platformapi.AccessPlatformAPIWithRetry(a.client, + func() *http.Request { + params["timestamp"] = utils.Int64ToStr(time.Now().Unix()) + sign := a.signParams(params) + params[signKey] = sign + fullURL := prodURL + request, _ := http.NewRequest(http.MethodPost, fullURL, strings.NewReader(utils.Map2URLValues(params).Encode())) + request.Header.Set("Content-Type", "application/x-www-form-urlencoded") + return request + }, + a.config, + func(response *http.Response, bodyStr string, jsonResult1 map[string]interface{}) (errLevel string, err error) { + if jsonResult1 == nil { + return platformapi.ErrLevelRecoverableErr, fmt.Errorf("mapData is nil") + } + code := int(utils.Interface2Int64WithDefault(jsonResult1["ret"], ResponseCodeSuccess)) + if code == ResponseCodeSuccess { + retVal = jsonResult1["data"] + return platformapi.ErrLevelSuccess, nil + } + newErr := utils.NewErrorIntCode(jsonResult1["msg"].(string), code) + if _, ok := exceedLimitCodes[code]; ok { + return platformapi.ErrLevelExceedLimit, newErr + } else if _, ok := canRetryCodes[code]; ok { + return platformapi.ErrLevelRecoverableErr, newErr + } else { + baseapi.SugarLogger.Debugf("feie AccessAPI failed, jsonResult1:%s", utils.Format4Output(jsonResult1, true)) + return platformapi.ErrLevelCodeIsNotOK, newErr + } + }) + return retVal, err +} diff --git a/platformapi/tibiotapi/tibiotapi_test.go b/platformapi/tibiotapi/tibiotapi_test.go new file mode 100644 index 00000000..f37c02da --- /dev/null +++ b/platformapi/tibiotapi/tibiotapi_test.go @@ -0,0 +1,19 @@ +package tibiotapi + +import ( + "git.rosy.net.cn/baseapi" + "go.uber.org/zap" +) + +var ( + api *API + sugarLogger *zap.SugaredLogger +) + +func init() { + logger, _ := zap.NewDevelopment() + sugarLogger = logger.Sugar() + baseapi.Init(sugarLogger) + + api = New("1000", "rfBd56ti2SMtYvSg") +}