Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 19a13a0ad2 | |||
| 5d7f79a619 | |||
| 0934994f51 | |||
| ef61d405ba |
@@ -4,7 +4,7 @@ permissions:
|
||||
on: [release]
|
||||
env:
|
||||
IMAGE: RecordingTheSmile/likedream-go
|
||||
REGISTRY: git.likedream.xyz
|
||||
REGISTRY: mycoder.cc.cd
|
||||
jobs:
|
||||
Build-And-Upload:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
FROM golang:1.24-alpine AS backend-builder
|
||||
FROM golang:1.25-alpine AS backend-builder
|
||||
WORKDIR /build
|
||||
COPY . .
|
||||
|
||||
|
||||
@@ -54,6 +54,12 @@ type PostCpTaskExecuteReq struct {
|
||||
ExecuteDays []int `json:"execute_days"`
|
||||
}
|
||||
|
||||
type UpdateTaskTitleReq struct {
|
||||
g.Meta `path:"/task/title/{id}" method:"put" tags:"CpTask" summary:"修改任务标题"`
|
||||
Id int64 `json:"id"`
|
||||
Title string `json:"title" v:"required#标题不能为空"`
|
||||
}
|
||||
|
||||
type DeleteTaskReq struct {
|
||||
g.Meta `path:"/task/{id}" method:"delete" tags:"CpTask" summary:"删除任务"`
|
||||
Id int64 `json:"id"`
|
||||
|
||||
@@ -56,6 +56,11 @@ func (c CpTaskCtrlV1) Delete(ctx context.Context, req *v1.DeleteTaskReq) (res *u
|
||||
return service.Global.CpTask.Delete(ctx, req), nil
|
||||
}
|
||||
|
||||
func (c CpTaskCtrlV1) UpdateTaskTitle(ctx context.Context, req *v1.UpdateTaskTitleReq) (res *utils.Response[any], err error) {
|
||||
defer utils.Pass(&err)
|
||||
return service.Global.CpTask.UpdateTaskTitle(ctx, req), nil
|
||||
}
|
||||
|
||||
func (c CpTaskCtrlV1) ExecuteNow(ctx context.Context, req *v1.ExecuteNowReq) (res *utils.Response[any], err error) {
|
||||
defer utils.Pass(&err)
|
||||
return service.Global.CpTask.ExecuteNow(ctx, req), nil
|
||||
|
||||
@@ -19,6 +19,7 @@ type ICpTaskCtrlV1 interface {
|
||||
ExecuteNow(ctx context.Context, req *v1.ExecuteNowReq) (res *utils.Response[any], err error)
|
||||
PauseTask(ctx context.Context, req *v1.PauseTaskReq) (res *utils.Response[any], err error)
|
||||
FindLocation(ctx context.Context, req *v1.FindLocationReq) (res *utils.Response[any], err error)
|
||||
UpdateTaskTitle(ctx context.Context, req *v1.UpdateTaskTitleReq) (res *utils.Response[any], err error)
|
||||
GetTaskStatistics(ctx context.Context, req *v1.GetTaskStatisticsReq) (res *utils.Response[[]*v1.TaskStatisticsItem], err error)
|
||||
GetTaskStatisticsV2(ctx context.Context, req *v1.GetTaskStatisticsV2Req) (res *utils.Response[[]*v1.TaskStatisticsV2Item], err error)
|
||||
GetDashboardSummary(ctx context.Context, req *v1.GetDashboardSummaryReq) (res *utils.Response[*v1.DashboardSummary], err error)
|
||||
|
||||
@@ -216,6 +216,18 @@ func (v CpTaskServiceV1) PostExecute(ctx context.Context, req *v1.PostCpTaskExec
|
||||
return utils.SuccessWithMsg("更新成功")
|
||||
}
|
||||
|
||||
func (v CpTaskServiceV1) UpdateTaskTitle(ctx context.Context, req *v1.UpdateTaskTitleReq) *utils.Response[any] {
|
||||
user := utils.GetUserInfoFromCtx(ctx)
|
||||
cpTask := db2.Global.CpTask.Query().
|
||||
Where(cptask.ID(req.Id), cptask.HasSysUserWith(sysuser.ID(user.ID))).
|
||||
OnlyX(ctx)
|
||||
if cpTask == nil {
|
||||
utils.OkOrPanic(errors2.NewBusinessError(404, "任务不存在"))
|
||||
}
|
||||
db2.Global.CpTask.UpdateOne(cpTask).SetTitle(req.Title).ExecX(ctx)
|
||||
return utils.SuccessWithMsg("修改成功")
|
||||
}
|
||||
|
||||
func (v CpTaskServiceV1) Delete(ctx context.Context, req *v1.DeleteTaskReq) *utils.Response[any] {
|
||||
user := utils.GetUserInfoFromCtx(ctx)
|
||||
// 检测是否属于自己的cpTask
|
||||
|
||||
@@ -120,6 +120,43 @@ func NormalizeConfig(cfg EmailConfig) EmailConfig {
|
||||
return cfg
|
||||
}
|
||||
|
||||
func (s *EmailServiceV1) SaveAuthorizedOutlookConfig(ctx context.Context, cfg EmailConfig) error {
|
||||
cfg = NormalizeConfig(cfg)
|
||||
|
||||
configs := map[string]string{
|
||||
cst2.ConfigEmailAuthMode: AuthModeOutlookOAuth2,
|
||||
cst2.ConfigEmailFromEmail: cfg.FromEmail,
|
||||
cst2.ConfigEmailOAuthTenant: cfg.OAuthTenant,
|
||||
cst2.ConfigEmailOAuthClientID: cfg.OAuthClientID,
|
||||
cst2.ConfigEmailOAuthClientSecret: cfg.OAuthClientSecret,
|
||||
cst2.ConfigEmailOAuthRedirectURL: cfg.OAuthRedirectURL,
|
||||
cst2.ConfigEmailOAuthRefreshToken: cfg.OAuthRefreshToken,
|
||||
cst2.ConfigEmailOAuthScope: cfg.OAuthScope,
|
||||
}
|
||||
|
||||
for key, value := range configs {
|
||||
exists, err := db.Global.SysConfig.Query().Where(sysconfig.KeyEQ(key)).Exist(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if exists {
|
||||
if _, err = db.Global.SysConfig.Update().Where(sysconfig.KeyEQ(key)).SetValue(value).Save(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
continue
|
||||
}
|
||||
if _, err = db.Global.SysConfig.Create().
|
||||
SetKey(key).
|
||||
SetValue(value).
|
||||
SetDescription("邮件配置").
|
||||
Save(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *EmailServiceV1) ValidateConfig(cfg EmailConfig) error {
|
||||
cfg = NormalizeConfig(cfg)
|
||||
|
||||
|
||||
@@ -106,6 +106,14 @@ func (s *EmailServiceV1) ExchangeOutlookAuthorizeCode(ctx context.Context, state
|
||||
if token.RefreshToken == "" {
|
||||
return "", session.FrontendOrigin, fmt.Errorf("no refresh token returned, please ensure offline_access scope is granted")
|
||||
}
|
||||
|
||||
session.Config.AuthMode = AuthModeOutlookOAuth2
|
||||
session.Config.OAuthRedirectURL = session.CallbackURL
|
||||
session.Config.OAuthRefreshToken = token.RefreshToken
|
||||
if err = s.SaveAuthorizedOutlookConfig(ctx, session.Config); err != nil {
|
||||
return "", session.FrontendOrigin, err
|
||||
}
|
||||
|
||||
return token.RefreshToken, session.FrontendOrigin, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user