diff --git a/accompany-base/accompany-core/src/main/java/com/accompany/common/utils/DateTimeUtil.java b/accompany-base/accompany-core/src/main/java/com/accompany/common/utils/DateTimeUtil.java index fa42dbf62..ef804a44a 100644 --- a/accompany-base/accompany-core/src/main/java/com/accompany/common/utils/DateTimeUtil.java +++ b/accompany-base/accompany-core/src/main/java/com/accompany/common/utils/DateTimeUtil.java @@ -50,6 +50,7 @@ public class DateTimeUtil { public static final String MONTH_DATE_PATTERN = "MMdd"; public static final String MONTH_WITHOUT_ZERO_DATE_PATTERN = "M.d"; public static final String ZONE_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss z"; + public static final String ZONE_DATETIME_REVERSE_PATTERN = "dd/MM/yyyy HH:mm"; //一小时的秒数 private static final int HOUR_SECOND = 60 * 60; @@ -63,6 +64,7 @@ public class DateTimeUtil { public static final DateTimeFormatter dateHourFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DEFAULT_DATE_MINUTE_PATTERN); public static final DateTimeFormatter hoursFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.DATE_HOUR_PATTERN); public static final DateTimeFormatter monthWithoutZeroDateFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.MONTH_WITHOUT_ZERO_DATE_PATTERN); + public static final DateTimeFormatter datetimeReverseFormatter = DateTimeFormatter.ofPattern(DateTimeUtil.ZONE_DATETIME_REVERSE_PATTERN); public static final DateTimeFormatter yyyyMMdd = DateTimeFormatter.ofPattern("yyyyMMdd"); diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/guild/GuildConstant.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/guild/GuildConstant.java index c478067c8..23f08f250 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/guild/GuildConstant.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/constant/guild/GuildConstant.java @@ -60,6 +60,8 @@ public class GuildConstant { public static final String GUILD_POLICY2 = "guild_policy2"; //公会新政策成员数据 public static final String GUILD_POLICY2_MEMBER = "guild_policy2_member"; + //独联体-新的我的收入 + public static final String LOOK_INCOME_V2 = "look_income_v2"; } public static class UsdTab { diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietDateListVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietDateListVo.java new file mode 100644 index 000000000..d247384d7 --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietDateListVo.java @@ -0,0 +1,32 @@ +package com.accompany.business.model.extradiamond; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Data +public class GuildSovietDateListVo { + @ApiModelProperty("1-个人tab,2-公会tab") + private Integer dateType; + @ApiModelProperty("当前周期") + private GuildSovietDateVo curCycle; + @ApiModelProperty("上一周期") + private GuildSovietDateVo lastCycle; + @ApiModelProperty("今日") + private GuildSovietDateVo curDay; + @ApiModelProperty("昨日") + private GuildSovietDateVo lastDay; + @ApiModelProperty("本周") + private GuildSovietDateVo curWeek; + @ApiModelProperty("上周") + private GuildSovietDateVo lastWeek; + @ApiModelProperty("本月") + private GuildSovietDateVo curMonth; + @ApiModelProperty("上月") + private GuildSovietDateVo lastMonth; +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietDateVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietDateVo.java new file mode 100644 index 000000000..7c70e5c4a --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietDateVo.java @@ -0,0 +1,26 @@ +package com.accompany.business.model.extradiamond; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Data +public class GuildSovietDateVo { + + @ApiModelProperty("周期时间范围") + private String periodDateStr; + @ApiModelProperty("当前周期开始时间") + private String beginDate; + @ApiModelProperty("当前周期结束时间") + private String endDate; + @ApiModelProperty("钻石流水") + private BigDecimal diamondNum; + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietIncomeAgencyVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietIncomeAgencyVo.java new file mode 100644 index 000000000..f72664931 --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietIncomeAgencyVo.java @@ -0,0 +1,14 @@ +package com.accompany.business.model.extradiamond; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel +@Data +public class GuildSovietIncomeAgencyVo { + + @ApiModelProperty("周期数据") + private GuildSovietDateListVo diamondDateList; + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietIncomePersonVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietIncomePersonVo.java new file mode 100644 index 000000000..250dc409f --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietIncomePersonVo.java @@ -0,0 +1,24 @@ +package com.accompany.business.model.extradiamond; + +import com.accompany.business.vo.SimpleUserVo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@ApiModel +@Data +public class GuildSovietIncomePersonVo { + + @ApiModelProperty("我") + private SimpleUserVo me; + + @ApiModelProperty("钻石余额") + private BigDecimal diamondNum; + + @ApiModelProperty("周期数据") + private GuildSovietDateListVo diamondDateList; + + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietIncomeVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietIncomeVo.java new file mode 100644 index 000000000..63039b916 --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietIncomeVo.java @@ -0,0 +1,16 @@ +package com.accompany.business.model.extradiamond; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel +@Data +public class GuildSovietIncomeVo { + + @ApiModelProperty("person") + private GuildSovietIncomePersonVo person; + @ApiModelProperty("agency") + private GuildSovietIncomeAgencyVo agency; + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietMemberVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietMemberVo.java new file mode 100644 index 000000000..002b369d9 --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/model/extradiamond/GuildSovietMemberVo.java @@ -0,0 +1,20 @@ +package com.accompany.business.model.extradiamond; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class GuildSovietMemberVo { + @ApiModelProperty("统计日期") + private String statDate; + @ApiModelProperty("角色类型1-公会长,2-管理员,3-主播") + private Byte roleType; + private Long uid; + private Long erbanNo; + private String nick; + private String avatar; + @ApiModelProperty("钻石流水") + private BigDecimal diamondNum; +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietDateListVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietDateListVo.java new file mode 100644 index 000000000..c5ab99041 --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietDateListVo.java @@ -0,0 +1,32 @@ +package com.accompany.business.vo.guild; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Data +public class GuildSovietDateListVo { + @ApiModelProperty("1-个人tab,2-公会tab") + private Integer dateType; + @ApiModelProperty("当前周期") + private GuildSovietDateVo curCycle; + @ApiModelProperty("上一周期") + private GuildSovietDateVo lastCycle; + @ApiModelProperty("今日") + private GuildSovietDateVo curDay; + @ApiModelProperty("昨日") + private GuildSovietDateVo lastDay; + @ApiModelProperty("本周") + private GuildSovietDateVo curWeek; + @ApiModelProperty("上周") + private GuildSovietDateVo lastWeek; + @ApiModelProperty("本月") + private GuildSovietDateVo curMonth; + @ApiModelProperty("上月") + private GuildSovietDateVo lastMonth; +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietDateVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietDateVo.java new file mode 100644 index 000000000..5cefddd3f --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietDateVo.java @@ -0,0 +1,26 @@ +package com.accompany.business.vo.guild; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@AllArgsConstructor +@NoArgsConstructor +@Builder +@Data +public class GuildSovietDateVo { + + @ApiModelProperty("周期时间范围") + private String periodDateStr; + @ApiModelProperty("当前周期开始时间") + private String beginDate; + @ApiModelProperty("当前周期结束时间") + private String endDate; + @ApiModelProperty("钻石流水") + private BigDecimal diamondNum; + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietIncomeAgencyVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietIncomeAgencyVo.java new file mode 100644 index 000000000..bdf4bec2b --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietIncomeAgencyVo.java @@ -0,0 +1,14 @@ +package com.accompany.business.vo.guild; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel +@Data +public class GuildSovietIncomeAgencyVo { + + @ApiModelProperty("周期数据") + private GuildSovietDateListVo diamondDateList; + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietIncomePersonVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietIncomePersonVo.java new file mode 100644 index 000000000..bff5f6fb2 --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietIncomePersonVo.java @@ -0,0 +1,24 @@ +package com.accompany.business.vo.guild; + +import com.accompany.business.vo.SimpleUserVo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@ApiModel +@Data +public class GuildSovietIncomePersonVo { + + @ApiModelProperty("我") + private SimpleUserVo me; + + @ApiModelProperty("钻石余额") + private BigDecimal diamondNum; + + @ApiModelProperty("周期数据") + private GuildSovietDateListVo diamondDateList; + + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietIncomeVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietIncomeVo.java new file mode 100644 index 000000000..7eae703e6 --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietIncomeVo.java @@ -0,0 +1,16 @@ +package com.accompany.business.vo.guild; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel +@Data +public class GuildSovietIncomeVo { + + @ApiModelProperty("person") + private GuildSovietIncomePersonVo person; + @ApiModelProperty("agency") + private GuildSovietIncomeAgencyVo agency; + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietMemberVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietMemberVo.java new file mode 100644 index 000000000..b3f84d3e1 --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/guild/GuildSovietMemberVo.java @@ -0,0 +1,20 @@ +package com.accompany.business.vo.guild; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class GuildSovietMemberVo { + @ApiModelProperty("统计日期") + private String statDate; + @ApiModelProperty("角色类型1-公会长,2-管理员,3-主播") + private Byte roleType; + private Long uid; + private Long erbanNo; + private String nick; + private String avatar; + @ApiModelProperty("钻石流水") + private BigDecimal diamondNum; +} diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/extradiamond/GuildExtraDiamondDayMapper.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/extradiamond/GuildExtraDiamondDayMapper.java index 2d64fd310..eb620731f 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/extradiamond/GuildExtraDiamondDayMapper.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/mybatismapper/extradiamond/GuildExtraDiamondDayMapper.java @@ -1,11 +1,14 @@ package com.accompany.business.mybatismapper.extradiamond; import com.accompany.business.model.extradiamond.GuildExtraDiamondDay; +import com.accompany.business.vo.guild.GuildSovietMemberVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import java.math.BigDecimal; import java.util.Date; +import java.util.List; /** * 公会钻石流水额外收入记录 Mapper 接口 @@ -21,4 +24,16 @@ public interface GuildExtraDiamondDayMapper extends BaseMapper groupByPartitionMember(@Param("partitionId") Integer partitionId, @Param("startDate") String startDate, + @Param("endDate") String endDate, @Param("guildMemberId") Long guildMemberId); + + List groupByAllPartitionGuild(@Param("partitionId") Integer partitionId, @Param("startDate") String startDate, + @Param("endDate") String endDate, @Param("guildId") Integer guildId); + + Page listGuildDetailVo(@Param("page") Page page, @Param("partitionId") Integer partitionId, @Param("guildId") Integer guildId, + @Param("startDate") String startDate, @Param("endDate") String endDate); + + Page listMemberDetailVo(@Param("page") Page page, @Param("partitionId") Integer partitionId, @Param("guildMemberId") Long guildMemberId, + @Param("startDate") String startDate, @Param("endDate") String endDate); } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/GuildExtraDiamondDayService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/GuildExtraDiamondDayService.java index 76d606abe..7bfa8ac68 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/GuildExtraDiamondDayService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/extradiamond/GuildExtraDiamondDayService.java @@ -2,8 +2,10 @@ package com.accompany.business.service.extradiamond; import com.accompany.business.model.extradiamond.GuildExtraDiamondDay; import com.accompany.business.mybatismapper.extradiamond.GuildExtraDiamondDayMapper; +import com.accompany.business.vo.guild.GuildSovietMemberVo; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.springframework.stereotype.Service; @@ -35,4 +37,25 @@ public class GuildExtraDiamondDayService extends ServiceImpl groupByPartitionMember(Integer partitionId, String statDate, String endDate, Long guildMemberId) { + return baseMapper.groupByPartitionMember(partitionId, statDate, endDate, guildMemberId); + } + + + public List groupByPartitionGuild(Integer partitionId, String statDate, String endDate, Integer guildId) { + return baseMapper.groupByAllPartitionGuild(partitionId, statDate, endDate, guildId); + } + + public List listGuildDetailVo(Integer partitionId, Integer guildId, String beginDate, String endDate, + Integer pageNo, Integer pageSize) { + Page page = new Page<>(pageNo, pageSize, false); + return baseMapper.listGuildDetailVo(page, partitionId, guildId, beginDate, endDate).getRecords(); + } + + public List listMemberDetailVo(Integer partitionId, Long guildMemberId, String beginDate, String endDate, + Integer pageNo, Integer pageSize) { + Page page = new Page<>(pageNo, pageSize, false); + return baseMapper.listMemberDetailVo(page, partitionId, guildMemberId, beginDate, endDate).getRecords(); + } } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildSovietIncomeService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildSovietIncomeService.java new file mode 100644 index 000000000..ade545a51 --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/guild/GuildSovietIncomeService.java @@ -0,0 +1,252 @@ +package com.accompany.business.service.guild; + +import com.accompany.business.constant.guild.GuildConstant; +import com.accompany.business.model.UserPurse; +import com.accompany.business.model.extradiamond.GuildExtraDiamondDay; +import com.accompany.business.model.guild.GuildMember; +import com.accompany.business.service.extradiamond.GuildExtraDiamondDayService; +import com.accompany.business.service.purse.UserPurseService; +import com.accompany.business.service.user.UsersService; +import com.accompany.business.util.CycleTimeUtil; +import com.accompany.business.vo.guild.*; +import com.accompany.common.constant.Constant; +import com.accompany.common.status.BusiStatus; +import com.accompany.common.utils.DateTimeUtil; +import com.accompany.core.enumeration.PartitionEnum; +import com.accompany.core.exception.ServiceException; +import com.accompany.core.model.PartitionInfo; +import com.accompany.core.model.Users; +import com.accompany.core.service.partition.PartitionInfoService; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.time.DayOfWeek; +import java.time.ZonedDateTime; +import java.util.Date; +import java.util.List; + +import static java.util.Collections.EMPTY_LIST; + +@Service +public class GuildSovietIncomeService { + + @Autowired + private UsersService usersService; + @Autowired + private PartitionInfoService partitionInfoService; + @Autowired + private GuildMemberService guildMemberService; + @Autowired + private UserPurseService userPurseService; + @Autowired + private GuildAuthService guildAuthService; + @Autowired + private GuildMemberDiamondStatisticsService guildMemberDiamondStatisticsService; + @Autowired + private GuildExtraDiamondDayService guildExtraDiamondDayService; + + public GuildSovietIncomeVo getIncome(Long uid) { + Users me = usersService.getNotNullUsersByUid(uid); + PartitionInfo partitionInfo = partitionInfoService.getById(me.getPartitionId()); + if (null == partitionInfo || !Constant.ClanMode.SOVIET.equals(partitionInfo.getClanMode())) { + throw new ServiceException(BusiStatus.FAMILY_PERMISSION_DENIED); + } + + GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid); + if (null == guildMember + || !guildAuthService.hasAuthByRoleType(PartitionEnum.getByPartitionId(guildMember.getPartitionId()).getClanMode(), + guildMember.getRoleType(), GuildConstant.AuthCode.LOOK_INCOME_V2)) { + throw new ServiceException(BusiStatus.FAMILY_PERMISSION_DENIED); + } + + GuildSovietIncomeVo vo = new GuildSovietIncomeVo(); + + ZonedDateTime nowZoneDateTime = DateTimeUtil.convertWithZoneId(new Date(), partitionInfo.getZoneId()); + GuildSovietIncomePersonVo personVo = getPersonIncome(me, guildMember.getId(), partitionInfo.getId(), nowZoneDateTime); + vo.setPerson(personVo); + + GuildSovietIncomeAgencyVo agencyVo = getAgencyIncome(guildMember, partitionInfo.getId(), nowZoneDateTime); + vo.setAgency(agencyVo); + + return vo; + } + + public GuildSovietIncomePersonVo getPersonIncome(Users me, Long memberId, Integer partitionId, ZonedDateTime nowZoneDateTime) { + GuildSovietIncomePersonVo vo = new GuildSovietIncomePersonVo(); + vo.setMe(usersService.getSimpleUserVo(me)); + + UserPurse userPurse = userPurseService.queryUserPurse(me.getUid()); + vo.setDiamondNum(BigDecimal.valueOf(userPurse.getGolds())); + + GuildSovietDateListVo diamondDateList = new GuildSovietDateListVo(); + vo.setDiamondDateList(diamondDateList); + diamondDateList.setDateType(1); + + String lastBeginOfMonth = nowZoneDateTime.minusMonths(1).withDayOfMonth(1).format(DateTimeUtil.dateFormatter); + String endOfMonth = nowZoneDateTime.plusMonths(1).withDayOfMonth(1).minusDays(1).format(DateTimeUtil.dateFormatter); + + List guildExtraDiamondDays = guildExtraDiamondDayService.groupByPartitionMember(partitionId, lastBeginOfMonth, endOfMonth, memberId); + + this.coverDateListVo(diamondDateList, nowZoneDateTime, guildExtraDiamondDays, lastBeginOfMonth, endOfMonth); + + return vo; + } + + private GuildSovietIncomeAgencyVo getAgencyIncome(GuildMember guildMember, Integer partitionId, ZonedDateTime nowZoneDateTime) { + if (!GuildConstant.RoleType.OWNER.equals(guildMember.getRoleType())) { + return null; + } + GuildSovietIncomeAgencyVo agencyVo = new GuildSovietIncomeAgencyVo(); + + + GuildSovietDateListVo diamondDateList = new GuildSovietDateListVo(); + agencyVo.setDiamondDateList(diamondDateList); + diamondDateList.setDateType(2); + + String lastBeginOfMonth = nowZoneDateTime.minusMonths(1).withDayOfMonth(1).format(DateTimeUtil.dateFormatter); + String endOfMonth = nowZoneDateTime.plusMonths(1).withDayOfMonth(1).minusDays(1).format(DateTimeUtil.dateFormatter); + + + List guildExtraDiamondDays = guildExtraDiamondDayService.groupByPartitionGuild(partitionId, lastBeginOfMonth, endOfMonth, guildMember.getGuildId()); + this.coverDateListVo(diamondDateList, nowZoneDateTime, guildExtraDiamondDays, lastBeginOfMonth, endOfMonth); + + + return agencyVo; + } + + private void coverDateListVo(GuildSovietDateListVo diamondDateList, ZonedDateTime nowZoneDateTime, List guildExtraDiamondDays, String lastBeginOfMonth, String endOfMonth) { + String cycleBeginDate = CycleTimeUtil.getCycleDate(nowZoneDateTime); + String cycleEndDate = CycleTimeUtil.getCycleEndDate(nowZoneDateTime); + GuildSovietDateVo curCycle = GuildSovietDateVo.builder() + .beginDate(cycleBeginDate) + .endDate(cycleEndDate) + .diamondNum(BigDecimal.ZERO) + .periodDateStr(CycleTimeUtil.getCycleDateZdt(nowZoneDateTime).withHour(0).withMinute(0).withSecond(0).format(DateTimeUtil.datetimeReverseFormatter) + + "~" + CycleTimeUtil.getCycleEndDateZdt(nowZoneDateTime).withHour(23).withMinute(59).withSecond(59).format(DateTimeUtil.datetimeReverseFormatter)) + .build(); + diamondDateList.setCurCycle(curCycle); + + + ZonedDateTime lastBeginDateZdt = CycleTimeUtil.getLastDateZdt(nowZoneDateTime); + String lastCycleBeginDate = lastBeginDateZdt.format(DateTimeUtil.dateFormatter); + ZonedDateTime lastEndDateZdt = CycleTimeUtil.getCycleDateZdt(nowZoneDateTime).minusDays(1); + String lastCycleEndDate = lastEndDateZdt.format(DateTimeUtil.dateFormatter); + GuildSovietDateVo lastCycle = GuildSovietDateVo.builder() + .beginDate(lastCycleBeginDate) + .endDate(lastCycleEndDate) + .diamondNum(BigDecimal.ZERO) + .periodDateStr(lastBeginDateZdt.withHour(0).withMinute(0).withSecond(0).format(DateTimeUtil.datetimeReverseFormatter) + + "~" + lastEndDateZdt.minusDays(1).withHour(23).withMinute(59).withSecond(59).format(DateTimeUtil.datetimeReverseFormatter)) + .build(); + diamondDateList.setLastCycle(lastCycle); + + + String beginOfDay = nowZoneDateTime.format(DateTimeUtil.dateFormatter); + String endOfDay = beginOfDay; + GuildSovietDateVo curDay = GuildSovietDateVo.builder() + .beginDate(beginOfDay) + .endDate(endOfDay) + .diamondNum(BigDecimal.ZERO) + .build(); + diamondDateList.setCurDay(curDay); + + + String lastBeginDay = nowZoneDateTime.minusDays(1).format(DateTimeUtil.dateFormatter); + String lastEndDay = lastBeginDay; + GuildSovietDateVo lastDay = GuildSovietDateVo.builder() + .beginDate(lastBeginDay) + .endDate(lastEndDay) + .diamondNum(BigDecimal.ZERO) + .build(); + diamondDateList.setLastDay(lastDay); + + + String beginOfWeek = nowZoneDateTime.with(DayOfWeek.MONDAY).format(DateTimeUtil.dateFormatter); + String endOfWeek = nowZoneDateTime.with(DayOfWeek.SUNDAY).format(DateTimeUtil.dateFormatter); + GuildSovietDateVo curWeek = GuildSovietDateVo.builder() + .beginDate(beginOfWeek) + .endDate(endOfWeek) + .diamondNum(BigDecimal.ZERO) + .build(); + diamondDateList.setCurWeek(curWeek); + + String lastBeginOfWeek = nowZoneDateTime.minusWeeks(1).with(DayOfWeek.MONDAY).format(DateTimeUtil.dateFormatter); + String lastEndOfWeek = nowZoneDateTime.minusWeeks(1).with(DayOfWeek.SUNDAY).format(DateTimeUtil.dateFormatter); + GuildSovietDateVo lastWeek = GuildSovietDateVo.builder() + .beginDate(lastBeginOfWeek) + .endDate(lastEndOfWeek) + .diamondNum(BigDecimal.ZERO) + .build(); + diamondDateList.setLastWeek(lastWeek); + + String beginOfMonth = nowZoneDateTime.withDayOfMonth(1).format(DateTimeUtil.dateFormatter); + GuildSovietDateVo curMonth = GuildSovietDateVo.builder() + .beginDate(beginOfMonth) + .endDate(endOfMonth) + .diamondNum(BigDecimal.ZERO) + .build(); + diamondDateList.setCurMonth(curMonth); + + String lastEndOfMonth = nowZoneDateTime.withDayOfMonth(1).minusDays(1).format(DateTimeUtil.dateFormatter); + GuildSovietDateVo lastMonth = GuildSovietDateVo.builder() + .beginDate(lastBeginOfMonth) + .endDate(lastEndOfMonth) + .diamondNum(BigDecimal.ZERO) + .build(); + diamondDateList.setLastMonth(lastMonth); + + if (CollectionUtils.isEmpty(guildExtraDiamondDays)) { + return; + } + + for (GuildExtraDiamondDay guildExtraDiamondDay : guildExtraDiamondDays) { + String statDate = guildExtraDiamondDay.getStatDate(); + BigDecimal diamondNum = guildExtraDiamondDay.getDiamondNum().add(guildExtraDiamondDay.getLuckyDiamondNum()); + + if (cycleBeginDate.compareTo(statDate) <= 0 && cycleEndDate.compareTo(statDate) >= 0) { + curCycle.setDiamondNum(curCycle.getDiamondNum().add(diamondNum)); + } + if (lastCycleBeginDate.compareTo(statDate) <= 0 && lastCycleEndDate.compareTo(statDate) >= 0) { + lastCycle.setDiamondNum(lastCycle.getDiamondNum().add(diamondNum)); + } + if (beginOfDay.equals(statDate)) { + curDay.setDiamondNum(curDay.getDiamondNum().add(diamondNum)); + } + if (lastBeginDay.equals(statDate)) { + lastDay.setDiamondNum(lastDay.getDiamondNum().add(diamondNum)); + } + if (beginOfWeek.compareTo(statDate) <= 0 && endOfWeek.compareTo(statDate) >= 0) { + curWeek.setDiamondNum(curWeek.getDiamondNum().add(diamondNum)); + } + if (lastBeginOfWeek.compareTo(statDate) <= 0 && lastEndOfWeek.compareTo(statDate) >= 0) { + lastWeek.setDiamondNum(lastWeek.getDiamondNum().add(diamondNum)); + } + if (beginOfMonth.compareTo(statDate) <= 0 && endOfMonth.compareTo(statDate) >= 0) { + curMonth.setDiamondNum(curMonth.getDiamondNum().add(diamondNum)); + } + if (lastBeginOfMonth.compareTo(statDate) <= 0 && lastEndOfMonth.compareTo(statDate) >= 0) { + lastMonth.setDiamondNum(lastMonth.getDiamondNum().add(diamondNum)); + } + } + } + + public List getDetailVo(Long uid, String beginDate, String endDate, Integer dateType, + Integer pageNo, Integer pageSize) { + GuildMember guildMember = guildMemberService.getVaildGuildMemberByUid(uid); + + if (null == guildMember || dateType == null) { + throw new ServiceException(BusiStatus.FAMILY_PERMISSION_DENIED); + } + + if (dateType == 1) { + return guildExtraDiamondDayService.listMemberDetailVo(guildMember.getPartitionId(), guildMember.getId(), beginDate, endDate, + pageNo, pageSize); + } else if (dateType == 2 && GuildConstant.RoleType.OWNER.equals(guildMember.getRoleType())) { + return guildExtraDiamondDayService.listGuildDetailVo(guildMember.getPartitionId(), guildMember.getGuildId(), beginDate, endDate, + pageNo, pageSize); + } + return EMPTY_LIST; + } +} diff --git a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildExtraDiamondDayMapper.xml b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildExtraDiamondDayMapper.xml index 5020c8ca5..233174f72 100644 --- a/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildExtraDiamondDayMapper.xml +++ b/accompany-business/accompany-business-service/src/main/resources/accompany/sqlmappers/GuildExtraDiamondDayMapper.xml @@ -17,4 +17,71 @@ anchor_extra_lucky_num = anchor_extra_lucky_num + values (anchor_extra_lucky_num), update_time = values (update_time) + + + + + + + + diff --git a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/guild/GuildSovietIncomeController.java b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/guild/GuildSovietIncomeController.java new file mode 100644 index 000000000..1fb2997dd --- /dev/null +++ b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/guild/GuildSovietIncomeController.java @@ -0,0 +1,42 @@ +package com.accompany.business.controller.guild; + +import com.accompany.business.service.guild.GuildSovietIncomeService; +import com.accompany.business.vo.guild.GuildSovietIncomeVo; +import com.accompany.business.vo.guild.GuildSovietMemberVo; +import com.accompany.common.annotation.Authorization; +import com.accompany.common.result.BusiResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import static com.accompany.common.constant.ApplicationConstant.PublicParameters.PUB_UID; + +@Api(tags = "独联体-guild公会", value = "独联体") +@RequestMapping("/guildSoviet/income") +@RestController +public class GuildSovietIncomeController { + + @Autowired + private GuildSovietIncomeService guildSovietIncomeService; + + @ApiOperation(value = "获取收入情况", httpMethod = "GET") + @Authorization + @GetMapping("/getIncome") + public BusiResult getIncome(@RequestHeader(PUB_UID) Long uid) { + GuildSovietIncomeVo vo = guildSovietIncomeService.getIncome(uid); + return BusiResult.success(vo); + } + + + @ApiOperation(value = "获取明细收入情况", httpMethod = "GET") + @Authorization + @GetMapping("/getDetailVo") + public BusiResult> getDetailVo(@RequestHeader(PUB_UID) Long uid, String beginDate, String endDate, Integer dateType, + @RequestParam(defaultValue = "1") Integer pageNo, @RequestParam(defaultValue = "20") Integer pageSize) { + List vos = guildSovietIncomeService.getDetailVo(uid, beginDate, endDate, dateType, pageNo, pageSize); + return BusiResult.success(vos); + } +}