Commit 8a09e898 authored by shiyu's avatar shiyu

签到前置校验

parent e6798523
......@@ -11,7 +11,6 @@ import com.wwdz.ch.db.dao.distribution.DistributionOrderDao;
import com.wwdz.ch.db.dao.qiandao.QdUserSignInDao;
import com.wwdz.ch.db.dao.qiandao.QdUserSignInNoteDao;
import com.wwdz.ch.db.dao.qiandao.SignInTaskDao;
import com.wwdz.ch.db.domain.UserSignIn;
import com.wwdz.ch.db.domain.distribution.DistributionOrder;
import com.wwdz.ch.db.domain.qiandao.QdUserSignIn;
import com.wwdz.ch.db.domain.qiandao.QdUserSignInNote;
......@@ -24,7 +23,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
......@@ -54,6 +52,42 @@ public class QdUserSignInServiceImpl implements QdUserSignInService {
@Autowired
QdUserSignInNoteDao qdUserSignInNoteDao;
@Override
public Result check(QdUserSignInRequestDto dto) {
try {
long userId = dto.getUserId();
Long taskId = dto.getTaskId() == null ? CommConsts.DEFAULT_TASK_ID : dto.getTaskId();
SignInTask signInTask = signInTaskDao.findById(taskId);
//签到目标天数
int goalDays = signInTask.getGoalDays();
//检查是否已签到过
String todayStr = DateUtils.DATE.format(LocalDate.now());
if (qdUserSignInDao.isExisted(userId, todayStr, taskId)) {
return Result.failed("今天已打过卡");
}
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("H:mm");
SimpleDateFormat timeFormat = new SimpleDateFormat("H:mm");
if (signInTask.getSignInStartTime() != null && signInTask.getSignInEndTime() != null) {
String start = timeFormat.format(signInTask.getSignInStartTime());
String end = timeFormat.format(signInTask.getSignInEndTime());
LocalTime localTime = LocalTime.parse(start, dateTimeFormatter);
LocalDate today = LocalDate.now();
LocalDateTime todayStartTime = today.atTime(localTime);
LocalTime endlocalTime = LocalTime.parse(end, dateTimeFormatter);
LocalDateTime todayEndTime = today.atTime(endlocalTime);
LocalDateTime nowTime = LocalDateTime.now();
if (nowTime.isBefore(todayStartTime) || nowTime.isAfter(todayEndTime)) {
return Result.failed("非打卡时段");
}
}
return Result.success();
} catch (Exception e) {
logger.error("签到前置检测失败 error:{}", e);
}
return Result.failed();
}
@Override
public Result signIn(QdUserSignInRequestDto dto) {
try {
......
......@@ -5,6 +5,14 @@ import com.wwdz.ch.db.dto.request.qiandao.QdUserSignInRequestDto;
public interface QdUserSignInService {
/**
* 签到前置校验
* @param dto
* @return
*/
Result check(QdUserSignInRequestDto dto);
/**
* 签到
* @param dto
......
......@@ -31,6 +31,18 @@ public class QdUserSignInController {
@Autowired
QdUserSignInService qdUserSignInService;
@ApiOperation(value = "签到前置校验")
@PostMapping("/check")
public Object check(@RequestBody QdUserSignInRequestDto dto) {
logger.info("【请求开始】签到前置校验,请求参数:{}", JSON.toJSONString(dto));
if (dto.getUserId() == null) {
return Result.failed(ResultCode.PARAM_ERROR);
}
return qdUserSignInService.check(dto);
}
@ApiOperation(value = "乾岛签到")
@PostMapping("/signIn")
public Object signIn(@RequestBody QdUserSignInRequestDto dto) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment