Browse Source

update: 修改签到, 添加月份筛选

gaohp 1 year ago
parent
commit
38da865de8

+ 3 - 6
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/controller/app/signin/AppMemberSignInRecordController.java

@@ -13,10 +13,7 @@ import cn.newfeifan.mall.module.member.service.signin.MemberSignInRecordService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 
@@ -43,8 +40,8 @@ public class AppMemberSignInRecordController {
     @GetMapping("/get-own-signInMoon")
     @Operation(summary = "获取个人当月签到进度")
     @PreAuthenticated
-    public CommonResult<AppMemberSignInConfigMoonRespVO> getOwnSignInMoon() {
-        AppMemberSignInConfigMoonRespVO appMemberSignInConfigMoonRespVO = signInRecordService.getOwnSignInMoon(getLoginUserId());
+    public CommonResult<AppMemberSignInConfigMoonRespVO> getOwnSignInMoon(@RequestParam("month") String month) {
+        AppMemberSignInConfigMoonRespVO appMemberSignInConfigMoonRespVO = signInRecordService.getOwnSignInMoon(getLoginUserId(),month);
         return success(appMemberSignInConfigMoonRespVO);
     }
 

+ 8 - 11
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/convert/signin/MemberSignInRecordConvert.java

@@ -48,24 +48,21 @@ public interface MemberSignInRecordConvert {
     default MemberSignInRecordDO convert(Long userId, MemberSignInRecordDO lastRecord, List<MemberSignInConfigDO> configs) {
         // 1. 计算是第几天签到
         configs.sort(Comparator.comparing(MemberSignInConfigDO::getDay));
-        MemberSignInConfigDO lastConfig = CollUtil.getLast(configs); // 最大签到天数配置
+//        MemberSignInConfigDO lastConfig = CollUtil.getLast(configs); // 最大签到天数配置
         // 1.2. 计算今天是第几天签到 (只有连续签到才加否则重置为 1)
-        int day = 1;
+
         // 获取当月对应的天数
         LocalDate today = LocalDate.now();
-        day = today.getDayOfMonth();
-
-        /*if (lastRecord != null && DateUtils.isYesterday(lastRecord.getCreateTime())) {
-            day = lastRecord.getDay() + 1;
-        }*/
-        // 1.3 判断是否超出了最大签到配置
-        if (day > lastConfig.getDay()) {
-            day = 1; // 超过最大配置的天数,重置到第一天。(也就是说开启下一轮签到)
-        }
+        int  day = today.getDayOfMonth();
 
         // 2.1 初始化签到信息
         MemberSignInRecordDO record = new MemberSignInRecordDO().setUserId(userId)
                 .setDay(day).setPoint(0).setExperience(0);
+
+        if (lastRecord != null && DateUtils.isYesterday(lastRecord.getCreateTime())) {
+            record.setContinueDay(lastRecord.getContinueDay() + 1);
+        }
+
         // 2.2 获取签到对应的积分
         MemberSignInConfigDO config = CollUtil.findOne(configs, item -> ObjUtil.equal(item.getDay(), record.getDay()));
         if (config == null) {

+ 4 - 0
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/dal/dataobject/signin/MemberSignInRecordDO.java

@@ -42,5 +42,9 @@ public class MemberSignInRecordDO extends BaseDO {
      * 签到的经验
      */
     private Integer experience;
+    /**
+     * 连续签到的天数
+     */
+    private Integer continueDay;
 
 }

+ 3 - 1
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/service/signin/MemberSignInRecordService.java

@@ -50,9 +50,11 @@ public interface MemberSignInRecordService {
 
     /**
      * 获取当前登录用户当月的登录信息
+     *
      * @param loginUserId
+     * @param month
      * @return
      */
-    AppMemberSignInConfigMoonRespVO getOwnSignInMoon(Long loginUserId);
+    AppMemberSignInConfigMoonRespVO getOwnSignInMoon(Long loginUserId, String month);
 
 }

+ 10 - 2
feifan-module-member/feifan-module-member-biz/src/main/java/cn/newfeifan/mall/module/member/service/signin/MemberSignInRecordServiceImpl.java

@@ -29,7 +29,9 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.time.LocalDate;
+import java.time.YearMonth;
 import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -87,18 +89,24 @@ public class MemberSignInRecordServiceImpl implements MemberSignInRecordService
             return summary;
         }
         // 4.2 连续签到天数
-        summary.setContinuousDay(lastRecord.getDay());
+        summary.setContinuousDay(lastRecord.getContinueDay());
         return summary;
     }
 
     @Override
-    public AppMemberSignInConfigMoonRespVO getOwnSignInMoon(Long loginUserId) {
+    public AppMemberSignInConfigMoonRespVO getOwnSignInMoon(Long loginUserId, String month) {
 
         // 获取当前月份, 天数 , 星期数
         List<Days> days = generateDaysForCurrentMonth();
         LocalDate today = LocalDate.now();
         LocalDate firstDayOfMonth = today.withDayOfMonth(1);
         LocalDate lastDayOfMonth = today.withDayOfMonth(today.lengthOfMonth());
+        if (StringUtils.isNotBlank(month)){
+            // 解析字符串为YearMonth对象
+            YearMonth yearMonth = YearMonth.parse(month, DateTimeFormatter.ofPattern("yyyy-MM"));
+             firstDayOfMonth = yearMonth.atDay(1);
+             lastDayOfMonth = yearMonth.atEndOfMonth();
+        }
 
         // 获取签到的天数
         // 查询用户当月的签到情况