role_controller.go 44KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412
  1. package controllers
  2. import (
  3. "github.com/jinzhu/gorm"
  4. "strconv"
  5. "strings"
  6. "time"
  7. "XT_New/enums"
  8. "XT_New/models"
  9. "XT_New/service"
  10. "github.com/astaxie/beego"
  11. )
  12. func RoleAPIControllerRegistRouters() {
  13. beego.Router("/api/roles", &RoleAPIController{}, "get:GetRoles")
  14. beego.Router("/api/role/create", &RoleAPIController{}, "post:CreateRole")
  15. beego.Router("/api/role/modify", &RoleAPIController{}, "post:ModifyRole")
  16. beego.Router("/api/role/setstatus", &RoleAPIController{}, "post:ModifyRoleStatus")
  17. beego.Router("/role/purview/editinit", &RoleAPIController{}, "get:EditPurviewInitData")
  18. beego.Router("/role/purview/edit", &RoleAPIController{}, "post:EditPurview")
  19. beego.Router("/api/adminmain", &RoleAPIController{}, "get:AdminMainView")
  20. beego.Router("/api/admins", &RoleAPIController{}, "get:Admins")
  21. beego.Router("/api/admin/addinit", &RoleAPIController{}, "get:AddAdminInitData")
  22. beego.Router("/api/admin/add", &RoleAPIController{}, "post:AddAdmin")
  23. beego.Router("/api/admin/editinit", &RoleAPIController{}, "get:EditAdminInitData")
  24. beego.Router("/api/admin/edit", &RoleAPIController{}, "post:EditAdmin")
  25. beego.Router("/api/admin/setstatus", &RoleAPIController{}, "post:AdminSetStatus")
  26. beego.Router("/api/admin/specialpermission/initdata", &RoleAPIController{}, "get:SpecialPermissionInitData")
  27. beego.Router("/api/admin/specialpermission/dialysisrecord/submit", &RoleAPIController{}, "post:SubmitDialysisRecordPermission")
  28. beego.Router("/api/roles/list", &RoleAPIController{}, "get:GetAllOrgRole")
  29. beego.Router("/api/staff", &RoleAPIController{}, "get:GetAllOrgUser")
  30. beego.Router("/api/role/addStaff", &RoleAPIController{}, "post:AddRoleStaff")
  31. beego.Router("/api/role/staff", &RoleAPIController{}, "get:GetRoleStaff")
  32. beego.Router("/api/role", &RoleAPIController{}, "get:GetRoleInfo")
  33. }
  34. type RoleAPIController struct {
  35. BaseAuthAPIController
  36. }
  37. // /api/roles [get]
  38. // @param page?:int
  39. func (this *RoleAPIController) GetRoles() {
  40. page, _ := this.GetInt("page")
  41. adminUserInfo := this.GetAdminUserInfo()
  42. //beego.Alert(adminUserInfo.AdminUser)
  43. //if adminUserInfo.AdminUser.IsSuperAdmin == false {
  44. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  45. // return
  46. //}
  47. if page <= 0 {
  48. page = 1
  49. }
  50. roles, total, getRoleErr := service.GetRoles(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, page, 100)
  51. if getRoleErr != nil {
  52. //beego.Error("获取角色列表失败:", getRoleErr)
  53. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  54. } else {
  55. this.ServeSuccessJSON(map[string]interface{}{
  56. "roles": roles,
  57. "total_count": total,
  58. })
  59. }
  60. }
  61. // /api/role/create [post]
  62. // @param name:string
  63. // @param intro:string
  64. func (this *RoleAPIController) CreateRole() {
  65. name := this.GetString("name")
  66. intro := this.GetString("intro")
  67. if len(name) == 0 {
  68. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  69. return
  70. }
  71. adminUserInfo := this.GetAdminUserInfo()
  72. //if adminUserInfo.AdminUser.IsSuperAdmin == false {
  73. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  74. // return
  75. //}
  76. total := service.FindRoleRecordByRoleName(name, adminUserInfo.CurrentOrgId)
  77. if total > 0 {
  78. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRoleNameIsExist)
  79. return
  80. }
  81. role, createErr := service.CreateRole(adminUserInfo.AdminUser.Id, adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, name, intro)
  82. if createErr != nil {
  83. //beego.Error("创建角色失败:", createErr)
  84. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
  85. } else {
  86. this.ServeSuccessJSON(map[string]interface{}{
  87. "id": role.Id,
  88. "name": role.RoleName,
  89. "intro": role.RoleIntro,
  90. "status": role.Status,
  91. })
  92. }
  93. }
  94. // /api/role/modify
  95. // @param role_id:int
  96. // @param name:string
  97. // @param intro:string
  98. func (this *RoleAPIController) ModifyRole() {
  99. roleID, _ := this.GetInt64("role_id")
  100. name := this.GetString("name")
  101. intro := this.GetString("intro")
  102. if roleID <= 0 || len(name) == 0 || len(intro) == 0 {
  103. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  104. return
  105. }
  106. //adminUserInfo := this.GetAdminUserInfo()
  107. //if adminUserInfo.AdminUser.IsSuperAdmin == false {
  108. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  109. // return
  110. //}
  111. role, getRoleErr := service.GetRoleByRoleID(roleID)
  112. if getRoleErr != nil {
  113. //beego.Error("获取角色失败:", getRoleErr)
  114. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  115. return
  116. } else if role == nil {
  117. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRoleNotExist)
  118. return
  119. }
  120. role.RoleName = name
  121. role.RoleIntro = intro
  122. role.ModifyTime = time.Now().Unix()
  123. saveErr := service.ModifyRole(role)
  124. if saveErr != nil {
  125. //beego.Error("修改角色失败:", role.Id, saveErr)
  126. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
  127. } else {
  128. this.ServeSuccessJSON(nil)
  129. }
  130. }
  131. // /api/role/setstatus
  132. // @param role_id:int
  133. // @param enable:bool
  134. func (this *RoleAPIController) ModifyRoleStatus() {
  135. roleID, _ := this.GetInt64("role_id")
  136. enable, _ := this.GetBool("enable")
  137. if roleID <= 0 {
  138. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  139. return
  140. }
  141. adminUserInfo := this.GetAdminUserInfo()
  142. //if adminUserInfo.AdminUser.IsSuperAdmin == false {
  143. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  144. // return
  145. //}
  146. role, getRoleErr := service.GetRoleByRoleID(roleID)
  147. if getRoleErr != nil {
  148. //beego.Error("获取角色失败:", getRoleErr)
  149. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  150. return
  151. } else if role == nil {
  152. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRoleNotExist)
  153. return
  154. }
  155. if enable == false {
  156. if count, _ := service.RoleAdminUserCountTwo(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, roleID); count != 0 {
  157. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCannotRemoveRole)
  158. return
  159. }
  160. }
  161. if enable {
  162. role.Status = 1
  163. } else {
  164. role.Status = 2
  165. }
  166. role.ModifyTime = time.Now().Unix()
  167. saveErr := service.ModifyRole(role)
  168. if saveErr != nil {
  169. //beego.Error("修改角色失败:", role.Id, saveErr)
  170. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
  171. } else {
  172. this.ServeSuccessJSON(nil)
  173. }
  174. }
  175. // /role/purview/editinit [get]
  176. // @param role_id:int
  177. func (this *RoleAPIController) EditPurviewInitData() {
  178. //adminUserInfo := this.GetAdminUserInfo()
  179. //if
  180. //}
  181. roleId, _ := this.GetInt64("role_id")
  182. if roleId <= 0 {
  183. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  184. return
  185. }
  186. role, _ := service.GetRoleByRoleID(roleId)
  187. //purviews_xt, getPurviewsErr := service.GetAllGeneralPurviewVMsProcessed(3)
  188. purviews_scrm, getPurviewsErr := service.GetAllGeneralPurviewVMsProcessed(6)
  189. purviews_cdm, getPurviewsErr := service.GetAllGeneralPurviewVMsProcessed(4)
  190. purviews_mall, getPurviewsErr := service.GetAllGeneralPurviewVMsProcessed(7)
  191. purviews_ky_mall, getPurviewsErr := service.GetAllGeneralPurviewVMsProcessed(8)
  192. purviews_func, _ := service.GetAllGeneralFuncPurviewVMsProcessed()
  193. //门诊
  194. outpatientRegistration, _, _ := service.GetOtherAllGeneralPurviewVMsProcessed("/outpatientRegistration/manage")
  195. //电子病历
  196. _, _, originEle := service.GetOtherAllGeneralPurviewVMsProcessed("/patinets/ele")
  197. //透析管理
  198. _, _, originDialysis := service.GetOtherAllGeneralPurviewVMsProcessed("/dialysis/manage")
  199. //库房管理
  200. _, _, originStock := service.GetOtherAllGeneralPurviewVMsProcessed("/stock/manage")
  201. //配置管理
  202. //_, _, orginConfig := service.GetOtherAllGeneralPurviewVMsProcessed("/config/manage")
  203. //门诊管理
  204. _, _, outpatientRegistrationPurview := service.GetOtherAllGeneralPurviewVMsProcessed("/outpatientRegistration/index")
  205. _, _, outpatientRegistrationPurviewTwo := service.GetOtherAllGeneralPurviewVMsProcessed("/outpatientDoctorStation")
  206. _, _, outpatientRegistrationPurviewThree := service.GetOtherAllGeneralPurviewVMsProcessed("/outpatientCharges")
  207. //透析管理
  208. _, _, originDialysisWatchPurview := service.GetOtherAllGeneralPurviewVMsProcessed("/dialysis/watch")
  209. _, _, originWorkforcePurview := service.GetOtherAllGeneralPurviewVMsProcessed("/workforce/patient")
  210. _, _, originSignPurview := service.GetOtherAllGeneralPurviewVMsProcessed("/sign/lineup")
  211. _, _, originMedicalSchedulingPurview := service.GetOtherAllGeneralPurviewVMsProcessed("/medicalScheduling/index")
  212. _, _, originQcdPurview := service.GetOtherAllGeneralPurviewVMsProcessed("/qcd/manage")
  213. _, _, originDevicePurview := service.GetOtherAllGeneralPurviewVMsProcessed("/device/manage")
  214. _, _, originDataUploadPurview := service.GetOtherAllGeneralPurviewVMsProcessed("/data/upload")
  215. _, _, originConsumablesPurview := service.GetOtherAllGeneralPurviewVMsProcessed("/stock/consumablesManagement")
  216. _, _, originDrugsPurview := service.GetOtherAllGeneralPurviewVMsProcessed("/stock/drugs")
  217. _, _, originSelfPreparedMedicinePurview := service.GetOtherAllGeneralPurviewVMsProcessed("/stock/selfPreparedMedicineIndex")
  218. _, _, originOtherPurview := service.GetOtherAllGeneralPurviewVMsProcessed("/stock/other")
  219. _, _, originIntegrationPurview := service.GetOtherAllGeneralPurviewVMsProcessed("/integration/manage")
  220. _, _, originTemplatePurview := service.GetOtherAllGeneralPurviewVMsProcessed("/template/manage")
  221. _, _, originDictMedicinePurview := service.GetOtherAllGeneralPurviewVMsProcessed("/dict/manage")
  222. _, _, originBedPurview := service.GetOtherAllGeneralPurviewVMsProcessed("/bed/manage")
  223. //门诊管理
  224. subPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  225. subPurviewTreeViewModelTwo := []*service.PurviewTreeViewModel{}
  226. subPurviewTreeViewModelThree := []*service.PurviewTreeViewModel{}
  227. for _, item := range outpatientRegistrationPurview {
  228. temp := &service.PurviewTreeViewModel{
  229. ID: item.Id,
  230. PID: item.Parentid,
  231. Name: item.Name,
  232. Number: 1,
  233. }
  234. subPurviewTreeViewModel = append(subPurviewTreeViewModel, temp)
  235. }
  236. for _, item := range outpatientRegistrationPurviewTwo {
  237. temp := &service.PurviewTreeViewModel{
  238. ID: item.Id,
  239. PID: item.Parentid,
  240. Name: item.Name,
  241. Number: 1,
  242. }
  243. subPurviewTreeViewModelTwo = append(subPurviewTreeViewModelTwo, temp)
  244. }
  245. for _, item := range outpatientRegistrationPurviewThree {
  246. temp := &service.PurviewTreeViewModel{
  247. ID: item.Id,
  248. PID: item.Parentid,
  249. Name: item.Name,
  250. Number: 1,
  251. }
  252. subPurviewTreeViewModelThree = append(subPurviewTreeViewModelThree, temp)
  253. }
  254. for _, item := range outpatientRegistration {
  255. if item.Name == "门诊挂号" {
  256. item.Childs = append(item.Childs, subPurviewTreeViewModel...)
  257. }
  258. if item.Name == "门诊医生站" {
  259. item.Childs = append(item.Childs, subPurviewTreeViewModelTwo...)
  260. }
  261. if item.Name == "门诊收费" {
  262. item.Childs = append(item.Childs, subPurviewTreeViewModelThree...)
  263. }
  264. }
  265. //电子病历
  266. subElePurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  267. for _, item := range originEle {
  268. temp := &service.PurviewTreeViewModel{
  269. ID: item.Id,
  270. PID: item.Parentid,
  271. Name: item.Name,
  272. Number: 1,
  273. }
  274. subElePurviewTreeViewModel = append(subElePurviewTreeViewModel, temp)
  275. }
  276. //透析管理
  277. subDialysisPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  278. for _, item := range originDialysis {
  279. temp := &service.PurviewTreeViewModel{
  280. ID: item.Id,
  281. PID: item.Parentid,
  282. Name: item.Name,
  283. Number: 1,
  284. }
  285. subDialysisPurviewTreeViewModel = append(subDialysisPurviewTreeViewModel, temp)
  286. }
  287. //库存管理
  288. subStockPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  289. for _, item := range originStock {
  290. temp := &service.PurviewTreeViewModel{
  291. ID: item.Id,
  292. PID: item.Parentid,
  293. Name: item.Name,
  294. Number: 1,
  295. }
  296. subStockPurviewTreeViewModel = append(subStockPurviewTreeViewModel, temp)
  297. }
  298. ////配置管理
  299. //subConfigPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  300. //for _, item := range orginConfig {
  301. // temp := &service.PurviewTreeViewModel{
  302. // ID: item.Id,
  303. // PID: item.Parentid,
  304. // Name: item.Name,
  305. // Number: 1,
  306. // }
  307. // subConfigPurviewTreeViewModel = append(subConfigPurviewTreeViewModel, temp)
  308. //}
  309. //
  310. //
  311. //监测管理
  312. subWatchPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  313. for _, item := range originDialysisWatchPurview {
  314. temp := &service.PurviewTreeViewModel{
  315. ID: item.Id,
  316. PID: item.Parentid,
  317. Name: item.Name,
  318. Number: 1,
  319. }
  320. subWatchPurviewTreeViewModel = append(subWatchPurviewTreeViewModel, temp)
  321. }
  322. //排班管理
  323. subWorkforcePurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  324. for _, item := range originWorkforcePurview {
  325. temp := &service.PurviewTreeViewModel{
  326. ID: item.Id,
  327. PID: item.Parentid,
  328. Name: item.Name,
  329. Number: 1,
  330. }
  331. subWorkforcePurviewTreeViewModel = append(subWorkforcePurviewTreeViewModel, temp)
  332. }
  333. //签到排队
  334. subSignPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  335. for _, item := range originSignPurview {
  336. temp := &service.PurviewTreeViewModel{
  337. ID: item.Id,
  338. PID: item.Parentid,
  339. Name: item.Name,
  340. Number: 1,
  341. }
  342. subSignPurviewTreeViewModel = append(subSignPurviewTreeViewModel, temp)
  343. }
  344. //医护排班
  345. subMedicalSchedulingPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  346. for _, item := range originMedicalSchedulingPurview {
  347. temp := &service.PurviewTreeViewModel{
  348. ID: item.Id,
  349. PID: item.Parentid,
  350. Name: item.Name,
  351. Number: 1,
  352. }
  353. subMedicalSchedulingPurviewTreeViewModel = append(subMedicalSchedulingPurviewTreeViewModel, temp)
  354. }
  355. subQCDPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  356. for _, item := range originQcdPurview {
  357. temp := &service.PurviewTreeViewModel{
  358. ID: item.Id,
  359. PID: item.Parentid,
  360. Name: item.Name,
  361. Number: 1,
  362. }
  363. subQCDPurviewTreeViewModel = append(subQCDPurviewTreeViewModel, temp)
  364. }
  365. subDevicePurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  366. for _, item := range originDevicePurview {
  367. temp := &service.PurviewTreeViewModel{
  368. ID: item.Id,
  369. PID: item.Parentid,
  370. Name: item.Name,
  371. Number: 1,
  372. }
  373. subDevicePurviewTreeViewModel = append(subDevicePurviewTreeViewModel, temp)
  374. }
  375. subDataUploadPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  376. for _, item := range originDataUploadPurview {
  377. temp := &service.PurviewTreeViewModel{
  378. ID: item.Id,
  379. PID: item.Parentid,
  380. Name: item.Name,
  381. Number: 1,
  382. }
  383. subDataUploadPurviewTreeViewModel = append(subDataUploadPurviewTreeViewModel, temp)
  384. }
  385. subConsumablesPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  386. for _, item := range originConsumablesPurview {
  387. temp := &service.PurviewTreeViewModel{
  388. ID: item.Id,
  389. PID: item.Parentid,
  390. Name: item.Name,
  391. Number: 1,
  392. }
  393. subConsumablesPurviewTreeViewModel = append(subConsumablesPurviewTreeViewModel, temp)
  394. }
  395. subDrugPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  396. for _, item := range originDrugsPurview {
  397. temp := &service.PurviewTreeViewModel{
  398. ID: item.Id,
  399. PID: item.Parentid,
  400. Name: item.Name,
  401. Number: 1,
  402. }
  403. subDrugPurviewTreeViewModel = append(subDrugPurviewTreeViewModel, temp)
  404. }
  405. subSelfPreparedMedicinePurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  406. for _, item := range originSelfPreparedMedicinePurview {
  407. temp := &service.PurviewTreeViewModel{
  408. ID: item.Id,
  409. PID: item.Parentid,
  410. Name: item.Name,
  411. Number: 1,
  412. }
  413. subSelfPreparedMedicinePurviewTreeViewModel = append(subSelfPreparedMedicinePurviewTreeViewModel, temp)
  414. }
  415. subOtherPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  416. for _, item := range originOtherPurview {
  417. temp := &service.PurviewTreeViewModel{
  418. ID: item.Id,
  419. PID: item.Parentid,
  420. Name: item.Name,
  421. Number: 1,
  422. }
  423. subOtherPurviewTreeViewModel = append(subOtherPurviewTreeViewModel, temp)
  424. }
  425. subIntegrationPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  426. for _, item := range originIntegrationPurview {
  427. temp := &service.PurviewTreeViewModel{
  428. ID: item.Id,
  429. PID: item.Parentid,
  430. Name: item.Name,
  431. Number: 1,
  432. }
  433. subIntegrationPurviewTreeViewModel = append(subIntegrationPurviewTreeViewModel, temp)
  434. }
  435. subTemplatePurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  436. for _, item := range originTemplatePurview {
  437. temp := &service.PurviewTreeViewModel{
  438. ID: item.Id,
  439. PID: item.Parentid,
  440. Name: item.Name,
  441. Number: 1,
  442. }
  443. subTemplatePurviewTreeViewModel = append(subTemplatePurviewTreeViewModel, temp)
  444. }
  445. subDictPurviewTreeViewModel := []*service.PurviewTreeViewModel{}
  446. for _, item := range originDictMedicinePurview {
  447. temp := &service.PurviewTreeViewModel{
  448. ID: item.Id,
  449. PID: item.Parentid,
  450. Name: item.Name,
  451. Number: 1,
  452. }
  453. subDictPurviewTreeViewModel = append(subDictPurviewTreeViewModel, temp)
  454. }
  455. subBedPrviewTreeViewModel := []*service.PurviewTreeViewModel{}
  456. for _, item := range originBedPurview {
  457. temp := &service.PurviewTreeViewModel{
  458. ID: item.Id,
  459. PID: item.Parentid,
  460. Name: item.Name,
  461. Number: 1,
  462. }
  463. subBedPrviewTreeViewModel = append(subBedPrviewTreeViewModel, temp)
  464. }
  465. for _, item := range subDialysisPurviewTreeViewModel {
  466. if item.Name == "透析记录" {
  467. item.Childs = append(item.Childs, purviews_func...)
  468. }
  469. if item.Name == "透析监控" {
  470. item.Childs = append(item.Childs, subWatchPurviewTreeViewModel...)
  471. }
  472. if item.Name == "患者排班" {
  473. item.Childs = append(item.Childs, subWorkforcePurviewTreeViewModel...)
  474. }
  475. if item.Name == "签到排队" {
  476. item.Childs = append(item.Childs, subSignPurviewTreeViewModel...)
  477. }
  478. if item.Name == "医护排班" {
  479. item.Childs = append(item.Childs, subMedicalSchedulingPurviewTreeViewModel...)
  480. }
  481. if item.Name == "质控管理" {
  482. item.Childs = append(item.Childs, subQCDPurviewTreeViewModel...)
  483. }
  484. if item.Name == "院感管理" {
  485. item.Childs = append(item.Childs, subDevicePurviewTreeViewModel...)
  486. }
  487. if item.Name == "质控上报" {
  488. item.Childs = append(item.Childs, subDataUploadPurviewTreeViewModel...)
  489. }
  490. }
  491. for _, item := range subStockPurviewTreeViewModel {
  492. if item.Name == "耗材管理" {
  493. item.Childs = append(item.Childs, subConsumablesPurviewTreeViewModel...)
  494. }
  495. if item.Name == "药品管理" {
  496. item.Childs = append(item.Childs, subDrugPurviewTreeViewModel...)
  497. }
  498. if item.Name == "自备药管理" {
  499. item.Childs = append(item.Childs, subSelfPreparedMedicinePurviewTreeViewModel...)
  500. }
  501. if item.Name == "其他管理" {
  502. item.Childs = append(item.Childs, subOtherPurviewTreeViewModel...)
  503. }
  504. }
  505. //for _, item := range subConfigPurviewTreeViewModel {
  506. // if item.Name == "集成管理" {
  507. // item.Childs = append(item.Childs, subIntegrationPurviewTreeViewModel...)
  508. // }
  509. // if item.Name == "模版管理" {
  510. // item.Childs = append(item.Childs, subTemplatePurviewTreeViewModel...)
  511. // }
  512. // if item.Name == "字典管理" {
  513. // item.Childs = append(item.Childs, subDictPurviewTreeViewModel...)
  514. // }
  515. // if item.Name == "床位管理" {
  516. // item.Childs = append(item.Childs, subBedPrviewTreeViewModel...)
  517. // }
  518. //
  519. //}
  520. purviews := []*service.PurviewTreeViewModel{}
  521. menzhen := &service.PurviewTreeViewModel{
  522. ID: 0,
  523. PID: 0,
  524. Name: "门诊管理",
  525. Number: 3,
  526. Childs: outpatientRegistration,
  527. }
  528. purviews = append(purviews, menzhen)
  529. dianzi := &service.PurviewTreeViewModel{
  530. ID: 0,
  531. PID: 0,
  532. Name: "电子病历",
  533. Number: 3,
  534. Childs: subElePurviewTreeViewModel,
  535. }
  536. purviews = append(purviews, dianzi)
  537. touxi := &service.PurviewTreeViewModel{
  538. ID: 0,
  539. PID: 0,
  540. Name: "透析管理",
  541. Number: 3,
  542. Childs: subDialysisPurviewTreeViewModel,
  543. }
  544. purviews = append(purviews, touxi)
  545. kufang := &service.PurviewTreeViewModel{
  546. ID: 0,
  547. PID: 0,
  548. Name: "库房管理",
  549. Number: 3,
  550. Childs: subStockPurviewTreeViewModel,
  551. }
  552. purviews = append(purviews, kufang)
  553. ky_mall := &service.PurviewTreeViewModel{
  554. ID: 0,
  555. PID: 0,
  556. Name: "酷医商城",
  557. Number: 3,
  558. Childs: purviews_ky_mall,
  559. }
  560. purviews = append(purviews, ky_mall)
  561. cdm := &service.PurviewTreeViewModel{
  562. ID: 0,
  563. PID: 0,
  564. Number: 3,
  565. Name: "慢病管理",
  566. Childs: purviews_cdm,
  567. }
  568. purviews = append(purviews, cdm)
  569. scrm := &service.PurviewTreeViewModel{
  570. ID: 0,
  571. PID: 0,
  572. Name: "营销管理",
  573. Number: 3,
  574. Childs: purviews_scrm,
  575. }
  576. purviews = append(purviews, scrm)
  577. mall := &service.PurviewTreeViewModel{
  578. ID: 0,
  579. PID: 0,
  580. Name: "分销商城",
  581. Number: 3,
  582. Childs: purviews_mall,
  583. }
  584. purviews = append(purviews, mall)
  585. //peizhi := &service.PurviewTreeViewModel{
  586. // ID: 0,
  587. // PID: 0,
  588. // Name: "配置管理",
  589. // Number: 3,
  590. // Childs: subConfigPurviewTreeViewModel,
  591. //}
  592. //purviews = append(purviews, peizhi)
  593. if getPurviewsErr != nil {
  594. //beego.Error("获取所有权限时出错:", getPurviewsErr)
  595. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  596. return
  597. }
  598. rolePurviewIdStr, getRPIdsErr := service.GetRolePurviewIds(roleId)
  599. if getRPIdsErr != nil {
  600. //beego.Error("获取角色的权限时出错:", getRPIdsErr)
  601. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  602. return
  603. }
  604. roleFuncPurview, getFuncRPIdsErr := service.GetRoleFuncPurview(roleId)
  605. if getFuncRPIdsErr == gorm.ErrRecordNotFound {
  606. //beego.Error("获取角色的权限时出错:", getRPIdsErr)
  607. if roleFuncPurview.ID == 0 {
  608. rolePurviewIdStr = rolePurviewIdStr
  609. } else {
  610. rolePurviewIdStr = rolePurviewIdStr + "," + roleFuncPurview.PurviewIds
  611. }
  612. } else if getFuncRPIdsErr != nil {
  613. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  614. return
  615. } else {
  616. if roleFuncPurview.ID == 0 {
  617. rolePurviewIdStr = rolePurviewIdStr
  618. } else {
  619. rolePurviewIdStr = rolePurviewIdStr + "," + roleFuncPurview.PurviewIds
  620. }
  621. }
  622. this.ServeSuccessJSON(map[string]interface{}{
  623. "purviews": purviews,
  624. "role": role,
  625. "role_purview_ids": rolePurviewIdStr + "," + roleFuncPurview.PurviewIds,
  626. })
  627. }
  628. // /role/purview/edit [post]
  629. // @param role_id:int
  630. // @param purview_ids:string
  631. func (this *RoleAPIController) EditPurview() {
  632. adminUserInfo := this.GetAdminUserInfo()
  633. roleId, _ := this.GetInt64("role_id")
  634. purviewIds := this.GetString("purview_ids")
  635. funcPurviewIds := this.GetString("func_purview_ids")
  636. if roleId <= 0 {
  637. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  638. return
  639. }
  640. redis := service.RedisClient()
  641. defer redis.Close()
  642. users := service.GetAllUserRole(adminUserInfo.CurrentOrgId)
  643. for _, item := range users {
  644. key := "purviews_" + strconv.FormatInt(adminUserInfo.CurrentOrgId, 10) + strconv.FormatInt(item.AdminUserId, 10)
  645. redis.Set(key, "", time.Second)
  646. }
  647. err := service.SaveRolePurviewIds(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, roleId, purviewIds)
  648. err = service.SaveFuncRolePurviewIds(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, roleId, funcPurviewIds)
  649. if err != nil {
  650. //beego.Error("设置角色的权限时出错:", err)
  651. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
  652. } else {
  653. this.ServeSuccessJSON(nil)
  654. }
  655. }
  656. // func (this *RoleAPIController) doesUserHaveAccess(userID int64) bool {
  657. // adminUser, getAdminUserErr := service.GetAdminUserByUserID(userID)
  658. // if getAdminUserErr != nil {
  659. // beego.Error("获取用户信息失败:%v", getAdminUserErr)
  660. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  661. // return false
  662. // } else if adminUser == nil {
  663. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeAdminUserNotExist)
  664. // return false
  665. // } else if adminUser.Status == 2 {
  666. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeUserWasForbidden)
  667. // return false
  668. // } else if adminUser.IsSuperAdmin == false {
  669. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  670. // return false
  671. // }
  672. // return true
  673. // }
  674. // func (this *RoleAPIController) isAppRoleExist(orgID int64, appID int64, userID int64) bool {
  675. // appRole, getAppRoleErr := service.GetAppRole(orgID, appID, userID)
  676. // if getAppRoleErr != nil {
  677. // beego.Error("检查用户和机构应用对应关系时失败:%v", getAppRoleErr)
  678. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  679. // return false
  680. // } else if appRole == nil {
  681. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  682. // return false
  683. // }
  684. // return true
  685. // }
  686. // /api/adminmain [get]
  687. func (this *RoleAPIController) AdminMainView() {
  688. adminUserInfo := this.GetAdminUserInfo()
  689. var isSubSuperAdmin bool = false
  690. adminUserRole, _ := service.GetAppRole(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, adminUserInfo.AdminUser.Id)
  691. if len(adminUserRole.RoleIds) > 0 {
  692. role_ids := strings.Split(adminUserRole.RoleIds, ",")
  693. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  694. if adminUserInfo.AdminUser.Id != org.Creator {
  695. for _, item := range role_ids {
  696. id, _ := strconv.ParseInt(item, 10, 64)
  697. if id != 0 {
  698. role, _ := service.GetRoleByRoleID(id)
  699. if role != nil {
  700. if role.IsSystem == 1 && role.RoleName == "子管理员" {
  701. isSubSuperAdmin = true
  702. }
  703. }
  704. }
  705. }
  706. }
  707. }
  708. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  709. viewModels, _, getAdminsErr := service.GetAdminUsersAndLoginInfo(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, 1, 100)
  710. if getAdminsErr != nil {
  711. //beego.Error("获取管理员列表失败:", getAdminsErr)
  712. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  713. return
  714. }
  715. this.ServeSuccessJSON(map[string]interface{}{
  716. "admins": viewModels,
  717. "org": org,
  718. "isSubSuperAdmin": isSubSuperAdmin,
  719. })
  720. }
  721. // /api/admins [get]
  722. // @param page?:int
  723. func (this *RoleAPIController) Admins() {
  724. adminUserInfo := this.GetAdminUserInfo()
  725. //if adminUserInfo.AdminUser.IsSuperAdmin == false {
  726. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  727. // return
  728. //}
  729. page, _ := this.GetInt("page")
  730. viewModels, total, getAdminsErr := service.GetAdminUsersAndLoginInfo(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, page, 100)
  731. if getAdminsErr != nil {
  732. //beego.Error("获取管理员列表失败:", getAdminsErr)
  733. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  734. } else {
  735. this.ServeSuccessJSON(map[string]interface{}{
  736. "admins": viewModels,
  737. "total_count": total,
  738. })
  739. }
  740. }
  741. // /api/admin/addinit [get]
  742. func (this *RoleAPIController) AddAdminInitData() {
  743. adminUserInfo := this.GetAdminUserInfo()
  744. //if adminUserInfo.AdminUser.IsSuperAdmin == false {
  745. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  746. // return
  747. //}
  748. var isSubSuperAdmin bool = false
  749. adminUserRole, _ := service.GetAppRole(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, adminUserInfo.AdminUser.Id)
  750. if len(adminUserRole.RoleIds) > 0 {
  751. //app_role, _ := service.GetAppRoleById(adminUserInfo.)
  752. role_ids := strings.Split(adminUserRole.RoleIds, ",")
  753. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  754. if adminUserInfo.AdminUser.Id != org.Creator {
  755. for _, item := range role_ids {
  756. id, _ := strconv.ParseInt(item, 10, 64)
  757. if id != 0 {
  758. role, _ := service.GetRoleByRoleID(id)
  759. if role != nil {
  760. if role.IsSystem == 1 && role.RoleName == "子管理员" {
  761. isSubSuperAdmin = true
  762. }
  763. }
  764. }
  765. }
  766. }
  767. }
  768. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  769. roles, getRoleErr := service.GetAllValidRoles(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId)
  770. if getRoleErr != nil {
  771. //beego.Error("获取所有角色失败:", getRoleErr)
  772. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  773. return
  774. }
  775. redisClient := service.RedisClient()
  776. defer redisClient.Close()
  777. qntoken, _ := redisClient.Get("qn_token").Result()
  778. this.ServeSuccessJSON(map[string]interface{}{
  779. "roles": roles,
  780. "qntoken": qntoken,
  781. "isSubSuperAdmin": isSubSuperAdmin,
  782. "org": org,
  783. })
  784. }
  785. // /api/admin/add [post]
  786. // @param mobile:string
  787. // @param name:string
  788. // @param type:int 管理员类型:2.医生 3.护士 4.运营
  789. // @param title:int 用户职称(1.医士;2.医师;3.住院医师;4.主治医师;5.副主任医师;6.主任医师;7.护士;8.护师;9.主管护师;10.副主任护师;11.主任护师;12.运营专员;13.运营主管)
  790. // @param role:int
  791. // @param intro?:string
  792. func (this *RoleAPIController) AddAdmin() {
  793. adminUserInfo := this.GetAdminUserInfo()
  794. //if adminUserInfo.AdminUser.IsSuperAdmin == false {
  795. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  796. // return
  797. //}
  798. mobile := this.GetString("mobile")
  799. name := this.GetString("name")
  800. userType, _ := this.GetInt("type")
  801. userTitle, _ := this.GetInt("title")
  802. roleIds := this.GetString("role")
  803. user_title_name := this.GetString("user_title_name")
  804. department := this.GetString("department")
  805. department_id, _ := this.GetInt64("department_id")
  806. if len(mobile) == 0 || len(name) == 0 || (userType != 2 && userType != 3 && userType != 4) || len(roleIds) <= 0 {
  807. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  808. return
  809. }
  810. // 判断是否已存在该手机号
  811. if adminUser, err := service.GetValidAdminUserByMobileReturnErr(mobile); err != nil {
  812. //beego.Error("查询用户是否已被添加为管理员时失败:", err)
  813. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  814. return
  815. } else {
  816. if adminUser == nil { //新增账号和用户
  817. _, password, createErr := service.CreateGeneralAdminUser(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, mobile, name, user_title_name, roleIds, userType, userTitle, department_id, department)
  818. if createErr != nil {
  819. //beego.Error("创建管理员失败:", createErr)
  820. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
  821. return
  822. } else {
  823. sendSMSErr := service.SMSSendInviteMobileToJoinOrgAdmin(name, mobile, password)
  824. if sendSMSErr != nil {
  825. }
  826. this.ServeSuccessJSON(nil)
  827. return
  828. }
  829. } else {
  830. total, _ := service.FindAdminUserByID(adminUser.Id, adminUserInfo.CurrentOrgId)
  831. if total <= 0 {
  832. //新增用户
  833. app_role := &models.App_Role{
  834. AdminUserId: adminUser.Id,
  835. OrgId: adminUserInfo.CurrentOrgId,
  836. AppId: adminUserInfo.CurrentAppId,
  837. Avatar: "",
  838. UserName: name,
  839. UserTitleName: user_title_name,
  840. Status: 1,
  841. UserType: int8(userType),
  842. UserTitle: int8(userTitle),
  843. CreateTime: time.Now().Unix(),
  844. ModifyTime: time.Now().Unix(),
  845. RoleIds: roleIds,
  846. Department: department,
  847. DepartmentId: department_id,
  848. }
  849. err := service.CreateUserRole(app_role)
  850. if err != nil {
  851. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
  852. return
  853. }
  854. this.ServeSuccessJSON(nil)
  855. } else {
  856. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRepeatCreateStaffException)
  857. return
  858. }
  859. return
  860. }
  861. }
  862. }
  863. // /api/admin/editinit [get]
  864. // @param uid:int
  865. func (this *RoleAPIController) EditAdminInitData() {
  866. adminUserInfo := this.GetAdminUserInfo()
  867. admin_user_id, _ := this.GetInt64("uid")
  868. if admin_user_id <= 0 {
  869. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  870. return
  871. }
  872. appRole, getAppRoleErr := service.GetAppRole(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, admin_user_id)
  873. if getAppRoleErr != nil {
  874. //beego.Error("查询管理员信息时失败:", getAppRoleErr)
  875. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  876. return
  877. }
  878. if appRole == nil {
  879. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeAdminUserNotExist)
  880. return
  881. }
  882. roles, getRoleErr := service.GetAllValidRoles(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId)
  883. if getRoleErr != nil {
  884. //beego.Error("获取所有角色失败:", getRoleErr)
  885. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  886. return
  887. }
  888. var isSubSuperAdmin bool = false
  889. adminUserRole, _ := service.GetAppRole(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, adminUserInfo.AdminUser.Id)
  890. if len(adminUserRole.RoleIds) > 0 {
  891. role_ids := strings.Split(adminUserRole.RoleIds, ",")
  892. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  893. if adminUserInfo.AdminUser.Id != org.Creator {
  894. for _, item := range role_ids {
  895. id, _ := strconv.ParseInt(item, 10, 64)
  896. if id != 0 {
  897. role, _ := service.GetRoleByRoleID(id)
  898. if role.IsSystem == 1 && role.RoleName == "子管理员" {
  899. isSubSuperAdmin = true
  900. }
  901. }
  902. }
  903. }
  904. }
  905. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  906. redisClient := service.RedisClient()
  907. defer redisClient.Close()
  908. qntoken, _ := redisClient.Get("qn_token").Result()
  909. this.ServeSuccessJSON(map[string]interface{}{
  910. "admin": appRole,
  911. "roles": roles,
  912. "qntoken": qntoken,
  913. "isSubSuperAdmin": isSubSuperAdmin,
  914. "org": org,
  915. })
  916. }
  917. // /api/admin/edit [post]
  918. // @param uid:int
  919. // @param name:string
  920. // @param type:int
  921. // @param title:int
  922. // @param role:int
  923. // @param intro?:string
  924. func (this *RoleAPIController) EditAdmin() {
  925. adminUserInfo := this.GetAdminUserInfo()
  926. //if adminUserInfo.AdminUser.IsSuperAdmin == false {
  927. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  928. // return
  929. //}
  930. adminUserId, _ := this.GetInt64("uid")
  931. name := this.GetString("name")
  932. userType, _ := this.GetInt("type")
  933. userTitle, _ := this.GetInt("title")
  934. roleIds := this.GetString("role")
  935. intro := this.GetString("intro")
  936. user_title_name := this.GetString("user_title_name")
  937. department := this.GetString("department")
  938. department_id, _ := this.GetInt64("department_id")
  939. sort, _ := this.GetInt64("sort")
  940. _, titleExist := models.UserTitle[userTitle]
  941. if adminUserId <= 0 || len(name) == 0 || (userType != 2 && userType != 3 && userType != 4) || !titleExist || len(roleIds) <= 0 {
  942. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  943. return
  944. }
  945. appRole, getAppRoleErr := service.GetAppRole(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, adminUserId)
  946. if getAppRoleErr != nil {
  947. //beego.Error("查询管理员信息时失败:", getAppRoleErr)
  948. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  949. return
  950. }
  951. if appRole == nil {
  952. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeAdminUserNotExist)
  953. return
  954. }
  955. appRole.Department = department
  956. appRole.DepartmentId = department_id
  957. appRole.UserName = name
  958. appRole.UserType = int8(userType)
  959. appRole.UserTitle = int8(userTitle)
  960. appRole.RoleIds = roleIds
  961. appRole.Intro = intro
  962. appRole.UserTitleName = user_title_name
  963. appRole.ModifyTime = time.Now().Unix()
  964. appRole.Sort = sort
  965. saveErr := service.SaveAppRole(appRole)
  966. if saveErr != nil {
  967. //beego.Error("修改App_Role失败:", saveErr)
  968. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
  969. } else {
  970. this.ServeSuccessJSON(nil)
  971. }
  972. }
  973. // /api/admin/setstatus [post]
  974. // @param uid:int
  975. // @param enable:bool
  976. func (this *RoleAPIController) AdminSetStatus() {
  977. adminUserInfo := this.GetAdminUserInfo()
  978. //if adminUserInfo.AdminUser.IsSuperAdmin == false {
  979. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  980. // return
  981. //}
  982. userID, _ := this.GetInt64("uid")
  983. if userID <= 0 {
  984. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  985. return
  986. }
  987. appRole, getAppRoleErr := service.GetAppRole(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, userID)
  988. if getAppRoleErr != nil {
  989. //beego.Error("查询管理员信息失败:", getAppRoleErr)
  990. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  991. return
  992. } else if appRole == nil {
  993. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeAdminUserNotExist)
  994. return
  995. }
  996. enable, _ := this.GetBool("enable")
  997. if enable {
  998. appRole.Status = 1
  999. } else {
  1000. appRole.Status = 0
  1001. }
  1002. appRole.ModifyTime = time.Now().Unix()
  1003. saveErr := service.SaveAppRole(appRole)
  1004. if saveErr != nil {
  1005. //beego.Error("保存AppRole失败:", saveErr)
  1006. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDBUpdate)
  1007. } else {
  1008. this.ServeSuccessJSON(nil)
  1009. }
  1010. }
  1011. // /api/admin/specialpermission/initdata [get]
  1012. func (this *RoleAPIController) SpecialPermissionInitData() {
  1013. adminUserInfo := this.GetAdminUserInfo()
  1014. //if adminUserInfo.AdminUser.IsSuperAdmin == false {
  1015. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  1016. // return
  1017. //}
  1018. adminUsers, getAdminUsersErr := service.GetAllGeneralAdminUsers(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId)
  1019. if getAdminUsersErr != nil {
  1020. this.ErrorLog("获取所有普通用户失败:%v", getAdminUsersErr)
  1021. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  1022. return
  1023. }
  1024. headNurses, getAllHeadNursesErr := service.GetAllValidAdminUsersWithSpecialPermission(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, models.SpecialPermissionTypeHeadNurse)
  1025. if getAllHeadNursesErr != nil {
  1026. this.ErrorLog("获取所有拥有护士长特殊权限的用户失败:%v", getAllHeadNursesErr)
  1027. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  1028. return
  1029. }
  1030. this.ServeSuccessJSON(map[string]interface{}{
  1031. "users": adminUsers,
  1032. "head_nurses": headNurses,
  1033. })
  1034. }
  1035. // /api/admin/specialpermission/dialysisrecord/submit [post]
  1036. // @param ids:string ("1,2,5")
  1037. func (this *RoleAPIController) SubmitDialysisRecordPermission() {
  1038. adminUserInfo := this.GetAdminUserInfo()
  1039. //if adminUserInfo.AdminUser.IsSuperAdmin == false {
  1040. // this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
  1041. // return
  1042. //}
  1043. idsString := this.GetString("ids")
  1044. if len(idsString) == 0 {
  1045. // 取消所有用户的护士长权限
  1046. cancelErr := service.CancelAllSpecialPermissionAdminUsers(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, models.SpecialPermissionTypeHeadNurse)
  1047. if cancelErr != nil {
  1048. this.ErrorLog("取消所有用户的护士长权限失败:%v", cancelErr)
  1049. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  1050. return
  1051. } else {
  1052. this.ServeSuccessJSON(nil)
  1053. return
  1054. }
  1055. } else {
  1056. ids := make([]int64, 0)
  1057. idStrs := strings.Split(idsString, ",")
  1058. for _, idStr := range idStrs {
  1059. id, parseErr := strconv.Atoi(idStr)
  1060. if parseErr != nil {
  1061. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  1062. return
  1063. }
  1064. ids = append(ids, int64(id))
  1065. }
  1066. headNurses, getAllHeadNursesErr := service.GetAllSpecialPermissionAdminUsersWithoutStatus(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, models.SpecialPermissionTypeHeadNurse)
  1067. if getAllHeadNursesErr != nil {
  1068. this.ErrorLog("获取所有拥有或曾拥有护士长特殊权限的用户失败:%v", getAllHeadNursesErr)
  1069. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  1070. return
  1071. }
  1072. cancelList := make([]*models.AdminUserSpecialPermission, 0)
  1073. addList := make([]*models.AdminUserSpecialPermission, 0)
  1074. for _, id := range ids {
  1075. exit := false
  1076. for _, headNurse := range headNurses {
  1077. if headNurse.AdminUserID == id {
  1078. exit = true
  1079. if headNurse.Status != 1 {
  1080. headNurse.Status = 1
  1081. headNurse.ModifyTime = time.Now().Unix()
  1082. addList = append(addList, headNurse)
  1083. }
  1084. break
  1085. }
  1086. }
  1087. if exit == false {
  1088. newHeadNurse := &models.AdminUserSpecialPermission{
  1089. OrgID: adminUserInfo.CurrentOrgId,
  1090. AppID: adminUserInfo.CurrentAppId,
  1091. AdminUserID: id,
  1092. Permission: int64(models.SpecialPermissionTypeHeadNurse),
  1093. Status: 1,
  1094. CreateTime: time.Now().Unix(),
  1095. ModifyTime: time.Now().Unix(),
  1096. }
  1097. addList = append(addList, newHeadNurse)
  1098. }
  1099. }
  1100. for _, headNurse := range headNurses {
  1101. cancel := true
  1102. for _, willAdd := range addList {
  1103. if willAdd.AdminUserID == headNurse.AdminUserID {
  1104. cancel = false
  1105. break
  1106. }
  1107. }
  1108. if cancel {
  1109. headNurse.Status = 0
  1110. headNurse.ModifyTime = time.Now().Unix()
  1111. cancelList = append(cancelList, headNurse)
  1112. }
  1113. }
  1114. addErr := service.BatchSaveSpecialPermissionAdminUsers(addList)
  1115. if addErr != nil {
  1116. this.ErrorLog("授权失败:%v", addErr)
  1117. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  1118. return
  1119. }
  1120. cancelErr := service.BatchSaveSpecialPermissionAdminUsers(cancelList)
  1121. if cancelErr != nil {
  1122. this.ErrorLog("取消授权失败:%v", cancelErr)
  1123. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  1124. return
  1125. }
  1126. this.ServeSuccessJSON(nil)
  1127. }
  1128. }
  1129. func (this *RoleAPIController) GetAllOrgRole() {
  1130. adminUserInfo := this.GetAdminUserInfo()
  1131. var isSubSuperAdmin bool = false
  1132. adminUserRole, _ := service.GetAppRole(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, adminUserInfo.AdminUser.Id)
  1133. if len(adminUserRole.RoleIds) > 0 {
  1134. //app_role, _ := service.GetAppRoleById(adminUserInfo.)
  1135. role_ids := strings.Split(adminUserRole.RoleIds, ",")
  1136. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  1137. if adminUserInfo.AdminUser.Id != org.Creator {
  1138. for _, item := range role_ids {
  1139. id, _ := strconv.ParseInt(item, 10, 64)
  1140. if id != 0 {
  1141. role, _ := service.GetRoleByRoleID(id)
  1142. if role != nil {
  1143. if role.IsSystem == 1 && role.RoleName == "子管理员" {
  1144. isSubSuperAdmin = true
  1145. }
  1146. }
  1147. }
  1148. }
  1149. }
  1150. }
  1151. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  1152. roles, err := service.GetAllOrgValidRoles(adminUserInfo.CurrentOrgId, isSubSuperAdmin)
  1153. if err != nil {
  1154. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  1155. return
  1156. } else {
  1157. this.ServeSuccessJSON(map[string]interface{}{
  1158. "roles": roles,
  1159. "isSubSuperAdmin": isSubSuperAdmin,
  1160. "org": org,
  1161. })
  1162. }
  1163. }
  1164. func (this *RoleAPIController) GetAllOrgUser() {
  1165. adminUserInfo := this.GetAdminUserInfo()
  1166. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  1167. var isSubSuperAdmin bool = false
  1168. adminUserRole, _ := service.GetAppRole(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, adminUserInfo.AdminUser.Id)
  1169. if len(adminUserRole.RoleIds) > 0 {
  1170. //app_role, _ := service.GetAppRoleById(adminUserInfo.)
  1171. role_ids := strings.Split(adminUserRole.RoleIds, ",")
  1172. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  1173. if adminUserInfo.AdminUser.Id != org.Creator {
  1174. for _, item := range role_ids {
  1175. id, _ := strconv.ParseInt(item, 10, 64)
  1176. if id != 0 {
  1177. role, _ := service.GetRoleByRoleID(id)
  1178. if role != nil {
  1179. if role.IsSystem == 1 && role.RoleName == "子管理员" {
  1180. isSubSuperAdmin = true
  1181. }
  1182. }
  1183. }
  1184. }
  1185. }
  1186. }
  1187. viewModels, _, _ := service.GetAllAdminUsersAndRole(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, 1, 100)
  1188. this.ServeSuccessJSON(map[string]interface{}{
  1189. "admins": viewModels,
  1190. "org": org,
  1191. "isSubSuperAdmin": isSubSuperAdmin,
  1192. })
  1193. }
  1194. func (this *RoleAPIController) AddRoleStaff() {
  1195. //adminUserInfo := this.GetMobileAdminUserInfo()
  1196. role_id, _ := this.GetInt64("id", 0)
  1197. staff_ids := this.GetString("ids")
  1198. ids := strings.Split(staff_ids, ",")
  1199. for _, item := range ids {
  1200. id, _ := strconv.ParseInt(item, 10, 64)
  1201. role, _ := service.FindAdminUserID(id)
  1202. role.RoleIds = role.RoleIds + "," + strconv.FormatInt(role_id, 10)
  1203. service.SaveAdminUser(&role)
  1204. }
  1205. this.ServeSuccessJSON(map[string]interface{}{
  1206. "msg": "添加成功",
  1207. })
  1208. }
  1209. func (this *RoleAPIController) GetRoleStaff() {
  1210. adminUserInfo := this.GetAdminUserInfo()
  1211. var isSubSuperAdmin bool = false
  1212. adminUserRole, _ := service.GetAppRole(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, adminUserInfo.AdminUser.Id)
  1213. if len(adminUserRole.RoleIds) > 0 {
  1214. role_ids := strings.Split(adminUserRole.RoleIds, ",")
  1215. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  1216. if adminUserInfo.AdminUser.Id != org.Creator {
  1217. for _, item := range role_ids {
  1218. id, _ := strconv.ParseInt(item, 10, 64)
  1219. if id != 0 {
  1220. role, _ := service.GetRoleByRoleID(id)
  1221. if role.IsSystem == 1 && role.RoleName == "子管理员" {
  1222. isSubSuperAdmin = true
  1223. }
  1224. }
  1225. }
  1226. }
  1227. }
  1228. org, _ := service.GetOrgById(adminUserInfo.CurrentOrgId)
  1229. viewModels, _, getAdminsErr := service.GetAdminUsersAndLoginInfo(adminUserInfo.CurrentOrgId, adminUserInfo.CurrentAppId, 1, 100)
  1230. if getAdminsErr != nil {
  1231. //beego.Error("获取管理员列表失败:", getAdminsErr)
  1232. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException)
  1233. return
  1234. }
  1235. this.ServeSuccessJSON(map[string]interface{}{
  1236. "admins": viewModels,
  1237. "org": org,
  1238. "isSubSuperAdmin": isSubSuperAdmin,
  1239. })
  1240. }
  1241. func (this *RoleAPIController) GetRoleInfo() {
  1242. roleId, _ := this.GetInt64("role_id")
  1243. if roleId <= 0 {
  1244. this.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
  1245. return
  1246. }
  1247. role, _ := service.GetRoleByRoleID(roleId)
  1248. this.ServeSuccessJSON(map[string]interface{}{
  1249. "role": role,
  1250. })
  1251. }