| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package com.izouma.nineth.service;
- import com.izouma.nineth.domain.AirDrop;
- import com.izouma.nineth.domain.DailySign;
- import com.izouma.nineth.domain.DropTarget;
- import com.izouma.nineth.domain.User;
- import com.izouma.nineth.dto.PageQuery;
- import com.izouma.nineth.enums.AirDropType;
- import com.izouma.nineth.exception.BusinessException;
- import com.izouma.nineth.repo.DailySignRepo;
- import com.izouma.nineth.repo.UserRepo;
- import com.izouma.nineth.utils.JpaUtils;
- import lombok.AllArgsConstructor;
- import org.redisson.liveobject.resolver.LongGenerator;
- import org.springframework.data.domain.Page;
- import org.springframework.stereotype.Service;
- import java.time.LocalDate;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.List;
- @Service
- @AllArgsConstructor
- public class DailySignService {
- private DailySignRepo dailySignRepo;
- private AirDropService airDropService;
- private SysConfigService sysConfigService;
- private UserRepo userRepo;
- public Page<DailySign> all(PageQuery pageQuery) {
- return dailySignRepo
- .findAll(JpaUtils.toSpecification(pageQuery, DailySign.class), JpaUtils.toPageRequest(pageQuery));
- }
- public void sign(Long userId) {
- LocalDate today = LocalDate.now();
- DailySign record = dailySignRepo.findFirstByUserIdAndDate(userId, today);
- if (record != null) {
- throw new BusinessException("今日已经签到,请明天再来");
- }
- DailySign dailySign = new DailySign();
- dailySign.setUserId(userId);
- dailySign.setDate(today);
- dailySignRepo.save(dailySign);
- checkDays(userId);
- }
- public List<DailySign> search(Long userId, LocalDate start, LocalDate end) {
- return dailySignRepo.findAllByUserIdAndDateBetween(userId, start, end);
- }
- public void checkDays(Long userId) {
- LocalDate start = LocalDate.of(2023, 1, 19);
- LocalDate end = LocalDate.of(2023, 1, 29);
- List<DailySign> signs = search(userId, start, end);
- if (signs.size() == 10) {
- airDrop(userId);
- }
- }
- public void airDrop(Long userId) {
- Long collectionId = Long.valueOf(sysConfigService.getString("sign_collectionId"));
- User user = userRepo.findById(userId).orElseThrow(new BusinessException("暂无该用户"));
- airDropService.create(AirDrop.builder()
- .name("春节签到空投福卡")
- .remark("dailySign:" + userId)
- .type(AirDropType.asset)
- .userIds(Collections.singletonList(userId))
- .collectionId(collectionId)
- .targets(Collections
- .singletonList(new DropTarget(user.getId(), user.getPhone(), user
- .getNickname(), 1)))
- .auto(true)
- .companyId(1L)
- .build());
- }
- }
|