package controller import ( "github.com/gin-gonic/gin" "strconv" "time" "vote-admin-api/api/dao" "vote-admin-api/api/dto" "vote-admin-api/api/model" "vote-admin-api/api/requests" "vote-admin-api/api/responses" "vote-admin-api/global" "vote-admin-api/utils" ) type System struct{} // GetSystemTime 获取投票时间详情 func (r *System) GetSystemTime(c *gin.Context) { id := c.Param("system_time_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 systemTimeId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取数据 systemTimeDao := dao.SystemTimeDao{} systemTime, err := systemTimeDao.GetSystemTimeById(systemTimeId) if err != nil { responses.FailWithMessage("数据异常", c) return } // 处理返回值 g := dto.GetSystemTimeDto(systemTime) responses.OkWithData(g, c) } // PutSystemTime 修改投票时间 func (b *System) PutSystemTime(c *gin.Context) { systemRequest := requests.SystemRequest{} req := systemRequest.PutSystemTime if err := c.ShouldBind(&req); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(req); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } id := c.Param("system_time_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 systemTimeId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取数据 systemTimeDao := dao.SystemTimeDao{} systemTime, err := systemTimeDao.GetSystemTimeById(systemTimeId) if err != nil { responses.FailWithMessage("数据异常", c) return } // 修改值 systemTimeData := make(map[string]interface{}) // 获取本地时区 location, err := time.LoadLocation("Local") if err != nil { responses.FailWithMessage("修改失败", c) return } t, err := time.ParseInLocation("2006-01-02 15:04:05", req.StartTime, location) if err != nil { responses.FailWithMessage("修改失败", c) return } startTime := model.LocalTime(t) if &startTime != systemTime.StartTime { systemTimeData["start_time"] = req.StartTime } t, err = time.ParseInLocation("2006-01-02 15:04:05", req.EndTime, location) if err != nil { responses.FailWithMessage("修改失败", c) return } endTime := model.LocalTime(t) if &endTime != systemTime.EndTime { systemTimeData["end_time"] = req.EndTime } if len(systemTimeData) > 0 { // 开始事务 tx := global.Db.Begin() defer func() { if r := recover(); r != nil { tx.Rollback() } }() err = systemTimeDao.EditSystemTimeById(tx, systemTimeId, systemTimeData) if err != nil { tx.Rollback() responses.FailWithMessage("操作失败", c) return } tx.Commit() } responses.Ok(c) }