Browse Source

增加应用的启用状态

庄逸洲 5 years ago
parent
commit
72928daf9c

+ 8 - 3
controllers/login_controller.go View File

272
 		}
272
 		}
273
 		if lastLoginLog != nil {
273
 		if lastLoginLog != nil {
274
 			utils.TraceLog("%+v", lastLoginLog)
274
 			utils.TraceLog("%+v", lastLoginLog)
275
-			url := service.GetAppURLWithAppType(int(lastLoginLog.AppType))
276
-			if len(url) > 0 {
277
-				return this.appendTokenParamToReturnURL(url, token), nil, admin
275
+			_, getAppRoleErr := service.GetAppRole(admin.Id, lastLoginLog.OrgId, lastLoginLog.AppId)
276
+			if getAppRoleErr != nil {
277
+				utils.ErrorLog("数据错误:查找mobile = %v的用户的应用角色时错误:%v", mobile, getAppRoleErr)
278
+			} else {
279
+				url := service.GetAppURLWithAppType(int(lastLoginLog.AppType))
280
+				if len(url) > 0 {
281
+					return this.appendTokenParamToReturnURL(url, token), nil, admin
282
+				}
278
 			}
283
 			}
279
 		}
284
 		}
280
 		// 如果没有登录记录,则要前往其有权访问的、最高优先级的应用
285
 		// 如果没有登录记录,则要前往其有权访问的、最高优先级的应用

+ 116 - 39
controllers/org_controller.go View File

81
 // @param business_time?:string
81
 // @param business_time?:string
82
 // @param business_state?:int
82
 // @param business_state?:int
83
 // @param org_pics?:string (url1@@url2@@url3)
83
 // @param org_pics?:string (url1@@url2@@url3)
84
+// @param open_xt?:bool 是否开启血透系统
85
+// @param open_cdm?:bool 是否开启慢病系统
86
+// @param open_scrm?:bool 是否开启SCRM
87
+// @param open_mall?:bool 是否开启Mall
84
 func (this *OrgController) CreateSubmit() {
88
 func (this *OrgController) CreateSubmit() {
85
 	adminUserObj := this.GetSession("admin_user")
89
 	adminUserObj := this.GetSession("admin_user")
86
 	if adminUserObj == nil {
90
 	if adminUserObj == nil {
116
 	ill := this.GetString("ill")
120
 	ill := this.GetString("ill")
117
 	category, _ := this.GetInt64("category")
121
 	category, _ := this.GetInt64("category")
118
 	contactName := this.GetString("contact_name")
122
 	contactName := this.GetString("contact_name")
119
-	if len(name) == 0 || len(shortName) == 0 || len(contactName) == 0 || len(address) == 0 || province <= 0 || city <= 0 || district <= 0 || category <= 0 {
123
+	openXT, _ := this.GetBool("open_xt")
124
+	openCDM, _ := this.GetBool("open_cdm")
125
+	openSCRM, _ := this.GetBool("open_scrm")
126
+	openMall, _ := this.GetBool("open_mall")
127
+	if len(name) == 0 || len(shortName) == 0 || len(contactName) == 0 || len(address) == 0 || province <= 0 || city <= 0 || district <= 0 || category <= 0 || (!openXT && !openCDM && !openSCRM && !openMall) {
120
 		this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
128
 		this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
121
 		this.ServeJSON()
129
 		this.ServeJSON()
122
 		return
130
 		return
163
 		CreateTime:      time.Now().Unix(),
171
 		CreateTime:      time.Now().Unix(),
164
 		ModifyTime:      time.Now().Unix(),
172
 		ModifyTime:      time.Now().Unix(),
165
 	}
173
 	}
166
-	createErr := service.CreateOrg(&org, adminUser.Mobile) // 创建机构以及所有类型的 app,如果有新类型的平台,则需要在这个方法里面把创建这一新类型的 app 的代码加上
174
+
175
+	createErr := service.CreateOrg(&org, adminUser.Mobile, openXT, openCDM, openSCRM, openMall) // 创建机构以及所有类型的 app,如果有新类型的平台,则需要在这个方法里面把创建这一新类型的 app 的代码加上
167
 	if createErr != nil {
176
 	if createErr != nil {
168
 		utils.ErrorLog("mobile=%v的超级管理员创建机构失败:%v", adminUser.Mobile, createErr)
177
 		utils.ErrorLog("mobile=%v的超级管理员创建机构失败:%v", adminUser.Mobile, createErr)
169
 		this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
178
 		this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
170
 		this.ServeJSON()
179
 		this.ServeJSON()
171
 	} else {
180
 	} else {
172
-		redirectURL := beego.AppConfig.String("submodule_domain_dialysis_manage")
181
+		redirectURL := "" // beego.AppConfig.String("submodule_domain_dialysis_manage")
182
+
173
 		this.Data["json"] = enums.MakeSuccessResponseJSON(map[string]interface{}{
183
 		this.Data["json"] = enums.MakeSuccessResponseJSON(map[string]interface{}{
174
 			"url": redirectURL,
184
 			"url": redirectURL,
175
 		})
185
 		})
233
 
243
 
234
 				// 自动创建所有应用
244
 				// 自动创建所有应用
235
 				if did_patient_manage_create == false {
245
 				if did_patient_manage_create == false {
236
-					err := service.CreateOrgApp(adminUser.Id, org.Id, 1)
246
+					err := service.CreateOrgApp(adminUser.Id, org.Id, 1, true)
237
 					if err != nil {
247
 					if err != nil {
238
 						utils.ErrorLog("自动创建酷医聚客应用失败:%v", err)
248
 						utils.ErrorLog("自动创建酷医聚客应用失败:%v", err)
239
 						this.Abort("404")
249
 						this.Abort("404")
241
 					}
251
 					}
242
 				}
252
 				}
243
 				if did_dialysis_manage_create == false {
253
 				if did_dialysis_manage_create == false {
244
-					err := service.CreateOrgApp(adminUser.Id, org.Id, 3)
254
+					err := service.CreateOrgApp(adminUser.Id, org.Id, 3, true)
245
 					if err != nil {
255
 					if err != nil {
246
 						utils.ErrorLog("自动创建透析管理应用失败:%v", err)
256
 						utils.ErrorLog("自动创建透析管理应用失败:%v", err)
247
 						this.Abort("404")
257
 						this.Abort("404")
249
 					}
259
 					}
250
 				}
260
 				}
251
 				if did_cdm_manage_create == false {
261
 				if did_cdm_manage_create == false {
252
-					err := service.CreateOrgApp(adminUser.Id, org.Id, 4)
262
+					err := service.CreateOrgApp(adminUser.Id, org.Id, 4, true)
253
 					if err != nil {
263
 					if err != nil {
254
 						utils.ErrorLog("自动创建慢病管理应用失败:%v", err)
264
 						utils.ErrorLog("自动创建慢病管理应用失败:%v", err)
255
 						this.Abort("404")
265
 						this.Abort("404")
257
 					}
267
 					}
258
 				}
268
 				}
259
 				if did_mall_manage_create == false {
269
 				if did_mall_manage_create == false {
260
-					err := service.CreateOrgApp(adminUser.Id, org.Id, 5)
270
+					err := service.CreateOrgApp(adminUser.Id, org.Id, 5, true)
261
 					if err != nil {
271
 					if err != nil {
262
 						utils.ErrorLog("自动创建微商城应用失败:%v", err)
272
 						utils.ErrorLog("自动创建微商城应用失败:%v", err)
263
 						this.Abort("404")
273
 						this.Abort("404")
303
 			}
313
 			}
304
 			return
314
 			return
305
 		} else {
315
 		} else {
306
-			this.Data["avatar"] = org.OrgLogo         //"/static/images/userData.png"
307
-			this.Data["user_name"] = org.OrgShortName //adminUser.Mobile
316
+			this.Data["avatar"] = org.OrgLogo
317
+			this.Data["user_name"] = org.OrgShortName
318
+			this.Data["is_super_admin"] = adminUser.IsSuperAdmin
319
+			this.Data["org_id"] = org.Id
308
 
320
 
309
-			if adminUser.IsSuperAdmin {
310
-				this.Data["scrm_role_exist"] = true
311
-				this.Data["xt_role_exist"] = true
312
-				this.Data["cdm_role_exist"] = true
313
-				this.Data["mall_role_exist"] = true
314
-			} else {
315
-				apps, getAppsErr := service.GetAdminUserAllOrgApp(adminUser.Id, org.Id)
316
-				if getAppsErr != nil {
317
-					utils.ErrorLog("获取 id = %v,org_id = %v 的用户有权限的应用时出错:%v", adminUser.Id, org.Id, getOrgErr)
318
-					this.Abort("404")
319
-					return
321
+			apps, getAppsErr := service.GetAdminUserAllOrgApp(adminUser.Id, org.Id)
322
+			if getAppsErr != nil {
323
+				utils.ErrorLog("获取 id = %v,org_id = %v 的用户有权限的应用时出错:%v", adminUser.Id, org.Id, getOrgErr)
324
+				this.Abort("404")
325
+				return
326
+			}
327
+			this.Data["scrm_role_exist"] = false
328
+			this.Data["xt_role_exist"] = false
329
+			this.Data["cdm_role_exist"] = false
330
+			this.Data["mall_role_exist"] = false
331
+			for _, app := range apps {
332
+				if app.AppType == 1 && app.OpenStatus == 1 {
333
+					this.Data["scrm_role_exist"] = true
320
 				}
334
 				}
321
-				this.Data["scrm_role_exist"] = false
322
-				this.Data["xt_role_exist"] = false
323
-				this.Data["cdm_role_exist"] = false
324
-				this.Data["mall_role_exist"] = false
325
-				for _, app := range apps {
326
-					if app.AppType == 1 {
327
-						this.Data["scrm_role_exist"] = true
328
-					}
329
-					if app.AppType == 3 {
330
-						this.Data["xt_role_exist"] = true
331
-					}
332
-					if app.AppType == 4 {
333
-						this.Data["cdm_role_exist"] = true
334
-					}
335
-					if app.AppType == 5 {
336
-						this.Data["mall_role_exist"] = true
337
-					}
335
+				if app.AppType == 3 && app.OpenStatus == 1 {
336
+					this.Data["xt_role_exist"] = true
337
+				}
338
+				if app.AppType == 4 && app.OpenStatus == 1 {
339
+					this.Data["cdm_role_exist"] = true
340
+				}
341
+				if app.AppType == 5 && app.OpenStatus == 1 {
342
+					this.Data["mall_role_exist"] = true
338
 				}
343
 				}
339
 			}
344
 			}
340
 
345
 
347
 	}
352
 	}
348
 }
353
 }
349
 
354
 
350
-// /org/app/create/submit [post]
355
+// /app/open [post]
356
+// @param type:int
357
+func (this *OrgController) OpenAppSubmit() {
358
+	adminUserObj := this.GetSession("admin_user")
359
+	if adminUserObj == nil {
360
+		this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeLoginTimeout)
361
+		this.ServeJSON()
362
+		return
363
+	}
364
+	adminUser := adminUserObj.(*models.AdminUser)
365
+	if !adminUser.IsSuperAdmin {
366
+		utils.ErrorLog("用户%v不是超级管理员,没有权限启用应用", adminUser.Mobile)
367
+		this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodePermissionDenied)
368
+		this.ServeJSON()
369
+		return
370
+	}
371
+
372
+	appType, _ := this.GetInt("type")
373
+	if url := service.GetAppURLWithAppType(appType); len(url) == 0 {
374
+		this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
375
+		this.ServeJSON()
376
+		return
377
+	}
378
+
379
+	org, getOrgErr := service.GetOrgWithAdminUserID(adminUser.Id)
380
+	if getOrgErr != nil {
381
+		utils.ErrorLog("获取id = %v的用户创建的机构时出错:%v", adminUser.Id, getOrgErr)
382
+		this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
383
+		this.ServeJSON()
384
+		return
385
+	} else {
386
+		if org == nil {
387
+			this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeMissingOrg)
388
+			this.ServeJSON()
389
+			return
390
+		} else {
391
+			app, getAppErr := service.GetOrgAppWithType(adminUser.Id, org.Id, appType)
392
+			if getAppErr != nil {
393
+				utils.ErrorLog("获取 id=%v 的用户的类型为%v的应用时失败:%v", adminUser.Id, appType)
394
+				this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDataException)
395
+				this.ServeJSON()
396
+				return
397
+			}
398
+			if app == nil {
399
+				createAppErr := service.CreateOrgApp(adminUser.Id, org.Id, appType, true)
400
+				if createAppErr != nil {
401
+					utils.ErrorLog("id=%v的超级管理员创建类型为%v的应用时失败:%v", adminUser.Id, appType, createAppErr)
402
+					this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
403
+					this.ServeJSON()
404
+				} else {
405
+					this.Data["json"] = enums.MakeSuccessResponseJSON(nil)
406
+					this.ServeJSON()
407
+				}
408
+			} else {
409
+				if app.OpenStatus != 1 {
410
+					app.OpenStatus = 1
411
+					app.ModifyTime = time.Now().Unix()
412
+					updateErr := service.SaveOrgApp(app)
413
+					if updateErr != nil {
414
+						utils.ErrorLog("id=%v的超级管理员开启类型为%v的应用时失败:%v", adminUser.Id, appType, updateErr)
415
+						this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
416
+						this.ServeJSON()
417
+						return
418
+					}
419
+				}
420
+				this.Data["json"] = enums.MakeSuccessResponseJSON(nil)
421
+				this.ServeJSON()
422
+			}
423
+		}
424
+	}
425
+}
426
+
427
+// /org/app/create/submit [post] 已废弃
351
 // @param app_type:int
428
 // @param app_type:int
352
 func (this *OrgController) CreateAppSubmit() {
429
 func (this *OrgController) CreateAppSubmit() {
353
 	adminUserObj := this.GetSession("admin_user")
430
 	adminUserObj := this.GetSession("admin_user")
400
 			}
477
 			}
401
 
478
 
402
 			// 创建应用
479
 			// 创建应用
403
-			if createErr := service.CreateOrgApp(adminUser.Id, org.Id, appType); createErr != nil {
480
+			if createErr := service.CreateOrgApp(adminUser.Id, org.Id, appType, false); createErr != nil {
404
 				utils.ErrorLog("id=%v的超级管理员创建类型为%v的应用时失败:%v", adminUser.Id, appType, createErr)
481
 				utils.ErrorLog("id=%v的超级管理员创建类型为%v的应用时失败:%v", adminUser.Id, appType, createErr)
405
 				this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
482
 				this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
406
 				this.ServeJSON()
483
 				this.ServeJSON()

+ 4 - 4
controllers/verify_token_controller.go View File

417
 	// 自动创建所有应用
417
 	// 自动创建所有应用
418
 	didCreateNew := false
418
 	didCreateNew := false
419
 	if did_patient_manage_create == false {
419
 	if did_patient_manage_create == false {
420
-		err := service.CreateOrgApp(adminUserID, orgID, 1)
420
+		err := service.CreateOrgApp(adminUserID, orgID, 1, false)
421
 		if err != nil {
421
 		if err != nil {
422
 			utils.ErrorLog("自动创建酷医聚客应用失败:%v", err)
422
 			utils.ErrorLog("自动创建酷医聚客应用失败:%v", err)
423
 			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}
423
 			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}
425
 		didCreateNew = true
425
 		didCreateNew = true
426
 	}
426
 	}
427
 	if did_dialysis_manage_create == false {
427
 	if did_dialysis_manage_create == false {
428
-		err := service.CreateOrgApp(adminUserID, orgID, 3)
428
+		err := service.CreateOrgApp(adminUserID, orgID, 3, false)
429
 		if err != nil {
429
 		if err != nil {
430
 			utils.ErrorLog("自动创建透析管理应用失败:%v", err)
430
 			utils.ErrorLog("自动创建透析管理应用失败:%v", err)
431
 			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}
431
 			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}
433
 		didCreateNew = true
433
 		didCreateNew = true
434
 	}
434
 	}
435
 	if did_cdm_manage_create == false {
435
 	if did_cdm_manage_create == false {
436
-		err := service.CreateOrgApp(adminUserID, orgID, 4)
436
+		err := service.CreateOrgApp(adminUserID, orgID, 4, false)
437
 		if err != nil {
437
 		if err != nil {
438
 			utils.ErrorLog("自动创建慢病管理应用失败:%v", err)
438
 			utils.ErrorLog("自动创建慢病管理应用失败:%v", err)
439
 			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}
439
 			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}
441
 		didCreateNew = true
441
 		didCreateNew = true
442
 	}
442
 	}
443
 	if did_mall_manage_create == false {
443
 	if did_mall_manage_create == false {
444
-		err := service.CreateOrgApp(adminUserID, orgID, 5)
444
+		err := service.CreateOrgApp(adminUserID, orgID, 5, false)
445
 		if err != nil {
445
 		if err != nil {
446
 			utils.ErrorLog("自动创建微商城应用失败:%v", err)
446
 			utils.ErrorLog("自动创建微商城应用失败:%v", err)
447
 			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}
447
 			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}

+ 4 - 3
models/app_models.go View File

5
 	AppType    int   `gorm:"column:app_type" json:"app_type"`      // 应用类型 1.病友经营;2.科普号;3.血透经营;4.慢病管理
5
 	AppType    int   `gorm:"column:app_type" json:"app_type"`      // 应用类型 1.病友经营;2.科普号;3.血透经营;4.慢病管理
6
 	Creator    int   `json:"creator"`                              // 创建者,即管理员用户的 id
6
 	Creator    int   `json:"creator"`                              // 创建者,即管理员用户的 id
7
 	OrgId      int   `gorm:"column:org_id" json:"org_id"`
7
 	OrgId      int   `gorm:"column:org_id" json:"org_id"`
8
-	Status     int8  `json:"status"`                    // 状态 0.无效 1.有效 2.禁用
9
-	CreateTime int64 `gorm:"column:ctime" json:"ctime"` // 创建时间
10
-	ModifyTime int64 `gorm:"column:mtime" json:"mtime"` // 修改时间
8
+	OpenStatus int   `gorm:"column:open_status" json:"open_status"` // 开启状态 1开启 0关闭
9
+	Status     int8  `json:"status"`                                // 状态 0.无效 1.有效 2.禁用
10
+	CreateTime int64 `gorm:"column:ctime" json:"ctime"`             // 创建时间
11
+	ModifyTime int64 `gorm:"column:mtime" json:"mtime"`             // 修改时间
11
 }
12
 }
12
 
13
 
13
 func (OrgApp) TableName() string {
14
 func (OrgApp) TableName() string {

+ 1 - 0
routers/router.go View File

44
 	beego.Router("/org/admin/apps", &controllers.OrgController{}, "get:ViewApps")
44
 	beego.Router("/org/admin/apps", &controllers.OrgController{}, "get:ViewApps")
45
 	beego.Router("/org/app/create", &controllers.OrgController{}, "get:CreateApp")
45
 	beego.Router("/org/app/create", &controllers.OrgController{}, "get:CreateApp")
46
 	// beego.Router("/org/app/create/submit", &controllers.OrgController{}, "post:CreateAppSubmit")
46
 	// beego.Router("/org/app/create/submit", &controllers.OrgController{}, "post:CreateAppSubmit")
47
+	beego.Router("/app/open", &controllers.OrgController{}, "post:OpenAppSubmit")
47
 	beego.Router("/get_org_cat", &controllers.OrgCategoryController{}, "get:GetOrgCategories")
48
 	beego.Router("/get_org_cat", &controllers.OrgCategoryController{}, "get:GetOrgCategories")
48
 	beego.Router("/create_app_hint", &controllers.OrgController{}, "get:CreateAppHint")
49
 	beego.Router("/create_app_hint", &controllers.OrgController{}, "get:CreateAppHint")
49
 
50
 

+ 35 - 7
service/org_service.go View File

7
 	"github.com/jinzhu/gorm"
7
 	"github.com/jinzhu/gorm"
8
 )
8
 )
9
 
9
 
10
-func CreateOrg(org *models.Org, mobile string) error {
10
+func CreateOrg(org *models.Org, mobile string, openXT bool, openCDM bool, openSCRM bool, openMall bool) error {
11
 	now := time.Now()
11
 	now := time.Now()
12
 	tx_admin := writeUserDb.Begin()
12
 	tx_admin := writeUserDb.Begin()
13
 	if err := tx_admin.Create(org).Error; err != nil {
13
 	if err := tx_admin.Create(org).Error; err != nil {
30
 		return err
30
 		return err
31
 	}
31
 	}
32
 
32
 
33
-	if err := createOrgApp(tx_admin, &role, mobile, 1); err != nil {
33
+	if err := createOrgApp(tx_admin, &role, mobile, 1, openSCRM); err != nil {
34
 		tx_admin.Rollback()
34
 		tx_admin.Rollback()
35
 		return err
35
 		return err
36
 	}
36
 	}
37
-	if err := createOrgApp(tx_admin, &role, mobile, 3); err != nil {
37
+	if err := createOrgApp(tx_admin, &role, mobile, 3, openXT); err != nil {
38
 		tx_admin.Rollback()
38
 		tx_admin.Rollback()
39
 		return err
39
 		return err
40
 	}
40
 	}
41
-	if err := createOrgApp(tx_admin, &role, mobile, 4); err != nil {
41
+	if err := createOrgApp(tx_admin, &role, mobile, 4, openCDM); err != nil {
42
 		tx_admin.Rollback()
42
 		tx_admin.Rollback()
43
 		return err
43
 		return err
44
 	}
44
 	}
45
-	if err := createOrgApp(tx_admin, &role, mobile, 5); err != nil {
45
+	if err := createOrgApp(tx_admin, &role, mobile, 5, openMall); err != nil {
46
 		tx_admin.Rollback()
46
 		tx_admin.Rollback()
47
 		return err
47
 		return err
48
 	}
48
 	}
121
 	}
121
 	}
122
 }
122
 }
123
 
123
 
124
-func CreateOrgApp(adminUserID int, orgID int, appType int) error {
124
+func CreateOrgApp(adminUserID int, orgID int, appType int, open bool) error {
125
 	var user models.AdminUser
125
 	var user models.AdminUser
126
 	err := readUserDb.Where("id = ? AND status = 1", adminUserID).Find(&user).Error
126
 	err := readUserDb.Where("id = ? AND status = 1", adminUserID).Find(&user).Error
127
 	if err != nil {
127
 	if err != nil {
128
 		return err
128
 		return err
129
 	}
129
 	}
130
 
130
 
131
+	openStatus := 0
132
+	if open {
133
+		openStatus = 1
134
+	}
135
+
131
 	now := time.Now().Unix()
136
 	now := time.Now().Unix()
132
 	tx := writeUserDb.Begin()
137
 	tx := writeUserDb.Begin()
133
 	app := models.OrgApp{
138
 	app := models.OrgApp{
134
 		Creator:    adminUserID,
139
 		Creator:    adminUserID,
135
 		OrgId:      orgID,
140
 		OrgId:      orgID,
136
 		AppType:    appType,
141
 		AppType:    appType,
142
+		OpenStatus: openStatus,
137
 		Status:     1,
143
 		Status:     1,
138
 		CreateTime: now,
144
 		CreateTime: now,
139
 		ModifyTime: now,
145
 		ModifyTime: now,
170
 }
176
 }
171
 
177
 
172
 //  如果出错,没有 rollback,需自行 rollback
178
 //  如果出错,没有 rollback,需自行 rollback
173
-func createOrgApp(tx *gorm.DB, superAdminRole *models.Role, userName string, appType int) error {
179
+func createOrgApp(tx *gorm.DB, superAdminRole *models.Role, userName string, appType int, open bool) error {
180
+	openStatus := 0
181
+	if open {
182
+		openStatus = 1
183
+	}
174
 	now := time.Now().Unix()
184
 	now := time.Now().Unix()
175
 	app := models.OrgApp{
185
 	app := models.OrgApp{
176
 		Creator:    superAdminRole.Creator,
186
 		Creator:    superAdminRole.Creator,
177
 		OrgId:      superAdminRole.OrgId,
187
 		OrgId:      superAdminRole.OrgId,
178
 		AppType:    appType,
188
 		AppType:    appType,
189
+		OpenStatus: openStatus,
179
 		Status:     1,
190
 		Status:     1,
180
 		CreateTime: now,
191
 		CreateTime: now,
181
 		ModifyTime: now,
192
 		ModifyTime: now,
240
 	err := writeUserDb.Create(subscibe).Error
251
 	err := writeUserDb.Create(subscibe).Error
241
 	return err
252
 	return err
242
 }
253
 }
254
+
255
+func GetOrgAppWithType(adminUserID int, orgID int, appType int) (*models.OrgApp, error) {
256
+	var app models.OrgApp
257
+	err := readUserDb.Model(&models.OrgApp{}).Where("creator = ? AND org_id = ? AND app_type = ? AND status = 1", adminUserID, orgID, appType).First(&app).Error
258
+	if err == gorm.ErrRecordNotFound {
259
+		err = nil
260
+	}
261
+	if err != nil {
262
+		return nil, err
263
+	} else {
264
+		return &app, nil
265
+	}
266
+}
267
+
268
+func SaveOrgApp(app *models.OrgApp) error {
269
+	return writeUserDb.Save(app).Error
270
+}

File diff suppressed because it is too large
+ 2656 - 2627
static/css/index.css


+ 27 - 0
static/js/create_org.js View File

1
 $(function() {
1
 $(function() {
2
+    $("#open_3").attr("checked", "checked");
3
+    
2
     $("#province_select").change(function() {
4
     $("#province_select").change(function() {
3
         $("#city_select option").remove();
5
         $("#city_select option").remove();
4
         $("#district_select option").remove();
6
         $("#district_select option").remove();
117
             return;
119
             return;
118
         }
120
         }
119
 
121
 
122
+        var open_xt = false;
123
+        var open_cdm = false;
124
+        var open_scrm = false;
125
+        var open_mall = false;
126
+        if ($("#open_3").attr("checked") == "checked") {
127
+            open_xt = true
128
+        }
129
+        if ($("#open_4").attr("checked") == "checked") {
130
+            open_cdm = true
131
+        }
132
+        if ($("#open_1").attr("checked") == "checked") {
133
+            open_scrm = true
134
+        }
135
+        if ($("#open_5").attr("checked") == "checked") {
136
+            open_mall = true
137
+        }
138
+        if (!open_xt && !open_cdm && !open_scrm && !open_mall) {
139
+            layer.msg("请选择要启用的应用");
140
+            return;
141
+        }
142
+
120
         var postData = {
143
         var postData = {
121
             name: $("#org_name").val(),
144
             name: $("#org_name").val(),
122
             // short_name: $("#org_short_name").val(),
145
             // short_name: $("#org_short_name").val(),
127
             address: $("#address").val(),
150
             address: $("#address").val(),
128
             category: $("#org_category").val(),
151
             category: $("#org_category").val(),
129
             org_phone: $("#org_phone").val(),
152
             org_phone: $("#org_phone").val(),
153
+            open_xt: open_xt,
154
+            open_cdm: open_cdm,
155
+            open_scrm: open_scrm,
156
+            open_mall: open_mall,
130
         }
157
         }
131
         postRequest("/org/create/submit", postData, doSuccess, doFail);
158
         postRequest("/org/create/submit", postData, doSuccess, doFail);
132
 
159
 

+ 23 - 2
views/new_main/create_org.html View File

38
         <div class="stewardMsg">
38
         <div class="stewardMsg">
39
             <h2 class="stewardMsg_tit">机构信息</h2>
39
             <h2 class="stewardMsg_tit">机构信息</h2>
40
             <div class="steward_content">
40
             <div class="steward_content">
41
-                <p class="tips">以下信息是对外品牌展示的主要内容,请认真填写,后续可以在账号设置中修改。</p>
41
+                <p class="tips">请正确填写一下信息,后续可在账号设置中修改</p>
42
                 <div class="cell clearfix">
42
                 <div class="cell clearfix">
43
                     <label class="cell_tit fl">机构名称</label>
43
                     <label class="cell_tit fl">机构名称</label>
44
                     <input id="org_name" type="text" class="cell_input" maxlength="50" />
44
                     <input id="org_name" type="text" class="cell_input" maxlength="50" />
98
                     <label class="cell_tit fl">机构电话<br/>(选填)</label>
98
                     <label class="cell_tit fl">机构电话<br/>(选填)</label>
99
                     <input id="org_phone" type="text" class="cell_input" maxlength="50" />
99
                     <input id="org_phone" type="text" class="cell_input" maxlength="50" />
100
                 </div>
100
                 </div>
101
+                <div class="cell clearfix">
102
+                    <label class="cell_tit fl">请选择要启用的应用</label>
103
+                    <div class="Checkbox fl">
104
+                        <div class="opt">
105
+                            <input class="magic-checkbox" type="checkbox" name="open_app_checkbox" value="3" id="open_3" />
106
+                            <label for="open_3">血透管理</label>
107
+                        </div>
108
+                        <div class="opt">
109
+                            <input class="magic-checkbox" type="checkbox" name="open_app_checkbox" value="4" id="open_4" />
110
+                            <label for="open_4">慢病管理</label>
111
+                        </div>
112
+                        <div class="opt">
113
+                            <input class="magic-checkbox" type="checkbox" name="open_app_checkbox" value="1" id="open_1" />
114
+                            <label for="open_1">SCRM</label>
115
+                        </div>
116
+                        <div class="opt">
117
+                            <input class="magic-checkbox" type="checkbox" name="open_app_checkbox" value="5" id="open_5" />
118
+                            <label for="open_5">微商城</label>
119
+                        </div>
120
+                    </div>
121
+                </div>
101
                 <div class="cell clearfix">
122
                 <div class="cell clearfix">
102
                     <div class="cellBtn">
123
                     <div class="cellBtn">
103
                         <button id="submit" type="button">立即开启智慧管理之旅</button>
124
                         <button id="submit" type="button">立即开启智慧管理之旅</button>
119
     <script src="/static/js/layer.js"></script>
140
     <script src="/static/js/layer.js"></script>
120
     <script src="/static/js/md5.js"></script>
141
     <script src="/static/js/md5.js"></script>
121
     <script src="/static/js/common.js"></script>
142
     <script src="/static/js/common.js"></script>
122
-    <script src="/static/js/create_org.js?v=0.2.5"></script>
143
+    <script src="/static/js/create_org.js?v=0.2.6"></script>
123
 </body>
144
 </body>
124
 
145
 
125
 </html>
146
 </html>

+ 169 - 6
views/new_main/manage_app.html View File

9
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
9
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
10
     <title>酷医云-让服务有温度</title>
10
     <title>酷医云-让服务有温度</title>
11
     <link rel="stylesheet" href="/static/css/style.css?v=4.0.0" media="screen">
11
     <link rel="stylesheet" href="/static/css/style.css?v=4.0.0" media="screen">
12
-    <link rel="stylesheet" href="/static/css/index.css?v=4.0.1" media="screen">
12
+    <link rel="stylesheet" href="/static/css/index.css?v=4.0.2" media="screen">
13
     <link href="/static/css/bootstrap.min.css?v=4.0.0" rel="stylesheet">
13
     <link href="/static/css/bootstrap.min.css?v=4.0.0" rel="stylesheet">
14
     <link href="/static/css/font-awesome.min.css?v=4.0.0" rel="stylesheet" media="all">
14
     <link href="/static/css/font-awesome.min.css?v=4.0.0" rel="stylesheet" media="all">
15
     <link href="/static/css/animate.min.css?v=4.0.0" rel="stylesheet" media="all">
15
     <link href="/static/css/animate.min.css?v=4.0.0" rel="stylesheet" media="all">
35
         <h2 class="name">请选择适合您的应用</h2>
35
         <h2 class="name">请选择适合您的应用</h2>
36
         <div class="apply-content">
36
         <div class="apply-content">
37
             <ul>
37
             <ul>
38
-                {{ if .xt_role_exist }}
38
+                {{ if .is_super_admin }}
39
+                <li>
40
+                    <a id="xt_a" href="{{ if .xt_role_exist }}{{.submodule_domain_dialysis_manage}}{{ end }}">
41
+                        <img src="/static/images/apply-3.jpg" alt="">
42
+                        <span class="join" id="enter_xt"> 进入应用 ></span>
43
+                        <h3 class="title">
44
+                            血透管理</h3>
45
+                        <P class="txt">
46
+                            血透管理是基于血透临床应用标准流程研发的血透管理协作平台,用全新的互联网、云技术和友好的用户体验,为血液透析中心提供透前、透中、透后全过程协作支撑,实现无纸化、数字化和规范化的管理,提升血透中心管理水平,改善病人就医体验。
47
+                        </P>
48
+                        <div class="button">
49
+                            {{ if .xt_role_exist }}
50
+                            <button class="close">已启用</button>
51
+                            {{ else }}
52
+                            <button class="open" id="xt_open">启用</button>
53
+                            {{ end }}
54
+                        </div>
55
+                    </a>
56
+                </li>
57
+                {{ else if .xt_role_exist }}
39
                 <li>
58
                 <li>
40
                     <a href="{{.submodule_domain_dialysis_manage}}">
59
                     <a href="{{.submodule_domain_dialysis_manage}}">
41
                         <img src="/static/images/apply-3.jpg" alt="">
60
                         <img src="/static/images/apply-3.jpg" alt="">
48
                     </a>
67
                     </a>
49
                 </li>
68
                 </li>
50
                 {{ end }}
69
                 {{ end }}
51
-                {{ if .cdm_role_exist }}
70
+
71
+                {{ if .is_super_admin }}
72
+                <li>
73
+                    <a id="cdm_a" href="{{ if .cdm_role_exist }}{{.submodule_domain_cdm_manage}}{{ end }}">
74
+                        <img src="/static/images/apply-4.jpg" alt="">
75
+                        <span class="join" id="enter_cdm"> 进入应用 ></span>
76
+                        <h3 class="title">
77
+                            慢病管理</h3>
78
+                        <P class="txt">
79
+                            专注于慢性肾脏病管理,为肾内科、血液透析中心、肾病医院、肾科医生集团、肾科医生工作室等提供完整的慢病管理系统。通过智能医疗设备+移动互联网+大数据+人工智能结合,实现互联网+的全程慢病管理模式。
80
+                        </P>
81
+                        <div class="button">
82
+                            {{ if .cdm_role_exist }}
83
+                            <button class="close">已启用</button>
84
+                            {{ else }}
85
+                            <button class="open" id="cdm_open">启用</button>
86
+                            {{ end }}
87
+                        </div>
88
+                    </a>
89
+                </li>
90
+                {{ else if .cdm_role_exist }}
52
                 <li>
91
                 <li>
53
                     <a href="{{.submodule_domain_cdm_manage}}">
92
                     <a href="{{.submodule_domain_cdm_manage}}">
54
                         <img src="/static/images/apply-4.jpg" alt="">
93
                         <img src="/static/images/apply-4.jpg" alt="">
55
                         <span class="join"> 进入应用 ></span>
94
                         <span class="join"> 进入应用 ></span>
56
-
57
                         <h3 class="title">
95
                         <h3 class="title">
58
                             慢病管理</h3>
96
                             慢病管理</h3>
59
                         <P class="txt">
97
                         <P class="txt">
62
                     </a>
100
                     </a>
63
                 </li>
101
                 </li>
64
                 {{ end }}
102
                 {{ end }}
65
-                {{ if .scrm_role_exist }}
103
+
104
+                {{ if .is_super_admin }}
105
+                <li>
106
+                    <a id="scrm_a" href="{{ if .scrm_role_exist }}{{.submodule_domain_patient_manage}}{{ end }}">
107
+                        <img src="/static/images/apply-1.jpg" alt="">
108
+                        <span class="join" id="enter_scrm"> 进入应用 ></span>
109
+                        <h3 class="title">
110
+                            SCRM</h3>
111
+                        <P class="txt">SCRM是社会化病人关系管理系统,是基于移动社交时代全新营销模 式下的病人关系管理系统。以病人为中心, 通过获取、留存、活跃、洞悉、营销和服务
112
+                            六大手段,帮助品牌建立与消费者坚实有效的关系,提升个性化营销能力,有效挖掘用 户价值并推进价值转化。</P>
113
+                    </a>
114
+                    <div class="button">
115
+                        {{ if .scrm_role_exist }}
116
+                        <button class="close">已启用</button>
117
+                        {{ else }}
118
+                        <button class="open" id="scrm_open">启用</button>
119
+                        {{ end }}
120
+                    </div>
121
+                </li>
122
+                {{ else if .scrm_role_exist }}
66
                 <li>
123
                 <li>
67
                     <a href="{{.submodule_domain_patient_manage}}">
124
                     <a href="{{.submodule_domain_patient_manage}}">
68
                         <img src="/static/images/apply-1.jpg" alt="">
125
                         <img src="/static/images/apply-1.jpg" alt="">
74
                     </a>
131
                     </a>
75
                 </li>
132
                 </li>
76
                 {{ end }}
133
                 {{ end }}
77
-                {{ if .mall_role_exist }}
134
+
135
+                {{ if .is_super_admin }}
136
+                <li>
137
+                    <a id="mall_a" href="{{ if .mall_role_exist }}{{.submodule_domain_mall_manage}}{{ end }}">
138
+                        <img src="/static/images/apply-2.jpg" alt="">
139
+                        <span class="join" id="enter_mall"> 进入应用 ></span>
140
+                        <h3 class="title">
141
+                            微商城</h3>
142
+                        <P class="txt">微商城是为肾病服务机构定制的O2O商城,帮助机构实现电商业务,实现线上销售、线下服务的模式,提升销量。也可用于产品/服务的展示和传播。</P>
143
+                        <div class="button">
144
+                            {{ if .mall_role_exist }}
145
+                            <button class="close">已启用</button>
146
+                            {{ else }}
147
+                            <button class="open" id="mall_open">启用</button>
148
+                            {{ end }}
149
+                        </div>
150
+                    </a>
151
+                </li>
152
+                {{ else if .mall_role_exist }}
78
                 <li>
153
                 <li>
79
                     <a href="{{.submodule_domain_mall_manage}}">
154
                     <a href="{{.submodule_domain_mall_manage}}">
80
                         <img src="/static/images/apply-2.jpg" alt="">
155
                         <img src="/static/images/apply-2.jpg" alt="">
89
         </div>
164
         </div>
90
         <div class="join-right">Copyright © 2016-2018 圣卫士·酷医云</div>
165
         <div class="join-right">Copyright © 2016-2018 圣卫士·酷医云</div>
91
     </div>
166
     </div>
167
+    <script src="/static/js/jquery-2.1.1.min.js"></script>
168
+    <script src="/static/js/bootstrap.min.js?v=3.4.0"></script>
169
+    <script src="/static/js/jquery.metisMenu.js"></script>
170
+    <script src="/static/js/hplus.js?v=2.2.0"></script>
171
+    <script src="/static/js/layer.js"></script>
172
+    <script src="/static/js/common.js"></script>
173
+    <script type="text/javascript">
174
+    $(function() {
175
+        {{ if eq false .xt_role_exist }}
176
+        $("#enter_xt").hide()
177
+        {{ end }}
178
+        {{ if eq false .cdm_role_exist }}
179
+        $("#enter_cdm").hide()
180
+        {{ end }}
181
+        {{ if eq false .scrm_role_exist }}
182
+        $("#enter_scrm").hide()
183
+        {{ end }}
184
+        {{ if eq false .mall_role_exist }}
185
+        $("#enter_mall").hide()
186
+        {{ end }}
187
+
188
+        var xturl = "{{.submodule_domain_dialysis_manage}}"
189
+        var cdmurl = "{{.submodule_domain_cdm_manage}}"
190
+        var scrmurl = "{{.submodule_domain_patient_manage}}"
191
+        var mallurl = "{{.submodule_domain_mall_manage}}"
192
+
193
+        $("#xt_open").click(function() {
194
+            openAppAction(3, function() {
195
+                $("#xt_open").removeClass("open")
196
+                $("#xt_open").addClass("close")
197
+                $("xt_a").attr("href", xturl)
198
+                $("enter_xt").show()
199
+            })
200
+        })
201
+        $("#cdm_open").click(function() {
202
+            openAppAction(4, function() {
203
+                $("#cdm_open").removeClass("open")
204
+                $("#cdm_open").addClass("close")
205
+                $("cdm_a").attr("href", cdmurl)
206
+                $("enter_cdm").show()
207
+            })
208
+        })
209
+        $("#scrm_open").click(function() {
210
+            openAppAction(1, function() {
211
+                $("#scrm_open").removeClass("open")
212
+                $("#scrm_open").addClass("close")
213
+                $("scrm_a").attr("href", scrmurl)
214
+                $("enter_scrm").show()
215
+            })
216
+        })
217
+        $("#mall_open").click(function() {
218
+            openAppAction(5, function() {
219
+                $("#mall_open").removeClass("open")
220
+                $("#mall_open").addClass("close")
221
+                $("mall_a").attr("href", mallurl)
222
+                $("enter_mall").show()
223
+            })
224
+        })
225
+
226
+        function openAppAction(type, success_cb) {
227
+            $.ajax({
228
+                url: "/app/open",
229
+                type: "POST",
230
+                data: {
231
+                    type: type,
232
+                },
233
+                async: false,
234
+                headers: {
235
+                    "X-Xsrftoken": getXSRF()
236
+                },
237
+                dataType: "json",
238
+                success: function(json) {
239
+                    if (json.state == 1) {
240
+                        if (success_cb != null && success_cb != undefined) {
241
+                            success_cb()
242
+                        }
243
+
244
+                    } else {
245
+                        layer.msg("启用失败: " + json.msg);
246
+                    }
247
+                },
248
+                error: function() {
249
+                    layer.msg("连接失败,请检查网络");
250
+                }
251
+            });
252
+        }
253
+    })
254
+    </script>
92
 </body>
255
 </body>
93
 </html>
256
 </html>