日常任务-日任务奖励领取详情-明细
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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());
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,23 @@
|
||||
package com.accompany.business.vo.dailytask;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DailyCoinRecvRecordVo {
|
||||
|
||||
@ApiModelProperty(value = "公会 Id")
|
||||
private Integer guildId;
|
||||
@ApiModelProperty(value = "主播 uid")
|
||||
private Long uid;
|
||||
@ApiModelProperty(value = "主播 id")
|
||||
private Long erbanNo;
|
||||
@ApiModelProperty(value = "主播状态")
|
||||
private String statusStr;
|
||||
@ApiModelProperty(value = "领取IP")
|
||||
private String ip;
|
||||
@ApiModelProperty(value = "领取设备")
|
||||
private String deviceId;
|
||||
@ApiModelProperty(value = "领取时间")
|
||||
private String receiveTime;
|
||||
}
|
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
@@ -21,8 +22,8 @@ public class DailyTaskRecvCoinStatService extends ServiceImpl<DailyTaskRecvCoinS
|
||||
public IPage<DailyTaskRecvCoinStat> selectDailyCoinRecvStat(Integer partitionId, String startDate, String endDate, Integer pageNo, Integer pageSize) {
|
||||
LambdaQueryWrapper<DailyTaskRecvCoinStat> wrapper = Wrappers.lambdaQuery();
|
||||
wrapper.eq(DailyTaskRecvCoinStat::getPartitionId, partitionId)
|
||||
.ge(DailyTaskRecvCoinStat::getStatDate, startDate)
|
||||
.le(DailyTaskRecvCoinStat::getStatDate, endDate)
|
||||
.ge(StringUtils.isNotEmpty(startDate), DailyTaskRecvCoinStat::getStatDate, startDate)
|
||||
.le(StringUtils.isNotEmpty(endDate), DailyTaskRecvCoinStat::getStatDate, endDate)
|
||||
.orderByDesc(DailyTaskRecvCoinStat::getStatDate);
|
||||
return baseMapper.selectPage(new Page<>(pageNo, pageSize), wrapper);
|
||||
}
|
||||
|
@@ -3,7 +3,10 @@ package com.accompany.business.service.dailytask;
|
||||
import com.accompany.business.model.dailytask.DailyTaskRewardRecord;
|
||||
import com.accompany.business.mybatismapper.dailytask.DailyTaskRewardRecordMapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
@@ -46,4 +49,16 @@ public class DailyTaskRewardRecordService extends ServiceImpl<DailyTaskRewardRec
|
||||
.eq(DailyTaskRewardRecord::getStatDate, statDate);
|
||||
return this.baseMapper.selectCount(wrapper).intValue();
|
||||
}
|
||||
|
||||
public IPage<DailyTaskRewardRecord> listDetail(Long uid, Integer partitionId, String statDate, String taskKey,
|
||||
String deviceId, String ip, Integer pageNo, Integer pageSize) {
|
||||
LambdaQueryWrapper<DailyTaskRewardRecord> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(DailyTaskRewardRecord::getPartitionId, partitionId)
|
||||
.eq(uid != null, DailyTaskRewardRecord::getUid, uid)
|
||||
.eq(DailyTaskRewardRecord::getTaskKey, taskKey)
|
||||
.eq(DailyTaskRewardRecord::getStatDate, statDate)
|
||||
.like(StringUtils.isNotEmpty(deviceId), DailyTaskRewardRecord::getDeviceId, deviceId)
|
||||
.like(StringUtils.isNotEmpty(ip), DailyTaskRewardRecord::getLoginIp, ip);
|
||||
return this.baseMapper.selectPage(new Page<>(pageNo, pageSize), wrapper);
|
||||
}
|
||||
}
|
@@ -21,7 +21,7 @@ public class DailyTaskStatService {
|
||||
@Autowired
|
||||
private DailyTaskRecvCoinStatService dailyTaskRecvCoinStatService;
|
||||
|
||||
public DailyTaskRecvCoinStat statDailyCoinRecvStat(Integer partitionId, String statDate) {
|
||||
public DailyTaskRecvCoinStat statDailyCoinRecvStat(Integer partitionId, String statDate, boolean insertFalg) {
|
||||
DailyTaskRecvCoinStat dailyTaskRecvCoinStat = new DailyTaskRecvCoinStat();
|
||||
Integer receiveNum = dailyTaskRewardRecordService.selectCount(partitionId, DailyTaskTypeEnum.UP_MIC_COIN.name(), statDate);
|
||||
long guildMember = guildMemberService.countValidGuildMember(partitionId);
|
||||
@@ -33,7 +33,9 @@ public class DailyTaskStatService {
|
||||
dailyTaskRecvCoinStat.setGuildMemberNumn((int)guildMember);
|
||||
dailyTaskRecvCoinStat.setCreateTime(new Date());
|
||||
dailyTaskRecvCoinStat.setUpdateTime(dailyTaskRecvCoinStat.getCreateTime());
|
||||
dailyTaskRecvCoinStatService.save(dailyTaskRecvCoinStat);
|
||||
if (insertFalg) {
|
||||
dailyTaskRecvCoinStatService.save(dailyTaskRecvCoinStat);
|
||||
}
|
||||
return dailyTaskRecvCoinStat;
|
||||
}
|
||||
}
|
||||
|
@@ -106,4 +106,15 @@ public class GuildMemberService extends ServiceImpl<GuildMemberMapper, GuildMemb
|
||||
.eq(GuildMember::getEnable, Boolean.TRUE)
|
||||
.count();
|
||||
}
|
||||
|
||||
public Map<Long, GuildMember> mapByIds(List<Long> guildMemberIds) {
|
||||
if (CollectionUtils.isEmpty(guildMemberIds)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
List<GuildMember> guildMembers = baseMapper.selectByIds(guildMemberIds);
|
||||
if (CollectionUtils.isEmpty(guildMembers)) {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
return guildMembers.stream().collect(Collectors.toMap(GuildMember::getId, x -> x));
|
||||
}
|
||||
}
|
||||
|
@@ -61,7 +61,7 @@
|
||||
|
||||
<select id="countByPartitionDate" resultType="java.lang.Integer">
|
||||
select
|
||||
count(sum(mic_minutes) > #{reachMinutes}) reachNum,
|
||||
count(mic_minutes > #{reachMinutes})
|
||||
from guild_mic_statistics_policy2
|
||||
where stat_date = #{statDate} and partition_id = #{partitionId}
|
||||
</select>
|
||||
|
@@ -30,7 +30,7 @@ public class DailyTaskStatTask {
|
||||
try {
|
||||
Date statDate = DateUtil.offsetDay(date, -1);
|
||||
log.info("=-=dailyTaskStat4EnTask=-=:statDate:{}", DateUtil.formatDateTime(date));
|
||||
dailyTaskStatService.statDailyCoinRecvStat(partitionEnum.getId(), DateUtil.formatDate(statDate));
|
||||
dailyTaskStatService.statDailyCoinRecvStat(partitionEnum.getId(), DateUtil.formatDate(statDate), true);
|
||||
log.info("=-=dailyTaskStat4EnTask=-= end");
|
||||
} catch (Exception e) {
|
||||
log.error("[dailyTaskStat4EnTask] 异常", e);
|
||||
|
Reference in New Issue
Block a user