meeting.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package meeting
  2. import (
  3. "dashoo.cn/micro_libary/request"
  4. "errors"
  5. "github.com/gogf/gf/util/gconv"
  6. "lims_reservation/dao"
  7. "lims_reservation/model"
  8. "lims_reservation/service"
  9. )
  10. // Service 会议室服务
  11. type Service struct {
  12. Dao *dao.MeetingDao
  13. Tenant string
  14. }
  15. // NewSrv 服务初始化
  16. func NewSrv(tenant string) Service {
  17. return Service{Dao: dao.NewMeetingDao(tenant), Tenant: tenant}
  18. }
  19. // List 会议室列表
  20. func (m Service) List(req model.ListReq) ([]model.Meeting, int, error) {
  21. entityModel := m.Dao.M
  22. if req.Entity != nil {
  23. entity := new(model.MeetingReq)
  24. gconv.Struct(req.Entity, entity)
  25. if entity.Name != "" {
  26. entityModel = entityModel.WhereLike(m.Dao.Columns.Name, "%"+entity.Name+"%")
  27. }
  28. if entity.Code != "" {
  29. entityModel = entityModel.WhereLike(m.Dao.Columns.Code, "%"+entity.Code+"%")
  30. }
  31. if entity.Scale != 0 {
  32. entityModel = entityModel.Where(m.Dao.Columns.Scale, entity.Scale)
  33. }
  34. if entity.Location != "" {
  35. entityModel = entityModel.WhereLike(m.Dao.Columns.Location, "%"+entity.Location+"%")
  36. }
  37. }
  38. total, err := entityModel.Count()
  39. if err != nil {
  40. return nil, 0, err
  41. }
  42. if total == 0 {
  43. return nil, 0, nil
  44. }
  45. if req.Value != "" {
  46. entityModel = entityModel.Order(req.Value, req.Type)
  47. }
  48. res, err := entityModel.Page(req.Current, req.Size).FindAll()
  49. if err != nil {
  50. return nil, 0, err
  51. }
  52. if res.IsEmpty() {
  53. return nil, 0, nil
  54. }
  55. list := make([]model.Meeting, 0)
  56. res.Structs(&list)
  57. return list, total, nil
  58. }
  59. func (m Service) Add(userInfo request.UserInfo, req model.MeetingReq) error {
  60. entity := new(model.Meeting)
  61. // 唯一校验
  62. count, err := m.Dao.M.Fields(m.Dao.Columns.Id).Where(m.Dao.Columns.Name, req.Name).FindCount()
  63. if err != nil {
  64. return err
  65. }
  66. if count > 0 {
  67. return service.NameExistsErr
  68. }
  69. count, err = m.Dao.M.Fields(m.Dao.Columns.Id).Where(m.Dao.Columns.Code, req.Code).FindCount()
  70. if err != nil {
  71. return err
  72. }
  73. if count > 0 {
  74. return service.CodeExistsErr
  75. }
  76. gconv.Struct(req, entity)
  77. service.SetCreate(&userInfo, entity)
  78. _, err = m.Dao.M.Insert(entity)
  79. if err != nil {
  80. return err
  81. }
  82. return nil
  83. }
  84. func (m Service) Update(userInfo request.UserInfo, req model.MeetingReq) error {
  85. entity := new(model.Meeting)
  86. // 唯一校验
  87. count, err := m.Dao.M.Fields(m.Dao.Columns.Id).
  88. Where(m.Dao.Columns.Name, req.Name).WhereNot(m.Dao.Columns.Id, req.Id).
  89. FindCount()
  90. if err != nil {
  91. return err
  92. }
  93. if count > 0 {
  94. return service.NameExistsErr
  95. }
  96. count, err = m.Dao.M.Fields(m.Dao.Columns.Id).
  97. Where(m.Dao.Columns.Code, req.Code).WhereNot(m.Dao.Columns.Id, req.Id).
  98. FindCount()
  99. if err != nil {
  100. return err
  101. }
  102. if count > 0 {
  103. return service.CodeExistsErr
  104. }
  105. gconv.Struct(req, entity)
  106. service.SetCreate(&userInfo, entity)
  107. _, err = m.Dao.M.WherePri(req.Id).Update(entity)
  108. if err != nil {
  109. return err
  110. }
  111. return nil
  112. }
  113. func (m Service) Get(id int) (*model.Meeting, error) {
  114. return m.Dao.WherePri(id).FindOne()
  115. }
  116. func (m Service) Delete(id int) error {
  117. _, err := m.Dao.WherePri(id).Delete()
  118. if err != nil {
  119. return err
  120. }
  121. return nil
  122. }
  123. // Exists 校验是否存在
  124. func (m Service) Exists(id int) error {
  125. exist, err := m.Dao.M.WherePri(m.Dao.Columns.Id, id).Count()
  126. if err != nil {
  127. return err
  128. }
  129. if exist <= 0 {
  130. return errors.New("当前会议室不存在,请刷新后重试")
  131. }
  132. return nil
  133. }
  134. func (m Service) ShortList() ([]model.ShortMeeting, error) {
  135. list := make([]model.ShortMeeting, 0)
  136. res, err := m.Dao.M.FindAll()
  137. if err != nil {
  138. return nil, err
  139. }
  140. if res.IsEmpty() {
  141. return nil, nil
  142. }
  143. res.Structs(&list)
  144. return list, nil
  145. }