公会钻石流水薪资明细
This commit is contained in:
@@ -74,7 +74,7 @@ public class GuildDiamondStatisticsDayAdminService {
|
||||
Page<GuildDiamondStatisticsDayVo> guildDiamondStatisticsDayPage;
|
||||
if (GUILD_POLICY2.equals(partitionEnum.getClanMode())) {
|
||||
guildDiamondStatisticsDayPage =
|
||||
guildDiamondStatisticsPolicy2Service.listByStatDate(startDate, endDate, partitionId, regionId, guildId, pageNo, pageSize, inviteUid);
|
||||
guildDiamondStatisticsPolicy2Service.listByStatDate4OldPolicy(startDate, endDate, partitionId, regionId, guildId, pageNo, pageSize, inviteUid);
|
||||
} else {
|
||||
guildDiamondStatisticsDayPage =
|
||||
guildDiamondStatisticsDayService.listByStatDate(startDate, endDate, partitionId, regionId, guildId, pageNo, pageSize, inviteUid);
|
||||
|
@@ -0,0 +1,73 @@
|
||||
package com.accompany.admin.service.guildpolicy2;
|
||||
|
||||
import com.accompany.business.model.guild.Guild;
|
||||
import com.accompany.business.model.guildpolicy2.GuildDiamondWagePolicy2;
|
||||
import com.accompany.business.service.guild.GuildService;
|
||||
import com.accompany.business.service.guildpolicy2.GuildDiamondStatisticsPolicy2Service;
|
||||
import com.accompany.business.service.guildpolicy2.GuildDiamondWagePolicy2Service;
|
||||
import com.accompany.business.service.user.UsersService;
|
||||
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo;
|
||||
import com.accompany.common.result.PageResult;
|
||||
import com.accompany.core.exception.AdminServiceException;
|
||||
import com.accompany.core.model.Users;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.TreeMap;
|
||||
|
||||
@Service
|
||||
public class GuildPolicy2AdminService {
|
||||
|
||||
@Autowired
|
||||
private GuildDiamondStatisticsPolicy2Service guildDiamondStatisticsPolicy2Service;
|
||||
@Autowired
|
||||
private GuildDiamondWagePolicy2Service guildDiamondWagePolicy2Service;
|
||||
@Autowired
|
||||
private UsersService usersService;
|
||||
@Autowired
|
||||
private GuildService guildService;
|
||||
|
||||
public PageResult<GuildPolicy2MemberAdminVo> queryMemberPage(Long ownerErbanNo, Integer guildId, Long erbanNo,
|
||||
Integer partitionId, String startDate, String endDate, 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();
|
||||
}
|
||||
if (guildId == null && ownerErbanNo != null) {
|
||||
Users user = usersService.getUserByErbanNo(ownerErbanNo);
|
||||
if (user == null) {
|
||||
throw new AdminServiceException("公会长ID:" + ownerErbanNo + ",不存在");
|
||||
}
|
||||
Guild vaildGuildByOwnerUid = guildService.getVaildGuildByOwnerUid(user.getUid());
|
||||
if (vaildGuildByOwnerUid == null) {
|
||||
throw new AdminServiceException("公会长ID:" + ownerErbanNo + ",不存在公会");
|
||||
}
|
||||
guildId = vaildGuildByOwnerUid.getId();
|
||||
}
|
||||
Page<GuildPolicy2MemberAdminVo> voPage = guildDiamondStatisticsPolicy2Service.listByStatDate(startDate, endDate, partitionId, guildId, uid, pageNo, pageSize);
|
||||
List<GuildPolicy2MemberAdminVo> records = voPage.getRecords();
|
||||
PageResult<GuildPolicy2MemberAdminVo> pageResult = new PageResult<>(voPage);
|
||||
if (CollectionUtils.isEmpty(records)) {
|
||||
return pageResult;
|
||||
}
|
||||
TreeMap<BigDecimal, GuildDiamondWagePolicy2> diamondWageMap = guildDiamondWagePolicy2Service.getDiamondWageMap(partitionId);
|
||||
for (GuildPolicy2MemberAdminVo record : records) {
|
||||
GuildDiamondWagePolicy2 diamondWagePolicy2 = guildDiamondWagePolicy2Service.calDiamondWageVo(diamondWageMap, record.getDiamondNum(), record.getMicDay());
|
||||
if (diamondWagePolicy2 == null) {
|
||||
continue;
|
||||
}
|
||||
record.setAnchorMicSalary(diamondWagePolicy2.getAnchorMicSalary());
|
||||
record.setOwnerSalary(diamondWagePolicy2.getOwnerSalary());
|
||||
record.setAnchorMicSalary(diamondWagePolicy2.getAnchorMicSalary());
|
||||
}
|
||||
return pageResult;
|
||||
}
|
||||
}
|
@@ -0,0 +1,66 @@
|
||||
package com.accompany.admin.controller.guildpolicy;
|
||||
|
||||
import com.accompany.admin.service.guildpolicy2.GuildPolicy2AdminService;
|
||||
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
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;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
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 = "公会政策2", value = "公会政策2")
|
||||
@RestController
|
||||
@RequestMapping("/admin/guildPolicy2")
|
||||
public class GuildPolicy2AdminController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private GuildPolicy2AdminService guildPolicy2AdminService;
|
||||
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "ownerErbanNo", value = "公会主号", required = true, dataType = "Long"),
|
||||
@ApiImplicitParam(name = "guildId", value = "公会ID", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "erbanNo", value = "成员号", required = true, dataType = "Long"),
|
||||
@ApiImplicitParam(name = "startDate", value = "开始时间yyyy-MM-dd", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "endDate", value = "结束时间yyyy-MM-dd", required = true, dataType = "String"),
|
||||
@ApiImplicitParam(name = "pageNo", value = "页码", required = true, dataType = "Integer"),
|
||||
@ApiImplicitParam(name = "pageSize", value = "每页数量", required = true, dataType = "Integer")
|
||||
})
|
||||
@ApiOperation(value = "查询公会成员薪资明细", httpMethod = "GET")
|
||||
@GetMapping("/queryMemberPage")
|
||||
public BusiResult<PageResult<GuildPolicy2MemberAdminVo>> queryMemberPage(Long ownerErbanNo, Integer guildId, Long erbanNo,
|
||||
@RequestParam(defaultValue = "8") Integer partitionId,
|
||||
String startDate, String endDate, Integer pageNo, Integer pageSize) {
|
||||
PageResult<GuildPolicy2MemberAdminVo> pageResult = guildPolicy2AdminService
|
||||
.queryMemberPage(ownerErbanNo, guildId, erbanNo, partitionId, startDate, endDate, pageNo, pageSize);
|
||||
return BusiResult.success(pageResult);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询公会成员薪资明细导出", httpMethod = "GET")
|
||||
@GetMapping("/queryMemberExport")
|
||||
public void queryMemberExport(HttpServletResponse response, Long ownerErbanNo, Integer guildId, Long erbanNo,
|
||||
Integer partitionId, String startDate, String endDate) throws IOException {
|
||||
PageResult<GuildPolicy2MemberAdminVo> pageResult = guildPolicy2AdminService
|
||||
.queryMemberPage(ownerErbanNo, guildId, erbanNo, partitionId, startDate, endDate, -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(), GuildPolicy2MemberAdminVo.class).sheet("薪资明细").doWrite(pageResult.getRows());
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,43 @@
|
||||
package com.accompany.business.vo.guildpolicy;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@ApiModel
|
||||
@Data
|
||||
public class GuildPolicy2MemberAdminVo {
|
||||
@ExcelProperty("公会id")
|
||||
@ApiModelProperty("公会id")
|
||||
private Integer guildId;
|
||||
@ExcelProperty("公会长id")
|
||||
@ApiModelProperty("公会长id")
|
||||
private Long ownerErbanNo;
|
||||
@ExcelProperty("主播id")
|
||||
@ApiModelProperty("主播id")
|
||||
private Long erbanNo;
|
||||
@ExcelProperty("主播昵称")
|
||||
@ApiModelProperty("主播昵称")
|
||||
private String nick;
|
||||
@ApiModelProperty("钻石收入")
|
||||
@ExcelProperty("钻石收入")
|
||||
private BigDecimal diamondNum;
|
||||
@ExcelProperty("活跃时长(分钟)")
|
||||
@ApiModelProperty("活跃时长(分钟)")
|
||||
private Integer micMinutes;
|
||||
@ExcelProperty("活跃天数")
|
||||
@ApiModelProperty("活跃天数")
|
||||
private Integer micDay;
|
||||
@ExcelProperty("主播钻石薪资")
|
||||
@ApiModelProperty("主播钻石薪资")
|
||||
private BigDecimal anchorDiamondSalary;
|
||||
@ExcelProperty("主播时长薪资")
|
||||
@ApiModelProperty("主播时长薪资")
|
||||
private BigDecimal anchorMicSalary;
|
||||
@ApiModelProperty("公会长薪资")
|
||||
@ExcelProperty("公会长薪资")
|
||||
private BigDecimal ownerSalary;
|
||||
}
|
@@ -3,6 +3,7 @@ package com.accompany.business.mybatismapper.guildpolicy2;
|
||||
import com.accompany.business.model.guildpolicy2.GuildDiamondStatisticsPolicy2;
|
||||
import com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo;
|
||||
import com.accompany.business.vo.guild.GuildMemberDiamondStatisticsDayVo;
|
||||
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo;
|
||||
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberVo;
|
||||
import com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
@@ -39,10 +40,15 @@ public interface GuildDiamondStatisticsPolicy2Mapper extends BaseMapper<GuildDia
|
||||
@Param("guildId") Integer guildId, @Param("uid") Long uid,
|
||||
@Param("partitionId") Integer partitionId, @Param("regionId") Integer regionId);
|
||||
|
||||
Page<GuildDiamondStatisticsDayVo> listByStatDate(@Param("ipage") Page<GuildDiamondStatisticsDayVo> ipage,
|
||||
Page<GuildDiamondStatisticsDayVo> listByStatDate4OldPolicy(@Param("ipage") Page<GuildDiamondStatisticsDayVo> ipage,
|
||||
@Param("startDate")String startDate, @Param("endDate")String endDate,
|
||||
@Param("guildId") Integer guildId,
|
||||
@Param("partitionId") Integer partitionId,
|
||||
@Param("regionId") Integer regionId,
|
||||
@Param("inviteUid") Long inviteUid);
|
||||
|
||||
Page<GuildPolicy2MemberAdminVo> listByStatDate(@Param("ipage") Page<GuildPolicy2MemberAdminVo> ipage,
|
||||
@Param("startDate")String startDate, @Param("endDate")String endDate,
|
||||
@Param("guildId") Integer guildId, @Param("uid") Long uid,
|
||||
@Param("partitionId") Integer partitionIdd);
|
||||
}
|
||||
|
@@ -5,6 +5,7 @@ import com.accompany.business.model.guildpolicy2.GuildDiamondStatisticsPolicy2;
|
||||
import com.accompany.business.mybatismapper.guildpolicy2.GuildDiamondStatisticsPolicy2Mapper;
|
||||
import com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo;
|
||||
import com.accompany.business.vo.guild.GuildMemberDiamondStatisticsDayVo;
|
||||
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo;
|
||||
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberVo;
|
||||
import com.accompany.business.vo.guildpolicy.GuildPolicy2PersonalVo;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@@ -53,10 +54,16 @@ public class GuildDiamondStatisticsPolicy2Service extends ServiceImpl<GuildDiamo
|
||||
return baseMapper.listMemberByStatDate(page, statDate, endDate, guildId, uid, partitionId, regionId);
|
||||
}
|
||||
|
||||
public Page<GuildDiamondStatisticsDayVo> listByStatDate(String statDate, String endDate, Integer partitionId, Integer regionId,
|
||||
public Page<GuildDiamondStatisticsDayVo> listByStatDate4OldPolicy(String statDate, String endDate, Integer partitionId, Integer regionId,
|
||||
Integer guildId, Integer pageNo, Integer pageSize, Long inviteUid) {
|
||||
Page<GuildDiamondStatisticsDayVo> page = new Page<>(pageNo, pageSize);
|
||||
return baseMapper.listByStatDate(page, statDate, endDate, guildId, partitionId, regionId, inviteUid);
|
||||
return baseMapper.listByStatDate4OldPolicy(page, statDate, endDate, guildId, partitionId, regionId, inviteUid);
|
||||
}
|
||||
|
||||
public Page<GuildPolicy2MemberAdminVo> listByStatDate(String statDate, String endDate, Integer partitionId,
|
||||
Integer guildId, Long uid, Integer pageNo, Integer pageSize) {
|
||||
Page<GuildPolicy2MemberAdminVo> page = new Page<>(pageNo, pageSize);
|
||||
return baseMapper.listByStatDate(page, statDate, endDate, guildId, uid, partitionId);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -31,6 +31,16 @@ public class GuildDiamondWagePolicy2Service extends ServiceImpl<GuildDiamondWage
|
||||
return value;
|
||||
}
|
||||
|
||||
public GuildDiamondWagePolicy2 calDiamondWageVo(TreeMap<BigDecimal, GuildDiamondWagePolicy2> diamondWageMap, BigDecimal diamond, Integer micDay) {
|
||||
Map.Entry<BigDecimal, GuildDiamondWagePolicy2> curDiamondLevel = diamondWageMap.headMap(diamond, true).lastEntry();
|
||||
|
||||
GuildDiamondWagePolicy2 value = curDiamondLevel.getValue();
|
||||
if (micDay < value.getMicDay()) {
|
||||
value.setAnchorMicSalary(BigDecimal.ZERO);
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
public TreeMap<BigDecimal, GuildDiamondWagePolicy2> getDiamondWageMap(Integer partitionId) {
|
||||
List<GuildDiamondWagePolicy2> wageList = lambdaQuery()
|
||||
.eq(GuildDiamondWagePolicy2::getPartitionId, partitionId).list();
|
||||
|
@@ -35,4 +35,12 @@ public class GuildMicStatisticsPolicy2Service extends ServiceImpl<GuildMicStatis
|
||||
}
|
||||
return memberMicDayVos.stream().collect(Collectors.toMap(GuildMemberMicDayVo::getGuildMemberId, GuildMemberMicDayVo::getMicDay));
|
||||
}
|
||||
|
||||
public Map<Long, GuildMemberMicDayVo> mapVoByStatDate(String statDate, String endDate, int partitionId, List<Long> guildMemberIds) {
|
||||
List<GuildMemberMicDayVo> memberMicDayVos = baseMapper.groupByStatDate(statDate, endDate, partitionId, guildMemberIds);
|
||||
if (CollectionUtils.isEmpty(memberMicDayVos)) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
return memberMicDayVos.stream().collect(Collectors.toMap(GuildMemberMicDayVo::getGuildMemberId, x -> x));
|
||||
}
|
||||
}
|
||||
|
@@ -99,7 +99,7 @@
|
||||
ORDER BY gm.`enable` desc, diamondNum desc, gm.guild_id desc
|
||||
</select>
|
||||
|
||||
<select id="listByStatDate" resultType="com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo">
|
||||
<select id="listByStatDate4OldPolicy" resultType="com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo">
|
||||
select gd.guild_id guildId,
|
||||
ANY_VALUE(g.name) guildName,
|
||||
sum(gd.diamond_num) diamondNum,
|
||||
@@ -132,4 +132,35 @@
|
||||
ORDER BY diamondNum desc,memberNum desc, gd.guild_id desc
|
||||
</select>
|
||||
|
||||
<select id="listByStatDate" resultType="com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo">
|
||||
select gd.guild_id guildId,
|
||||
ANY_VALUE(u.erban_no) ownerErbanNo,
|
||||
ANY_VALUE(um.erban_no) erbanNo,
|
||||
ANY_VALUE(um.nick) nick,
|
||||
sum(gd.diamond_num) diamondNum,
|
||||
ifnull(sum(gmp.mic_minutes), 0) micMinutes,
|
||||
COUNT(DISTINCT CASE WHEN gmp.mic_minutes >= 120 THEN gdsp.stat_date END) AS micDay
|
||||
from guild_diamond_statistics_policy2 gd
|
||||
left join guild_mic_statistics_policy2 gmp on gmp.guild_member_id = gd.guild_member_id
|
||||
and gmp.stat_date >= #{startDate}
|
||||
and gmp.stat_date <= #{endDate}
|
||||
left join users um on um.uid = gd.uid
|
||||
left join guild_member gm on gm.uid = gd.uid
|
||||
left join guild g on g.id = gd.guild_id
|
||||
left join users u on u.uid = g.owner_uid
|
||||
where gm.`enable` = 1 and gd.stat_date >= #{startDate}
|
||||
and gd.stat_date <= #{endDate}
|
||||
<if test="partitionId != null">
|
||||
and gd.partition_id = #{partitionId}
|
||||
</if>
|
||||
<if test="guildId != null">
|
||||
and gd.guild_id = #{guildId}
|
||||
</if>
|
||||
<if test="uid != null">
|
||||
and gd.uid = #{uid}
|
||||
</if>
|
||||
group by gd.uid
|
||||
ORDER BY diamondNum desc
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
@@ -13,7 +13,7 @@
|
||||
|
||||
<select id="groupByStatDate" resultType="com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo">
|
||||
select guild_member_id guildMemberId,
|
||||
mic_minutes micMinutes,
|
||||
sum(mic_minutes) micMinutes,
|
||||
COUNT(DISTINCT CASE WHEN mic_minutes >= 120 THEN stat_date END) AS micDay
|
||||
from guild_mic_statistics_policy2
|
||||
where stat_date >= #{statDate} and stat_date <= #{endDate}
|
||||
|
Reference in New Issue
Block a user