新增注册码、草稿箱、权限拦截邮件、发件菜单隐藏
This commit is contained in:
100
mail-worker/src/service/reg-key-service.js
Normal file
100
mail-worker/src/service/reg-key-service.js
Normal file
@@ -0,0 +1,100 @@
|
||||
import orm from '../entity/orm';
|
||||
import regKey from '../entity/reg-key';
|
||||
import { inArray, like, eq, desc, sql, or } from 'drizzle-orm';
|
||||
import roleService from './role-service';
|
||||
import BizError from '../error/biz-error';
|
||||
import { formatDetailDate, toUtc } from '../utils/date-uitil';
|
||||
import userService from './user-service';
|
||||
const regKeyService = {
|
||||
|
||||
async add(c, params, userId) {
|
||||
|
||||
let {code,roleId,count,expireTime} = params;
|
||||
|
||||
if (!code) {
|
||||
throw new BizError('注册码不能为空');
|
||||
}
|
||||
|
||||
if (!count) {
|
||||
throw new BizError('使用次数不能为空');
|
||||
}
|
||||
|
||||
if (!expireTime) {
|
||||
throw new BizError('有效时间不能为空');
|
||||
}
|
||||
|
||||
const regKeyRow = await orm(c).select().from(regKey).where(eq(regKey.code, code)).get();
|
||||
|
||||
if (regKeyRow) {
|
||||
throw new BizError('注册码已存在');
|
||||
}
|
||||
|
||||
const roleRow = roleService.selectById(c, roleId);
|
||||
if (!roleRow) {
|
||||
throw new BizError('权限身份不存在');
|
||||
}
|
||||
|
||||
expireTime = formatDetailDate(expireTime)
|
||||
|
||||
await orm(c).insert(regKey).values({code,roleId,count,userId,expireTime}).run();
|
||||
},
|
||||
|
||||
async delete(c, params) {
|
||||
let {regKeyIds} = params;
|
||||
regKeyIds = regKeyIds.split(',').map(id => Number(id));
|
||||
await orm(c).delete(regKey).where(inArray(regKey.regKeyId,regKeyIds)).run();
|
||||
},
|
||||
|
||||
async clearNotUse(c) {
|
||||
let now = formatDetailDate(toUtc().tz('Asia/Shanghai').startOf('day'))
|
||||
await orm(c).delete(regKey).where(or(eq(regKey.count, 0),sql`datetime(${regKey.expireTime}, '+8 hours') < datetime(${now})`)).run();
|
||||
},
|
||||
|
||||
selectByCode(c, code) {
|
||||
return orm(c).select().from(regKey).where(eq(regKey.code, code)).get();
|
||||
},
|
||||
|
||||
async list(c, params) {
|
||||
|
||||
const {code} = params
|
||||
let query = orm(c).select().from(regKey)
|
||||
|
||||
if (code) {
|
||||
query = query.where(like(regKey.code, `${code}%`))
|
||||
}
|
||||
|
||||
const regKeyList = await query.orderBy(desc(regKey.regKeyId)).all();
|
||||
const roleList = await roleService.roleSelectUse(c);
|
||||
|
||||
const today = toUtc().tz('Asia/Shanghai').startOf('day')
|
||||
|
||||
regKeyList.forEach(regKeyRow => {
|
||||
|
||||
const index = roleList.findIndex(roleRow => roleRow.roleId === regKeyRow.roleId)
|
||||
regKeyRow.roleName = index > -1 ? roleList[index].name : ''
|
||||
|
||||
const expireTime = toUtc(regKeyRow.expireTime).tz('Asia/Shanghai').startOf('day');
|
||||
|
||||
if (expireTime.isBefore(today)) {
|
||||
regKeyRow.expireTime = null
|
||||
}
|
||||
})
|
||||
|
||||
return regKeyList;
|
||||
},
|
||||
|
||||
async reduceCount(c, code, count) {
|
||||
await orm(c).update(regKey).set({
|
||||
count: sql`${regKey.count}
|
||||
-
|
||||
${count}`
|
||||
}).where(eq(regKey.code, code)).run();
|
||||
},
|
||||
|
||||
async history(c, params) {
|
||||
const { regKeyId } = params;
|
||||
return userService.listByRegKeyId(c, regKeyId);
|
||||
}
|
||||
}
|
||||
|
||||
export default regKeyService;
|
||||
Reference in New Issue
Block a user