package settle_account_main import ( "dashoo.cn/micro_libary/request" "errors" "fmt" "github.com/gogf/gf/os/gtime" "github.com/gogf/gf/util/gconv" "lims_adapter/dao/account" "lims_adapter/model" accountModel "lims_adapter/model/account" ) // Service 会议室服务 type Service struct { Dao *account.SettleAccountMainDao Tenant string } // NewSrv 服务初始化 func NewService(tenant string) Service { return Service{Dao: account.NewSettleAccountMainDao(tenant), Tenant: tenant} } // List 会议室列表 func (s Service) List(req model.ListReq) ([]accountModel.SettleAccountMain, int, error) { entityModel := s.Dao.M where := "1=1" if req.Entity != nil { entity := new(accountModel.SettleAccountMainReq) err := gconv.Struct(req.Entity, entity) if err != nil { return nil, 0, err } if entity.MainUserId != 0 { where += fmt.Sprintf(" AND MainUserId='%v'", entity.MainUserId) } if entity.MainUser != "" { where += fmt.Sprintf(" AND MainUser LIKE '%%%v%%'", entity.MainUser) } if entity.AttachUserId != 0 { where += fmt.Sprintf(" AND AttachUserId='%v'", entity.AttachUserId) } if entity.AttachUser != "" { where += fmt.Sprintf(" AND AttachUser LIKE '%%%v%%'", entity.AttachUser) } if entity.InstrumentId != 0 { where += fmt.Sprintf(" AND InstrumentId='%v'", entity.InstrumentId) } if entity.AppointUserId != 0 { where += fmt.Sprintf(" AND AppointUserId='%v'", entity.AppointUserId) } if entity.AppointUser != "" { where += fmt.Sprintf(" AND AppointUser LIKE '%%%v%%'", entity.AppointUser) } if entity.Status != "" { where += fmt.Sprintf(" AND Status='%v'", entity.Status) } if entity.SettleStatus != "" { where += fmt.Sprintf(" AND SettleStatus='%v'", entity.SettleStatus) } if entity.FeeType != "" { where += fmt.Sprintf(" AND FeeType='%v'", entity.FeeType) } if entity.AppointStartDate != "" && entity.AppointEndDate != "" { where += fmt.Sprintf(" AND AppointStartDate>'%v' AND AppointEndDate<'%v'", entity.AppointStartDate, entity.AppointEndDate) } } entityModel = entityModel.Where(where) total, err := entityModel.Count() if err != nil { return nil, 0, err } if total == 0 { return nil, 0, nil } res, err := entityModel.Page(req.Current, req.Size).Order("settle_account_main.CreateOn DESC").Fields("settle_account_main.*").FindAll() if err != nil { return nil, 0, err } if res.IsEmpty() { return nil, 0, nil } list := make([]accountModel.SettleAccountMain, 0) err = res.Structs(&list) if err != nil { return nil, 0, err } return list, total, nil } // 新增 func (s Service) Add(req accountModel.AccountMainAddReq, user request.UserInfo) error { now := gtime.Now() // 获取当前时间 // 更新必要信息 req.Main.CreateUserId = int(user.Id) req.Main.CreateBy = user.RealName req.Main.CreateOn = now req.Main.UpdateUserId = int(user.Id) req.Main.UpdateBy = user.RealName req.Main.UpdateOn = now tx, err := s.Dao.DB.Begin() if err != nil { return err } result, err := tx.Insert("settle_account_main", req.Main) if err != nil { tx.Rollback() return err } id , _ := result.LastInsertId() for index := range req.Details { // 更新必要信息 req.Details[index].CreateUserId = int(user.Id) req.Details[index].CreateBy = user.RealName req.Details[index].CreateOn = now req.Details[index].UpdateUserId = int(user.Id) req.Details[index].UpdateBy = user.RealName req.Details[index].UpdateOn = now req.Details[index].Pid = int(id) } _, err = tx.Insert("settle_account_detail", req.Details) if err != nil { tx.Rollback() return err } return tx.Commit() } // 确认 func (s Service) Confirm(req accountModel.AccountMainConfirmReq, user request.UserInfo) error { if req.MainId == 0 { return errors.New("参数缺失") } _, err := s.Dao.M.Update(fmt.Sprintf("SettleStatus='1',SettleUserId='%v',SettleUser='%v',SettleDate='%v'", user.Id, user.RealName, gtime.Now()), fmt.Sprintf("Id='%v'", req.MainId)) return err }