Преглед на файлове

1、增加积分签到接口
2、增加积分签到历史接口

rayson преди 1 година
родител
ревизия
fa5a8561ce

+ 37 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/sigin/AppSignInConfigController.java

@@ -0,0 +1,37 @@
+package com.citu.module.menduner.reward.controller.app.sigin;
+
+import com.citu.framework.common.enums.CommonStatusEnum;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.module.menduner.reward.controller.app.sigin.config.AppSignInConfigRespVO;
+import com.citu.module.menduner.reward.convert.SignInConfigConvert;
+import com.citu.module.menduner.reward.dal.dataobject.signin.SignInConfigDO;
+import com.citu.module.menduner.reward.service.signin.SignInConfigService;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "求职者 - 签到规则")
+@RestController
+@RequestMapping("/menduner/reward/sign-in/config")
+@Validated
+public class AppSignInConfigController {
+
+    @Resource
+    private SignInConfigService signInConfigService;
+
+    @GetMapping("/list")
+    @Operation(summary = "获得签到规则列表")
+    public CommonResult<List<AppSignInConfigRespVO>> getSignInConfigList() {
+        List<SignInConfigDO> pageResult = signInConfigService.getSignInConfigList(CommonStatusEnum.ENABLE.getStatus());
+        return success(SignInConfigConvert.INSTANCE.convertList2(pageResult));
+    }
+
+}

+ 57 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/sigin/AppSignInRecordController.java

@@ -0,0 +1,57 @@
+package com.citu.module.menduner.reward.controller.app.sigin;
+
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.common.pojo.PageParam;
+import com.citu.framework.common.pojo.PageResult;
+import com.citu.framework.security.core.annotations.PreAuthenticated;
+import com.citu.module.menduner.reward.controller.app.sigin.record.AppSignInRecordRespVO;
+import com.citu.module.menduner.reward.controller.app.sigin.record.AppSignInRecordSummaryRespVO;
+import com.citu.module.menduner.reward.convert.SignInRecordConvert;
+import com.citu.module.menduner.reward.dal.dataobject.signin.SignInRecordDO;
+import com.citu.module.menduner.reward.service.signin.SignInRecordService;
+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 javax.annotation.Resource;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+import static com.citu.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
+
+@Tag(name = "求职者 - 签到记录")
+@RestController
+@RequestMapping("/menduner/reward/sign-in/record")
+@Validated
+public class AppSignInRecordController {
+
+    @Resource
+    private SignInRecordService signInRecordService;
+
+    @GetMapping("/get-summary")
+    @Operation(summary = "获得个人签到统计")
+    @PreAuthenticated
+    public CommonResult<AppSignInRecordSummaryRespVO> getSignInRecordSummary() {
+        return success(signInRecordService.getSignInRecordSummary(getLoginUserId()));
+    }
+
+    @PostMapping("/create")
+    @Operation(summary = "签到")
+    @PreAuthenticated
+    public CommonResult<AppSignInRecordRespVO> createSignInRecord() {
+        SignInRecordDO recordDO = signInRecordService.createSignRecord(getLoginUserId());
+        return success(SignInRecordConvert.INSTANCE.coverRecordToAppRecordVo(recordDO));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得签到记录分页")
+    @PreAuthenticated
+    public CommonResult<PageResult<AppSignInRecordRespVO>> getSignRecordPage(PageParam pageParam) {
+        PageResult<SignInRecordDO> pageResult = signInRecordService.getSignRecordPage(getLoginUserId(), pageParam);
+        return success(SignInRecordConvert.INSTANCE.convertPage02(pageResult));
+    }
+
+}

+ 16 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/sigin/config/AppSignInConfigRespVO.java

@@ -0,0 +1,16 @@
+package com.citu.module.menduner.reward.controller.app.sigin.config;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "求职端 - 签到规则 Response VO")
+@Data
+public class AppSignInConfigRespVO {
+
+    @Schema(description = "签到第 x 天", requiredMode = Schema.RequiredMode.REQUIRED, example = "7")
+    private Integer day;
+
+    @Schema(description = "奖励积分", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    private Integer point;
+
+}

+ 21 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/sigin/record/AppSignInRecordRespVO.java

@@ -0,0 +1,21 @@
+package com.citu.module.menduner.reward.controller.app.sigin.record;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "求职端 - 签到记录 Response VO")
+@Data
+public class AppSignInRecordRespVO {
+
+    @Schema(description = "第几天签到", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+    private Integer day;
+
+    @Schema(description = "签到的分数", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    private Integer point;
+
+    @Schema(description = "签到时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime createTime;
+
+}

+ 19 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/sigin/record/AppSignInRecordSummaryRespVO.java

@@ -0,0 +1,19 @@
+package com.citu.module.menduner.reward.controller.app.sigin.record;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "求职端 - 个人签到统计 Response VO")
+@Data
+public class AppSignInRecordSummaryRespVO {
+
+    @Schema(description = "总签到天数", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    private Integer totalDay;
+
+    @Schema(description = "连续签到第 x 天", requiredMode = Schema.RequiredMode.REQUIRED, example = "3")
+    private Integer continuousDay;
+
+    @Schema(description = "今天是否已签到", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
+    private Boolean todaySignIn;
+
+}

+ 3 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/convert/SignInConfigConvert.java

@@ -1,5 +1,6 @@
 package com.citu.module.menduner.reward.convert;
 
+import com.citu.module.menduner.reward.controller.app.sigin.config.AppSignInConfigRespVO;
 import com.citu.module.menduner.reward.controller.base.signin.config.SignInConfigCreateReqVO;
 import com.citu.module.menduner.reward.controller.base.signin.config.SignInConfigRespVO;
 import com.citu.module.menduner.reward.controller.base.signin.config.SignInConfigUpdateReqVO;
@@ -28,4 +29,6 @@ public interface SignInConfigConvert {
     List<SignInConfigRespVO> convertList(List<SignInConfigDO> list);
 
 
+    List<AppSignInConfigRespVO> convertList2(List<SignInConfigDO> list);
+
 }

+ 6 - 1
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/convert/SignInRecordConvert.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjUtil;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.date.DateUtils;
+import com.citu.module.menduner.reward.controller.app.sigin.record.AppSignInRecordRespVO;
 import com.citu.module.menduner.reward.controller.base.signin.record.SignInRecordRespVO;
 import com.citu.module.menduner.reward.dal.dataobject.signin.SignInConfigDO;
 import com.citu.module.menduner.reward.dal.dataobject.signin.SignInRecordDO;
@@ -23,9 +24,13 @@ public interface SignInRecordConvert {
 
     SignInRecordConvert INSTANCE = Mappers.getMapper(SignInRecordConvert.class);
 
-
     PageResult<SignInRecordRespVO> convertPage(PageResult<SignInRecordDO> pageResult);
 
+    PageResult<AppSignInRecordRespVO> convertPage02(PageResult<SignInRecordDO> pageResult);
+
+    AppSignInRecordRespVO coverRecordToAppRecordVo(SignInRecordDO memberSignInRecordDO);
+
+
     default SignInRecordDO convert(Long userId, SignInRecordDO lastRecord, List<SignInConfigDO> configs) {
         // 1. 计算是第几天签到
         configs.sort(Comparator.comparing(SignInConfigDO::getDay));

+ 8 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/signin/SignInRecordService.java

@@ -2,6 +2,7 @@ package com.citu.module.menduner.reward.service.signin;
 
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
+import com.citu.module.menduner.reward.controller.app.sigin.record.AppSignInRecordSummaryRespVO;
 import com.citu.module.menduner.reward.controller.base.signin.record.SignInRecordPageReqVO;
 import com.citu.module.menduner.reward.dal.dataobject.signin.SignInRecordDO;
 
@@ -38,6 +39,13 @@ public interface SignInRecordService {
      */
     SignInRecordDO createSignRecord(Long userId);
 
+    /**
+     * 根据用户编号,获得个人签到统计信息
+     *
+     * @param userId 用户编号
+     * @return 个人签到统计信息
+     */
+    AppSignInRecordSummaryRespVO getSignInRecordSummary(Long userId);
 
 
 }

+ 33 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/signin/SignInRecordServiceImpl.java

@@ -1,11 +1,13 @@
 package com.citu.module.menduner.reward.service.signin;
 
+import cn.hutool.core.util.ObjUtil;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.enums.CommonStatusEnum;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.date.DateUtils;
 import com.citu.framework.common.util.object.ObjectUtils;
+import com.citu.module.menduner.reward.controller.app.sigin.record.AppSignInRecordSummaryRespVO;
 import com.citu.module.menduner.reward.controller.base.signin.record.SignInRecordPageReqVO;
 import com.citu.module.menduner.reward.convert.SignInRecordConvert;
 import com.citu.module.menduner.reward.dal.dataobject.signin.SignInConfigDO;
@@ -93,4 +95,35 @@ public class SignInRecordServiceImpl implements SignInRecordService {
         }
     }
 
+    @Override
+    public AppSignInRecordSummaryRespVO getSignInRecordSummary(Long userId) {
+        // 1. 初始化默认返回信息
+        AppSignInRecordSummaryRespVO summary = new AppSignInRecordSummaryRespVO();
+        summary.setTotalDay(0);
+        summary.setContinuousDay(0);
+        summary.setTodaySignIn(false);
+
+        // 2. 获取用户签到的记录数
+        Long signCount = signInRecordMapper.selectCountByUserId(userId);
+        if (ObjUtil.equal(signCount, 0L)) {
+            return summary;
+        }
+        // 设置总签到天数
+        summary.setTotalDay(signCount.intValue());
+
+        // 3. 校验当天是否有签到
+        SignInRecordDO lastRecord = signInRecordMapper.selectLastRecordByUserId(userId);
+        if (lastRecord == null) {
+            return summary;
+        }
+        summary.setTodaySignIn(DateUtils.isToday(lastRecord.getCreateTime()));
+
+        // 4.1 校验今天是否签到,没有签到则直接返回
+        if (!summary.getTodaySignIn()) {
+            return summary;
+        }
+        // 4.2 连续签到天数
+        summary.setContinuousDay(lastRecord.getDay());
+        return summary;
+    }
 }