|
|
@ -1,5 +1,4 @@ |
|
|
|
let Classify = syzoj.model('classify'); |
|
|
|
let Classify = syzoj.model('classify'); |
|
|
|
let JudgeState = syzoj.model('judge_state'); |
|
|
|
|
|
|
|
let Problem = syzoj.model('problem'); |
|
|
|
let Problem = syzoj.model('problem'); |
|
|
|
let CToP = syzoj.model('classify_to_problem'); |
|
|
|
let CToP = syzoj.model('classify_to_problem'); |
|
|
|
let Article = syzoj.model('article'); |
|
|
|
let Article = syzoj.model('article'); |
|
|
@ -177,7 +176,6 @@ app.get('/api/pass/:cid/:pid/:sid',async (req, res) => { |
|
|
|
let utopQuery = UToP.createQueryBuilder(); |
|
|
|
let utopQuery = UToP.createQueryBuilder(); |
|
|
|
let query = Classify.createQueryBuilder(); |
|
|
|
let query = Classify.createQueryBuilder(); |
|
|
|
let userQuery = User.createQueryBuilder(); |
|
|
|
let userQuery = User.createQueryBuilder(); |
|
|
|
let judgeStateQuery = JudgeState.createQueryBuilder(); |
|
|
|
|
|
|
|
let classify = await Classify.queryAll(query); |
|
|
|
let classify = await Classify.queryAll(query); |
|
|
|
classify.sort(function(a,b) { |
|
|
|
classify.sort(function(a,b) { |
|
|
|
return a.order - b.order; |
|
|
|
return a.order - b.order; |
|
|
@ -201,26 +199,15 @@ app.get('/api/pass/:cid/:pid/:sid',async (req, res) => { |
|
|
|
await utop.save(); |
|
|
|
await utop.save(); |
|
|
|
} |
|
|
|
} |
|
|
|
let newutopQuery = UToP.createQueryBuilder(); |
|
|
|
let newutopQuery = UToP.createQueryBuilder(); |
|
|
|
let userACArray = await newutopQuery.select("p_id").where('u_id=:u_id',{u_id}).andWhere("is_finished=1").getRawMany(); |
|
|
|
let userACArray = await newutopQuery.where('u_id=:u_id',{u_id}).andWhere("is_finished=1").getMany(); |
|
|
|
|
|
|
|
console.log(userACArray.length); |
|
|
|
if (syzoj.config.practice_rating) { |
|
|
|
if (syzoj.config.practice_rating) { |
|
|
|
const scoreArray = await judgeStateQuery.select("score").addSelect("problem_id").where("user_id=:u_id",{u_id}).andWhere("type=2").andWhere("score>=100").getRawMany(); |
|
|
|
|
|
|
|
let newScore = 0; |
|
|
|
|
|
|
|
if (scoreArray && scoreArray.length !== 0) { |
|
|
|
|
|
|
|
let num = 0; |
|
|
|
|
|
|
|
for(let i=0;i<userACArray.length;i++){ |
|
|
|
|
|
|
|
const problem_id = userACArray[i].p_id; |
|
|
|
|
|
|
|
const item = scoreArray.find(item => item.problem_id === problem_id) |
|
|
|
|
|
|
|
num+=parseInt(item.score); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
newScore = num - userACArray.length * 100; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
const originRating = syzoj.config.default.user.rating; |
|
|
|
const originRating = syzoj.config.default.user.rating; |
|
|
|
const newRating = originRating + newScore; |
|
|
|
const newRating = originRating + userACArray.length * syzoj.config.practice_rating; |
|
|
|
await userQuery.update(User).set({rating: newRating}).where('id=:u_id',{u_id}).execute(); |
|
|
|
await userQuery.update(User).set({rating: newRating}).where('id=:u_id',{u_id}).execute(); |
|
|
|
res.send({newRating: newRating}); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
res.send(); |
|
|
|
} catch(e) { |
|
|
|
} catch(e) { |
|
|
|
console.log(e); |
|
|
|
|
|
|
|
res.send({ error_code: e.errno, error_msg: '练习失败,请稍后重试' }); |
|
|
|
res.send({ error_code: e.errno, error_msg: '练习失败,请稍后重试' }); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|