Browse Source

修改redis清除数据时间

csx 4 years ago
parent
commit
be1e1ce4db

+ 4 - 3
controllers/manager_center_api_controller.go View File

@@ -94,7 +94,7 @@ func (c *ManagerCenterApiController) CreateBaseDrugLib() {
94 94
 	code := c.GetString("code")
95 95
 	is_special_diseases, _ := c.GetInt64("is_special_diseases")
96 96
 	is_record, _ := c.GetInt64("is_record")
97
-	agent, _ := c.GetInt64("agent")
97
+	agent := c.GetString("agent")
98 98
 	drug_status := c.GetString("drug_status")
99 99
 	limit_remark := c.GetString("limit_remark")
100 100
 	delivery_way := c.GetString("delivery_way")
@@ -220,7 +220,7 @@ func (c *ManagerCenterApiController) EditBaseDrugLib() {
220 220
 	code := c.GetString("code")
221 221
 	is_special_diseases, _ := c.GetInt64("is_special_diseases")
222 222
 	is_record, _ := c.GetInt64("is_record")
223
-	agent, _ := c.GetInt64("agent")
223
+	agent := c.GetString("agent")
224 224
 	drug_status := c.GetString("drug_status")
225 225
 	limit_remark := c.GetString("limit_remark")
226 226
 	delivery_way := c.GetString("delivery_way")
@@ -237,6 +237,7 @@ func (c *ManagerCenterApiController) EditBaseDrugLib() {
237 237
 	drug_code := c.GetString("drug_code")
238 238
 
239 239
 	adminInfo := c.GetAdminUserInfo()
240
+	drug, _ := service.FindBaseDrugLibRecord(adminInfo.CurrentOrgId, id)
240 241
 
241 242
 	drugLib := &models.BaseDrugLib{
242 243
 		ID:                     id,
@@ -286,7 +287,7 @@ func (c *ManagerCenterApiController) EditBaseDrugLib() {
286 287
 		IsChargeUse:            is_charge_use,
287 288
 		OrgId:                  adminInfo.CurrentOrgId,
288 289
 		Status:                 1,
289
-		Ctime:                  time.Now().Unix(),
290
+		Ctime:                  drug.Ctime,
290 291
 		Mtime:                  time.Now().Unix(),
291 292
 		DrugCode:               drug_code,
292 293
 	}

+ 16 - 21
controllers/mobile_api_controllers/patient_api_controller.go View File

@@ -754,28 +754,23 @@ func (c *PatientApiController) ExecDoctorAdvice() {
754 754
 									service.UpdateDrugStockOutInfoCount2(adminUserInfo.Org.Id, outInfo.ID, count)
755 755
 								}
756 756
 
757
-								count, _ := service.FindPatientDrugAutomaticReduceRecord(adminUserInfo.Org.Id, record_time, item.DrugId, item.PatientId)
758
-								if count == 0 {
759
-									prescribingNumber := strconv.FormatFloat(math.Abs(item.PrescribingNumber), 'f', 0, 64)
760
-									count, _ := strconv.ParseInt(prescribingNumber, 10, 64)
761
-									details := &models.DrugAutomaticReduceDetail{
762
-										WarehouseOutId:          outInfo.ID,
763
-										WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber,
764
-										PatientId:               item.PatientId,
765
-										Ctime:                   time.Now().Unix(),
766
-										Mtime:                   time.Now().Unix(),
767
-										Status:                  1,
768
-										RecordTime:              record_time,
769
-										OrgId:                   adminUserInfo.Org.Id,
770
-										DrugId:                  item.DrugId,
771
-										Count:                   count,
772
-									}
773
-									service.AddSigleDrugAutoReduceRecordInfo(details)
774
-								} else if count == 1 {
775
-									prescribingNumber := strconv.FormatFloat(math.Abs(item.PrescribingNumber), 'f', 0, 64)
776
-									count, _ := strconv.ParseInt(prescribingNumber, 10, 64)
777
-									service.UpdateDrugUserInfoDetails(item.DrugId, record_time, adminUserInfo.Org.Id, item.PatientId, count, &outInfo)
757
+								//count, _ := service.FindPatientDrugAutomaticReduceRecord(adminUserInfo.Org.Id, record_time, item.DrugId, item.PatientId)
758
+								//if count == 0 {
759
+								prescribingNumber := strconv.FormatFloat(math.Abs(item.PrescribingNumber), 'f', 0, 64)
760
+								count, _ := strconv.ParseInt(prescribingNumber, 10, 64)
761
+								details := &models.DrugAutomaticReduceDetail{
762
+									WarehouseOutId:          outInfo.ID,
763
+									WarehouseOutOrderNumber: outInfo.WarehouseOutOrderNumber,
764
+									PatientId:               item.PatientId,
765
+									Ctime:                   time.Now().Unix(),
766
+									Mtime:                   time.Now().Unix(),
767
+									Status:                  1,
768
+									RecordTime:              record_time,
769
+									OrgId:                   adminUserInfo.Org.Id,
770
+									DrugId:                  item.DrugId,
771
+									Count:                   count,
778 772
 								}
773
+								service.AddSigleDrugAutoReduceRecordInfo(details)
779 774
 
780 775
 							}
781 776
 						}

+ 3 - 0
controllers/new_mobile_api_controllers/new_mobile_api_router_register.go View File

@@ -55,6 +55,9 @@ func NewMobileAPIControllersRegisterRouters() {
55 55
 	beego.Router("/m/api/functionpermission/post", &NewRoleApiController{}, "post:EditFunctionPermission")
56 56
 
57 57
 	beego.Router("/m/api/permission", &NewRoleApiController{}, "get:GetAllPermission")
58
+
59
+	beego.Router("/m/api/newpermission", &NewRoleApiController{}, "get:GetAllNewPermission")
60
+
58 61
 	beego.Router("/m/api/rolepurview", &NewRoleApiController{}, "get:GetRolePurviews")
59 62
 	beego.Router("/m/api/role/funtionpurview", &NewRoleApiController{}, "get:GetFuntionPurviews")
60 63
 

+ 8 - 0
controllers/new_mobile_api_controllers/new_role_api_controller.go View File

@@ -726,3 +726,11 @@ func (this *NewRoleApiController) GetFuncRolePurviews() {
726 726
 		"role_purview": purview,
727 727
 	})
728 728
 }
729
+
730
+func (this *NewRoleApiController) GetAllNewPermission() {
731
+	url := this.GetString("url")
732
+	purviews, _ := service.GetNewAllPurview(url)
733
+	this.ServeSuccessJSON(map[string]interface{}{
734
+		"purviews": purviews,
735
+	})
736
+}

+ 113 - 16
controllers/role_controller.go View File

@@ -213,26 +213,98 @@ func (this *RoleAPIController) EditPurviewInitData() {
213 213
 
214 214
 	role, _ := service.GetRoleByRoleID(roleId)
215 215
 
216
-	purviews_xt, getPurviewsErr := service.GetAllGeneralPurviewVMsProcessed(3)
216
+	//purviews_xt, getPurviewsErr := service.GetAllGeneralPurviewVMsProcessed(3)
217 217
 	purviews_scrm, getPurviewsErr := service.GetAllGeneralPurviewVMsProcessed(6)
218 218
 	purviews_cdm, getPurviewsErr := service.GetAllGeneralPurviewVMsProcessed(4)
219 219
 	purviews_mall, getPurviewsErr := service.GetAllGeneralPurviewVMsProcessed(7)
220
+	purviews_ky_mall, getPurviewsErr := service.GetAllGeneralPurviewVMsProcessed(8)
221
+
222
+	//purviews_func/**/, getPurviewsErr := service.GetAllFuncPurview()
223
+
224
+	//门诊
225
+	outpatientRegistration, _ := service.GetOtherAllGeneralPurviewVMsProcessed("/outpatientRegistration/manage")
226
+	//电子病历
227
+	ele, _ := service.GetOtherAllGeneralPurviewVMsProcessed("/patinets/ele")
228
+	//透析管理
229
+	dialysis, _ := service.GetOtherAllGeneralPurviewVMsProcessed("/dialysis/manage")
230
+	//库房管理
231
+	stock, _ := service.GetOtherAllGeneralPurviewVMsProcessed("/stock/manage")
232
+	//配置管理
233
+	config, _ := service.GetOtherAllGeneralPurviewVMsProcessed("/config/manage")
234
+
235
+	//sub_outpatientRegistration,_ := service.GetOtherAllGeneralPurviewVMsProcessed("/outpatientRegistration/index")
236
+
237
+	//GetNewAllPurview("/outpatientRegistration/index")
238
+
239
+	//ele,_ := service.GetOtherNewAllPurview("/patinets/ele")
240
+	//dialysis,_ := service.GetOtherNewAllPurview("/dialysis/manage")
241
+	//stock,_ := service.GetOtherNewAllPurview("/stock/manage")
242
+	//config,_ :=  service.GetOtherNewAllPurview("/config/manage")
243
+	//outpatientRegistration,_ := service.GetOtherNewAllPurview("/outpatientRegistration/manage")
244
+
245
+	//
246
+	//for _, item := range dialysis {
247
+	//		if item.Name == "透析记录" {
248
+	//			item.Childs = purviews_func
249
+	//	}
250
+	//}
251
+	//
252
+	//for _, item := range outpatientRegistration {
253
+	//	if item.Name == "门诊挂号" {
254
+	//		fmt.Println("111111")
255
+	//		item.Childs = purviews_func
256
+	//
257
+	//	}
258
+	//}
220 259
 
221
-	purviews_func, getPurviewsErr := service.GetAllGeneralFuncPurviewVMsProcessed()
222
-	for _, item := range purviews_xt {
223
-		for _, childItem := range item.Childs {
224
-			if childItem.Name == "透析记录" {
225
-				childItem.Childs = purviews_func
226
-			}
227
-		}
260
+	purviews := []*service.PurviewTreeViewModel{}
261
+
262
+	menzhen := &service.PurviewTreeViewModel{
263
+		ID:     0,
264
+		PID:    0,
265
+		Name:   "门诊管理",
266
+		Number: 3,
267
+		Childs: outpatientRegistration,
228 268
 	}
229
-	scrm := &service.PurviewTreeViewModel{
269
+	purviews = append(purviews, menzhen)
270
+
271
+	//purviews =
272
+
273
+	dianzi := &service.PurviewTreeViewModel{
230 274
 		ID:     0,
231 275
 		PID:    0,
232
-		Name:   "SCRM",
276
+		Name:   "电子病历",
233 277
 		Number: 3,
234
-		Childs: purviews_scrm,
278
+		Childs: ele,
235 279
 	}
280
+	purviews = append(purviews, dianzi)
281
+
282
+	touxi := &service.PurviewTreeViewModel{
283
+		ID:     0,
284
+		PID:    0,
285
+		Name:   "透析管理",
286
+		Number: 3,
287
+		Childs: dialysis,
288
+	}
289
+	purviews = append(purviews, touxi)
290
+
291
+	kufang := &service.PurviewTreeViewModel{
292
+		ID:     0,
293
+		PID:    0,
294
+		Name:   "库房管理",
295
+		Number: 3,
296
+		Childs: stock,
297
+	}
298
+	purviews = append(purviews, kufang)
299
+
300
+	ky_mall := &service.PurviewTreeViewModel{
301
+		ID:     0,
302
+		PID:    0,
303
+		Name:   "酷医商城",
304
+		Number: 3,
305
+		Childs: purviews_ky_mall,
306
+	}
307
+	purviews = append(purviews, ky_mall)
236 308
 
237 309
 	cdm := &service.PurviewTreeViewModel{
238 310
 		ID:     0,
@@ -242,11 +314,36 @@ func (this *RoleAPIController) EditPurviewInitData() {
242 314
 		Childs: purviews_cdm,
243 315
 	}
244 316
 
245
-	purviews_xt = append(purviews_xt, scrm)
246
-	purviews_xt = append(purviews_xt, cdm)
247
-	purviews_xt = append(purviews_xt, purviews_mall...)
317
+	purviews = append(purviews, cdm)
318
+
319
+	scrm := &service.PurviewTreeViewModel{
320
+		ID:     0,
321
+		PID:    0,
322
+		Name:   "营销管理",
323
+		Number: 3,
324
+		Childs: purviews_scrm,
325
+	}
326
+
327
+	purviews = append(purviews, scrm)
328
+
329
+	mall := &service.PurviewTreeViewModel{
330
+		ID:     0,
331
+		PID:    0,
332
+		Name:   "分销商城",
333
+		Number: 3,
334
+		Childs: purviews_mall,
335
+	}
248 336
 
249
-	//purviews_xt = append(purviews_xt,purviews_cdm...)
337
+	purviews = append(purviews, mall)
338
+
339
+	peizhi := &service.PurviewTreeViewModel{
340
+		ID:     0,
341
+		PID:    0,
342
+		Name:   "配置管理",
343
+		Number: 3,
344
+		Childs: config,
345
+	}
346
+	purviews = append(purviews, peizhi)
250 347
 
251 348
 	if getPurviewsErr != nil {
252 349
 		//beego.Error("获取所有权限时出错:", getPurviewsErr)
@@ -282,7 +379,7 @@ func (this *RoleAPIController) EditPurviewInitData() {
282 379
 	}
283 380
 
284 381
 	this.ServeSuccessJSON(map[string]interface{}{
285
-		"purviews":         purviews_xt,
382
+		"purviews":         purviews,
286 383
 		"role":             role,
287 384
 		"role_purview_ids": rolePurviewIdStr + "," + roleFuncPurview.PurviewIds,
288 385
 	})

+ 17 - 0
controllers/stock_api_controller.go View File

@@ -40,6 +40,8 @@ func (c *StockApiController) CreateDealer() {
40 40
 	email := c.GetString("email")
41 41
 	contact_address := c.GetString("contact_address")
42 42
 	remark := c.GetString("remark")
43
+	wubi := c.GetString("wubi")
44
+	pinyin := c.GetString("pinyin")
43 45
 
44 46
 	if len(dealer_name) <= 0 {
45 47
 		utils.ErrorLog("len(dealer_name) == 0")
@@ -67,6 +69,8 @@ func (c *StockApiController) CreateDealer() {
67 69
 		PlatformNumber: platform_number,
68 70
 		OrgId:          adminUserInfo.CurrentOrgId,
69 71
 		Status:         1,
72
+		WuBi:           wubi,
73
+		PinYin:         pinyin,
70 74
 	}
71 75
 
72 76
 	err, dealers := service.AddSigleDealer(&dealer)
@@ -91,6 +95,9 @@ func (c *StockApiController) ModifyDealer() {
91 95
 	email := c.GetString("email")
92 96
 	contact_address := c.GetString("contact_address")
93 97
 	remark := c.GetString("remark")
98
+	wubi := c.GetString("wubi")
99
+	pinyin := c.GetString("pinyin")
100
+
94 101
 	if id <= 0 {
95 102
 		utils.ErrorLog("id == 0")
96 103
 		c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
@@ -120,6 +127,8 @@ func (c *StockApiController) ModifyDealer() {
120 127
 		Modifier:       adminUserInfo.AdminUser.Id,
121 128
 		OrgId:          adminUserInfo.CurrentOrgId,
122 129
 		Status:         1,
130
+		WuBi:           wubi,
131
+		PinYin:         pinyin,
123 132
 	}
124 133
 
125 134
 	err := service.ModifyDealer(&dealer)
@@ -183,6 +192,8 @@ func (c *StockApiController) CreateManufacturer() {
183 192
 	email := c.GetString("email")
184 193
 	contact_address := c.GetString("contact_address")
185 194
 	remark := c.GetString("remark")
195
+	wubi := c.GetString("wubi")
196
+	pinyin := c.GetString("pinyin")
186 197
 
187 198
 	if len(manufacturer_name) <= 0 {
188 199
 		utils.ErrorLog("len(manufacturer_name) == 0")
@@ -209,6 +220,8 @@ func (c *StockApiController) CreateManufacturer() {
209 220
 		OrgId:            adminUserInfo.CurrentOrgId,
210 221
 		Status:           1,
211 222
 		ManufacturerCode: code,
223
+		WuBi:             wubi,
224
+		PinYin:           pinyin,
212 225
 	}
213 226
 
214 227
 	err, manufacturers := service.AddSigleManufacturer(&manufacturer)
@@ -233,6 +246,8 @@ func (c *StockApiController) ModifyManufacturer() {
233 246
 	contact_address := c.GetString("contact_address")
234 247
 	remark := c.GetString("remark")
235 248
 	manufacturer_code := c.GetString("manufacturer_code")
249
+	wubi := c.GetString("wubi")
250
+	pinyin := c.GetString("pinyin")
236 251
 
237 252
 	if id <= 0 {
238 253
 		utils.ErrorLog("id == 0")
@@ -263,6 +278,8 @@ func (c *StockApiController) ModifyManufacturer() {
263 278
 		OrgId:            adminUserInfo.CurrentOrgId,
264 279
 		ManufacturerCode: manufacturer_code,
265 280
 		Status:           1,
281
+		WuBi:             wubi,
282
+		PinYin:           pinyin,
266 283
 	}
267 284
 
268 285
 	err := service.ModifyManufacturer(&manufacturer)

+ 1 - 1
models/drug.go View File

@@ -32,7 +32,7 @@ type BaseDrugLib struct {
32 32
 	Code                        string                         `gorm:"column:code" json:"code" form:"code"`
33 33
 	IsSpecialDiseases           int64                          `gorm:"column:is_special_diseases" json:"is_special_diseases" form:"is_special_diseases"`
34 34
 	IsRecord                    int64                          `gorm:"column:is_record" json:"is_record" form:"is_record"`
35
-	Agent                       int64                          `gorm:"column:agent" json:"agent" form:"agent"`
35
+	Agent                       string                         `gorm:"column:agent" json:"agent" form:"agent"`
36 36
 	DrugStatus                  string                         `gorm:"column:drug_status" json:"drug_status" form:"drug_status"`
37 37
 	LimitRemark                 string                         `gorm:"column:limit_remark" json:"limit_remark" form:"limit_remark"`
38 38
 	DeliveryWay                 string                         `gorm:"column:delivery_way" json:"delivery_way" form:"delivery_way"`

+ 1 - 1
models/self_drug_models.go View File

@@ -45,7 +45,7 @@ type XtBaseDrug struct {
45 45
 	Code                   string  `gorm:"column:code" json:"code" form:"code"`
46 46
 	IsSpecialDiseases      int64   `gorm:"column:is_special_diseases" json:"is_special_diseases" form:"is_special_diseases"`
47 47
 	IsRecord               int64   `gorm:"column:is_record" json:"is_record" form:"is_record"`
48
-	Agent                  int64   `gorm:"column:agent" json:"agent" form:"agent"`
48
+	Agent                  string  `gorm:"column:agent" json:"agent" form:"agent"`
49 49
 	DrugStatus             string  `gorm:"column:drug_status" json:"drug_status" form:"drug_status"`
50 50
 	LimitRemark            string  `gorm:"column:limit_remark" json:"limit_remark" form:"limit_remark"`
51 51
 	DeliveryWay            string  `gorm:"column:delivery_way" json:"delivery_way" form:"delivery_way"`

+ 83 - 1
service/role_service.go View File

@@ -366,7 +366,7 @@ type PurviewTreeViewModel struct {
366 366
 
367 367
 func GetAllGeneralPurviewVMsProcessed(module int) ([]*PurviewTreeViewModel, error) {
368 368
 	var originPurviews []*models.Purview
369
-	getPurviewErr := readUserDb.Model(models.Purview{}).Where("module = ? AND status = 1 AND super_admin_exclusive = 0", module).Order("listorder asc").Order("id asc").Find(&originPurviews).Error
369
+	getPurviewErr := readUserDb.Model(models.Purview{}).Where("module = ? AND status = 1", module).Order("listorder asc").Order("id asc").Find(&originPurviews).Error
370 370
 	if getPurviewErr != nil {
371 371
 		return nil, getPurviewErr
372 372
 	}
@@ -766,3 +766,85 @@ func GetAllSystemPurview() (purview []*models.Purview, err error) {
766 766
 	err = readUserDb.Model(&models.Purview{}).Where("status = 1 AND module = 3 ").Find(&purview).Error
767 767
 	return
768 768
 }
769
+
770
+type Purview struct {
771
+	Id                  int64      `gorm:"PRIMARY_KEY;AUTO_INCREMENT" json:"id"`
772
+	Parentid            int64      `json:"pid"`                                                // 父级ID
773
+	Module              int8       `json:"module"`                                             // 所属应用类型 1.病友经营;2.科普号;3.血透经营;4.慢病管理;
774
+	Name                string     `json:"name"`                                               // 规则名称(也是菜单名)
775
+	Urlfor              string     `json:"urlfor"`                                             // 规则唯一英文标识,(Controller.Method)
776
+	MenuIconClass       string     `gorm:"menu_icon_class" json:"menu_icon_class"`             // 菜单图标的 css 样式
777
+	SuperAdminExclusive int8       `gorm:"super_admin_exclusive" json:"super_admin_exclusive"` // 是否为超级管理员专属 0否1是
778
+	Listorder           int        `json:"-"`                                                  // 排序ID
779
+	Status              int8       `json:"status"`                                             // 状态 0.无效 1.有效 2.禁用
780
+	CreateTime          int64      `gorm:"column:ctime" json:"-"`                              // 创建时间
781
+	ModifyTime          int64      `gorm:"column:mtime" json:"-"`                              // 修改时间
782
+	Purview             []*Purview `gorm:"ForeignKey:Parentid;AssociationForeignKey:ID" json:"sub_purview"`
783
+	IconUrl             string     `gorm:"column:icon_url" json:"icon_url" form:"icon_url"`
784
+	Desc                string     `gorm:"column:desc" json:"desc" form:"desc"`
785
+	ParentUrl           string     `gorm:"column:parent_url" json:"parent_url" form:"parent_url"`
786
+	Link                string     `gorm:"-" json:"link"`   // urlfor 解析后的链接
787
+	Childs              []*Purview `gorm:"-" json:"childs"` // 子节点
788
+
789
+}
790
+
791
+func (Purview) TableName() string {
792
+	return "sgj_user_purview"
793
+}
794
+
795
+func GetNewAllPurview(url string) ([]*Purview, error) {
796
+	var originPurviews []*Purview
797
+	getPurviewErr := readUserDb.Model(Purview{}).Preload("Purview", "status = 1").Where("parent_url = ? AND status = 1", url).Order("listorder asc").Order("id asc").Find(&originPurviews).Error
798
+	return originPurviews, getPurviewErr
799
+}
800
+
801
+func GetOtherNewAllPurview(url string) ([]*Purview, error) {
802
+	var originPurviews []*Purview
803
+	getPurviewErr := readUserDb.Model(Purview{}).Preload("Purview", func(db *gorm.DB) *gorm.DB {
804
+		return db.Preload("Purview", "status = 1").Where("status = 1")
805
+	}).Where("parent_url = ? AND status = 1", url).Order("listorder asc").Order("id asc").Find(&originPurviews).Error
806
+	return originPurviews, getPurviewErr
807
+}
808
+
809
+func GetAllFuncPurview() ([]*models.SgjUserOperatePurview, error) {
810
+	var originPurviews []*models.SgjUserOperatePurview
811
+	getPurviewErr := readUserDb.Model(&models.SgjUserOperatePurview{}).Where(" status = 1").Error
812
+	return originPurviews, getPurviewErr
813
+}
814
+
815
+func GetOtherAllGeneralPurviewVMsProcessed(url string) ([]*PurviewTreeViewModel, error) {
816
+	var originPurviews []*models.Purview
817
+	getPurviewErr := readUserDb.Model(Purview{}).Where("status = 1 AND parent_url = ?", url).Order("listorder asc").Order("id asc").Find(&originPurviews).Error
818
+	if getPurviewErr != nil {
819
+		return nil, getPurviewErr
820
+	}
821
+	// 加工这些规则:树形化
822
+	purviewVMs := make([]*PurviewTreeViewModel, 0)
823
+	pid_childs := make(map[int64][]*PurviewTreeViewModel)
824
+	for _, purview := range originPurviews {
825
+		// warning:下面这个算法只适用最多两层树形结构的菜单,对于两层以上的会丢失掉第三层及其以下的节点
826
+		// 因为取出 originPurviews 的时候已经排过序了,所以顶级节点肯定最先处理,不需要担心子节点比父节点先处理
827
+		pvm := &PurviewTreeViewModel{
828
+			ID:     purview.Id,
829
+			PID:    purview.Parentid,
830
+			Name:   purview.Name,
831
+			Number: 2,
832
+		}
833
+		if purview.Parentid == 0 {
834
+			purviewVMs = append(purviewVMs, pvm)
835
+		} else {
836
+			childs := pid_childs[purview.Parentid]
837
+			if childs == nil {
838
+				childs = make([]*PurviewTreeViewModel, 0)
839
+			}
840
+			childs = append(childs, pvm)
841
+			pid_childs[purview.Parentid] = childs
842
+		}
843
+	}
844
+
845
+	for _, vm := range purviewVMs {
846
+		vm.Childs = pid_childs[vm.ID]
847
+	}
848
+
849
+	return purviewVMs, nil
850
+}