mirror of
https://github.com/certd/certd.git
synced 2026-04-24 04:17:25 +08:00
perf: 邮箱设置改为系统设置,普通用户无需配置发件邮箱
This commit is contained in:
@@ -21,6 +21,7 @@ typeorm:
|
||||
dataSource:
|
||||
default:
|
||||
database: './data/db-comm.sqlite'
|
||||
|
||||
plus:
|
||||
server:
|
||||
baseUrls: ['https://api.ai.handsfree.work', 'https://api.ai.docmirror.cn']
|
||||
@@ -29,7 +30,7 @@ account:
|
||||
server:
|
||||
baseUrl: 'https://ai.handsfree.work/subject'
|
||||
|
||||
|
||||
#
|
||||
#plus:
|
||||
# server:
|
||||
# baseUrls: ['http://127.0.0.1:11007']
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import { Inject, Provide, Scope, ScopeEnum } from '@midwayjs/core';
|
||||
import type { EmailSend } from '@certd/pipeline';
|
||||
import { IEmailService, isPlus } from '@certd/pipeline';
|
||||
import { IEmailService, isPlus, logger } from '@certd/pipeline';
|
||||
import nodemailer from 'nodemailer';
|
||||
import type SMTPConnection from 'nodemailer/lib/smtp-connection';
|
||||
import { logger } from '@certd/pipeline';
|
||||
import { UserSettingsService } from '../../mine/service/user-settings-service.js';
|
||||
import { PlusService } from '@certd/lib-server';
|
||||
import { PlusService, SysEmailConf, SysSettingsService } from '@certd/lib-server';
|
||||
import { merge } from 'lodash-es';
|
||||
|
||||
export type EmailConfig = {
|
||||
host: string;
|
||||
@@ -27,6 +27,9 @@ export type EmailConfig = {
|
||||
export class EmailService implements IEmailService {
|
||||
@Inject()
|
||||
settingsService: UserSettingsService;
|
||||
|
||||
@Inject()
|
||||
sysSettingsService: SysSettingsService;
|
||||
@Inject()
|
||||
plusService: PlusService;
|
||||
|
||||
@@ -55,21 +58,30 @@ export class EmailService implements IEmailService {
|
||||
/**
|
||||
*/
|
||||
async send(email: EmailSend) {
|
||||
console.log('sendEmail', email);
|
||||
logger.info('sendEmail', email);
|
||||
|
||||
const emailConfigEntity = await this.settingsService.getByKey('email', email.userId);
|
||||
if (emailConfigEntity == null || !emailConfigEntity.setting) {
|
||||
const emailConf = await this.sysSettingsService.getSetting<SysEmailConf>(SysEmailConf);
|
||||
if (!emailConf.host && emailConf.usePlus != null) {
|
||||
const emailConfigEntity = await this.settingsService.getByKey('email', 1);
|
||||
if (emailConfigEntity) {
|
||||
const emailConfig = JSON.parse(emailConfigEntity.setting) as EmailConfig;
|
||||
merge(emailConf, emailConfig);
|
||||
await this.sysSettingsService.saveSetting(emailConf);
|
||||
}
|
||||
}
|
||||
|
||||
if (!emailConf.host) {
|
||||
if (isPlus()) {
|
||||
//自动使用plus发邮件
|
||||
return await this.sendByPlus(email);
|
||||
}
|
||||
throw new Error('email settings 未设置');
|
||||
throw new Error('email settings 还未设置');
|
||||
}
|
||||
const emailConfig = JSON.parse(emailConfigEntity.setting) as EmailConfig;
|
||||
if (emailConfig.usePlus && isPlus()) {
|
||||
|
||||
if (emailConf.usePlus && isPlus()) {
|
||||
return await this.sendByPlus(email);
|
||||
}
|
||||
await this.sendByCustom(emailConfig, email);
|
||||
await this.sendByCustom(emailConf, email);
|
||||
logger.info('sendEmail complete: ', email);
|
||||
}
|
||||
|
||||
|
||||
+20
-1
@@ -1,10 +1,11 @@
|
||||
import { ALL, Body, Controller, Inject, Post, Provide, Query } from '@midwayjs/core';
|
||||
import { CrudController } from '@certd/lib-server';
|
||||
import { CrudController, SysEmailConf } from '@certd/lib-server';
|
||||
import { SysSettingsService } from '@certd/lib-server';
|
||||
import { SysSettingsEntity } from '../entity/sys-settings.js';
|
||||
import { SysPublicSettings } from '@certd/lib-server';
|
||||
import * as _ from 'lodash-es';
|
||||
import { PipelineService } from '../../../pipeline/service/pipeline-service.js';
|
||||
import { UserSettingsService } from '../../../mine/service/user-settings-service.js';
|
||||
|
||||
/**
|
||||
*/
|
||||
@@ -14,6 +15,8 @@ export class SysSettingsController extends CrudController<SysSettingsService> {
|
||||
@Inject()
|
||||
service: SysSettingsService;
|
||||
@Inject()
|
||||
userSettingsService: UserSettingsService;
|
||||
@Inject()
|
||||
pipelineService: PipelineService;
|
||||
|
||||
getService() {
|
||||
@@ -68,6 +71,22 @@ export class SysSettingsController extends CrudController<SysSettingsService> {
|
||||
return this.ok(entity);
|
||||
}
|
||||
|
||||
// savePublicSettings
|
||||
@Post('/getEmailSettings', { summary: 'sys:settings:edit' })
|
||||
async getEmailSettings(@Body(ALL) body) {
|
||||
let conf = await this.service.getSetting<SysEmailConf>(SysEmailConf);
|
||||
if (!conf.host && conf.usePlus != null) {
|
||||
//到userSetting里面去找
|
||||
const adminEmailSetting = await this.userSettingsService.getByKey('email', 1);
|
||||
if (adminEmailSetting) {
|
||||
const setting = JSON.parse(adminEmailSetting.setting);
|
||||
conf = _.merge(conf, setting);
|
||||
await this.service.saveSetting(conf);
|
||||
}
|
||||
}
|
||||
return this.ok(conf);
|
||||
}
|
||||
|
||||
// savePublicSettings
|
||||
@Post('/savePublicSettings', { summary: 'sys:settings:edit' })
|
||||
async savePublicSettings(@Body(ALL) body) {
|
||||
|
||||
Reference in New Issue
Block a user