nm_controller.go 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670
  1. package nm
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "gdyb/controllers"
  6. "gdyb/enums"
  7. "gdyb/models"
  8. "gdyb/service"
  9. "gdyb/utils"
  10. "github.com/astaxie/beego"
  11. "github.com/axgle/mahonia"
  12. "io/ioutil"
  13. "os"
  14. "regexp"
  15. "strconv"
  16. "strings"
  17. "syscall"
  18. "time"
  19. "unsafe"
  20. )
  21. type NmController struct {
  22. controllers.BaseAuthAPIController
  23. }
  24. func NmybRegistRouters() {
  25. beego.Router("/nmyb/1101", &NmController{}, "get:Post1101")
  26. beego.Router("/nmyb/2401", &NmController{}, "post:Post2401")
  27. beego.Router("/nmyb/2402", &NmController{}, "post:Post2402")
  28. beego.Router("/nmyb/2404", &NmController{}, "get:Post2404")
  29. beego.Router("/nmyb/2405", &NmController{}, "post:Post2405")
  30. beego.Router("/nmyb/2301", &NmController{}, "post:Post2301")
  31. beego.Router("/nmyb/2302", &NmController{}, "get:Post2302")
  32. beego.Router("/nmyb/2303", &NmController{}, "get:Post2303")
  33. beego.Router("/nmyb/2304", &NmController{}, "get:Post2304")
  34. beego.Router("/nmyb/2305", &NmController{}, "get:Post2305")
  35. beego.Router("/nmyb/readcard", &NmController{}, "get:ReadCard")
  36. }
  37. func (c *NmController) Post1101() {
  38. certNo := c.GetString("cert_no")
  39. org_name := c.GetString("org_name")
  40. doctor := c.GetString("doctor")
  41. fixmedins_code := c.GetString("fixmedins_code")
  42. insuplc_admdvs := c.GetString("insuplc_admdvs")
  43. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  44. secret_key := c.GetString("secret_key")
  45. id_card_type, _ := c.GetInt64("id_card_type")
  46. card_sn := c.GetString("card_sn")
  47. certificates := c.GetString("certificates")
  48. name := c.GetString("name")
  49. certificate, _ := strconv.ParseInt(certificates, 10, 64)
  50. result, request_log, result_log := service.ZHGdyb1101(certNo, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type, card_sn, certificate, name)
  51. saveJsLog(result_log, request_log, "1101", "查询个人信息", org_name)
  52. var dat map[string]interface{}
  53. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  54. } else {
  55. }
  56. var dat2 map[string]interface{}
  57. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  58. } else {
  59. }
  60. c.ServeSuccessJSON(map[string]interface{}{
  61. "pre": dat,
  62. "log": dat2,
  63. })
  64. }
  65. func (c *NmController) Post2401() {
  66. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  67. var respJSON map[string]interface{}
  68. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  69. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  70. return
  71. }
  72. userJSONBytes, _ := json.Marshal(respJSON["struct_2401"])
  73. var struct2401 service.Struct2401
  74. if err := json.Unmarshal(userJSONBytes, &struct2401); err != nil {
  75. utils.ErrorLog("解析失败:%v", err)
  76. return
  77. }
  78. org_name := respJSON["org_name"].(string)
  79. fixmedins_code := respJSON["fixmedins_code"].(string)
  80. doctor := respJSON["doctor"].(string)
  81. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  82. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  83. secret_key := respJSON["secret_key"].(string)
  84. result, request_log := service.ZHGdyb2401(struct2401, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  85. saveJsLog(result, request_log, "2401", "入院登记", org_name)
  86. var dat2 map[string]interface{}
  87. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  88. } else {
  89. }
  90. var dat map[string]interface{}
  91. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  92. } else {
  93. }
  94. c.ServeSuccessJSON(map[string]interface{}{
  95. "pre": dat,
  96. "request_log": dat2,
  97. })
  98. }
  99. func (c *NmController) Post2404() {
  100. mdtrt_id := c.GetString("mdtrt_id")
  101. psn_no := c.GetString("psn_no")
  102. doctor := c.GetString("doctor")
  103. fixmedins_code := c.GetString("fixmedins_code")
  104. insuplc_admdvs := c.GetString("insuplc_admdvs")
  105. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  106. secret_key := c.GetString("secret_key")
  107. org_name := c.GetString("org_name")
  108. result, requestLog := service.ZHGdyb2404(mdtrt_id, psn_no, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  109. saveJsLog(result, requestLog, "2404", "入院登记撤销", org_name)
  110. var dat map[string]interface{}
  111. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  112. } else {
  113. }
  114. var dat2 map[string]interface{}
  115. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  116. } else {
  117. }
  118. c.ServeSuccessJSON(map[string]interface{}{
  119. "pre": dat,
  120. "log": dat2,
  121. })
  122. }
  123. func (c *NmController) Post2405() {
  124. mdtrt_id := c.GetString("mdtrt_id")
  125. psn_no := c.GetString("psn_no")
  126. doctor := c.GetString("doctor")
  127. fixmedins_code := c.GetString("fixmedins_code")
  128. insuplc_admdvs := c.GetString("insuplc_admdvs")
  129. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  130. secret_key := c.GetString("secret_key")
  131. org_name := c.GetString("org_name")
  132. result, requestLog := service.ZHGdyb2405(mdtrt_id, psn_no, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  133. saveJsLog(result, requestLog, "2405", "出院登记撤销", org_name)
  134. var dat map[string]interface{}
  135. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  136. } else {
  137. }
  138. var dat2 map[string]interface{}
  139. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  140. } else {
  141. }
  142. c.ServeSuccessJSON(map[string]interface{}{
  143. "pre": dat,
  144. "log": dat2,
  145. })
  146. }
  147. func (c *NmController) Post2402() {
  148. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  149. var respJSON map[string]interface{}
  150. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  151. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  152. return
  153. }
  154. userJSONBytes, _ := json.Marshal(respJSON["struct_2402"])
  155. var struct2402 service.Struct2402
  156. if err := json.Unmarshal(userJSONBytes, &struct2402); err != nil {
  157. utils.ErrorLog("解析失败:%v", err)
  158. return
  159. }
  160. org_name := respJSON["org_name"].(string)
  161. fixmedins_code := respJSON["fixmedins_code"].(string)
  162. doctor := respJSON["doctor"].(string)
  163. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  164. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  165. secret_key := respJSON["secret_key"].(string)
  166. result, request_log := service.ZHGdyb2402(struct2402, secret_key, org_name, fixmedins_code, doctor, insuplc_admdvs, mdtrtarea_admvs)
  167. saveJsLog(result, request_log, "2402", "出院", org_name)
  168. var dat2 map[string]interface{}
  169. if err := json.Unmarshal([]byte(request_log), &dat2); err == nil {
  170. } else {
  171. }
  172. var dat map[string]interface{}
  173. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  174. } else {
  175. }
  176. c.ServeSuccessJSON(map[string]interface{}{
  177. "pre": dat,
  178. "request_log": dat2,
  179. })
  180. }
  181. func (c *NmController) Post2301() {
  182. body, _ := ioutil.ReadAll(c.Ctx.Request.Body)
  183. var respJSON map[string]interface{}
  184. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  185. utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  186. return
  187. }
  188. userJSONBytes, _ := json.Marshal(respJSON["customs"])
  189. var customs []*models.NewCustom
  190. if err := json.Unmarshal(userJSONBytes, &customs); err != nil {
  191. utils.ErrorLog("解析失败:%v", err)
  192. return
  193. }
  194. number := respJSON["number"].(string)
  195. chrg_bchno := respJSON["chrg_bchno"].(string)
  196. dept := respJSON["dept"].(string)
  197. dept_code := respJSON["dept_code"].(string)
  198. doctor_code := respJSON["doctor_code"].(string)
  199. doctor_name := respJSON["doctor_name"].(string)
  200. opertor := respJSON["opertor"].(string)
  201. org_name := respJSON["org_name"].(string)
  202. fixmedins_code := respJSON["fixmedins_code"].(string)
  203. insuplc_admdvs := respJSON["insuplc_admdvs"].(string)
  204. mdtrtarea_admvs := respJSON["mdtrtarea_admvs"].(string)
  205. secret_key := respJSON["secret_key"].(string)
  206. med_type := respJSON["med_type"].(string)
  207. psn_no := respJSON["psn_no"].(string)
  208. result, requestLog := service.ZHGdyb2301A(psn_no, number, customs, chrg_bchno, org_name, doctor_name, dept, fixmedins_code, dept_code, doctor_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, med_type, opertor)
  209. saveJsLog(result, requestLog, "2301", "上传明细", org_name)
  210. var dat2 map[string]interface{}
  211. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  212. } else {
  213. }
  214. var dat map[string]interface{}
  215. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  216. } else {
  217. }
  218. c.ServeSuccessJSON(map[string]interface{}{
  219. "pre": dat,
  220. "request_log": dat2,
  221. })
  222. }
  223. func (c *NmController) Post2302() {
  224. mdtrt_id := c.GetString("mdtrt_id")
  225. psn_no := c.GetString("psn_no")
  226. number := c.GetString("number")
  227. doctor := c.GetString("doctor")
  228. fixmedins_code := c.GetString("fixmedins_code")
  229. insuplc_admdvs := c.GetString("insuplc_admdvs")
  230. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  231. secret_key := c.GetString("secret_key")
  232. org_name := c.GetString("org_name")
  233. refund_type, _ := c.GetInt64("refund_type")
  234. result, requestLog := service.Gdyb2302(psn_no, mdtrt_id, org_name, doctor, insuplc_admdvs, mdtrtarea_admvs, secret_key, fixmedins_code, number, refund_type)
  235. saveJsLog(result, requestLog, "2302", "退明细", org_name)
  236. var dat2 map[string]interface{}
  237. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  238. } else {
  239. }
  240. var dat map[string]interface{}
  241. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  242. } else {
  243. }
  244. c.ServeSuccessJSON(map[string]interface{}{
  245. "pre": dat,
  246. "request_log": dat2,
  247. })
  248. }
  249. func (c *NmController) Post2303() {
  250. mdtrt_id := c.GetString("mdtrt_id")
  251. psn_no := c.GetString("psn_no")
  252. chrg_bchno := c.GetString("chrg_bchno")
  253. cert_no := c.GetString("cert_no")
  254. insutype_type := c.GetString("insutype_type")
  255. allTotal := c.GetString("total")
  256. id_card_type, _ := c.GetInt64("id_card_type")
  257. doctor := c.GetString("doctor")
  258. certificates, _ := c.GetInt64("certificates")
  259. fixmedins_code := c.GetString("fixmedins_code")
  260. insuplc_admdvs := c.GetString("insuplc_admdvs")
  261. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  262. secret_key := c.GetString("secret_key")
  263. org_name := c.GetString("org_name")
  264. result, src_resquest := service.ZHGdyb2303(psn_no, mdtrt_id, chrg_bchno, cert_no, insutype_type, allTotal, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, "0", id_card_type, 0, 0, 0, 0, certificates)
  265. saveJsLog(result, src_resquest, "2303", "预结算", org_name)
  266. var dat2 map[string]interface{}
  267. if err := json.Unmarshal([]byte(src_resquest), &dat2); err == nil {
  268. } else {
  269. }
  270. var dat map[string]interface{}
  271. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  272. } else {
  273. }
  274. c.ServeSuccessJSON(map[string]interface{}{
  275. "pre": dat,
  276. "request_log": dat2,
  277. })
  278. }
  279. func (c *NmController) Post2304() {
  280. mdtrt_id := c.GetString("mdtrt_id")
  281. psn_no := c.GetString("psn_no")
  282. chrg_bchno := c.GetString("chrg_bchno")
  283. cert_no := c.GetString("cert_no")
  284. insutype_type := c.GetString("insutype_type")
  285. allTotal := c.GetString("total")
  286. id_card_type, _ := c.GetInt64("id_card_type")
  287. doctor := c.GetString("doctor")
  288. certificates, _ := c.GetInt64("certificates")
  289. fixmedins_code := c.GetString("fixmedins_code")
  290. insuplc_admdvs := c.GetString("insuplc_admdvs")
  291. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  292. secret_key := c.GetString("secret_key")
  293. org_name := c.GetString("org_name")
  294. result, src_resquest := service.ZHGdyb2304(psn_no, mdtrt_id, chrg_bchno, cert_no, insutype_type, allTotal, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, "0", id_card_type, 0, 0, 0, 0, certificates)
  295. saveJsLog(result, src_resquest, "2304", "住院结算", org_name)
  296. var dat2 map[string]interface{}
  297. if err := json.Unmarshal([]byte(src_resquest), &dat2); err == nil {
  298. } else {
  299. }
  300. var dat map[string]interface{}
  301. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  302. } else {
  303. }
  304. c.ServeSuccessJSON(map[string]interface{}{
  305. "pre": dat,
  306. "request_log": dat2,
  307. })
  308. }
  309. func (c *NmController) Post2305() {
  310. mdtrt_id := c.GetString("mdtrt_id")
  311. psn_no := c.GetString("psn_no")
  312. doctor := c.GetString("doctor")
  313. setl_id := c.GetString("setl_id")
  314. fixmedins_code := c.GetString("fixmedins_code")
  315. insuplc_admdvs := c.GetString("insuplc_admdvs")
  316. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  317. secret_key := c.GetString("secret_key")
  318. org_name := c.GetString("org_name")
  319. result, requestLog := service.Gdyb2305(psn_no, mdtrt_id, setl_id, org_name, doctor, secret_key, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  320. saveJsLog(result, requestLog, "2305", "退费", org_name)
  321. var dat2 map[string]interface{}
  322. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  323. } else {
  324. }
  325. var dat map[string]interface{}
  326. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  327. } else {
  328. }
  329. c.ServeSuccessJSON(map[string]interface{}{
  330. "pre": dat,
  331. "request_log": dat2,
  332. })
  333. }
  334. func (c *NmController) Get2503() {
  335. }
  336. type ELeData struct {
  337. Data struct {
  338. SiNo string `json:"si_no"`
  339. SiCardNo string `json:"si_card_no"`
  340. SiCardIssueArea string `json:"si_card_issue_area"`
  341. Name string `json:"name"`
  342. Gender string `json:"gender"`
  343. IdType string `json:"id_type"`
  344. IdNo string `json:"id_no"`
  345. EcCardToken string `json:"ecCardToken"`
  346. } `json:"data"`
  347. Code int `json:"code"`
  348. Message string `json:"message"`
  349. }
  350. func (c *NmController) ReadCard() {
  351. fixmedins_code := c.GetString("fixmedins_code")
  352. secret_key := c.GetString("secret_key")
  353. ak := c.GetString("ak")
  354. org_name := c.GetString("org_name")
  355. doctor := c.GetString("doctor")
  356. insuplc_admdvs := c.GetString("insuplc_admdvs")
  357. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  358. url := c.GetString("url")
  359. cainfo := c.GetString("cainfo")
  360. id_card_type := c.GetString("id_card_type")
  361. operator_id := c.GetString("operator_id")
  362. operator := c.GetString("operator")
  363. //result, request := service.Jsyb9001(org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, 1, url, cainfo, ak)
  364. //fmt.Println(request)
  365. //fmt.Println(result)
  366. c.TestGetBasBaseInit(fixmedins_code, secret_key, ak)
  367. fmt.Println(id_card_type)
  368. switch id_card_type {
  369. case "1":
  370. pCardInfo, pBusiCardInfo := c.GetBasBaseInfo()
  371. pBusiCardInfo = Remove0000(pBusiCardInfo)
  372. pCardInfo = Remove0000(pCardInfo)
  373. fmt.Println(":", ConvertToString(pCardInfo, "gbk", "utf-8"))
  374. fmt.Println(pBusiCardInfo)
  375. fmt.Println(pCardInfo)
  376. bas := strings.Split(pCardInfo, "|")
  377. basNumber := bas[2]
  378. id_card_no := bas[1]
  379. card_sn := bas[3]
  380. id_card_type_int, _ := strconv.ParseInt(id_card_type, 10, 64)
  381. if len(pCardInfo) > 0 && len(pBusiCardInfo) > 0 {
  382. result, _ := service.Jsyb1101A(basNumber, org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, id_card_type_int, card_sn, "1", url, ak, pBusiCardInfo, id_card_no, cainfo)
  383. var dat map[string]interface{}
  384. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  385. fmt.Println(dat)
  386. } else {
  387. fmt.Println(err)
  388. }
  389. c.ServeSuccessJSON(map[string]interface{}{
  390. "status": "0",
  391. "card_info": pCardInfo,
  392. "busi_card_info": pBusiCardInfo,
  393. "result": dat,
  394. "type": "1",
  395. })
  396. } else {
  397. c.ServeSuccessJSON(map[string]interface{}{
  398. "status": "-1",
  399. })
  400. }
  401. break
  402. case "3": //电子凭证
  403. _, pBusiCardInfo := c.GetELeInfo(fixmedins_code, operator_id, operator)
  404. //fmt.Println(pCardInfo)
  405. fmt.Println(pBusiCardInfo)
  406. pBusiCardInfo = Remove0000(pBusiCardInfo)
  407. //pCardInfo = Remove0000(pCardInfo)
  408. var ele ELeData
  409. err := json.Unmarshal([]byte(pBusiCardInfo), &ele)
  410. if err != nil {
  411. utils.ErrorLog("解析失败:%v", err)
  412. }
  413. token := ele.Data.EcCardToken
  414. if len(token) > 0 {
  415. result, _ := service.Jsyb1101B(org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, url, ak, token, cainfo, ele.Data.IdNo)
  416. var dat map[string]interface{}
  417. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  418. fmt.Println(dat)
  419. } else {
  420. fmt.Println(err)
  421. }
  422. c.ServeSuccessJSON(map[string]interface{}{
  423. "status": "0",
  424. //"card_info": pCardInfo,
  425. "busi_card_info": pBusiCardInfo,
  426. "token": token,
  427. "result": dat,
  428. "type": "2",
  429. })
  430. } else {
  431. c.ServeSuccessJSON(map[string]interface{}{
  432. "status": "-1",
  433. })
  434. }
  435. break
  436. }
  437. }
  438. func (c *NmController) TestGetBasBaseInit(code string, secret_key string, ak string) {
  439. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  440. Iinit := DllDef.MustFindProc("Init")
  441. //miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId)
  442. str := make([]byte, 2048)
  443. inputData := make(map[string]interface{})
  444. inputData["IP"] = "10.72.3.87"
  445. inputData["PORT"] = "8086"
  446. inputData["TIMEOUT"] = "180"
  447. inputData["LOG_PATH"] = "C:\\log\\"
  448. //
  449. inputData["EC_URL"] = "http://10.72.3.127:10086/localcfc/api/hsecfc/localQrCodeQuery"
  450. inputData["CARD_PASSTYPE"] = "1"
  451. inputData["API_NAME"] = "hssServives"
  452. inputData["API_VERSION"] = "1.0.0"
  453. inputData["ACCESS_KEY"] = ak
  454. inputData["SECRETKEY"] = secret_key
  455. inputData["ORG_ID"] = code
  456. inputData["EXT"] = ""
  457. bytesData, _ := json.Marshal(inputData)
  458. fmt.Println(inputData)
  459. fmt.Println(bytesData)
  460. ret, _, err := Iinit.Call((uintptr)(unsafe.Pointer(&bytesData[0])), (uintptr)(unsafe.Pointer(&str[0])))
  461. if ret != 0 {
  462. fmt.Println("SSCard的报错原因:", err)
  463. fmt.Println("SSCard的运算结果为:", ret)
  464. fmt.Println("SSCard的返回结果为:", string(str))
  465. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException)
  466. return
  467. }
  468. fmt.Println("SSCard的返回结果为:", string(str))
  469. result := int(ret)
  470. fmt.Println("SSCard的运算结果为1:", result)
  471. //initFlag = 1
  472. return
  473. }
  474. func (c *NmController) GetBasBaseInfo() (string, string) {
  475. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  476. readCard := DllDef.MustFindProc("ReadCardBas")
  477. fmt.Println(readCard)
  478. fmt.Println("!!!!!")
  479. pCardInfo := make([]byte, 2048)
  480. pBusiCardInfo := make([]byte, 8192)
  481. ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&pCardInfo[0])), (uintptr)(unsafe.Pointer(&pBusiCardInfo[0])))
  482. fmt.Println(ret2)
  483. fmt.Println(DeleteExtraSpace(string(pCardInfo)))
  484. fmt.Println(DeleteExtraSpace(string(pBusiCardInfo)))
  485. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pCardInfo)), "gbk", "utf-8"))
  486. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pBusiCardInfo)), "gbk", "utf-8"))
  487. if ret2 != 0 {
  488. return "", ""
  489. }
  490. return DeleteExtraSpace(string(pCardInfo)), DeleteExtraSpace(string(pBusiCardInfo))
  491. }
  492. func (c *NmController) GetELeInfo(code string, operator_id string, operator_name string) (string, string) {
  493. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  494. readCard := DllDef.MustFindProc("EcCardQuery")
  495. fmt.Println(readCard)
  496. fmt.Println("!!!!!")
  497. //pCardInfo := make([]byte, 8192)
  498. pBusiCardInfo := make([]byte, 8192)
  499. //data := make(map[string]interface{})
  500. //pData := make(map[string]interface{})
  501. //inputData := make(map[string]interface{})
  502. //inputData["orgId"] = code
  503. //inputData["businessType"] = "01101"
  504. //inputData["operatorId"] = operator_id
  505. //inputData["operatorName"] = operator_name
  506. //inputData["officeId"] = "001"
  507. //inputData["officeName"] = "血透室"
  508. //data["data"] = inputData
  509. //data["transType"] = "ec.query"
  510. //data["orgId"] = code
  511. //bytesData, _ := json.Marshal(data)
  512. //pCardInfo = bytesData
  513. ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&pBusiCardInfo[0])))
  514. fmt.Println(ret2)
  515. //fmt.Println(DeleteExtraSpace(string(bytesData)))
  516. fmt.Println(DeleteExtraSpace(string(pBusiCardInfo)))
  517. //fmt.Println(":", ConvertToString(DeleteExtraSpace(string(bytesData)), "gbk", "utf-8"))
  518. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pBusiCardInfo)), "gbk", "utf-8"))
  519. if ret2 != 0 {
  520. return "", ""
  521. }
  522. return DeleteExtraSpace(""), DeleteExtraSpace(string(pBusiCardInfo))
  523. }
  524. func IntPtr(n int) uintptr {
  525. return uintptr(n)
  526. }
  527. func StrPtr(s string) uintptr {
  528. return uintptr(unsafe.Pointer(syscall.StringBytePtr(s)))
  529. }
  530. type Charset string
  531. const (
  532. UTF8 = Charset("UTF-8")
  533. GB18030 = Charset("GB18030")
  534. )
  535. func ConvertToString(src string, srcCode string, tagCode string) string {
  536. srcCoder := mahonia.NewDecoder(srcCode)
  537. srcResult := srcCoder.ConvertString(src)
  538. tagCoder := mahonia.NewDecoder(tagCode)
  539. _, cdata, _ := tagCoder.Translate([]byte(srcResult), true)
  540. result := string(cdata)
  541. return result
  542. }
  543. func DeleteExtraSpace(s string) string {
  544. //删除字符串中的多余空格,有多个空格时,仅保留一个空格
  545. s1 := strings.Replace(s, " ", " ", -1) //替换tab为空格
  546. regstr := "\\s{2,}" //两个及两个以上空格的正则表达式
  547. reg, _ := regexp.Compile(regstr) //编译正则表达式
  548. s2 := make([]byte, len(s1)) //定义字符数组切片
  549. copy(s2, s1) //将字符串复制到切片
  550. spc_index := reg.FindStringIndex(string(s2)) //在字符串中搜索
  551. for len(spc_index) > 0 { //找到适配项
  552. s2 = append(s2[:spc_index[0]+1], s2[spc_index[1]:]...) //删除多余空格
  553. spc_index = reg.FindStringIndex(string(s2)) //继续在字符串中搜索
  554. }
  555. return string(s2)
  556. }
  557. func Remove0000(s string) string {
  558. str := make([]rune, 0, len(s))
  559. for _, v := range []rune(s) {
  560. if v == 0 {
  561. continue
  562. }
  563. str = append(str, v)
  564. }
  565. return string(str)
  566. }
  567. func saveJsLog(result string, request string, infno string, desc string, org_name string) {
  568. //org_id, _ := beego.AppConfig.Int64("org_id")
  569. //miConfig, _ := service.FindMedicalInsuranceInfo(org_id)
  570. dir := org_name + "日志"
  571. utils.Mkdir(dir)
  572. month := time.Unix(1557042972, 0).Format("1")
  573. year := time.Now().Format("2006")
  574. month = time.Now().Format("01")
  575. day := time.Now().Format("02")
  576. hour := time.Now().Format("15")
  577. min := time.Now().Format("04")
  578. sec := time.Now().Format("05")
  579. result_time := year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec
  580. file := org_name + "_" + year + month + day + "_log"
  581. file_name := file + ".txt"
  582. file_path := org_name + "日志" + "/" + file_name
  583. exist, _ := utils.PathExists(file_path)
  584. if exist { //存在
  585. fmt.Println("存在")
  586. f, err := os.OpenFile(file_path, os.O_WRONLY, 0644)
  587. if err != nil {
  588. fmt.Println("read fail")
  589. }
  590. content := "\r\n" + "\r\n" + "\r\n" + result_time + " " + "【 " + desc + infno + "入参" + " 】:" + "\r\n" + request + "\r\n" + result_time + " " + "【 " + desc + infno + "出参" + " 】:" + "\r\n" + result
  591. n, _ := f.Seek(0, 2)
  592. _, err = f.WriteAt([]byte(content), n)
  593. } else { //不存在
  594. fmt.Println("文件不存在,创建文件")
  595. f, err := os.Create(org_name + "日志" + "/" + file_name)
  596. defer f.Close()
  597. if err != nil {
  598. } else {
  599. _, err = f.Write([]byte("记录日志"))
  600. }
  601. }
  602. }