作者 陈志颖

test:排行榜管理

... ... @@ -67,10 +67,10 @@ func (listIntervalService *ListIntervalService) CreateListInterval(createListInt
startTime := time.Date(createListIntervalCommand.ListIntervalStartTime.Local().Year(), createListIntervalCommand.ListIntervalStartTime.Local().Month(), createListIntervalCommand.ListIntervalStartTime.Local().Day(), 0, 0, 0, 0, time.Local)
endTime := time.Date(createListIntervalCommand.ListIntervalEndTime.Local().Year(), createListIntervalCommand.ListIntervalEndTime.Local().Month(), createListIntervalCommand.ListIntervalEndTime.Local().Day(), 23, 59, 59, 0, time.Local)
// 判断年榜时间是否重叠
if len(listIntervals) > 0 {
ok := listIntervalDao.RankPeriodCheckTime(startTime, endTime, 0, listIntervals[0].CompanyId)
fmt.Print(ok, "\n")
if ok {
ok := listIntervalDao.RankPeriodCheckTime(startTime.Local().Unix(), endTime.Local().Unix(), 0, listIntervals[0].CompanyId)
if !ok {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "年榜时间不能重叠")
}
}
... ... @@ -89,33 +89,6 @@ func (listIntervalService *ListIntervalService) CreateListInterval(createListInt
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
}
return listInterval, nil
// 判断年榜时间是否和上个年榜重叠
//if len(listIntervals) > 0 {
//if startTime.Before(listIntervals[0].IntervalEndTime.Local()) || startTime.Equal(listIntervals[0].IntervalEndTime.Local()){
// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "年榜开始时间必须大于上一个年榜结束时间")
//} else {
// // 创建排行榜时间命令
// newListInterval := &domain.ListInterval {
// CompanyId: createListIntervalCommand.CompanyId,
// IntervalStartTime: startTime,
// IntervalEndTime: endTime,
// }
//
// // 保存排行榜时间
// listInterval, err := listIntervalRepository.Save(newListInterval)
// if err != nil {
// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
// }
// if err := transactionContext.CommitTransaction(); err != nil {
// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
// }
//
// return listInterval, nil
//}
//} else {
//}
}
// 返回排行榜时间列表
... ... @@ -200,6 +173,7 @@ func (listIntervalService *ListIntervalService) UpdateListInterval(updateListInt
if err := updateListIntervalCommand.ValidateCommand(); err != nil {
return nil, application.ThrowError(application.ARG_ERROR, err.Error())
}
transactionContext, err := factory.CreateTransactionContext(nil)
if err != nil {
return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
... ... @@ -240,18 +214,6 @@ func (listIntervalService *ListIntervalService) UpdateListInterval(updateListInt
return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateListIntervalCommand.ListIntervalId)))
}
//// 获取所有年榜
//listListIntervalQuery := &query.ListListIntervalQuery {
// CompanyId: listIntervalFound.CompanyId,
//}
////获取所有年榜
//_, listIntervals, err := listIntervalRepository.Find(tool_funs.SimpleStructToMap(listListIntervalQuery))
//if err != nil {
// 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)
... ... @@ -259,11 +221,13 @@ func (listIntervalService *ListIntervalService) UpdateListInterval(updateListInt
updateListIntervalCommand.ListIntervalStartTime = startTime
updateListIntervalCommand.ListIntervalEndTime = endTime
ok := listIntervalDao.RankPeriodCheckTime(startTime, endTime, listIntervalFound.ListIntervalId, listIntervalFound.CompanyId)
if ok {
// 判断年榜时间是否重叠
ok := listIntervalDao.RankPeriodCheckTime(startTime.Unix(), endTime.Unix(), listIntervalFound.ListIntervalId, listIntervalFound.CompanyId)
if !ok {
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())
}
... ... @@ -275,69 +239,6 @@ func (listIntervalService *ListIntervalService) UpdateListInterval(updateListInt
}
return listIntervalUpdated, nil
}
// 判断年榜时间是否和上个年榜重叠
//if len(listIntervals) > 0 {
// // 找到当前排行榜所处位置
// for i, listInterval := range listIntervals {
// if listInterval.ListIntervalId == listIntervalFound.ListIntervalId {
// currentListIntervalIndex = i
// }
// }
//
// if currentListIntervalIndex == 0 && len(listIntervals) > 1 { // 当前排行榜在首位,且不止一个活动
// // 上一个活动开始结束时间
// //lastIntervalStartTime := listIntervals[currentListIntervalIndex + 1].IntervalStartTime.Local()
// lastIntervalEndTime := listIntervals[currentListIntervalIndex + 1].IntervalEndTime.Local()
//
// if startTime.Before(lastIntervalEndTime) || startTime.Equal(lastIntervalEndTime) { // 开始时间重叠判断
// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "年榜时间不能重叠")
// }
// } else if currentListIntervalIndex != 0 { // 当前排行榜不在首位
// fmt.Print(currentListIntervalIndex, "\n")
//
// // 上一个年榜开始结束时间
// lastIntervalStartTime := listIntervals[currentListIntervalIndex + 1].IntervalStartTime.Local()
// lastIntervalEndTime := listIntervals[currentListIntervalIndex + 1].IntervalEndTime.Local()
// fmt.Print(lastIntervalEndTime,"\n")
//
// // 下一个年榜开始结束时间
// nextIntervalStartTime := listIntervals[currentListIntervalIndex - 1].IntervalStartTime.Local()
// fmt.Print(nextIntervalStartTime, "\n")
// nextIntervalEndTime := listIntervals[currentListIntervalIndex - 1].IntervalEndTime.Local()
//
// fmt.Print(startTime, "\n")
// fmt.Print(endTime, "\n")
//
// if startTime.After(lastIntervalStartTime) && startTime.Before(lastIntervalEndTime) || endTime.After(nextIntervalStartTime) && endTime.Before(nextIntervalEndTime) {
// 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())
// }
// if listIntervalUpdated, err := listIntervalRepository.Save(listIntervalFound); err != nil {
// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
// } else {
// if err := transactionContext.CommitTransaction(); err != nil {
// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
// }
// return listIntervalUpdated, nil
// }
//} else { // 正常更新
// if err := listIntervalFound.Update(tool_funs.SimpleStructToMap(updateListIntervalCommand)); err != nil {
// return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
// }
// if listIntervalUpdated, err := listIntervalRepository.Save(listIntervalFound); err != nil {
// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
// } else {
// if err := transactionContext.CommitTransaction(); err != nil {
// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
// }
// return listIntervalUpdated, nil
// }
//}
}
// 移除排行榜时间
... ...
... ... @@ -4,7 +4,6 @@ import (
"fmt"
"github.com/go-pg/pg"
pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
"time"
)
type ListIntervalDao struct {
... ... @@ -12,33 +11,37 @@ type ListIntervalDao struct {
}
// 榜单时间管理
func (dao *ListIntervalDao) RankPeriodCheckTime(startTime time.Time, endTime time.Time, idNot int, companyId int) bool {
func (dao *ListIntervalDao) RankPeriodCheckTime(startTime int64, endTime int64, idNot int, companyId int) bool {
fmt.Print(startTime, "\n")
fmt.Print(endTime, "\n")
var count int
tx := dao.transactionContext.PgTx
_, err := tx.Query(
pg.Scan(),
_, err := tx.QueryOne(
pg.Scan(&count),
`SELECT count(*) FROM list_intervals
WHERE id <> ?
AND company_id = ?
AND
(
( to_char(list_interval_start_time AT TIME ZONE 'CCT' ,'YYYY-MM-DD HH24:MI:SS') BETWEEN ? AND ?)
( extract(epoch from list_interval_start_time) BETWEEN ? AND ?)
OR
( to_char(list_interval_end_time AT TIME ZONE 'CCT' ,'YYYY-MM-DD HH24:MI:SS') BETWEEN ? AND ?)
( extract(epoch from list_interval_end_time) BETWEEN ? AND ?)
OR
(? BETWEEN to_char(list_interval_start_time AT TIME ZONE 'CCT' ,'YYYY-MM-DD HH24:MI:SS') AND to_char(list_interval_end_time AT TIME ZONE 'CCT' ,'YYYY-MM-DD HH24:MI:SS'))
(? BETWEEN extract(epoch from list_interval_start_time) AND extract(epoch from list_interval_end_time))
OR
(? BETWEEN to_char(list_interval_start_time AT TIME ZONE 'CCT' ,'YYYY-MM-DD HH24:MI:SS') AND to_char(list_interval_end_time AT TIME ZONE 'CCT' ,'YYYY-MM-DD HH24:MI:SS'))
(? BETWEEN extract(epoch from list_interval_start_time) AND extract(epoch from list_interval_end_time))
)
LIMIT 1 `,
idNot, companyId, startTime, endTime, startTime, endTime, startTime, endTime)
if err != nil {
fmt.Errorf(err.Error())
fmt.Print(err.Error(), "\n")
return true
return false
}
if count > 0 {
fmt.Print(count, "\n")
return false
}
return true
}
func NewListIntervalDao(transactionContext *pgTransaction.TransactionContext) (*ListIntervalDao, error) {
... ...