日常任务-日任务奖励领取详情-明细

This commit is contained in:
2025-08-27 18:05:14 +08:00
parent 79b957f3fb
commit 1a12722bdf
9 changed files with 174 additions and 8 deletions

View File

@@ -1,14 +1,25 @@
package com.accompany.admin.service.dailytask;
import cn.hutool.core.date.DateUtil;
import com.accompany.business.constant.dailytask.DailyTaskTypeEnum;
import com.accompany.business.model.dailytask.DailyTaskRecvCoinStat;
import com.accompany.business.model.dailytask.DailyTaskRewardRecord;
import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.service.dailytask.DailyTaskRecvCoinStatService;
import com.accompany.business.service.dailytask.DailyTaskRewardRecordService;
import com.accompany.business.service.dailytask.DailyTaskStatService;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.vo.dailytask.DailyCoinRecvRecordVo;
import com.accompany.business.vo.dailytask.DailyCoinRecvVo;
import com.accompany.common.result.PageResult;
import com.accompany.common.utils.DateTimeUtil;
import com.accompany.core.enumeration.PartitionEnum;
import com.accompany.core.exception.AdminServiceException;
import com.accompany.core.model.Users;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -16,6 +27,8 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class DailyTaskAdminService {
@@ -24,9 +37,14 @@ public class DailyTaskAdminService {
private DailyTaskRecvCoinStatService dailyTaskRecvCoinStatService;
@Autowired
private DailyTaskStatService dailyTaskStatService;
@Autowired
private DailyTaskRewardRecordService dailyTaskRewardRecordService;
@Autowired
private UsersService usersService;
@Autowired
private GuildMemberService guildMemberService;
public PageResult<DailyCoinRecvVo> list(Integer pageNo, Integer pageSize, Integer partitionId, String startDate, String endDate) {
IPage<DailyTaskRecvCoinStat> dailyTaskRecvCoinStatIPage = dailyTaskRecvCoinStatService.selectDailyCoinRecvStat(partitionId, startDate, endDate, pageNo, pageSize);
PageResult<DailyCoinRecvVo> pageResult = new PageResult<>();
List<DailyCoinRecvVo> recvVoList = new ArrayList<>();
@@ -34,9 +52,18 @@ public class DailyTaskAdminService {
pageResult.setTotal((int) dailyTaskRecvCoinStatIPage.getTotal());
List<DailyTaskRecvCoinStat> records = dailyTaskRecvCoinStatIPage.getRecords();
if (pageNo == 1) {
if (CollectionUtils.isEmpty(records)) {
records = new ArrayList<>();
}
String todayDate = DateTimeUtil.convertWithZoneId(new Date(),
PartitionEnum.getByPartitionId(partitionId).getZoneId()).format(DateTimeUtil.dateFormatter);
records.add(dailyTaskStatService.statDailyCoinRecvStat(partitionId, todayDate));
if (StringUtils.isNotEmpty(startDate) && StringUtils.isNotEmpty(endDate)) {
if (startDate.compareTo(todayDate) <= 0 && endDate.compareTo(todayDate) >= 0) {
records.add(dailyTaskStatService.statDailyCoinRecvStat(partitionId, todayDate, false));
}
} else {
records.add(dailyTaskStatService.statDailyCoinRecvStat(partitionId, todayDate, false));
}
}
if (CollectionUtils.isEmpty(records)) {
return pageResult;
@@ -48,4 +75,47 @@ public class DailyTaskAdminService {
}
return pageResult;
}
public PageResult<DailyCoinRecvRecordVo> listRecord(Long erbanNo, Integer partitionId, String statDate,
String deviceId, String ip, Integer pageNo, Integer pageSize) {
Long uid = null;
if (erbanNo != null) {
Users user = usersService.getUserByErbanNo(erbanNo);
if (user == null) {
throw new AdminServiceException("ID:" + erbanNo + ",不存在");
}
uid = user.getUid();
}
IPage<DailyTaskRewardRecord> dailyTaskRewardRecordIPage = dailyTaskRewardRecordService
.listDetail(uid, partitionId, statDate, DailyTaskTypeEnum.UP_MIC_COIN.name(), deviceId, ip, pageNo, pageSize);
PageResult<DailyCoinRecvRecordVo> pageResult = new PageResult<>();
List<DailyCoinRecvRecordVo> recordVoList = new ArrayList<>();
pageResult.setRows(recordVoList);
pageResult.setTotal((int) dailyTaskRewardRecordIPage.getTotal());
List<DailyTaskRewardRecord> records = dailyTaskRewardRecordIPage.getRecords();
if (CollectionUtils.isEmpty(records)) {
return pageResult;
}
List<Long> uids = records.stream().map(DailyTaskRewardRecord::getUid).collect(Collectors.toList());
List<Long> guildMemberIds = records.stream().filter(record -> record.getGuildMemberId() != null)
.map(DailyTaskRewardRecord::getGuildMemberId).distinct().collect(Collectors.toList());
Map<Long, Users> usersMap = usersService.getUsersMapByUids(uids);
Map<Long, GuildMember> guildMemberMap = guildMemberService.mapByIds(guildMemberIds);
for (DailyTaskRewardRecord record : records) {
DailyCoinRecvRecordVo recordVo = new DailyCoinRecvRecordVo();
recordVo.setGuildId(record.getGuildId());
recordVo.setUid(record.getUid());
Users users = usersMap.get(record.getUid());
if (users != null) {
recordVo.setErbanNo(users.getErbanNo());
}
recordVo.setDeviceId(record.getDeviceId());
recordVo.setIp(record.getLoginIp());
GuildMember guildMember = guildMemberMap.get(record.getGuildMemberId());
recordVo.setStatusStr((guildMember == null || !guildMember.getEnable()) ? "无效" : "有效");
recordVo.setReceiveTime(DateUtil.formatDateTime(record.getCreateTime()));
recordVoList.add(recordVo);
}
return pageResult;
}
}

View File

@@ -1,8 +1,11 @@
package com.accompany.admin.controller.dailytask;
import com.accompany.admin.service.dailytask.DailyTaskAdminService;
import com.accompany.business.vo.dailytask.DailyCoinRecvRecordVo;
import com.accompany.business.vo.dailytask.DailyCoinRecvVo;
import com.accompany.common.result.PageResult;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -13,6 +16,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
@Api(tags = "每日任务相关", value = "每日任务相关")
@RestController
@RequestMapping("/admin/dailyTask")
@@ -34,4 +42,40 @@ public class DailyTaskAdminController {
String startDate, String endDate) {
return dailyTaskAdminService.list(pageNo, pageSize, partitionId, startDate, endDate);
}
@GetMapping("/coinRecvDetail")
@ApiImplicitParams( {
@ApiImplicitParam(name = "partitionId", value = "分区id-列表有带", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "statDate", value = "时间-列表有带", required = true, dataType = "String"),
@ApiImplicitParam(name = "erbanNo", value = "主播id", required = true, dataType = "Long"),
@ApiImplicitParam(name = "deviceId", value = "设备id", dataType = "String"),
@ApiImplicitParam(name = "ip", value = "ip", dataType = "String"),
@ApiImplicitParam(name = "pageNo", value = "页码", dataType = "Integer"),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "Integer")
})
@ApiOperation(value = "日任务奖励领取详情-明细", httpMethod = "GET")
public PageResult<DailyCoinRecvRecordVo> listRecord(Long erbanNo, Integer partitionId, String statDate,
String deviceId, String ip, Integer pageNo, Integer pageSize) {
return dailyTaskAdminService.listRecord(erbanNo, partitionId, statDate, deviceId, ip, pageNo, pageSize);
}
@GetMapping("/coinRecvDetailExport")
@ApiImplicitParams( {
@ApiImplicitParam(name = "partitionId", value = "分区id-列表有带", required = true, dataType = "Integer"),
@ApiImplicitParam(name = "statDate", value = "时间-列表有带", required = true, dataType = "String"),
@ApiImplicitParam(name = "erbanNo", value = "主播id", required = true, dataType = "Long"),
@ApiImplicitParam(name = "deviceId", value = "设备id", dataType = "String"),
@ApiImplicitParam(name = "ip", value = "ip", dataType = "String"),
})
@ApiOperation(value = "日任务奖励领取详情-明细-导出", httpMethod = "GET")
public void coinRecvDetailExport(HttpServletResponse response, Long erbanNo, Integer partitionId, String statDate,
String deviceId, String ip) throws IOException {
PageResult<DailyCoinRecvRecordVo> pageResult = dailyTaskAdminService.listRecord(erbanNo, partitionId, statDate, deviceId, ip, -1, -1);
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码
String excelName = URLEncoder.encode("日任务奖励领取明细", StandardCharsets.UTF_8);
response.setHeader("Content-disposition", "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue());
EasyExcel.write(response.getOutputStream(), DailyCoinRecvRecordVo.class).sheet("日任务奖励领取明细").doWrite(pageResult.getRows());
}
}