nm_controller.go 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672
  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. //med_type := strconv.FormatInt(int64(respJSON["med_type"].(float64)), 10)
  208. psn_no := respJSON["psn_no"].(string)
  209. 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)
  210. saveJsLog(result, requestLog, "2301", "上传明细", org_name)
  211. var dat2 map[string]interface{}
  212. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  213. } else {
  214. }
  215. var dat map[string]interface{}
  216. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  217. } else {
  218. }
  219. c.ServeSuccessJSON(map[string]interface{}{
  220. "pre": dat,
  221. "request_log": dat2,
  222. })
  223. }
  224. func (c *NmController) Post2302() {
  225. mdtrt_id := c.GetString("mdtrt_id")
  226. psn_no := c.GetString("psn_no")
  227. number := c.GetString("number")
  228. doctor := c.GetString("doctor")
  229. fixmedins_code := c.GetString("fixmedins_code")
  230. insuplc_admdvs := c.GetString("insuplc_admdvs")
  231. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  232. secret_key := c.GetString("secret_key")
  233. org_name := c.GetString("org_name")
  234. refund_type, _ := c.GetInt64("refund_type")
  235. result, requestLog := service.Gdyb2302(psn_no, mdtrt_id, org_name, doctor, insuplc_admdvs, mdtrtarea_admvs, secret_key, fixmedins_code, number, refund_type)
  236. saveJsLog(result, requestLog, "2302", "退明细", org_name)
  237. var dat2 map[string]interface{}
  238. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  239. } else {
  240. }
  241. var dat map[string]interface{}
  242. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  243. } else {
  244. }
  245. c.ServeSuccessJSON(map[string]interface{}{
  246. "pre": dat,
  247. "request_log": dat2,
  248. })
  249. }
  250. func (c *NmController) Post2303() {
  251. mdtrt_id := c.GetString("mdtrt_id")
  252. psn_no := c.GetString("psn_no")
  253. chrg_bchno := c.GetString("chrg_bchno")
  254. cert_no := c.GetString("cert_no")
  255. insutype_type := c.GetString("insutype_type")
  256. allTotal := c.GetString("total")
  257. id_card_type, _ := c.GetInt64("id_card_type")
  258. doctor := c.GetString("doctor")
  259. certificates, _ := c.GetInt64("certificates")
  260. fixmedins_code := c.GetString("fixmedins_code")
  261. insuplc_admdvs := c.GetString("insuplc_admdvs")
  262. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  263. secret_key := c.GetString("secret_key")
  264. org_name := c.GetString("org_name")
  265. 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)
  266. saveJsLog(result, src_resquest, "2303", "预结算", org_name)
  267. var dat2 map[string]interface{}
  268. if err := json.Unmarshal([]byte(src_resquest), &dat2); err == nil {
  269. } else {
  270. }
  271. var dat map[string]interface{}
  272. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  273. } else {
  274. }
  275. c.ServeSuccessJSON(map[string]interface{}{
  276. "pre": dat,
  277. "request_log": dat2,
  278. })
  279. }
  280. func (c *NmController) Post2304() {
  281. mdtrt_id := c.GetString("mdtrt_id")
  282. psn_no := c.GetString("psn_no")
  283. chrg_bchno := c.GetString("chrg_bchno")
  284. cert_no := c.GetString("cert_no")
  285. insutype_type := c.GetString("insutype_type")
  286. allTotal := c.GetString("total")
  287. id_card_type, _ := c.GetInt64("id_card_type")
  288. doctor := c.GetString("doctor")
  289. certificates, _ := c.GetInt64("certificates")
  290. fixmedins_code := c.GetString("fixmedins_code")
  291. insuplc_admdvs := c.GetString("insuplc_admdvs")
  292. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  293. secret_key := c.GetString("secret_key")
  294. org_name := c.GetString("org_name")
  295. 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)
  296. saveJsLog(result, src_resquest, "2304", "住院结算", org_name)
  297. var dat2 map[string]interface{}
  298. if err := json.Unmarshal([]byte(src_resquest), &dat2); err == nil {
  299. } else {
  300. }
  301. var dat map[string]interface{}
  302. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  303. } else {
  304. }
  305. c.ServeSuccessJSON(map[string]interface{}{
  306. "pre": dat,
  307. "request_log": dat2,
  308. })
  309. }
  310. func (c *NmController) Post2305() {
  311. mdtrt_id := c.GetString("mdtrt_id")
  312. psn_no := c.GetString("psn_no")
  313. doctor := c.GetString("doctor")
  314. setl_id := c.GetString("setl_id")
  315. fixmedins_code := c.GetString("fixmedins_code")
  316. insuplc_admdvs := c.GetString("insuplc_admdvs")
  317. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  318. secret_key := c.GetString("secret_key")
  319. org_name := c.GetString("org_name")
  320. result, requestLog := service.Gdyb2305(psn_no, mdtrt_id, setl_id, org_name, doctor, secret_key, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs)
  321. saveJsLog(result, requestLog, "2305", "退费", org_name)
  322. var dat2 map[string]interface{}
  323. if err := json.Unmarshal([]byte(requestLog), &dat2); err == nil {
  324. } else {
  325. }
  326. var dat map[string]interface{}
  327. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  328. } else {
  329. }
  330. c.ServeSuccessJSON(map[string]interface{}{
  331. "pre": dat,
  332. "request_log": dat2,
  333. })
  334. }
  335. func (c *NmController) Get2503() {
  336. }
  337. type ELeData struct {
  338. Data struct {
  339. SiNo string `json:"si_no"`
  340. SiCardNo string `json:"si_card_no"`
  341. SiCardIssueArea string `json:"si_card_issue_area"`
  342. Name string `json:"name"`
  343. Gender string `json:"gender"`
  344. IdType string `json:"id_type"`
  345. IdNo string `json:"id_no"`
  346. EcCardToken string `json:"ecCardToken"`
  347. } `json:"data"`
  348. Code int `json:"code"`
  349. Message string `json:"message"`
  350. }
  351. func (c *NmController) ReadCard() {
  352. fixmedins_code := c.GetString("fixmedins_code")
  353. secret_key := c.GetString("secret_key")
  354. ak := c.GetString("ak")
  355. org_name := c.GetString("org_name")
  356. doctor := c.GetString("doctor")
  357. insuplc_admdvs := c.GetString("insuplc_admdvs")
  358. mdtrtarea_admvs := c.GetString("mdtrtarea_admvs")
  359. url := c.GetString("url")
  360. cainfo := c.GetString("cainfo")
  361. id_card_type := c.GetString("id_card_type")
  362. operator_id := c.GetString("operator_id")
  363. operator := c.GetString("operator")
  364. //result, request := service.Jsyb9001(org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, 1, url, cainfo, ak)
  365. //fmt.Println(request)
  366. //fmt.Println(result)
  367. c.TestGetBasBaseInit(fixmedins_code, secret_key, ak)
  368. fmt.Println(id_card_type)
  369. switch id_card_type {
  370. case "1":
  371. pCardInfo, pBusiCardInfo := c.GetBasBaseInfo()
  372. pBusiCardInfo = Remove0000(pBusiCardInfo)
  373. pCardInfo = Remove0000(pCardInfo)
  374. fmt.Println(":", ConvertToString(pCardInfo, "gbk", "utf-8"))
  375. fmt.Println(pBusiCardInfo)
  376. fmt.Println(pCardInfo)
  377. bas := strings.Split(pCardInfo, "|")
  378. basNumber := bas[2]
  379. id_card_no := bas[1]
  380. card_sn := bas[3]
  381. id_card_type_int, _ := strconv.ParseInt(id_card_type, 10, 64)
  382. if len(pCardInfo) > 0 && len(pBusiCardInfo) > 0 {
  383. 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)
  384. var dat map[string]interface{}
  385. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  386. fmt.Println(dat)
  387. } else {
  388. fmt.Println(err)
  389. }
  390. c.ServeSuccessJSON(map[string]interface{}{
  391. "status": "0",
  392. "card_info": pCardInfo,
  393. "busi_card_info": pBusiCardInfo,
  394. "result": dat,
  395. "type": "1",
  396. })
  397. } else {
  398. c.ServeSuccessJSON(map[string]interface{}{
  399. "status": "-1",
  400. })
  401. }
  402. break
  403. case "3": //电子凭证
  404. _, pBusiCardInfo := c.GetELeInfo(fixmedins_code, operator_id, operator)
  405. //fmt.Println(pCardInfo)
  406. fmt.Println(pBusiCardInfo)
  407. pBusiCardInfo = Remove0000(pBusiCardInfo)
  408. //pCardInfo = Remove0000(pCardInfo)
  409. var ele ELeData
  410. err := json.Unmarshal([]byte(pBusiCardInfo), &ele)
  411. if err != nil {
  412. utils.ErrorLog("解析失败:%v", err)
  413. }
  414. token := ele.Data.EcCardToken
  415. if len(token) > 0 {
  416. result, _ := service.Jsyb1101B(org_name, doctor, fixmedins_code, insuplc_admdvs, mdtrtarea_admvs, secret_key, url, ak, token, cainfo, ele.Data.IdNo)
  417. var dat map[string]interface{}
  418. if err := json.Unmarshal([]byte(result), &dat); err == nil {
  419. fmt.Println(dat)
  420. } else {
  421. fmt.Println(err)
  422. }
  423. c.ServeSuccessJSON(map[string]interface{}{
  424. "status": "0",
  425. //"card_info": pCardInfo,
  426. "busi_card_info": pBusiCardInfo,
  427. "token": token,
  428. "result": dat,
  429. "type": "2",
  430. })
  431. } else {
  432. c.ServeSuccessJSON(map[string]interface{}{
  433. "status": "-1",
  434. })
  435. }
  436. break
  437. }
  438. }
  439. func (c *NmController) TestGetBasBaseInit(code string, secret_key string, ak string) {
  440. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  441. Iinit := DllDef.MustFindProc("Init")
  442. //miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId)
  443. str := make([]byte, 2048)
  444. inputData := make(map[string]interface{})
  445. inputData["IP"] = "10.72.3.87"
  446. inputData["PORT"] = "8086"
  447. inputData["TIMEOUT"] = "180"
  448. inputData["LOG_PATH"] = "C:\\log\\"
  449. //
  450. inputData["EC_URL"] = "http://10.72.3.127:10086/localcfc/api/hsecfc/localQrCodeQuery"
  451. inputData["CARD_PASSTYPE"] = "1"
  452. inputData["API_NAME"] = "hssServives"
  453. inputData["API_VERSION"] = "1.0.0"
  454. inputData["ACCESS_KEY"] = ak
  455. inputData["SECRETKEY"] = secret_key
  456. inputData["ORG_ID"] = code
  457. inputData["EXT"] = ""
  458. bytesData, _ := json.Marshal(inputData)
  459. fmt.Println(inputData)
  460. fmt.Println(bytesData)
  461. ret, _, err := Iinit.Call((uintptr)(unsafe.Pointer(&bytesData[0])), (uintptr)(unsafe.Pointer(&str[0])))
  462. if ret != 0 {
  463. fmt.Println("SSCard的报错原因:", err)
  464. fmt.Println("SSCard的运算结果为:", ret)
  465. fmt.Println("SSCard的返回结果为:", string(str))
  466. c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException)
  467. return
  468. }
  469. fmt.Println("SSCard的返回结果为:", string(str))
  470. result := int(ret)
  471. fmt.Println("SSCard的运算结果为1:", result)
  472. //initFlag = 1
  473. return
  474. }
  475. func (c *NmController) GetBasBaseInfo() (string, string) {
  476. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  477. readCard := DllDef.MustFindProc("ReadCardBas")
  478. fmt.Println(readCard)
  479. fmt.Println("!!!!!")
  480. pCardInfo := make([]byte, 2048)
  481. pBusiCardInfo := make([]byte, 8192)
  482. ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&pCardInfo[0])), (uintptr)(unsafe.Pointer(&pBusiCardInfo[0])))
  483. fmt.Println(ret2)
  484. fmt.Println(DeleteExtraSpace(string(pCardInfo)))
  485. fmt.Println(DeleteExtraSpace(string(pBusiCardInfo)))
  486. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pCardInfo)), "gbk", "utf-8"))
  487. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pBusiCardInfo)), "gbk", "utf-8"))
  488. if ret2 != 0 {
  489. return "", ""
  490. }
  491. return DeleteExtraSpace(string(pCardInfo)), DeleteExtraSpace(string(pBusiCardInfo))
  492. }
  493. func (c *NmController) GetELeInfo(code string, operator_id string, operator_name string) (string, string) {
  494. DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll")
  495. readCard := DllDef.MustFindProc("EcCardQuery")
  496. fmt.Println(readCard)
  497. fmt.Println("!!!!!")
  498. //pCardInfo := make([]byte, 8192)
  499. pBusiCardInfo := make([]byte, 8192)
  500. //data := make(map[string]interface{})
  501. //pData := make(map[string]interface{})
  502. //inputData := make(map[string]interface{})
  503. //inputData["orgId"] = code
  504. //inputData["businessType"] = "01101"
  505. //inputData["operatorId"] = operator_id
  506. //inputData["operatorName"] = operator_name
  507. //inputData["officeId"] = "001"
  508. //inputData["officeName"] = "血透室"
  509. //data["data"] = inputData
  510. //data["transType"] = "ec.query"
  511. //data["orgId"] = code
  512. //bytesData, _ := json.Marshal(data)
  513. //pCardInfo = bytesData
  514. ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&pBusiCardInfo[0])))
  515. fmt.Println(ret2)
  516. //fmt.Println(DeleteExtraSpace(string(bytesData)))
  517. fmt.Println(DeleteExtraSpace(string(pBusiCardInfo)))
  518. //fmt.Println(":", ConvertToString(DeleteExtraSpace(string(bytesData)), "gbk", "utf-8"))
  519. fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pBusiCardInfo)), "gbk", "utf-8"))
  520. if ret2 != 0 {
  521. return "", ""
  522. }
  523. return DeleteExtraSpace(""), DeleteExtraSpace(string(pBusiCardInfo))
  524. }
  525. func IntPtr(n int) uintptr {
  526. return uintptr(n)
  527. }
  528. func StrPtr(s string) uintptr {
  529. return uintptr(unsafe.Pointer(syscall.StringBytePtr(s)))
  530. }
  531. type Charset string
  532. const (
  533. UTF8 = Charset("UTF-8")
  534. GB18030 = Charset("GB18030")
  535. )
  536. func ConvertToString(src string, srcCode string, tagCode string) string {
  537. srcCoder := mahonia.NewDecoder(srcCode)
  538. srcResult := srcCoder.ConvertString(src)
  539. tagCoder := mahonia.NewDecoder(tagCode)
  540. _, cdata, _ := tagCoder.Translate([]byte(srcResult), true)
  541. result := string(cdata)
  542. return result
  543. }
  544. func DeleteExtraSpace(s string) string {
  545. //删除字符串中的多余空格,有多个空格时,仅保留一个空格
  546. s1 := strings.Replace(s, " ", " ", -1) //替换tab为空格
  547. regstr := "\\s{2,}" //两个及两个以上空格的正则表达式
  548. reg, _ := regexp.Compile(regstr) //编译正则表达式
  549. s2 := make([]byte, len(s1)) //定义字符数组切片
  550. copy(s2, s1) //将字符串复制到切片
  551. spc_index := reg.FindStringIndex(string(s2)) //在字符串中搜索
  552. for len(spc_index) > 0 { //找到适配项
  553. s2 = append(s2[:spc_index[0]+1], s2[spc_index[1]:]...) //删除多余空格
  554. spc_index = reg.FindStringIndex(string(s2)) //继续在字符串中搜索
  555. }
  556. return string(s2)
  557. }
  558. func Remove0000(s string) string {
  559. str := make([]rune, 0, len(s))
  560. for _, v := range []rune(s) {
  561. if v == 0 {
  562. continue
  563. }
  564. str = append(str, v)
  565. }
  566. return string(str)
  567. }
  568. func saveJsLog(result string, request string, infno string, desc string, org_name string) {
  569. //org_id, _ := beego.AppConfig.Int64("org_id")
  570. //miConfig, _ := service.FindMedicalInsuranceInfo(org_id)
  571. dir := org_name + "日志"
  572. utils.Mkdir(dir)
  573. month := time.Unix(1557042972, 0).Format("1")
  574. year := time.Now().Format("2006")
  575. month = time.Now().Format("01")
  576. day := time.Now().Format("02")
  577. hour := time.Now().Format("15")
  578. min := time.Now().Format("04")
  579. sec := time.Now().Format("05")
  580. result_time := year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec
  581. file := org_name + "_" + year + month + day + "_log"
  582. file_name := file + ".txt"
  583. file_path := org_name + "日志" + "/" + file_name
  584. exist, _ := utils.PathExists(file_path)
  585. if exist { //存在
  586. fmt.Println("存在")
  587. f, err := os.OpenFile(file_path, os.O_WRONLY, 0644)
  588. if err != nil {
  589. fmt.Println("read fail")
  590. }
  591. content := "\r\n" + "\r\n" + "\r\n" + result_time + " " + "【 " + desc + infno + "入参" + " 】:" + "\r\n" + request + "\r\n" + result_time + " " + "【 " + desc + infno + "出参" + " 】:" + "\r\n" + result
  592. n, _ := f.Seek(0, 2)
  593. _, err = f.WriteAt([]byte(content), n)
  594. } else { //不存在
  595. fmt.Println("文件不存在,创建文件")
  596. f, err := os.Create(org_name + "日志" + "/" + file_name)
  597. defer f.Close()
  598. if err != nil {
  599. } else {
  600. _, err = f.Write([]byte("记录日志"))
  601. }
  602. }
  603. }