meeting.go 4.0 KB

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