Go Web教程29:Gorm增删查改最佳实践

概述

前面讲了Go中,怎样集成Gorm

今天把我的Gorm 增删查改最佳实践代码分享给大家

创建service.go,代码如下

package service
import (
 "github.com/jinzhu/copier"
 . "third/db"
 . "third/vo"
 "time"
)
func ListSmsLog(query SmsLogQuery) SmsLogRspPage {
 rspSmsLog := SmsLogRspPage{}
 db := DB
 if len(query.Phone) > 0 {
 db = db.Where("phone = ?", query.Phone)
 }
 db = db.Where("is_deleted = 0")
 var count int
 var smsLogs []SmsLog
 if err := db.Model(&SmsLog{}).Count(&count).Error; err != nil || count <= 0 {
 rspSmsLog.Count = -1
 rspSmsLog.Content = []SmsLogListVo{}
 return rspSmsLog
 }
 db.Offset((query.Number - 1) * query.Size).Limit(query.Size).Find(&smsLogs)
 smsLogListVos := convertSmsLogList(smsLogs)
 rspSmsLog.Content = smsLogListVos
 rspSmsLog.Count = count
 return rspSmsLog
}
func GetSmsLog(query SmsLogFormQuery) SmsLogVo {
 db := DB
 noWhere := true
 if query.Id > 0 {
 noWhere = false
 db = db.Where("id = ? ", query.Id)
 }
 if len(query.Phone) > 0 {
 noWhere = false
 db = db.Where("phone = ?", query.Phone)
 }
 smsLogVo := SmsLogVo{}
 if noWhere {
 return smsLogVo
 }
 smsLog := SmsLog{}
 if err := db.First(&smsLog).Error; err == nil {
 smsLogVo = convertSmsLogVo(smsLog)
 }
 return smsLogVo
}
func SaveSmsLog(smsLogVo SmsLogVo) bool {
 smsLog := SmsLog{}
 smsLogTemp := SmsLog{}
 copier.Copy(&smsLog, &smsLogVo)
 if smsLogVo.Id > 0 {
 if err := DB.Where("id = ? ", smsLogVo.Id).
 First(&smsLogTemp).Error; err != nil || smsLogTemp.Id == 0 {
 return false
 }
 smsLog.GmtModified = time.Now()
 if err := DB.Model(&smsLog).Omit("id").Updates(&smsLog).Error; err != nil {
 return false
 }
 } else {
 smsLog.GmtModified = time.Now()
 smsLog.GmtCreate = time.Now()
 smsLog.IsDeleted = 0
 if err := DB.Create(&smsLog).Error; err != nil {
 return false
 }
 }
 return true
}
func DelSmsLog(id int) bool {
 smsLogTemp := SmsLog{}
 if err := DB.Where("id = ? ", id).First(&smsLogTemp).Error; err != nil || smsLogTemp.Id == 0 {
 return false
 }
 if err := DB.Model(SmsLog{}).Where("id = ? ", id).Update("is_deleted", 1).Error; err == nil {
 return true
 }
 return false
}
func convertSmsLogList(smsLogs []SmsLog) []SmsLogListVo {
 var smsLogVos []SmsLogListVo
 for _, smsLog := range smsLogs {
 var smsLogListVo SmsLogListVo
 copier.Copy(&smsLogListVo, &smsLog)
 smsLogVos = append(smsLogVos, smsLogListVo)
 }
 return smsLogVos
}
func convertSmsLogVo(smsLog SmsLog) SmsLogVo {
 var smsLogVo SmsLogVo
 copier.Copy(&smsLogVo, &smsLog)
 return smsLogVo
}

如果你觉得好,可以使用我发布到iOS APP Store的产品

  1. 人脉管理
  2. 学习管理
  3. 爱背单词
  4. 房产管理
  5. 物品管理
  6. 团队管理
  7. 证书管理
  8. 专利管理
  9. 资产管理8
  10. 密码提示管理

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月28日

referrer策略和meta标签的问题

referrer策略和meta标签的问题请求后端接口时,banner图片的请求出现403错误:GEThttp://xxxxxxxxxxxx403(Forbidden)。在网上搜寻一番,解决方法如下:在index.html中的head中添加&lt;meta name=&quot;referrer&quot; content=&quot;no-referrer&quot; /&gt;。在此之前,关于r

热门专题

弥勒综合高中|弥勒综合高中
弥勒综合高中
开放大学|开放大学报名,开放大学报考,开放大学,什么是开放大学,开放大学学历,开放大学学费,开放大学报名条件,开放大学报名时间,开放大学学历,开放大学专业
开放大学
天麻的功效与作用吃法|天麻的功效与作用,天麻的功效与作用吃法,天麻炖什么治头痛最好,天麻的功效与作用禁忌,天麻多少钱一斤,天麻的功效与作用吃法及禁忌,天麻怎么吃效果最好,天麻粉的功效与作用,天麻怎么吃
天麻的功效与作用吃法
自考本科|自考本科有用吗,自考文凭,自考本科文凭,自考文凭有用吗,自考本科文凭有用吗,自考文凭承认吗
自考本科
安徽中源管业|安徽中源管业,安徽中源管业mpp电力管,安徽中源管业cpvc电力管,安徽中源管业pe穿线管,安徽中源管业电力管,安徽中源管业排水管,安徽中源管业通信管,安徽中源管业管材
安徽中源管业
云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司
金诺幼儿园(春城路金诺幼儿园)|昆明官渡区幼儿园,幼儿园报名,官渡区幼儿园,春城路幼儿园,幼儿园招生,学前班,昆明幼儿园,金诺幼儿园,环城南路幼儿园,石井路幼儿园
金诺幼儿园(春城路金诺幼儿园)
外贸网站建设|外贸网站建设,英文网站制作,英文网站设计,美国主机空间,外贸建站平台,多语言网站制作
外贸网站建设

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部