...
|
...
|
@@ -59,7 +59,7 @@ func (listIntervalService *ListIntervalService) CreateListInterval(createListInt |
|
|
|
|
|
// 判断年榜时间是否和上个年榜重叠
|
|
|
if len(listIntervals) > 0 {
|
|
|
if createListIntervalCommand.ListIntervalStartTime.Before(listIntervals[0].IntervalEndTime) || createListIntervalCommand.ListIntervalStartTime.Equal(listIntervals[0].IntervalEndTime){
|
|
|
if startTime.Before(listIntervals[0].IntervalEndTime.Local()) || startTime.Equal(listIntervals[0].IntervalEndTime.Local()){
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "年榜开始时间必须大于上一个年榜结束时间")
|
|
|
} else {
|
|
|
// 创建排行榜时间命令
|
...
|
...
|
@@ -211,6 +211,9 @@ func (listIntervalService *ListIntervalService) UpdateListInterval(updateListInt |
|
|
return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateListIntervalCommand.ListIntervalId)))
|
|
|
}
|
|
|
|
|
|
listIntervalFoundIntervalStartTime := listIntervalFound.IntervalStartTime.Local()
|
|
|
listIntervalFoundIntervalEndTime := listIntervalFound.IntervalEndTime.Local()
|
|
|
|
|
|
// 获取榜单命令
|
|
|
listListIntervalQuery := &query.ListListIntervalQuery {
|
|
|
CompanyId: listIntervalFound.CompanyId,
|
...
|
...
|
@@ -224,16 +227,38 @@ func (listIntervalService *ListIntervalService) UpdateListInterval(updateListInt |
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
|
|
|
}
|
|
|
|
|
|
var currentListIntervalIndex int
|
|
|
|
|
|
startTime := time.Date(updateListIntervalCommand.ListIntervalStartTime.Local().Year(), updateListIntervalCommand.ListIntervalStartTime.Local().Month(), updateListIntervalCommand.ListIntervalStartTime.Local().Day(), 0, 0, 0, 0, time.Local)
|
|
|
endTime := time.Date(updateListIntervalCommand.ListIntervalEndTime.Local().Year(), updateListIntervalCommand.ListIntervalEndTime.Local().Month(), updateListIntervalCommand.ListIntervalEndTime.Local().Day(), 23, 59, 59, 0, time.Local)
|
|
|
|
|
|
// 判断年榜时间是否和上个年榜重叠
|
|
|
if len(listIntervals) > 0 {
|
|
|
for _, listInterval := range listIntervals {
|
|
|
// 排除当前年榜
|
|
|
if !listInterval.IntervalStartTime.Equal(listIntervalFound.IntervalStartTime) && listInterval.IntervalEndTime.Equal(listIntervalFound.IntervalEndTime) {
|
|
|
if updateListIntervalCommand.ListIntervalStartTime.Before(listInterval.IntervalEndTime) && updateListIntervalCommand.ListIntervalStartTime.After(listInterval.IntervalEndTime) { // 时间段重叠判断
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "年榜时间不能重叠")
|
|
|
}
|
|
|
for i, listInterval := range listIntervals {
|
|
|
// 找到当前排行榜及排行榜所处位置
|
|
|
if listInterval.IntervalStartTime.Local().Equal(listIntervalFoundIntervalStartTime) && listInterval.IntervalEndTime.Local().Equal(listIntervalFoundIntervalEndTime) {
|
|
|
currentListIntervalIndex = i
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 判断年榜时间重叠
|
|
|
if currentListIntervalIndex == 0 { // 当前排行榜时间为最新的,更新时开始时间不能小于等于上个活动结束时间
|
|
|
if startTime.Before(listIntervals[currentListIntervalIndex + 1].IntervalEndTime.Local()) || startTime.Equal(listIntervals[currentListIntervalIndex + 1].IntervalEndTime.Local()) { // 开始时间重叠判断
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "年榜时间不能重叠")
|
|
|
}
|
|
|
} else if currentListIntervalIndex > 0 { // 当前排行榜时间非最新,需要和上一个排行榜时间以及下一个排行榜时间对比
|
|
|
|
|
|
// 结束时间不能大于下一个活动开始时间
|
|
|
if endTime.After(listIntervals[currentListIntervalIndex - 1].IntervalStartTime.Local()) || endTime.Equal(listIntervals[currentListIntervalIndex - 1].IntervalEndTime.Local()) { // 判断是否和上一个年榜时间重叠
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "年榜时间不能重叠")
|
|
|
}
|
|
|
|
|
|
// 开始时间不能小于上一个活动结束时间
|
|
|
if startTime.Before(listIntervals[currentListIntervalIndex + 1].IntervalEndTime.Local()) || startTime.Equal(listIntervals[currentListIntervalIndex + 1].IntervalEndTime.Local()) { // 判断和下一个年榜时间是否重叠
|
|
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "年榜时间不能重叠")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if err := listIntervalFound.Update(tool_funs.SimpleStructToMap(updateListIntervalCommand)); err != nil {
|
|
|
return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
|
|
|
}
|
...
|
...
|
|