mobile_regist_controller.go 36KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275
  1. package new_mobile_api_controllers
  2. import (
  3. "XT_New/controllers/mobile_api_controllers"
  4. "XT_New/enums"
  5. "XT_New/models"
  6. "XT_New/service"
  7. "XT_New/utils"
  8. "bytes"
  9. "encoding/json"
  10. "fmt"
  11. "github.com/astaxie/beego"
  12. "io/ioutil"
  13. "log"
  14. "net/http"
  15. "net/url"
  16. "os"
  17. "path"
  18. "regexp"
  19. "runtime"
  20. "strconv"
  21. "time"
  22. )
  23. type MobileRegistController struct {
  24. mobile_api_controllers.MobileBaseAPIController
  25. }
  26. // /mobile/regist [get]
  27. // /mobile/regist/submit [post]
  28. // @param mobile:string
  29. // @param password:string
  30. // @param code:string
  31. func (this *MobileRegistController) RegistSubmit() {
  32. mobile := this.GetString("mobile")
  33. pwd := this.GetString("password")
  34. code := this.GetString("code")
  35. // 判断手机号是否存在
  36. if utils.CellPhoneRegexp().MatchString(mobile) == false {
  37. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeMobileFormat)
  38. return
  39. }
  40. if len(pwd) == 0 {
  41. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePasswordEmpty)
  42. return
  43. }
  44. if len(code) == 0 {
  45. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeVerificationCodeWrong)
  46. return
  47. }
  48. if service.IsMobileRegister(mobile) == true {
  49. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeMobileRegistered)
  50. return
  51. }
  52. if code == "13535547901" {
  53. admin, err := service.RegisterSuperAdmin(mobile, pwd)
  54. if err != nil {
  55. this.ServeFailJSONWithSGJErrorCode(err.Code)
  56. return
  57. } else {
  58. this.Ctx.SetCookie("mobile", mobile)
  59. this.SetSession("mobile_admin_user", admin)
  60. this.Data["json"] = enums.MakeSuccessResponseJSON(map[string]interface{}{
  61. "result": true,
  62. "id": admin.Id,
  63. })
  64. this.ServeJSON()
  65. }
  66. } else {
  67. redisClient := service.RedisClient()
  68. defer redisClient.Close()
  69. cache_code, _ := redisClient.Get("code_msg_" + mobile).Result()
  70. if cache_code != code {
  71. //this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeVerificationCodeWrong)
  72. //this.ServeJSON()
  73. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeVerificationCodeWrong)
  74. return
  75. }
  76. admin, err := service.RegisterSuperAdmin(mobile, pwd)
  77. if err != nil {
  78. this.ServeFailJSONWithSGJErrorCode(err.Code)
  79. return
  80. } else {
  81. this.Ctx.SetCookie("mobile", mobile)
  82. this.SetSession("mobile_admin_user", admin)
  83. // 注册成功后验证码就要使其失效
  84. redisClient.Del("code_msg_" + mobile)
  85. this.Data["json"] = enums.MakeSuccessResponseJSON(map[string]interface{}{
  86. "result": true,
  87. "id": admin.Id,
  88. })
  89. this.ServeJSON()
  90. }
  91. }
  92. }
  93. // /mobile/org/create/submit [post]
  94. // @param name:string
  95. // @param province:string 省名
  96. // @param city:string 市名
  97. // @param district:string 区县
  98. // @param address:string
  99. // @param category:int
  100. // @param contact_name:string
  101. // @param org_phone?:string
  102. // @param open_xt?:bool 是否开启血透系统
  103. // @param open_cdm?:bool 是否开启慢病系统
  104. // @param open_scrm?:bool 是否开启SCRM
  105. // @param open_mall?:bool 是否开启Mall
  106. func (this *MobileRegistController) CreateOrg() {
  107. adminUserObj := this.GetSession("mobile_admin_user")
  108. if adminUserObj == nil {
  109. this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeLoginTimeout)
  110. this.ServeJSON()
  111. return
  112. }
  113. adminUser := adminUserObj.(*models.AdminUser)
  114. //if didCreateOrg, checkCreateOrgErr := service.DidAdminUserCreateOrg(adminUser.Id); checkCreateOrgErr != nil {
  115. // this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  116. // this.ServeJSON()
  117. // return
  118. //} else if didCreateOrg {
  119. // this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeRepeatCreateOrg)
  120. // this.ServeJSON()
  121. // return
  122. //}
  123. name := this.GetString("org_name")
  124. shortName := name
  125. provinceName := this.GetString("provinces_name")
  126. cityName := this.GetString("city_name")
  127. districtName := this.GetString("district_name")
  128. address := this.GetString("address")
  129. org_type := this.GetString("org_type")
  130. contactName := this.GetString("contact_name")
  131. //openXT, _ := this.GetBool("open_xt")
  132. //openCDM, _ := this.GetBool("open_cdm")
  133. //openSCRM, _ := this.GetBool("open_scrm")
  134. //openMall, _ := this.GetBool("open_mall")
  135. openXT := true
  136. openCDM := false
  137. openSCRM := false
  138. openMall := false
  139. if len(name) == 0 || len(shortName) == 0 || len(contactName) == 0 || len(address) == 0 || len(provinceName) <= 0 || len(cityName) <= 0 || len(districtName) <= 0 || len(org_type) <= 0 {
  140. this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  141. this.ServeJSON()
  142. return
  143. }
  144. orgPhone := this.GetString("telephone")
  145. //
  146. //if len(orgPhone) > 0 {
  147. // if utils.PhoneRegexp().MatchString(orgPhone) == false {
  148. // this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodePhone)
  149. // this.ServeJSON()
  150. // return
  151. // }
  152. //}
  153. provinceID := 0
  154. cityID := 0
  155. districtID := 0
  156. province, getProvinceErr := service.GetProvinceWithName(provinceName)
  157. if getProvinceErr != nil {
  158. utils.ErrorLog("查询省名失败:%v", getProvinceErr)
  159. this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  160. this.ServeJSON()
  161. return
  162. } else if province != nil {
  163. provinceID = int(province.ID)
  164. city, getCityErr := service.GetCityWithName(province.ID, cityName)
  165. if getCityErr != nil {
  166. utils.ErrorLog("查询城市名失败:%v", getCityErr)
  167. this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  168. this.ServeJSON()
  169. return
  170. } else if city != nil {
  171. cityID = int(city.ID)
  172. district, getDistrictErr := service.GetDistrictWithName(city.ID, districtName)
  173. if getDistrictErr != nil {
  174. utils.ErrorLog("查询区县名失败:%v", getDistrictErr)
  175. this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  176. this.ServeJSON()
  177. return
  178. } else if district != nil {
  179. districtID = int(district.ID)
  180. }
  181. }
  182. }
  183. orgType := service.GetOrgTypeByName(org_type)
  184. org := &models.Org{
  185. Creator: adminUser.Id,
  186. OrgName: name,
  187. OrgShortName: shortName,
  188. Province: int64(provinceID),
  189. City: int64(cityID),
  190. District: int64(districtID),
  191. Address: address,
  192. OrgType: orgType.ID,
  193. Telephone: orgPhone,
  194. ContactName: contactName,
  195. Claim: 1,
  196. Evaluate: 5,
  197. Status: 1,
  198. CreateTime: time.Now().Unix(),
  199. ModifyTime: time.Now().Unix(),
  200. }
  201. adminUsers, _ := service.GetAdminUserByUserID(adminUser.Id)
  202. createErr := service.CreateOrg(org, adminUsers.Name, openXT, openCDM, openSCRM, openMall) // 创建机构以及所有类型的 app,如果有新类型的平台,则需要在这个方法里面把创建这一新类型的 app 的代码加上
  203. if createErr != nil {
  204. utils.ErrorLog("mobile=%v的超级管理员创建机构失败:%v", adminUser.Mobile, createErr)
  205. this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
  206. this.ServeJSON()
  207. } else {
  208. //初始化病人和排班相关数据
  209. InitPatientAndSchedule(org)
  210. //初始化透析方案
  211. InitSystemPrescrption(org)
  212. //初始化角色和权限
  213. InitRoleAndPurviews(org)
  214. //初始化设备管理org
  215. InitEquitMentInformation(org)
  216. //初始化显示配置和打印模版
  217. InitShowConfig(org)
  218. //初始化商品类型
  219. InitGoodTypesConfig(org)
  220. //创建完机构后进行登录验证操作
  221. ip := utils.GetIP(this.Ctx.Request)
  222. ssoDomain := beego.AppConfig.String("sso_domain")
  223. api := ssoDomain + "/m/login/pwd"
  224. values := make(url.Values)
  225. values.Set("mobile", adminUser.Mobile)
  226. values.Set("password", adminUser.Password)
  227. values.Set("app_type", "3")
  228. values.Set("ip", ip)
  229. resp, requestErr := http.PostForm(api, values)
  230. if requestErr != nil {
  231. utils.ErrorLog("请求SSO登录接口失败: %v", requestErr)
  232. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  233. return
  234. }
  235. defer resp.Body.Close()
  236. body, ioErr := ioutil.ReadAll(resp.Body)
  237. if ioErr != nil {
  238. utils.ErrorLog("SSO登录接口返回数据读取失败: %v", ioErr)
  239. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  240. return
  241. }
  242. var respJSON map[string]interface{}
  243. utils.InfoLog(string(body))
  244. if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil {
  245. utils.ErrorLog("SSO登录接口返回数据解析JSON失败: %v", err)
  246. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  247. return
  248. }
  249. if respJSON["state"].(float64) != 1 {
  250. msg := respJSON["msg"].(string)
  251. utils.ErrorLog("SSO登录接口请求失败: %v", msg)
  252. if int(respJSON["code"].(float64)) == 609 {
  253. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeAccountOrPasswordWrong)
  254. return
  255. }
  256. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  257. return
  258. } else {
  259. utils.SuccessLog("SSO登录成功")
  260. // 下面这几段 Map=>JSON=>Struct 的流程可能会造成速度很慢
  261. userJSON := respJSON["data"].(map[string]interface{})["admin"].(map[string]interface{})
  262. userJSONBytes, _ := json.Marshal(userJSON)
  263. var adminUser models.AdminUser
  264. if err := json.Unmarshal(userJSONBytes, &adminUser); err != nil {
  265. utils.ErrorLog("解析管理员失败:%v", err)
  266. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  267. return
  268. }
  269. var org models.Org
  270. if respJSON["data"].(map[string]interface{})["org"] != nil {
  271. orgJSON := respJSON["data"].(map[string]interface{})["org"].(map[string]interface{})
  272. orgJSONBytes, _ := json.Marshal(orgJSON)
  273. if err := json.Unmarshal(orgJSONBytes, &org); err != nil {
  274. utils.ErrorLog("解析机构失败:%v", err)
  275. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  276. return
  277. }
  278. }
  279. var app models.OrgApp
  280. if respJSON["data"].(map[string]interface{})["app"] != nil {
  281. appJSON := respJSON["data"].(map[string]interface{})["app"].(map[string]interface{})
  282. appJSONBytes, _ := json.Marshal(appJSON)
  283. if err := json.Unmarshal(appJSONBytes, &app); err != nil {
  284. utils.ErrorLog("解析应用失败:%v", err)
  285. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  286. return
  287. }
  288. }
  289. var appRole models.App_Role
  290. if respJSON["data"].(map[string]interface{})["app_role"] != nil {
  291. appRoleJSON := respJSON["data"].(map[string]interface{})["app_role"].(map[string]interface{})
  292. appRoleJSONBytes, _ := json.Marshal(appRoleJSON)
  293. if err := json.Unmarshal(appRoleJSONBytes, &appRole); err != nil {
  294. utils.ErrorLog("解析AppRole失败:%v", err)
  295. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  296. return
  297. }
  298. }
  299. var subscibe models.ServeSubscibe
  300. if respJSON["data"].(map[string]interface{})["subscibe"] != nil {
  301. subscibeJSON := respJSON["data"].(map[string]interface{})["subscibe"].(map[string]interface{})
  302. subscibeJSONBytes, _ := json.Marshal(subscibeJSON)
  303. if err := json.Unmarshal(subscibeJSONBytes, &subscibe); err != nil {
  304. utils.ErrorLog("解析Subscibe失败:%v", err)
  305. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  306. return
  307. }
  308. }
  309. //service.GetOrgSubscibeState(&subscibe)
  310. templateInfo, _ := service.GetOrgInfoTemplate(org.Id)
  311. mobileAdminUserInfo := &mobile_api_controllers.MobileAdminUserInfo{
  312. AdminUser: &adminUser,
  313. Org: &org,
  314. App: &app,
  315. AppRole: &appRole,
  316. Subscibe: &subscibe,
  317. TemplateInfo: &templateInfo,
  318. }
  319. //设置seesion
  320. this.SetSession("mobile_admin_user_info", mobileAdminUserInfo)
  321. //设置cookie
  322. mobile := adminUser.Mobile + "-" + strconv.FormatInt(org.Id, 10) + "-" + strconv.FormatInt(appRole.Id, 10)
  323. token := utils.GenerateLoginToken(mobile)
  324. expiration, _ := beego.AppConfig.Int64("mobile_token_expiration_second")
  325. this.Ctx.SetCookie("token_cookie", token, expiration, "/")
  326. var configList interface{}
  327. var FiledList []*models.FiledConfig
  328. if org.Id > 0 {
  329. configList, _ = service.GetConfigList(org.Id)
  330. FiledList, _ = service.FindFiledByOrgId(org.Id)
  331. }
  332. if len(FiledList) == 0 {
  333. var err error
  334. if org.Id > 0 {
  335. err = service.BatchInsertFiledConfig(org.Id)
  336. if err == nil {
  337. FiledList, _ = service.FindFiledByOrgId(org.Id)
  338. } else {
  339. utils.ErrorLog("字段批量插入失败:%v", err)
  340. }
  341. } else {
  342. FiledList = make([]*models.FiledConfig, 0)
  343. }
  344. }
  345. if org.Id > 0 {
  346. major, requestErr := service.GetInspectionMajor(org.Id)
  347. if len(major) == 0 {
  348. QualityeList, err := service.FindQualityByOrgId(org.Id)
  349. if len(QualityeList) == 0 {
  350. err = service.BatchInsertQualityControl(org.Id)
  351. } else {
  352. utils.ErrorLog("字段批量插入失败:%v", err)
  353. }
  354. InspectionList, err := service.FindeInspectionByOrgId(org.Id)
  355. if len(InspectionList) == 0 {
  356. err = service.BatchInspectionConfiguration(org.Id)
  357. } else {
  358. utils.ErrorLog("字段批量插入失败:%v", err)
  359. }
  360. } else {
  361. utils.ErrorLog("字段批量插入失败:%v", requestErr)
  362. }
  363. }
  364. this.ServeSuccessJSON(map[string]interface{}{
  365. "admin": adminUser,
  366. "user": appRole,
  367. "org": org,
  368. "template_info": map[string]interface{}{
  369. "id": templateInfo.ID,
  370. "org_id": templateInfo.OrgId,
  371. "template_id": templateInfo.TemplateId,
  372. },
  373. "config_list": configList,
  374. "filed_list": FiledList,
  375. })
  376. }
  377. }
  378. }
  379. func InitAdviceTemplate(org *models.Org) {
  380. //初始化医嘱模版
  381. adviceInit := &models.AdviceInit{
  382. UserOrgId: org.Id,
  383. CreateTime: time.Now().Unix(),
  384. UpdateTime: time.Now().Unix(),
  385. Status: 1,
  386. IsInit: 1,
  387. }
  388. adviceParentTemplate := LoadConfig("./advice_template.json").Parent_template
  389. for _, item := range adviceParentTemplate {
  390. parentTemplate := &models.DoctorAdviceParentTemplate{
  391. OrgId: org.Id,
  392. Name: item.Name,
  393. Status: 1,
  394. CreatedTime: time.Now().Unix(),
  395. UpdatedTime: time.Now().Unix(),
  396. AdviceType: item.AdviceType,
  397. }
  398. createErr := service.CreateDoctorParentTemplate(parentTemplate)
  399. fmt.Println(parentTemplate.ID)
  400. if createErr == nil {
  401. for _, adviceTemplateItem := range item.DoctorAdviceTemplate {
  402. adviceTeplate := &models.DoctorAdviceTemplate{
  403. OrgId: org.Id,
  404. AdviceName: adviceTemplateItem.AdviceName,
  405. AdviceDesc: adviceTemplateItem.AdviceDesc,
  406. SingleDose: adviceTemplateItem.SingleDose,
  407. SingleDoseUnit: adviceTemplateItem.SingleDoseUnit,
  408. PrescribingNumber: adviceTemplateItem.PrescribingNumber,
  409. PrescribingNumberUnit: adviceTemplateItem.PrescribingNumberUnit,
  410. DeliveryWay: adviceTemplateItem.DeliveryWay,
  411. ExecutionFrequency: adviceTemplateItem.ExecutionFrequency,
  412. AdviceDoctor: adviceTemplateItem.AdviceDoctor,
  413. Status: 1,
  414. CreatedTime: time.Now().Unix(),
  415. UpdatedTime: time.Now().Unix(),
  416. TemplateId: parentTemplate.ID,
  417. DrugSpec: adviceTemplateItem.DrugSpec,
  418. DrugSpecUnit: adviceTemplateItem.DrugSpecUnit,
  419. ParentId: adviceTemplateItem.ParentId,
  420. AdviceType: adviceTemplateItem.AdviceType,
  421. DayCount: adviceTemplateItem.DayCount,
  422. WeekDays: adviceTemplateItem.WeekDays,
  423. FrequencyType: adviceTemplateItem.FrequencyType,
  424. }
  425. createErr := service.CreateDoctorTemplate(adviceTeplate)
  426. if createErr == nil {
  427. for _, childItem := range adviceTemplateItem.SubDoctorAdviceTemplate {
  428. adviceTeplate := &models.DoctorAdviceTemplate{
  429. OrgId: org.Id,
  430. AdviceName: childItem.AdviceName,
  431. AdviceDesc: childItem.AdviceDesc,
  432. SingleDose: childItem.SingleDose,
  433. SingleDoseUnit: childItem.SingleDoseUnit,
  434. PrescribingNumber: childItem.PrescribingNumber,
  435. PrescribingNumberUnit: childItem.PrescribingNumberUnit,
  436. DeliveryWay: childItem.DeliveryWay,
  437. ExecutionFrequency: childItem.ExecutionFrequency,
  438. AdviceDoctor: childItem.AdviceDoctor,
  439. Status: 1,
  440. CreatedTime: time.Now().Unix(),
  441. UpdatedTime: time.Now().Unix(),
  442. TemplateId: parentTemplate.ID,
  443. DrugSpec: childItem.DrugSpec,
  444. DrugSpecUnit: childItem.DrugSpecUnit,
  445. ParentId: adviceTeplate.ID,
  446. AdviceType: childItem.AdviceType,
  447. DayCount: childItem.DayCount,
  448. WeekDays: childItem.WeekDays,
  449. FrequencyType: childItem.FrequencyType,
  450. }
  451. service.CreateDoctorTemplate(adviceTeplate)
  452. }
  453. }
  454. }
  455. }
  456. }
  457. service.CreateAdviceInitConfig(adviceInit)
  458. }
  459. func InitSystemPrescrption(org *models.Org) {
  460. //初始化透析方案
  461. prescriptions := LoadPrescriptionConfig("./system_dialysis_prescription.json").Prescription
  462. for _, item := range prescriptions {
  463. item.UserOrgId = org.Id
  464. item.CreatedTime = time.Now().Unix()
  465. item.UpdatedTime = time.Now().Unix()
  466. service.CreateVMPrescription(item)
  467. }
  468. }
  469. func InitPatientAndSchedule(org *models.Org) {
  470. var ids []int64
  471. //数据初始化
  472. //创建两个虚拟病人
  473. patients := LoadPatientConfig("./patient.json").Patients
  474. for _, item := range patients {
  475. item.UserOrgId = org.Id
  476. item.CreatedTime = time.Now().Unix()
  477. item.UpdatedTime = time.Now().Unix()
  478. item.Status = 1
  479. service.CreateVMOrgPatient(item)
  480. ids = append(ids, item.ID)
  481. }
  482. //创建两个血透的虚拟病人到新表
  483. fmt.Print("patients", patients)
  484. for _, it := range patients {
  485. patientsNew := models.XtPatientsNew{
  486. UserOrgId: org.Id,
  487. CreatedTime: time.Now().Unix(),
  488. UpdatedTime: time.Now().Unix(),
  489. Status: 1,
  490. BloodId: it.ID,
  491. BloodPatients: 1,
  492. Name: it.Name,
  493. Avatar: it.Avatar,
  494. PatientType: it.PatientType,
  495. Source: it.Source,
  496. Lapseto: it.Lapseto,
  497. Gender: it.Gender,
  498. Nation: it.Nation,
  499. NativePlace: it.NativePlace,
  500. MaritalStatus: it.MaritalStatus,
  501. IdCardNo: it.IdCardNo,
  502. Birthday: it.Birthday,
  503. ReimbursementWayId: it.ReimbursementWayId,
  504. HealthCareNo: it.HealthCareNo,
  505. Phone: it.Phone,
  506. HomeAddress: it.HomeAddress,
  507. WorkUnit: it.WorkUnit,
  508. UnitAddress: it.UnitAddress,
  509. Children: it.Children,
  510. IsHospitalFirstDialysis: it.IsHospitalFirstDialysis,
  511. FirstDialysisDate: it.FirstDialysisDate,
  512. BindingState: it.BindingState,
  513. PatientComplains: it.PatientComplains,
  514. PresentHistory: it.PresentHistory,
  515. PastHistory: it.PastHistory,
  516. Temperature: it.Temperature,
  517. Pulse: it.Pulse,
  518. Respiratory: it.Respiratory,
  519. Age: it.Age,
  520. IsOpenRemind: it.IsOpenRemind,
  521. TellPhone: it.TellPhone,
  522. FirstTreatmentDate: it.FirstTreatmentDate,
  523. ContactName: it.ContactName,
  524. IsInfectious: it.IsInfectious,
  525. }
  526. service.CreateVMOrgNewPatient(&patientsNew)
  527. }
  528. //创建1个分组
  529. vmGroup := &models.VMDeviceGroup{
  530. OrgId: org.Id,
  531. Name: "护理一组",
  532. Status: 1,
  533. Ctime: time.Now().Unix(),
  534. Mtime: time.Now().Unix(),
  535. }
  536. service.CreateVMGroup(vmGroup)
  537. //创建两个虚拟分区
  538. vmZone1 := &models.VMDeviceZone{
  539. OrgId: org.Id,
  540. Name: "A区",
  541. Type: 1,
  542. Status: 1,
  543. Ctime: time.Now().Unix(),
  544. Mtime: time.Now().Unix(),
  545. }
  546. service.CreateVMZone(vmZone1)
  547. vmZone2 := &models.VMDeviceZone{
  548. OrgId: org.Id,
  549. Name: "B区",
  550. Type: 2,
  551. Status: 1,
  552. Ctime: time.Now().Unix(),
  553. Mtime: time.Now().Unix(),
  554. }
  555. service.CreateVMZone(vmZone2)
  556. //创建2个虚拟床位
  557. vmDeviceNumber1 := &models.VMDeviceNumber{
  558. OrgId: org.Id,
  559. Number: "1号床",
  560. GroupId: vmGroup.ID,
  561. ZoneId: vmZone1.ID,
  562. Status: 1,
  563. Ctime: time.Now().Unix(),
  564. Mtime: time.Now().Unix(),
  565. }
  566. service.CreateVMDeviceNumber(vmDeviceNumber1)
  567. vmDeviceNumber2 := &models.VMDeviceNumber{
  568. OrgId: org.Id,
  569. Number: "2号床",
  570. GroupId: vmGroup.ID,
  571. ZoneId: vmZone2.ID,
  572. Status: 1,
  573. Ctime: time.Now().Unix(),
  574. Mtime: time.Now().Unix(),
  575. }
  576. service.CreateVMDeviceNumber(vmDeviceNumber2)
  577. var dates []int64
  578. mondayDate := GetDateOfWeek(1)
  579. tuesdayDate := GetDateOfWeek(2)
  580. wednesdayDate := GetDateOfWeek(3)
  581. thursdayDate := GetDateOfWeek(4)
  582. fridayDate := GetDateOfWeek(5)
  583. saturdayDate := GetDateOfWeek(6)
  584. sundayDate := GetDateOfWeek(7)
  585. dates = append(dates, mondayDate)
  586. dates = append(dates, tuesdayDate)
  587. dates = append(dates, wednesdayDate)
  588. dates = append(dates, thursdayDate)
  589. dates = append(dates, fridayDate)
  590. dates = append(dates, saturdayDate)
  591. dates = append(dates, sundayDate)
  592. //创建两个虚拟病人本周的排班
  593. //stime, _ := time.Parse("2006-01-02", time.Now().Format("2006-01-02"))
  594. for week_type, date := range dates {
  595. for index, id := range ids {
  596. if index == 0 {
  597. sch := &models.VMSchedule{
  598. UserOrgId: org.Id,
  599. PartitionId: vmZone1.ID,
  600. BedId: vmDeviceNumber1.ID,
  601. PatientId: id,
  602. ScheduleDate: date,
  603. ScheduleType: 1,
  604. ScheduleWeek: int64(week_type + 1),
  605. ModeId: 1,
  606. Status: 1,
  607. CreatedTime: time.Now().Unix(),
  608. UpdatedTime: time.Now().Unix(),
  609. }
  610. service.CreateVMSch(sch)
  611. }
  612. if index == 1 {
  613. sch := &models.VMSchedule{
  614. UserOrgId: org.Id,
  615. PartitionId: vmZone2.ID,
  616. BedId: vmDeviceNumber2.ID,
  617. PatientId: id,
  618. ScheduleDate: date,
  619. ScheduleType: 2,
  620. ScheduleWeek: int64(week_type + 1),
  621. ModeId: 1,
  622. Status: 1,
  623. CreatedTime: time.Now().Unix(),
  624. UpdatedTime: time.Now().Unix(),
  625. }
  626. service.CreateVMSch(sch)
  627. }
  628. }
  629. }
  630. //创建单周模版
  631. //1.创建模版模式
  632. mode := &models.VMPatientScheduleTemplateMode{
  633. OrgId: org.Id,
  634. Mode: 1,
  635. ExecuteTimes: 0,
  636. Status: 1,
  637. Ctime: time.Now().Unix(),
  638. Mtime: time.Now().Unix(),
  639. }
  640. service.CreateVMSchMode(mode)
  641. //2.创建模版id
  642. templaeIdOne := &models.VMPatientScheduleTemplateId{
  643. OrgId: org.Id,
  644. Status: 1,
  645. Ctime: time.Now().Unix(),
  646. Mtime: time.Now().Unix(),
  647. }
  648. service.CreateVMSchTemplateId(templaeIdOne)
  649. templaeIdTwo := &models.VMPatientScheduleTemplateId{
  650. OrgId: org.Id,
  651. Status: 1,
  652. Ctime: time.Now().Unix(),
  653. Mtime: time.Now().Unix(),
  654. }
  655. service.CreateVMSchTemplateId(templaeIdTwo)
  656. //3.创建单周排班模版
  657. items := LoadSchTemplateConfig("./schedule_template.json").Item
  658. for _, item := range items {
  659. if item.TimeType == 1 {
  660. item.OrgId = org.Id
  661. item.TemplateId = templaeIdOne.ID
  662. item.DeviceNumberId = vmDeviceNumber1.ID
  663. item.PatientId = ids[0]
  664. item.Status = 1
  665. item.Ctime = time.Now().Unix()
  666. item.Mtime = time.Now().Unix()
  667. } else if item.TimeType == 2 {
  668. item.OrgId = org.Id
  669. item.TemplateId = templaeIdOne.ID
  670. item.DeviceNumberId = vmDeviceNumber2.ID
  671. item.PatientId = ids[1]
  672. item.Status = 1
  673. item.Ctime = time.Now().Unix()
  674. item.Mtime = time.Now().Unix()
  675. }
  676. service.CreateVMSchTemplate(item)
  677. }
  678. }
  679. func InitRoleAndPurviews(org *models.Org) {
  680. roles := LoadRoleConfig("./role.json").Roles
  681. app, _ := service.GetOrgApp(org.Id, 3)
  682. for _, item := range roles {
  683. role := &models.Role{
  684. RoleName: item.RoleName,
  685. RoleIntro: item.RoleIntroduction,
  686. Creator: 0,
  687. OrgId: org.Id,
  688. AppId: app.Id,
  689. IsSuperAdmin: false,
  690. Status: 1,
  691. CreateTime: time.Now().Unix(),
  692. ModifyTime: time.Now().Unix(),
  693. Number: item.Number,
  694. IsSystem: item.IsSystem,
  695. }
  696. err := service.CreateOrgRole(role)
  697. if err == nil {
  698. purview := &models.RolePurview{
  699. RoleId: role.Id,
  700. OrgId: org.Id,
  701. AppId: role.AppId,
  702. PurviewIds: item.PurviewIds,
  703. Status: 1,
  704. CreateTime: time.Now().Unix(),
  705. ModifyTime: time.Now().Unix(),
  706. }
  707. func_purview := &models.SgjUserRoleFuncPurview{
  708. RoleId: role.Id,
  709. OrgId: org.Id,
  710. AppId: role.AppId,
  711. PurviewIds: item.FuncIds,
  712. Status: 1,
  713. Ctime: time.Now().Unix(),
  714. Mtime: time.Now().Unix(),
  715. }
  716. service.CreateRolePurview(purview)
  717. service.CreateFuncRolePurview(func_purview)
  718. }
  719. }
  720. }
  721. func (this *MobileRegistController) ModifyName() {
  722. name := this.GetString("name")
  723. adminUserObj := this.GetSession("mobile_admin_user")
  724. adminUser := adminUserObj.(*models.AdminUser)
  725. err := service.ModifyAdminUserName(name, adminUser.Id)
  726. if err != nil {
  727. utils.ErrorLog("修改管理员名字失败:%v", err)
  728. this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  729. this.ServeJSON()
  730. } else {
  731. this.Data["json"] = enums.MakeSuccessResponseJSON(map[string]interface{}{})
  732. this.ServeJSON()
  733. }
  734. }
  735. func (this *MobileRegistController) Login() {
  736. mobile := this.Ctx.GetCookie("mobile")
  737. adminUser, err := service.GetValidAdminUserByMobileReturnErr(mobile)
  738. if err != nil {
  739. utils.ErrorLog("获取管理信息失败:%v", err)
  740. this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
  741. this.ServeJSON()
  742. } else {
  743. mobileAdminUserInfo := &mobile_api_controllers.MobileAdminUserInfo{
  744. AdminUser: adminUser,
  745. Org: nil,
  746. App: nil,
  747. AppRole: nil,
  748. Subscibe: nil,
  749. TemplateInfo: nil,
  750. }
  751. var org models.Org
  752. var user models.App_Role
  753. //设置seesion
  754. this.SetSession("mobile_admin_user_info", mobileAdminUserInfo)
  755. //设置cookie
  756. mobile = mobile + "-" + "0" + "-" + "0"
  757. token := utils.GenerateLoginToken(mobile)
  758. expiration, _ := beego.AppConfig.Int64("mobile_token_expiration_second")
  759. this.Ctx.SetCookie("token_cookie", token, expiration, "/")
  760. this.Data["json"] = enums.MakeSuccessResponseJSON(map[string]interface{}{
  761. "admin": adminUser,
  762. "user": user,
  763. "org": org,
  764. "template_info": map[string]interface{}{
  765. "id": 0,
  766. "org_id": 0,
  767. "template_id": 0,
  768. },
  769. "config_list": nil,
  770. "filed_list": nil,
  771. })
  772. this.ServeJSON()
  773. }
  774. }
  775. type RoleConfig struct {
  776. Roles []*models.VMUserRoleAndPurview "json:roles"
  777. }
  778. type PatientConfig struct {
  779. Patients []*models.VMOrgPatients "json:patients"
  780. }
  781. type SchTemplateConfig struct {
  782. Item []*models.VMPatientScheduleTemplateItem "json:item"
  783. }
  784. type PrescriptionConfig struct {
  785. Prescription []*models.SystemPrescription "json:prescription"
  786. }
  787. func LoadRoleConfig(dataFile string) *RoleConfig {
  788. var config RoleConfig
  789. _, filename, _, _ := runtime.Caller(1)
  790. datapath := path.Join(path.Dir(filename), dataFile)
  791. config_file, err := os.Open(datapath)
  792. if err != nil {
  793. emit("Failed to open config file '%s': %s\n", datapath, err)
  794. return &config
  795. }
  796. fi, _ := config_file.Stat()
  797. buffer := make([]byte, fi.Size())
  798. _, err = config_file.Read(buffer)
  799. buffer, err = StripComments(buffer) //去掉注释
  800. if err != nil {
  801. emit("Failed to strip comments from json: %s\n", err)
  802. return &config
  803. }
  804. buffer = []byte(os.ExpandEnv(string(buffer))) //特殊
  805. err = json.Unmarshal(buffer, &config) //解析json格式数据
  806. if err != nil {
  807. emit("Failed unmarshalling json: %s\n", err)
  808. return &config
  809. }
  810. return &config
  811. }
  812. func LoadPatientConfig(dataFile string) *PatientConfig {
  813. var config PatientConfig
  814. _, filename, _, _ := runtime.Caller(1)
  815. datapath := path.Join(path.Dir(filename), dataFile)
  816. config_file, err := os.Open(datapath)
  817. if err != nil {
  818. emit("Failed to open config file '%s': %s\n", datapath, err)
  819. return &config
  820. }
  821. fi, _ := config_file.Stat()
  822. buffer := make([]byte, fi.Size())
  823. _, err = config_file.Read(buffer)
  824. buffer, err = StripComments(buffer) //去掉注释
  825. if err != nil {
  826. emit("Failed to strip comments from json: %s\n", err)
  827. return &config
  828. }
  829. buffer = []byte(os.ExpandEnv(string(buffer))) //特殊
  830. err = json.Unmarshal(buffer, &config) //解析json格式数据
  831. if err != nil {
  832. emit("Failed unmarshalling json: %s\n", err)
  833. return &config
  834. }
  835. return &config
  836. }
  837. func LoadSchTemplateConfig(dataFile string) *SchTemplateConfig {
  838. var config SchTemplateConfig
  839. _, filename, _, _ := runtime.Caller(1)
  840. datapath := path.Join(path.Dir(filename), dataFile)
  841. config_file, err := os.Open(datapath)
  842. if err != nil {
  843. emit("Failed to open config file '%s': %s\n", datapath, err)
  844. return &config
  845. }
  846. fi, _ := config_file.Stat()
  847. buffer := make([]byte, fi.Size())
  848. _, err = config_file.Read(buffer)
  849. buffer, err = StripComments(buffer) //去掉注释
  850. if err != nil {
  851. emit("Failed to strip comments from json: %s\n", err)
  852. return &config
  853. }
  854. buffer = []byte(os.ExpandEnv(string(buffer))) //特殊
  855. err = json.Unmarshal(buffer, &config) //解析json格式数据
  856. if err != nil {
  857. emit("Failed unmarshalling json: %s\n", err)
  858. return &config
  859. }
  860. return &config
  861. }
  862. func LoadPrescriptionConfig(dataFile string) *PrescriptionConfig {
  863. var config PrescriptionConfig
  864. _, filename, _, _ := runtime.Caller(1)
  865. datapath := path.Join(path.Dir(filename), dataFile)
  866. config_file, err := os.Open(datapath)
  867. if err != nil {
  868. emit("Failed to open config file '%s': %s\n", datapath, err)
  869. return &config
  870. }
  871. fi, _ := config_file.Stat()
  872. buffer := make([]byte, fi.Size())
  873. _, err = config_file.Read(buffer)
  874. buffer, err = StripComments(buffer) //去掉注释
  875. if err != nil {
  876. emit("Failed to strip comments from json: %s\n", err)
  877. return &config
  878. }
  879. buffer = []byte(os.ExpandEnv(string(buffer))) //特殊
  880. err = json.Unmarshal(buffer, &config) //解析json格式数据
  881. if err != nil {
  882. emit("Failed unmarshalling json: %s\n", err)
  883. return &config
  884. }
  885. return &config
  886. }
  887. func emit(msgfmt string, args ...interface{}) {
  888. log.Printf(msgfmt, args...)
  889. }
  890. func StripComments(data []byte) ([]byte, error) {
  891. data = bytes.Replace(data, []byte("\r"), []byte(""), 0) // Windows
  892. lines := bytes.Split(data, []byte("\n")) //split to muli lines
  893. filtered := make([][]byte, 0)
  894. for _, line := range lines {
  895. match, err := regexp.Match(`^\s*#`, line)
  896. if err != nil {
  897. return nil, err
  898. }
  899. if !match {
  900. filtered = append(filtered, line)
  901. }
  902. }
  903. return bytes.Join(filtered, []byte("\n")), nil
  904. }
  905. func GetDateOfWeek(week_type int) (weekMonday int64) {
  906. thisTime := time.Now()
  907. weekDay := int(thisTime.Weekday())
  908. if weekDay == 0 {
  909. weekDay = 7
  910. }
  911. weekEnd := 7 - weekDay
  912. weekStart := weekEnd - 6
  913. weekTitle := make([]string, 0)
  914. days := make([]string, 0)
  915. for index := weekStart; index <= weekEnd; index++ {
  916. theDay := thisTime.AddDate(0, 0, index)
  917. indexYear, indexMonthTime, indexDay := theDay.Date()
  918. indexMonth := int(indexMonthTime)
  919. indexWeek := strconv.Itoa(indexYear) + "." + strconv.Itoa(indexMonth) + "." + strconv.Itoa(indexDay)
  920. weekTitle = append(weekTitle, indexWeek)
  921. days = append(days, theDay.Format("2006-01-02"))
  922. }
  923. var targetDayStr string
  924. switch week_type {
  925. case 1:
  926. targetDayStr = days[0]
  927. break
  928. case 2:
  929. targetDayStr = days[1]
  930. break
  931. case 3:
  932. targetDayStr = days[2]
  933. break
  934. case 4:
  935. targetDayStr = days[3]
  936. break
  937. case 5:
  938. targetDayStr = days[4]
  939. break
  940. case 6:
  941. targetDayStr = days[5]
  942. break
  943. case 7:
  944. targetDayStr = days[6]
  945. break
  946. }
  947. targetDay, _ := utils.ParseTimeStringToTime("2006-01-02", targetDayStr)
  948. return targetDay.Unix()
  949. }
  950. type Config struct {
  951. Parent_template []*models.VMDoctorAdviceParentTemplate "json:parent_template"
  952. }
  953. func LoadConfig(dataFile string) *Config {
  954. var config Config
  955. _, filename, _, _ := runtime.Caller(1)
  956. datapath := path.Join(path.Dir(filename), dataFile)
  957. config_file, err := os.Open(datapath)
  958. if err != nil {
  959. emit("Failed to open config file '%s': %s\n", datapath, err)
  960. return &config
  961. }
  962. fi, _ := config_file.Stat()
  963. buffer := make([]byte, fi.Size())
  964. _, err = config_file.Read(buffer)
  965. buffer, err = StripComments(buffer) //去掉注释
  966. if err != nil {
  967. emit("Failed to strip comments from json: %s\n", err)
  968. return &config
  969. }
  970. buffer = []byte(os.ExpandEnv(string(buffer))) //特殊
  971. err = json.Unmarshal(buffer, &config) //解析json格式数据
  972. if err != nil {
  973. emit("Failed unmarshalling json: %s\n", err)
  974. return &config
  975. }
  976. return &config
  977. }
  978. func InitEquitMentInformation(org *models.Org) {
  979. //添加设备型号
  980. mode := models.VMDeviceMode{
  981. DeviceMode: "5008S",
  982. Status: 1,
  983. UserOrgId: org.Id,
  984. Ctime: time.Now().Unix(),
  985. Mtime: time.Now().Unix(),
  986. }
  987. service.CreatedDeviceMode(&mode)
  988. deviceMode := models.VMDeviceMode{
  989. DeviceMode: "4008S",
  990. Status: 1,
  991. UserOrgId: org.Id,
  992. Ctime: time.Now().Unix(),
  993. Mtime: time.Now().Unix(),
  994. }
  995. service.CreatedDeviceMode(&deviceMode)
  996. firstDeviceMode, _ := service.GetFirstDeviceMode(org.Id)
  997. //获取机构下对应的第一数据
  998. number, _ := service.GetFirstBedNumber(org.Id)
  999. //添加设备
  1000. deviceAddmacher := models.VmDeviceAddmacher{
  1001. SerialNumber: "8VSAHE13",
  1002. DeviceType: 1,
  1003. BedId: number.ID,
  1004. DeviceName: "费森尤斯",
  1005. UnitType: firstDeviceMode.ID,
  1006. MachineStatus: 1,
  1007. Status: 1,
  1008. UserOrgId: org.Id,
  1009. Ctime: time.Now().Unix(),
  1010. }
  1011. service.CreateDeviceAddMacher(&deviceAddmacher)
  1012. macher, _ := service.GetLastMacher(org.Id)
  1013. fmt.Print(macher.ID)
  1014. treatmentmode := models.VmDeviceTreatmentmode{
  1015. MachineId: macher.ID,
  1016. Status: 1,
  1017. Ctime: time.Now().Unix(),
  1018. Mtime: time.Now().Unix(),
  1019. UserOrgId: org.Id,
  1020. TreateMode: 1,
  1021. }
  1022. service.CreatedTreateMode(&treatmentmode)
  1023. treatmentmodeone := models.VmDeviceTreatmentmode{
  1024. MachineId: macher.ID,
  1025. Status: 1,
  1026. Ctime: time.Now().Unix(),
  1027. Mtime: time.Now().Unix(),
  1028. UserOrgId: org.Id,
  1029. TreateMode: 2,
  1030. }
  1031. service.CreatedTreateMode(&treatmentmodeone)
  1032. treatmentmodetwo := models.VmDeviceTreatmentmode{
  1033. MachineId: macher.ID,
  1034. Status: 1,
  1035. Ctime: time.Now().Unix(),
  1036. Mtime: time.Now().Unix(),
  1037. UserOrgId: org.Id,
  1038. TreateMode: 3,
  1039. }
  1040. service.CreatedTreateMode(&treatmentmodetwo)
  1041. treatmentmodethree := models.VmDeviceTreatmentmode{
  1042. MachineId: macher.ID,
  1043. Status: 1,
  1044. Ctime: time.Now().Unix(),
  1045. Mtime: time.Now().Unix(),
  1046. UserOrgId: org.Id,
  1047. TreateMode: 4,
  1048. }
  1049. service.CreatedTreateMode(&treatmentmodethree)
  1050. treatmentmodefour := models.VmDeviceTreatmentmode{
  1051. MachineId: macher.ID,
  1052. Status: 1,
  1053. Ctime: time.Now().Unix(),
  1054. Mtime: time.Now().Unix(),
  1055. UserOrgId: org.Id,
  1056. TreateMode: 5,
  1057. }
  1058. service.CreatedTreateMode(&treatmentmodefour)
  1059. treatmentmodefive := models.VmDeviceTreatmentmode{
  1060. MachineId: macher.ID,
  1061. Status: 1,
  1062. Ctime: time.Now().Unix(),
  1063. Mtime: time.Now().Unix(),
  1064. UserOrgId: org.Id,
  1065. TreateMode: 12,
  1066. }
  1067. service.CreatedTreateMode(&treatmentmodefive)
  1068. }
  1069. func InitShowConfig(org *models.Org) {
  1070. service.BatchInsertFiledSystemConfig(org.Id)
  1071. template := &models.VMGobalTemplate{
  1072. Status: 1,
  1073. Ctime: time.Now().Unix(),
  1074. Mtime: time.Now().Unix(),
  1075. OrgId: org.Id,
  1076. TemplateId: 2,
  1077. }
  1078. service.CreateVMPrintTemplate(template)
  1079. }
  1080. type GoodTypesConfig struct {
  1081. Types []*models.VMGoodsType "json:types"
  1082. }
  1083. func LoadGoodTypeConfig(dataFile string) *GoodTypesConfig {
  1084. var config GoodTypesConfig
  1085. _, filename, _, _ := runtime.Caller(1)
  1086. datapath := path.Join(path.Dir(filename), dataFile)
  1087. config_file, err := os.Open(datapath)
  1088. fmt.Println("1111111")
  1089. fmt.Println(err)
  1090. fmt.Println("2222222")
  1091. if err != nil {
  1092. emit("Failed to open config file '%s': %s\n", datapath, err)
  1093. return &config
  1094. }
  1095. fi, _ := config_file.Stat()
  1096. buffer := make([]byte, fi.Size())
  1097. _, err = config_file.Read(buffer)
  1098. buffer, err = StripComments(buffer) //去掉注释
  1099. fmt.Println("333333")
  1100. fmt.Println(err)
  1101. fmt.Println("4444444")
  1102. if err != nil {
  1103. emit("Failed to strip comments from json: %s\n", err)
  1104. return &config
  1105. }
  1106. buffer = []byte(os.ExpandEnv(string(buffer))) //特殊
  1107. err = json.Unmarshal(buffer, &config) //解析json格式数据
  1108. fmt.Println("55555555")
  1109. fmt.Println(err)
  1110. fmt.Println("66666666")
  1111. if err != nil {
  1112. emit("Failed unmarshalling json: %s\n", err)
  1113. return &config
  1114. }
  1115. return &config
  1116. }
  1117. func InitGoodTypesConfig(org *models.Org) {
  1118. good_types := LoadGoodTypeConfig("./good_types.json").Types
  1119. fmt.Println(good_types)
  1120. for _, item := range good_types {
  1121. good_type := &models.GoodsType{
  1122. TypeCode: item.TypeCode,
  1123. TypeName: item.TypeName,
  1124. Remark: "",
  1125. Number: item.Number,
  1126. Ctime: time.Now().Unix(),
  1127. Mtime: time.Now().Unix(),
  1128. OrgId: org.Id,
  1129. Status: 1,
  1130. Type: 1,
  1131. }
  1132. service.AddSigleGoodType(good_type)
  1133. }
  1134. }