| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- package meeting
- import (
- "dashoo.cn/micro_libary/request"
- "errors"
- "github.com/gogf/gf/util/gconv"
- "lims_adapter/common"
- "lims_adapter/dao"
- "lims_adapter/model"
- "lims_adapter/service"
- )
- // Service 会议室服务
- type Service struct {
- Dao *dao.MeetingDao
- Tenant string
- }
- // NewSrv 服务初始化
- func NewSrv(tenant string) Service {
- return Service{Dao: dao.NewMeetingDao(tenant), Tenant: tenant}
- }
- // List 会议室列表
- func (m Service) List(req model.ListReq) ([]model.Meeting, int, error) {
- entityModel := m.Dao.M
- if req.Entity != nil {
- entity := new(model.MeetingReq)
- gconv.Struct(req.Entity, entity)
- if entity.Name != "" {
- entityModel = entityModel.WhereLike(m.Dao.Columns.Name, "%"+entity.Name+"%")
- }
- if entity.Code != "" {
- entityModel = entityModel.WhereLike(m.Dao.Columns.Code, "%"+entity.Code+"%")
- }
- if entity.Scale != 0 {
- entityModel = entityModel.Where(m.Dao.Columns.Scale, entity.Scale)
- }
- if entity.Location != "" {
- entityModel = entityModel.WhereLike(m.Dao.Columns.Location, "%"+entity.Location+"%")
- }
- }
- total, err := entityModel.Count()
- if err != nil {
- return nil, 0, err
- }
- if total == 0 {
- return nil, 0, nil
- }
- if req.Value != "" {
- entityModel = entityModel.Order(common.Snake2Orm(model.Meeting{}, req.Value), req.Type)
- } else {
- entityModel = entityModel.Order(service.DefaultSortField, service.DefaultSortType)
- }
- res, err := entityModel.Page(req.Current, req.Size).FindAll()
- if err != nil {
- return nil, 0, err
- }
- if res.IsEmpty() {
- return nil, 0, nil
- }
- list := make([]model.Meeting, 0)
- res.Structs(&list)
- return list, total, nil
- }
- func (m Service) Add(userInfo request.UserInfo, req model.MeetingReq) error {
- entity := new(model.Meeting)
- // 唯一校验
- count, err := m.Dao.M.Fields(m.Dao.Columns.Id).Where(m.Dao.Columns.Name, req.Name).FindCount()
- if err != nil {
- return err
- }
- if count > 0 {
- return service.NameExistsErr
- }
- count, err = m.Dao.M.Fields(m.Dao.Columns.Id).Where(m.Dao.Columns.Code, req.Code).FindCount()
- if err != nil {
- return err
- }
- if count > 0 {
- return service.CodeExistsErr
- }
- gconv.Struct(req, entity)
- service.SetCreate(&userInfo, entity)
- _, err = m.Dao.M.Insert(entity)
- if err != nil {
- return err
- }
- return nil
- }
- func (m Service) Update(userInfo request.UserInfo, req model.MeetingReq) error {
- entity := new(model.Meeting)
- // 唯一校验
- count, err := m.Dao.M.Fields(m.Dao.Columns.Id).
- Where(m.Dao.Columns.Name, req.Name).WhereNot(m.Dao.Columns.Id, req.Id).
- FindCount()
- if err != nil {
- return err
- }
- if count > 0 {
- return service.NameExistsErr
- }
- count, err = m.Dao.M.Fields(m.Dao.Columns.Id).
- Where(m.Dao.Columns.Code, req.Code).WhereNot(m.Dao.Columns.Id, req.Id).
- FindCount()
- if err != nil {
- return err
- }
- if count > 0 {
- return service.CodeExistsErr
- }
- gconv.Struct(req, entity)
- service.SetCreate(&userInfo, entity)
- _, err = m.Dao.M.WherePri(req.Id).Update(entity)
- if err != nil {
- return err
- }
- return nil
- }
- func (m Service) Get(id int) (*model.Meeting, error) {
- return m.Dao.WherePri(id).FindOne()
- }
- func (m Service) Delete(id int) error {
- // 判断是否有预约
- exist, err := m.Dao.DB.Model("meeting_reservation").Where("EntityId", id).
- Where("Status", 1).Count()
- if err != nil {
- return err
- }
- if exist > 0 {
- return errors.New("当前存在正在预约的记录,请取消预约后重试!")
- }
- tx, err := m.Dao.DB.Begin()
- if err != nil {
- return err
- }
- _, err = m.Dao.WherePri(id).Delete()
- if err != nil {
- tx.Rollback()
- return err
- }
- _, err = m.Dao.DB.Model("meeting_reservation").Where("EntityId", id).Delete()
- if err != nil {
- tx.Rollback()
- return err
- }
- return tx.Commit()
- }
- // Exists 校验是否存在
- func (m Service) Exists(id int) error {
- exist, err := m.Dao.M.WherePri(m.Dao.Columns.Id, id).Count()
- if err != nil {
- return err
- }
- if exist <= 0 {
- return errors.New("当前会议室不存在,请刷新后重试")
- }
- return nil
- }
- func (m Service) ShortList() ([]model.ShortMeeting, error) {
- list := make([]model.ShortMeeting, 0)
- res, err := m.Dao.M.Order(m.Dao.Columns.Sort, "DESC").FindAll()
- if err != nil {
- return nil, err
- }
- if res.IsEmpty() {
- return nil, nil
- }
- res.Structs(&list)
- return list, nil
- }
|