|
@@ -17,6 +17,8 @@ import (
|
17
|
17
|
func MemberCtlRegistRouters() {
|
18
|
18
|
beego.Router("/api/members", &MembersAPIController{}, "get:GetMembers")
|
19
|
19
|
beego.Router("/api/member/create", &MembersAPIController{}, "Post:CreateMember")
|
|
20
|
+ beego.Router("/api/member/edit", &MembersAPIController{}, "Put:EditMember")
|
|
21
|
+ beego.Router("/api/members/delete", &MembersAPIController{}, "Delete:DeleteMembers")
|
20
|
22
|
}
|
21
|
23
|
|
22
|
24
|
type MembersAPIController struct {
|
|
@@ -350,3 +352,287 @@ func (c *MembersAPIController) CreateMember() {
|
350
|
352
|
return
|
351
|
353
|
|
352
|
354
|
}
|
|
355
|
+
|
|
356
|
+func (c *MembersAPIController) EditMember() {
|
|
357
|
+ id, _ := c.GetInt64("id", 0)
|
|
358
|
+ if id <= 0 {
|
|
359
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "参数错误:id")
|
|
360
|
+ return
|
|
361
|
+ }
|
|
362
|
+ adminUserInfo := c.GetAdminUserInfo()
|
|
363
|
+
|
|
364
|
+ member, err := member_service.GetOnlyMemberByID(adminUserInfo.CurrentOrgId, id)
|
|
365
|
+ if err != nil {
|
|
366
|
+ c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "编辑会员失败:("+err.Error()+")")
|
|
367
|
+ return
|
|
368
|
+ }
|
|
369
|
+ if member == nil {
|
|
370
|
+ c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "编辑会员失败:(会员记录不存在)")
|
|
371
|
+ return
|
|
372
|
+ }
|
|
373
|
+
|
|
374
|
+ timeNow := time.Now().Unix()
|
|
375
|
+
|
|
376
|
+ dataBody := make(map[string]interface{}, 0)
|
|
377
|
+ err = json.Unmarshal(c.Ctx.Input.RequestBody, &dataBody)
|
|
378
|
+ if err != nil {
|
|
379
|
+ utils.ErrorLog(err.Error())
|
|
380
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "参数错误")
|
|
381
|
+ return
|
|
382
|
+ }
|
|
383
|
+
|
|
384
|
+ if dataBody["name"] == nil || reflect.TypeOf(dataBody["name"]).String() != "string" {
|
|
385
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:姓名")
|
|
386
|
+ return
|
|
387
|
+ }
|
|
388
|
+ name, _ := dataBody["name"].(string)
|
|
389
|
+ if len(name) == 0 {
|
|
390
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "姓名不能为空")
|
|
391
|
+ return
|
|
392
|
+ }
|
|
393
|
+ member.Name = name
|
|
394
|
+
|
|
395
|
+ if dataBody["mobile"] == nil || reflect.TypeOf(dataBody["mobile"]).String() != "string" {
|
|
396
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:手机号")
|
|
397
|
+ return
|
|
398
|
+ }
|
|
399
|
+ mobile, _ := dataBody["mobile"].(string)
|
|
400
|
+ if len(mobile) == 0 {
|
|
401
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "手机号不能为空")
|
|
402
|
+ return
|
|
403
|
+ }
|
|
404
|
+ if !utils.CheckMobile(mobile) {
|
|
405
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "手机号格式不正确")
|
|
406
|
+ return
|
|
407
|
+ }
|
|
408
|
+ changeMobile := true
|
|
409
|
+ if member.Mobile == mobile {
|
|
410
|
+ changeMobile = false
|
|
411
|
+ }
|
|
412
|
+ member.Mobile = mobile
|
|
413
|
+
|
|
414
|
+ if dataBody["gender"] == nil || reflect.TypeOf(dataBody["gender"]).String() != "float64" {
|
|
415
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:性别")
|
|
416
|
+ return
|
|
417
|
+ }
|
|
418
|
+ gender := int64(dataBody["gender"].(float64))
|
|
419
|
+
|
|
420
|
+ if gender != 1 && gender != 2 {
|
|
421
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "性别选择不正确")
|
|
422
|
+ return
|
|
423
|
+ }
|
|
424
|
+ member.Gender = gender
|
|
425
|
+
|
|
426
|
+ if dataBody["birthday"] == nil || reflect.TypeOf(dataBody["birthday"]).String() != "string" {
|
|
427
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:生日")
|
|
428
|
+ return
|
|
429
|
+ }
|
|
430
|
+ birthday, _ := dataBody["birthday"].(string)
|
|
431
|
+ if len(birthday) == 0 {
|
|
432
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "生日格式不正确")
|
|
433
|
+ return
|
|
434
|
+ }
|
|
435
|
+
|
|
436
|
+ timeLayout := "2006-01-02 15:04:05"
|
|
437
|
+ theTime, err := utils.ParseTimeStringToTime(timeLayout, birthday+" 00:00:00")
|
|
438
|
+ if err != nil {
|
|
439
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "生日格式不正确")
|
|
440
|
+ return
|
|
441
|
+ }
|
|
442
|
+ member.Birthday = theTime.Unix()
|
|
443
|
+
|
|
444
|
+ if dataBody["province_id"] == nil || reflect.TypeOf(dataBody["province_id"]).String() != "float64" {
|
|
445
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:地区(省)")
|
|
446
|
+ return
|
|
447
|
+ }
|
|
448
|
+ provinceID := int64(dataBody["province_id"].(float64))
|
|
449
|
+ if provinceID <= 0 {
|
|
450
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "请选择地区")
|
|
451
|
+ return
|
|
452
|
+ }
|
|
453
|
+ member.ProvinceId = provinceID
|
|
454
|
+
|
|
455
|
+ if dataBody["city_id"] == nil || reflect.TypeOf(dataBody["city_id"]).String() != "float64" {
|
|
456
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:地区(市)")
|
|
457
|
+ return
|
|
458
|
+ }
|
|
459
|
+ cityID := int64(dataBody["city_id"].(float64))
|
|
460
|
+ if cityID <= 0 {
|
|
461
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "请选择地区")
|
|
462
|
+ return
|
|
463
|
+ }
|
|
464
|
+ member.CityId = cityID
|
|
465
|
+
|
|
466
|
+ if dataBody["district_id"] == nil || reflect.TypeOf(dataBody["district_id"]).String() != "float64" {
|
|
467
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:地区(区/县)")
|
|
468
|
+ return
|
|
469
|
+ }
|
|
470
|
+ districtID := int64(dataBody["district_id"].(float64))
|
|
471
|
+ if districtID <= 0 {
|
|
472
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "请选择地区")
|
|
473
|
+ return
|
|
474
|
+ }
|
|
475
|
+ member.DistrictId = districtID
|
|
476
|
+
|
|
477
|
+ if dataBody["illness"] == nil || reflect.TypeOf(dataBody["illness"]).String() != "[]interface {}" {
|
|
478
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:病种")
|
|
479
|
+ return
|
|
480
|
+ }
|
|
481
|
+ illnessInters := dataBody["illness"].([]interface{})
|
|
482
|
+ if len(illnessInters) <= 0 {
|
|
483
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "请选择病种")
|
|
484
|
+ return
|
|
485
|
+ }
|
|
486
|
+ member.Illness = make([]*member_service.CustomerIllness, 0)
|
|
487
|
+ illnessIDS := make([]int64, 0)
|
|
488
|
+ illnessIDMap := make(map[int64]int64, 0)
|
|
489
|
+ for _, illnessInter := range illnessInters {
|
|
490
|
+ id := int64(illnessInter.(float64))
|
|
491
|
+ illnessIDS = append(illnessIDS, id)
|
|
492
|
+ illnessIDMap[id] = id
|
|
493
|
+ }
|
|
494
|
+ allIllness, err := member_service.GetMemberAllIllness(adminUserInfo.CurrentOrgId, member.ID)
|
|
495
|
+ if err != nil {
|
|
496
|
+ c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "编辑会员失败:("+err.Error()+")")
|
|
497
|
+ return
|
|
498
|
+ }
|
|
499
|
+ oldIllIDMap := make(map[int64]int64, 0)
|
|
500
|
+ for _, illItem := range allIllness {
|
|
501
|
+ item := *illItem
|
|
502
|
+ item.Status = 1
|
|
503
|
+ if _, exist := illnessIDMap[item.IllnessId]; !exist {
|
|
504
|
+ item.Status = 0
|
|
505
|
+ item.UpdatedTime = timeNow
|
|
506
|
+ }
|
|
507
|
+ member.Illness = append(member.Illness, &item)
|
|
508
|
+ oldIllIDMap[item.IllnessId] = item.IllnessId
|
|
509
|
+ }
|
|
510
|
+
|
|
511
|
+ for _, id := range illnessIDMap {
|
|
512
|
+ if _, exist := oldIllIDMap[id]; exist {
|
|
513
|
+ continue
|
|
514
|
+ }
|
|
515
|
+ var illItem member_service.CustomerIllness
|
|
516
|
+ illItem.UserOrgId = adminUserInfo.CurrentOrgId
|
|
517
|
+ illItem.IllnessId = id
|
|
518
|
+ illItem.Status = 1
|
|
519
|
+ illItem.UpdatedTime = timeNow
|
|
520
|
+ illItem.CreatedTime = timeNow
|
|
521
|
+ member.Illness = append(member.Illness, &illItem)
|
|
522
|
+ }
|
|
523
|
+
|
|
524
|
+ if dataBody["ill_date"] == nil || reflect.TypeOf(dataBody["ill_date"]).String() != "string" {
|
|
525
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:患病时间")
|
|
526
|
+ return
|
|
527
|
+ }
|
|
528
|
+ illDate, _ := dataBody["ill_date"].(string)
|
|
529
|
+ if len(illDate) == 0 {
|
|
530
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "患病时间格式不正确")
|
|
531
|
+ return
|
|
532
|
+ }
|
|
533
|
+
|
|
534
|
+ illDateTime, err := utils.ParseTimeStringToTime(timeLayout, illDate+" 00:00:00")
|
|
535
|
+ if err != nil {
|
|
536
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "患病时间格式不正确")
|
|
537
|
+ return
|
|
538
|
+ }
|
|
539
|
+ member.IllDate = illDateTime.Unix()
|
|
540
|
+
|
|
541
|
+ if dataBody["treat_type"] == nil || reflect.TypeOf(dataBody["treat_type"]).String() != "float64" {
|
|
542
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "缺少参数:治疗方式")
|
|
543
|
+ return
|
|
544
|
+ }
|
|
545
|
+ treatType := int64(dataBody["treat_type"].(float64))
|
|
546
|
+ if treatType <= 0 {
|
|
547
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "请选择治疗方式")
|
|
548
|
+ return
|
|
549
|
+ }
|
|
550
|
+ member.TreatType = treatType
|
|
551
|
+
|
|
552
|
+ if dataBody["remark"] != nil && reflect.TypeOf(dataBody["remark"]).String() == "string" {
|
|
553
|
+ remark, _ := dataBody["remark"].(string)
|
|
554
|
+ if len(remark) > 0 {
|
|
555
|
+ member.Remark = remark
|
|
556
|
+ }
|
|
557
|
+ }
|
|
558
|
+
|
|
559
|
+ if dataBody["avatar"] != nil && reflect.TypeOf(dataBody["avatar"]).String() == "string" {
|
|
560
|
+ avatar, _ := dataBody["avatar"].(string)
|
|
561
|
+ if len(avatar) > 0 {
|
|
562
|
+ member.Avatar = avatar
|
|
563
|
+ }
|
|
564
|
+ }
|
|
565
|
+
|
|
566
|
+ if changeMobile {
|
|
567
|
+ customer, err := member_service.GetCustomerByMobile(adminUserInfo.CurrentOrgId, member.Mobile)
|
|
568
|
+ if err != nil {
|
|
569
|
+ c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "编辑会员失败:("+err.Error()+")")
|
|
570
|
+ return
|
|
571
|
+ }
|
|
572
|
+ if customer != nil && customer.ID != member.ID {
|
|
573
|
+ c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "编辑会员失败:(已经存在该手机号的客户)")
|
|
574
|
+ return
|
|
575
|
+ }
|
|
576
|
+ }
|
|
577
|
+ member.UpdatedTime = timeNow
|
|
578
|
+
|
|
579
|
+ err = member_service.EditMember(member)
|
|
580
|
+ if err != nil {
|
|
581
|
+ c.ServeFailJsonSend(enums.ErrorCodeDBUpdate, "编辑会员失败:("+err.Error()+")")
|
|
582
|
+ return
|
|
583
|
+ }
|
|
584
|
+
|
|
585
|
+ illness := member.Illness
|
|
586
|
+ member.Illness = make([]*member_service.CustomerIllness, 0)
|
|
587
|
+ for _, ill := range illness {
|
|
588
|
+ illItem := *ill
|
|
589
|
+ if illItem.Status == 0 {
|
|
590
|
+ continue
|
|
591
|
+ }
|
|
592
|
+ member.Illness = append(member.Illness, &illItem)
|
|
593
|
+ }
|
|
594
|
+
|
|
595
|
+ returnData := make(map[string]interface{}, 0)
|
|
596
|
+ returnData["member"] = member
|
|
597
|
+ c.ServeSuccessJSON(returnData)
|
|
598
|
+ return
|
|
599
|
+
|
|
600
|
+}
|
|
601
|
+
|
|
602
|
+func (c *MembersAPIController) DeleteMembers() {
|
|
603
|
+ adminUserInfo := c.GetAdminUserInfo()
|
|
604
|
+
|
|
605
|
+ dataBody := make(map[string]interface{}, 0)
|
|
606
|
+ err := json.Unmarshal(c.Ctx.Input.RequestBody, &dataBody)
|
|
607
|
+ if err != nil {
|
|
608
|
+ utils.ErrorLog(err.Error())
|
|
609
|
+ c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "参数错误")
|
|
610
|
+ return
|
|
611
|
+ }
|
|
612
|
+
|
|
613
|
+ idsInters := dataBody["ids"].([]interface{})
|
|
614
|
+ if len(idsInters) == 0 {
|
|
615
|
+ if err != nil {
|
|
616
|
+ c.ServeFailJsonSend(enums.ErrorCodeDBDelete, "删除会员失败:(没有选择会员)")
|
|
617
|
+ return
|
|
618
|
+ }
|
|
619
|
+ }
|
|
620
|
+
|
|
621
|
+ ids := make([]int64, 0)
|
|
622
|
+ for _, idsInter := range idsInters {
|
|
623
|
+ id := int64(idsInter.(float64))
|
|
624
|
+ ids = append(ids, id)
|
|
625
|
+ }
|
|
626
|
+
|
|
627
|
+ err = member_service.DeleteMembers(adminUserInfo.CurrentOrgId, ids)
|
|
628
|
+ if err != nil {
|
|
629
|
+ c.ServeFailJsonSend(enums.ErrorCodeDBDelete, "删除会员失败:("+err.Error()+")")
|
|
630
|
+ return
|
|
631
|
+ }
|
|
632
|
+
|
|
633
|
+ returnData := make(map[string]interface{}, 0)
|
|
634
|
+ returnData["msg"] = "ok"
|
|
635
|
+
|
|
636
|
+ c.ServeSuccessJSON(returnData)
|
|
637
|
+ return
|
|
638
|
+}
|