sign_api_controller.go 33KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129
  1. package controllers
  2. import (
  3. "XT_New/models"
  4. "XT_New/service"
  5. "encoding/base64"
  6. "encoding/json"
  7. "fmt"
  8. "github.com/astaxie/beego"
  9. "github.com/jung-kurt/gofpdf"
  10. "io/ioutil"
  11. "time"
  12. )
  13. type SignApiController struct {
  14. BaseAuthAPIController
  15. }
  16. func SignApiRegistRouters() {
  17. //获取短信验证码
  18. beego.Router("/api/sign/getsign", &SignApiController{}, "Get:GetSign")
  19. //创建个人用户并实名
  20. beego.Router("/api/sign/createrusername", &SignApiController{}, "Get:CreateUserName")
  21. //创建企业用户并实名
  22. beego.Router("/api/sign/createenterpriserealname", &SignApiController{}, "Get:CreateEnterPriseRealName")
  23. //添加企业成员
  24. beego.Router("/api/sign/createuserid", &SignApiController{}, "Get:CreateUserId")
  25. //创建个人印章
  26. beego.Router("/api/sign/createpersionseal", &SignApiController{}, "Get:CreatePersionSeal")
  27. //上传文件创建创建合同
  28. beego.Router("/api/sign/createuploadpact", &SignApiController{}, "Get:CreateUploadPact")
  29. //添加合同签署人
  30. beego.Router("/api/sign/addcontractsignatory", &SignApiController{}, "Get:AddContractSignatory")
  31. //获取短信验证
  32. beego.Router("/api/sign/getverificationcode", &SignApiController{}, "Get:GetVerificationCode")
  33. //后台签署(返回签署文件)
  34. beego.Router("/api/sign/createbackstagesign", &SignApiController{}, "Get:CreateBackStageSign")
  35. //署意愿认证-短信验证
  36. beego.Router("/api/sign/totestelment", &SignApiController{}, "Get:CreateEnterprise")
  37. //测试PDF
  38. beego.Router("/api/sign/totestthrityment", &SignApiController{}, "Get:GetTestThrityMent")
  39. //CA企业认证
  40. beego.Router("/api/sign/saveenerprise", &SignApiController{}, "Post:SaveEnerprise")
  41. //
  42. beego.Router("/api/sign/getenerprisebyid", &SignApiController{}, "Get:GetEnerPriseById")
  43. beego.Router("/api/sign/getmobilecode", &SignApiController{}, "Get:GetMobileCode")
  44. beego.Router("/api/sign/getpersionenterprise", &SignApiController{}, "Post:GetPersionEnterPrise")
  45. beego.Router("/api/sign/getpersenterprisebyid", &SignApiController{}, "Get:GetPerseEnterPriseById")
  46. beego.Router("/api/device/sign/creterpersionseal", &SignApiController{}, "Get:CreateNewPersionSeal")
  47. beego.Router("/api/device/sign/createnewenterprise", &SignApiController{}, "Get:CreateNewEnterPrise")
  48. beego.Router("/api/device/contractid", &SignApiController{}, "Get:GetContractId")
  49. beego.Router("/api/device/endenterprise", &SignApiController{}, "Get:EndEnterPrise")
  50. beego.Router("/api/device/getenterprisedetail", &SignApiController{}, "Get:GetEnterPriseDetail")
  51. beego.Router("/api/device/uploadprintorder", &SignApiController{}, "Post:UploadPrintOrder")
  52. //sdk 版本
  53. beego.Router("/api/device/createqianshuusername", &SignApiController{}, "Post:CreateQianshuUserName")
  54. //发送消息
  55. beego.Router("/api/device/createskdsendinformation", &SignApiController{}, "Post:CreateSdkSendInformation")
  56. //删除
  57. beego.Router("/api/device/tosavepdfinformation", &SignApiController{}, "Get:SavePdfInformation")
  58. beego.Router("/api/device/tocheckinformation", &SignApiController{}, "Get:ToCheckInformation")
  59. }
  60. // 短信服务接口
  61. func (this *SignApiController) GetSign() {
  62. phone := this.GetString("phone")
  63. fmt.Println("phone", phone)
  64. var tempphone string
  65. tempphone = "13318464642"
  66. sign := service.GetSignNameByPhone(tempphone)
  67. this.ServeSuccessJSON(map[string]interface{}{
  68. "sign": sign,
  69. })
  70. return
  71. }
  72. type Result2121 struct {
  73. Phone string `json:"phone"`
  74. DisPlayName string `json:"dis_play_name"`
  75. Authentication string `json:"authentication"`
  76. TwAuthReq struct {
  77. OneLineAuth string `json:"oneLineAuth"`
  78. ApiAuthReq struct {
  79. RealName float64 `json:"real_name"`
  80. IdCardType string `json:"id_card_type"`
  81. IdCardNum string `json:"id_card_num"`
  82. BankCard string `json:"bank_card"`
  83. CodeNumber string `json:"code_number"`
  84. VerifyCode string `json:"verify_code"`
  85. } `json:"apiAuthReq"`
  86. } `json:"twAuthReq"`
  87. }
  88. type MapData struct {
  89. dat struct {
  90. Code float64 `json:"code"`
  91. data struct {
  92. userId string `json:"userId"`
  93. }
  94. }
  95. }
  96. // 创建个人用户并实名
  97. func (this *SignApiController) CreateUserName() {
  98. phone := this.GetString("phone")
  99. disPlayName := this.GetString("disPlayName")
  100. sign, userId := service.CreateUserName(phone, disPlayName)
  101. var dat map[string]interface{}
  102. if err := json.Unmarshal([]byte(sign), &dat); err == nil {
  103. fmt.Println(dat)
  104. } else {
  105. fmt.Println(err)
  106. }
  107. this.ServeSuccessJSON(map[string]interface{}{
  108. "sign": sign,
  109. "dat": dat,
  110. "userId": userId,
  111. })
  112. return
  113. }
  114. // 创建个人印章
  115. func (this *SignApiController) CreatePersionSeal() {
  116. user_id := this.GetString("user_id")
  117. person_seal_type, _ := this.GetInt64("person_seal_type")
  118. person_seal_name := this.GetString("person_seal_name")
  119. person_seal_base := this.GetString("person_seal_base")
  120. color, _ := this.GetInt64("color")
  121. alpha, _ := this.GetInt64("alpha")
  122. width, _ := this.GetInt64("width")
  123. height, _ := this.GetInt64("height")
  124. border, _ := this.GetInt64("border")
  125. font_type, _ := this.GetInt64("font_type")
  126. sign, personSealId := service.CreatePersionSeal(user_id, person_seal_type, person_seal_name, person_seal_base, color, alpha, width, height, border, font_type)
  127. var dat map[string]interface{}
  128. if err := json.Unmarshal([]byte(sign), &dat); err == nil {
  129. fmt.Println(dat)
  130. } else {
  131. fmt.Println(err)
  132. }
  133. this.ServeSuccessJSON(map[string]interface{}{
  134. "sign": sign,
  135. "dat": dat,
  136. "personSealId": personSealId,
  137. })
  138. return
  139. }
  140. func (this *SignApiController) CreateUploadPact() {
  141. contractcode := this.GetString("contractcode")
  142. contractname := this.GetString("contractname")
  143. signcount, _ := this.GetInt64("signcount")
  144. docname := this.GetString("docname")
  145. contractbase := this.GetString("contractbase")
  146. creator := this.GetString("creator")
  147. enterpriseid := this.GetString("enterpriseid")
  148. signvalidays, _ := this.GetInt64("signvalidays")
  149. sysncurl := this.GetString("sysncurl")
  150. asyncurl := this.GetString("asyncurl")
  151. sign := service.CreateUploadPact(contractcode, contractname, signcount, docname, contractbase, creator, enterpriseid, signvalidays, sysncurl, asyncurl)
  152. this.ServeSuccessJSON(map[string]interface{}{
  153. "sign": sign,
  154. })
  155. return
  156. }
  157. // 添加企业成员
  158. func (this *SignApiController) CreateUserId() {
  159. userId := this.GetString("userId")
  160. displayName := this.GetString("displayName")
  161. sign := service.CreateUserId(userId, displayName)
  162. this.ServeSuccessJSON(map[string]interface{}{
  163. "sign": sign,
  164. })
  165. return
  166. }
  167. func (this *SignApiController) CreateEnterPriseRealName() {
  168. enterprisename := this.GetString("enterprisename")
  169. sign := service.CreateEnterPriseRealName(enterprisename)
  170. this.ServeSuccessJSON(map[string]interface{}{
  171. "sign": sign,
  172. })
  173. return
  174. }
  175. // 添加合同签署人
  176. func (this *SignApiController) AddContractSignatory() {
  177. contractId := this.GetString("contractId")
  178. signers := this.GetString("signers")
  179. var newContract models.NewContract
  180. newContract.ContractId = "156001444267295949"
  181. sign := service.AddContractSignatory(contractId, signers, newContract)
  182. this.ServeSuccessJSON(map[string]interface{}{
  183. "sign": sign,
  184. })
  185. return
  186. }
  187. type Struct2401 struct {
  188. someTimestampStyle []someTimestampStyle
  189. }
  190. type someTimestampStyle struct {
  191. ControlsKey string
  192. Pattern string
  193. Color string
  194. }
  195. func (this *SignApiController) CreateBackStageSign() {
  196. contractId := this.GetString("contractId")
  197. signers := this.GetString("signers")
  198. sign := service.CreateBackStageSign(contractId, signers)
  199. this.ServeSuccessJSON(map[string]interface{}{
  200. "sign": sign,
  201. })
  202. return
  203. }
  204. func (this *SignApiController) GetVerificationCode() {
  205. sign := service.GetVerificationCode()
  206. this.ServeSuccessJSON(map[string]interface{}{
  207. "sign": sign,
  208. })
  209. return
  210. }
  211. func (this *SignApiController) CreateEnterprise() {
  212. sign := service.CreateEnterprise()
  213. this.ServeSuccessJSON(map[string]interface{}{
  214. "sign": sign,
  215. })
  216. return
  217. }
  218. func (this *SignApiController) GetTestThrityMent() {
  219. pdf := gofpdf.New("P", "mm", "A4", "")
  220. pdf.AddPage()
  221. pdf.SetFont("Arial", "B", 16)
  222. pdf.Cell(40, 10, "Hello, World!")
  223. pdf.OutputFileAndClose("output.pdf")
  224. this.ServeSuccessJSON(map[string]interface{}{
  225. "sign": "msg",
  226. })
  227. return
  228. }
  229. func loremList() []string {
  230. return []string{
  231. "我爱你中国" +
  232. "tempor incididunt ut labore et dolore magna aliqua.",
  233. "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut " +
  234. "aliquip ex ea commodo consequat.",
  235. "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum " +
  236. "dolore eu fugiat nulla pariatur.",
  237. "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui " +
  238. "officia deserunt mollit anim id est laborum.",
  239. }
  240. }
  241. func (this *SignApiController) SaveEnerprise() {
  242. orgId := this.GetAdminUserInfo().CurrentOrgId
  243. creater := this.GetAdminUserInfo().AdminUser.Id
  244. dataBody := make(map[string]interface{}, 0)
  245. err := json.Unmarshal(this.Ctx.Input.RequestBody, &dataBody)
  246. fmt.Println("err", err)
  247. id := int64(dataBody["id"].(float64))
  248. org_type := int64(dataBody["org_type"].(float64))
  249. enterprise_name := dataBody["enterprise_name"].(string)
  250. code := dataBody["code"].(string)
  251. org_code := dataBody["org_code"].(string)
  252. legal_person_name := dataBody["legal_person_name"].(string)
  253. legal_id_card_num := dataBody["legal_id_card_num"].(string)
  254. legal_phone := dataBody["legal_phone"].(string)
  255. enterprise := models.XtDeviceEnterprise{
  256. ID: id,
  257. UserOrgId: orgId,
  258. OrgType: org_type,
  259. EnterpriseName: enterprise_name,
  260. Code: code,
  261. OrgCode: org_code,
  262. LegalPersonName: legal_person_name,
  263. LegalIdCardNum: legal_id_card_num,
  264. LegalPhone: legal_phone,
  265. Creater: creater,
  266. Ctime: time.Now().Unix(),
  267. Mtime: 0,
  268. Enterpriseid: "",
  269. Status: 1,
  270. }
  271. service.SaveEnerPrise(enterprise)
  272. //查找该机构有没有认证信息
  273. lastenterprise, _ := service.GetEnterPriseByUserOrgId(orgId)
  274. //调用企业认证接口
  275. if lastenterprise.ID > 0 {
  276. enterPrise, enterpriseid := service.CreateNewEnterPriseRealName(lastenterprise)
  277. fmt.Println("enterprise2ooo2oo2o2o2o", enterPrise)
  278. updateEnterprise := models.XtDeviceEnterprise{
  279. ID: enterprise.ID,
  280. UserOrgId: orgId,
  281. OrgType: org_type,
  282. EnterpriseName: enterprise_name,
  283. Code: code,
  284. OrgCode: org_code,
  285. LegalPersonName: legal_person_name,
  286. LegalIdCardNum: legal_id_card_num,
  287. LegalPhone: legal_phone,
  288. Creater: creater,
  289. Ctime: time.Now().Unix(),
  290. Mtime: 0,
  291. Enterpriseid: enterpriseid,
  292. Status: 1,
  293. }
  294. service.SaveEnerPrise(updateEnterprise)
  295. this.ServeSuccessJSON(map[string]interface{}{
  296. "enterPrise": enterPrise,
  297. })
  298. return
  299. }
  300. }
  301. func (this *SignApiController) GetEnerPriseById() {
  302. orgId := this.GetAdminUserInfo().CurrentOrgId
  303. enterPrise, _ := service.GetEnterPriseByUserOrgId(orgId)
  304. this.ServeSuccessJSON(map[string]interface{}{
  305. "enterPrise": enterPrise,
  306. })
  307. return
  308. }
  309. func (this *SignApiController) GetMobileCode() {
  310. phone := this.GetString("phone")
  311. sign, orderNumber := service.GetNewSignNameByPhone(phone)
  312. this.ServeSuccessJSON(map[string]interface{}{
  313. "sign": sign,
  314. "orderNumber": orderNumber,
  315. })
  316. return
  317. }
  318. func (this *SignApiController) GetPersionEnterPrise() {
  319. orgId := this.GetAdminUserInfo().CurrentOrgId
  320. creater := this.GetAdminUserInfo().AdminUser.Id
  321. dataBody := make(map[string]interface{}, 0)
  322. err := json.Unmarshal(this.Ctx.Input.RequestBody, &dataBody)
  323. fmt.Println("err", err)
  324. id := int64(dataBody["id"].(float64))
  325. admin_user_id := int64(dataBody["admin_user_id"].(float64))
  326. code := dataBody["code"].(string)
  327. display_name := dataBody["display_name"].(string)
  328. id_card_num := dataBody["id_card_num"].(string)
  329. phone := dataBody["phone"].(string)
  330. enterprise := models.XtDevicePersonEnterprise{
  331. ID: id,
  332. AdminUserId: admin_user_id,
  333. DisplayName: display_name,
  334. Phone: phone,
  335. IdCardNum: id_card_num,
  336. UserOrgId: orgId,
  337. Status: 1,
  338. Creater: creater,
  339. Ctime: time.Now().Unix(),
  340. Mtime: 0,
  341. UserId: "",
  342. }
  343. service.SavePersonEnterPrise(enterprise)
  344. lastEnterPrise, _ := service.GetLastPersonEnterPrise(admin_user_id, orgId)
  345. _, orderNumber := service.GetNewSignNameByPhone(phone)
  346. personEnterPrse, UserId := service.CreateNewUserName(lastEnterPrise.Phone, lastEnterPrise.DisplayName, code, orderNumber, lastEnterPrise.IdCardNum)
  347. firstenterprise := models.XtDevicePersonEnterprise{
  348. ID: id,
  349. AdminUserId: admin_user_id,
  350. DisplayName: display_name,
  351. Phone: phone,
  352. IdCardNum: id_card_num,
  353. UserOrgId: orgId,
  354. Status: 1,
  355. Creater: creater,
  356. Ctime: time.Now().Unix(),
  357. Mtime: 0,
  358. UserId: UserId,
  359. }
  360. service.SavePersonEnterPrise(firstenterprise)
  361. this.ServeSuccessJSON(map[string]interface{}{
  362. "personEnterPrse": personEnterPrse,
  363. })
  364. return
  365. }
  366. func (this *SignApiController) GetPerseEnterPriseById() {
  367. orgId := this.GetAdminUserInfo().CurrentOrgId
  368. admin_user_id, _ := this.GetInt64("admin_user_id")
  369. lastPerson, _ := service.GetLastPersonEnterPrise(admin_user_id, orgId)
  370. this.ServeSuccessJSON(map[string]interface{}{
  371. "lastPerson": lastPerson,
  372. })
  373. return
  374. }
  375. func (this *SignApiController) CreateNewPersionSeal() {
  376. orgId := this.GetAdminUserInfo().CurrentOrgId
  377. admin_user_id, _ := this.GetInt64("admin_user_id")
  378. creater := this.GetAdminUserInfo().AdminUser.Id
  379. userName := service.GetLastAdminUserName(admin_user_id, orgId)
  380. //查询医护是否完成认证
  381. lastPerson, _ := service.GetLastPersonEnterPrise(admin_user_id, orgId)
  382. if lastPerson.ID > 0 {
  383. this.ServeDynamicFailJsonSend("已完成认证,无需再次认证")
  384. return
  385. }
  386. if lastPerson.ID == 0 {
  387. //去认证
  388. personSeal, sealBase64 := service.CreateSKDPersionSeal(lastPerson.UserId, userName)
  389. fmt.Println("sealBase64", sealBase64)
  390. enterprise := models.XtDevicePersonEnterprise{
  391. AdminUserId: admin_user_id,
  392. DisplayName: "",
  393. Phone: "",
  394. IdCardNum: "",
  395. UserOrgId: orgId,
  396. Status: 1,
  397. Creater: creater,
  398. Ctime: time.Now().Unix(),
  399. Mtime: 0,
  400. UserId: "",
  401. Personsealid: "",
  402. Sealid: "",
  403. UserName: userName,
  404. Sealbase64: sealBase64,
  405. }
  406. service.CreateEnterpriseUserName(enterprise)
  407. this.ServeSuccessJSON(map[string]interface{}{
  408. "personSeal": personSeal,
  409. })
  410. return
  411. }
  412. }
  413. func (this *SignApiController) CreateNewEnterPrise() {
  414. //orgId := this.GetAdminUserInfo().CurrentOrgId
  415. //
  416. //admin_user_id, _ := this.GetInt64("admin_user_id")
  417. //
  418. //enterPrise, _ := service.GetEnterPriseByUserOrgId(orgId)
  419. //fmt.Println("地址日活", enterPrise.Enterpriseid)
  420. //lastPerson, _ := service.GetLastPersonEnterPrise(admin_user_id, orgId)
  421. //
  422. //newEnterPrise, sealId := service.CreateNewEnterPrise(enterPrise.Enterpriseid, lastPerson.UserId)
  423. //
  424. //fmt.Println("newEnterPrise",newEnterPrise)
  425. //service.UpdatePersonEnterPrise(lastPerson.ID, sealId)
  426. newEnterPrise, _ := service.CreateSDKEnterPrise()
  427. //var url string
  428. //url = "http://localhost:8890/sdk/seal/createEnterpriseSeal"
  429. //appId := beego.AppConfig.String("sign_appid")
  430. //
  431. //serviceKye := beego.AppConfig.String("serviceKye")
  432. //
  433. //serviceCode := beego.AppConfig.String("serviceCode")
  434. //
  435. //maprequest := make(map[string]interface{})
  436. //
  437. //maprequest["sealType"] = 1
  438. //maprequest["enterpriseName"] = "深圳伊森时光科技有限公司"
  439. //maprequest["horizontalText"] = "财务专用章"
  440. //
  441. //byterequest, _ := json.Marshal(maprequest)
  442. //reader := bytes.NewReader(byterequest)
  443. //
  444. //signatureStr, _ := service.GenerateHMACSHA1SignatureTwo(maprequest, serviceKye, serviceCode)
  445. //fmt.Println("signatureStr", signatureStr)
  446. //request, err := http.NewRequest("POST", url, reader)
  447. //
  448. //fmt.Println("request23222222222222222", request)
  449. //if err != nil {
  450. // fmt.Println(err.Error())
  451. //}
  452. //
  453. //request.Header.Set("appId", appId)
  454. //request.Header.Set("serviceCode", serviceCode)
  455. //request.Header.Set("Content-Type", "application/json;charset=UTF-8")
  456. //request.Header.Set("Content-Signature", signatureStr)
  457. //client := http.Client{}
  458. //
  459. //resp, err := client.Do(request)
  460. //if err != nil {
  461. // fmt.Println(err.Error())
  462. //
  463. //}
  464. //respBytes, err := ioutil.ReadAll(resp.Body)
  465. //if err != nil {
  466. // fmt.Println(err.Error())
  467. //
  468. //}
  469. //str := string(respBytes)
  470. //fmt.Println("strwowowowowo", str)
  471. //
  472. //var respJSON map[string]interface{}
  473. //if err := json.Unmarshal([]byte(string(respBytes)), &respJSON); err != nil {
  474. // utils.ErrorLog("接口返回数据解析JSON失败: %v", err)
  475. //}
  476. this.ServeSuccessJSON(map[string]interface{}{
  477. "newEnterPrise": newEnterPrise,
  478. })
  479. return
  480. }
  481. func (this *SignApiController) GetContractId() {
  482. sign := service.GetContractId()
  483. this.ServeSuccessJSON(map[string]interface{}{
  484. "sign": sign,
  485. })
  486. return
  487. }
  488. func (this *SignApiController) EndEnterPrise() {
  489. sign := service.EndEnterPrise()
  490. this.ServeSuccessJSON(map[string]interface{}{
  491. "sign": sign,
  492. })
  493. return
  494. }
  495. func (this *SignApiController) GetEnterPriseDetail() {
  496. sign, url := service.GetEnterPriseDetail()
  497. this.ServeSuccessJSON(map[string]interface{}{
  498. "sign": sign,
  499. "url": url,
  500. })
  501. return
  502. }
  503. func (this *SignApiController) UploadPrintOrder() {
  504. fmt.Println("WOOWOWOWOWOWOWOWOWOWOWWOOWOWWO")
  505. //list, _ := service.GetAllPatientNew(10188)
  506. //for _, item := range list {
  507. //
  508. // hans := item.Name // 要转换的汉字字符串
  509. // // 创建一个拼音转换器
  510. // p := pinyin.NewArgs()
  511. //
  512. // // 将汉字转为拼音
  513. // pinyinSlice := pinyin.Pinyin(hans, p)
  514. //
  515. // // 输出拼音
  516. // fmt.Println("Pinyin:", pinyinSlice)
  517. //
  518. // // 获取首字母
  519. // firstLetter := ""
  520. // for _, py := range pinyinSlice {
  521. // if len(py) > 0 {
  522. // firstLetter += string(py[0][0])
  523. // }
  524. // }
  525. //
  526. // item.FirstLetter = firstLetter
  527. // service.UpdatePatientNew(item.ID, item.FirstLetter)
  528. // // 输出首字母
  529. // //fmt.Println("First Letter:", firstLetter)
  530. //}
  531. pdf := gofpdf.New("P", "mm", "A4", "")
  532. pdf.AddPage()
  533. pdf.Text(5, 10, "血液净化治疗记录单")
  534. pdf.AddUTF8Font("simfang", "", "D:/go/src/pkg/mod/github.com/jung-kurt/gofpdf@v1.16.2/font/simfang.ttf")
  535. pdf.SetFont("simfang", "", 20)
  536. var title = "血液透析(滤过)记录表单"
  537. //表格居中显示
  538. pdf.Text(70, 10, title)
  539. wd := pdf.GetStringWidth(title) + 100
  540. fmt.Println("wd", wd)
  541. pdf.SetY(100) //先要设置 Y,然后再设置 X。否则,会导致 X 失效
  542. pdf.SetX((210 - wd) / 2) //水平居中的算法
  543. var numuber = "张三"
  544. //表格居中显示
  545. pdf.SetFont("", "", 14) // 设置加粗字体和字号
  546. pdf.Text(10, 20, "姓名:"+numuber)
  547. pdf.SetFont("", "", 14) // 设置加粗字体和字号
  548. pdf.Text(35, 20, "性别:"+"男")
  549. pdf.SetFont("", "", 14) // 设置正常字体和字号
  550. pdf.Text(60, 20, "年龄:"+"18")
  551. pdf.SetFont("", "", 14) // 设置正常字体和字号
  552. pdf.Text(90, 20, "门诊:"+"住院")
  553. pdf.SetFont("", "", 14) // 设置正常字体和字号
  554. pdf.Text(120, 20, "病区:"+"A区")
  555. pdf.SetFont("", "", 14) // 设置正常字体和字号
  556. pdf.Text(150, 20, "床号:"+"1号")
  557. pdf.SetFont("", "", 14) // 设置正常字体和字号
  558. pdf.Text(180, 20, "透析号:")
  559. pdf.SetFont("", "", 14) // 设置正常字体和字号
  560. pdf.Text(210, 20, "住院号/门诊号:")
  561. pdf.SetFont("", "", 14) // 设置正常字体和字号
  562. //表格居中显示
  563. pdf.SetFont("", "", 14) // 设置加粗字体和字号
  564. pdf.Text(10, 30, "入科方式:"+numuber)
  565. pdf.SetFont("", "", 14) // 设置加粗字体和字号
  566. pdf.Text(60, 30, "诊断:")
  567. pdf.AddUTF8Font("simfang", "", "D:/go/src/pkg/mod/github.com/jung-kurt/gofpdf@v1.16.2/font/simfang.ttf")
  568. pdf.SetFont("simfang", "", 16) // 设置字体、字号
  569. pdf.SetFillColor(200, 200, 200)
  570. //// 设置起始位置
  571. var x = 10.0
  572. var y = 40.0
  573. pdf.SetXY(x, y)
  574. // 设置填充颜色
  575. pdf.CellFormat(200, 15, "透析前情况", "1", 0, "CM", false, 0, "") // 使用CellFormat()方法创建表格单元格
  576. //param1: 单元格的宽,为0时表示一行,单位根据new()里面设置的来
  577. //param2: 单元格的高,不能为0,单位根据new()里面设置的来
  578. //param3: 单元格内容
  579. //param4: 边框样式,一个空字符串表示无边框,“1”表示全边框,一个或多个“L”,“T”,“R”和“B”分别表示边界左,上,右,下
  580. //param5: 表示调用后当前位置的位置。可能的值为0,接着当前行继续,1换行,2目前没有试过
  581. //param6: 字体的位置,水平对齐包括"L", “C"或"R”(左,中,右)。垂直对齐由包含控制"T", “M”, “B"或"A”(上,中,下,基线),可以组合,比如说LT,CM等等
  582. //param7: 是否填充单元格,需要调用SetFillColor()方法.默认false
  583. //param8: 内部超链接,没用过
  584. //param9: 超链接,没用过
  585. //pdf.AddUTF8Font("simfang", "", "D:/go/src/pkg/mod/github.com/jung-kurt/gofpdf@v1.16.2/font/simfang.ttf")
  586. //pdf.SetFont("simfang", "", 8) // 设置字体、字号
  587. //pdf.SetFillColor(200, 200, 200) // 设置填充颜色
  588. //
  589. //// 设置起始位置
  590. //var x = 10.0
  591. //var y = 40.0
  592. ////创建8行2列的表格
  593. //
  594. //for j := 0; j < 1; j++ {
  595. // // 填充每个单元格的内容
  596. // pdf.SetXY(x, y) // 设置当前位置
  597. // pdf.CellFormat(20, 15, "时间", "1", 0, "CM", false, 0, "") // 使用CellFormat()方法创建表格单元格
  598. // pdf.CellFormat(20, 15, "血压(mmHg)", "1", 0, "CM", false, 0, "")
  599. // pdf.CellFormat(20, 15, "脉搏(次/分)", "1", 0, "CM", false, 0, "")
  600. // pdf.CellFormat(20, 15, "呼吸(次/分)", "1", 0, "CM", false, 0, "")
  601. // pdf.CellFormat(20, 15, "血流量(ml/min)", "1", 0, "CM", false, 0, "")
  602. // pdf.CellFormat(20, 15, "静脉压(mmHg)", "1", 0, "CM", false, 0, "")
  603. // pdf.CellFormat(20, 15, "跨膜压(mmHg)", "1", 0, "CM", false, 0, "")
  604. // pdf.CellFormat(20, 15, "透析液温(℃)", "1", 0, "CM", false, 0, "")
  605. // pdf.CellFormat(20, 15, "钠浓度(mmol/L)", "1", 0, "CM", false, 0, "")
  606. // pdf.CellFormat(20, 15, "超滤量(ml) ", "1", 0, "CM", false, 0, "")
  607. // pdf.CellFormat(35, 15, "病情变化及处理", "1", 0, "CM", false, 0, "")
  608. //
  609. // y += 15 // 下一行起始位置的y坐标增加60(单元格高度)
  610. //}
  611. //for j := 0; j < 1; j++ {
  612. // // 填充每个单元格的内容
  613. // pdf.SetXY(x, y) // 设置当前位置
  614. // pdf.CellFormat(20, 15, "13:57", "1", 0, "CM", false, 0, "") // 使用CellFormat()方法创建表格单元格
  615. // pdf.CellFormat(20, 15, "120/90", "1", 0, "CM", false, 0, "")
  616. // pdf.CellFormat(20, 15, "64", "1", 0, "CM", false, 0, "")
  617. // pdf.CellFormat(20, 15, "100", "1", 0, "CM", false, 0, "")
  618. // pdf.CellFormat(20, 15, "100", "1", 0, "CM", false, 0, "")
  619. // pdf.CellFormat(20, 15, "100", "1", 0, "CM", false, 0, "")
  620. // pdf.CellFormat(20, 15, "90", "1", 0, "CM", false, 0, "")
  621. // pdf.CellFormat(20, 15, "36.5", "1", 0, "CM", false, 0, "")
  622. // pdf.CellFormat(20, 15, "26", "1", 0, "CM", false, 0, "")
  623. // pdf.CellFormat(20, 15, "100", "1", 0, "CM", false, 0, "")
  624. // pdf.CellFormat(35, 15, "及时九嶷山", "1", 0, "CM", false, 0, "")
  625. //
  626. // y += 15 // 下一行起始位置的y坐标增加60(单元格高度)
  627. //}
  628. //x += 200.0 // 下一列起始位置的x坐标增加190(单元格宽度)
  629. //y = 10.0 // 行起始位置的y坐标重置为10
  630. //
  631. //pdf.Ln(2)
  632. if err := pdf.OutputFileAndClose("6.pdf"); err != nil {
  633. panic(err.Error())
  634. }
  635. // 此处可以继续绘制表格的其他部分,例如内容行等。
  636. // ...
  637. // 保存PDF文档到文件
  638. err := pdf.OutputFileAndClose("treatment_sheet_with_header.pdf")
  639. if err != nil {
  640. panic(err)
  641. }
  642. this.ServeSuccessJSON(map[string]interface{}{
  643. //"sign": information,
  644. //"pdfBase64": pdfBase64,
  645. //"name": name,
  646. })
  647. }
  648. func (this *SignApiController) CreateQianshuUserName() {
  649. admin_user_id, _ := this.GetInt64("admin_user_id")
  650. orgId := this.GetAdminUserInfo().CurrentOrgId
  651. userName := service.GetLastAdminUserName(admin_user_id, orgId)
  652. idCardNumber := service.GetLastAdminUserIdCardNumber(admin_user_id, orgId)
  653. adminRole, _ := service.GetMobile(admin_user_id)
  654. //查询该医护人员是否已经签署了
  655. lastPerson, _ := service.GetLastPersonEnterPrise(admin_user_id, orgId)
  656. if len(lastPerson.UserId) > 0 {
  657. this.ServeDynamicFailJsonSend("已完成签署,无需再次签署")
  658. return
  659. }
  660. if len(lastPerson.UserId) == 0 {
  661. //去签署
  662. sign, userId := service.CreateQianshuUserName(userName, adminRole.Mobile, idCardNumber)
  663. err := service.UpdatePersionEnterPrise(lastPerson.ID, userId)
  664. fmt.Println(err)
  665. this.ServeSuccessJSON(map[string]interface{}{
  666. "sign": sign,
  667. "userId": userId,
  668. })
  669. }
  670. }
  671. func (this *SignApiController) CreateSdkSendInformation() {
  672. information, orderId := service.CreateSdkSendInformation()
  673. this.ServeSuccessJSON(map[string]interface{}{
  674. "information": information,
  675. "orderId": orderId,
  676. })
  677. }
  678. func (this *SignApiController) SavePdfInformation() {
  679. var name string
  680. information, pdfBase64 := service.SavePdfInformation(name)
  681. informationOne := service.ToCheckInformation(pdfBase64)
  682. maprequest := make(map[string]interface{})
  683. Receiver := make(map[string]interface{})
  684. //业务单号
  685. maprequest["orderId"] = "13318464642"
  686. maprequest["signTitle"] = "举报合同"
  687. //file := "C:/Users/28169/Desktop/2.pdf"
  688. file := "/swspan/gopath/src/XT_New/static/6.pdf"
  689. fileBytes, _ := ioutil.ReadFile(file) // 读取file
  690. contractBase64 := base64.StdEncoding.EncodeToString(fileBytes) // 加密成base64字符串
  691. //文件获取方式
  692. maprequest["fileType"] = 1
  693. maprequest["pdfBase64"] = contractBase64
  694. //合同内容
  695. maprequest["fileContent"] = contractBase64
  696. //签署用户人ID
  697. maprequest["userId"] = "JMO9U8JH4TN8E3QOI0GUVUF2"
  698. //业务单号
  699. maprequest["receiver"] = Receiver
  700. //签署人账号
  701. Receiver["account"] = "13318464642"
  702. //签署个人类型 1.个人 2.企业
  703. Receiver["signerType"] = 1
  704. //签署人姓名
  705. Receiver["realName "] = "马文强"
  706. // 证件类型
  707. Receiver["cardType"] = 0
  708. //证件编码
  709. Receiver["cardNumber"] = "430526199408156511"
  710. stepStamper := make(map[string]interface{})
  711. keywordSignControls := make([]map[string]interface{}, 0)
  712. //预冲者样式
  713. inputArrOne := make(map[string]interface{})
  714. inputArrOne["sealName"] = "1"
  715. inputArrOne["keyword"] = "医生签名"
  716. inputArrOne["pages"] = "0"
  717. inputArrOne["offsetX"] = "100"
  718. inputArrOne["offsetY"] = "100"
  719. keywordSignControls = append(keywordSignControls, inputArrOne)
  720. //穿刺者样式
  721. //inputArr := make(map[string]interface{})
  722. //inputArr["sealName"] = "2"
  723. //inputArr["keyword"] = "治疗护士"
  724. //inputArr["pages"] = "1"
  725. //inputArr["offsetX"] = "100"
  726. //inputArr["offsetY"] = "0"
  727. //
  728. //keywordSignControls = append(keywordSignControls, inputArr)
  729. //
  730. ////上机者
  731. //inputArrSix := make(map[string]interface{})
  732. //inputArrSix["sealName"] = "3"
  733. //inputArrSix["keyword"] = "核对护士"
  734. //inputArrSix["pages"] = "1"
  735. //inputArrSix["offsetX"] = "100"
  736. //inputArrSix["offsetY"] = "0"
  737. //
  738. //keywordSignControls = append(keywordSignControls, inputArrSix)
  739. //
  740. //stepStamper["keywordSignControls"] = keywordSignControls
  741. //
  742. ////医生签名
  743. //inputArrSeven := make(map[string]interface{})
  744. //inputArrSeven["sealName"] = "4"
  745. //inputArrSeven["keyword"] = "医生签名"
  746. //inputArrSeven["pages"] = "1"
  747. //inputArrSeven["offsetX"] = "100"
  748. //inputArrSeven["offsetY"] = "0"
  749. //
  750. //keywordSignControls = append(keywordSignControls, inputArrSeven)
  751. //
  752. //stepStamper["keywordSignControls"] = keywordSignControls
  753. //crossSignControls := make([]map[string]interface{}, 0)
  754. //
  755. //inputArrTwo := make(map[string]interface{})
  756. //inputArrTwo["sealName"] = "1"
  757. //inputArrTwo["positionX"] = "0"
  758. //inputArrTwo["positionY"] = "0"
  759. //inputArrTwo["pages"] = "0"
  760. //crossSignControls = append(crossSignControls, inputArrTwo)
  761. //
  762. //stepStamper["crossSignControls"] = crossSignControls
  763. //
  764. xySignControls := make([]map[string]interface{}, 0)
  765. inputArrThree := make(map[string]interface{})
  766. inputArrThree["sealName"] = "1"
  767. inputArrThree["positionX"] = "100"
  768. inputArrThree["positionY"] = "0"
  769. inputArrThree["pages"] = "0"
  770. xySignControls = append(xySignControls, inputArrThree)
  771. stepStamper["xySignControls"] = xySignControls
  772. maprequest["stepStamper"] = stepStamper
  773. seals := make([]map[string]interface{}, 0)
  774. //预冲者
  775. sealImagesList := make(map[string]interface{})
  776. fileOne := "/swspan/gopath/src/XT_New/static/huangzihui.jpg"
  777. fileBytesOne, _ := ioutil.ReadFile(fileOne) // 读取file
  778. contractBase64One := base64.StdEncoding.EncodeToString(fileBytesOne) // 加密成base64字符串
  779. sealImagesList["sealBase64"] = contractBase64One
  780. //控制签名的大小
  781. sealImagesList["width"] = "50"
  782. sealImagesList["height"] = "50"
  783. sealImagesList["verticalAlign"] = "middle"
  784. sealTextsList := make(map[string]interface{})
  785. sealTextsList["text"] = "2023年8月8日"
  786. sealTextsList["fontSize"] = "100"
  787. sealTextsList["fontColor"] = "#333333"
  788. sealTextsList["isTextArea"] = true
  789. sealTextsList["textAlign"] = 0
  790. sealTextsList["width"] = 150
  791. sealTextsList["height"] = 20
  792. sealsObj := make(map[string]interface{})
  793. sealsObj["sealWidth"] = "150"
  794. sealsObj["sealHeight"] = "150"
  795. sealsObj["sealName"] = "1"
  796. sealsObj["sealImage"] = sealImagesList
  797. sealsObj["sealText"] = sealTextsList
  798. seals = append(seals, sealsObj)
  799. //穿刺者
  800. //sealImagesListOne := make(map[string]interface{})
  801. //
  802. //fileTwo := "/swspan/gopath/src/XT_New/static/huangjunji.jpg"
  803. //
  804. //fileBytesTwo, _ := ioutil.ReadFile(fileTwo) // 读取file
  805. //
  806. //contractBase64Two := base64.StdEncoding.EncodeToString(fileBytesTwo) // 加密成base64字符串
  807. //sealImagesListOne["sealBase64"] = contractBase64Two
  808. ////控制签名的大小
  809. //sealImagesListOne["width"] = "50"
  810. //sealImagesListOne["height"] = "50"
  811. //sealImagesListOne["verticalAlign"] = "middle"
  812. //
  813. //sealTextsListOne := make(map[string]interface{})
  814. //sealTextsListOne["text"] = "2023年8月8日"
  815. //sealTextsListOne["fontSize"] = "100"
  816. //sealTextsListOne["fontColor"] = "100"
  817. //sealTextsListOne["isTextArea"] = true
  818. //sealTextsListOne["textAlign"] = 0
  819. //sealTextsListOne["width"] = 150
  820. //sealTextsListOne["height"] = 20
  821. //
  822. //sealsObjOne := make(map[string]interface{})
  823. //
  824. //sealsObjOne["sealWidth"] = "150"
  825. //sealsObjOne["sealHeight"] = "150"
  826. //sealsObjOne["sealName"] = "2"
  827. //sealsObjOne["sealImage"] = sealImagesListOne
  828. //sealsObjOne["sealText"] = sealTextsListOne
  829. //seals = append(seals, sealsObjOne)
  830. //间隔签名
  831. //上机者
  832. //sealImagesListTwo := make(map[string]interface{})
  833. //fileThree := "/swspan/gopath/src/XT_New/static/jianfeixia.jpg"
  834. //fileBytesThree, _ := ioutil.ReadFile(fileThree) // 读取file
  835. //contractBase64Three := base64.StdEncoding.EncodeToString(fileBytesThree) // 加密成base64字符串
  836. //sealImagesListTwo["sealBase64"] = contractBase64Three
  837. ////控制签名的大小
  838. //sealImagesListTwo["width"] = "50"
  839. //sealImagesListTwo["height"] = "50"
  840. //sealImagesListTwo["verticalAlign"] = "middle"
  841. //
  842. //sealTextsListTwo := make(map[string]interface{})
  843. //sealTextsListTwo["text"] = "2023年8月8日"
  844. //sealTextsListTwo["fontSize"] = "100"
  845. //sealTextsListTwo["fontColor"] = "100"
  846. //sealTextsListTwo["isTextArea"] = true
  847. //sealTextsListTwo["textAlign"] = 0
  848. //sealTextsListTwo["width"] = 150
  849. //sealTextsListTwo["height"] = 20
  850. //
  851. //sealsObjTwo := make(map[string]interface{})
  852. //
  853. //sealsObjTwo["sealWidth"] = "150"
  854. //sealsObjTwo["sealHeight"] = "150"
  855. //sealsObjTwo["sealName"] = "3"
  856. //sealsObjTwo["sealImage"] = sealImagesListTwo
  857. //sealsObjTwo["sealText"] = sealTextsListTwo
  858. //seals = append(seals, sealsObjTwo)
  859. //医生签名
  860. //sealImagesListThree := make(map[string]interface{})
  861. //fileFour := "/swspan/gopath/src/XT_New/static/jianfeixia.jpg"
  862. //fileBytesFour, _ := ioutil.ReadFile(fileFour) // 读取file
  863. //contractBase64Tour := base64.StdEncoding.EncodeToString(fileBytesFour) // 加密成base64字符串
  864. //sealImagesListThree["sealBase64"] = contractBase64Tour
  865. ////控制签名的大小
  866. //sealImagesListThree["width"] = "50"
  867. //sealImagesListThree["height"] = "50"
  868. //sealImagesListThree["verticalAlign"] = "middle"
  869. //
  870. //sealTextsListThree := make(map[string]interface{})
  871. //sealTextsListThree["text"] = "2023年8月8日"
  872. //sealTextsListThree["fontSize"] = "100"
  873. //sealTextsListThree["fontColor"] = "100"
  874. //sealTextsListThree["isTextArea"] = true
  875. //sealTextsListThree["textAlign"] = 0
  876. //sealTextsListThree["width"] = 150
  877. //sealTextsListThree["height"] = 20
  878. //
  879. //sealsObjThree := make(map[string]interface{})
  880. //
  881. //sealsObjThree["sealWidth"] = "150"
  882. //sealsObjThree["sealHeight"] = "150"
  883. //sealsObjThree["sealName"] = "4"
  884. //sealsObjThree["sealImage"] = sealImagesListThree
  885. //sealsObjThree["sealText"] = sealTextsListThree
  886. //seals = append(seals, sealsObjThree)
  887. maprequest["seals"] = seals
  888. maprequest["isUserWishes"] = true
  889. maprequest["phone"] = "13318464642"
  890. maprequest["verificationCode"] = "18888888888"
  891. this.ServeSuccessJSON(map[string]interface{}{
  892. "information": information,
  893. "orderId": pdfBase64,
  894. "informationOne": informationOne,
  895. "maprequest": maprequest,
  896. })
  897. }
  898. func (this *SignApiController) ToCheckInformation() {
  899. var name string
  900. information, pdfBase64 := service.SavePdfInformation(name)
  901. informationOne := service.ToCheckInformation(pdfBase64)
  902. this.ServeSuccessJSON(map[string]interface{}{
  903. "information": information,
  904. "informationOne": informationOne,
  905. })
  906. }