ソースを参照

fix 不主动签到

zoujiajian 2 年 前
コミット
34aefb0a2b

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/model/entity/SignUser.java

@@ -21,7 +21,7 @@ public class SignUser extends BaseEntity{
     private Integer dayPeriod;
 
     /**
-     * 是否已签 true 签到成功 false 签到
+     * 是否已签 true 签到成功 false 签到
      */
     @TableField(exist = false)
     private Boolean isHadChecked;

+ 18 - 8
netflix-service/src/main/java/com/cyksj/service/market/impl/MarketFrontServiceImpl.java

@@ -51,7 +51,6 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Optional;
 import java.util.concurrent.ThreadLocalRandom;
 
 @Service
@@ -140,12 +139,23 @@ public class MarketFrontServiceImpl implements MarketFrontService {
 	public SignUser getUserSignDetail(Long userId) {
 		SignUser signUser = signUserMapper.selectOne(Wrappers.lambdaQuery(SignUser.class)
 				.eq(SignUser::getUserId, userId).last("limit 1"));
-		if (signUser == null || signUser.getUpdateTime().before(DateUtil.beginOfDay(DateTime.now()))) {
-			signUser = Optional.ofNullable(signUser).orElseGet(() -> {
-				SignUser user = new SignUser();
-				user.setDay(0);
-				return user;
-			});
+		if (signUser == null) {
+			signUser = new SignUser();
+			signUser.setUserId(userId);
+			signUser.setDay(0);
+			signUser.setDayPeriod(0);
+			signUser.setIsHadChecked(false);
+			return signUser;
+		}
+		Date updateTime = signUser.getUpdateTime();
+		DateTime signZero = DateUtil.beginOfDay(updateTime);
+		DateTime thisZero = DateUtil.beginOfDay(DateTime.now());
+		if (updateTime.getTime() < thisZero.getTime()) {
+			if (thisZero.getTime() - signZero.getTime() != Constant.DAY_MILLS) {
+				log.info("用户:{}断签,断签天数为:{}", signUser.getUserId(), signUser.getDayPeriod());
+				signUser.setDay(0);
+				signUser.setDayPeriod(0);
+			}
 			signUser.setIsHadChecked(false);
 		} else {
 			signUser.setIsHadChecked(true);
@@ -372,7 +382,7 @@ public class MarketFrontServiceImpl implements MarketFrontService {
 		DateTime signZero = DateUtil.beginOfDay(updateTime);
 		DateTime thisZero = DateUtil.beginOfDay(DateTime.now());
 		if (updateTime.getTime() >= thisZero.getTime()) {
-			signUser.setIsHadChecked(false);
+			signUser.setIsHadChecked(true);
 //            throw BusinessRuntimeException.getInstance("您已签到");
 		} else {
 			if (updateTime.before(thisZero) && thisZero.getTime() - signZero.getTime() == Constant.DAY_MILLS) {

+ 2 - 2
netflix-web/src/main/java/com/cyksj/web/controller/market/SignFrontController.java

@@ -52,10 +52,10 @@ public class SignFrontController {
      * 每日签到
      */
     @PostMapping("/post")
-    public Result<Integer> sign() {
+    public Result<SignUser> sign() {
         Long userId = StpUserUtil.getLoginIdAsLong();
         SignUser signUser = marketFrontService.signByUserId(userId);
-        return GatewayResponse.SUCCESS.newBuilder().setMsg("签到成功").toResult(signUser.getDayPeriod());
+        return GatewayResponse.SUCCESS.newBuilder().setMsg("签到成功").toResult(signUser);
     }
 
     /**