CIS房间钻石

This commit is contained in:
2025-09-20 18:26:08 +08:00
parent 14ef00e5d9
commit 58aeb8485d
8 changed files with 140 additions and 8 deletions

View File

@@ -5,6 +5,7 @@ import com.accompany.business.service.guildsoviet.RoomExtraDiamondDayService;
import com.accompany.business.service.user.UsersService;
import com.accompany.business.vo.guildsoviet.GuildMemberSovietAdminVo;
import com.accompany.business.vo.guildsoviet.GuildSovietAdminVo;
import com.accompany.business.vo.guildsoviet.RoomSovietAdminVo;
import com.accompany.common.result.PageResult;
import com.accompany.core.exception.AdminServiceException;
import com.accompany.core.model.Users;
@@ -38,7 +39,8 @@ public class GuildSovietAdminService {
}
public PageResult<GuildMemberSovietAdminVo> listGuildMemberSovietAdminVo(Integer partitionId, Byte ebable, Long erbanNo, Integer regionId, String startDate, String endDate,
public PageResult<GuildMemberSovietAdminVo> listGuildMemberSovietAdminVo(Integer partitionId, Byte ebable, Long erbanNo, Integer regionId,
String startDate, String endDate,
Integer pageNo, Integer pageSize) {
Long uid = null;
if (erbanNo != null) {
@@ -52,4 +54,18 @@ public class GuildSovietAdminService {
guildExtraDiamondDayService.pageGuildMemberSovietAdminVo(new Page<>(pageNo, pageSize), partitionId, uid, regionId, ebable, startDate, endDate);
return new PageResult<>(guildSovietAdminVoPage);
}
public PageResult<RoomSovietAdminVo> listRoomSovietAdminVo(Integer partitionId, Long erbanNo,Integer regionId, String cycleDate,
Integer pageNo, Integer pageSize) {
Long uid = null;
if (erbanNo != null) {
Users user = usersService.getUserByErbanNo(erbanNo);
if (user == null) {}
uid = user.getUid();
}
Page<RoomSovietAdminVo> guildSovietAdminVoPage =
roomExtraDiamondDayService.pageRoomSovietAdminVo(new Page<>(pageNo, pageSize), partitionId, uid, regionId, cycleDate);
return new PageResult<>(guildSovietAdminVoPage);
}
}

View File

@@ -1,9 +1,13 @@
package com.accompany.admin.controller.guildsoviet;
import cn.hutool.core.date.DateUtil;
import com.accompany.admin.service.guildsoviet.GuildSovietAdminService;
import com.accompany.business.vo.guild.CycleDateVo;
import com.accompany.business.vo.guildsoviet.GuildMemberSovietAdminVo;
import com.accompany.business.vo.guildsoviet.GuildSovietAdminVo;
import com.accompany.business.vo.guildsoviet.RoomSovietAdminVo;
import com.accompany.common.result.PageResult;
import com.accompany.common.utils.DateTimeUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
import io.swagger.annotations.Api;
@@ -17,10 +21,13 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Api(tags = "CIS公会/主播" , value = "CIS公会/主播")
@RestController
@RequestMapping(value = "/admin/guildSoviet")
@RequestMapping(value = "/admin/soviet")
public class GuildSovietAdminController {
@Autowired
@@ -53,8 +60,8 @@ public class GuildSovietAdminController {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码
String excelName = URLEncoder.encode("CIS公会钻石", StandardCharsets.UTF_8);
response.setHeader("Content-disposition", "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue());
String excelName = URLEncoder.encode("CIS公会钻石" , StandardCharsets.UTF_8);
response.setHeader("Content-disposition" , "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue());
EasyExcel.write(response.getOutputStream(), GuildSovietAdminVo.class).sheet("CIS公会钻石").doWrite(pageResult.getRows());
}
@@ -86,8 +93,70 @@ public class GuildSovietAdminController {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码
String excelName = URLEncoder.encode("CIS公会成员钻石", StandardCharsets.UTF_8);
response.setHeader("Content-disposition", "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue());
String excelName = URLEncoder.encode("CIS公会成员钻石" , StandardCharsets.UTF_8);
response.setHeader("Content-disposition" , "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue());
EasyExcel.write(response.getOutputStream(), GuildMemberSovietAdminVo.class).sheet("CIS公会成员钻石").doWrite(pageResult.getRows());
}
@ApiOperation(value = "CIS房主钻石-周期" , httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "erbanNo" , value = "用户ID" , required = true, dataType = "Long"),
@ApiImplicitParam(name = "regionId" , value = "用户国家" , required = true, dataType = "Integer"),
@ApiImplicitParam(name = "cycleDate" , value = "周期" , required = true, dataType = "String"),
@ApiImplicitParam(name = "pageNo" , value = "页码" , required = true, dataType = "Integer"),
@ApiImplicitParam(name = "pageSize" , value = "每页条数" , required = true, dataType = "Integer")
})
@GetMapping("/roomCycleDateList")
public List<CycleDateVo> roomCycleDateList() {
List<CycleDateVo> cycleDateVoList = new ArrayList<>();
Date now = new Date();
Date beginOfWeek = DateUtil.beginOfWeek(now);
Date endOfWeek = DateUtil.endOfWeek(now);
Date offectWeek = DateUtil.parseDateTime("2025-09-01 00:00:00");
while (offectWeek.before(beginOfWeek)) {
CycleDateVo cycleDateVo = new CycleDateVo();
cycleDateVo.setCycleDate(DateUtil.format(beginOfWeek, DateTimeUtil.dateFormatter));
cycleDateVo.setIntervalFormatter(DateUtil.format(beginOfWeek, DateTimeUtil.dateFormatter)
+ "~" + DateUtil.format(endOfWeek , DateTimeUtil.dateFormatter));
cycleDateVo.setStartDate(cycleDateVo.getCycleDate());
cycleDateVo.setEndDate(DateUtil.format(endOfWeek, DateTimeUtil.dateFormatter));
beginOfWeek = DateUtil.offsetWeek(beginOfWeek, -1);
endOfWeek = DateUtil.offsetWeek(endOfWeek, -1);
cycleDateVoList.add(cycleDateVo);
}
return cycleDateVoList;
}
@ApiOperation(value = "CIS房主钻石" , httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "erbanNo" , value = "用户ID" , required = true, dataType = "Long"),
@ApiImplicitParam(name = "regionId" , value = "用户国家" , required = true, dataType = "Integer"),
@ApiImplicitParam(name = "cycleDate" , value = "周期" , required = true, dataType = "String"),
@ApiImplicitParam(name = "pageNo" , value = "页码" , required = true, dataType = "Integer"),
@ApiImplicitParam(name = "pageSize" , value = "每页条数" , required = true, dataType = "Integer")
})
@GetMapping("/roomList")
public PageResult<RoomSovietAdminVo> listRoomSovietAdminVo(@RequestParam(defaultValue = "32") Integer partitionId, Long erbanNo, Integer regionId,
String cycleDate, Integer pageNo, Integer pageSize) {
return guildSovietAdminService.listRoomSovietAdminVo(partitionId, erbanNo, regionId, cycleDate, pageNo, pageSize);
}
@ApiOperation(value = "CIS房主钻石-导出" , httpMethod = "POST")
@PostMapping("/roomExport")
public void exportRoomSovietAdminVo(HttpServletResponse response, @RequestParam(defaultValue = "32") Integer partitionId,
Long erbanNo, Integer regionId, String cycleDate) throws IOException {
Integer pageNo = -1;
Integer pageSize = -1;
PageResult<RoomSovietAdminVo> pageResult = guildSovietAdminService.listRoomSovietAdminVo(partitionId, erbanNo, regionId, cycleDate, pageNo, pageSize);
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码
String excelName = URLEncoder.encode("CIS房主钻石" , StandardCharsets.UTF_8);
response.setHeader("Content-disposition" , "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue());
EasyExcel.write(response.getOutputStream(), RoomSovietAdminVo.class).sheet("CIS房主钻石").doWrite(pageResult.getRows());
}
}

View File

@@ -51,6 +51,10 @@ public class GuildMemberSovietAdminVo {
@ApiModelProperty("额外收益")
private BigDecimal extraDiamondNum;
@ExcelProperty("主播额外收益发放状态0-未发放1-已发放")
@ApiModelProperty("主播额外收益发放状态0-未发放1-已发放")
private Byte anchorSendStatus;
@ExcelProperty("公会长额外收益")
@ApiModelProperty("公会长额外收益")
private BigDecimal guildExtraDiamondNum;

View File

@@ -30,7 +30,7 @@ public class RoomSovietAdminVo {
@ExcelProperty("房主昵称")
@ApiModelProperty("房主昵称")
private String nicks;
private String nick;
@ExcelProperty("房间基础收益")
@ApiModelProperty("房间基础收益")
@@ -40,4 +40,8 @@ public class RoomSovietAdminVo {
@ApiModelProperty("房主额外收益")
private BigDecimal extraDiamondNum;
@ExcelProperty("额外收益发放状态0-未发放1-已发放")
@ApiModelProperty("额外收益发放状态0-未发放1-已发放")
private Byte sendStatus;
}

View File

@@ -1,7 +1,9 @@
package com.accompany.business.mybatismapper.guildsoviet;
import com.accompany.business.model.guildsoviet.RoomExtraDiamondDay;
import com.accompany.business.vo.guildsoviet.RoomSovietAdminVo;
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;
@@ -21,4 +23,7 @@ public interface RoomExtraDiamondDayMapper extends BaseMapper<RoomExtraDiamondDa
@Param("normalDiamondNum") Double normalDiamondNum, @Param("luckyDiamondNum") Double luckyDiamondNum,
@Param("roomDiamondNum") BigDecimal roomDiamondNum, @Param("roomLuckyDiamond") BigDecimal roomLuckyDiamond,
@Param("time") Date time);
Page<RoomSovietAdminVo> pageRoomSovietAdminVo(@Param("page") Page<RoomSovietAdminVo> page, @Param("partitionId") Integer partitionId, @Param("uid") Long uid,
@Param("regionId") Integer regionId, @Param("cycleDate") String cycleDate);
}

View File

@@ -2,8 +2,10 @@ package com.accompany.business.service.guildsoviet;
import com.accompany.business.model.guildsoviet.RoomExtraDiamondDay;
import com.accompany.business.mybatismapper.guildsoviet.RoomExtraDiamondDayMapper;
import com.accompany.business.vo.guildsoviet.RoomSovietAdminVo;
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;
@@ -14,7 +16,7 @@ import java.util.List;
/**
* 房间钻石流水额外收入记录 服务实现类
*
* @author
* @author
* @since 2025-09-16
*/
@Service
@@ -34,4 +36,9 @@ public class RoomExtraDiamondDayService extends ServiceImpl<RoomExtraDiamondDayM
.eq(RoomExtraDiamondDay::getSendStatus, 0);
return list(queryWrapper);
}
public Page<RoomSovietAdminVo> pageRoomSovietAdminVo(Page<RoomSovietAdminVo> page, Integer partitionId, Long uid,
Integer regionId, String cycleDate) {
return baseMapper.pageRoomSovietAdminVo(page, partitionId, uid, regionId, cycleDate);
}
}

View File

@@ -133,6 +133,7 @@
u.nick nick,
r.`name` regionName,
gm.`enable` enbale,
ge.anchor_send_status anchorSendStatus,
sum(diamond_num + lucky_diamond_num) diamondNum,
sum(anchor_extra_num + anchor_extra_lucky_num) extraDiamondNum,
sum(owner_extra_num + owner_extra_lucky_num) guildExtraDiamondNum

View File

@@ -15,4 +15,30 @@
values (room_extra_lucky_num), update_time =
values (update_time)
</update>
<select id="pageRoomSovietAdminVo" resultType="com.accompany.business.vo.guildsoviet.RoomSovietAdminVo">
select
redd.partition_id partitionId,
redd.stat_date statDate,
redd.uid uid,
u.erban_no erbanNo,
u.nick nick,
min(send_status) sendStatus,
sum(redd.diamond_num + redd.lucky_diamond_num) diamondNum,
sum(redd.room_extra_num + redd.room_extra_lucky_num) extraDiamondNum
from room_extra_diamond_day redd
left join users u on redd.room_uid = u.uid
left join region_info r on u.region_id = r.id
where redd.partition_id = #{partitionId}
<if test="uid != null">
and redd.room_uid = #{uid}
</if>
<if test="regionId != null and regionId != 0">
and u.region_id = #{regionId}
</if>
<if test="cycleDate != null and cycleDate != ''">
and redd.cycle_date = #{cycleDate}
</if>
group by redd.partition_id, redd.stat_date, redd.room_uid
</select>
</mapper>