当前位置: 首页 > news >正文

网站建设中页面模板下载公司名称变更说明函

网站建设中页面模板下载,公司名称变更说明函,jsp网站开发视频,怎么看别人网站在哪里做的外链使用Gin-Vue- Admin框架手动实现crud 在gva框架下自己手动实现一个CRUD的操作#xff0c;该操作将会结合gen进行探讨学习#xff0c;具体实现可以看下面代码的实现#xff0c;项目目录层级分为api层#xff0c;service层#xff0c;model层#xff0c;common层#xff…使用Gin-Vue- Admin框架手动实现crud 在gva框架下自己手动实现一个CRUD的操作该操作将会结合gen进行探讨学习具体实现可以看下面代码的实现项目目录层级分为api层service层model层common层router层gen层。 我的这个实现方式有些许不太一样就是我的修改并非传统的restful风格通过json方式进行传递这个id也确保安全所以这里的请求我不会用Get请求。 创建一个Banner 在gva下的server文件夹中找到plugin文件然后在这里创建一个banner文件夹我们的手动CRUD实现的代码就放置在这里查看项目目录结构banner包的路径是/server/plugin/banner。 model层 在model层中我们分为前端请求的参数request以及后端返回的只response。在我们的model下会有一个创建表的结构体也就是对应数据库字段的一个struct banner的结构体 package modelimport github.com/flipped-aurora/gin-vue-admin/server/globaltype Banner struct {global.GVA_MODELUrl string json:url gorm:column:url;comment:图片地址Path string json:path gorm:column:path;comment:轮播图跳转地址Description string json:description gorm:column:description;comment:轮播介绍 } model.request层 用于接收前端的参数 package requestimport (github.com/flipped-aurora/gin-vue-admin/server/plugin/banner/commongithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/modelgithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/model/daogorm.io/gen )type BannerList struct {common.PageInfoUrl string json:url gorm:column:url;comment:图片地址Path string json:path gorm:column:path;comment:轮播图跳转地址Description string json:description gorm:column:description;comment:轮播介绍 }func (r BannerList) BannerList() model.Banner {return model.Banner{Url: r.Url,Path: r.Path,Description: r.Description,} }type BannerCreate struct {Url string json:url gorm:column:url;comment:图片地址Path string json:path gorm:column:path;comment:轮播图跳转地址Description string json:description gorm:column:description;comment:轮播介绍 }func (r BannerCreate) BannerCreate() model.Banner {return model.Banner{Url: r.Url,Path: r.Path,Description: r.Description,} }type BannerUpdate struct {common.GetByIdUrl string json:url gorm:column:url;comment:图片地址Path string json:path gorm:column:path;comment:轮播图跳转地址Description string json:description gorm:column:description;comment:轮播介绍 }func (r BannerUpdate) BannerUpdate() model.Banner {return model.Banner{Url: r.Url,Path: r.Path,Description: r.Description,} }func (r *BannerList) Search() common.GenScopes {return func(tx gen.Dao) gen.Dao {if r.Url ! {tx tx.Where(dao.Banner.Url.Eq(r.Url))}if r.Path ! {tx tx.Where(dao.Banner.Path.Eq(r.Path))}if r.Description ! {tx tx.Where(dao.Banner.Description.Eq(r.Description))}return tx} }model.response 返回给前端的一个模型 package responsetype Banner struct {Url string json:url gorm:column:url;comment:图片地址Path string json:path gorm:column:path;comment:轮播图跳转地址Description string json:description gorm:column:description;comment:轮播介绍 }gen层 可以查看gorm的gen的使用文档地址https://gorm.io/gen/ 具体详细的看gorm的文档地址关于gen的相关使用可以看目录结构我的文件存放地 gen是基于gorm封装的在我们最后的banner/main.go中需要装配一下传入db,判断有没有db没有db的调用需要传入db。 $ go get -u gorm.io/gen package mainimport (github.com/flipped-aurora/gin-vue-admin/server/plugin/banner/modelospath/filepathgorm.io/gen )// generate code func main() {// 获取当前文件夹路径pwd, _ : os.Getwd()g : gen.NewGenerator(gen.Config{// 文件输出的位置根据自己的情况而定OutPath: filepath.Join(pwd, plugin, banner, model, dao),// 输出的文件名OutFile: query.go,// 输出模式Mode: gen.WithDefaultQuery | gen.WithQueryInterface,FieldCoverable: true,WithUnitTest: false,})// 挂在自己的结构体在这里根据自己的业务而定g.ApplyBasic(new(model.Banner),)g.Execute() }common层 common层一般是放置一些公共资源需要使用的比如一些返回信息雪花算法生成id等。 common.common.go package commonimport (gorm.io/gen )type GetById struct {ID uint json:id form:id }type GetByIds struct {IDs []uint json:ids form:ids }// PageInfo 分页字段 type PageInfo struct {Page int json:page form:page // 页码PageSize int json:pageSize form:pageSize // 每页大小Keyword string json:keyword form:keyword //关键字 }// 分页函数 func (c *PageInfo) Paginate() func(tx gen.Dao) gen.Dao {return func(tx gen.Dao) gen.Dao {switch {case c.PageSize 100:c.PageSize 100case c.PageSize 0:c.PageSize 10}offset : (c.Page - 1) * c.PageSizereturn tx.Offset(offset).Limit(c.PageSize)} }type GenScopes func(tx gen.Dao) gen.Dao// 前端传什么返回什么 type PageResult struct {PageInfoList interface{} json:list swaggertype:string example:interface 数据Count int64 json:count swaggertype:string example:int64 总数 }// list 返回函数 func NewPageResult(list interface{}, count int64, pageInfo PageInfo) PageResult {if list nil {return PageResult{PageInfo: PageInfo{Page: pageInfo.Page,PageSize: pageInfo.PageSize,},List: []struct{}{},Count: count,}}return PageResult{PageInfo: PageInfo{Page: pageInfo.Page,PageSize: pageInfo.PageSize,},List: list,Count: count,} }common.message.go 存放返回信息还可以自定义一些返回状态码 package commonconst (SuccessCreate 创建成功ErrorCreate 创建失败SuccessUpdate 更新成功ErrorUpdate 更新失败SuccessDelete 删除成功ErrorDelete 删除失败SuccessDeletes 批量删除成功ErrorDeletes 批量删除失败SuccessFirst 查询一条成功ErrorFirst 查询一条失败SuccessList 查询成功ErrorList 查询失败ErrorCount 查询条数失败ErrorRequest 参数有误SuccessServer 服务端返回成功ErrorServer 服务端返回失败 )service层 这里我一般是用于业务处理。 service.banner.go package serviceimport (contextgithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/commongithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/modelgithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/model/daogithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/model/requestgithub.com/pkg/errors )var Banner new(banner)type banner struct{}// List 查询多条 func (b *banner) List(ctx context.Context, info request.BannerList) (entity []*model.Banner, count int64, err error) {query : dao.Q.WithContext(ctx).Bannerquery query.Scopes(info.Search())count, err query.Count()if err ! nil {return nil, 0, errors.Wrap(err, common.ErrorList)}entity, err query.Scopes(info.Paginate()).Find()if err ! nil {return nil, 0, errors.Wrap(err, common.ErrorCount)}return entity, count, nil }// First 查询单条 func (b *banner) First(ctx context.Context, info common.GetById) (entity *model.Banner, err error) {query : dao.Q.WithContext(ctx).Bannerentity, err query.Where(dao.Banner.ID.Eq(info.ID)).First()if err ! nil {return nil, errors.Wrap(err, common.ErrorFirst)}return entity, nil }// Create 新增 func (b *banner) Create(ctx context.Context, info request.BannerCreate) error {create : info.BannerCreate()query : dao.Q.WithContext(ctx).Bannererr : query.Create(create)if err ! nil {return errors.Wrap(err, common.ErrorCreate)}return nil }// Update 修改 func (b *banner) Update(ctx context.Context, info request.BannerUpdate) error {update : info.BannerUpdate()query : dao.Q.WithContext(ctx).Banner_, err : query.Where(dao.Banner.ID.Eq(info.ID)).Updates(update)if err ! nil {return errors.Wrap(err, common.ErrorUpdate)}return nil }// Delete 单个删除 func (b banner) Delete(ctx context.Context, info common.GetById) error {query : dao.Q.WithContext(ctx).Banner_, err : query.Where(dao.Banner.ID.Eq(info.ID)).Delete()if err ! nil {return errors.Wrap(err, common.ErrorDelete)}return nil }// Deletes 批量删除 func (b *banner) Deletes(ctx context.Context, info common.GetByIds) error {query : dao.Q.WithContext(ctx).Banner_, err : query.Where(dao.Banner.ID.In(info.IDs...)).Delete()if err ! nil {return errors.Wrap(err, common.ErrorDeletes)}return nil }api层 这里我一般是处理接受前端的请求 api.banner.go 这里与service.banner.go的接口一一对应 package apiimport (github.com/flipped-aurora/gin-vue-admin/server/plugin/banner/commongithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/model/requestgithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/responsegithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/servicegithub.com/gin-gonic/ginnet/http )var Banner new(banner)type banner struct{}func (b banner) List(c *gin.Context) response.Response {var list request.BannerListerr : c.ShouldBindJSON(list)if err ! nil {return response.Response{Code: http.StatusPaymentRequired, Message: common.ErrorRequest}}lists, count, err : service.Banner.List(c.Request.Context(), list)if err ! nil {return response.Response{Code: http.StatusInternalServerError, Message: common.ErrorServer}}return response.Response{Code: http.StatusOK,Data: common.NewPageResult(lists, count, list.PageInfo),Message: common.SuccessList,} }func (b *banner) First(c *gin.Context) response.Response {var info common.GetByIderr : c.ShouldBindJSON(info)if err ! nil {return response.Response{Code: http.StatusPaymentRequired, Message: common.ErrorRequest}}data, err : service.Banner.First(c.Request.Context(), info)if err ! nil {return response.Response{Code: http.StatusInternalServerError, Message: common.ErrorServer}}return response.Response{Code: http.StatusOK,Data: data,Message: common.SuccessFirst,} }func (b *banner) Create(c *gin.Context) response.Response {var create request.BannerCreateerr : c.ShouldBindJSON(create)if err ! nil {return response.Response{Code: http.StatusPaymentRequired, Message: common.ErrorRequest}}err service.Banner.Create(c.Request.Context(), create)if err ! nil {return response.Response{Code: http.StatusInternalServerError, Message: common.ErrorCreate}}return response.Response{Code: http.StatusOK, Message: common.SuccessCreate} }func (b *banner) Update(c *gin.Context) response.Response {var update request.BannerUpdateerr : c.ShouldBindJSON(update)if err ! nil {return response.Response{Code: http.StatusPaymentRequired, Message: common.ErrorRequest}}err service.Banner.Update(c.Request.Context(), update)if err ! nil {return response.Response{Code: http.StatusInternalServerError, Message: common.ErrorUpdate}}return response.Response{Code: http.StatusOK, Message: common.SuccessUpdate} }func (b *banner) Delete(c *gin.Context) response.Response {var info common.GetByIderr : c.ShouldBindJSON(info)if err ! nil {return response.Response{Code: http.StatusPaymentRequired, Message: common.ErrorRequest}}err service.Banner.Delete(c.Request.Context(), info)if err ! nil {return response.Response{Code: http.StatusInternalServerError, Message: common.ErrorDelete}}return response.Response{Code: http.StatusOK, Message: common.SuccessDelete} }func (b *banner) Deletes(c *gin.Context) response.Response {var info common.GetByIdserr : c.ShouldBindJSON(info)if err ! nil {return response.Response{Code: http.StatusPaymentRequired, Message: common.ErrorRequest}}err service.Banner.Deletes(c.Request.Context(), info)if err ! nil {return response.Response{Code: http.StatusInternalServerError, Message: common.ErrorDeletes}}return response.Response{Code: http.StatusOK, Message: common.SuccessDeletes} }router层 这里是路由注册的地方 router.router.go package routerimport (github.com/flipped-aurora/gin-vue-admin/server/middlewaregithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/apigithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/responsegithub.com/gin-gonic/gin )type Banner struct {router *gin.RouterGroup }func NewBanner(router *gin.RouterGroup) *Banner {return Banner{router} }func (r Banner) Init() {group : r.router.Group(banner){ // 不带日志中间件group.POST(list, response.Handler()(api.Banner.List))group.POST(first, response.Handler()(api.Banner.First))}{ // 带日志中间件group.Use(middleware.OperationRecord())group.POST(create, response.Handler()(api.Banner.Create))group.PUT(update, response.Handler()(api.Banner.Update))group.DELETE(delete, response.Handler()(api.Banner.Delete))group.DELETE(deletes, response.Handler()(api.Banner.Deletes))} }banner/main.go package bannerimport (github.com/flipped-aurora/gin-vue-admin/server/globalgithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/model/daogithub.com/flipped-aurora/gin-vue-admin/server/plugin/banner/routergithub.com/gin-gonic/gin )var Plugin new(plugin)type plugin struct{}func (p plugin) Register(group *gin.RouterGroup) {router.NewBanner(group).Init()// 这里需要自动装配一下调用dbif global.GVA_DB ! nil {dao.SetDefault(global.GVA_DB)} }func (p plugin) RouterPath() string {return }
http://www.dnsts.com.cn/news/172636.html

相关文章:

  • 网站文案设计网页的维护与更新
  • 新公司注册网站猪八戒接单网
  • 做网站需要Excel表格吗成都网站搭建公司
  • 网站推广营销活动万网域名管理登录
  • 衡水做网站建设公司北京公司注销流程
  • 海南网站建设获客wordpress 熊掌号代码
  • app开发定制软件公司通辽网站建设0475seo
  • 北京建行网站京东网站设计风格
  • 云鼎大数据888元建站wordpress shortcodes
  • 上海市网站建设公叿唐山网站优化
  • 各大网站注册深圳公司建站推广
  • 做产品目录设计用什么网站好做网站的行情
  • 域名拍卖网站个网站能申请贝宝支付接口
  • 网站改版新闻稿搭建电商平台 方案
  • 哪家成都公司做网站高校校园网站建设项目的要求
  • 用虚拟机做网站服务器个人视频制作公司
  • 网站被黑应该怎么做找回微信
  • dede手机网站教程一般网站做推广要多大的带宽和内存
  • 网站建设好了怎么发布18款禁用软件app排行
  • 相城seo网站优化软件营销团队名字
  • 阎良做网站如何查看实时街景地图
  • 海兴网站建设价格单页网站模板 带在线订单
  • 廊坊网站关键词推广wordpress小工具调用
  • 成都大型网站建设微信公众 wordpress
  • 湖北网站建设找哪家十堰网站搜索优化价格
  • 同样是div 怎么有些网站收录少 有些多重庆建设车业官方网站
  • 织梦上网站次导航怎么做wordpress的中文插件安装
  • 中国建设网站齐齐哈尔市网站被黑 禁止js跳转
  • 网站建设中的技术问题国内wordpress最好的主题
  • 丽水市莲都区建设局网站搭建平台换个说法