土耳其薪资结算数据

This commit is contained in:
2025-10-10 14:28:53 +08:00
parent 9cf6b05473
commit 334635fb4a
13 changed files with 286 additions and 31 deletions

View File

@@ -74,7 +74,7 @@ public class GuildDiamondStatisticsDayAdminService {
Page<GuildDiamondStatisticsDayVo> guildDiamondStatisticsDayPage; Page<GuildDiamondStatisticsDayVo> guildDiamondStatisticsDayPage;
if (GUILD_POLICY2.equals(partitionEnum.getClanMode())) { if (GUILD_POLICY2.equals(partitionEnum.getClanMode())) {
guildDiamondStatisticsDayPage = guildDiamondStatisticsDayPage =
guildDiamondStatisticsPolicy2Service.listByStatDate4OldPolicy(startDate, endDate, partitionId, regionId, guildId, pageNo, pageSize, inviteUid); guildDiamondStatisticsPolicy2Service.listByStatDate4Policy2(startDate, endDate, partitionId, regionId, guildId, pageNo, pageSize, inviteUid);
} else { } else {
guildDiamondStatisticsDayPage = guildDiamondStatisticsDayPage =
guildDiamondStatisticsDayService.listByStatDate(startDate, endDate, partitionId, regionId, guildId, pageNo, pageSize, inviteUid); guildDiamondStatisticsDayService.listByStatDate(startDate, endDate, partitionId, regionId, guildId, pageNo, pageSize, inviteUid);

View File

@@ -3,16 +3,16 @@ package com.accompany.admin.service.guildpolicy2;
import com.accompany.business.model.guild.Guild; import com.accompany.business.model.guild.Guild;
import com.accompany.business.model.guildpolicy2.GuildDiamondWagePolicy2; import com.accompany.business.model.guildpolicy2.GuildDiamondWagePolicy2;
import com.accompany.business.service.guild.GuildService; import com.accompany.business.service.guild.GuildService;
import com.accompany.business.service.guildpolicy2.GuildDiamondStatisticsPolicy2Service; import com.accompany.business.service.guildpolicy2.*;
import com.accompany.business.service.guildpolicy2.GuildDiamondWagePolicy2Service;
import com.accompany.business.service.guildpolicy2.GuildMicStatisticsPolicy2Service;
import com.accompany.business.service.guildpolicy2.GuildPolicy2Service;
import com.accompany.business.service.user.UsersService; import com.accompany.business.service.user.UsersService;
import com.accompany.business.util.FullMonthCycleTimeUtil;
import com.accompany.business.vo.guild.CycleDateVo; import com.accompany.business.vo.guild.CycleDateVo;
import com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo; import com.accompany.business.vo.guildpolicy.GuildMemberMicDayVo;
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo; import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo;
import com.accompany.common.result.BusiResult; import com.accompany.common.result.BusiResult;
import com.accompany.common.result.PageResult; 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.exception.AdminServiceException;
import com.accompany.core.model.Users; import com.accompany.core.model.Users;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -22,6 +22,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.TreeMap; import java.util.TreeMap;
@@ -40,6 +42,8 @@ public class GuildPolicy2AdminService {
private GuildService guildService; private GuildService guildService;
@Autowired @Autowired
private GuildMicStatisticsPolicy2Service guildMicStatisticsPolicy2Service; private GuildMicStatisticsPolicy2Service guildMicStatisticsPolicy2Service;
@Autowired
private GuildDiamondStatisticsPolicy2SettleService guildDiamondStatisticsPolicy2SettleService;
public PageResult<GuildPolicy2MemberAdminVo> queryMemberPage(Long ownerErbanNo, Integer guildId, Long erbanNo, public PageResult<GuildPolicy2MemberAdminVo> queryMemberPage(Long ownerErbanNo, Integer guildId, Long erbanNo,
Integer partitionId, String startDate, String endDate, Integer pageNo, Integer pageSize) { Integer partitionId, String startDate, String endDate, Integer pageNo, Integer pageSize) {
@@ -65,22 +69,31 @@ public class GuildPolicy2AdminService {
} }
guildId = vaildGuildByOwnerUid.getId(); guildId = vaildGuildByOwnerUid.getId();
} }
Page<GuildPolicy2MemberAdminVo> voPage = guildDiamondStatisticsPolicy2Service.listByStatDate(startDate, endDate, partitionId, guildId, uid, pageNo, pageSize); ZonedDateTime zonedDateTime = DateTimeUtil.convertWithZoneId(new Date(), PartitionEnum.TURKEY.getZoneId());
List<GuildPolicy2MemberAdminVo> records = voPage.getRecords(); String nowDate = FullMonthCycleTimeUtil.getCycleDate(zonedDateTime);
PageResult<GuildPolicy2MemberAdminVo> pageResult = new PageResult<>(voPage); PageResult<GuildPolicy2MemberAdminVo> pageResult;
if (CollectionUtils.isEmpty(records)) { if (nowDate.equals(startDate) || startDate.compareTo("2025-09-01") <= 0) {
return pageResult; Page<GuildPolicy2MemberAdminVo> voPage = guildDiamondStatisticsPolicy2Service.listByStatDate(startDate, endDate, partitionId, guildId, uid, pageNo, pageSize);
} List<GuildPolicy2MemberAdminVo> records = voPage.getRecords();
TreeMap<BigDecimal, GuildDiamondWagePolicy2> diamondWageMap = guildDiamondWagePolicy2Service.getDiamondWageMap(partitionId); pageResult = new PageResult<>(voPage);
for (GuildPolicy2MemberAdminVo record : records) { if (CollectionUtils.isEmpty(records)) {
GuildDiamondWagePolicy2 diamondWagePolicy2 = guildDiamondWagePolicy2Service.calDiamondWageVo(diamondWageMap, record.getDiamondNum(), record.getMicDay()); return pageResult;
if (diamondWagePolicy2 == null) {
continue;
} }
record.setAnchorDiamondSalary(diamondWagePolicy2.getAnchorDiamondSalary()); TreeMap<BigDecimal, GuildDiamondWagePolicy2> diamondWageMap = guildDiamondWagePolicy2Service.getDiamondWageMap(partitionId);
record.setOwnerSalary(diamondWagePolicy2.getOwnerSalary()); for (GuildPolicy2MemberAdminVo record : records) {
record.setAnchorMicSalary(diamondWagePolicy2.getAnchorMicSalary()); GuildDiamondWagePolicy2 diamondWagePolicy2 = guildDiamondWagePolicy2Service.calDiamondWageVo(diamondWageMap, record.getDiamondNum(), record.getMicDay());
if (diamondWagePolicy2 == null) {
continue;
}
record.setAnchorDiamondSalary(diamondWagePolicy2.getAnchorDiamondSalary());
record.setOwnerSalary(diamondWagePolicy2.getOwnerSalary());
record.setAnchorMicSalary(diamondWagePolicy2.getAnchorMicSalary());
}
} else {
Page<GuildPolicy2MemberAdminVo> voPage = guildDiamondStatisticsPolicy2SettleService.listByStatDate(startDate, partitionId, guildId, uid, pageNo, pageSize);
pageResult = new PageResult<>(voPage);
} }
return pageResult; return pageResult;
} }

View File

@@ -114,4 +114,5 @@ public class GuildConstant {
public static final BigDecimal USD_WITHDRAW_RATE = BigDecimal.valueOf(0.06D); public static final BigDecimal USD_WITHDRAW_RATE = BigDecimal.valueOf(0.06D);
public static final int GUILD_POLICY2_VALID_DAY_MINUTES = 120;
} }

View File

@@ -0,0 +1,63 @@
package com.accompany.business.model.guildpolicy2;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 公会钻石流水结算实体类
*
* @author
* @since 2025-10-09
*/
@Data
public class GuildDiamondStatisticsPolicy2Settle implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String cycleDate;
private Integer partitionId;
private Long guildMemberId;
private Long uid;
/**
* 所属厅id
*/
private Integer guildId;
/**
* 钻石流水
*/
private BigDecimal diamondNum;
/**
* 有效上麦时长
*/
private Integer micMinutes;
/**
* 有效上麦天数
*/
private Integer micDay;
/**
* 主播薪资
*/
private BigDecimal anchorSalary;
/**
* 主播上麦薪资
*/
private BigDecimal anchorMicSalary;
/**
* 公会长薪资
*/
private BigDecimal ownerSalary;
/**
* 创建时间
*/
private Date createTime;
private Date updateTime;
}

View File

@@ -32,7 +32,8 @@ public interface GuildDiamondStatisticsPolicy2Mapper extends BaseMapper<GuildDia
BigDecimal getTotalDiamondInCycleGuildMember(@Param("cycleDate")String cycleDate, @Param("guildMemberId")Long guildMemberId); BigDecimal getTotalDiamondInCycleGuildMember(@Param("cycleDate")String cycleDate, @Param("guildMemberId")Long guildMemberId);
List<GuildPolicy2MemberVo> listMemberData(@Param("cycleDate")String cycleDate, @Param("guildId")Integer guildId); List<GuildPolicy2MemberVo> listMemberData(@Param("cycleDate")String cycleDate, @Param("guildId")Integer guildId,
@Param("validDayMinutes") Integer validDayMinutes);
List<GuildPolicy2PersonalVo> listPersonalDiamondData(@Param("cycleDate")String cycleDate, @Param("guildMemberId")Long guildMemberId); List<GuildPolicy2PersonalVo> listPersonalDiamondData(@Param("cycleDate")String cycleDate, @Param("guildMemberId")Long guildMemberId);
@@ -41,7 +42,7 @@ public interface GuildDiamondStatisticsPolicy2Mapper extends BaseMapper<GuildDia
@Param("guildId") Integer guildId, @Param("uid") Long uid, @Param("guildId") Integer guildId, @Param("uid") Long uid,
@Param("partitionId") Integer partitionId, @Param("regionId") Integer regionId); @Param("partitionId") Integer partitionId, @Param("regionId") Integer regionId);
Page<GuildDiamondStatisticsDayVo> listByStatDate4OldPolicy(@Param("ipage") Page<GuildDiamondStatisticsDayVo> ipage, Page<GuildDiamondStatisticsDayVo> listByStatDate4Policy2(@Param("ipage") Page<GuildDiamondStatisticsDayVo> ipage,
@Param("startDate")String startDate, @Param("endDate")String endDate, @Param("startDate")String startDate, @Param("endDate")String endDate,
@Param("guildId") Integer guildId, @Param("guildId") Integer guildId,
@Param("partitionId") Integer partitionId, @Param("partitionId") Integer partitionId,
@@ -51,7 +52,8 @@ public interface GuildDiamondStatisticsPolicy2Mapper extends BaseMapper<GuildDia
Page<GuildPolicy2MemberAdminVo> listByStatDate(@Param("ipage") Page<GuildPolicy2MemberAdminVo> ipage, Page<GuildPolicy2MemberAdminVo> listByStatDate(@Param("ipage") Page<GuildPolicy2MemberAdminVo> ipage,
@Param("startDate")String startDate, @Param("endDate")String endDate, @Param("startDate")String startDate, @Param("endDate")String endDate,
@Param("guildId") Integer guildId, @Param("uid") Long uid, @Param("guildId") Integer guildId, @Param("uid") Long uid,
@Param("partitionId") Integer partitionIdd); @Param("partitionId") Integer partitionId,
@Param("validDayMinutes") Integer validDayMinutes);
List<GuildPolicy2ClearDiamondDto> listClearDaimondData(@Param("partitionId")Integer partitionId); List<GuildPolicy2ClearDiamondDto> listClearDaimondData(@Param("partitionId")Integer partitionId);

View File

@@ -0,0 +1,27 @@
package com.accompany.business.mybatismapper.guildpolicy2;
import com.accompany.business.model.guildpolicy2.GuildDiamondStatisticsPolicy2Settle;
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 公会钻石流水结算 Mapper 接口
*
* @author
* @since 2025-10-09
*/
public interface GuildDiamondStatisticsPolicy2SettleMapper extends BaseMapper<GuildDiamondStatisticsPolicy2Settle> {
List<GuildDiamondStatisticsPolicy2Settle> settleByCycleDate(@Param("cycleDate") String cycleDate,
@Param("partitionId") Integer partitionId,
@Param("validDayMinutes") Integer validDayMinutes);
Page<GuildPolicy2MemberAdminVo> listByStatDate(@Param("ipage") Page<GuildPolicy2MemberAdminVo> ipage,
@Param("startDate")String startDate,
@Param("guildId") Integer guildId, @Param("uid") Long uid,
@Param("partitionId") Integer partitionId);
}

View File

@@ -18,6 +18,8 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import static com.accompany.business.constant.guild.GuildConstant.GUILD_POLICY2_VALID_DAY_MINUTES;
/** /**
* 公会钻石流水统计按天 服务实现类 * 公会钻石流水统计按天 服务实现类
* *
@@ -41,7 +43,7 @@ public class GuildDiamondStatisticsPolicy2Service extends ServiceImpl<GuildDiamo
} }
public List<GuildPolicy2MemberVo> listMemberData(String cycleDate, Integer guildId) { public List<GuildPolicy2MemberVo> listMemberData(String cycleDate, Integer guildId) {
return baseMapper.listMemberData(cycleDate, guildId); return baseMapper.listMemberData(cycleDate, guildId, GUILD_POLICY2_VALID_DAY_MINUTES);
} }
public List<GuildPolicy2PersonalVo> listPersonalDiamondData(String cycleDate, Long guildMemberId) { public List<GuildPolicy2PersonalVo> listPersonalDiamondData(String cycleDate, Long guildMemberId) {
@@ -55,16 +57,16 @@ public class GuildDiamondStatisticsPolicy2Service extends ServiceImpl<GuildDiamo
return baseMapper.listMemberByStatDate(page, statDate, endDate, guildId, uid, partitionId, regionId); return baseMapper.listMemberByStatDate(page, statDate, endDate, guildId, uid, partitionId, regionId);
} }
public Page<GuildDiamondStatisticsDayVo> listByStatDate4OldPolicy(String statDate, String endDate, Integer partitionId, Integer regionId, public Page<GuildDiamondStatisticsDayVo> listByStatDate4Policy2(String statDate, String endDate, Integer partitionId, Integer regionId,
Integer guildId, Integer pageNo, Integer pageSize, Long inviteUid) { Integer guildId, Integer pageNo, Integer pageSize, Long inviteUid) {
Page<GuildDiamondStatisticsDayVo> page = new Page<>(pageNo, pageSize); Page<GuildDiamondStatisticsDayVo> page = new Page<>(pageNo, pageSize);
return baseMapper.listByStatDate4OldPolicy(page, statDate, endDate, guildId, partitionId, regionId, inviteUid); return baseMapper.listByStatDate4Policy2(page, statDate, endDate, guildId, partitionId, regionId, inviteUid);
} }
public Page<GuildPolicy2MemberAdminVo> listByStatDate(String statDate, String endDate, Integer partitionId, public Page<GuildPolicy2MemberAdminVo> listByStatDate(String statDate, String endDate, Integer partitionId,
Integer guildId, Long uid, Integer pageNo, Integer pageSize) { Integer guildId, Long uid, Integer pageNo, Integer pageSize) {
Page<GuildPolicy2MemberAdminVo> page = new Page<>(pageNo, pageSize); Page<GuildPolicy2MemberAdminVo> page = new Page<>(pageNo, pageSize);
return baseMapper.listByStatDate(page, statDate, endDate, guildId, uid, partitionId); return baseMapper.listByStatDate(page, statDate, endDate, guildId, uid, partitionId, GUILD_POLICY2_VALID_DAY_MINUTES);
} }
public List<GuildPolicy2ClearDiamondDto> listClearDaimondData(Integer partitionId) { public List<GuildPolicy2ClearDiamondDto> listClearDaimondData(Integer partitionId) {

View File

@@ -0,0 +1,34 @@
package com.accompany.business.service.guildpolicy2;
import com.accompany.business.model.guildpolicy2.GuildDiamondStatisticsPolicy2Settle;
import com.accompany.business.mybatismapper.guildpolicy2.GuildDiamondStatisticsPolicy2SettleMapper;
import com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import static com.accompany.business.constant.guild.GuildConstant.GUILD_POLICY2_VALID_DAY_MINUTES;
/**
* 公会钻石流水结算 服务实现类
*
* @author
* @since 2025-10-09
*/
@Slf4j
@Service
public class GuildDiamondStatisticsPolicy2SettleService extends ServiceImpl<GuildDiamondStatisticsPolicy2SettleMapper, GuildDiamondStatisticsPolicy2Settle> {
public List<GuildDiamondStatisticsPolicy2Settle> settleByCycleDate(String cycleDate, Integer partitionId) {
return baseMapper.settleByCycleDate(cycleDate, partitionId, GUILD_POLICY2_VALID_DAY_MINUTES);
}
public Page<GuildPolicy2MemberAdminVo> listByStatDate(String cycleDate, Integer partitionId,
Integer guildId, Long uid, Integer pageNo, Integer pageSize) {
Page<GuildPolicy2MemberAdminVo> page = new Page<>(pageNo, pageSize);
return baseMapper.listByStatDate(page, cycleDate, guildId, uid, partitionId);
}
}

View File

@@ -5,6 +5,8 @@ import com.accompany.business.constant.guild.GuildConstant;
import com.accompany.business.dto.guild.GuildPolicy2ClearDiamondDto; import com.accompany.business.dto.guild.GuildPolicy2ClearDiamondDto;
import com.accompany.business.model.guild.GuildMember; import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.model.guildpolicy2.GuildDiamondClearPolicy2; import com.accompany.business.model.guildpolicy2.GuildDiamondClearPolicy2;
import com.accompany.business.model.guildpolicy2.GuildDiamondStatisticsPolicy2Settle;
import com.accompany.business.model.guildpolicy2.GuildDiamondWagePolicy2;
import com.accompany.business.service.guild.GuildAuthService; import com.accompany.business.service.guild.GuildAuthService;
import com.accompany.business.service.guild.GuildMemberService; import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.guild.GuildMemberWeekLevelRewardV2Service; import com.accompany.business.service.guild.GuildMemberWeekLevelRewardV2Service;
@@ -67,7 +69,10 @@ public class GuildPolicy2Service {
private GuildCrystalSettlementService guildCrystalSettlementService; private GuildCrystalSettlementService guildCrystalSettlementService;
@Autowired @Autowired
private GuildMemberWeekLevelRewardV2Service guildMemberWeekLevelRewardV2Service; private GuildMemberWeekLevelRewardV2Service guildMemberWeekLevelRewardV2Service;
@Autowired
private GuildDiamondWagePolicy2Service guildDiamondWagePolicy2Service;
@Autowired
private GuildDiamondStatisticsPolicy2SettleService guildDiamondStatisticsPolicy2SettleService;
public BusiResult<GuildPolicy2Vo> getGuildPolicy2(Long uid, String cycleBeginDate) { public BusiResult<GuildPolicy2Vo> getGuildPolicy2(Long uid, String cycleBeginDate) {
GuildPolicy2Vo guildPolicy2Vo = new GuildPolicy2Vo(); GuildPolicy2Vo guildPolicy2Vo = new GuildPolicy2Vo();
guildPolicy2Vo.setCycleDate(cycleBeginDate); guildPolicy2Vo.setCycleDate(cycleBeginDate);
@@ -282,6 +287,34 @@ public class GuildPolicy2Service {
} }
} }
public void settle(PartitionEnum partitionEnum, String cycleDate) {
if (!GUILD_POLICY2.equals(partitionEnum.getClanMode())) {
log.info("GuildPolicy2Service.settle partitionEnum:{}, clanMode:{} cycleDate:{}", partitionEnum, partitionEnum.getClanMode(), cycleDate);
return;
}
int partitionId = partitionEnum.getId();
List<GuildDiamondStatisticsPolicy2Settle> list = guildDiamondStatisticsPolicy2SettleService.settleByCycleDate(cycleDate, partitionId);
if (CollectionUtils.isEmpty(list)) {
log.info("Policy2Settle.emptyData");
return;
}
Date date = new Date();
TreeMap<BigDecimal, GuildDiamondWagePolicy2> diamondWageMap = guildDiamondWagePolicy2Service.getDiamondWageMap(partitionId);
for (GuildDiamondStatisticsPolicy2Settle settle : list) {
settle.setCreateTime(date);
settle.setUpdateTime(date);
settle.setCycleDate(cycleDate);
GuildDiamondWagePolicy2 diamondWagePolicy2 = guildDiamondWagePolicy2Service.calDiamondWageVo(diamondWageMap, settle.getDiamondNum(), settle.getMicDay());
if (diamondWagePolicy2 == null) {
continue;
}
settle.setAnchorSalary(diamondWagePolicy2.getAnchorDiamondSalary());
settle.setOwnerSalary(diamondWagePolicy2.getOwnerSalary());
settle.setAnchorMicSalary(diamondWagePolicy2.getAnchorMicSalary());
}
guildDiamondStatisticsPolicy2SettleService.saveBatch(list);
}
public void clearGuildCrystal(PartitionEnum partitionEnum, Date lastMonthDate) { public void clearGuildCrystal(PartitionEnum partitionEnum, Date lastMonthDate) {
if (!Constant.ClanMode.GUILD_POLICY2.equals(partitionEnum.getClanMode())) { if (!Constant.ClanMode.GUILD_POLICY2.equals(partitionEnum.getClanMode())) {
return; return;

View File

@@ -43,7 +43,7 @@
where cycle_date = #{cycleDate} where cycle_date = #{cycleDate}
GROUP BY guild_member_id) gdsp on gm.id = gdsp.guild_member_id GROUP BY guild_member_id) gdsp on gm.id = gdsp.guild_member_id
left join left join
(select guild_member_id, COUNT(DISTINCT CASE WHEN mic_minutes >= 120 THEN stat_date END) micDay (select guild_member_id, COUNT(DISTINCT CASE WHEN mic_minutes >= #{validDayMinutes} THEN stat_date END) micDay
from guild_mic_statistics_policy2 from guild_mic_statistics_policy2
where cycle_date = #{cycleDate} GROUP BY guild_member_id) gmp on gmp.guild_member_id = gm.id where cycle_date = #{cycleDate} GROUP BY guild_member_id) gmp on gmp.guild_member_id = gm.id
left join users u on u.uid = gm.uid left join users u on u.uid = gm.uid
@@ -106,7 +106,7 @@
ORDER BY gm.`enable` desc, diamondNum desc, gm.guild_id desc ORDER BY gm.`enable` desc, diamondNum desc, gm.guild_id desc
</select> </select>
<select id="listByStatDate4OldPolicy" resultType="com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo"> <select id="listByStatDate4Policy2" resultType="com.accompany.business.vo.guild.GuildDiamondStatisticsDayVo">
select gd.guild_id guildId, select gd.guild_id guildId,
ANY_VALUE(g.name) guildName, ANY_VALUE(g.name) guildName,
sum(gd.diamond_num) diamondNum, sum(gd.diamond_num) diamondNum,
@@ -157,7 +157,7 @@
where stat_date &gt;= #{startDate} and stat_date &lt;= #{endDate} where stat_date &gt;= #{startDate} and stat_date &lt;= #{endDate}
GROUP BY guild_member_id) gd on gm.id = gd.guild_member_id GROUP BY guild_member_id) gd on gm.id = gd.guild_member_id
left join left join
(select guild_member_id, sum(mic_minutes) mic_minutes,COUNT(DISTINCT CASE WHEN mic_minutes >= 120 THEN stat_date END) micDay (select guild_member_id, sum(mic_minutes) mic_minutes,COUNT(DISTINCT CASE WHEN mic_minutes >= #{validDayMinutes} THEN stat_date END) micDay
from guild_mic_statistics_policy2 from guild_mic_statistics_policy2
where stat_date &gt;= #{startDate} and stat_date &lt;= #{endDate} where stat_date &gt;= #{startDate} and stat_date &lt;= #{endDate}
GROUP BY guild_member_id) gmp on gmp.guild_member_id = gm.id GROUP BY guild_member_id) gmp on gmp.guild_member_id = gm.id

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.accompany.business.mybatismapper.guildpolicy2.GuildDiamondStatisticsPolicy2SettleMapper">
<select id="settleByCycleDate" resultType="com.accompany.business.model.guildpolicy2.GuildDiamondStatisticsPolicy2Settle">
select
gm.partition_id partitionId,
gm.id guildMemberId,
gm.uid uid,
gm.guild_id guildId,
ifnull(gd.diamond_num, 0) diamondNum,
ifnull(gmp.mic_minutes, 0) micMinutes,
ifnull(gmp.micDay, 0) AS micDay
from guild_member gm
left join
(select guild_member_id, sum(diamond_num) diamond_num
from guild_diamond_statistics_policy2
where cycle_date = #{cycleDate}
GROUP BY guild_member_id) gd on gm.id = gd.guild_member_id
left join
(select guild_member_id, sum(mic_minutes) mic_minutes,COUNT(DISTINCT CASE WHEN mic_minutes >= #{validDayMinutes} THEN stat_date END) micDay
from guild_mic_statistics_policy2
where cycle_date = #{cycleDate}
GROUP BY guild_member_id) gmp on gmp.guild_member_id = gm.id
left join guild g on g.id = gm.guild_id
where gm.`enable` = 1
and gm.partition_id = #{partitionId}
group by gm.id
</select>
<select id="listByStatDate" resultType="com.accompany.business.vo.guildpolicy.GuildPolicy2MemberAdminVo">
select
gm.id guildMemberId,
gm.guild_id guildId,
ANY_VALUE(g.name) guildName,
ANY_VALUE(u.erban_no) ownerErbanNo,
ANY_VALUE(um.erban_no) erbanNo,
ANY_VALUE(um.nick) nick,
ifnull(gm.diamond_num, 0) diamondNum,
ifnull(gm.mic_minutes, 0) micMinutes,
ifnull(gm.mic_day, 0) AS micDay,
ifnull(gm.anchor_salary, 0) AS anchorDiamondSalary,
ifnull(gm.anchor_mic_salary, 0) AS anchorMicSalary,
ifnull(gm.owner_salary, 0) AS ownerSalary
from guild_diamond_statistics_policy2_settle gm
left join users um on um.uid = gm.uid
left join guild g on g.id = gm.guild_id
left join users u on u.uid = g.owner_uid
<where>
<if test="partitionId != null">
and gm.partition_id = #{partitionId}
</if>
<if test="guildId != null">
and gm.guild_id = #{guildId}
</if>
<if test="uid != null">
and gm.uid = #{uid}
</if>
</where>
group by gm.id
ORDER BY diamondNum desc
</select>
</mapper>

View File

@@ -61,4 +61,11 @@ public class GuildPolicy2Controller {
guildPolicy2Service.clearDiamond(PartitionEnum.getByPartitionId(partitionId), DateUtil.parseDateTime(date)); guildPolicy2Service.clearDiamond(PartitionEnum.getByPartitionId(partitionId), DateUtil.parseDateTime(date));
return BusiResult.success(); return BusiResult.success();
} }
@Authorization
@GetMapping("/settle")
public BusiResult<List<CycleDateVo>> settle(Integer partitionId, String cycleDate) {
guildPolicy2Service.settle(PartitionEnum.getByPartitionId(partitionId), cycleDate);
return BusiResult.success();
}
} }

View File

@@ -30,15 +30,26 @@ public class GuildPolicy2SettlementTask {
public void guildPolicy2ClearDiamond() { public void guildPolicy2ClearDiamond() {
Date date = new Date(); Date date = new Date();
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.TURKEY); List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.TURKEY);
Date lastMonth = DateUtil.offsetMonth(date, -1);
for (PartitionEnum partitionEnum : partitionEnumList) { for (PartitionEnum partitionEnum : partitionEnumList) {
try { try {
Date lastMonth = DateUtil.offsetMonth(date, -1);
log.info("=-=GuildPolicy2ClearDiamondTask=-=:begin"); log.info("=-=GuildPolicy2ClearDiamondTask=-=:begin");
guildPolicy2Service.clearDiamond(partitionEnum, lastMonth); guildPolicy2Service.clearDiamond(partitionEnum, lastMonth);
log.info("=-=GuildPolicy2ClearDiamondTask=-= end"); log.info("=-=GuildPolicy2ClearDiamondTask=-= end");
} catch (Exception e) { } catch (Exception e) {
log.error("[GuildPolicy2ClearDiamondTask] 异常", e); log.error("[GuildPolicy2ClearDiamondTask] 异常", e);
} }
try {
String cycleDate = DateUtil.formatDate(lastMonth);
log.info("=-=GuildPolicy2.settle=-=:begin");
guildPolicy2Service.settle(partitionEnum, cycleDate);
log.info("=-=GuildPolicy2.settle=-= end");
} catch (Exception e) {
log.error("[GuildPolicy2.settle] 异常", e);
}
} }
} }