meeting.go 4.4 KB

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