diff --git a/.gitignore b/.gitignore index ba2014b..9faf2e7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ logs pnpm-lock.yaml .env /public/file -.DS_Store \ No newline at end of file +.DS_Store +data \ No newline at end of file diff --git a/dist/modules/badWords/badWords.controller.js b/dist/modules/badWords/badWords.controller.js new file mode 100644 index 0000000..83ef24c --- /dev/null +++ b/dist/modules/badWords/badWords.controller.js @@ -0,0 +1,100 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BadWordsController = void 0; +const adminAuth_guard_1 = require("../../common/auth/adminAuth.guard"); +const superAuth_guard_1 = require("../../common/auth/superAuth.guard"); +const common_1 = require("@nestjs/common"); +const swagger_1 = require("@nestjs/swagger"); +const badWords_service_1 = require("./badWords.service"); +const addBadWords_dto_1 = require("./dto/addBadWords.dto"); +const delBadWords_dto_1 = require("./dto/delBadWords.dto"); +const queryBadWords_dto_1 = require("./dto/queryBadWords.dto"); +const queryViolation_dto_1 = require("./dto/queryViolation.dto"); +const updateBadWords_dto_1 = require("./dto/updateBadWords.dto"); +let BadWordsController = class BadWordsController { + constructor(badWordsService) { + this.badWordsService = badWordsService; + } + queryBadWords(query) { + return this.badWordsService.queryBadWords(query); + } + delBadWords(body) { + return this.badWordsService.delBadWords(body); + } + updateBadWords(body) { + return this.badWordsService.updateBadWords(body); + } + addBadWord(body) { + return this.badWordsService.addBadWord(body); + } + violation(req, query) { + return this.badWordsService.violation(req, query); + } +}; +__decorate([ + (0, common_1.Get)('query'), + (0, swagger_1.ApiOperation)({ summary: '查询所有敏感词' }), + __param(0, (0, common_1.Query)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [queryBadWords_dto_1.QueryBadWordsDto]), + __metadata("design:returntype", void 0) +], BadWordsController.prototype, "queryBadWords", null); +__decorate([ + (0, common_1.Post)('del'), + (0, swagger_1.ApiOperation)({ summary: '删除敏感词' }), + (0, common_1.UseGuards)(superAuth_guard_1.SuperAuthGuard), + (0, swagger_1.ApiBearerAuth)(), + __param(0, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [delBadWords_dto_1.DelBadWordsDto]), + __metadata("design:returntype", void 0) +], BadWordsController.prototype, "delBadWords", null); +__decorate([ + (0, common_1.Post)('update'), + (0, swagger_1.ApiOperation)({ summary: '更新敏感词' }), + (0, common_1.UseGuards)(superAuth_guard_1.SuperAuthGuard), + (0, swagger_1.ApiBearerAuth)(), + __param(0, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [updateBadWords_dto_1.UpdateBadWordsDto]), + __metadata("design:returntype", void 0) +], BadWordsController.prototype, "updateBadWords", null); +__decorate([ + (0, common_1.Post)('add'), + (0, swagger_1.ApiOperation)({ summary: '新增敏感词' }), + (0, common_1.UseGuards)(superAuth_guard_1.SuperAuthGuard), + (0, swagger_1.ApiBearerAuth)(), + __param(0, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [addBadWords_dto_1.AddBadWordDto]), + __metadata("design:returntype", void 0) +], BadWordsController.prototype, "addBadWord", null); +__decorate([ + (0, common_1.Get)('violation'), + (0, swagger_1.ApiOperation)({ summary: '查询违规记录' }), + (0, common_1.UseGuards)(adminAuth_guard_1.AdminAuthGuard), + (0, swagger_1.ApiBearerAuth)(), + __param(0, (0, common_1.Req)()), + __param(1, (0, common_1.Query)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, queryViolation_dto_1.QueryViolationDto]), + __metadata("design:returntype", void 0) +], BadWordsController.prototype, "violation", null); +BadWordsController = __decorate([ + (0, swagger_1.ApiTags)('badWords'), + (0, common_1.Controller)('badWords'), + __metadata("design:paramtypes", [badWords_service_1.BadWordsService]) +], BadWordsController); +exports.BadWordsController = BadWordsController; diff --git a/dist/modules/badWords/badWords.entity.js b/dist/modules/badWords/badWords.entity.js new file mode 100644 index 0000000..626ca33 --- /dev/null +++ b/dist/modules/badWords/badWords.entity.js @@ -0,0 +1,32 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BadWordsEntity = void 0; +const baseEntity_1 = require("../../common/entity/baseEntity"); +const typeorm_1 = require("typeorm"); +let BadWordsEntity = class BadWordsEntity extends baseEntity_1.BaseEntity { +}; +__decorate([ + (0, typeorm_1.Column)({ length: 20, comment: '敏感词' }), + __metadata("design:type", String) +], BadWordsEntity.prototype, "word", void 0); +__decorate([ + (0, typeorm_1.Column)({ default: 1, comment: '敏感词开启状态' }), + __metadata("design:type", Number) +], BadWordsEntity.prototype, "status", void 0); +__decorate([ + (0, typeorm_1.Column)({ default: 0, comment: '敏感词触发次数' }), + __metadata("design:type", Number) +], BadWordsEntity.prototype, "count", void 0); +BadWordsEntity = __decorate([ + (0, typeorm_1.Entity)({ name: 'bad_words' }) +], BadWordsEntity); +exports.BadWordsEntity = BadWordsEntity; diff --git a/dist/modules/badWords/badWords.module.js b/dist/modules/badWords/badWords.module.js new file mode 100644 index 0000000..1275fa9 --- /dev/null +++ b/dist/modules/badWords/badWords.module.js @@ -0,0 +1,30 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BadWordsModule = void 0; +const common_1 = require("@nestjs/common"); +const typeorm_1 = require("@nestjs/typeorm"); +const user_entity_1 = require("../user/user.entity"); +const badWords_controller_1 = require("./badWords.controller"); +const badWords_entity_1 = require("./badWords.entity"); +const badWords_service_1 = require("./badWords.service"); +const violationLog_entity_1 = require("./violationLog.entity"); +let BadWordsModule = class BadWordsModule { +}; +BadWordsModule = __decorate([ + (0, common_1.Global)(), + (0, common_1.Module)({ + imports: [ + typeorm_1.TypeOrmModule.forFeature([badWords_entity_1.BadWordsEntity, violationLog_entity_1.ViolationLogEntity, user_entity_1.UserEntity]), + ], + providers: [badWords_service_1.BadWordsService], + controllers: [badWords_controller_1.BadWordsController], + exports: [badWords_service_1.BadWordsService], + }) +], BadWordsModule); +exports.BadWordsModule = BadWordsModule; diff --git a/dist/modules/badWords/badWords.service.js b/dist/modules/badWords/badWords.service.js new file mode 100644 index 0000000..d6c5361 --- /dev/null +++ b/dist/modules/badWords/badWords.service.js @@ -0,0 +1,208 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BadWordsService = void 0; +const utils_1 = require("../../common/utils"); +const common_1 = require("@nestjs/common"); +const typeorm_1 = require("@nestjs/typeorm"); +const axios_1 = require("axios"); +const typeorm_2 = require("typeorm"); +const globalConfig_service_1 = require("../globalConfig/globalConfig.service"); +const user_entity_1 = require("../user/user.entity"); +const badWords_entity_1 = require("./badWords.entity"); +const violationLog_entity_1 = require("./violationLog.entity"); +let BadWordsService = class BadWordsService { + constructor(badWordsEntity, violationLogEntity, userEntity, globalConfigService) { + this.badWordsEntity = badWordsEntity; + this.violationLogEntity = violationLogEntity; + this.userEntity = userEntity; + this.globalConfigService = globalConfigService; + this.badWords = []; + } + async onModuleInit() { + this.loadBadWords(); + } + async customSensitiveWords(content, userId) { + const triggeredWords = []; + for (let i = 0; i < this.badWords.length; i++) { + const word = this.badWords[i]; + if (content.includes(word)) { + triggeredWords.push(word); + } + } + if (triggeredWords.length) { + await this.recordUserBadWords(userId, content, triggeredWords, ['自定义'], '自定义检测'); + } + return triggeredWords; + } + async checkBadWords(content, userId) { + const config = await this.globalConfigService.getSensitiveConfig(); + if (config) { + await this.checkBadWordsByConfig(content, config, userId); + } + return await this.customSensitiveWords(content, userId); + } + async checkBadWordsByConfig(content, config, userId) { + const { useType } = config; + useType === 'baidu' && + (await this.baiduCheckBadWords(content, config.baiduTextAccessToken, userId)); + } + extractContent(str) { + const pattern = /存在(.*?)不合规/; + const match = str.match(pattern); + return match ? match[1] : ''; + } + async baiduCheckBadWords(content, accessToken, userId) { + if (!accessToken) + return; + const url = `https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined?access_token=${accessToken}}`; + const headers = { + 'Content-Type': 'application/x-www-form-urlencoded', + Accept: 'application/json', + }; + const response = await axios_1.default.post(url, { text: content }, { headers }); + const { conclusion, error_code, error_msg, conclusionType, data } = response.data; + if (error_code) { + console.log('百度文本检测出现错误、请查看配置信息: ', error_msg); + } + if (conclusionType !== 1) { + const types = [ + ...new Set(data.map((item) => this.extractContent(item.msg))), + ]; + await this.recordUserBadWords(userId, content, ['***'], types, '百度云检测'); + const tips = `您提交的信息中包含${types.join(',')}的内容、我们已对您的账户进行标记、请合规使用!`; + throw new common_1.HttpException(tips, common_1.HttpStatus.BAD_REQUEST); + } + } + formarTips(wordList) { + const categorys = wordList.map((t) => t.category); + const unSet = [...new Set(categorys)]; + return `您提交的内容中包含${unSet.join(',')}的信息、我们已对您账号进行标记、请合规使用!`; + } + async loadBadWords() { + const data = await this.badWordsEntity.find({ + where: { status: 1 }, + select: ['word'], + }); + this.badWords = data.map((t) => t.word); + } + async queryBadWords(query) { + const { page = 1, size = 500, word, status } = query; + const where = {}; + [0, 1, '0', '1'].includes(status) && (where.status = status); + word && (where.word = (0, typeorm_2.Like)(`%${word}%`)); + const [rows, count] = await this.badWordsEntity.findAndCount({ + where, + skip: (page - 1) * size, + take: size, + order: { id: 'ASC' }, + }); + return { rows, count }; + } + async delBadWords(body) { + const b = await this.badWordsEntity.findOne({ where: { id: body.id } }); + if (!b) { + throw new common_1.HttpException('敏感词不存在,请检查您的提交信息', common_1.HttpStatus.BAD_REQUEST); + } + const res = await this.badWordsEntity.delete({ id: body.id }); + if (res.affected > 0) { + await this.loadBadWords(); + return '删除敏感词成功'; + } + else { + throw new common_1.HttpException('删除敏感词失败', common_1.HttpStatus.BAD_REQUEST); + } + } + async updateBadWords(body) { + const { id, word, status } = body; + const b = await this.badWordsEntity.findOne({ where: { word } }); + if (b) { + throw new common_1.HttpException('敏感词已经存在了、请勿重复添加', common_1.HttpStatus.BAD_REQUEST); + } + const res = await this.badWordsEntity.update({ id }, { word, status }); + if (res.affected > 0) { + await this.loadBadWords(); + return '更新敏感词成功'; + } + else { + throw new common_1.HttpException('更新敏感词失败', common_1.HttpStatus.BAD_REQUEST); + } + } + async addBadWord(body) { + const { word } = body; + const b = await this.badWordsEntity.findOne({ where: { word } }); + if (b) { + throw new common_1.HttpException('敏感词已存在,请检查您的提交信息', common_1.HttpStatus.BAD_REQUEST); + } + await this.badWordsEntity.save({ word }); + await this.loadBadWords(); + return '添加敏感词成功'; + } + async recordUserBadWords(userId, content, words, typeCn, typeOriginCn) { + const data = { + userId, + content, + words: JSON.stringify(words), + typeCn: JSON.stringify(typeCn), + typeOriginCn, + }; + try { + await this.userEntity + .createQueryBuilder() + .update(user_entity_1.UserEntity) + .set({ violationCount: () => 'violationCount + 1' }) + .where('id = :userId', { userId }) + .execute(); + await this.violationLogEntity.save(data); + } + catch (error) { + console.log('error: ', error); + } + } + async violation(req, query) { + const { role } = req.user; + const { page = 1, size = 10, userId, typeOriginCn } = query; + const where = {}; + userId && (where['userId'] = userId); + typeOriginCn && (where['typeOriginCn'] = typeOriginCn); + const [rows, count] = await this.violationLogEntity.findAndCount({ + where, + skip: (page - 1) * size, + take: size, + order: { id: 'DESC' }, + }); + const userIds = [...new Set(rows.map((t) => t.userId))]; + const usersInfo = await this.userEntity.find({ + where: { id: (0, typeorm_2.In)(userIds) }, + select: ['id', 'avatar', 'username', 'email', 'violationCount', 'status'], + }); + rows.forEach((t) => { + const user = usersInfo.find((u) => u.id === t.userId) || {}; + role !== 'super' && (user.email = (0, utils_1.hideString)(user.email)); + t.userInfo = user; + }); + return { rows, count }; + } +}; +BadWordsService = __decorate([ + (0, common_1.Injectable)(), + __param(0, (0, typeorm_1.InjectRepository)(badWords_entity_1.BadWordsEntity)), + __param(1, (0, typeorm_1.InjectRepository)(violationLog_entity_1.ViolationLogEntity)), + __param(2, (0, typeorm_1.InjectRepository)(user_entity_1.UserEntity)), + __metadata("design:paramtypes", [typeorm_2.Repository, + typeorm_2.Repository, + typeorm_2.Repository, + globalConfig_service_1.GlobalConfigService]) +], BadWordsService); +exports.BadWordsService = BadWordsService; diff --git a/dist/modules/badWords/dto/addBadWords.dto.js b/dist/modules/badWords/dto/addBadWords.dto.js new file mode 100644 index 0000000..cee5e14 --- /dev/null +++ b/dist/modules/badWords/dto/addBadWords.dto.js @@ -0,0 +1,20 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AddBadWordDto = void 0; +const swagger_1 = require("@nestjs/swagger"); +class AddBadWordDto { +} +__decorate([ + (0, swagger_1.ApiProperty)({ example: 'test', description: '敏感词', required: true }), + __metadata("design:type", String) +], AddBadWordDto.prototype, "word", void 0); +exports.AddBadWordDto = AddBadWordDto; diff --git a/dist/modules/badWords/dto/delBadWords.dto.js b/dist/modules/badWords/dto/delBadWords.dto.js new file mode 100644 index 0000000..af05fed --- /dev/null +++ b/dist/modules/badWords/dto/delBadWords.dto.js @@ -0,0 +1,20 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DelBadWordsDto = void 0; +const swagger_1 = require("@nestjs/swagger"); +class DelBadWordsDto { +} +__decorate([ + (0, swagger_1.ApiProperty)({ example: 1, description: '敏感词id', required: true }), + __metadata("design:type", Number) +], DelBadWordsDto.prototype, "id", void 0); +exports.DelBadWordsDto = DelBadWordsDto; diff --git a/dist/modules/badWords/dto/queryBadWords.dto.js b/dist/modules/badWords/dto/queryBadWords.dto.js new file mode 100644 index 0000000..a32266b --- /dev/null +++ b/dist/modules/badWords/dto/queryBadWords.dto.js @@ -0,0 +1,37 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.QueryBadWordsDto = void 0; +const class_validator_1 = require("class-validator"); +const swagger_1 = require("@nestjs/swagger"); +class QueryBadWordsDto { +} +__decorate([ + (0, swagger_1.ApiProperty)({ example: 1, description: '查询页数', required: false }), + (0, class_validator_1.IsOptional)(), + __metadata("design:type", Number) +], QueryBadWordsDto.prototype, "page", void 0); +__decorate([ + (0, swagger_1.ApiProperty)({ example: 10, description: '每页数量', required: false }), + (0, class_validator_1.IsOptional)(), + __metadata("design:type", Number) +], QueryBadWordsDto.prototype, "size", void 0); +__decorate([ + (0, swagger_1.ApiProperty)({ example: 'test', description: '敏感词内容', required: false }), + (0, class_validator_1.IsOptional)(), + __metadata("design:type", String) +], QueryBadWordsDto.prototype, "word", void 0); +__decorate([ + (0, swagger_1.ApiProperty)({ example: 1, description: '关键词状态', required: false }), + (0, class_validator_1.IsOptional)(), + __metadata("design:type", Number) +], QueryBadWordsDto.prototype, "status", void 0); +exports.QueryBadWordsDto = QueryBadWordsDto; diff --git a/dist/modules/badWords/dto/queryViolation.dto.js b/dist/modules/badWords/dto/queryViolation.dto.js new file mode 100644 index 0000000..cac1925 --- /dev/null +++ b/dist/modules/badWords/dto/queryViolation.dto.js @@ -0,0 +1,37 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.QueryViolationDto = void 0; +const class_validator_1 = require("class-validator"); +const swagger_1 = require("@nestjs/swagger"); +class QueryViolationDto { +} +__decorate([ + (0, swagger_1.ApiProperty)({ example: 1, description: '查询页数', required: false }), + (0, class_validator_1.IsOptional)(), + __metadata("design:type", Number) +], QueryViolationDto.prototype, "page", void 0); +__decorate([ + (0, swagger_1.ApiProperty)({ example: 10, description: '每页数量', required: false }), + (0, class_validator_1.IsOptional)(), + __metadata("design:type", Number) +], QueryViolationDto.prototype, "size", void 0); +__decorate([ + (0, swagger_1.ApiProperty)({ example: 1, description: '用户ID', required: false }), + (0, class_validator_1.IsOptional)(), + __metadata("design:type", Number) +], QueryViolationDto.prototype, "userId", void 0); +__decorate([ + (0, swagger_1.ApiProperty)({ example: '百度云检测', description: '检测平台来源', required: false }), + (0, class_validator_1.IsOptional)(), + __metadata("design:type", String) +], QueryViolationDto.prototype, "typeOriginCn", void 0); +exports.QueryViolationDto = QueryViolationDto; diff --git a/dist/modules/badWords/dto/updateBadWords.dto.js b/dist/modules/badWords/dto/updateBadWords.dto.js new file mode 100644 index 0000000..68115cf --- /dev/null +++ b/dist/modules/badWords/dto/updateBadWords.dto.js @@ -0,0 +1,32 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UpdateBadWordsDto = void 0; +const class_validator_1 = require("class-validator"); +const swagger_1 = require("@nestjs/swagger"); +class UpdateBadWordsDto { +} +__decorate([ + (0, swagger_1.ApiProperty)({ example: 1, description: '敏感词id', required: true }), + (0, class_validator_1.IsOptional)(), + __metadata("design:type", Number) +], UpdateBadWordsDto.prototype, "id", void 0); +__decorate([ + (0, swagger_1.ApiProperty)({ example: 'test', description: '敏感词内容', required: false }), + (0, class_validator_1.IsOptional)(), + __metadata("design:type", String) +], UpdateBadWordsDto.prototype, "word", void 0); +__decorate([ + (0, swagger_1.ApiProperty)({ example: 1, description: '关键词状态', required: false }), + (0, class_validator_1.IsOptional)(), + __metadata("design:type", Number) +], UpdateBadWordsDto.prototype, "status", void 0); +exports.UpdateBadWordsDto = UpdateBadWordsDto; diff --git a/dist/modules/badWords/violationLog.entity.js b/dist/modules/badWords/violationLog.entity.js new file mode 100644 index 0000000..9a983ff --- /dev/null +++ b/dist/modules/badWords/violationLog.entity.js @@ -0,0 +1,40 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ViolationLogEntity = void 0; +const typeorm_1 = require("typeorm"); +const baseEntity_1 = require("../../common/entity/baseEntity"); +let ViolationLogEntity = class ViolationLogEntity extends baseEntity_1.BaseEntity { +}; +__decorate([ + (0, typeorm_1.Column)({ comment: '用户id' }), + __metadata("design:type", Number) +], ViolationLogEntity.prototype, "userId", void 0); +__decorate([ + (0, typeorm_1.Column)({ comment: '违规内容', type: 'text' }), + __metadata("design:type", String) +], ViolationLogEntity.prototype, "content", void 0); +__decorate([ + (0, typeorm_1.Column)({ comment: '敏感词', type: 'text' }), + __metadata("design:type", String) +], ViolationLogEntity.prototype, "words", void 0); +__decorate([ + (0, typeorm_1.Column)({ comment: '违规类型' }), + __metadata("design:type", String) +], ViolationLogEntity.prototype, "typeCn", void 0); +__decorate([ + (0, typeorm_1.Column)({ comment: '违规检测失败于哪个平台' }), + __metadata("design:type", String) +], ViolationLogEntity.prototype, "typeOriginCn", void 0); +ViolationLogEntity = __decorate([ + (0, typeorm_1.Entity)({ name: 'violation_log' }) +], ViolationLogEntity); +exports.ViolationLogEntity = ViolationLogEntity; diff --git a/docker-compose.yml b/docker-compose.yml index eb0e969..4661828 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -31,6 +31,7 @@ services: 99ai: build: ./ + # image: vastxie/99ai:latest container_name: 99ai restart: always ports: diff --git a/src/service/src/main.ts b/src/service/src/main.ts index 2401164..c17aae2 100644 --- a/src/service/src/main.ts +++ b/src/service/src/main.ts @@ -9,10 +9,8 @@ import { NestFactory } from '@nestjs/core'; import * as compression from 'compression'; import { randomBytes } from 'crypto'; import * as Dotenv from 'dotenv'; -// import * as express from 'express'; import * as xmlBodyParser from 'express-xml-bodyparser'; import Redis from 'ioredis'; -// import { join } from 'path'; import { AppModule } from './app.module'; Dotenv.config({ path: '.env' });