公会-结算
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package com.accompany.admin.mapper.api;
|
package com.accompany.admin.mapper.api;
|
||||||
|
|
||||||
import com.accompany.admin.service.api.BiamondNeedSendVo;
|
import com.accompany.admin.service.api.BiamondNeedSendVo;
|
||||||
import com.accompany.business.model.guild.AgencyMonthSettleDetail;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@@ -0,0 +1,51 @@
|
|||||||
|
package com.accompany.admin.service.guild;
|
||||||
|
|
||||||
|
import com.accompany.business.model.guild.GuildDiamondSalary;
|
||||||
|
import com.accompany.business.service.guild.GuildDiamondSalaryService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class GuildDiamondSalaryAdminService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GuildDiamondSalaryService service;
|
||||||
|
|
||||||
|
public List<GuildDiamondSalary> list(int partitionId) {
|
||||||
|
return service.lambdaQuery()
|
||||||
|
.eq(GuildDiamondSalary::getPartitionId, partitionId)
|
||||||
|
.list();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(BigDecimal diamondNum, int partitionId, String level, BigDecimal baseSalaryRatio,
|
||||||
|
Integer activeMemberCount, BigDecimal activeMemberBonusRatio) {
|
||||||
|
GuildDiamondSalary po = new GuildDiamondSalary();
|
||||||
|
po.setDiamondNum(diamondNum);
|
||||||
|
po.setPartitionId(partitionId);
|
||||||
|
po.setLevel(level);
|
||||||
|
|
||||||
|
GuildDiamondSalary db = service.lambdaQuery()
|
||||||
|
.eq(GuildDiamondSalary::getDiamondNum, diamondNum)
|
||||||
|
.one();
|
||||||
|
if (null != db){
|
||||||
|
po.setLevel(level);
|
||||||
|
po.setBaseSalaryRatio(baseSalaryRatio);
|
||||||
|
po.setActiveMemberCount(activeMemberCount);
|
||||||
|
po.setActiveMemberBonusRatio(activeMemberBonusRatio);
|
||||||
|
service.updateById(po);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
service.save(po);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void delete(BigDecimal diamondNum, int partitionId) {
|
||||||
|
service.lambdaUpdate()
|
||||||
|
.eq(GuildDiamondSalary::getDiamondNum, diamondNum)
|
||||||
|
.eq(GuildDiamondSalary::getPartitionId, partitionId)
|
||||||
|
.remove();
|
||||||
|
}
|
||||||
|
}
|
@@ -1,6 +1,5 @@
|
|||||||
package com.accompany.admin.service.guild;
|
package com.accompany.admin.service.guild;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import com.accompany.business.constant.guild.GuildConstant;
|
import com.accompany.business.constant.guild.GuildConstant;
|
||||||
import com.accompany.business.constant.guild.GuildUsdOperateTypeEnum;
|
import com.accompany.business.constant.guild.GuildUsdOperateTypeEnum;
|
||||||
import com.accompany.business.model.UserPurse;
|
import com.accompany.business.model.UserPurse;
|
||||||
@@ -20,7 +19,6 @@ import com.accompany.common.utils.DateTimeUtil;
|
|||||||
import com.accompany.core.exception.AdminServiceException;
|
import com.accompany.core.exception.AdminServiceException;
|
||||||
import com.accompany.core.exception.ServiceException;
|
import com.accompany.core.exception.ServiceException;
|
||||||
import com.accompany.core.model.PartitionInfo;
|
import com.accompany.core.model.PartitionInfo;
|
||||||
import com.accompany.core.model.RegionInfo;
|
|
||||||
import com.accompany.core.model.Users;
|
import com.accompany.core.model.Users;
|
||||||
import com.accompany.core.service.partition.PartitionInfoService;
|
import com.accompany.core.service.partition.PartitionInfoService;
|
||||||
import com.accompany.core.service.region.RegionInfoService;
|
import com.accompany.core.service.region.RegionInfoService;
|
||||||
@@ -58,7 +56,7 @@ public class GuildUsdBillRecordAdminService {
|
|||||||
private UserPurseService userPurseService;
|
private UserPurseService userPurseService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AgencyMonthSettleService agencyMonthSettleService;
|
private GuildSettleService guildSettleService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private GuildMemberDiamondStatisticsService guildMemberDiamondStatisticsService;
|
private GuildMemberDiamondStatisticsService guildMemberDiamondStatisticsService;
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
package com.accompany.admin.controller.guild;
|
package com.accompany.admin.controller.guild;
|
||||||
|
|
||||||
import com.accompany.business.param.BasePageParams;
|
import com.accompany.business.param.BasePageParams;
|
||||||
import com.accompany.business.service.guild.AgencyMonthSettleService;
|
import com.accompany.business.service.guild.GuildSettleService;
|
||||||
import com.accompany.business.vo.guild.AgencyMonthSettleDetailVo;
|
import com.accompany.business.vo.guild.AgencyMonthSettleDetailVo;
|
||||||
import com.accompany.common.status.BusiStatus;
|
import com.accompany.common.status.BusiStatus;
|
||||||
import com.accompany.core.vo.BaseResponseVO;
|
import com.accompany.core.vo.BaseResponseVO;
|
||||||
@@ -27,12 +27,12 @@ import java.util.List;
|
|||||||
public class AgencyMonthSettleController {
|
public class AgencyMonthSettleController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AgencyMonthSettleService agencyMonthSettleService;
|
private GuildSettleService guildSettleService;
|
||||||
|
|
||||||
@ApiOperation("列表")
|
@ApiOperation("列表")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public BaseResponseVO<Page<AgencyMonthSettleDetailVo>> list(BasePageParams basePageParams, Integer agencyId, Long agencyOwnerId) throws Exception {
|
public BaseResponseVO<Page<AgencyMonthSettleDetailVo>> list(BasePageParams basePageParams, Integer agencyId, Long agencyOwnerId) throws Exception {
|
||||||
Page<AgencyMonthSettleDetailVo> iPage = agencyMonthSettleService.listPage(basePageParams,agencyId,agencyOwnerId);
|
Page<AgencyMonthSettleDetailVo> iPage = guildSettleService.listPage(basePageParams,agencyId,agencyOwnerId);
|
||||||
return new BaseResponseVO<>(BusiStatus.SUCCESS,iPage);
|
return new BaseResponseVO<>(BusiStatus.SUCCESS,iPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ public class AgencyMonthSettleController {
|
|||||||
String excelName = URLEncoder.encode("公会钻石流水统计", "UTF-8");
|
String excelName = URLEncoder.encode("公会钻石流水统计", "UTF-8");
|
||||||
response.setHeader("Content-disposition", "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue());
|
response.setHeader("Content-disposition", "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue());
|
||||||
basePageParams.setPageSize(5000);
|
basePageParams.setPageSize(5000);
|
||||||
Page<AgencyMonthSettleDetailVo> iPage = agencyMonthSettleService.listPage(basePageParams,agencyId,agencyOwnerId);
|
Page<AgencyMonthSettleDetailVo> iPage = guildSettleService.listPage(basePageParams,agencyId,agencyOwnerId);
|
||||||
List<AgencyMonthSettleDetailVo> agencyMonthSettleDetailVos = iPage.getRecords();
|
List<AgencyMonthSettleDetailVo> agencyMonthSettleDetailVos = iPage.getRecords();
|
||||||
EasyExcel.write(response.getOutputStream(), AgencyMonthSettleDetailVo.class).sheet("公会钻石流水统计").doWrite(agencyMonthSettleDetailVos);
|
EasyExcel.write(response.getOutputStream(), AgencyMonthSettleDetailVo.class).sheet("公会钻石流水统计").doWrite(agencyMonthSettleDetailVos);
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,76 @@
|
|||||||
|
package com.accompany.admin.controller.guild;
|
||||||
|
|
||||||
|
import com.accompany.admin.service.guild.GuildDiamondSalaryAdminService;
|
||||||
|
import com.accompany.business.model.guild.GuildDiamondSalary;
|
||||||
|
import com.accompany.common.result.BusiResult;
|
||||||
|
import com.accompany.common.status.BusiStatus;
|
||||||
|
import com.accompany.core.exception.AdminServiceException;
|
||||||
|
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.util.StringUtils;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Api(tags = "公会钻石工资")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/admin/guild/salary")
|
||||||
|
public class GuildDiamondSalaryAdminController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GuildDiamondSalaryAdminService service;
|
||||||
|
|
||||||
|
@ApiOperation("创建")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "diamondNum", value = "钻石数", required = true),
|
||||||
|
@ApiImplicitParam(name = "partitionId", value = "partitionId", required = true),
|
||||||
|
@ApiImplicitParam(name = "level", value = "等级", required = true),
|
||||||
|
@ApiImplicitParam(name = "baseSalaryRatio", value = "基础工资比例", required = true),
|
||||||
|
@ApiImplicitParam(name = "activeMemberCount", value = "活跃主播人数", required = true),
|
||||||
|
@ApiImplicitParam(name = "activeMemberBonusRatio", value = "活跃主播激励工资比例", required = true)
|
||||||
|
})
|
||||||
|
@PostMapping("/add")
|
||||||
|
public BusiResult<Void> add(BigDecimal diamondNum, int partitionId, String level,
|
||||||
|
BigDecimal baseSalaryRatio, int activeMemberCount, BigDecimal activeMemberBonusRatio){
|
||||||
|
if (null == diamondNum || BigDecimal.ZERO.compareTo(diamondNum) >= 0
|
||||||
|
|| !StringUtils.hasText(level)
|
||||||
|
|| null == baseSalaryRatio || BigDecimal.ZERO.compareTo(baseSalaryRatio)>= 0
|
||||||
|
|| null == activeMemberBonusRatio || BigDecimal.ZERO.compareTo(activeMemberBonusRatio)>= 0){
|
||||||
|
throw new AdminServiceException(BusiStatus.PARAMERROR);
|
||||||
|
}
|
||||||
|
service.add(diamondNum, partitionId, level, baseSalaryRatio, activeMemberCount, activeMemberBonusRatio);
|
||||||
|
return BusiResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("删除")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "diamondNum", value = "diamondNum", required = true),
|
||||||
|
@ApiImplicitParam(name = "partitionId", value = "partitionId", required = true),
|
||||||
|
})
|
||||||
|
@PostMapping("/delete")
|
||||||
|
public BusiResult<Void> delete(BigDecimal diamondNum, int partitionId){
|
||||||
|
if (null == diamondNum){
|
||||||
|
throw new AdminServiceException(BusiStatus.PARAMERROR);
|
||||||
|
}
|
||||||
|
service.delete(diamondNum, partitionId);
|
||||||
|
return BusiResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("列表")
|
||||||
|
@GetMapping("/list")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "partitionId", value = "partitionId", required = true),
|
||||||
|
})
|
||||||
|
public BusiResult<List<GuildDiamondSalary>> list(int partitionId){
|
||||||
|
List<GuildDiamondSalary> list = service.list(partitionId);
|
||||||
|
return BusiResult.success(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -1,74 +0,0 @@
|
|||||||
package com.accompany.business.model.guild;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import lombok.*;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 公会主播月政策结算明细表
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author wxf
|
|
||||||
* @since 2024-07-30
|
|
||||||
*/
|
|
||||||
@Builder
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
@TableName("agency_user_month_settle_detail")
|
|
||||||
@AllArgsConstructor
|
|
||||||
@NoArgsConstructor
|
|
||||||
public class AgencyUserMonthSettleDetail implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@TableId(value = "id", type = IdType.AUTO)
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 结算时间
|
|
||||||
*/
|
|
||||||
@TableField("stat_date")
|
|
||||||
private String statDate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 结算结束时间
|
|
||||||
*/
|
|
||||||
@TableField("end_date")
|
|
||||||
private String endDate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 主播id
|
|
||||||
*/
|
|
||||||
@TableField("uid")
|
|
||||||
private Long uid;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 所属厅id
|
|
||||||
*/
|
|
||||||
@TableField("guild_id")
|
|
||||||
private Integer guildId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 钻石流水
|
|
||||||
*/
|
|
||||||
@TableField("diamond_num")
|
|
||||||
private BigDecimal diamondNum;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 创建时间
|
|
||||||
*/
|
|
||||||
@TableField("create_time")
|
|
||||||
private Date createTime;
|
|
||||||
|
|
||||||
@TableField("update_time")
|
|
||||||
private Date updateTime;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@@ -0,0 +1,16 @@
|
|||||||
|
package com.accompany.business.model.guild;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class GuildDiamondSalary {
|
||||||
|
private BigDecimal diamondNum;
|
||||||
|
private Integer partitionId;
|
||||||
|
private String level;
|
||||||
|
private BigDecimal baseSalaryRatio;
|
||||||
|
private Integer activeMemberCount;
|
||||||
|
private BigDecimal activeMemberBonusRatio;
|
||||||
|
|
||||||
|
}
|
@@ -21,9 +21,7 @@ import java.util.Date;
|
|||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class AgencyMonthSettleDetail implements Serializable {
|
public class GuildSettleRecord implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
@TableId(value = "id", type = IdType.AUTO)
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
private Long id;
|
private Long id;
|
||||||
@@ -35,31 +33,34 @@ public class AgencyMonthSettleDetail implements Serializable {
|
|||||||
* 结算结束时间
|
* 结算结束时间
|
||||||
*/
|
*/
|
||||||
private String endDate;
|
private String endDate;
|
||||||
private Long uid;
|
|
||||||
/**
|
/**
|
||||||
* 所属厅id
|
* 所属厅id
|
||||||
*/
|
*/
|
||||||
private Integer guildId;
|
private Integer guildId;
|
||||||
private Integer partitionId;
|
private Integer partitionId;
|
||||||
|
private Long guildOwnerUid;
|
||||||
|
|
||||||
private String diamondLevel;
|
private Integer memberCount;
|
||||||
private Integer hallMemberCount;
|
private Integer activeMemberCount;
|
||||||
/**
|
/**
|
||||||
* 能量值
|
* 能量值
|
||||||
*/
|
*/
|
||||||
private BigDecimal diamondNum;
|
private BigDecimal diamondNum;
|
||||||
/**
|
private String salaryLevel;
|
||||||
* 公会长工资
|
|
||||||
*/
|
|
||||||
private BigDecimal hallSalary;
|
|
||||||
/**
|
/**
|
||||||
* 公会长薪资比例
|
* 公会长薪资比例
|
||||||
*/
|
*/
|
||||||
private Double salaryRate;
|
private BigDecimal baseSalaryRatio;
|
||||||
/**
|
/**
|
||||||
* 区服
|
* 公会长工资
|
||||||
*/
|
*/
|
||||||
//private Byte region;
|
private BigDecimal baseSalary;
|
||||||
|
private BigDecimal activeMemberBonusRatio;
|
||||||
|
private BigDecimal activeMemberBonus;
|
||||||
|
private BigDecimal totalSalary;
|
||||||
|
|
||||||
|
private String memberRecord;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
@@ -6,6 +6,7 @@ import lombok.Data;
|
|||||||
@Data
|
@Data
|
||||||
public class GuildMemberDiamondStatisticsVo extends GuildMemberDiamondStatistics {
|
public class GuildMemberDiamondStatisticsVo extends GuildMemberDiamondStatistics {
|
||||||
private Integer hallMemberCount;
|
private Integer hallMemberCount;
|
||||||
|
private Integer activeHallMemberCount;
|
||||||
private Long guildMemberId;
|
private Long guildMemberId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -1,28 +0,0 @@
|
|||||||
package com.accompany.business.mybatismapper.guild;
|
|
||||||
|
|
||||||
import com.accompany.business.model.guild.AgencyUserMonthSettleDetail;
|
|
||||||
import com.accompany.business.vo.guild.AgencyOpenAdminVo;
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 公会主播月政策结算明细表 Mapper 接口
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author wxf
|
|
||||||
* @since 2024-07-30
|
|
||||||
*/
|
|
||||||
@Mapper
|
|
||||||
public interface AgencyUserMonthSettleDetailMapper extends BaseMapper<AgencyUserMonthSettleDetail> {
|
|
||||||
List<AgencyUserMonthSettleDetail> agencySettleDetailVo(@Param("date") String date, @Param("uid") Long uid, @Param("hallId") Integer hallId);
|
|
||||||
|
|
||||||
Page<AgencyOpenAdminVo> excellentAnchorList(@Param("page") Page<AgencyOpenAdminVo> page, @Param("hallId") Long hallId, @Param("dateCycle") String dateCycle, @Param("excellentAnchorDiamondNum") Long excellentAnchorDiamondNum);
|
|
||||||
|
|
||||||
Page<AgencyOpenAdminVo> excellentAnchorDetailList(@Param("page") Page<AgencyOpenAdminVo> page, @Param("hallId") Long hallId, @Param("dateCycle") String dateCycle, @Param("excellentAnchorDiamondNum") Long excellentAnchorDiamondNum);
|
|
||||||
|
|
||||||
}
|
|
@@ -0,0 +1,9 @@
|
|||||||
|
package com.accompany.business.mybatismapper.guild;
|
||||||
|
|
||||||
|
import com.accompany.business.model.guild.GuildDiamondSalary;
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
|
public interface GuildDiamondSalaryMapper extends BaseMapper<GuildDiamondSalary> {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -26,13 +26,10 @@ public interface GuildMemberDiamondStatisticsMapper extends BaseMapper<GuildMemb
|
|||||||
List<GuildMemberIncomeVo> listMemberTotalDiamondBetweenDate(@Param("startDate")String startDate, @Param("endDate") String endDate,
|
List<GuildMemberIncomeVo> listMemberTotalDiamondBetweenDate(@Param("startDate")String startDate, @Param("endDate") String endDate,
|
||||||
@Param("guildId")Integer guildId, @Param("guildMemberIds")List<Long> guildMemberIds);
|
@Param("guildId")Integer guildId, @Param("guildMemberIds")List<Long> guildMemberIds);
|
||||||
|
|
||||||
List<GuildMemberDiamondStatisticsVo> agencySettle(@Param("partitionId") Integer partitionId,
|
List<GuildMemberDiamondStatisticsVo> listGuildMemberDiamondStat(@Param("partitionId") Integer partitionId,
|
||||||
@Param("cycleDate") String cycleDate, @Param("guildId") Integer guildId);
|
@Param("cycleDate") String cycleDate,
|
||||||
|
@Param("guildId") Integer guildId);
|
||||||
|
|
||||||
List<GuildMemberDiamondStatisticsVo> agencySettleDetail(@Param("partitionId") Integer partitionId,
|
|
||||||
@Param("cycleDate") String cycleDate,
|
|
||||||
@Param("guildId") Integer guildId,
|
|
||||||
@Param("uid") Long uid);
|
|
||||||
List<AgencyMonthSettleDetailVo> getAgencyOwnerSettleDate(@Param("partitionId") Integer partitionId, @Param("regionId") Integer regionId,
|
List<AgencyMonthSettleDetailVo> getAgencyOwnerSettleDate(@Param("partitionId") Integer partitionId, @Param("regionId") Integer regionId,
|
||||||
@Param("cycleDate") String cycleDate, @Param("guildId") Integer guildId);
|
@Param("cycleDate") String cycleDate, @Param("guildId") Integer guildId);
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
package com.accompany.business.mybatismapper.guild;
|
package com.accompany.business.mybatismapper.guild;
|
||||||
|
|
||||||
import com.accompany.business.model.guild.AgencyMonthSettleDetail;
|
import com.accompany.business.model.guild.GuildSettleRecord;
|
||||||
import com.accompany.business.vo.guild.AgencyMonthSettleDetailVo;
|
import com.accompany.business.vo.guild.AgencyMonthSettleDetailVo;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
@@ -15,10 +15,10 @@ import java.util.List;
|
|||||||
* @author
|
* @author
|
||||||
* @since 2024-07-01
|
* @since 2024-07-01
|
||||||
*/
|
*/
|
||||||
public interface AgencyMonthSettleDetailMapper extends BaseMapper<AgencyMonthSettleDetail> {
|
public interface GuildSettleRecordMapper extends BaseMapper<GuildSettleRecord> {
|
||||||
|
|
||||||
AgencyMonthSettleDetail totalSalaryData(@Param("beginDate") Date beginDate, @Param("guildId") Long guildId);
|
GuildSettleRecord totalSalaryData(@Param("beginDate") Date beginDate, @Param("guildId") Long guildId);
|
||||||
List<AgencyMonthSettleDetail> userSalaryData(@Param("beginDate") Date beginDate, @Param("guildId") Long diamondNum);
|
List<GuildSettleRecord> userSalaryData(@Param("beginDate") Date beginDate, @Param("guildId") Long diamondNum);
|
||||||
|
|
||||||
Page<AgencyMonthSettleDetailVo> agencySettleVo(@Param("page") Page<AgencyMonthSettleDetailVo> page, @Param("dateCycle") String dateCycle,
|
Page<AgencyMonthSettleDetailVo> agencySettleVo(@Param("page") Page<AgencyMonthSettleDetailVo> page, @Param("dateCycle") String dateCycle,
|
||||||
@Param("partitionId") Integer partitionId, @Param("regionId") Integer regionId, @Param("guildId") Integer guildId);
|
@Param("partitionId") Integer partitionId, @Param("regionId") Integer regionId, @Param("guildId") Integer guildId);
|
@@ -1,26 +0,0 @@
|
|||||||
package com.accompany.business.service.guild;
|
|
||||||
|
|
||||||
import com.accompany.business.model.guild.AgencyMonthSettleDetail;
|
|
||||||
import com.accompany.business.param.BasePageParams;
|
|
||||||
import com.accompany.business.vo.guild.AgencyMonthSettleDetailVo;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 公会月政策结算明细表 服务类
|
|
||||||
*
|
|
||||||
* @author
|
|
||||||
* @since 2024-07-01
|
|
||||||
*/
|
|
||||||
public interface AgencyMonthSettleDetailService extends IService<AgencyMonthSettleDetail> {
|
|
||||||
|
|
||||||
AgencyMonthSettleDetail totalSalaryData(Date beginDate, Long hallId);
|
|
||||||
List<AgencyMonthSettleDetail> userSalaryData(Date beginDate, Long hallId);
|
|
||||||
|
|
||||||
List<AgencyMonthSettleDetail> listPage(Long hallId, Integer page, Integer pageSize);
|
|
||||||
|
|
||||||
Page<AgencyMonthSettleDetailVo> agencySettleVo(BasePageParams basePageParams, String dateCycle, Integer hallId);
|
|
||||||
}
|
|
@@ -1,24 +0,0 @@
|
|||||||
package com.accompany.business.service.guild;
|
|
||||||
|
|
||||||
import com.accompany.business.model.guild.AgencyUserMonthSettleDetail;
|
|
||||||
import com.accompany.business.vo.guild.AgencyOpenAdminVo;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 公会主播月政策结算明细表 服务类
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author wxf
|
|
||||||
* @since 2024-07-30
|
|
||||||
*/
|
|
||||||
public interface AgencyUserMonthSettleDetailService extends IService<AgencyUserMonthSettleDetail> {
|
|
||||||
List<AgencyUserMonthSettleDetail> agencySettleDetailVo(String date, Long uid, Integer hallId);
|
|
||||||
|
|
||||||
Page<AgencyOpenAdminVo> excellentAnchorList(Page<AgencyOpenAdminVo> page, Long hallId, String dateCycle, Long excellentAnchorDiamondNum);
|
|
||||||
|
|
||||||
Page<AgencyOpenAdminVo> excellentAnchorDetailList(Page<AgencyOpenAdminVo> page, Long hallId, String dateCycle, Long excellentAnchorDiamondNum);
|
|
||||||
}
|
|
@@ -1,37 +0,0 @@
|
|||||||
package com.accompany.business.service.guild;
|
|
||||||
|
|
||||||
import com.accompany.business.model.guild.AgencyUserMonthSettleDetail;
|
|
||||||
import com.accompany.business.mybatismapper.guild.AgencyUserMonthSettleDetailMapper;
|
|
||||||
import com.accompany.business.vo.guild.AgencyOpenAdminVo;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* 公会主播月政策结算明细表 服务实现类
|
|
||||||
* </p>
|
|
||||||
*
|
|
||||||
* @author wxf
|
|
||||||
* @since 2024-07-30
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
public class AgencyUserMonthSettleDetailServiceImpl extends ServiceImpl<AgencyUserMonthSettleDetailMapper, AgencyUserMonthSettleDetail> implements AgencyUserMonthSettleDetailService {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<AgencyUserMonthSettleDetail> agencySettleDetailVo(String date, Long uid, Integer hallId) {
|
|
||||||
return this.baseMapper.agencySettleDetailVo(date,uid,hallId);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<AgencyOpenAdminVo> excellentAnchorList(Page<AgencyOpenAdminVo> page, Long hallId, String dateCycle, Long excellentAnchorDiamondNum) {
|
|
||||||
return this.baseMapper.excellentAnchorList(page,hallId,dateCycle,excellentAnchorDiamondNum);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<AgencyOpenAdminVo> excellentAnchorDetailList(Page<AgencyOpenAdminVo> page, Long hallId, String dateCycle, Long excellentAnchorDiamondNum) {
|
|
||||||
return this.baseMapper.excellentAnchorDetailList(page,hallId,dateCycle,excellentAnchorDiamondNum);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -0,0 +1,74 @@
|
|||||||
|
package com.accompany.business.service.guild;
|
||||||
|
|
||||||
|
import com.accompany.business.model.guild.GuildDiamondSalary;
|
||||||
|
import com.accompany.business.mybatismapper.guild.GuildDiamondSalaryMapper;
|
||||||
|
import com.accompany.business.util.CycleTimeUtil;
|
||||||
|
import com.accompany.business.vo.guild.GuildCycleDiamondWageLevelVo;
|
||||||
|
import com.accompany.core.enumeration.PartitionEnum;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public class GuildDiamondSalaryService extends ServiceImpl<GuildDiamondSalaryMapper, GuildDiamondSalary> {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private GuildMemberDiamondStatisticsService guildMemberDiamondStatisticsService;
|
||||||
|
|
||||||
|
public GuildCycleDiamondWageLevelVo getCycleDiamondSalaryLevel(Integer guildId, Integer partitionId){
|
||||||
|
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
|
||||||
|
|
||||||
|
String cycleDate = CycleTimeUtil.getCurCycleDateByZoneId(partitionEnum.getZoneId());
|
||||||
|
BigDecimal cycleDiamond = guildMemberDiamondStatisticsService.getTotalDiamondInCycle(cycleDate, guildId);
|
||||||
|
TreeMap<BigDecimal, GuildDiamondSalary> diamondSalaryMap = getDiamondSalaryMap(partitionId);
|
||||||
|
Map.Entry<BigDecimal, GuildDiamondSalary> curDiamondLevel = diamondSalaryMap.headMap(cycleDiamond, true).lastEntry();
|
||||||
|
Map.Entry<BigDecimal, GuildDiamondSalary> nextDiamondLevel = diamondSalaryMap.tailMap(cycleDiamond, false).firstEntry();
|
||||||
|
|
||||||
|
GuildCycleDiamondWageLevelVo diamondSalaryVo = new GuildCycleDiamondWageLevelVo();
|
||||||
|
diamondSalaryVo.setCurDiamond(cycleDiamond);
|
||||||
|
diamondSalaryVo.setNextLevelGap(BigDecimal.ZERO);
|
||||||
|
diamondSalaryVo.setCurLevel(curDiamondLevel.getValue().getLevel());
|
||||||
|
diamondSalaryVo.setCurLevelWage(curDiamondLevel.getKey());
|
||||||
|
|
||||||
|
if (null != nextDiamondLevel) {
|
||||||
|
diamondSalaryVo.setNextLevel(nextDiamondLevel.getValue().getLevel());
|
||||||
|
BigDecimal nextLevelWage = nextDiamondLevel.getKey();
|
||||||
|
diamondSalaryVo.setNextLevelWage(nextLevelWage);
|
||||||
|
diamondSalaryVo.setNextLevelGap(nextLevelWage.subtract(cycleDiamond));
|
||||||
|
}
|
||||||
|
|
||||||
|
return diamondSalaryVo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GuildDiamondSalary calDiamondSalary(BigDecimal diamond, Integer partitionId){
|
||||||
|
TreeMap<BigDecimal, GuildDiamondSalary> diamondSalaryMap = getDiamondSalaryMap(partitionId);
|
||||||
|
Map.Entry<BigDecimal, GuildDiamondSalary> curDiamondLevel = diamondSalaryMap.headMap(diamond, true).lastEntry();
|
||||||
|
return curDiamondLevel.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeMap<BigDecimal, GuildDiamondSalary> getDiamondSalaryMap(Integer partitionId) {
|
||||||
|
List<GuildDiamondSalary> salaryList = lambdaQuery()
|
||||||
|
.eq(GuildDiamondSalary::getPartitionId, partitionId).list();
|
||||||
|
return getMap(salaryList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TreeMap<BigDecimal, GuildDiamondSalary> getMap(List<GuildDiamondSalary> salaryList) {
|
||||||
|
TreeMap<BigDecimal, GuildDiamondSalary> map = new TreeMap<>();
|
||||||
|
|
||||||
|
if (CollectionUtils.isEmpty(salaryList)){
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (GuildDiamondSalary salary : salaryList) {
|
||||||
|
map.put(salary.getDiamondNum(), salary);
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -1,6 +1,5 @@
|
|||||||
package com.accompany.business.service.guild;
|
package com.accompany.business.service.guild;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import com.accompany.business.constant.activity.ActivityType;
|
import com.accompany.business.constant.activity.ActivityType;
|
||||||
import com.accompany.business.model.guild.GuildDiamondWage;
|
import com.accompany.business.model.guild.GuildDiamondWage;
|
||||||
import com.accompany.business.model.guild.GuildMember;
|
import com.accompany.business.model.guild.GuildMember;
|
||||||
@@ -29,16 +28,16 @@ import java.util.stream.Collectors;
|
|||||||
@Service
|
@Service
|
||||||
public class GuildMemberDiamondStatisticsService extends ServiceImpl<GuildMemberDiamondStatisticsMapper, GuildMemberDiamondStatistics> {
|
public class GuildMemberDiamondStatisticsService extends ServiceImpl<GuildMemberDiamondStatisticsMapper, GuildMemberDiamondStatistics> {
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private GuildDiamondWageService guildDiamondWageService;
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ActivityH5LevelExpService activityH5LevelExpService;
|
private ActivityH5LevelExpService activityH5LevelExpService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private PartitionInfoService partitionInfoService;
|
|
||||||
@Autowired
|
|
||||||
private GuildMemberService guildMemberService;
|
private GuildMemberService guildMemberService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private UsersService usersService;
|
private UsersService usersService;
|
||||||
|
@Autowired
|
||||||
|
private PartitionInfoService partitionInfoService;
|
||||||
|
@Autowired
|
||||||
|
private GuildDiamondWageService guildDiamondWageService;
|
||||||
|
|
||||||
public void update(String cycleDate, GuildMember guildMember, double diamond){
|
public void update(String cycleDate, GuildMember guildMember, double diamond){
|
||||||
Date now = new Date();
|
Date now = new Date();
|
||||||
@@ -81,48 +80,6 @@ public class GuildMemberDiamondStatisticsService extends ServiceImpl<GuildMember
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UserHallEnergyLevelDataVo> agencySettle(Integer partitionId, String cycleDate, Integer guildId) {
|
|
||||||
List<UserHallEnergyLevelDataVo> resultList = new ArrayList<>();
|
|
||||||
List<GuildMemberDiamondStatisticsVo> guildMemberDiamondStatistics = baseMapper.agencySettle(partitionId, cycleDate, guildId);
|
|
||||||
if (CollectionUtils.isEmpty(guildMemberDiamondStatistics)) {
|
|
||||||
return resultList;
|
|
||||||
}
|
|
||||||
for (GuildMemberDiamondStatisticsVo levelDay : guildMemberDiamondStatistics) {
|
|
||||||
UserHallEnergyLevelDataVo vo = new UserHallEnergyLevelDataVo();
|
|
||||||
Long uid = levelDay.getUid();
|
|
||||||
vo.setUid(uid);
|
|
||||||
vo.setHallId(levelDay.getGuildId());
|
|
||||||
vo.setEnergyValue(levelDay.getDiamondNum());
|
|
||||||
BigDecimal diamond = BigDecimal.valueOf(levelDay.getDiamondNum());
|
|
||||||
GuildDiamondWage guildDiamondWage = guildDiamondWageService.calDiamondWage(diamond, partitionId);
|
|
||||||
vo.setEnergyLevel(guildDiamondWage.getLevel());
|
|
||||||
//vo.setHallSalary(diamond.multiply(guildDiamondWage.getWageRatio()).divide(guildDiamondWage.getWageDivisor(), 2, RoundingMode.HALF_UP));
|
|
||||||
vo.setHallSalary(diamond.multiply(guildDiamondWage.getWageRatio()));
|
|
||||||
vo.setCurrentLevelName(guildDiamondWage.getLevel());
|
|
||||||
vo.setSalaryRate(guildDiamondWage.getWageRatio().doubleValue());
|
|
||||||
vo.setHallMemberCount(levelDay.getHallMemberCount());
|
|
||||||
resultList.add(vo);
|
|
||||||
}
|
|
||||||
return resultList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<UserHallEnergyLevelDataVo> agencySettleDetail(Integer partitionId, String beginDate, Integer guildId, Long uid) {
|
|
||||||
List<UserHallEnergyLevelDataVo> resultList = new ArrayList<>();
|
|
||||||
List<GuildMemberDiamondStatisticsVo> statisticsVos = baseMapper.agencySettleDetail(partitionId, beginDate, guildId, uid);
|
|
||||||
if (CollectionUtils.isEmpty(statisticsVos)) {
|
|
||||||
return resultList;
|
|
||||||
}
|
|
||||||
for (GuildMemberDiamondStatisticsVo levelDay : statisticsVos) {
|
|
||||||
UserHallEnergyLevelDataVo vo = new UserHallEnergyLevelDataVo();
|
|
||||||
Long hallUid = levelDay.getUid();
|
|
||||||
vo.setUid(hallUid);
|
|
||||||
vo.setHallId(levelDay.getGuildId());
|
|
||||||
vo.setEnergyValue(levelDay.getDiamondNum());
|
|
||||||
resultList.add(vo);
|
|
||||||
}
|
|
||||||
return resultList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<AgencyMonthSettleDetailVo> agencySettleVo(Integer partitionId, Integer regionId, String beginDate, Integer guildId) {
|
public List<AgencyMonthSettleDetailVo> agencySettleVo(Integer partitionId, Integer regionId, String beginDate, Integer guildId) {
|
||||||
List<AgencyMonthSettleDetailVo> levelMonths = baseMapper.getAgencyOwnerSettleDate(partitionId, regionId, beginDate, guildId);
|
List<AgencyMonthSettleDetailVo> levelMonths = baseMapper.getAgencyOwnerSettleDate(partitionId, regionId, beginDate, guildId);
|
||||||
if (CollectionUtils.isEmpty(levelMonths)) {
|
if (CollectionUtils.isEmpty(levelMonths)) {
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
package com.accompany.business.service.guild;
|
package com.accompany.business.service.guild;
|
||||||
|
|
||||||
import com.accompany.business.model.guild.AgencyMonthSettleDetail;
|
import com.accompany.business.model.guild.GuildSettleRecord;
|
||||||
import com.accompany.business.mybatismapper.guild.AgencyMonthSettleDetailMapper;
|
import com.accompany.business.mybatismapper.guild.GuildSettleRecordMapper;
|
||||||
import com.accompany.business.param.BasePageParams;
|
import com.accompany.business.param.BasePageParams;
|
||||||
import com.accompany.business.vo.guild.AgencyMonthSettleDetailVo;
|
import com.accompany.business.vo.guild.AgencyMonthSettleDetailVo;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@@ -21,30 +21,24 @@ import java.util.List;
|
|||||||
* @since 2024-07-01
|
* @since 2024-07-01
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class AgencyMonthSettleDetailServiceImpl extends ServiceImpl<AgencyMonthSettleDetailMapper, AgencyMonthSettleDetail> implements AgencyMonthSettleDetailService {
|
public class GuildSettleRecordService extends ServiceImpl<GuildSettleRecordMapper, GuildSettleRecord> {
|
||||||
|
|
||||||
|
public GuildSettleRecord totalSalaryData(Date beginDate, Long hallId) {
|
||||||
|
|
||||||
@Override
|
|
||||||
public AgencyMonthSettleDetail totalSalaryData(Date beginDate, Long hallId) {
|
|
||||||
return baseMapper.totalSalaryData(beginDate, hallId);
|
return baseMapper.totalSalaryData(beginDate, hallId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public List<GuildSettleRecord> userSalaryData(Date beginDate, Long hallId) {
|
||||||
public List<AgencyMonthSettleDetail> userSalaryData(Date beginDate, Long hallId) {
|
|
||||||
return baseMapper.userSalaryData(beginDate, hallId);
|
return baseMapper.userSalaryData(beginDate, hallId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public List<GuildSettleRecord> listPage(Long hallId, Integer page, Integer pageSize) {
|
||||||
public List<AgencyMonthSettleDetail> listPage(Long hallId, Integer page, Integer pageSize) {
|
LambdaQueryWrapper<GuildSettleRecord> wrapper = Wrappers.lambdaQuery();
|
||||||
LambdaQueryWrapper<AgencyMonthSettleDetail> wrapper = Wrappers.lambdaQuery();
|
wrapper.eq(GuildSettleRecord::getGuildId, hallId);
|
||||||
wrapper.eq(AgencyMonthSettleDetail::getGuildId, hallId);
|
wrapper.orderByDesc(GuildSettleRecord::getStatDate);
|
||||||
wrapper.orderByDesc(AgencyMonthSettleDetail::getStatDate);
|
IPage<GuildSettleRecord> agencyMonthSettleDetailIPage = baseMapper.selectPage(new Page<>(page, pageSize, false), wrapper);
|
||||||
IPage<AgencyMonthSettleDetail> agencyMonthSettleDetailIPage = baseMapper.selectPage(new Page<>(page, pageSize, false), wrapper);
|
|
||||||
return agencyMonthSettleDetailIPage.getRecords();
|
return agencyMonthSettleDetailIPage.getRecords();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Page<AgencyMonthSettleDetailVo> agencySettleVo(BasePageParams basePageParams, String dateCycle, Integer guildId) {
|
public Page<AgencyMonthSettleDetailVo> agencySettleVo(BasePageParams basePageParams, String dateCycle, Integer guildId) {
|
||||||
|
|
||||||
Page<AgencyMonthSettleDetailVo> page = new Page<>(basePageParams.getPageNo(),basePageParams.getPageSize());
|
Page<AgencyMonthSettleDetailVo> page = new Page<>(basePageParams.getPageNo(),basePageParams.getPageSize());
|
@@ -1,17 +1,16 @@
|
|||||||
package com.accompany.business.service.guild;
|
package com.accompany.business.service.guild;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import com.accompany.business.model.guild.GuildDiamondSalary;
|
||||||
import com.accompany.business.model.guild.AgencyMonthSettleDetail;
|
import com.accompany.business.model.guild.GuildSettleRecord;
|
||||||
import com.accompany.business.model.guild.AgencyUserMonthSettleDetail;
|
|
||||||
import com.accompany.business.model.guild.Guild;
|
import com.accompany.business.model.guild.Guild;
|
||||||
import com.accompany.business.model.guild.GuildMember;
|
import com.accompany.business.model.guild.GuildMember;
|
||||||
|
import com.accompany.business.mybatismapper.guild.GuildMemberDiamondStatisticsMapper;
|
||||||
import com.accompany.business.param.BasePageParams;
|
import com.accompany.business.param.BasePageParams;
|
||||||
import com.accompany.business.service.SendSysMsgService;
|
import com.accompany.business.service.SendSysMsgService;
|
||||||
import com.accompany.business.service.user.UsersService;
|
import com.accompany.business.service.user.UsersService;
|
||||||
import com.accompany.business.util.CycleTimeUtil;
|
import com.accompany.business.util.CycleTimeUtil;
|
||||||
import com.accompany.business.vo.guild.AgencyMonthSettleDetailVo;
|
import com.accompany.business.vo.guild.AgencyMonthSettleDetailVo;
|
||||||
import com.accompany.business.vo.guild.GuildDateCycleVo;
|
import com.accompany.business.vo.guild.GuildMemberDiamondStatisticsVo;
|
||||||
import com.accompany.business.vo.guild.UserHallEnergyLevelDataVo;
|
|
||||||
import com.accompany.common.config.SystemConfig;
|
import com.accompany.common.config.SystemConfig;
|
||||||
import com.accompany.common.config.WebSecurityConfig;
|
import com.accompany.common.config.WebSecurityConfig;
|
||||||
import com.accompany.common.constant.AppEnum;
|
import com.accompany.common.constant.AppEnum;
|
||||||
@@ -27,6 +26,7 @@ import com.accompany.core.model.Users;
|
|||||||
import com.accompany.core.service.message.MessageRobotPushService;
|
import com.accompany.core.service.message.MessageRobotPushService;
|
||||||
import com.accompany.core.service.partition.PartitionInfoService;
|
import com.accompany.core.service.partition.PartitionInfoService;
|
||||||
import com.accompany.core.util.I18NMessageSourceUtil;
|
import com.accompany.core.util.I18NMessageSourceUtil;
|
||||||
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -38,14 +38,12 @@ import javax.annotation.Resource;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ThreadPoolExecutor;
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公会月政策结算表 服务实现类
|
* 公会月政策结算表 服务实现类
|
||||||
*
|
*
|
||||||
@@ -54,15 +52,17 @@ import java.util.stream.Collectors;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
public class AgencyMonthSettleService {
|
public class GuildSettleService {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AgencyMonthSettleDetailService agencyMonthSettleDetailService;
|
private GuildSettleRecordService guildSettleRecordService;
|
||||||
@Autowired
|
|
||||||
private AgencyUserMonthSettleDetailService agencyUserMonthSettleDetailService;
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private GuildMemberDiamondStatisticsService guildMemberDiamondStatisticsService;
|
private GuildMemberDiamondStatisticsService guildMemberDiamondStatisticsService;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
private GuildMemberDiamondStatisticsMapper guildMemberDiamondStatisticsMapper;
|
||||||
|
@Autowired
|
||||||
|
private GuildDiamondSalaryService guildDiamondSalaryService;
|
||||||
|
@Autowired
|
||||||
private GuildUsdOperateService guildUsdOperateService;
|
private GuildUsdOperateService guildUsdOperateService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private GuildService guildService;
|
private GuildService guildService;
|
||||||
@@ -81,32 +81,86 @@ public class AgencyMonthSettleService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SendSysMsgService sendSysMsgService;
|
private SendSysMsgService sendSysMsgService;
|
||||||
|
|
||||||
public void monthRankTaskAll(Integer partitionId, String beginDate, String endDate) {
|
public List<GuildSettleRecord> cal(Integer partitionId, String beginDate, String endDate, Integer gId){
|
||||||
List<UserHallEnergyLevelDataVo> userHallEnergyLevelDataVos = guildMemberDiamondStatisticsService.agencySettle(partitionId, beginDate, null);
|
List<GuildMemberDiamondStatisticsVo> memberSettleList = guildMemberDiamondStatisticsMapper.listGuildMemberDiamondStat(partitionId, beginDate, gId);
|
||||||
if (CollectionUtils.isEmpty(userHallEnergyLevelDataVos)) {
|
if (CollectionUtils.isEmpty(memberSettleList)){
|
||||||
return;
|
log.error("[guild settle] partitionId {} cycleDate {} 周期内无有效公会", partitionId, beginDate);
|
||||||
|
throw new ServiceException(BusiStatus.SERVERERROR);
|
||||||
}
|
}
|
||||||
List<AgencyMonthSettleDetail> agencyMonthSettleDetails = new ArrayList<>();
|
Map<Integer, List<GuildMemberDiamondStatisticsVo>> groupByGuildIdMap = memberSettleList.stream().collect(Collectors.groupingBy(GuildMemberDiamondStatisticsVo::getGuildId));
|
||||||
for (UserHallEnergyLevelDataVo dataVo : userHallEnergyLevelDataVos) {
|
|
||||||
AgencyMonthSettleDetail agencyMonthSettleDetail = AgencyMonthSettleDetail.builder().uid(dataVo.getUid()).guildId(dataVo.getHallId()).partitionId(partitionId)
|
|
||||||
.diamondLevel(dataVo.getEnergyLevel()).diamondNum(BigDecimal.valueOf(dataVo.getEnergyValue())).hallMemberCount(dataVo.getHallMemberCount())
|
|
||||||
.hallSalary(dataVo.getHallSalary()).salaryRate(dataVo.getSalaryRate()).createTime(new Date()).statDate(beginDate).endDate(endDate).build();
|
|
||||||
agencyMonthSettleDetails.add(agencyMonthSettleDetail);
|
|
||||||
}
|
|
||||||
agencyMonthSettleDetailService.saveBatch(agencyMonthSettleDetails);
|
|
||||||
|
|
||||||
sendMessage(agencyMonthSettleDetails);
|
List<Integer> guildIdList = groupByGuildIdMap.keySet().stream().toList();
|
||||||
|
Map<Integer, Guild> guildMap = guildService.mapGuildByIds(guildIdList);
|
||||||
|
|
||||||
for (UserHallEnergyLevelDataVo dataVo : userHallEnergyLevelDataVos) {
|
Double activeMemberStandard = 150000d;
|
||||||
if (dataVo.getHallSalary().doubleValue() == 0) {
|
Date now = new Date();
|
||||||
|
return groupByGuildIdMap.entrySet().stream().map(entry -> {
|
||||||
|
Integer guildId = entry.getKey();
|
||||||
|
List<GuildMemberDiamondStatisticsVo> memberDiamondList = entry.getValue();
|
||||||
|
|
||||||
|
GuildSettleRecord record = new GuildSettleRecord();
|
||||||
|
record.setGuildId(guildId);
|
||||||
|
record.setPartitionId(partitionId);
|
||||||
|
record.setStatDate(beginDate);
|
||||||
|
record.setEndDate(endDate);
|
||||||
|
|
||||||
|
Guild g = guildMap.get(guildId);
|
||||||
|
if (null != g){
|
||||||
|
record.setGuildOwnerUid(g.getOwnerUid());
|
||||||
|
}
|
||||||
|
|
||||||
|
record.setMemberCount(memberDiamondList.size());
|
||||||
|
|
||||||
|
int activeMemberCount = (int) memberDiamondList.stream().filter(ds->activeMemberStandard.compareTo(ds.getDiamondNum()) <= 0).count();
|
||||||
|
record.setActiveMemberCount(activeMemberCount);
|
||||||
|
|
||||||
|
BigDecimal totalDiamondNum = memberDiamondList.stream().map(GuildMemberDiamondStatisticsVo::getDiamondNum).map(BigDecimal::valueOf).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
|
||||||
|
record.setDiamondNum(totalDiamondNum);
|
||||||
|
|
||||||
|
GuildDiamondSalary guildDiamondSalary = guildDiamondSalaryService.calDiamondSalary(totalDiamondNum, partitionId);
|
||||||
|
if (null == guildDiamondSalary){
|
||||||
|
throw new ServiceException(BusiStatus.SERVERERROR);
|
||||||
|
}
|
||||||
|
|
||||||
|
record.setSalaryLevel(guildDiamondSalary.getLevel());
|
||||||
|
record.setBaseSalaryRatio(guildDiamondSalary.getBaseSalaryRatio());
|
||||||
|
|
||||||
|
BigDecimal baseSalary = totalDiamondNum.multiply(guildDiamondSalary.getBaseSalaryRatio());
|
||||||
|
record.setBaseSalary(baseSalary);
|
||||||
|
|
||||||
|
record.setActiveMemberBonusRatio(guildDiamondSalary.getActiveMemberBonusRatio());
|
||||||
|
BigDecimal activeMemberBonus = totalDiamondNum.multiply(guildDiamondSalary.getActiveMemberBonusRatio());
|
||||||
|
|
||||||
|
BigDecimal totalSalary = baseSalary.add(activeMemberBonus);
|
||||||
|
record.setTotalSalary(totalSalary);
|
||||||
|
|
||||||
|
record.setMemberRecord(JSON.toJSONString(memberDiamondList));
|
||||||
|
|
||||||
|
record.setCreateTime(now);
|
||||||
|
record.setUpdateTime(now);
|
||||||
|
|
||||||
|
return record;
|
||||||
|
}).toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void settle(Integer partitionId, String beginDate, String endDate){
|
||||||
|
List<GuildSettleRecord> guildSettleRecords = cal(partitionId, beginDate, endDate, null);
|
||||||
|
guildSettleRecordService.saveBatch(guildSettleRecords);
|
||||||
|
|
||||||
|
sendMessage(guildSettleRecords);
|
||||||
|
|
||||||
|
// 发财
|
||||||
|
for (GuildSettleRecord record : guildSettleRecords) {
|
||||||
|
log.info("[guild settle] partitionId {} guildId {} salary {}", record.getPartitionId(), record.getGuildId(), JSON.toJSONString(record));
|
||||||
|
if (BigDecimal.ZERO.compareTo(record.getTotalSalary()) <= 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
guildUsdOperateService.settlementGold(dataVo.getHallId(), dataVo.getUid(), dataVo.getHallSalary());
|
guildUsdOperateService.settlementGold(record.getGuildId(), record.getGuildOwnerUid(), record.getTotalSalary());
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<Long, BigDecimal> uidSalaryMap = agencyMonthSettleDetails.stream()
|
Map<Long, BigDecimal> uidSalaryMap = guildSettleRecords.stream()
|
||||||
.filter(d->d.getHallSalary().compareTo(BigDecimal.ZERO) > 0)
|
.filter(d->d.getTotalSalary().compareTo(BigDecimal.ZERO) > 0)
|
||||||
.collect(Collectors.toMap(AgencyMonthSettleDetail::getUid, AgencyMonthSettleDetail::getHallSalary));
|
.collect(Collectors.toMap(GuildSettleRecord::getGuildOwnerUid, GuildSettleRecord::getTotalSalary));
|
||||||
sendSecretMessage(partitionId, uidSalaryMap);
|
sendSecretMessage(partitionId, uidSalaryMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,17 +175,17 @@ public class AgencyMonthSettleService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendMessage(List<AgencyMonthSettleDetail> agencyMonthSettleDetails) {
|
public void sendMessage(List<GuildSettleRecord> guildSettleRecords) {
|
||||||
Map<Integer, List<AgencyMonthSettleDetail>> partitionMap = agencyMonthSettleDetails.stream()
|
Map<Integer, List<GuildSettleRecord>> partitionMap = guildSettleRecords.stream()
|
||||||
.collect(Collectors.groupingBy(AgencyMonthSettleDetail::getPartitionId));
|
.collect(Collectors.groupingBy(GuildSettleRecord::getPartitionId));
|
||||||
for (Integer partitionId : partitionMap.keySet()){
|
for (Integer partitionId : partitionMap.keySet()){
|
||||||
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
|
PartitionEnum partitionEnum = PartitionEnum.getByPartitionId(partitionId);
|
||||||
List<AgencyMonthSettleDetail> detail = partitionMap.get(partitionId).stream()
|
List<GuildSettleRecord> detail = partitionMap.get(partitionId).stream()
|
||||||
.filter(d->d.getHallSalary().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
|
.filter(d->d.getTotalSalary().compareTo(BigDecimal.ZERO) > 0).toList();
|
||||||
String nowStr = DateTimeUtil.getCurrentDateTime();
|
String nowStr = DateTimeUtil.getCurrentDateTime();
|
||||||
int count = detail.size();
|
int count = detail.size();
|
||||||
BigDecimal totalDiamondNum = detail.stream().map(AgencyMonthSettleDetail::getDiamondNum).reduce(BigDecimal.ZERO, BigDecimal::add);
|
BigDecimal totalDiamondNum = detail.stream().map(GuildSettleRecord::getDiamondNum).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
BigDecimal totalSalaryNum = detail.stream().map(AgencyMonthSettleDetail::getHallSalary).reduce(BigDecimal.ZERO, BigDecimal::add);
|
BigDecimal totalSalaryNum = detail.stream().map(GuildSettleRecord::getTotalSalary).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
BigDecimal rate = totalDiamondNum.compareTo(BigDecimal.ZERO) > 0?
|
BigDecimal rate = totalDiamondNum.compareTo(BigDecimal.ZERO) > 0?
|
||||||
totalSalaryNum.divide(totalDiamondNum, 2, RoundingMode.HALF_UP):
|
totalSalaryNum.divide(totalDiamondNum, 2, RoundingMode.HALF_UP):
|
||||||
BigDecimal.ZERO;
|
BigDecimal.ZERO;
|
||||||
@@ -149,24 +203,6 @@ public class AgencyMonthSettleService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void monthRankTaskDetail(Integer partitionId, String beginDate, String endDate) {
|
|
||||||
List<UserHallEnergyLevelDataVo> userHallEnergyLevelDataVos = guildMemberDiamondStatisticsService.agencySettleDetail(partitionId, beginDate, null, null);
|
|
||||||
if (CollectionUtils.isEmpty(userHallEnergyLevelDataVos)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
List<AgencyUserMonthSettleDetail> agencyUserMonthSettleDetails = new ArrayList<>();
|
|
||||||
for (UserHallEnergyLevelDataVo dataVo : userHallEnergyLevelDataVos) {
|
|
||||||
AgencyUserMonthSettleDetail agencyMonthSettleDetail = AgencyUserMonthSettleDetail.builder().uid(dataVo.getUid()).guildId(dataVo.getHallId())
|
|
||||||
.diamondNum(BigDecimal.valueOf(dataVo.getEnergyValue())).createTime(new Date()).statDate(beginDate).endDate(endDate).build();
|
|
||||||
agencyUserMonthSettleDetails.add(agencyMonthSettleDetail);
|
|
||||||
}
|
|
||||||
boolean saveBatch = agencyUserMonthSettleDetailService.saveBatch(agencyUserMonthSettleDetails);
|
|
||||||
if (!saveBatch) {
|
|
||||||
log.info("empty agencyUserMonthSettleDetails");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public Page<AgencyMonthSettleDetailVo> listPage(BasePageParams basePageParams, Integer agencyId, Long agencyOwnerId) {
|
public Page<AgencyMonthSettleDetailVo> listPage(BasePageParams basePageParams, Integer agencyId, Long agencyOwnerId) {
|
||||||
if (null == basePageParams.getPartitionId()){
|
if (null == basePageParams.getPartitionId()){
|
||||||
throw new ServiceException(BusiStatus.SERVERERROR,"请选择分区");
|
throw new ServiceException(BusiStatus.SERVERERROR,"请选择分区");
|
||||||
@@ -201,8 +237,7 @@ public class AgencyMonthSettleService {
|
|||||||
|
|
||||||
String curCycleDate = CycleTimeUtil.getCurCycleDateByZoneId(ZoneId.systemDefault().getId());
|
String curCycleDate = CycleTimeUtil.getCurCycleDateByZoneId(ZoneId.systemDefault().getId());
|
||||||
if (curCycleDate.equals(basePageParams.getDateCycle())){
|
if (curCycleDate.equals(basePageParams.getDateCycle())){
|
||||||
List<AgencyMonthSettleDetailVo> agencyMonthSettleDetailVos =
|
List<AgencyMonthSettleDetailVo> agencyMonthSettleDetailVos = guildMemberDiamondStatisticsService.agencySettleVo(basePageParams.getPartitionId(), basePageParams.getRegionId(), basePageParams.getDateCycle(), hallId);
|
||||||
guildMemberDiamondStatisticsService.agencySettleVo(basePageParams.getPartitionId(), basePageParams.getRegionId(), basePageParams.getDateCycle(), hallId);
|
|
||||||
List<AgencyMonthSettleDetailVo> records = PageUtil.page(agencyMonthSettleDetailVos, basePageParams.getPageNo(), basePageParams.getPageSize());
|
List<AgencyMonthSettleDetailVo> records = PageUtil.page(agencyMonthSettleDetailVos, basePageParams.getPageNo(), basePageParams.getPageSize());
|
||||||
page.setRecords(records);
|
page.setRecords(records);
|
||||||
page.setTotal(agencyMonthSettleDetailVos.size());
|
page.setTotal(agencyMonthSettleDetailVos.size());
|
||||||
@@ -213,7 +248,7 @@ public class AgencyMonthSettleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
PartitionInfo partitionInfo = partitionInfoService.getById(basePageParams.getPartitionId());
|
PartitionInfo partitionInfo = partitionInfoService.getById(basePageParams.getPartitionId());
|
||||||
Page<AgencyMonthSettleDetailVo> agencyMonthSettleDetailVoPage = agencyMonthSettleDetailService.agencySettleVo(basePageParams, basePageParams.getDateCycle(), hallId);
|
Page<AgencyMonthSettleDetailVo> agencyMonthSettleDetailVoPage = guildSettleRecordService.agencySettleVo(basePageParams, basePageParams.getDateCycle(), hallId);
|
||||||
for (AgencyMonthSettleDetailVo record : agencyMonthSettleDetailVoPage.getRecords()) {
|
for (AgencyMonthSettleDetailVo record : agencyMonthSettleDetailVoPage.getRecords()) {
|
||||||
record.setPartitionDesc(partitionInfo.getDesc());
|
record.setPartitionDesc(partitionInfo.getDesc());
|
||||||
record.setSalaryRate(record.getSalaryRate()*100);
|
record.setSalaryRate(record.getSalaryRate()*100);
|
@@ -1,28 +0,0 @@
|
|||||||
<?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.guild.AgencyUserMonthSettleDetailMapper">
|
|
||||||
|
|
||||||
<select id="agencySettleDetailVo"
|
|
||||||
resultType="com.accompany.business.model.guild.AgencyUserMonthSettleDetail">
|
|
||||||
select * from agency_user_month_settle_detail where stat_date = #{date}
|
|
||||||
<if test="hallId != null">
|
|
||||||
and guild_id = #{hallId}
|
|
||||||
</if>
|
|
||||||
<if test="uid != null">
|
|
||||||
and uid = #{uid}
|
|
||||||
</if>
|
|
||||||
</select>
|
|
||||||
<select id="excellentAnchorList" resultType="com.accompany.business.vo.guild.AgencyOpenAdminVo">
|
|
||||||
SELECT stat_date dateCycle,guild_id guildId,uid, SUM(IF(diamond_num > #{excellentAnchorDiamondNum},1,0)) effectAnchor ,count(DISTINCT uid) allAnchor
|
|
||||||
FROM agency_user_month_settle_detail
|
|
||||||
WHERE stat_date = #{dateCycle} AND guild_id = #{hallId}
|
|
||||||
GROUP BY guild_id
|
|
||||||
</select>
|
|
||||||
<select id="excellentAnchorDetailList"
|
|
||||||
resultType="com.accompany.business.vo.guild.AgencyOpenAdminVo">
|
|
||||||
SELECT guild_id hallId,uid uid,energy_value diamondFlow,IF(diamond_num > #{excellentAnchorDiamondNum},1,0) effect
|
|
||||||
FROM agency_user_month_settle_detail
|
|
||||||
WHERE stat_date = #{dateCycle} AND guild_id = #{hallId}
|
|
||||||
order by diamondFlow desc
|
|
||||||
</select>
|
|
||||||
</mapper>
|
|
@@ -0,0 +1,5 @@
|
|||||||
|
<?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.guild.GuildDiamondSalaryMapper">
|
||||||
|
|
||||||
|
</mapper>
|
@@ -35,45 +35,22 @@
|
|||||||
group by s.guild_member_id
|
group by s.guild_member_id
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="agencySettle" resultType="com.accompany.business.vo.guild.GuildMemberDiamondStatisticsVo">
|
<select id="listGuildMemberDiamondStat" resultType="com.accompany.business.vo.guild.GuildMemberDiamondStatisticsVo">
|
||||||
select
|
|
||||||
hm.guild_id guildId,
|
|
||||||
h.owner_uid uid,
|
|
||||||
count(hm.uid) hallMemberCount,
|
|
||||||
sum(IFNULL(ed.diamond_num, 0)) diamondNum
|
|
||||||
from guild_member hm
|
|
||||||
left join guild_member_diamond_statistics ed on ed.guild_member_id = hm.id
|
|
||||||
and hm.guild_id = ed.guild_id
|
|
||||||
and ed.cycle_date = #{cycleDate}
|
|
||||||
left join guild h on hm.guild_id = h.id
|
|
||||||
where hm.partition_id = #{partitionId}
|
|
||||||
<if test="guildId != null">
|
|
||||||
and hm.guild_id = #{guildId}
|
|
||||||
</if>
|
|
||||||
and hm.`enable` = 1
|
|
||||||
group by hm.guild_id
|
|
||||||
</select>
|
|
||||||
|
|
||||||
<select id="agencySettleDetail" resultType="com.accompany.business.vo.guild.GuildMemberDiamondStatisticsVo">
|
|
||||||
select
|
select
|
||||||
|
hm.id guildMemberId,
|
||||||
hm.guild_id guildId,
|
hm.guild_id guildId,
|
||||||
hm.uid uid,
|
hm.uid uid,
|
||||||
sum(IFNULL(ed.diamond_num, 0)) diamondNum
|
ed.cycle_date cycleDate,
|
||||||
|
IFNULL(ed.diamond_num, 0) diamondNum
|
||||||
from guild_member hm
|
from guild_member hm
|
||||||
left join guild_member_diamond_statistics ed on ed.guild_member_id = hm.id
|
left join guild_member_diamond_statistics ed
|
||||||
and hm.guild_id = ed.guild_id
|
on ed.guild_member_id = hm.id and ed.cycle_date = #{cycleDate}
|
||||||
and ed.cycle_date = #{cycleDate}
|
where 1=1
|
||||||
left join guild h on hm.guild_id = h.id
|
<if test="guildId != null">
|
||||||
left join users u on hm.uid = u.uid
|
and hm.guild_id = #{guildId}
|
||||||
where hm.partition_id = #{partitionId}
|
</if>
|
||||||
<if test="guildId != null">
|
and hm.partition_id = #{partitionId}
|
||||||
and hm.guild_id = #{guildId}
|
|
||||||
</if>
|
|
||||||
<if test="uid != null">
|
|
||||||
and hm.uid = #{uid}
|
|
||||||
</if>
|
|
||||||
and hm.`enable` = 1
|
and hm.`enable` = 1
|
||||||
group by hm.guild_id, hm.uid
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getAgencyOwnerSettleDate"
|
<select id="getAgencyOwnerSettleDate"
|
||||||
|
@@ -1,9 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?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">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.accompany.business.mybatismapper.guild.AgencyMonthSettleDetailMapper">
|
<mapper namespace="com.accompany.business.mybatismapper.guild.GuildSettleRecordMapper">
|
||||||
|
|
||||||
|
<select id="totalSalaryData" resultType="com.accompany.business.model.guild.GuildSettleRecord">
|
||||||
<select id="totalSalaryData" resultType="com.accompany.business.model.guild.AgencyMonthSettleDetail">
|
|
||||||
select ifnull(sum(anchor_salary), 0) anchorSalary,
|
select ifnull(sum(anchor_salary), 0) anchorSalary,
|
||||||
ifnull(sum(diamond_salary), 0) diamondSalary,
|
ifnull(sum(diamond_salary), 0) diamondSalary,
|
||||||
ifnull(sum(hall_salary), 0) hallSalary,
|
ifnull(sum(hall_salary), 0) hallSalary,
|
||||||
@@ -13,7 +12,7 @@
|
|||||||
and guild_id = #{guildId}
|
and guild_id = #{guildId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="userSalaryData" resultType="com.accompany.business.model.guild.AgencyMonthSettleDetail">
|
<select id="userSalaryData" resultType="com.accompany.business.model.guild.GuildSettleRecord">
|
||||||
select guild_id guildId, uid, ifnull(sum(anchor_salary), 0) anchorSalary,
|
select guild_id guildId, uid, ifnull(sum(anchor_salary), 0) anchorSalary,
|
||||||
ifnull(sum(diamond_salary), 0) diamondSalary,
|
ifnull(sum(diamond_salary), 0) diamondSalary,
|
||||||
ifnull(sum(hall_salary), 0) hallSalary,
|
ifnull(sum(hall_salary), 0) hallSalary,
|
@@ -1,13 +1,11 @@
|
|||||||
package com.accompany.business.controller.guild;
|
package com.accompany.business.controller.guild;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import com.accompany.business.service.guild.GuildSettleService;
|
||||||
import com.accompany.business.service.guild.AgencyMonthSettleService;
|
|
||||||
import com.accompany.business.service.guild.GuildMessageService;
|
import com.accompany.business.service.guild.GuildMessageService;
|
||||||
import com.accompany.business.service.room.RoomDayDiamondRewardRecordService;
|
import com.accompany.business.service.room.RoomDayDiamondRewardRecordService;
|
||||||
import com.accompany.common.annotation.Authorization;
|
import com.accompany.common.annotation.Authorization;
|
||||||
import com.accompany.common.result.BusiResult;
|
import com.accompany.common.result.BusiResult;
|
||||||
import com.accompany.core.base.UidContextHolder;
|
import com.accompany.core.base.UidContextHolder;
|
||||||
import com.accompany.core.enumeration.PartitionEnum;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -23,7 +21,7 @@ public class GuildTestController {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private GuildMessageService guildMessageService;
|
private GuildMessageService guildMessageService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AgencyMonthSettleService agencyMonthSettleService;
|
private GuildSettleService guildSettleService;
|
||||||
|
|
||||||
|
|
||||||
@ApiOperation("测试小秘书消息")
|
@ApiOperation("测试小秘书消息")
|
||||||
@@ -35,22 +33,13 @@ public class GuildTestController {
|
|||||||
return BusiResult.success();
|
return BusiResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "monthSettleTaskAll")
|
@RequestMapping(value = "settle")
|
||||||
@Authorization
|
@Authorization
|
||||||
public void monthSettleTaskAll(String beginDate, String endDate, String pwd, Integer partiionId) {
|
public void monthSettleTaskAll(Integer partitionId, String beginDate, String endDate, String pwd) {
|
||||||
if (!"fdsfast43532453".equals(pwd)) {
|
if (!"fdsfast43532453".equals(pwd)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
agencyMonthSettleService.monthRankTaskAll(partiionId, beginDate, endDate);
|
guildSettleService.settle(partitionId, beginDate, endDate);
|
||||||
}
|
|
||||||
|
|
||||||
@RequestMapping(value = "monthRankTaskDetailAll")
|
|
||||||
@Authorization
|
|
||||||
public void monthRankTaskDetail_(String beginDate, String endDate, String pwd, Integer partiionId) {
|
|
||||||
if (!"fdsfast43532453".equals(pwd)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
agencyMonthSettleService.monthRankTaskDetail(partiionId, beginDate, endDate);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@@ -19,7 +19,7 @@ public class RechargeAgentWeekStatTask extends BaseTask {
|
|||||||
|
|
||||||
@Scheduled(cron = "5 0 0 ? * MON")
|
@Scheduled(cron = "5 0 0 ? * MON")
|
||||||
public void statWeekEn() {
|
public void statWeekEn() {
|
||||||
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ENGLISH2);
|
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ENGLISH);
|
||||||
service.stat(partitionEnumList);
|
service.stat(partitionEnumList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,75 +0,0 @@
|
|||||||
package com.accompany.scheduler.task.guild;
|
|
||||||
|
|
||||||
import cn.hutool.core.date.DateTime;
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import com.accompany.business.service.guild.AgencyMonthSettleService;
|
|
||||||
import com.accompany.business.service.guild.GuildSalaryBillDateCycleService;
|
|
||||||
import com.accompany.business.util.CycleTimeUtil;
|
|
||||||
import com.accompany.common.utils.DateTimeUtil;
|
|
||||||
import com.accompany.core.enumeration.PartitionEnum;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.scheduling.annotation.Scheduled;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.time.ZonedDateTime;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
@Slf4j
|
|
||||||
public class GuildSettle4EnTask {
|
|
||||||
@Autowired
|
|
||||||
private AgencyMonthSettleService agencyMonthSettleService;
|
|
||||||
@Autowired
|
|
||||||
private GuildSalaryBillDateCycleService guildSalaryBillDateCycleService;
|
|
||||||
|
|
||||||
//zone = "Asia/Riyadh zone = "Etc/GMT-3" 两种方式都支持
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 公户月结算,用户明细
|
|
||||||
* 每月1号凌晨0点10分执行
|
|
||||||
*/
|
|
||||||
@Scheduled(cron = "0 10 0 1 * ?")
|
|
||||||
public void monthRank4EnTaskAll2() {
|
|
||||||
Date date = new Date();
|
|
||||||
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ENGLISH);
|
|
||||||
for (PartitionEnum partitionEnum : partitionEnumList) {
|
|
||||||
try {
|
|
||||||
ZonedDateTime lastDateZdt = CycleTimeUtil.getLastDateZdtByZoneId(partitionEnum.getZoneId());
|
|
||||||
ZonedDateTime lastEndDateZdt = CycleTimeUtil.getLastDateZdt(lastDateZdt);
|
|
||||||
String lastCycDate = lastDateZdt.format(DateTimeUtil.dateFormatter);
|
|
||||||
String lastCycEndDate = lastEndDateZdt.format(DateTimeUtil.dateFormatter);
|
|
||||||
log.info("=-=monthRank4EnTaskAll2=-=:beginTime:{},endTime:{}", lastCycDate, lastCycEndDate);
|
|
||||||
agencyMonthSettleService.monthRankTaskAll(partitionEnum.getId(), lastCycDate, lastCycEndDate);
|
|
||||||
log.info("=-=monthRank4EnTaskAll2=-= end");
|
|
||||||
log.info("=-=monthRankTaskDetail2=-=:beginTime:{},endTime:{}", lastCycDate, lastCycEndDate);
|
|
||||||
agencyMonthSettleService.monthRankTaskDetail(partitionEnum.getId(), lastCycDate, lastCycEndDate);
|
|
||||||
log.info("=-=monthRankTaskDetail2=-= end");
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("[monthRank4EnTaskAll2] 异常", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 主播薪资操作记录结算
|
|
||||||
*/
|
|
||||||
@Scheduled(cron = "0 10 0 * * ?")
|
|
||||||
public void settleAnchorBill() {
|
|
||||||
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ENGLISH);
|
|
||||||
for (PartitionEnum partitionEnum : partitionEnumList) {
|
|
||||||
try {
|
|
||||||
String today = DateTimeUtil.getZonedTodayStr(partitionEnum.getZoneId());
|
|
||||||
String cycleDate = CycleTimeUtil.getCurCycleDateByZoneId(partitionEnum.getZoneId());
|
|
||||||
if (today.equals(cycleDate)) {
|
|
||||||
String lastCycleDate = CycleTimeUtil.getLastDateByZoneId(partitionEnum.getZoneId());
|
|
||||||
guildSalaryBillDateCycleService.settleAnchorBill(lastCycleDate, partitionEnum.getId());
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("[monthRankTask异常] {}", e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -1,8 +1,6 @@
|
|||||||
package com.accompany.scheduler.task.guild;
|
package com.accompany.scheduler.task.guild;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateTime;
|
import com.accompany.business.service.guild.GuildSettleService;
|
||||||
import cn.hutool.core.date.DateUtil;
|
|
||||||
import com.accompany.business.service.guild.AgencyMonthSettleService;
|
|
||||||
import com.accompany.business.service.guild.GuildSalaryBillDateCycleService;
|
import com.accompany.business.service.guild.GuildSalaryBillDateCycleService;
|
||||||
import com.accompany.business.util.CycleTimeUtil;
|
import com.accompany.business.util.CycleTimeUtil;
|
||||||
import com.accompany.common.utils.DateTimeUtil;
|
import com.accompany.common.utils.DateTimeUtil;
|
||||||
@@ -13,26 +11,46 @@ import org.springframework.scheduling.annotation.Scheduled;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class GuildSettleTask {
|
public class GuildSettleTask {
|
||||||
@Autowired
|
@Autowired
|
||||||
private AgencyMonthSettleService agencyMonthSettleService;
|
private GuildSettleService guildSettleService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private GuildSalaryBillDateCycleService guildSalaryBillDateCycleService ;
|
private GuildSalaryBillDateCycleService guildSalaryBillDateCycleService ;
|
||||||
|
|
||||||
//zone = "Asia/Riyadh zone = "Etc/GMT-3" 两种方式都支持
|
//zone = "Asia/Riyadh zone = "Etc/GMT-3" 两种方式都支持
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公户月结算,用户明细
|
||||||
|
* 每月1号凌晨0点10分执行
|
||||||
|
*/
|
||||||
|
@Scheduled(cron = "0 10 0 1 * ?")
|
||||||
|
public void settleEn() {
|
||||||
|
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ENGLISH);
|
||||||
|
for (PartitionEnum partitionEnum : partitionEnumList) {
|
||||||
|
try {
|
||||||
|
ZonedDateTime lastDateZdt = CycleTimeUtil.getLastDateZdtByZoneId(partitionEnum.getZoneId());
|
||||||
|
ZonedDateTime lastEndDateZdt = CycleTimeUtil.getLastDateZdt(lastDateZdt);
|
||||||
|
String lastCycDate = lastDateZdt.format(DateTimeUtil.dateFormatter);
|
||||||
|
String lastCycEndDate = lastEndDateZdt.format(DateTimeUtil.dateFormatter);
|
||||||
|
log.info("=-=guild settle=-=:beginTime:{},endTime:{}", lastCycDate, lastCycEndDate);
|
||||||
|
guildSettleService.settle(partitionEnum.getId(), lastCycDate, lastCycEndDate);
|
||||||
|
log.info("=-=guild settle=-= end");
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("[guild settle] 异常", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公户月结算,用户明细
|
* 公户月结算,用户明细
|
||||||
* 每月1号凌晨0点10分执行
|
* 每月1号凌晨0点10分执行
|
||||||
*/
|
*/
|
||||||
@Scheduled(cron = "0 10 0 1 * ?", zone = "Etc/GMT-3")
|
@Scheduled(cron = "0 10 0 1 * ?", zone = "Etc/GMT-3")
|
||||||
public void monthRankTaskAll2() {
|
public void monthRankTaskAll2() {
|
||||||
Date date = new Date();
|
|
||||||
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ARAB, PartitionEnum.TURKEY);
|
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ARAB, PartitionEnum.TURKEY);
|
||||||
for (PartitionEnum partitionEnum : partitionEnumList) {
|
for (PartitionEnum partitionEnum : partitionEnumList) {
|
||||||
try {
|
try {
|
||||||
@@ -40,14 +58,31 @@ public class GuildSettleTask {
|
|||||||
ZonedDateTime lastEndDateZdt = CycleTimeUtil.getLastDateZdt(lastDateZdt);
|
ZonedDateTime lastEndDateZdt = CycleTimeUtil.getLastDateZdt(lastDateZdt);
|
||||||
String lastCycDate = lastDateZdt.format(DateTimeUtil.dateFormatter);
|
String lastCycDate = lastDateZdt.format(DateTimeUtil.dateFormatter);
|
||||||
String lastCycEndDate = lastEndDateZdt.format(DateTimeUtil.dateFormatter);
|
String lastCycEndDate = lastEndDateZdt.format(DateTimeUtil.dateFormatter);
|
||||||
log.info("=-=monthRankTaskAll2=-=:beginTime:{},endTime:{}", lastCycDate, lastCycEndDate);
|
log.info("=-=guild settle=-=:beginTime:{},endTime:{}", lastCycDate, lastCycEndDate);
|
||||||
agencyMonthSettleService.monthRankTaskAll(partitionEnum.getId(), lastCycDate, lastCycEndDate);
|
guildSettleService.settle(partitionEnum.getId(), lastCycDate, lastCycEndDate);
|
||||||
log.info("=-=monthRankTaskAll2=-= end");
|
log.info("=-=guild settle=-= end");
|
||||||
log.info("=-=monthRankTaskDetail2=-=:beginTime:{},endTime:{}", lastCycDate, lastCycEndDate);
|
|
||||||
agencyMonthSettleService.monthRankTaskDetail(partitionEnum.getId(), lastCycDate, lastCycEndDate);
|
|
||||||
log.info("=-=monthRankTaskDetail2=-= end");
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("[monthRankTaskAll2] 异常", e);
|
log.error("[guild settle] 异常", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主播薪资操作记录结算
|
||||||
|
*/
|
||||||
|
@Scheduled(cron = "0 10 0 * * ?")
|
||||||
|
public void settleEnAnchorBill() {
|
||||||
|
List<PartitionEnum> partitionEnumList = List.of(PartitionEnum.ENGLISH);
|
||||||
|
for (PartitionEnum partitionEnum : partitionEnumList) {
|
||||||
|
try {
|
||||||
|
String today = DateTimeUtil.getZonedTodayStr(partitionEnum.getZoneId());
|
||||||
|
String cycleDate = CycleTimeUtil.getCurCycleDateByZoneId(partitionEnum.getZoneId());
|
||||||
|
if (today.equals(cycleDate)) {
|
||||||
|
String lastCycleDate = CycleTimeUtil.getLastDateByZoneId(partitionEnum.getZoneId());
|
||||||
|
guildSalaryBillDateCycleService.settleAnchorBill(lastCycleDate, partitionEnum.getId());
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("[monthRankTask异常] {}", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user