From 2d961040592dfa45886d69ac3337534c86985390 Mon Sep 17 00:00:00 2001 From: zchengo <1933757688@qq.com> Date: Sat, 17 Dec 2022 20:47:35 +0800 Subject: [PATCH] feat: init data in prod env --- server/api/common.go | 14 ++++++++++++++ server/initialize/router.go | 4 +++- server/response/errcode.go | 5 +++++ server/service/common.go | 35 +++++++++++++++++++++++++++++++++++ web/src/api/common.js | 10 ++++++++++ web/src/views/Login.vue | 14 ++++++++++++++ 6 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 server/api/common.go create mode 100644 web/src/api/common.js diff --git a/server/api/common.go b/server/api/common.go new file mode 100644 index 0000000..1dd3719 --- /dev/null +++ b/server/api/common.go @@ -0,0 +1,14 @@ +package api + +import ( + "crm/response" + "crm/service" + + "github.com/gin-gonic/gin" +) + +// 初始化数据 +func InitData(c *gin.Context) { + errCode := service.InitData() + response.Result(errCode, nil, c) +} \ No newline at end of file diff --git a/server/initialize/router.go b/server/initialize/router.go index 54165f5..3994109 100644 --- a/server/initialize/router.go +++ b/server/initialize/router.go @@ -25,10 +25,12 @@ func Router() { route.POST("/user/login", api.NewUserApi().Login) route.POST("/user/register", api.NewUserApi().Register) route.POST("/user/pass", api.NewUserApi().ForgotPass) - route.DELETE("/user/logout", api.NewUserApi().Logout) route.DELETE("/user/delete", api.NewUserApi().Delete) route.GET("/subscribe/callback", api.NewSubscribeApi().Callback) + // 初始化数据 + route.POST("/init/data", api.InitData) + // Jwt中间件 route.Use(middleware.JwtAuth()) diff --git a/server/response/errcode.go b/server/response/errcode.go index 8e5bd52..b74362a 100644 --- a/server/response/errcode.go +++ b/server/response/errcode.go @@ -7,6 +7,9 @@ const ( ErrCodeNoLogin = 3 // 未登录或非法访问 ErrCodeTokenExpire = 4 // Token过期 + ErrCodeInitDataSuccess = 10 // 初始化数据成功 + ErrCodeInitDataFailed = 11 // 初始化数据失败 + ErrCodeUserHasExist = 10001 // 用户已经存在 ErrCodeUserNotExist = 10002 // 用户不存在 ErrCOdeUserEmailOrPass = 10003 // 用户邮箱或密码错误 @@ -26,6 +29,8 @@ var msg = map[int]string{ ErrCodeParamInvalid: "param invalid", ErrCodeNoLogin: "no login", ErrCodeTokenExpire: "token expire", + ErrCodeInitDataSuccess: "init data success", + ErrCodeInitDataFailed: "init data failed", ErrCodeUserHasExist: "user has exist", ErrCodeUserNotExist: "user not exist", ErrCOdeUserEmailOrPass: "user email or password error", diff --git a/server/service/common.go b/server/service/common.go index c26d0ab..e4d8511 100644 --- a/server/service/common.go +++ b/server/service/common.go @@ -4,6 +4,10 @@ import ( "context" "crm/global" "crm/models" + "crm/response" + "io/ioutil" + "log" + "strings" ) const ( @@ -21,6 +25,11 @@ const ( StringNull = "" ) +const ( + Dev = "dev" + Prod = "prod" +) + var ctx = context.Background() // RestPage 分页查询 @@ -37,3 +46,29 @@ func restPage(page models.Page, name string, query interface{}, dest interface{} res := global.Db.Table(name).Where(query).Find(bind) return res.RowsAffected, res.Error } + +// 初始化数据库数据 +func InitData() int { + env := global.Config.Server.Runenv + if env == Prod { + fn := "/home/ubuntu/crmapi/crm.sql" + sql, err := ioutil.ReadFile(fn) + if err != nil { + log.Printf("[ERROR] read file %s error: %s", fn, err) + return response.ErrCodeInitDataFailed + } + sqls := strings.Split(string(sql), ";") + for _, sql := range sqls { + s := strings.TrimSpace(sql) + if s == "" { + continue + } + if err := global.Db.Exec(s).Error; err != nil { + log.Printf("[ERROR] datebase flie import error: %s", err) + return response.ErrCodeInitDataFailed + } + } + return response.ErrCodeInitDataSuccess + } + return response.ErrCodeSuccess +} diff --git a/web/src/api/common.js b/web/src/api/common.js new file mode 100644 index 0000000..56118a2 --- /dev/null +++ b/web/src/api/common.js @@ -0,0 +1,10 @@ +import request from '../axios/index' + +// 初始化数据 +export function initData(param) { + return request({ + url: '/init/data', + method: 'post', + data: param, + }) +} diff --git a/web/src/views/Login.vue b/web/src/views/Login.vue index 6bc075f..75fa4b2 100644 --- a/web/src/views/Login.vue +++ b/web/src/views/Login.vue @@ -36,6 +36,7 @@ import { reactive } from 'vue'; import { UserOutlined, LockOutlined } from '@ant-design/icons-vue'; import { useRouter } from 'vue-router' import { userLogin } from '../api/user'; +import { initData } from '../api/common'; import { message } from 'ant-design-vue'; export default { @@ -63,6 +64,7 @@ export default { localStorage.setItem('ver', res.data.data.ver) localStorage.setItem('token', res.data.data.token) router.push("/home") + initSysData() } if (res.data.code == 10002) { message.error('用户不存在'); @@ -86,6 +88,18 @@ export default { router.push("/register") } + // 初始化数据(只会在生产环境中初始化) + const initSysData = () => { + initData().then((res) => { + if (res.data.code == 10) { + message.success('初始化数据成功!') + } + if (res.data.code == 11) { + message.success('初始化数据失败!') + } + }) + } + return { formData, onLogin,