go新手探索之路二

本期小目标

上一小节,已经使用go实现mysql数据库的连接和对数据的CRUD操作;但是,现在实际业务实现中很少会写原生的sql语句,所以,与时俱进,本期小目标定为使用ORM模型实现对数据库的操作。

go ORM 实现

1. orm插件

对比了很多orm框架,然而对比下来,觉得对于新手,仅掌握beego自带的orm框架就已足够了,熟悉掌握了自带的orm,那么其他的一些原理自然也懂得了。

安装包

go get github.com/astaxie/beego/client/orm

2. 数据库设计

这里为了方便之后的实现,此处开始设计比较完善的数据库表

  • 用户表 user
  • 组织表 group
  • 用户信息表 user_info
  • 地址表 address
  • 地区编码表 address_code
  • 模板表 template
  • 订单信息表 order_info
  • 配送信息表 delivery_info
  • 售后表 after_sale
  • 模板快照表 template_snapshot
  • 公共字段表 common_field

user表:

列名 解释
id 自增长id
group_id 组织id
status 状态,分别有 on off freeze
created_at 创建时间
updated_at 更新时间
deleted_at 删除时间

user_info表:

列名 解释
id 自增长id
user_id 用户id
user_name 用户名
nickname 昵称
avatar_url 图像地址
phone 手机号
birth 出生日期
email 邮箱
vip 是否是vip
vip_account vip账号
created_at 创建时间
updated_at 更新时间

group表:

列名 解释
id 自增长id
parent_id 上级组织id
name 组织名称
status 组织状态 on off
created_at 创建时间
updated_at 更新时间

address表:

列名 解释
id 自增长id
user_id 用户id
province 省编码
city 市编码
area 区编码
detail_address 详细地址
status 状态
created_at 创建时间
updated_at 更新时间

address_code表:

列名 解释
id 唯一索引id
partner_id 上级id
name 省、市或区名称
created_at 创建时间
updated_at 更新时间

template表:

列名 解释
id 自增长id
name 模板名称
create_user_id 创建用户id
template_version 模板版本号
template_type 模板类型,input 或 output
template_content 模板内容,对象类型,包含字段id 和 字段填写属性(是否必填)
status 状态
created_at 创建时间
updated_at 更新时间

template_snapshot表:

列名 解释
id 自增长id
template_ id 模板id
name 模板名称
create_user_id 创建用户id
template_version 模板版本号
template_type 模板类型,input 或 output
template_content 模板内容,对象类型,包含字段id 和 字段填写属性(是否必填)
created_at 创建时间
updated_at 更新时间

common_field表:

列名 解释
id 自增长id
column_ type 字段类型,input radio
column_name 字段在表中的英文名称
column_title 字段显示中文名称
admin_id 创建管理员id
status 状态 on off
options 如果是radio类型,则需要写入options,添加可供选择的下拉列表值 包括英文和中文名称
created_at 创建时间
updated_at 更新时间

order_info表:

列名 解释
id 自增长id
send_user_id 下单用户id
receive_user_id 收件人用户id
send_address 收件人地址
receive_address 收件人地址
content 发货物品信息
status 订单状态 未发货 已发货
weight 重量
express_company 物流公司id
expense 快递费
customer_remark 用户备注
shop_remark 商家备注
created_at 创建时间
updated_at 更新时间

delivery_info表:

列名 解释
id 自增长id
order_id 订单id
express_id 快递单号
status 快递状态 运输中 派送中 签收
send_time 发件时间
receive_time 收件时间
weight 重量
expense 快递费
insured 是否保价
insured_amount 保价金额
remark 配送备注
created_at 创建时间
updated_at 更新时间

** after_sale表:**

列名 解释
id 自增长id
express_id 快递单号
back_express_id 退回件快递单号
status 退回中 确认签收
send_time 发件时间
receive_time 收件时间
expense 快递费
remark 配送备注
created_at 创建时间
updated_at 更新时间

结构图
在这里插入图片描述

3. 具体实现

其实具体的实现涉及比较多

总的来说,如果简单实现的话,那就是直接有一个main.go文件,写好连接数据库操作和创建数据库操作。

但这样粗暴的写法,不太适合于工作中,因为没有人会这么写,太不合适了。

这里推荐另一种写法

使用go-gormigrate/gormigrate插件,通过migrate指令生成对应的table表

3.1命令执行脚本

命令结构
具体实现:
migrate.go

package command

import (
    "ExcelHandleProject/src/config/mysql"
    "ExcelHandleProject/src/migration"
    "ExcelHandleProject/src/pkg/logger"
    "fmt"
    "github.com/go-gormigrate/gormigrate/v2"
    "github.com/spf13/cobra"
)

var migrateCmd = &cobra.Command{
   
    Use:     "migrate",
    Short: "执行数据库迁移"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值