tm_responsiblePerson.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package typeManage
  2. import (
  3. "errors"
  4. "fmt"
  5. "gorm.io/gorm"
  6. "log-server/global"
  7. "log-server/model/common/request"
  8. "log-server/model/typeManage"
  9. "math/rand"
  10. )
  11. func RandomString(n int) string {
  12. var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
  13. b := make([]rune, n)
  14. for i := range b {
  15. b[i] = letterRunes[rand.Intn(len(letterRunes))]
  16. }
  17. return string(b)
  18. }
  19. type ResponsiblePersonService struct {
  20. }
  21. //创建负责人
  22. func (r *ResponsiblePersonService) CreateResponsiblePerson(person typeManage.ResponsiblePerson) (err error) {
  23. //先查找是否存在同名员工
  24. err = global.GVA_DB.Table("responsible_person").Where("name = ? and mobile_phone_number = ?", person.Name, person.MobilePhoneNumber).First(&typeManage.ResponsiblePerson{}).Error
  25. if !errors.Is(err, gorm.ErrRecordNotFound) {
  26. return errors.New("已存在同名员工,请勿重复添加")
  27. }
  28. //不存在同名员工
  29. //根据image是否为空来判断是否需要图片处理
  30. //fmt.Println(person.Img)
  31. //if person.Img != "" {
  32. // var (
  33. // enc = base64.StdEncoding
  34. // path string
  35. // )
  36. // img := person.Img
  37. // timestamp:=strconv.Itoa(int(time.Now().UnixNano()))
  38. // randomStr := (RandomString(5))
  39. // imgId := timestamp+"_"+randomStr
  40. //
  41. // if img[11] == 'j' {
  42. // img = img[23:]
  43. // path = fmt.Sprintf("/img/%s.jpg", imgId)
  44. // } else if img[11] == 'p' {
  45. // img = img[22:]
  46. // path = fmt.Sprintf("/img/%s.png", imgId)
  47. // } else if img[11] == 'g' {
  48. // img = img[22:]
  49. // path = fmt.Sprintf("/img/%s.gif", imgId)
  50. // } else {
  51. // fmt.Println("不支持该文件类型")
  52. // }
  53. //
  54. // data, err := enc.DecodeString(img)
  55. // if err != nil {
  56. // log.Println(err.Error())
  57. // }
  58. // // 图片写入文件
  59. // f, _ := os.OpenFile(path, os.O_RDWR|os.O_CREATE, os.ModePerm)
  60. // defer f.Close()
  61. // if _, err := f.Write(data); err != nil {
  62. // log.Println(err)
  63. // }
  64. // //记录图片保存的地址
  65. // path = "https://qmplusimg.henrongyi.top" + path
  66. // person.Img = path
  67. //
  68. //}
  69. //数据库插入
  70. return global.GVA_DB.Table("responsible_person").Omit("create_time", "update_time").Create(&person).Error
  71. }
  72. //删除负责人
  73. func (r *ResponsiblePersonService) DeleteResponsiblePerson(person typeManage.ResponsiblePerson) (err error) {
  74. var entity typeManage.ResponsiblePerson
  75. err = global.GVA_DB.Table("responsible_person").Where("id = ?", person.Id).First(&entity).Error
  76. if errors.Is(err, gorm.ErrRecordNotFound) {
  77. return errors.New("未找到记录,删除失败")
  78. }
  79. return global.GVA_DB.Table("responsible_person").Delete(&entity).Error
  80. }
  81. //批量删除
  82. func (r *ResponsiblePersonService) DeleteResponsiblePersonsByIds(ids request.IdsReq) (err error) {
  83. err = global.GVA_DB.Table("responsible_person").Delete(&[]typeManage.ResponsiblePerson{}, "id in ?", ids.Ids).Error
  84. return err
  85. }
  86. //更改记录
  87. func (r *ResponsiblePersonService) UpdateResponsiblePerson(person typeManage.ResponsiblePerson) (err error) {
  88. err = global.GVA_DB.Table("responsible_person").Where("id != ? and name = ?", person.Id, person.Name).First(&typeManage.ResponsiblePerson{}).Error
  89. if !errors.Is(err, gorm.ErrRecordNotFound) {
  90. return errors.New("已存在相同名字,无法更改")
  91. }
  92. return global.GVA_DB.Table("responsible_person").Updates(&person).Error
  93. }
  94. //通过id查询负责人
  95. func (r *ResponsiblePersonService) GetResponsiblePersonById(id int) (person typeManage.ResponsiblePerson, err error) {
  96. err = global.GVA_DB.Table("responsible_person").Where("id = ?", id).First(&person).Error
  97. return
  98. }
  99. //条件查询负责人
  100. func(r *ResponsiblePersonService) GetResponsiblePerson(person typeManage.ResponsiblePerson, info request.PageInfo, order string, desc bool) (list interface{}, total int64, err error) {
  101. //获取分页数据
  102. limit := info.PageSize
  103. offset := (info.Page - 1) * info.PageSize
  104. //绑定操作结构体
  105. db := global.GVA_DB.Table("responsible_person").Model(&typeManage.ResponsiblePerson{})
  106. var personList []typeManage.ResponsiblePerson
  107. //条件查询
  108. if person.Name != "" {
  109. db.Where("name like ?","%"+person.Name+"%")
  110. }
  111. //先过滤在排序
  112. if err = db.Count(&total).Error;err != nil{
  113. return personList, total, err
  114. } else {
  115. //分页
  116. db.Limit(limit).Offset(offset)
  117. //判断是否有排序字段
  118. if order != ""{
  119. var orderStr string
  120. orderMap := make(map[string]bool, 1)
  121. orderMap["create_time"] = true
  122. if orderMap[order] {
  123. //合法排序字符
  124. if desc {
  125. orderStr = order + " desc"
  126. } else {
  127. orderStr = order
  128. }
  129. } else {
  130. //传入排序字段非法
  131. err = fmt.Errorf("传入非法字段 %v", order)
  132. return personList, total, err
  133. }
  134. err = db.Order(orderStr).Find(&personList).Error
  135. } else {
  136. //默认按照名字升序排序
  137. err = db.Order("name").Find(&personList).Error
  138. }
  139. }
  140. return personList, total, err
  141. }