Compare commits

3 Commits

Author SHA1 Message Date
akrike
c22384fbc0 event create bug fix 2025-08-31 20:54:25 +08:00
akrike
d42b89cc8b ui update 2025-08-31 20:37:11 +08:00
akrike
c32db8c8f6 ui update 2025-08-31 20:22:55 +08:00
9 changed files with 40 additions and 41 deletions

View File

@@ -27,7 +27,6 @@ func (u *userApi) LoginHandler(ctx *gin.Context, req model.LoginHandlerReq) any
return err return err
} }
return gin.H{ return gin.H{
"code": 0,
"token": token, "token": token,
"username": req.Account, "username": req.Account,
"role": repository.UserRepository.GetUserByName(req.Account).Role, "role": repository.UserRepository.GetUserByName(req.Account).Role,

View File

@@ -7,25 +7,28 @@ import (
"github.com/lzh-1625/go_process_manager/internal/app/model" "github.com/lzh-1625/go_process_manager/internal/app/model"
"github.com/lzh-1625/go_process_manager/internal/app/repository" "github.com/lzh-1625/go_process_manager/internal/app/repository"
"github.com/lzh-1625/go_process_manager/log" "github.com/lzh-1625/go_process_manager/log"
"github.com/lzh-1625/go_process_manager/utils"
) )
type eventLogic struct{} type eventLogic struct{}
var EventLogic = new(eventLogic) var EventLogic = new(eventLogic)
func (e *eventLogic) Create(name string, eventType eum.EventType, additionalKv ...any) { func (e *eventLogic) Create(name string, eventType eum.EventType, additionalKv ...string) {
if len(additionalKv)%2 != 0 { if len(additionalKv)%2 != 0 {
log.Logger.Errorw("参数长度错误", "args", additionalKv) log.Logger.Errorw("参数长度错误", "args", additionalKv)
return
} }
data := model.Event{ data := model.Event{
Name: name, Name: name,
CreatedTime: time.Now(), CreatedTime: time.Now(),
Type: eventType, Type: eventType,
} }
m := map[any]any{} m := map[string]string{}
for i := range len(additionalKv) / 2 { for i := range len(additionalKv) / 2 {
m[additionalKv[2*i]] = additionalKv[2*i+1] m[additionalKv[2*i]] = additionalKv[2*i+1]
} }
data.Additional = utils.StructToJsonStr(m)
if err := repository.EventRepository.Create(data); err != nil { if err := repository.EventRepository.Create(data); err != nil {
log.Logger.Errorw("事件创建失败", "err", err) log.Logger.Errorw("事件创建失败", "err", err)
} }

View File

@@ -158,12 +158,14 @@ func (p *ProcessBase) SetState(state eum.ProcessState, fn ...func() bool) bool {
func (p *ProcessBase) createEvent(state eum.ProcessState) { func (p *ProcessBase) createEvent(state eum.ProcessState) {
var eventType eum.EventType var eventType eum.EventType
switch state { switch state {
case eum.ProcessStateStart: case eum.ProcessStateRunning:
eventType = eum.EventProcessStart eventType = eum.EventProcessStart
case eum.ProcessStateStop: case eum.ProcessStateStop:
eventType = eum.EventProcessStop eventType = eum.EventProcessStop
case eum.ProcessStateWarnning: case eum.ProcessStateWarnning:
eventType = eum.EventProcessWarning eventType = eum.EventProcessWarning
default:
return
} }
EventLogic.Create(p.Name, eventType) EventLogic.Create(p.Name, eventType)
} }

View File

@@ -39,7 +39,8 @@ func (t *TaskJob) Run(ctx context.Context) {
if ctx.Value(eum.CtxTaskTraceId{}) == nil { if ctx.Value(eum.CtxTaskTraceId{}) == nil {
ctx = context.WithValue(ctx, eum.CtxTaskTraceId{}, uuid.NewString()) ctx = context.WithValue(ctx, eum.CtxTaskTraceId{}, uuid.NewString())
} }
EventLogic.Create(t.TaskConfig.Name, eum.EventTaskStart, "traceId", ctx.Value(eum.CtxTaskTraceId{})) EventLogic.Create(t.TaskConfig.Name, eum.EventTaskStart, "traceId", ctx.Value(eum.CtxTaskTraceId{}).(string))
defer EventLogic.Create(t.TaskConfig.Name, eum.EventTaskStop, "traceId", ctx.Value(eum.CtxTaskTraceId{}).(string))
t.Running = true t.Running = true
middle.TaskWaitCond.Trigger() middle.TaskWaitCond.Trigger()
defer func() { defer func() {
@@ -71,7 +72,7 @@ func (t *TaskJob) Run(ctx context.Context) {
// 执行操作 // 执行操作
log.Logger.Infow("任务开始执行") log.Logger.Infow("任务开始执行")
if !OperationHandle[t.TaskConfig.Operation](t.TaskConfig, proc) { if !OperationHandle[t.TaskConfig.Operation](t.TaskConfig, proc) {
log.Logger.Errorw("任务执行失败") log.Logger.Warnw("任务执行失败")
return return
} }
log.Logger.Infow("任务执行成功", "target", t.TaskConfig.OperationTarget) log.Logger.Infow("任务执行成功", "target", t.TaskConfig.OperationTarget)
@@ -96,7 +97,6 @@ func (t *TaskJob) Run(ctx context.Context) {
} else { } else {
log.Logger.Infow("任务流结束") log.Logger.Infow("任务流结束")
} }
EventLogic.Create(t.TaskConfig.Name, eum.EventProcessStop, "traceId", ctx.Value(eum.CtxTaskTraceId{}))
} }
func (t *TaskJob) InitCronHandle() error { func (t *TaskJob) InitCronHandle() error {

View File

@@ -1,5 +1,12 @@
import api from "./api"; import api from "./api";
interface LoginRes {
code: number;
token: string;
username: string;
role: number;
}
export const login = (query: any) => { export const login = (query: any) => {
return api.post("/user/login", query).then((res) => res); return api.post<LoginRes>("/user/login", query).then((res) => res);
}; };

View File

@@ -1,4 +1,9 @@
export default { export default {
login: {
account: "Account",
password: "Password",
button: "Login",
},
common: { common: {
add: "Add", add: "Add",
cancel: "Cancel", cancel: "Cancel",
@@ -11,17 +16,6 @@ export default {
tos: "Terms of Service", tos: "Terms of Service",
policy: "Privacy Policy", policy: "Privacy Policy",
}, },
login: {
title: "Sign In",
email: "Email",
password: "Password",
button: "Sign In",
orsign: "Or sign in with",
forgot: "Forgot password?",
noaccount: "Don't have an account?",
create: "Create one here",
error: "The email / password combination is invalid",
},
register: { register: {
title: "Create Account", title: "Create Account",
username: "Username", username: "Username",
@@ -34,7 +28,7 @@ export default {
signin: "Sign In", signin: "Sign In",
}, },
menu: { menu: {
process: 'ProcessManager', process: "ProcessManager",
search: 'Search (press "ctrl + /" to focus)', search: 'Search (press "ctrl + /" to focus)',
dashboard: "Dashboard", dashboard: "Dashboard",
logout: "Logout", logout: "Logout",

View File

@@ -1,4 +1,9 @@
export default { export default {
login: {
account: "账号",
password: "密码",
button: "登入",
},
common: { common: {
add: "新增", add: "新增",
cancel: "取消", cancel: "取消",
@@ -11,17 +16,6 @@ export default {
tos: "服务条款", tos: "服务条款",
policy: "隐私政策", policy: "隐私政策",
}, },
login: {
title: "登录",
email: "电子邮件",
password: "密码",
button: "登录",
orsign: "或使用",
forgot: "忘记密码?",
noaccount: "还没有帐号?",
create: "在此处创建一个",
error: "电子邮件/密码组合无效",
},
register: { register: {
title: "创建帐号", title: "创建帐号",
username: "全名", username: "全名",
@@ -34,7 +28,7 @@ export default {
signin: "登录", signin: "登录",
}, },
menu: { menu: {
process: '进程管理', process: "进程管理",
search: "搜索(按“ Ctrl + /”进行聚焦)", search: "搜索(按“ Ctrl + /”进行聚焦)",
dashboard: "仪表板", dashboard: "仪表板",
logout: "登出", logout: "登出",
@@ -246,4 +240,5 @@ export default {
}, },
}, },
}, },
}; `` };
``;

View File

@@ -6,7 +6,7 @@ const isLoading = ref(false);
const isSignInDisabled = ref(false); const isSignInDisabled = ref(false);
const refLoginForm = ref(); const refLoginForm = ref();
const username = ref(""); const account = ref("");
const password = ref(""); const password = ref("");
const isFormValid = ref(true); const isFormValid = ref(true);
@@ -18,16 +18,16 @@ const handleLogin = async () => {
isLoading.value = true; isLoading.value = true;
isSignInDisabled.value = true; isSignInDisabled.value = true;
login({ login({
username: username.value, account: account.value,
password: password.value, password: password.value,
}).then((e) => { }).then((e) => {
isLoading.value = false; isLoading.value = false;
isSignInDisabled.value = false; isSignInDisabled.value = false;
if (e.code === 0) { if (e.code === 0) {
localStorage.setItem("token", e.data.token); localStorage.setItem("token", e.data?.token!);
localStorage.setItem("permission", e.data.permission); localStorage.setItem("role", e.data?.role.toString()!);
localStorage.setItem("name", username.value); localStorage.setItem("name", e.data?.username!);
router.push("/"); router.push("/");
} }
}); });
@@ -62,7 +62,7 @@ const resetErrors = () => {
> >
<v-text-field <v-text-field
ref="refAccount" ref="refAccount"
v-model="username" v-model="account"
required required
:error="error" :error="error"
:label="$t('login.account')" :label="$t('login.account')"
@@ -90,7 +90,6 @@ const resetErrors = () => {
variant="underlined" variant="underlined"
color="primary" color="primary"
bg-color="#fff" bg-color="#fff"
:rules="passwordRules"
name="password" name="password"
outlined outlined
validateOn="blur" validateOn="blur"

View File

@@ -39,7 +39,7 @@ export default defineConfig({
}, },
proxy: { proxy: {
"/api": { "/api": {
target: "http://xcon.top:8797", target: "http://127.0.0.1:8797",
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(/^\/sdApi/, ""), rewrite: (path) => path.replace(/^\/sdApi/, ""),
}, },