Commit a1489e62 authored by 姜登's avatar 姜登

iitApi正式服

parents
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAkh7eUVgeY17P4Q4p6ORhHMwQjIXf7Xvmol1Hm969lRv4LPGb
AOpcZ7MjAm41th2eaajOyMkuKOcPymzGFusZlteLq34iUrYwPUGt55GvMMs2uuCb
iDYOFXt6hXMMa06PyTRukQbhCyzld/Ndhm9YvE+Y7X+C6f/mnzAGbfIftV/nEjgZ
3l1CHv96gACzO8z3ALe6MgHBxBF5LyS2b+++v6vd9V+kCPFI8x0AE9GZz1+QOAvO
w+uSd6j6NcLuH8aWaAyXuT1jubUQZtLnp3TqaSS2Md0UOJCQUfdanDWdempzo+E9
f5tWC8xEjthLsS9DZruzyF1FoSmxJkeOScmcZQIDAQABAoIBAARdk7rObSn+3SsW
Jz5kBFq95gisv0HzH7LeIpOPlg5sZX/CQCVI2zXl7jfWXxhvzhnOB0+MYyqprJkZ
otlwcLVG/09CV3gtJUfPPIjcm2VTzPDMYRkytD0EEWcHRum10SnrvRnsILEayEhL
JxIrJXWK00DVPG4NTTCYWLjUMQpUJWNsXVs/t8bX6c1utViJo3cR/5obQWrNXNYM
qHUfeUHInthHQOhv26dSSAzbDNg2m8tVYyDQc8bNd7MPyMLQvlS9YeFezviP6iV6
oMjI5cLJHQLYBTeiGz4tMSo3r4He9Ib3+yfP5KRqi6ZgZ4gtp0Of3CZCckB5HyTP
GDuvXIkCgYEA7Ct9osme4NWljtczzX6vLdwlNXmLws0t4W77MaN3ZCKxkAR7Ti1j
pBSbgsuFgto1jeXmK8VyLpdu0Aa/vkgBjSxhfhNW6AO+rJGH4mAavuygBTvrlOdv
uWIrbe2tCKa3e86weoyp8YEwCpghFKzVeluSGHyOo47jgyTCwQ0rB8cCgYEAnmPA
5obf+nJyJ6BdqW7NPvuWnUl5+wjUeTum9+Iu00H+quoUjmFWMi6H2OrNC0lvkJRp
TXXE4kYL0K818HvKHbJsQt2CBqUceZ3BcRcEl0MjLntuOH+AK1yFJYCpTcJhVKwR
46mWmImrpVDsT0JuQSmcK1y56I3HqwICtEsN8nMCgYEAsydOuBWAe4g2fgQMHP/T
/dL5OvaIKe8htdhNn1skr4aN8fUkYKqX4plrWq3vCtNjOtBCacPvGR7xBceI3tya
qLAZCN282GY214vSa8yBnYG85huNWzixjQzGay6YS27E05t4To60QCrC+dZridaO
XrJmQkMCpVo4hnx1bKMDmHMCgYATyA+aevPUOqDpNA0ekRkPKarI4Blc8eBfd8TF
prkEZ3Sf8fY5RgzW3ZrXy5NqOnS1kOOJ6hB51he5q3hIHZ3DkboVq8aGf+6Lfdlf
/2jyX08wiffdFId0Yuy6H1SFwqYXRhpB3bdSO7d1QSMSTxCoEMNRYxZQ5gwu3mRq
Egme4wKBgQDM4HREYYu7w7pAJqMnuJQB1BXkJxzg5+ywtNir3ywl8GCn7RPe4VVF
IrGtRXGDPuuxlhcxIaKICs5Cz1XRsqHl8K+coeAKzPXbIh4r/XUigOmUGETmE3vH
g0EYqpMDU40ezdkG3CaxtDlBiyC2gx/lj8rK8rYFcVkzFg1V75HFtQ==
-----END RSA PRIVATE KEY-----
\ No newline at end of file
-----BEGIN CERTIFICATE-----
MIIFyTCCBLGgAwIBAgIQUE20dduC0RvXQL5iw5XxEjANBgkqhkiG9w0BAQsFADBE
MQswCQYDVQQGEwJDTjEaMBgGA1UECgwRV29TaWduIENBIExpbWl0ZWQxGTAXBgNV
BAMMEFdvU2lnbiBPViBTU0wgQ0EwHhcNMTcwMzIxMTE0NzM4WhcNMTkwMzIxMTE0
NzM4WjB6MQswCQYDVQQGEwJDTjEtMCsGA1UECgwk5p2t5bee54WO6aW8572R57uc
5oqA5pyv5pyJ6ZmQ5YWs5Y+4MRIwEAYDVQQHDAnmna3lt57luIIxEjAQBgNVBAgM
Cea1meaxn+ecgTEUMBIGA1UEAwwLKi41MWdqai5jb20wggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQCSHt5RWB5jXs/hDino5GEczBCMhd/te+aiXUeb3r2V
G/gs8ZsA6lxnsyMCbjW2HZ5pqM7IyS4o5w/KbMYW6xmW14urfiJStjA9Qa3nka8w
yza64JuINg4Ve3qFcwxrTo/JNG6RBuELLOV3812Gb1i8T5jtf4Lp/+afMAZt8h+1
X+cSOBneXUIe/3qAALM7zPcAt7oyAcHEEXkvJLZv776/q931X6QI8UjzHQAT0ZnP
X5A4C87D65J3qPo1wu4fxpZoDJe5PWO5tRBm0uendOppJLYx3RQ4kJBR91qcNZ16
anOj4T1/m1YLzESO2EuxL0Nmu7PIXUWhKbEmR45JyZxlAgMBAAGjggJ/MIICezAM
BgNVHRMBAf8EAjAAMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly93b3NpZ24uY3Js
LmNlcnR1bS5wbC93b3NpZ24tb3ZjYS5jcmwwdwYIKwYBBQUHAQEEazBpMC4GCCsG
AQUFBzABhiJodHRwOi8vd29zaWduLW92Y2Eub2NzcC1jZXJ0dW0uY29tMDcGCCsG
AQUFBzAChitodHRwOi8vcmVwb3NpdG9yeS5jZXJ0dW0ucGwvd29zaWduLW92Y2Eu
Y2VyMB8GA1UdIwQYMBaAFKETVNxWcywngsrIhO/uvwD9X6tWMB0GA1UdDgQWBBQx
Tqk5iXll02OPy0mts+ag5oVvXTAOBgNVHQ8BAf8EBAMCBaAwggEgBgNVHSAEggEX
MIIBEzAIBgZngQwBAgIwggEFBgwqhGgBhvZ3AgUBDAIwgfQwgfEGCCsGAQUFBwIC
MIHkMB8WGEFzc2VjbyBEYXRhIFN5c3RlbXMgUy5BLjADAgEBGoHAVXNhZ2Ugb2Yg
dGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdHJpY3RseSBzdWJqZWN0ZWQgdG8gdGhlIENF
UlRVTSBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudCAoQ1BTKSBpbmNv
cnBvcmF0ZWQgYnkgcmVmZXJlbmNlIGhlcmVpbiBhbmQgaW4gdGhlIHJlcG9zaXRv
cnkgYXQgaHR0cHM6Ly93d3cuY2VydHVtLnBsL3JlcG9zaXRvcnkuMB0GA1UdJQQW
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAhBgNVHREEGjAYggsqLjUxZ2pqLmNvbYIJ
NTFnamouY29tMA0GCSqGSIb3DQEBCwUAA4IBAQARCLMq8pjDahV05zThImTR9i4j
vfaYxfdQLJP5DyCbiCNi8Lu67XeOXkEaW1UqQ0/qtH39PHppBwobwdP/Au9rwQhU
VLbVP1G32Sg4u6Hs4PvQCnuVvmcsAoDEDXQ6cjLX/jDh4AYAuCCOja3PhVJWWpI4
uQlGEsupuM8mAkqjc4Cy+v7uIRUCjDdcHUR3x3oC5GgKUGEwj0BbW6xEqiHPoYZz
tfE0DQoLAsxvIQBx437XFzxgjp6soq2mtCh38L3rgUnKO8acfZA1h0FgFsK4rQZP
lTUZD1iP6a+ofU1usVlGoLfqhwc7mS7D5yo9mcdN8HxUQuPtjoRQ0sM1asql
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEtTCCA52gAwIBAgIRAO8FGnQaHZQJ/KXkZA+NPJswDQYJKoZIhvcNAQELBQAw
fjELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu
QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEiMCAG
A1UEAxMZQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQTAeFw0xNjExMDkwODMzNDRa
Fw0yNjExMDkwODMzNDRaMEQxCzAJBgNVBAYTAkNOMRowGAYDVQQKDBFXb1NpZ24g
Q0EgTGltaXRlZDEZMBcGA1UEAwwQV29TaWduIE9WIFNTTCBDQTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAKRzU7QtbSdi6uUiqewzx81eEdrg0RROHTs1
eXndSwxxUAVDC+FPYvpgWc+bYMVjUJQEIP+SNzsIGvB/YoabRoN7cLBDzPTgYnW8
Pl/wYWXuGNyr1E7bV9Fec37HlvhE39Ntwp31gjMFwTOZ7Zw0QzS7w9PjO4A4anwb
maBJgrRa3GFSgoJ+WIr5brQ6hEgm7rKRNPx6L9Sj2aSl/EWRPPv73j5xeWGcgOPp
U+8eZmqpX+XfCl34o5OQJWi/F7bACetVhvFtWGuLNcZ0eYwU13jOEx3NNsILzIYP
oWJztxd3aPkQOX6cNbJGTvLRcfmGDM0ASq3/BsCrR0o/ruCcd6cCAwEAAaOCAWYw
ggFiMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFKETVNxWcywngsrIhO/u
vwD9X6tWMB8GA1UdIwQYMBaAFAh2zcsH/yT2xc3tu5C84oQ3RnX3MA4GA1UdDwEB
/wQEAwIBBjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0fBC4w
LDAqoCigJoYkaHR0cDovL3N1YmNhLmNybC5jZXJ0dW0ucGwvY3RuY2EuY3JsMGsG
CCsGAQUFBwEBBF8wXTAoBggrBgEFBQcwAYYcaHR0cDovL3N1YmNhLm9jc3AtY2Vy
dHVtLmNvbTAxBggrBgEFBQcwAoYlaHR0cDovL3JlcG9zaXRvcnkuY2VydHVtLnBs
L2N0bmNhLmNlcjA5BgNVHSAEMjAwMC4GBFUdIAAwJjAkBggrBgEFBQcCARYYaHR0
cDovL3d3dy5jZXJ0dW0ucGwvQ1BTMA0GCSqGSIb3DQEBCwUAA4IBAQCLBeq0MMgd
qULSuAua1YwHNgbFAAnMXd9iiSxbIKoSfYKsrFggNCFX73ex4b64iIhQ2BBr82/B
MNpC4rEvnr1x0oFv8DBO1GYimQaq8E9hjnO1UYYEPelVsykOpnDLklTsBZ4vhhq/
hq1mbs+6G+vsAjO9jVnuxP6toOTNBqvURRumMF0P165MoFdh0kzSjUts+1d8Llnb
DJaZht0O19k1ZdBBmPD3cwbTI+tChOELAVt4Nb5dDGPWqSxc5Nl2j95T3aK1KL2d
2vV16DSVShJIz04QHatcJlNZLJDbSu70c5fPU8YiJdRpfkubANAmwcDB+uNhtYz+
zEji0KnE2oNA
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEtDCCA5ygAwIBAgIRAJOShUABZXFflH8oj+/JmygwDQYJKoZIhvcNAQELBQAw
PjELMAkGA1UEBhMCUEwxGzAZBgNVBAoTElVuaXpldG8gU3AuIHogby5vLjESMBAG
A1UEAxMJQ2VydHVtIENBMB4XDTA4MTAyMjEyMDczN1oXDTI3MDYxMDEwNDYzOVow
fjELMAkGA1UEBhMCUEwxIjAgBgNVBAoTGVVuaXpldG8gVGVjaG5vbG9naWVzIFMu
QS4xJzAlBgNVBAsTHkNlcnR1bSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEiMCAG
A1UEAxMZQ2VydHVtIFRydXN0ZWQgTmV0d29yayBDQTCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAOP7faNyusLwyRSH9WsBTuFuQAe6bSddf/dbLbNax1Ff
q6QypmGHtm4PhtIwApf412lXoRg5XWpkecYBWaw8MUo4fNIE0kso6CBfOweizE1z
2/OuT8dW1Vqnlon686to1COGWSfPCSe8rG5ygxwwct/gounS4XR1Gb0qnnsVVAQb
10M5rVUoxeIau/TA5K44STPMdoWfOUXSpJ7yEoxR+HzkLX/1rF/rFp+xLdG6zJFC
d0wlyZA4b9vwzPuOHpdZPtVgTuYFKO1JeRNLukjbL/ly0znK/h/YNHL1tEDPMQHD
7N4RLRddH7hQ0V4Zp2neBzMoylCV+adUy1SGUEWp+UkCAwEAAaOCAWswggFnMA8G
A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFAh2zcsH/yT2xc3tu5C84oQ3RnX3MFIG
A1UdIwRLMEmhQqRAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNw
LiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQYIDAQAgMA4GA1UdDwEB/wQEAwIB
BjAsBgNVHR8EJTAjMCGgH6AdhhtodHRwOi8vY3JsLmNlcnR1bS5wbC9jYS5jcmww
aAYIKwYBBQUHAQEEXDBaMCgGCCsGAQUFBzABhhxodHRwOi8vc3ViY2Eub2NzcC1j
ZXJ0dW0uY29tMC4GCCsGAQUFBzAChiJodHRwOi8vcmVwb3NpdG9yeS5jZXJ0dW0u
cGwvY2EuY2VyMDkGA1UdIAQyMDAwLgYEVR0gADAmMCQGCCsGAQUFBwIBFhhodHRw
Oi8vd3d3LmNlcnR1bS5wbC9DUFMwDQYJKoZIhvcNAQELBQADggEBAI3m/UBmo0yc
p6uh2oTdHDAH5tvHLeyDoVbkHTwmoaUJK+h9Yr6ydZTdCPJ/KEHkgGcCToqPwzXQ
1aknKOrS9KsGhkOujOP5iH3g271CgYACEnWy6BdxqyGVMUZCDYgQOdNv7C9C6kBT
Yr/rynieq6LVLgXqM6vp1peUQl4E7Sztapx6lX0FKgV/CF1mrWHUdqx1lpdzY70a
QVkppV4ig8OLWfqaova9ML9yHRyZhpzyhTwd9yaWLy75ArG1qVDoOPqbCl60BMDO
TjksygtbYvBNWFA0meaaLNKQ1wmB1sCqXs7+0vehukvZ1oaOGR+mBkdCcuBWCgAc
eLmNzJkEN0k=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE REQUEST-----
MIIBhDCB7gIBADBFMQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEh
MB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEB
AQUAA4GNADCBiQKBgQDCG2+xd72ZIC4vpb3Eb0WY6itr0n1ZPCR/lI0UFT16RExI
35Bs/GWcxHWUzEEGweVgeMzRITOmj5bZt3pfMY5XkON4bKmKynONLeNamPYB2bNu
qd7Hl4uy1N6NLTNl4NdWhwgjPxXgSs26FFybgdaVKOXQhSqUSLxfp+2bj1NohQID
AQABoAAwDQYJKoZIhvcNAQELBQADgYEAgo9TpXS0aTB41gEB29/+vP5I+Dttc3i5
T1IHZBiLwZudCShy5ZCDTks195BXbgTQOKDtEQkuzUE4L9L1PkXsLBE3Zvy3S5VF
loXGPBP6iDJjR559QzakAn8dJVV6I+9J3ryoOdN4vyzo1puU8eFnmfsJ57NFk6sX
mf8kdYd0XYo=
-----END CERTIFICATE REQUEST-----
-----BEGIN CERTIFICATE-----
MIICATCCAWoCCQDstPb/4nzmRjANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJB
VTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
cyBQdHkgTHRkMB4XDTE3MDUxMTA5MzEzN1oXDTE4MDUxMTA5MzEzN1owRTELMAkG
A1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0
IFdpZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwhtv
sXe9mSAuL6W9xG9FmOora9J9WTwkf5SNFBU9ekRMSN+QbPxlnMR1lMxBBsHlYHjM
0SEzpo+W2bd6XzGOV5DjeGypispzjS3jWpj2Admzbqnex5eLstTejS0zZeDXVocI
Iz8V4ErNuhRcm4HWlSjl0IUqlEi8X6ftm49TaIUCAwEAATANBgkqhkiG9w0BAQsF
AAOBgQAR4K4Ny36Tnc6jZM4pGRywgcMpjIdBuAhIxexadM1DL1jmUIE0spSK4S8S
60RC387DEa5u2x1NyB0wRaeF6bDgNhVJisglfMuu6QS262XHG4WhVmV5vm06c+ET
0RZv9TqrEjuvWXPHNFU7zvvFMFAj4Y7nxgB2zx9OrSKCCesB3g==
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDCG2+xd72ZIC4vpb3Eb0WY6itr0n1ZPCR/lI0UFT16RExI35Bs
/GWcxHWUzEEGweVgeMzRITOmj5bZt3pfMY5XkON4bKmKynONLeNamPYB2bNuqd7H
l4uy1N6NLTNl4NdWhwgjPxXgSs26FFybgdaVKOXQhSqUSLxfp+2bj1NohQIDAQAB
AoGBAKWI5F4CccyupvS3cfidtErOGS2gmomJQs8SjqW732vv5uaW0gI/1SA2Ytf8
wM/Ud5soKfOHTxcSiWEumcuo5WvEmoNHXJfunVErnYG4Ph2FsiBihL2wPrGnq0E5
XZnX0ZNwcBw+dvfDXKiAq4QOrSyldtNuQuw3bZZ+5DOZkgSZAkEA/b69YTjNszX7
9KDiWtIeu5dw6mkzrdL3+M8DpQk1E7ndLKbKKdZMavd/OHkjbJoMriVy57TLz8HL
OtV6GnEo0wJBAMPVBcnlI8A78mEf4/m6SoazTPV1FQfZknC1rKIo1qSNtP/RcjoW
dnK9Ar4dnmuUvKXKoYKlCFcmERNeo7c80kcCQAYBUJwPaxbVrTvR3umFVYLdB6gU
i0uO1Z2G0LBEMoRf/rMC03//+VkCuHkOrN7yGmC4tCp1pekpzfR7fuNHUE8CQQCw
aAia4kreNCIW079tih7wUDwXMK0NMTT1SvKD8P3Jpc1SVL3tDacNnK4HzG6Uwptd
TbdIFJn6x1PCexJHUgapAkB7Jvoweu9Jja1arukVWHIKZbqM3Hmh1GjgkuxoKeZW
ZoaC/ASM0rsc9XHUaSuQjAlwDk/H47vgEuxXu2BklGrJ
-----END RSA PRIVATE KEY-----
module.exports = {
StorageHost:"http://tv.51gjj.com:11250",
SignHost:'http://tj2.51gjj.com:5118',
TaskHost:'http://ts1.51gjj.com:6824',
newTaskHost:'http://tt.51gjj.com:7001',
callbackUrl:'https://t.51gjj.com/IncomeTaxAPI/result',
signType:'incometax',
database: {
"connectionLimit" : 50,
"host": "rm-bp1272001633qc0x9.mysql.rds.aliyuncs.com",
"user": "hexin",
"password": "gYUHszn9#q",
"database": "node_gjj"
},
port: 10017,
log4jsConfig: {
"appenders": {
"console": {
"type": "console"
},
"default": {
"type": "dateFile",
"filename": "./logs/",
"alwaysIncludePattern": true,
"pattern": "IITAPI-yyyyMMdd.log"
}
},
"categories": {
"default": {
"appenders":["console", "default"],
"level": "trace"
}
},
"replaceConsole": true
},
};
const signAPI=require('../services/ValidationAPI');
module.exports={
async getToken(ctx){
try{
console.log(ctx.request.body)
let tokenObj= await signAPI.getToken(ctx.request.body);
ctx.body=tokenObj
}catch (err){
console.error(err)
ctx.body={code:-1,msg:"服务出错"}
}
},
};
\ No newline at end of file
This diff is collapsed.
const path = require('path');
const Koa = require('koa');
const convert = require('koa-convert');
const views = require('koa-views');
const koaStatic = require('koa-static');
const bodyParser = require('koa-bodyparser');
var cors = require('koa-cors');
const util = require('util');
const cleanLog = require('./utils/cheanLog');
const log = require('./utils/log');
const koaLogger = require('koa-logger');
const config = require('./config');
const routers = require('./routers/index');
const app = new Koa();
// app.use((ctx)=>{
// console.log(ctx.headers);
// })
app.use(cors());
// 配置控制台日志中间件
app.use(koaLogger());
// 配置ctx.body解析中间件
app.use(bodyParser());
// 配置静态资源加载中间件
app.use(koaStatic(
path.join(__dirname , './public/')
));
app.use(async (ctx, next) => {
const token = ctx.header.authorization // 获取jwt
let payload;
if (token) {
try {
payload = await verify(token.split(' ')[1], secret) // // 解密,获取payload
console.log('payload',payload);
console.log(ctx.path)
if(config.authData[ctx.path]){
if(!config.authData[ctx.path].includes(payload.auth)){
ctx.status = 403;
ctx.body={status:'无权限'}
return
}
}
}catch (err){
console.log(err)
}
}
await next()
})
// 配置服务端模板渲染引擎中间件
app.use(views(path.join(__dirname, './views'), {
extension: 'ejs'
}));
// 初始化路由中间件
app.use(routers.routes()).use(routers.allowedMethods());
// 监听启动端口
app.listen( config.port )
log.info(`the server is start at port ${config.port}`);
cleanLog();
// console.log(`the server is start at port ${config.port}`);
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "IIT",
"version": "1.0.0",
"description": "对接API服务web服务",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"koa"
],
"author": "HAYWAEL",
"license": "ISC",
"dependencies": {
"ali-oss": "^5.2.0",
"antd-mobile": "^2.1.8",
"antd-mobile-demo-data": "^0.2.0",
"array-tree-filter": "^2.1.0",
"ejs": "^2.5.5",
"jsonwebtoken": "^8.2.1",
"koa": "^2.5.0",
"koa-bodyparser": "^3.2.0",
"koa-cors": "0.0.16",
"koa-jwt": "^3.3.1",
"koa-logger": "^3.0.0",
"koa-mysql-session": "0.0.2",
"koa-router": "^7.0.1",
"koa-send": "^3.2.0",
"koa-session-minimal": "^3.0.3",
"koa-static": "^3.0.0",
"koa-views": "^5.2.0",
"log4js": "^2.6.0",
"moment": "^2.22.1",
"mysql": "^2.15.0",
"node-schedule": "^1.3.0",
"rc-form": "^2.2.0",
"request": "^2.85.0"
}
}
{
"name" : "IITAPITest", // 应用名称
"script" : "./index.js", // 实际启动脚本
"cwd" : "./" // 当前工作路径
// "watch": [ // 监控变化的目录,一旦变化,自动重启
// "bin",
// "routers"
// ],
// "ignore_watch" : [ // 从监控目录中排除
// "node_modules",
// "logs",
// "public"
// ],
// "watch_options": {
// "followSymlinks": false
// },
// "error_file" : "./logs/app-err.log", // 错误日志路径
// "out_file" : "./logs/app-out.log" // 普通日志路径
// "env": {
// "NODE_ENV": "production" // 环境参数,当前指定为生产环境
// }
}
{
"name" : "nsbapi", // 应用名称
"script" : "./sbapi.js", // 实际启动脚本
"cwd" : "./", // 当前工作路径
"node_args" : "--max-old-space-size=3000"
// "watch": [ // 监控变化的目录,一旦变化,自动重启
// "bin",
// "routers"
// ],
// "ignore_watch" : [ // 从监控目录中排除
// "node_modules",
// "logs",
// "public"
// ],
// "watch_options": {
// "followSymlinks": false
// },
// "error_file" : "./logs/app-err.log", // 错误日志路径
// "out_file" : "./logs/app-out.log" // 普通日志路径
// "env": {
// "NODE_ENV": "production" // 环境参数,当前指定为生产环境
// }
}
This diff is collapsed.
![logo](media/logo_43.png)
# 个税API服务接口文档
>查询本文档你将能了解到:
- 创建任务API
- 如何拉取数据
- 常见问题及解决方案
[开始查看](#文档更新说明)
<footer>
<span>杭州煎饼网络技术有限公司 版权所有 &copy;2017 </span>
<span>由51公积金管家数据部门提供支持 </span>
</footer>
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>个税API接口文档</title>
<meta name="description" content="Description">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css">
<style>
.markdown-section{
margin-left: 20px;
}
</style>
</head>
<body>
<div id="app"></div>
</body>
<script>
window.$docsify = {
name: '个税API接口文档',
themeColor: '#439df8',
coverpage: true,
maxLevel: 2,
externalLinkTarget: '_self',
auto2top: true,
plugins: [
function (hook) {
var footer = [
'<hr/>',
'<footer>',
'<span>杭州煎饼网络技术有限公司 版权所有 &copy;2017 </span>',
'<span> 由51公积金管家数据部门提供支持 </span>',
'</footer>'
].join('')
hook.afterEach(function (html) {
return html + footer
})
}
]
}
</script>
<script src="doc/vendor/docsify.js"></script>
<script src="//unpkg.com/prismjs/components/prism-bash.js"></script>
<script src="//unpkg.com/prismjs/components/prism-json.js"></script>
</html>
This diff is collapsed.
(function(Prism) {
var insideString = {
variable: [
// Arithmetic Environment
{
pattern: /\$?\(\([\s\S]+?\)\)/,
inside: {
// If there is a $ sign at the beginning highlight $(( and )) as variable
variable: [{
pattern: /(^\$\(\([\s\S]+)\)\)/,
lookbehind: true
},
/^\$\(\(/,
],
number: /\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee]-?\d+)?)\b/,
// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic
operator: /--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,
// If there is no $ sign at the beginning highlight (( and )) as punctuation
punctuation: /\(\(?|\)\)?|,|;/
}
},
// Command Substitution
{
pattern: /\$\([^)]+\)|`[^`]+`/,
inside: {
variable: /^\$\(|^`|\)$|`$/
}
},
/\$(?:[a-z0-9_#\?\*!@]+|\{[^}]+\})/i
],
};
Prism.languages.bash = {
'shebang': {
pattern: /^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,
alias: 'important'
},
'comment': {
pattern: /(^|[^"{\\])#.*/,
lookbehind: true
},
'string': [
//Support for Here-Documents https://en.wikipedia.org/wiki/Here_document
{
pattern: /((?:^|[^<])<<\s*)(?:"|')?(\w+?)(?:"|')?\s*\r?\n(?:[\s\S])*?\r?\n\2/g,
lookbehind: true,
greedy: true,
inside: insideString
},
{
pattern: /(["'])(?:\\\\|\\?[^\\])*?\1/g,
greedy: true,
inside: insideString
}
],
'variable': insideString.variable,
// Originally based on http://ss64.com/bash/
'function': {
pattern: /(^|\s|;|\||&)(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|\s|;|\||&)/,
lookbehind: true
},
'keyword': {
pattern: /(^|\s|;|\||&)(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|\s|;|\||&)/,
lookbehind: true
},
'boolean': {
pattern: /(^|\s|;|\||&)(?:true|false)(?=$|\s|;|\||&)/,
lookbehind: true
},
'operator': /&&?|\|\|?|==?|!=?|<<<?|>>|<=?|>=?|=~/,
'punctuation': /\$?\(\(?|\)\)?|\.\.|[{}[\];]/
};
var inside = insideString.variable[1].inside;
inside['function'] = Prism.languages.bash['function'];
inside.keyword = Prism.languages.bash.keyword;
inside.boolean = Prism.languages.bash.boolean;
inside.operator = Prism.languages.bash.operator;
inside.punctuation = Prism.languages.bash.punctuation;
})(Prism);
Prism.languages.json = {
'property': /"(?:\\.|[^\\"])*"(?=\s*:)/ig,
'string': /"(?!:)(?:\\.|[^\\"])*"(?!:)/g,
'number': /\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]?\d+)?)\b/g,
'punctuation': /[{}[\]);,]/g,
'operator': /:/g,
'boolean': /\b(true|false)\b/gi,
'null': /\bnull\b/gi
};
Prism.languages.jsonp = Prism.languages.json;
This diff is collapsed.
(function () {
'use strict';
/*
* medium-zoom v0.2.0
* Medium zoom on your images in vanilla JavaScript
* Copyright 2017 Francois Chalifour
* https://github.com/francoischalifour/medium-zoom
* MIT License
*/function __$styleInject(a,b){if('undefined'==typeof document){ return b; }a=a||'';var c=document.head||document.getElementsByTagName('head')[0],d=document.createElement('style');return d.type='text/css',c.appendChild(d),d.styleSheet?d.styleSheet.cssText=a:d.appendChild(document.createTextNode(a)),b}function createCommonjsModule(a,b){return b={exports:{}},a(b,b.exports),b.exports}var _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++){ for(var d in b=arguments[c],b){ Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]); } }return a}; var toConsumableArray=function(a){if(Array.isArray(a)){for(var b=0,c=Array(a.length);b<a.length;b++){ c[b]=a[b]; }return c}return Array.from(a)}; var mediumZoom_1=createCommonjsModule(function(a){var b=['IMG'],c=[27,81],d=function(a){return b.includes(a.tagName)},e=function(a){return a.naturalWidth!==a.width},f=function(a){return NodeList.prototype.isPrototypeOf(a)||HTMLCollection.prototype.isPrototypeOf(a)},g=function(a){return a&&1===a.nodeType};a.exports=function(a){var h=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=h.margin,j=void 0===i?0:i,k=h.background,l=void 0===k?'#fff':k,m=h.scrollOffset,n=void 0===m?48:m,o=h.metaClick,p=function(a){var b=a.getBoundingClientRect(),c=b.top,d=b.left,e=b.width,f=b.height,g=a.cloneNode(),h=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,i=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;return g.removeAttribute('id'),g.style.position='absolute',g.style.top=c+h+'px',g.style.left=d+i+'px',g.style.width=e+'px',g.style.height=f+'px',g.style.transform='',g},q=function(){if(C.template){ if(C.template.dispatchEvent(new Event('show')),D=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,E=!0,C.zoomed=p(C.template),document.body.appendChild(B),document.body.appendChild(C.zoomed),requestAnimationFrame(function(){document.body.classList.add('medium-zoom--open');}),C.template.style.visibility='hidden',C.zoomed.classList.add('medium-zoom-image--open'),C.zoomed.addEventListener('click',r),C.zoomed.addEventListener('transitionend',u),C.template.getAttribute('data-zoom-target')){C.zoomedHd=C.zoomed.cloneNode(),C.zoomedHd.src=C.zoomed.getAttribute('data-zoom-target'),C.zoomedHd.onerror=function(){clearInterval(a),console.error('Unable to reach the zoom image target '+C.zoomedHd.src),C.zoomedHd=null,y();};var a=setInterval(function(){C.zoomedHd.naturalWidth&&(clearInterval(a),C.zoomedHd.classList.add('medium-zoom-image--open'),C.zoomedHd.addEventListener('click',r),document.body.appendChild(C.zoomedHd),y());},10);}else { y(); } }},r=function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,c=function(){E||!C.template||(C.template.dispatchEvent(new Event('hide')),E=!0,document.body.classList.remove('medium-zoom--open'),C.zoomed.style.transform='',C.zoomedHd&&(C.zoomedHd.style.transform='',C.zoomedHd.removeEventListener('click',a)),C.zoomed.removeEventListener('click',a),C.zoomed.addEventListener('transitionend',v));};0<b?setTimeout(c,b):c();},s=function(a){C.template?r():(C.template=a?a.target:A[0],q());},t=function(a){return(a.metaKey||a.ctrlKey)&&z.metaClick?window.open(a.target.getAttribute('data-original')||a.target.parentNode.href||a.target.src,'_blank'):void(a.preventDefault(),s(a))},u=function a(){E=!1,C.zoomed.removeEventListener('transitionend',a),C.template.dispatchEvent(new Event('shown'));},v=function a(){C.template&&(C.template.style.visibility='',document.body.removeChild(C.zoomed),C.zoomedHd&&document.body.removeChild(C.zoomedHd),document.body.removeChild(B),C.zoomed.classList.remove('medium-zoom-image--open'),E=!1,C.zoomed.removeEventListener('transitionend',a),C.template.dispatchEvent(new Event('hidden')),C.template=null,C.zoomed=null,C.zoomedHd=null);},w=function(){if(!E&&C.template){var a=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(D-a)>z.scrollOffset&&r(150);}},x=function(a){c.includes(a.keyCode||a.which)&&r();},y=function(){var a=Math.min;if(C.template){var b=window.innerWidth,c=window.innerHeight,d=b-2*z.margin,e=c-2*z.margin,f=C.zoomedHd||C.template,g=f.naturalWidth,h=void 0===g?d:g,i=f.naturalHeight,j=void 0===i?e:i,k=f.getBoundingClientRect(),l=k.top,m=k.left,n=k.width,o=k.height,p=a(h,d)/n,q=a(j,e)/o,r=a(p,q)||1,s=(-m+(d-n)/2+z.margin)/r,t=(-l+(e-o)/2+z.margin)/r,u='scale('+r+') translate3d('+s+'px, '+t+'px, 0)';C.zoomed.style.transform=u,C.zoomedHd&&(C.zoomedHd.style.transform=u);}},z={margin:j,background:l,scrollOffset:n,metaClick:void 0===o||o};a instanceof Object&&_extends(z,a);var A=function(a){try{return Array.isArray(a)?a.filter(d):f(a)?[].concat(toConsumableArray(a)).filter(d):g(a)?[a].filter(d):'string'==typeof a?[].concat(toConsumableArray(document.querySelectorAll(a))).filter(d):[].concat(toConsumableArray(document.querySelectorAll(b.map(function(a){return a.toLowerCase()}).join(',')))).filter(e)}catch(a){throw new TypeError('The provided selector is invalid.\nExpects a CSS selector, a Node element, a NodeList, an HTMLCollection or an array.\nSee: https://github.com/francoischalifour/medium-zoom')}}(a),B=function(a){var b=document.createElement('div');return b.classList.add('medium-zoom-overlay'),b.style.backgroundColor=a,b}(z.background),C={template:null,zoomed:null,zoomedHd:null},D=0,E=!1;return A.forEach(function(a){a.classList.add('medium-zoom-image'),a.addEventListener('click',t);}),B.addEventListener('click',r),document.addEventListener('scroll',w),document.addEventListener('keyup',x),window.addEventListener('resize',r),{show:s,hide:r,toggle:s,update:function(){var a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return a.background&&(B.style.backgroundColor=a.background),_extends(z,a)},addEventListeners:function(a,b){A.forEach(function(c){c.addEventListener(a,b);});},detach:function(){var a=function a(){var b=new Event('detach');A.forEach(function(a){a.classList.remove('medium-zoom-image'),a.removeEventListener('click',t),a.dispatchEvent(b);}),A.splice(0,A.length),B.removeEventListener('click',r),document.removeEventListener('scroll',w),document.removeEventListener('keyup',x),window.removeEventListener('resize',r),C.zoomed&&C.zoomed.removeEventListener('transitionend',a);};C.zoomed?(r(),C.zoomed.addEventListener('transitionend',requestAnimationFrame(a))):a();},images:A,options:z}};});__$styleInject('.medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--open .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s}.medium-zoom-image--open{position:relative;z-index:1;cursor:pointer;cursor:zoom-out;will-change:transform}',void 0);var src=mediumZoom_1;
function install (hook) {
var zoom;
hook.doneEach(function (_) {
if (zoom) {
zoom.detach();
}
zoom = src('img:not(.emoji):not([data-no-zoom])');
});
}
$docsify.plugins = [].concat(install, $docsify.plugins);
}());
const router = require('koa-router')();
const taskController=require('./../controllers/task')
const signController=require('./../controllers/sign')
const routers = router
.get('getCity',taskController.getCity)
.get('getHelpInfo',taskController.getHelpInfo)
.post('getOrderSn',taskController.createTask)
.post('getCode',taskController.getCode)
.post('query',taskController.query)
.post('getData',taskController.getData)
.post('result',taskController.result)
.post('getToken',signController.getToken)
.post('getIncomeProve',taskController.getIncomeProve)
module.exports = routers;
\ No newline at end of file
const router = require('koa-router')();
const home = require('./home');
router.use('/IncomeTaxAPI/', home.routes(), home.allowedMethods());
module.exports = router
\ No newline at end of file
const request = require('request');
const config = require('../config');
const StorageHost = config.StorageHost;
const
setStorageUrl=StorageHost+'/data',
getStorageUrl=StorageHost+'/IncomeTax/';
exports.dataStorage=(params)=>{
return new Promise(function (resolve, reject) {
let options = {
url: setStorageUrl,
method: 'POST',
json: true,
body: params,
headers: {
'content-type': 'application/json'
}
};
request(options, (e, r, b) => {
if (e) {
return resolve({ code: -1, msg: '数据库服务器出错'});
} else {
return resolve(b);
}
});
});
};
exports.readData=(orderSn)=>{
return new Promise(function (resolve, reject) {
let url =getStorageUrl + orderSn;
let options = {
url: url,
gzip: true
};
request(options, (e, r, b) => {
if (e) {
return resolve({ code: -1, msg: '数据库服务器出错'});
} else {
return resolve(b);
}
});
});
};
\ No newline at end of file
const request = require('request');
const config = require('../config');
const SignHost = config.SignHost;
const
signUrl=SignHost+'/Access/SignValidityCheck',
tokenUrl=SignHost+'/Access/GetToken',
orderSnUrl=SignHost+'/Order/GetOrderSn',
getPartner=SignHost+'/customer/query';
/*获取Token*/
exports.getToken=(params)=>{
return new Promise((resolve,reject)=>{
let errMsg = {code: 3000, msg: '签名校验服务出错'};
let options = {
url: tokenUrl,
method: 'POST',
json: true,
body: params,
headers: {
'content-type': 'application/json'
}
};
request(options, (e, r, b) => {
if (e) {
console.error('[func getToken]',params,e);
resolve(errMsg);
} else {
if (b.code == 0) {
resolve(b);
} else {
console.error('[func getToken]',params,b);
errMsg = {code: 3000, msg: b.msg};
resolve(errMsg);
}
}
});
});
};
/*获取订单号*/
exports.getOrderSn=(params)=>{
return new Promise((resolve,reject)=>{
let errMsg = {code: 3000, msg: '签名校验服务出错'};
let options = {
url: orderSnUrl,
method: 'POST',
json: true,
body: params,
headers: {
'content-type': 'application/json'
}
};
request(options, (e, r, b) => {
if (e) {
console.error('[func getOrderSn]',params,e);
resolve(errMsg);
} else {
if (b.code == 0) {
resolve(b);
} else {
console.error('[func getOrderSn]',params,b);
errMsg = {code: 3000, msg:b.msg};
resolve(errMsg);
}
}
});
});
};
/*验证签名*/
exports.signValidation=(params)=>{
return new Promise((resolve, reject) => {
params.type=config.signType;
let options = {
url: signUrl,
method: 'POST',
json: true,
body: params,
headers: {
'content-type': 'application/json'
}
};
request(options, (e, r, vb) => {
if (e) {
console.error('[reGJJ][signValidityCheck] signValidityCheck error: ' ,e);
reject({code:-1,msg:'验签服务器出错'});
} else {
if (vb.code === 0) {
resolve(vb);
} else {
reject(vb);
}
}
});
});
};
/*获取合作方信息*/
exports.getCallbackMap=()=>{
return new Promise(function (resolve, reject) {
request({url:getPartner,gzip:true},(e,r,b)=>{
if(e){
console.error('getCityList');
console.error(e);
return reject(e);
}else{
return resolve(b);
}
});
});
};
const request=require('request')
const db=require('./../utils/db-util');
const signAPI=require('./ValidationAPI')
const taskAPI=require('./taskAPI');
const log=require('../utils/log');
let cityList=[];
let orderSnMap = new Map();
let CustomerMap= new Map();
let cityMap=new Map();
let helpInfo=[];
let newCityMap=new Map()
function getCityList() {
taskAPI.getCityList("gsgj").then(Row=>{
Row=JSON.parse(Row);
Row.data.map(Prov=>{
Prov.citys.map(city=>{
newCityMap.set(String(city.id),city)
})
});
taskAPI.getCityList("51gs").then(Row51=>{
Row51=JSON.parse(Row51);
cityList=[];
Row51.data.map(Prov=>{
let newProv = { provinceName: Prov.provinceName, citys: [] };
Prov.citys.map(city=>{
city.type="51gs";
if(city.state===-1&&newCityMap.get(String(city.id))&&newCityMap.get(String(city.id)).state!==-1){
city=newCityMap.get(String(city.id))
city.type="gsgj";
console.log(city)
}
cityMap.set(String(city.id),city)
if (city.state === 1 || city.state === -1) {
newProv.citys.push({
province: city.province,
name: city.name,
id: city.id,
state: city.state,
queryParam: city.queryParam
});
}
})
cityList.push(newProv)
});
})
}).catch(err=>{
log.error(err)
})
}
function getHelpInfo() {
db.QueryHelpInfo([['cid','city','help']]).then(Rows=>{
if(Rows.length>0){
helpInfo=Rows;
}else{
log.error("getHelpInfo")
}
}).catch(err=>{
log.error(err)
})
}
function getCustomer() {
signAPI.getCallbackMap().then(b=>{
b = JSON.parse(b);
if (b.code === 0) {
b.data.customerList.map(customer => {
if ('callBackUrl' in customer) {
CustomerMap.set(customer.appKey, customer.callBackUrl);
}
});
}
}).catch(err=>{
cosnole.error(err)
})
}
function getCustomerByAppKey(appKey) {
if(CustomerMap.has(appKey)){
return CustomerMap.get(appKey)
}else{
log.error("noCus",appKey)
return ""
}
}
getHelpInfo()
getCityList();
getCustomer();
setInterval(function () {
getCityList();
getCustomer();
getHelpInfo();
},1000*60*3);
function RCityList() {
return cityList
}
function RHelpInfo() {
return helpInfo
}
function getTaskByOrderSn(orderSn) {
return new Promise((resolve, reject) => {
if (orderSnMap.has(orderSn)) {
return resolve(orderSnMap.get(orderSn));
} else {
db.QueryFromStatus([['status', 'note', 'appKey', 'taskId'], orderSn]).then(Rows => {
if (Rows.length > 0) {
Rows[0].note = JSON.parse(Rows[0].note);
resolve(Rows[0]);
} else {
reject();
}
});
}
});
}
async function getapiTaskByOrderSn(orderSn) {
try {
let rows = await db.QueryFromStatus([['status', 'note', 'appKey', 'taskId'], orderSn]);
log.info("getapiTaskByOrderSn", rows);
return rows;
} catch (e) {
log.error("getapiTaskByOrderSn", e);
return [];
}
}
async function getH5TaskByOrderSn(orderSn) {
try {
let rows = await db.QueryFromH5Status([['status', 'appKey', 'taskId'], orderSn]);
log.info("getH5TaskByOrderSn", rows);
return rows;
} catch (e) {
log.error("getH5TaskByOrderSn", e);
return [];
}
}
function setOrderSnMap(key, values) {
values.time = new Date().getTime();
if (orderSnMap.has(key)) {
orderSnMap.get(key).status = values.status;
orderSnMap.get(key).note = values.note;
orderSnMap.get(key).taskId = values.taskId;
orderSnMap.get(key).time = values.time;
} else {
orderSnMap.set(key, values)
}
}
function ServerSideCall(appKey,data) {
let url=getCustomerByAppKey(appKey);
return new Promise((resolve, reject) => {
let options = {
url: url,
method: 'POST',
json: true,
body: data,
headers: {
'content-type': 'application/json'
}
};
request(options, (e, r, b) => {
if (e) {
log.error('callbackParams' + JSON.stringify(options));
log.error(e);
resolve();
} else {
log.info('callbackParams' + JSON.stringify(options));
log.info(b);
resolve();
}
});
});
}
function getCityById(centerId) {
if(cityMap.has(String(centerId))){
return cityMap.get(String(centerId))
}else{
log.error("centerId",centerId,cityMap)
return {}
}
}
exports.cityList=RCityList;
exports.helpInfo=RHelpInfo;
exports.setOrderSnMap=setOrderSnMap;
exports.getTaskByOrderSn = getTaskByOrderSn;
exports.getH5TaskByOrderSn = getH5TaskByOrderSn;
exports.getapiTaskByOrderSn = getapiTaskByOrderSn;
exports.getCustomerByAppKey=getCustomerByAppKey;
exports.ServerSideCall=ServerSideCall;
exports.getCityById=getCityById;
const request = require('request');
const config = require('../config');
const TaskHost = config.TaskHost;
const newTaskHost = config.newTaskHost;
const log=require('../utils/log');
// const staticVari=require('./staticVari');
const
cityListUrl = TaskHost + '/IncomeTax/getItSetting',
createTaskUrl = TaskHost + '/IncomeTax/createItTask',
getCodeUrl = TaskHost + '/IncomeTax/getItCode',
submitParamsUrl = TaskHost + '/IncomeTax/loginItWeb',
getDataUrl = TaskHost + '/IncomeTax/getItData';
const
cityListUrlNew = newTaskHost + '/IncomeTax/getItSetting',
createTaskUrlNew = newTaskHost + '/IncomeTax/createItTask',
getCodeUrlNew = newTaskHost + '/IncomeTax/getItCode',
submitParamsUrlNew = newTaskHost + '/IncomeTax/loginItWeb',
getDataUrlNew = newTaskHost + '/IncomeTax/getItData';
/*获取城市列表*/
exports.getCityList=(type)=> {
return new Promise(function (resolve, reject) {
request({url:type==="gsgj"?cityListUrlNew:cityListUrl,gzip:true},(e,r,b)=>{
if(e){
log.error('getCityList');
log.error(e);
return reject(e);
}else{
if(b){
return resolve(b);
}else{
log.error(r.statusCode);
}
}
});
});
};
/*创建任务*/
exports.createTask=(cityId,type)=> {
let errMsg = {code: 500, msg: '创建任务服务出错'};
return new Promise(function (resolve, reject) {
let form_data = {cityId: cityId};
let options = {
url: type==="gsgj"?createTaskUrlNew:createTaskUrl,
method: 'POST',
json: true,
body: form_data,
headers: {
'content-type': 'application/json'
}
};
request(options, (e, r, b) => {
if (e) {
log.error(e);
log.error('[createTask err]',JSON.stringify(options));
reject(errMsg);
} else {
if (b&&b.code === 0) {
resolve(b.data.taskId);
} else {
console.log('createTask err' , JSON.stringify(options),JSON.stringify(b));
reject(b);
}
}
});
});
};
/*获取验证码*/
exports.getCode=(params)=>{
return new Promise((resolve,reject)=>{
let errMsg={code:-1,msg:'服务器出错'};
let options = {
url: params.taskId.length>20?getCodeUrlNew:getCodeUrl,
method: 'POST',
json: true,
body: params,
headers: {
'content-type': 'application/json'
}
};
request(options, (e, r, b) => {
if (e) {
console.error('getCode',e);
resolve(errMsg);
} else {
if (b&&b.code === 0) {
resolve(b);
log.info(JSON.stringify(options))
log.info(b)
} else {
log.error('[getImgCode]ErrReq:' + JSON.stringify(params) + 'Res:' + JSON.stringify(b));
resolve(b);
}
}
});
});
};
/*提交参数*/
exports.submitParams=(params) =>{
let errMsg = {code: -1, msg: '服务器错误'};
return new Promise(function (resolve, reject) {
let options = {
url: params.taskId.length>20?submitParamsUrlNew:submitParamsUrl,
method: 'POST',
json: true,
body: params,
headers: {
'content-type': 'application/json'
}
};
log.info(JSON.stringify(options))
request(options, (e, r, b) => {
if (e) {
log.error('[GJJ][/ajax/commitParams]提交任务请求失败');
log.error(e);
resolve(errMsg);
} else {
if (b&&b.code === 0) {
resolve(b);
} else {
console.error('提交任务出错Req:+' + JSON.stringify(params) + ' Res: ' + JSON.stringify(b));
resolve(b);
}
}
});
});
};
/*拉取数据*/
exports.getData=(taskId)=>{
return new Promise((resolve,reject)=>{
let options = {
url:taskId.length>20?getDataUrlNew:getDataUrl,
method: 'POST',
json: true,
body: { taskId: taskId },
headers: {
'content-type': 'application/json'
}
};
request(options, (e, r, b) => {
if (e) {
console.error(e);
reject(e);
} else {
if(b){
resolve(b);
}else{
reject(r.statusCode)
}
}
});
});
};
const fs = require('fs');
const moment = require('moment');
const schedule = require('node-schedule');
const log = require('./log');
function getFileName(path) {
return new Promise((resolve, reject) => {
fs.readdir(path, (err, files) => {
if (err) {
reject(err);
} else {
resolve(files);
}
});
});
}
function removeFile(path) {
return new Promise((resolve, reject) => {
fs.unlink(path, (err) => {
if (err) {
reject(err);
} else {
resolve();
}
});
});
}
function removeOverdueLogFile(eachFileName) {
let result = /IITAPI-(\d{8}).log/.exec(eachFileName);
if (null !== result) {
let date = moment(result[1], 'YYYYMMDD');
if (date.isValid() && moment().subtract(3, 'd').isAfter(date)) {
try {
removeFile(`./logs/${eachFileName}`);
log.info('删除三天前日志');
log.info(`${eachFileName}`);
} catch(e) {
log.error('删除日志失败');
log.error(e);
}
}
}
}
async function cleanLogFile() {
let filesName = await getFileName('./logs');
for (let eachFileName of filesName) {
removeOverdueLogFile(eachFileName);
}
}
function cleanLogEveryDay() {
schedule.scheduleJob('00 00 4 * * *', cleanLogFile);
}
module.exports = cleanLogEveryDay;
\ No newline at end of file
const config = require('./../config');
const mysql = require("mysql")
const pool = mysql.createPool(config.database)
let query = function( sql, values ) {
return new Promise(( resolve, reject ) => {
pool.getConnection(function(err, connection) {
if (err) {
resolve( err )
} else {
connection.query(sql, values, ( err, rows) => {
if ( err ) {
reject( err )
} else {
resolve( rows )
}
connection.release()
})
}
})
})
};
let selectUser = function( values ) {
let _sql = "SELECT ?? FROM adminuser WHERE ?? = ?"
return query( _sql, values )
}
let insertUser = function( values ) {
let _sql = "INSERT INTO adminuser set ?"
return query( _sql, values )
}
let insertObj = function( values ) {
let _sql = "INSERT INTO iit_status set ?"
return query( _sql, values )
}
let getCity=function (values) {
let _sql = "SELECT ?? FROM adminuser "
return query( _sql, values )
}
let updateData = function( values ) {
let _sql = "UPDATE iit_status SET ? WHERE orderId = ?"
return query( _sql, values )
}
let selectPartnerList = function( values ) {
let _sql = "SELECT ?? FROM admin_partner "
return query( _sql, values )
};
let QueryFromStatus = function (values) {
let _sql = "SELECT ?? FROM iit_status WHERE orderId = ?"
return query( _sql, values )
};
let QueryHelpInfo = function (values) {
let _sql = "SELECT ?? FROM iit_help "
return query( _sql, values )
};
let QueryFromH5Status = function (values) {
let _sql = "SELECT ?? FROM iith5_status WHERE orderId = ? and `status`= 'success'"
return query( _sql, values )
};
module.exports = {
query,
selectUser,
insertUser,
selectPartnerList,
getCity,
insertObj,
updateData,
QueryFromStatus,
QueryHelpInfo,
QueryFromH5Status
}
const log4js = require('log4js');
const config = require('../config');
log4js.configure(config.log4jsConfig);
module.exports = log4js.getLogger();
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
</head>
<body>
<div id="app">hello</div>
</body>
</html>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment