diff --git a/dating-agency-mal-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireNewMIRightBySdkDto.java b/dating-agency-mal-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireNewMIRightBySdkDto.java index 31a6a2f..30f502a 100644 --- a/dating-agency-mal-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireNewMIRightBySdkDto.java +++ b/dating-agency-mal-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireNewMIRightBySdkDto.java @@ -1,9 +1,11 @@ package com.qniao.dam.application.request; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; -import javax.validation.constraints.NotNull; - +@AllArgsConstructor +@NoArgsConstructor @Data public class UserAcquireNewMIRightBySdkDto { diff --git a/dating-agency-mall-server/pom.xml b/dating-agency-mall-server/pom.xml index a24e455..fc62dcc 100644 --- a/dating-agency-mall-server/pom.xml +++ b/dating-agency-mall-server/pom.xml @@ -77,6 +77,11 @@ dating-agency-mall-event 0.0.1-SNAPSHOT + + com.qniao + dating-agency-service-entity + 0.0.1-SNAPSHOT + diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/AcquireGiftRightTask.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/AcquireGiftRightTask.java new file mode 100644 index 0000000..2c25714 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/AcquireGiftRightTask.java @@ -0,0 +1,68 @@ +package com.qniao.dam.application.task; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qniao.dam.application.service.right.RightApplicationService; +import com.qniao.dam.domain.aggregate.right.valueobj.RightAcquireRecord; +import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao; +import com.qniao.dam.infrastructure.persistent.dao.domain.RightAcquireRecordDao; +import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +@Component +@Slf4j +public class AcquireGiftRightTask { + + @Resource + private MarriageInformationDao marriageInformationDao; + @Resource + private RightApplicationService rightApplicationService; + @Resource + private RightAcquireRecordDao rightAcquireRecordDao; + + /** + * 每月给资料赠送修改头像权益 人数多不能这么领取,用户自己领取就行 + */ + @Scheduled(cron = "0 * * * * *") // 每分钟的第0秒执行 + public void handle() { + try { + log.error("赠送权益任务开始"); + //一个月整前的资料赠送权益 + LocalDate date = LocalDate.now().minusMonths(1); + LocalDateTime startTime = date.atTime(0, 0, 0); + LocalDateTime endTime = date.atTime(23, 59, 59); + int count = marriageInformationDao.selectCount(new LambdaQueryWrapper() + .ge(MarriageInformation::getCreateTime, startTime) + .le(MarriageInformation::getCreateTime, endTime)); + if (count > 0) { + int num = 100; + for (int i = 0; i < count; i += num) { + List list = marriageInformationDao.selectList(new LambdaQueryWrapper() + .ge(MarriageInformation::getCreateTime, startTime) + .le(MarriageInformation::getCreateTime, endTime) + .last("limit " + i + "," + num)); + if (CollUtil.isNotEmpty(list)) { + for (MarriageInformation marriageInformation : list) { + //判断资料是否领取过免费权益 + if (rightAcquireRecordDao.selectCount(new LambdaQueryWrapper() + .ge(RightAcquireRecord::getCreateTime, startTime) + .le(RightAcquireRecord::getCreateTime, endTime)) == 0) { + rightApplicationService.acquireNewMIRight(marriageInformation.getUserId(), marriageInformation.getId()); + } + } + } + } + log.error("赠送权益任务结束"); + } + } catch (Exception e) { + log.error("赠送权益任务异常", e); + } + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageInformationDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageInformationDao.java new file mode 100644 index 0000000..4bbcd77 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/MarriageInformationDao.java @@ -0,0 +1,7 @@ +package com.qniao.dam.infrastructure.persistent.dao.domain; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; + +public interface MarriageInformationDao extends BaseMapper { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/server/MallServerApplication.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/server/MallServerApplication.java index 4474192..1c5be8a 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/server/MallServerApplication.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/server/MallServerApplication.java @@ -6,12 +6,14 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication(scanBasePackages = {"com.qniao"}) @EnableEurekaClient @MapperScan("com.qniao.**.dao.**") @EnableFeignClients(basePackages = {"com.qniao"}) @EnableApolloConfig +@EnableScheduling public class MallServerApplication { public static void main(String[] args) {