'use strict' ;
const moment = require ( 'moment' )
async function inspection ( ctx ) {
// 巡查
try {
const models = ctx . fs . dc . models ;
const { projectAppId , screenshot = [ ] , } = ctx . request . body
const now = moment ( ) . format ( )
const storageData = screenshot . map ( s => {
return {
projectAppId ,
screenshot : s . url ,
createTime : now ,
description : s . description ,
}
} )
await models . AppInspection . bulkCreate ( storageData )
ctx . status = 204 ;
} catch ( error ) {
ctx . fs . logger . error ( ` path: ${ ctx . path } , error: ${ error } ` ) ;
ctx . status = 400 ;
ctx . body = {
message : typeof error == 'string' ? error : undefined
}
}
}
async function inspectionList ( ctx ) {
try {
const models = ctx . fs . dc . models ;
const { clickHouse } = ctx . app . fs
const { timeStart , timeEnd , projectId , appId , noted } = ctx . query
let findOption = {
where : {
} ,
order : [ [ 'id' , 'DESC' ] ] ,
include : [ {
model : models . ProjectApp ,
required : true ,
where : appId ? {
id : appId
} : undefined ,
include : {
model : models . ProjectCorrelation ,
required : true ,
where : Object . assign ( { } ,
{
del : false
} ,
projectId ?
{
id : projectId
} :
{ }
) ,
attributes : {
exclude : [ 'anxinProjectId' , 'createTime' , 'createUser' ]
}
}
} ]
}
if ( timeStart && timeEnd ) {
findOption . where . createTime = { $between : [ moment ( timeStart ) . format ( ) , moment ( timeEnd ) . format ( ) ] }
}
if ( noted ) {
if ( noted == 'noted' ) {
findOption . where . notedTime = { $ne : null }
} else if ( noted == 'unnote' ) {
findOption . where . notedTime = null
}
}
const inspectionRes = await models . AppInspection . findAll ( findOption )
let notedUserIds = new Set ( )
for ( let ins of inspectionRes ) {
if ( ins . notedPepUserId ) {
notedUserIds . add ( ins . notedPepUserId )
}
}
let userPepRes = notedUserIds . size ?
await clickHouse . pepEmis . query ( ` SELECT DISTINCT user.id AS id, "user"."name" AS name FROM user WHERE user.id IN ( ${ [ ... notedUserIds ] . join ( ',' ) } ) ` ) . toPromise ( ) :
[ ]
for ( let ins of inspectionRes ) {
if ( ins . notedPepUserId ) {
const corUser = userPepRes . find ( up => up . id == ins . notedPepUserId )
ins . dataValues . notedPepUser = corUser ? corUser . name : ''
}
}
ctx . status = 200 ;
ctx . body = inspectionRes
} catch ( error ) {
ctx . fs . logger . error ( ` path: ${ ctx . path } , error: ${ error } ` ) ;
ctx . status = 400 ;
ctx . body = {
message : typeof error == 'string' ? error : undefined
}
}
}
async function notedInspection ( ctx ) {
try {
const models = ctx . fs . dc . models ;
const { inspectionId } = ctx . request . body
const { userId } = ctx . fs . api
await models . AppInspection . update ( {
notedPepUserId : userId ,
notedTime : moment ( ) . format ( )
} , {
where : {
id : inspectionId
}
} )
ctx . status = 204 ;
} catch ( error ) {
ctx . fs . logger . error ( ` path: ${ ctx . path } , error: ${ error } ` ) ;
ctx . status = 400 ;
ctx . body = {
message : typeof error == 'string' ? error : undefined
}
}
}
async function apiError ( ctx ) {
try {
const models = ctx . fs . dc . models ;
const { projectAppId , alarmContent , router , statusCode , screenshot = '' } = ctx . request . body
const now = moment ( ) . format ( )
let storageData = {
projectAppId , alarmContent , router , statusCode
}
const existRes = await models . AppAlarm . findOne ( {
where : {
projectAppId , alarmContent , router , statusCode ,
confirm : null
}
} )
if ( existRes ) {
await models . AppAlarm . update ( {
updateTime : now
} , {
where : {
id : existRes . id
}
} )
} else {
const existCount = await models . AppAlarm . count ( {
where : {
}
} )
storageData . serialNumber = 'WEB' + ( existCount < 9 ? '0' + ( existCount + 1 ) : existCount )
storageData . createTime = now
storageData . screenshot = screenshot
await models . AppAlarm . create ( storageData )
}
ctx . status = 200 ;
} catch ( error ) {
ctx . fs . logger . error ( ` path: ${ ctx . path } , error: ${ error } ` ) ;
ctx . status = 400 ;
ctx . body = {
message : typeof error == 'string' ? error : undefined
}
}
}
async function apiErrorList ( ctx ) {
try {
const models = ctx . fs . dc . models ;
const { clickHouse } = ctx . app . fs
const { } = ctx . query
ctx . status = 200 ;
ctx . body = [ ]
} catch ( error ) {
ctx . fs . logger . error ( ` path: ${ ctx . path } , error: ${ error } ` ) ;
ctx . status = 400 ;
ctx . body = {
message : typeof error == 'string' ? error : undefined
}
}
}
async function confirmApiError ( ctx ) {
try {
const models = ctx . fs . dc . models ;
const { confirm , appAlarmId } = ctx . request . body
await models . AppAlarm . update ( {
confirm ,
} , {
where : {
id : appAlarmId
}
} )
ctx . status = 204 ;
} catch ( error ) {
ctx . fs . logger . error ( ` path: ${ ctx . path } , error: ${ error } ` ) ;
ctx . status = 400 ;
ctx . body = {
message : typeof error == 'string' ? error : undefined
}
}
}
module . exports = {
inspection ,
inspectionList ,
notedInspection ,
apiError ,
apiErrorList ,
confirmApiError ,
} ;