前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gorm软删除妙用-充值,软删除恢复,soft delete

gorm软删除妙用-充值,软删除恢复,soft delete

作者头像
hotqin888
发布2021-08-05 15:46:04
1.6K0
发布2021-08-05 15:46:04
举报
文章被收录于专栏:hotqin888的专栏

我设计的逻辑是用户申请充值100元,按传统的设计需要一个数据库表,存储用户的申请,管理员同意后,再写入-充值记录表。 用gorm软删除就避免了多一个表,用户申请充值记录,直接写入-充值记录表,用事务,用事务。紧接着软删除。用事务,如果软删除失败,可回滚。 管理员同意后,修改软删除,即恢复,并修改数值,比如奖励1元就是101元啦。

用户充值申请,增加一条记录,立即软删除

代码语言:javascript
复制
	//账户添加一条充值记录
	recharge := Recharge{UserID: uid, Amount: amount}
	if err := tx.Create(&recharge).Error; err != nil {
		tx.Rollback()
		return err
	}

	// 进行软删除
	// db.Delete(&User{}, 10)
	// db.Delete(&user)
	if err := tx.Delete(&recharge).Error; err != nil {
		tx.Rollback()
		return err
	}

	return tx.Commit().Error

查询被软删除的记录:

代码语言:javascript
复制
// 管理员查询到所有申请
func GetApplyRecharge(limit, offset int) (recharge []Recharge, err error) {
	//获取DB
	db := GetDB()
	if err := db.Unscoped().Preload("User").Where("deleted_at <> ?", "").Limit(limit).Offset(offset).Find(&recharge).Error; err != nil {
		return recharge, err
	}
	return recharge, err
}

gorm软删除恢复:

代码语言:javascript
复制
	if err := tx.Unscoped().Model(&recharge).Update("deleted_at", nil).Error; err != nil {
		tx.Rollback()
		return err
	}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/06/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档