闽公网安备 35020302035485号

@Override
public RelationActivityRecord clock(String userId, ClockDto clockDto) {
// 判断活动是否有效
RelationActivity relationActivity =
relationActivityService.getRelationActivity(clockDto.getActivityId(),
clockDto.getActivityType());
Date now = new Date();
if (now.before(relationActivity.getStartTime())) {
throw new BadRequestException(ErrorEnum.WRONG_ARGUMENTS, "活动还未开始,请耐心等待~");
}
if (now.after(relationActivity.getEndTime())) {
throw new BadRequestException(ErrorEnum.WRONG_ARGUMENTS, "活动已结束,可在主页查看个人作品哦~");
}
// 本次打卡获得积分
int score= 0;
// 当天的0点时间
Date toDay = DateUtil.beginOfDay(now);
if (Objects.equals(clockDto.getActivityType(), 1)
&& Objects.equals(clockDto.getClockType(), 1)) {
// 查询累计打卡次数
CurrentClockRecordVo clockRecordStat = this.currentRecord(userId,
clockDto.getActivityId(), clockDto.getActivityType(),
);
// 当天第一次的打卡,可以攒一个积分
if (clockRecordStat.getLastTime() != null && clockRecordStat.getLastTime().before(toDay)
&& clockRecordStat.getNum() < 100) {
score = 1;
}
} else if (Objects.equals(clockDto.getActivityType(), 1)) {
// 其他的活动之类...
throw new BadRequestException(ErrorEnum.WRONG_ARGUMENTS, "活动暂未开放");
} else {
throw new BadRequestException(ErrorEnum.WRONG_ARGUMENTS, "未知活动");
}
// 保存打卡记录
RelationActivityRecord newClockRecord = new RelationActivityRecord();
newClockRecord.setStudentId(userId);
newClockRecord.setActivityId(clockDto.getActivityId());
newClockRecord.setActivityType(clockDto.getActivityType());
newClockRecord.setClockType(clockDto.getClockType());
newClockRecord.setCreateTime(now);
newClockRecord.setContent(clockDto.getContent());
newClockRecord.setEnergy(energy);
newClockRecord.setVideoId(clockDto.getVideoId());
newClockRecord.setIntro(clockDto.getIntro());
this.save(newClockRecord);
// 有积分可以攒到学生账户上
if (score> 0) {
activityStudentService.addScore(clockDto.getActivityId(), userId, score);
}
return newClockRecord;
}
冷静冷静再次喝口水,遇到问题先找找外部原因,是不是springboot默认的tomcat最大连接数之类的默认值太小,项目里是没有重新配置的,但是一想前些天看过一个视频说,默认的都是8192最大连接数,那不改配置也是嘎嘎够用的。谨慎起见,写一个随便执行几条语句,不连接数据库的接口压测一下,一开始有1000多并发,然后积攒的排队请求多了之后,并发逐渐下降到600,正常合理,处理不过的请求会排队没办法,除非加大线程数的配置:









