V13
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
package com.ruoyi.cai.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.ruoyi.cai.domain.Anchor;
|
||||
import com.ruoyi.cai.domain.LoveRankToday;
|
||||
import com.ruoyi.cai.dto.app.query.index.AnchorListQuery;
|
||||
import com.ruoyi.cai.dto.app.vo.AnchorListVo;
|
||||
import com.ruoyi.cai.enums.rank.RankDataTypeEnum;
|
||||
import com.ruoyi.cai.mapper.LoveRankTodayMapper;
|
||||
import com.ruoyi.cai.mq.handle.dto.RankNotifyDTO;
|
||||
import com.ruoyi.cai.service.AnchorService;
|
||||
import com.ruoyi.cai.service.LoveRankTodayService;
|
||||
import com.ruoyi.cai.util.IdLockManager;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.helper.LoginHelper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
@Service
|
||||
public class LoveRankTodayServiceImpl extends ServiceImpl<LoveRankTodayMapper, LoveRankToday> implements LoveRankTodayService {
|
||||
|
||||
@Resource
|
||||
private LoveRankTodayMapper loveRankTodayMapper;
|
||||
@Autowired
|
||||
private AnchorService anchorService;
|
||||
|
||||
@Override
|
||||
public List<AnchorListVo> homePage(PageQuery pageQuery, AnchorListQuery query){
|
||||
if(pageQuery.checkPageNum(20)){
|
||||
return Collections.emptyList();
|
||||
}
|
||||
pageQuery.resetPageSize();
|
||||
Anchor anchor = anchorService.getByUserId(LoginHelper.getUserId());
|
||||
if(anchor != null && anchor.getHiddenStatus() == 1){
|
||||
query.setHiddenStatusUser(true);
|
||||
}
|
||||
// 获取当前日期
|
||||
LocalDate today = LocalDate.now();
|
||||
// 获取本周的周一(如果今天是周一,则返回今天)
|
||||
LocalDate monday = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
|
||||
Page<AnchorListVo> page = baseMapper.homePage(pageQuery.build(), query,monday);
|
||||
return page.getRecords();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addRank(RankNotifyDTO rank) {
|
||||
// 获取当前日期
|
||||
LocalDate today = LocalDate.now();
|
||||
// 获取本周的周一(如果今天是周一,则返回今天)
|
||||
LocalDate monday = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
|
||||
// 获取本周的周日(如果今天是周日,则返回今天)
|
||||
LocalDate sunday = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
|
||||
LoveRankToday one = this.getOne(Wrappers.lambdaQuery(LoveRankToday.class)
|
||||
.eq(LoveRankToday::getUserId, rank.getUserId())
|
||||
.eq(LoveRankToday::getDataType, RankDataTypeEnum.WEEK.getCode())
|
||||
.eq(LoveRankToday::getBeginRankTime, monday)
|
||||
.last("limit 1"));
|
||||
if(one == null){
|
||||
AtomicReference<LoveRankToday> atomicReference = new AtomicReference<>();
|
||||
IdLockManager.executeWithLock(String.valueOf(rank.getUserId()), () -> {
|
||||
LoveRankToday rankData = this.getOne(Wrappers.lambdaQuery(LoveRankToday.class)
|
||||
.eq(LoveRankToday::getUserId, rank.getUserId())
|
||||
.eq(LoveRankToday::getDataType, RankDataTypeEnum.WEEK.getCode())
|
||||
.eq(LoveRankToday::getBeginRankTime, monday)
|
||||
.last("limit 1"));
|
||||
if(rankData == null){
|
||||
LoveRankToday saveData = new LoveRankToday();
|
||||
saveData.setDataType(RankDataTypeEnum.WEEK.getCode());
|
||||
saveData.setRankTime(monday);
|
||||
saveData.setBeginRankTime(monday);
|
||||
saveData.setEndRankTime(sunday);
|
||||
saveData.setNum(0L);
|
||||
saveData.setUserId(rank.getUserId());
|
||||
this.save(saveData);
|
||||
atomicReference.set(saveData);
|
||||
}
|
||||
});
|
||||
one = atomicReference.get();
|
||||
}
|
||||
loveRankTodayMapper.insRank(one.getId(), rank.getPrice());
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user