guodj %!s(int64=4) %!d(string=hai) anos
pai
achega
f59b297ea0

+ 19 - 0
handler/meeting.go

@@ -137,3 +137,22 @@ func (m *Meeting) Delete(ctx context.Context, req *model.MeetingReq, rsp *comm_d
 	rsp.Msg = msg
 	return nil
 }
+
+func (m *Meeting) ShortList(ctx context.Context, req interface{}, rsp *comm_def.CommonMsg) error {
+	tenant, err := micro_srv.GetTenant(ctx)
+	if err != nil {
+		return err
+	}
+	g.Log().Info("Received Meeting.Delete request @ " + tenant)
+
+	list, err := meeting.NewSrv(tenant).ShortList()
+	_, err, code, msg := myerrors.CheckError(err)
+	if err != nil {
+		return err
+	}
+
+	rsp.Data = list
+	rsp.Code = code
+	rsp.Msg = msg
+	return nil
+}

+ 1 - 1
model/internal/meeting.go

@@ -10,7 +10,7 @@ import (
 
 // Meeting is the golang structure for table meeting.
 type Meeting struct {
-	Id          int         `orm:"Id,primary"  json:"id"`            //
+	Id          int         `orm:"Id"  json:"id"`                    //
 	CreatedBy   string      `orm:"CreatedBy"   json:"created_by"`    // 创建人姓名
 	CreatedAt   *gtime.Time `orm:"CreatedAt"   json:"created_at"`    // 创建时间
 	UpdatedAt   *gtime.Time `orm:"UpdatedAt"   json:"updated_at"`    // 更新时间

+ 1 - 1
model/internal/meeting_reservation.go

@@ -10,7 +10,7 @@ import (
 
 // MeetingReservation is the golang structure for table meeting_reservation.
 type MeetingReservation struct {
-	Id                 uint        `orm:"Id,primary"         json:"id"`                   // 主键ID
+	Id                 uint        `orm:"Id"         json:"id"`                           // 主键ID
 	CreatedBy          string      `orm:"CreatedBy"          json:"created_by"`           // 创建人姓名
 	CreatedAt          *gtime.Time `orm:"CreatedAt"          json:"created_at"`           // 创建时间
 	UpdatedAt          *gtime.Time `orm:"UpdatedAt"          json:"updated_at"`           // 更新时间

+ 23 - 3
service/meeting/meeting.go

@@ -4,6 +4,7 @@ import (
 	"dashoo.cn/micro_libary/request"
 	"errors"
 	"github.com/gogf/gf/util/gconv"
+	"lims_reservation/common"
 	"lims_reservation/dao"
 	"lims_reservation/model"
 	"lims_reservation/service"
@@ -49,7 +50,7 @@ func (m Service) List(req model.ListReq) ([]model.Meeting, int, error) {
 	}
 
 	if req.Value != "" {
-		entityModel = entityModel.Order(req.Value, req.Type)
+		entityModel = entityModel.Order(common.Snake2Orm(model.Meeting{}, req.Value), req.Type)
 	}
 	res, err := entityModel.Page(req.Current, req.Size).FindAll()
 	if err != nil {
@@ -128,11 +129,30 @@ func (m Service) Get(id int) (*model.Meeting, error) {
 }
 
 func (m Service) Delete(id int) error {
-	_, err := m.Dao.WherePri(id).Delete()
+	// 判断是否有预约
+	exist, err := m.Dao.DB.Model("meeting_reservation").Where("EntityId", id).
+		Where("Status", 1).Count()
 	if err != nil {
 		return err
 	}
-	return nil
+	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 校验是否存在

+ 10 - 8
service/reservation/reservation.go

@@ -36,22 +36,23 @@ func (s Service) List(req model.ListReq) ([]model.List, int, error) {
 	if req.Entity != nil {
 		entity := new(model.ReservationReq)
 		gconv.Struct(req.Entity, entity)
+		tableSql := s.Dao.Table + "."
 		if entity.Title != "" {
-			entityModel = entityModel.WhereLike(s.Dao.Columns.Title, "%"+entity.Title+"%")
+			entityModel = entityModel.WhereLike(tableSql+s.Dao.Columns.Title, "%"+entity.Title+"%")
 		}
 		if entity.EntityId != 0 {
-			entityModel = entityModel.Where(s.Dao.Columns.EntityId, entity.EntityId)
+			entityModel = entityModel.Where(tableSql+s.Dao.Columns.EntityId, entity.EntityId)
 		}
 		if entity.UserName != "" {
-			entityModel = entityModel.WhereLike(s.Dao.Columns.UserName, "%"+entity.UserName+"%")
+			entityModel = entityModel.WhereLike(tableSql+s.Dao.Columns.UserName, "%"+entity.UserName+"%")
 		}
 		// 预约状态(1:预定   2:取消)
 		if entity.Status != 0 {
-			entityModel = entityModel.Where(s.Dao.Columns.Status, entity.Status)
+			entityModel = entityModel.Where(tableSql+s.Dao.Columns.Status, entity.Status)
 		}
 		// 预约时间
 		if len(entity.TimeSplit) == 2 {
-			entityModel = entityModel.WhereBetween(s.Dao.Columns.Status, entity.TimeSplit[0], entity.TimeSplit[1])
+			entityModel = entityModel.WhereBetween(tableSql+s.Dao.Columns.StartTime, entity.TimeSplit[0], entity.TimeSplit[1])
 		}
 	}
 	total, err := entityModel.Count()
@@ -62,7 +63,7 @@ func (s Service) List(req model.ListReq) ([]model.List, int, error) {
 		return nil, 0, nil
 	}
 	if req.Value != "" {
-		entityModel = entityModel.Order(req.Value, req.Type)
+		entityModel = entityModel.Order(s.Dao.Table+"."+common.Snake2Orm(model.MeetingReservation{}, req.Value), req.Type)
 	}
 	res, err := entityModel.Page(req.Current, req.Size).
 		Fields("meeting_reservation.*", "meeting.Name", "base_user.DepartmentName").
@@ -179,6 +180,7 @@ func (s Service) check(req model.ReservationReq) error {
 	// 校验时间内是否有 预约
 	exist, err := s.Dao.M.WhereBetween(s.Dao.Columns.StartTime, req.StartTime, req.EndTime).
 		WhereBetween(s.Dao.Columns.EndTime, req.StartTime, req.EndTime).
+		Where(s.Dao.Columns.EntityId, req.EntityId).
 		Where(s.Dao.Columns.Status, 1).Count()
 	if err != nil {
 		return err
@@ -287,8 +289,8 @@ func (s Service) getCurrentWeekReservation(ctx context.Context, req model.Reserv
 	resultList := make([]model.ReservationList, 0)
 	for _, v := range list {
 		timeLong := v.EndTime.Sub(v.StartTime).Hours()
-		grids := int(timeLong * 2)
-		for i := 0; i <= grids; i++ {
+
+		for i := 0; i <= int(timeLong); i++ {
 			startAt := v.StartTime.Add(time.Duration(i) * 30 * time.Minute)
 			resultList = append(resultList, model.ReservationList{
 				Day:       v.StartTime.Day(),

+ 15 - 0
test/meeting.http

@@ -90,4 +90,19 @@ Authorization: Bearer ajg7o1Dts1JrKCm6VtgyuuaYbUIiirXxI5+6WzYnC7gWl+43NdKq6LbWxU
 {
   "id": 1
 }
+###
+
+### 查看短列表
+POST http://192.168.0.63:9981/dashoo.reservation.0.1-guodj
+Content-Type: application/json
+X-RPCX-SerializeType: 1
+X-RPCX-ServicePath: Meeting
+X-RPCX-ServiceMethod: ShortList
+Tenant:CU7zm9WhZm
+SrvEnv: dev
+Authorization: Bearer LygMayNczyP8dlrHOmq+/zjw1/jzxfzELII5bN0syADTzKW0pfMr7sLc+QzOgxuiunge75ja+EwFj88kDdDnCg==
+
+{
+  "null_params": 1
+}
 ###