在GVA框架中用go写接口的步骤
在gva框架中如何用Golang写一个完整的接口(场所信息Excel表导出接口)
router–>api–>service(router–>controller–>logic–>dao)
1.router
先在router层里面注册路由,例如:
cdPlaceRoomRouter.POST("exportExcel", cdPlaceRoomApi.CdPlaceRoomExport)
//导出Excel表
2.api
然后在api层中,进行三个步骤。
1.做参数请求和参数校验(post请求需要入参)
2.业务逻辑处理
3.返回逻辑响应
例如:
func (a *CdPlaceRoomApi) CdPlaceRoomExport(c *gin.Context) {var excelInfo cdReq.CdPlaceRoomExcelInfo_ = c.ShouldBindJSON(&excelInfo) //参数绑定filePath := global.GSD_CONFIG.Excel.Dir + excelInfo.FileNamecurUser := utils.GetUser(c)placeList, isAll := dataScope.GetPlaceDataScope(curUser)if err := cdPlaceRoomService.CdPlaceRoomToExcel(excelInfo, filePath, placeList, isAll); err != nil { //业务逻辑处理global.GSD_LOG.Error("导出场所信息excel失败", zap.Error(err), utils.GetRequestID(c))response.FailWithMessage("导出场所信息excel失败", c) //返回响应return}c.Writer.Header().Add("success", "true")c.File(filePath)
}
3.service
在service层中存放业务逻辑的代码。(对数据库进行增删改查)
func (s CdPlaceRoomService) CdPlaceRoomToExcel(room ResCd.CdPlaceRoomExcelInfo, path string, place []string, all bool) (err error) {excel := excelize.NewFile()excel.SetSheetRow("Sheet1", "A1", &[]string{"场所编号","房间号", "隔离房间号", "隔离点楼号", "隔离点楼层号", "状态"})var placeRooms []cdfield.CdPlaceRoomdb := global.GSD_DB.Table("cd_place_rooms")if room.PlaceID!=""{db = db.Where("csbh LIKE ?", room.PlaceID+"%")}if room.RoomNumber!= "" {db = db.Where("fjh LIKE ?", room.RoomNumber+"%")}if room.GLRoomNumber != "" {db = db.Where("gldfjh LIKE ?", room.GLRoomNumber+"%")}if room.BuildingNumber != "" {db = db.Where("lh LIKE ?", room.BuildingNumber+"%")}if room.FloorNumber != "" {db = db.Where("lch LIKE ?", room.FloorNumber+"%")}if room.State != "" {db = db.Where("syzt LIKE ?", room.State+"%")}if !reflect.ValueOf(room.StartTime).IsNil() && !reflect.ValueOf(room.EndTime).IsNil() {db = db.Where("update_at BETWEEN ? AND ?", room.StartTime, room.EndTime)}if room.Csmc != "" {ids, _ := cdPlaceRoomService.GetCdPlaceRoomByCsmc(room.Csmc)db = db.Where("csbh in (?)", ids)}if !all {db = db.Where("csbh in (?)", place)}err = db.Find(&placeRooms).Errorif err != nil {return}for i, cdPlaceRoom := range placeRooms {axis := fmt.Sprintf("A%d", i+2)excel.SetSheetRow("Sheet1", axis, &[]interface{}{cdPlaceRoom.PlaceID,cdPlaceRoom.RoomNumber,cdPlaceRoom.GLRoomNumber,cdPlaceRoom.BuildingNumber,cdPlaceRoom.FloorNumber,cdPlaceRoom.State,})}mkdirErr := os.MkdirAll(global.GSD_CONFIG.Excel.Dir, os.ModePerm)if mkdirErr != nil {global.GSD_LOG.Error("function os.MkdirAll() Filed", zap.Any("err", mkdirErr.Error()))return errors.New("function os.MkdirAll() Filed, err:" + mkdirErr.Error())}rows, err := excel.Rows("Sheet1")fmt.Println(rows)if err != nil {return err}err = excel.SaveAs(path)return err
}
在GVA框架中用go写接口的步骤相关推荐
- layui框架中用laypage与后端搭配使用做分页列表
layui框架中用laypage与后端搭配使用做分页列表 layui中文离线文档,包含html文档及layui源码 首先我们需要在layui.use中引入laypage: layui.use(['la ...
- 如何搭建python框架_从零开始:写一个简单的Python框架
原标题:从零开始:写一个简单的Python框架 Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 你为什么想搭建一个Web框架?我想有下面几个原因: 有一个 ...
- python连接sqlserver_python 链接sqlserver 写接口实例
我是使用pymssql完成的sqlserver,首先下载符合版本的pymssql的whl,然后安装,在pycharm的default setting->project Interpreter中确 ...
- [MyBatis]DAO层只写接口,不用写实现类
团队开发一个项目,由老大架了一个框架,遇到了DAO层不用写接口了,我也是用了2次才记住这个事的,因为自己一直都是习惯于写DAO层的实现类,所以,习惯性的还是写了个实现类.于是遇到错误了. 找不到那个方 ...
- node搭建服务器,写接口,调接口,跨域
刚开始学node,今天做这个也是累死宝宝了,以后可以自己写接口自己用了,再也不用麻烦人家后台人员了,这些年我们欠他们的太多了,说多了都是泪,不多说,往下看吧... 服务端项目目录下: 1.npm in ...
- rest风格使用两个变量_为什么要用Rest风格,接口应该怎么定义,除了Rest还可用什么方式写接口的?...
这里是修真院后端小课堂,每篇分享文从 深度思考中的知识点--为什么要用Rest风格,如果不用Rest的话,接口应该怎么定义,在使用Rest风格之前,大家都是用什么方式写接口的? 1.背景介绍 REST ...
- [java基础] --- java开发,service层是不是一定要写接口
估计很多java开发的同学都遇到过,service层要写一个接口,然后再写接口的实现类,但这个接口从项目开始到项目倒闭,都不会有第二个实现,那为什么不直接写个service类呢?如果你还没想过这个问题 ...
- 快速的利用 Express 框架实现一个 Rustfull 接口的后端 Server
快速的利用 Express 框架实现一个 Rustfull 接口的后端 Server 附:基于 Nodejs 的服务器后端的框架用的比较多的是 Koa : github/kaojs/koa 但本文这里 ...
- 服务端api用php写还是用node,如何使用node搭建服务器,写接口,调接口,跨域
这次给大家带来如何使用node搭建服务器,写接口,调接口,跨域,使用node搭建服务器,写接口,调接口,跨域的注意事项有哪些,下面就是实战案例,一起来看一下.. 服务端项目目录下: 1.npm ini ...
最新文章
- word 生成HTML
- ubuntu 配置samba
- Meditation Guide
- 神经网络优化中的Weight Averaging
- 电路中滤波电容和退耦电容_电子电路中电容的作用,滤波消抖,充放电,耦合,退耦...
- java8optional_关于Java 8的Optional的介绍
- 【渝粤题库】国家开放大学2021春2772家畜环境卫生与设施题目
- LeetCode--3. 无重复字符的最长子串(双指针)
- mysql 集中join的区别
- SAP License:SAP ECC6安装系列三:关于SAP你也许想知道的一些事
- java spring boot 项目 热加载 有利于快速开发
- 【元胞自动机】基于matlab元胞自动机超车换道【含Matlab源码 359期】
- java 生成kml 文件
- JavaWeb实现的超市收银、基于SSM+mysql的 vue便利店收银管理系统实现【文档】【代码过程】
- 【GlobalMapper精品教程】003:影像裁剪、批量影像分幅案例详解
- 程序化交易高手的交易心得 分享~
- Python基础刻意练习:魔方方法
- 1 什么叫多媒体计算机,选择1多媒体计算机中的媒体信息是指()文字声音.ppt
- Mac 安装 Xcode工具软件
- 未来已来:探寻2019智博会上的前沿科技