| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- package controller
- import (
- "go-template/business/dto"
- "go-template/business/exception"
- "strconv"
- "time"
- "gitea.ckfah.com/cjjy/gocommon/pkg/common"
- "gitea.ckfah.com/cjjy/gocommon/pkg/logger"
- "gitea.ckfah.com/cjjy/gocommon/pkg/net/engines"
- )
- type reportController struct {
- }
- func NewReportController() *reportController {
- return new(reportController)
- }
- // 普通请求
- func (rc *reportController) ReportInfo(ctx *engines.Context) {
- request := new(dto.ReportInfoRequest)
- err := ctx.ShouldBindJSON(request)
- if err != nil {
- logger.Warnc(ctx, "[ReportInfo] bind params err,err=%v", err)
- common.FailJson(ctx, exception.ParamsBindError)
- return
- }
- logger.Infoc(ctx, "[ReportInfo] start,request=%+v", request)
- result, cerr := reportService.ReportInfo(ctx, &request.Params)
- if cerr != nil {
- logger.Warnc(ctx, "[ReportInfo] end err,err=%v", cerr)
- common.FailJson(ctx, cerr)
- return
- }
- logger.Infoc(ctx, "[ReportInfo] end,result=%+v", result)
- common.SuccessJson(ctx, result)
- }
- // 分页请求查询
- func (rc *reportController) ReportList(ctx *engines.Context) {
- request := new(dto.ReportListRequest)
- err := ctx.ShouldBindJSON(request)
- if err != nil {
- logger.Warnc(ctx, "[ReportList] bind params err,err=%v", err)
- common.FailJson(ctx, exception.ParamsBindError)
- return
- }
- logger.Infoc(ctx, "[ReportList] start,request=%+v", request)
- result, cerr := reportService.ReportList(ctx, &request.Params)
- if cerr != nil {
- logger.Warnc(ctx, "[ReportList] end err,err=%v", cerr)
- common.FailJson(ctx, cerr)
- return
- }
- logger.Infoc(ctx, "[ReportList] end,result=%+v", result)
- common.SuccessJson(ctx, result)
- }
- /**
- 下载excel文件
- url: http://localhost:8080/go-template/download/xlsx/file?row=1000&column=12&&sheet=2
- */
- func (rc *reportController) DownLoadXlsxFile(ctx *engines.Context) {
- // get请求的参数请使用 ctx.Query
- rowStr := ctx.Query("row")
- columnStr := ctx.Query("column")
- sheetStr := ctx.Query("sheet")
- row, err := strconv.ParseInt(rowStr, 10, 64)
- if err != nil {
- logger.Warnc(ctx, "[DownLoadXlsxFile] start,bind params find err, err=%v", err)
- common.FailJson(ctx, exception.ParamsBindError)
- return
- }
- column, err := strconv.ParseInt(columnStr, 10, 64)
- if err != nil {
- logger.Warnc(ctx, "[DownLoadXlsxFile] start,bind params find err, err=%v", err)
- common.FailJson(ctx, exception.ParamsBindError)
- return
- }
- sheet, err := strconv.ParseInt(sheetStr, 10, 64)
- if err != nil {
- logger.Warnc(ctx, "[DownLoadXlsxFile] start,bind params find err, err=%v", err)
- common.FailJson(ctx, exception.ParamsBindError)
- return
- }
- params := dto.DownLoadXlsxFileParams{
- Row: int(row),
- Column: int(column),
- Sheet: int(sheet),
- }
- logger.Infoc(ctx, "[DownLoadXlsxFile] start,request=%+v", ¶ms)
- if err := reportService.DownLoadXlsxFile(ctx, ctx.Writer, ¶ms); err != nil {
- logger.Warnc(ctx, "[DownLoadXlsxFile] end err,err=%v", err)
- common.FailJson(ctx, err)
- return
- }
- logger.Infoc(ctx, "[DownLoadXlsxFile] end success")
- }
- /**
- 下载csv文件
- url: http://localhost:8080/go-template/download/csv/file?row=10000&column=10
- */
- func (rc *reportController) DownLoadCsvFile(ctx *engines.Context) {
- // get请求的参数请使用 ctx.Query
- rowStr := ctx.Query("row")
- columnStr := ctx.Query("column")
- row, err := strconv.ParseInt(rowStr, 10, 64)
- if err != nil {
- logger.Warnc(ctx, "[DownLoadCsvFile] start,bind params find err, err=%v", err)
- common.FailJson(ctx, exception.ParamsBindError)
- return
- }
- column, err := strconv.ParseInt(columnStr, 10, 64)
- if err != nil {
- logger.Warnc(ctx, "[DownLoadCsvFile] start,bind params find err, err=%v", err)
- common.FailJson(ctx, exception.ParamsBindError)
- return
- }
- params := dto.DownLoadCsvFileParams{
- Row: int(row),
- Column: int(column),
- }
- logger.Infoc(ctx, "[DownLoadCsvFile] start,request=%+v", ¶ms)
- if err := reportService.DownLoadCsvFile(ctx, ctx.Writer, ¶ms); err != nil {
- logger.Warnc(ctx, "[DownLoadCsvFile] end err,err=%v", err)
- common.FailJson(ctx, err)
- return
- }
- logger.Infoc(ctx, "[DownLoadCsvFile] end success")
- }
- /**
- 下载excel文件
- url: http://localhost:8080/go-template/download/xlsx/file?row=1000&column=12&&sheet=2
- */
- func (rc *reportController) UploadXlsxFile(ctx *engines.Context) {
- // 参数为 sheet_name
- sheetName := ctx.Request.FormValue("sheet_name")
- params := dto.UploadXlsxFileParams{
- SheetName: sheetName,
- }
- logger.Infoc(ctx, "[UploadXlsxFile] start, params=%v", ¶ms)
- // 首先拿到 参数为 file的文件
- fileDesc, err := ctx.FormFile("file")
- if err != nil {
- logger.Warnc(ctx, "[UploadXlsxFile] get file err, err=%v", err)
- common.FailJson(ctx, exception.DefaultError(err))
- return
- }
- file, err := fileDesc.Open()
- if err != nil {
- logger.Errorc(ctx, "[UploadXlsxFile] open file err, err=%v", err)
- common.FailJson(ctx, exception.DefaultError(err))
- return
- }
- // 记得关闭流
- defer file.Close()
- // 处理业务
- response, cerror := reportService.UploadXlsxFile(ctx, file, ¶ms)
- if cerror != nil {
- logger.Errorc(ctx, "[UploadXlsxFile] end find err, err=%v", cerror)
- common.FailJson(ctx, cerror)
- }
- logger.Infoc(ctx, "[UploadXlsxFile] end,result=%+v", response)
- common.SuccessJson(ctx, response)
- return
- }
- // 发送MQ消息
- func (rc *reportController) SendMQ(ctx *engines.Context) {
- request := new(dto.SendMQRequest)
- err := ctx.ShouldBindJSON(request)
- if err != nil {
- logger.Warnc(ctx, "[SendMQ] bind params err,err=%v", err)
- common.FailJson(ctx, exception.ParamsBindError)
- return
- }
- logger.Infoc(ctx, "[SendMQ] start,request=%+v", request)
- result, cerr := reportService.SendMQ(ctx, &request.Params)
- if cerr != nil {
- logger.Warnc(ctx, "[SendMQ] end err,err=%v", cerr)
- common.FailJson(ctx, cerr)
- return
- }
- logger.Infoc(ctx, "[SendMQ] end,result=%+v", result)
- common.SuccessJson(ctx, result)
- }
- /**
- 模拟超时请看 access_log
- url: http://localhost:8080/go-template/timeout?sleep=25
- */
- func (rc *reportController) SleepTimeout(ctx *engines.Context) {
- sleepStr := ctx.Query("sleep")
- sleepSeconds, err := strconv.ParseInt(sleepStr, 10, 64)
- if err != nil {
- logger.Warnc(ctx, "[SleepTimeout] start,bind params find err, err=%v", err)
- common.FailJson(ctx, exception.ParamsBindError)
- return
- }
- logger.Infoc(ctx, "[SleepTimeout] start, sleep=%sm", sleepSeconds)
- time.Sleep(time.Second * time.Duration(sleepSeconds))
- logger.Infoc(ctx, "[SleepTimeout] end success !")
- common.SuccessJson(ctx, nil)
- }
- /**
- 模拟panic 请看 access_log 和 error log
- url: http://localhost:8080/go-template/panic
- */
- func (rc *reportController) TestPanic(ctx *engines.Context) {
- logger.Infoc(ctx, "[SleepTimeout] start")
- panic("test panic !!!")
- }
|