作者 陈志颖

test:更新重叠

... ... @@ -185,3 +185,7 @@
BodyData:{}
2020/11/23 11:43:14.139 [D] [server.go:2843] <====Send RequestId:GET./cash-pool/cash-pool?companyId=358.1606102993946891000 BodyData:{"code":0,"data":{"cashPoolId":10,"cash":2001,"companyId":358,"exchangedCash":4,"unExchangeCash":1997,"exchangedSuMoney":3,"unExchangeSuMoney":3498567.67,"rate":1.33,"lastRate":0,"createTime":"2020-11-17T11:02:21.013016+08:00"},"msg":"ok"}
2020/11/23 11:43:14.139 [D] [server.go:1925] | 127.0.0.1| 200 | 192.55553ms| match| GET  /cash-pool/cash-pool r:/cash-pool/cash-pool
2020/11/23 12:12:16.473 [I] [???:0] http server Running on http://:8082
2020/11/23 15:19:26.289 [I] [???:0] http server Running on http://:8082
2020/11/23 15:26:30.018 [I] [???:0] http server Running on http://:8082
2020/11/23 15:32:51.170 [I] [???:0] http server Running on http://:8082
... ...
... ... @@ -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())
}
... ...
... ... @@ -966,15 +966,24 @@ func (cashPoolService *CashPoolService) UpdateExchangeCashActivity(updateExchang
// 更新兑换活动命令已兑换素币
updateExchangeCashActivityCommand.ExchangedSuMoney = activityFound.ExchangedSuMoney
var currentExchangeCashActivityIndex int
// 获取该公司所有兑换现金活动
if _, activities, err := exchangeCashActivityRepository.FindAll(map[string]interface{}{
"companyId": activityFound.CompanyId,
}); err != nil {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
} else {
for _, activity := range activities {
if updateExchangeCashActivityCommand.Deadline.Local().Format("2006-01-02") == activity.Deadline.Local().Format("2006-01-02") {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "兑换活动截止时间不能重合")
for i, activity := range activities {
if activityFound.Deadline.Local().Format("2006-01-02") == activity.Deadline.Local().Format("2006-01-02") {
currentExchangeCashActivityIndex = i
}
}
for i, activity := range activities {
if i != currentExchangeCashActivityIndex {
if updateExchangeCashActivityCommand.Deadline.Local().Format("2006-01-02") == activity.Deadline.Local().Format("2006-01-02") {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "兑换活动截止时间不能重合")
}
}
}
}
... ...