aa
This commit is contained in:
@@ -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")
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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", "<center>测试一下</center>", 1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(result)
|
||||
}
|
||||
|
||||
93
platformapi/tibiotapi/tibiotapi.go
Normal file
93
platformapi/tibiotapi/tibiotapi.go
Normal file
@@ -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
|
||||
}
|
||||
19
platformapi/tibiotapi/tibiotapi_test.go
Normal file
19
platformapi/tibiotapi/tibiotapi_test.go
Normal file
@@ -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")
|
||||
}
|
||||
Reference in New Issue
Block a user