公会-运营统计-后台
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
|
||||
package com.accompany.admin.vo.guild;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@ApiModel
|
||||
@Data
|
||||
public class WeekGuildPartitionStatAdminVo {
|
||||
|
||||
@TableId
|
||||
@ApiModelProperty("日期")
|
||||
private String date;
|
||||
@ApiModelProperty("周日")
|
||||
private String endDate;
|
||||
|
||||
@ApiModelProperty("分区id")
|
||||
private Integer partitionId;
|
||||
@ApiModelProperty("分区描述")
|
||||
private String partitionDesc;
|
||||
|
||||
@ApiModelProperty("新增公会数")
|
||||
private Integer newGuildCount;
|
||||
@ApiModelProperty("新增活跃公会数")
|
||||
private Integer newActiveGuildCount;
|
||||
@ApiModelProperty("新增公会总金币流水")
|
||||
private BigDecimal newGuildTotalDiamondFlow;
|
||||
@ApiModelProperty("新增公会总钻石流水")
|
||||
private BigDecimal newGuildTotalGoldFlow;
|
||||
|
||||
@ApiModelProperty("公会数")
|
||||
private Integer guildCount;
|
||||
@ApiModelProperty("活跃公会数")
|
||||
private Integer activeGuildCount;
|
||||
@ApiModelProperty("公会总金币流水")
|
||||
private BigDecimal guildTotalDiamondFlow;
|
||||
@ApiModelProperty("公会总钻石流水")
|
||||
private BigDecimal guildTotalGoldFlow;
|
||||
|
||||
@ApiModelProperty("公会新增主播数")
|
||||
private Integer newGuildMemberCount;
|
||||
@ApiModelProperty("公会新增活跃主播数")
|
||||
private Integer newGuildMemberActiveCount;
|
||||
@ApiModelProperty("公会主播数")
|
||||
private Integer guildMemberCount;
|
||||
@ApiModelProperty("活跃公会主播数")
|
||||
private Integer activeGuildMemberCount;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
@ApiModelProperty("后台操作人id")
|
||||
private Integer adminId;
|
||||
@ApiModelProperty("后台操作人名称")
|
||||
private String adminName;
|
||||
|
||||
@ApiModelProperty("上周新增公会数")
|
||||
private Integer lastWeekNewGuildCount;
|
||||
@ApiModelProperty("上周新增公会数环比")
|
||||
private BigDecimal lastWeekNewGuildCountWow;
|
||||
@ApiModelProperty("上周新增活跃公会数")
|
||||
private Integer lastWeekNewActiveGuildCount;
|
||||
@ApiModelProperty("上周新增活跃公会数环比")
|
||||
private BigDecimal lastWeekNewActiveGuildCountWow;
|
||||
@ApiModelProperty("上周新增公会金币流水")
|
||||
private BigDecimal lastWeekNewGuildTotalDiamondFlow;
|
||||
@ApiModelProperty("上周新增公会金币流水环比")
|
||||
private BigDecimal lastWeekNewGuildTotalDiamondFlowWow;
|
||||
@ApiModelProperty("上周新增公会钻石流水")
|
||||
private BigDecimal lastWeekNewGuildTotalGoldFlow;
|
||||
@ApiModelProperty("上周新增公会钻石流水环比")
|
||||
private BigDecimal lastWeekNewGuildTotalGoldFlowWow;
|
||||
|
||||
@ApiModelProperty("上周公会数")
|
||||
private Integer lastWeekGuildCount;
|
||||
@ApiModelProperty("上周公会数环比")
|
||||
private BigDecimal lastWeekGuildCountWow;
|
||||
@ApiModelProperty("上周活跃公会数")
|
||||
private Integer lastWeekActiveGuildCount;
|
||||
@ApiModelProperty("上周活跃公会数环比")
|
||||
private BigDecimal lastWeekActiveGuildCountWow;
|
||||
@ApiModelProperty("上周公会总金币流水")
|
||||
private BigDecimal lastWeekGuildTotalDiamondFlow;
|
||||
@ApiModelProperty("上周公会总金币流水环比")
|
||||
private BigDecimal lastWeekGuildTotalDiamondFlowWow;
|
||||
@ApiModelProperty("上周公会总钻石流水")
|
||||
private BigDecimal lastWeekGuildTotalGoldFlow;
|
||||
@ApiModelProperty("上周公会总钻石流水环比")
|
||||
private BigDecimal lastWeekGuildTotalGoldFlowWow;
|
||||
|
||||
@ApiModelProperty("上周新增公会主播数")
|
||||
private Integer lastWeekNewGuildMemberCount;
|
||||
@ApiModelProperty("上周新增公会主播数环比")
|
||||
private BigDecimal lastWeekNewGuildMemberCountWow;
|
||||
@ApiModelProperty("上周新增公会主播活跃数")
|
||||
private Integer lastWeekNewGuildMemberActiveCount;
|
||||
@ApiModelProperty("上周新增公会主播活跃数环比")
|
||||
private BigDecimal lastWeekNewGuildMemberActiveCountWow;
|
||||
@ApiModelProperty("上周公会主播数")
|
||||
private Integer lastWeekGuildMemberCount;
|
||||
@ApiModelProperty("上周公会主播数环比")
|
||||
private BigDecimal lastWeekGuildMemberCountWow;
|
||||
@ApiModelProperty("上周公会主播活跃数")
|
||||
private Integer lastWeekActiveGuildMemberCount;
|
||||
@ApiModelProperty("上周公会主播活跃数环比")
|
||||
private BigDecimal lastWeekActiveGuildMemberCountWow;
|
||||
|
||||
}
|
@@ -0,0 +1,74 @@
|
||||
package com.accompany.admin.service.guild;
|
||||
|
||||
import com.accompany.admin.service.system.AdminUserService;
|
||||
import com.accompany.admin.vo.guild.WeekGuildPartitionStatAdminVo;
|
||||
import com.accompany.business.model.WeekGuildPartitionStat;
|
||||
import com.accompany.business.mybatismapper.WeekGuildPartitionStatMapper;
|
||||
import com.accompany.business.param.BasePageParams;
|
||||
import com.accompany.core.enumeration.PartitionEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class WeekGuildPartitionStatAdminService {
|
||||
|
||||
@Autowired
|
||||
private WeekGuildPartitionStatMapper mapper;
|
||||
@Autowired
|
||||
private AdminUserService adminUserService;
|
||||
|
||||
public Page<WeekGuildPartitionStatAdminVo> page(Integer partitionId, String date,
|
||||
BasePageParams pageParam) {
|
||||
Page<WeekGuildPartitionStatAdminVo> voPage = new Page<>(pageParam.getPageNo(), pageParam.getPageSize());
|
||||
Page<WeekGuildPartitionStat> poPage = new Page<>(pageParam.getPageNo(), pageParam.getPageSize());
|
||||
LambdaQueryWrapper<WeekGuildPartitionStat> queryWrapper = Wrappers.<WeekGuildPartitionStat>lambdaQuery()
|
||||
.eq(StringUtils.isNotBlank(date), WeekGuildPartitionStat::getDate, date)
|
||||
.eq(null != partitionId, WeekGuildPartitionStat::getPartitionId, partitionId)
|
||||
.orderByDesc(WeekGuildPartitionStat::getDate, WeekGuildPartitionStat::getGuildTotalDiamondFlow);
|
||||
mapper.selectPage(poPage, queryWrapper);
|
||||
if (CollectionUtils.isEmpty(poPage.getRecords())){
|
||||
return voPage;
|
||||
}
|
||||
|
||||
Map<Integer, String> adminNameMap = adminUserService.adminUserMap();
|
||||
|
||||
List<WeekGuildPartitionStatAdminVo> voList = poPage.getRecords().stream()
|
||||
.map(po -> {
|
||||
WeekGuildPartitionStatAdminVo vo = new WeekGuildPartitionStatAdminVo();
|
||||
vo.setDate(po.getDate());
|
||||
vo.setEndDate(po.getEndDate());
|
||||
vo.setPartitionId(po.getPartitionId());
|
||||
vo.setPartitionDesc(PartitionEnum.getByPartitionId(po.getPartitionId()).getDesc());
|
||||
|
||||
BeanUtils.copyProperties(po, vo);
|
||||
|
||||
if (null != po.getAdminId()){
|
||||
vo.setAdminName(adminNameMap.get(po.getAdminId()));
|
||||
}
|
||||
|
||||
return vo;
|
||||
|
||||
})
|
||||
.toList();
|
||||
voPage.setRecords(voList);
|
||||
voPage.setTotal(poPage.getTotal());
|
||||
return voPage;
|
||||
}
|
||||
|
||||
public void mark(Integer partitionId, String date, String remark, int adminId) {
|
||||
mapper.update(Wrappers.<WeekGuildPartitionStat>lambdaUpdate()
|
||||
.eq(WeekGuildPartitionStat::getDate, date)
|
||||
.eq(WeekGuildPartitionStat::getPartitionId, partitionId)
|
||||
.set(WeekGuildPartitionStat::getRemark, remark)
|
||||
.set(WeekGuildPartitionStat::getAdminId, adminId));
|
||||
}
|
||||
}
|
@@ -0,0 +1,90 @@
|
||||
package com.accompany.admin.controller.guild;
|
||||
|
||||
import com.accompany.admin.controller.BaseController;
|
||||
import com.accompany.admin.service.guild.WeekGuildPartitionStatAdminService;
|
||||
import com.accompany.admin.vo.guild.WeekGuildPartitionStatAdminVo;
|
||||
import com.accompany.business.param.BasePageParams;
|
||||
import com.accompany.common.result.BusiResult;
|
||||
import com.accompany.common.status.BusiStatus;
|
||||
import com.accompany.core.exception.AdminServiceException;
|
||||
import com.accompany.core.util.StringUtils;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.support.ExcelTypeEnum;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.SneakyThrows;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
@Api(tags = "公会运营")
|
||||
@RequestMapping("/admin/guildPartition")
|
||||
@RestController
|
||||
public class GuildPartitionAdminController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private WeekGuildPartitionStatAdminService statService;
|
||||
|
||||
@ApiOperation("分页查询周统计")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "partitionId", value = "分区id"),
|
||||
@ApiImplicitParam(name = "date", value = "周期开始日期"),
|
||||
@ApiImplicitParam(name = "pageNo", value = "页码", required = true),
|
||||
@ApiImplicitParam(name = "pageSize", value = "页长", required = true),
|
||||
})
|
||||
@GetMapping("/pageWeekStat")
|
||||
public BusiResult<Page<WeekGuildPartitionStatAdminVo>> page(Integer partitionId,
|
||||
String date,
|
||||
BasePageParams pageParam) {
|
||||
Page<WeekGuildPartitionStatAdminVo> page = statService.page(partitionId, date, pageParam);
|
||||
return BusiResult.success(page);
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
@ApiOperation("导出周统计")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "partitionId", value = "分区id"),
|
||||
@ApiImplicitParam(name = "date", value = "周期开始日期"),
|
||||
})
|
||||
@GetMapping("/exportWeekStat")
|
||||
public void export(HttpServletResponse response,
|
||||
Integer partitionId,
|
||||
String date){
|
||||
response.setContentType("application/vnd.ms-excel");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
// 这里URLEncoder.encode可以防止中文乱码
|
||||
String excelName = URLEncoder.encode("运营公会/主播分析", StandardCharsets.UTF_8);
|
||||
response.setHeader("Content-disposition", "attachment;filename=" + excelName + ExcelTypeEnum.XLSX.getValue());
|
||||
|
||||
BasePageParams pageParam = new BasePageParams();
|
||||
pageParam.setPageNo(1);
|
||||
pageParam.setPageSize(-1);
|
||||
Page<WeekGuildPartitionStatAdminVo> page = statService.page(partitionId, date, pageParam);
|
||||
EasyExcel.write(response.getOutputStream(), WeekGuildPartitionStatAdminVo.class).sheet("运营公会/主播分析").doWrite(page.getRecords());
|
||||
}
|
||||
|
||||
@ApiOperation("备注周统计")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "date", value = "周期开始日期", required = true),
|
||||
@ApiImplicitParam(name = "partitionId", value = "分区id", required = true),
|
||||
@ApiImplicitParam(name = "remark", value = "备注", required = true),
|
||||
})
|
||||
@PostMapping("/mark")
|
||||
public BusiResult<Void> markDetail(String date,
|
||||
Integer partitionId,
|
||||
String remark) {
|
||||
if (StringUtils.isAnyBlank(date, remark) || null == partitionId){
|
||||
throw new AdminServiceException(BusiStatus.PARAMERROR);
|
||||
}
|
||||
int adminId = getAdminId();
|
||||
statService.mark(partitionId, date, remark, adminId);
|
||||
return BusiResult.success();
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user