记得上下班打卡 | git大法好,push需谨慎

Commit ad851b2a authored by zhoujianping's avatar zhoujianping

1.演出预约统计相关功能开发

parent ad027066
package com.liquidnet.service.kylin.dto.vo;
import com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeTicketStatisticalDao;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "KylinPerformanceSubscribeStatisticalVo", description = "预约统计")
@Data
public class KylinPerformanceSubscribeStatisticalVo implements Serializable, Cloneable {
@ApiModelProperty(value = "主键")
private String performancesId;
@ApiModelProperty(value = "演出名称")
private String title;
@ApiModelProperty(value = "演出开始时间")
private String timeStart;
@ApiModelProperty(value = "城市名称")
private String cityName;
@ApiModelProperty(value = "101音乐节 102小型演出(livehouse演出) 103巡演")
// @ApiModelProperty(value = "演出类型 1音乐节 2演唱会 3小型演出 4展览 6舞台剧 101音乐节 102小型演出(livehouse演出) 103巡演")
private String type;
@ApiModelProperty(value = "预约总人数")
private Integer subscribeTotal;
@ApiModelProperty(value = "详情页浏览人数")
private Integer visitorNumber;
@ApiModelProperty(value = "详情页浏览次数")
private Integer visitorNumberCount;
@ApiModelProperty(value = "票种浏览人数")
private Integer visitorNumberTicket;
@ApiModelProperty(value = "票种浏览次数")
private Integer visitorNumberTicketCount;
@ApiModelProperty(value = "票种详情")
private List<KylinPerformanceSubscribeTicketStatisticalDao> kylinPerformanceSubscribeTicketStatisticalDaoList;
}
...@@ -8,6 +8,7 @@ import com.liquidnet.service.kylin.dto.param.PerformancePartnerListParam; ...@@ -8,6 +8,7 @@ import com.liquidnet.service.kylin.dto.param.PerformancePartnerListParam;
import com.liquidnet.service.kylin.dto.param.PerformancePartnerVo; import com.liquidnet.service.kylin.dto.param.PerformancePartnerVo;
import com.liquidnet.service.kylin.dto.param.PerformanceStep1Param; import com.liquidnet.service.kylin.dto.param.PerformanceStep1Param;
import com.liquidnet.service.kylin.dto.param.PerformanceStep2Param; import com.liquidnet.service.kylin.dto.param.PerformanceStep2Param;
import com.liquidnet.service.kylin.dto.vo.KylinPerformanceSubscribeStatisticalVo;
import com.liquidnet.service.kylin.dto.vo.KylinTimePerformanceVo; import com.liquidnet.service.kylin.dto.vo.KylinTimePerformanceVo;
import com.liquidnet.service.kylin.dto.vo.PerformanceOrderStatisticalVo; import com.liquidnet.service.kylin.dto.vo.PerformanceOrderStatisticalVo;
import com.liquidnet.service.kylin.entity.KylinPerformances; import com.liquidnet.service.kylin.entity.KylinPerformances;
...@@ -173,4 +174,14 @@ public interface IKylinPerformancesPartnerService { ...@@ -173,4 +174,14 @@ public interface IKylinPerformancesPartnerService {
ResponseDto<String> fieldsAuditPerformance(String performancesId,Integer status,String rejectTxt); ResponseDto<String> fieldsAuditPerformance(String performancesId,Integer status,String rejectTxt);
List<PerformanceOrderStatisticalVo> getPerformanceOrderStatisticalList(String performancesId); List<PerformanceOrderStatisticalVo> getPerformanceOrderStatisticalList(String performancesId);
/**
* 演出预约统计
* @author zjp
* @param performancesId
* @return: com.liquidnet.service.kylin.dto.vo.KylinPerformanceSubscribeStatisticalVo
* @date 2024/3/18 13:50
*/
KylinPerformanceSubscribeStatisticalVo getSubscribeStatistical(String performancesId);
} }
package com.liquidnet.commons.lang.util;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @version V1.0
* @Title: BeanConverterUtil.java
* @Package com.tzcpa.expenses.util
* @Description: entity转DTO
* @author: yhw
* @date: 2019年4月23日 上午10:08:55
*/
@Slf4j
public class BeanConverterUtil {
private BeanConverterUtil() {
}
/**
* 单个对象转换
*/
public static <F, T> T convert(F from, Class<T> clazz) {
if (from == null) {
return null;
}
T to = null;
try {
to = clazz.newInstance();
} catch (Exception e) {
log.error("初始化{}对象失败。", clazz, e);
}
convert(from, to);
return to;
}
/**
* 批量对象转换
*/
public static <F, T> List<T> convert(List<F> fromList, Class<T> clazz) {
if (fromList == null) {
return Collections.emptyList();
}
List<T> toList = new ArrayList<>();
if (fromList.isEmpty()) {
return toList;
}
for (F from : fromList) {
toList.add(convert(from, clazz));
}
return toList;
}
/**
* 属性拷贝方法,有特殊需求时子类覆写此方法
*/
private static <F, T> void convert(F from, T to) {
BeanUtils.copyProperties(from, to);
}
}
\ No newline at end of file
package com.liquidnet.service.kylin.dao.report;
import lombok.Data;
import java.io.Serializable;
@Data
public class KylinPerformanceSubscribeStatisticalDao implements Serializable, Cloneable {
private String performancesId;
private String title;
private String timeStart;
private String cityName;
private String type;
private Integer visitorNumber;
private Integer visitorNumberCount;
private Integer visitorNumberTicket;
private Integer visitorNumberTicketCount;
}
package com.liquidnet.service.kylin.dao.report;
import lombok.Data;
import java.io.Serializable;
@Data
public class KylinPerformanceSubscribeTicketStatisticalDao implements Serializable, Cloneable {
private String ticketTimesTitle;
private String timeTitle;
private Integer subscribeTotal;
}
...@@ -2,6 +2,8 @@ package com.liquidnet.service.kylin.mapper; ...@@ -2,6 +2,8 @@ package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.dao.*; import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeStatisticalDao;
import com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeTicketStatisticalDao;
import com.liquidnet.service.kylin.dao.report.KylinPerformancesDto; import com.liquidnet.service.kylin.dao.report.KylinPerformancesDto;
import com.liquidnet.service.kylin.entity.KylinPerformances; import com.liquidnet.service.kylin.entity.KylinPerformances;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -84,4 +86,22 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> { ...@@ -84,4 +86,22 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> {
List<CommodityOrderExportDao> exportCommodityOrder(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime); List<CommodityOrderExportDao> exportCommodityOrder(@Param("beginTime") Date beginTime, @Param("endTime") Date endTime);
List<KylinPerformancesDto> getListAll(String title); List<KylinPerformancesDto> getListAll(String title);
/**
* 演出预约统计
* @author zjp
* @param performancesId
* @return: com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeStatisticalDao
* @date 2024/3/18 14:19
*/
KylinPerformanceSubscribeStatisticalDao getSubscribeStatisticalByPerformancesId(@Param("performancesId")String performancesId);
/**
* 获取演出票种预约人数
* @author zjp
* @param performancesId
* @return: java.util.List<com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeTicketStatisticalDao>
* @date 2024/3/18 16:06
*/
List<KylinPerformanceSubscribeTicketStatisticalDao> getSubscribeTicketStatisticalByPerformancesId(@Param("performancesId")String performancesId);
} }
...@@ -1139,5 +1139,88 @@ GROUP BY user_mobile,tickets_id; ...@@ -1139,5 +1139,88 @@ GROUP BY user_mobile,tickets_id;
and gso.status not in (0, 5) and gso.status not in (0, 5)
group by do.code) temtable group by temtable.code group by do.code) temtable group by temtable.code
</select> </select>
<select id="getSubscribeStatisticalByPerformancesId" resultType="com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeStatisticalDao">
SELECT A.*,
B.visitorNumberCount,
C.visitorNumber,
D.visitorNumberTicketCount,
E.visitorNumberTicket
FROM (SELECT kp.performances_id AS performancesId,
kp.title,
kp.city_name AS cityName,
kp.time_start AS timeStart,
CASE
WHEN (kp.type = '1') THEN
'音乐节'
WHEN (kp.type = '2') THEN
'演唱会'
WHEN (kp.type = '3') THEN
'小型演出'
WHEN (kp.type = '4') THEN
'展览'
WHEN (kp.type = '6') THEN
'舞台剧'
WHEN (kp.type = '101') THEN
'音乐节'
WHEN (kp.type = '102') THEN
'小型演出(livehouse演出)'
WHEN (kp.type = '103') THEN
'巡演'
END type
FROM kylin_performances AS kp
WHERE kp.performances_id = #{performancesId}) A
LEFT JOIN (SELECT count(*) AS visitorNumberCount,
btar.performance_id AS performancesId
FROM bi_ticket_access_records AS btar
WHERE btar.access_type = "now_tk_detail"
AND btar.performance_id = #{performancesId}) B ON A.performancesId = B.performancesId
LEFT JOIN (SELECT count(A.user_id) AS visitorNumber,
A.performancesId AS performancesId
FROM (SELECT user_id,
btar.performance_id AS performancesId
FROM bi_ticket_access_records AS btar
WHERE btar.access_type = "now_tk_detail"
AND btar.performance_id = #{performancesId}
GROUP BY btar.user_id) A) C ON A.performancesId = B.performancesId
LEFT JOIN (SELECT count(*) AS visitorNumberTicketCount,
btar.performance_id AS performancesId
FROM bi_ticket_access_records AS btar
WHERE btar.access_type = "now_tk_ticket"
AND btar.performance_id = #{performancesId}) D ON D.performancesId = A.performancesId
LEFT JOIN (SELECT count(A.user_id) AS visitorNumberTicket,
A.performancesId AS performancesId
FROM (SELECT user_id,
btar.performance_id AS performancesId
FROM bi_ticket_access_records AS btar
WHERE btar.access_type = "now_tk_ticket"
AND btar.performance_id = #{performancesId}
GROUP BY btar.user_id) A) E ON E.performancesId = A.performancesId
</select>
<select id="getSubscribeTicketStatisticalByPerformancesId" resultType="com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeTicketStatisticalDao">
SELECT A.ticketTimesTitle,
A.timeTitle,
IFNULL(B.subscribeTotal, 0) AS subscribeTotal
FROM (SELECT kp.title,
kp.performances_id,
ktt.title AS ticketTimesTitle,
ktt.ticket_times_id,
kt.title AS timeTitle,
kt.tickets_id
FROM kylin_performances AS kp
LEFT JOIN kylin_ticket_time_relation AS kttr ON kttr.performance_id = kp.performances_id
LEFT JOIN kylin_ticket_times AS ktt ON ktt.ticket_times_id = kttr.times_id
LEFT JOIN kylin_ticket_relations AS ktr ON ktr.times_id = ktt.ticket_times_id
LEFT JOIN kylin_tickets AS kt ON kt.tickets_id = ktr.ticket_id
WHERE kp.performances_id = #{performancesId}) A
LEFT JOIN
(SELECT COUNT(*) AS subscribeTotal,
kps.performance_id,
kps.ticket_times_id,
kps.tickets_id
FROM kylin_performance_subscribe kps
WHERE kps.performance_id = #{performancesId}
GROUP BY kps.performance_id,
kps.ticket_times_id,
kps.tickets_id) B ON A.performances_id = B.performance_id AND A.ticket_times_id = B.ticket_times_id AND A.tickets_id = B.tickets_id
</select>
</mapper> </mapper>
...@@ -7,6 +7,7 @@ import com.liquidnet.service.kylin.dto.param.PerformancePartnerListParam; ...@@ -7,6 +7,7 @@ import com.liquidnet.service.kylin.dto.param.PerformancePartnerListParam;
import com.liquidnet.service.kylin.dto.param.PerformancePartnerVo; import com.liquidnet.service.kylin.dto.param.PerformancePartnerVo;
import com.liquidnet.service.kylin.dto.param.PerformanceStep1Param; import com.liquidnet.service.kylin.dto.param.PerformanceStep1Param;
import com.liquidnet.service.kylin.dto.param.PerformanceStep2Param; import com.liquidnet.service.kylin.dto.param.PerformanceStep2Param;
import com.liquidnet.service.kylin.dto.vo.KylinPerformanceSubscribeStatisticalVo;
import com.liquidnet.service.kylin.dto.vo.PerformanceOrderStatisticalVo; import com.liquidnet.service.kylin.dto.vo.PerformanceOrderStatisticalVo;
import com.liquidnet.service.kylin.service.partner.IKylinPerformancesPartnerService; import com.liquidnet.service.kylin.service.partner.IKylinPerformancesPartnerService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -121,4 +122,12 @@ public class PerformancePartnerController { ...@@ -121,4 +122,12 @@ public class PerformancePartnerController {
List<PerformanceOrderStatisticalVo> list =performancesPartnerService.getPerformanceOrderStatisticalList(performancesId); List<PerformanceOrderStatisticalVo> list =performancesPartnerService.getPerformanceOrderStatisticalList(performancesId);
return ResponseDto.success(list); return ResponseDto.success(list);
} }
@GetMapping(value = "subscribeStatistical")
@ApiOperation(value = "演出预约统计",position = 10)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<KylinPerformanceSubscribeStatisticalVo> getSubscribeStatistical(@RequestParam("performancesId") @NotNull(message = "演出ID不能为空") String performancesId) {
return ResponseDto.success(performancesPartnerService.getSubscribeStatistical(performancesId));
}
} }
...@@ -5,20 +5,20 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; ...@@ -5,20 +5,20 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil; import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.commons.lang.util.BeanUtil; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.StringUtil;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.UserPathDto; import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.PerformanceOrderStatisticalDao; import com.liquidnet.service.kylin.dao.PerformanceOrderStatisticalDao;
import com.liquidnet.service.kylin.dao.PerformancePartnerListDao; import com.liquidnet.service.kylin.dao.PerformancePartnerListDao;
import com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeStatisticalDao;
import com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeTicketStatisticalDao;
import com.liquidnet.service.kylin.dto.param.PerformancePartnerListParam; import com.liquidnet.service.kylin.dto.param.PerformancePartnerListParam;
import com.liquidnet.service.kylin.dto.param.PerformancePartnerVo; import com.liquidnet.service.kylin.dto.param.PerformancePartnerVo;
import com.liquidnet.service.kylin.dto.param.PerformanceStep1Param; import com.liquidnet.service.kylin.dto.param.PerformanceStep1Param;
import com.liquidnet.service.kylin.dto.param.PerformanceStep2Param; import com.liquidnet.service.kylin.dto.param.PerformanceStep2Param;
import com.liquidnet.service.kylin.dto.vo.KylinPerformanceSubscribeStatisticalVo;
import com.liquidnet.service.kylin.dto.vo.KylinTimePerformanceVo; import com.liquidnet.service.kylin.dto.vo.KylinTimePerformanceVo;
import com.liquidnet.service.kylin.dto.vo.PerformanceOrderStatisticalVo; import com.liquidnet.service.kylin.dto.vo.PerformanceOrderStatisticalVo;
import com.liquidnet.service.kylin.dto.vo.partner.*; import com.liquidnet.service.kylin.dto.vo.partner.*;
...@@ -753,4 +753,24 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor ...@@ -753,4 +753,24 @@ public class KylinPerformancesPartnerServiceImpl extends ServiceImpl<KylinPerfor
voList.add(vo); voList.add(vo);
return voList; return voList;
} }
@Override
public KylinPerformanceSubscribeStatisticalVo getSubscribeStatistical(String performancesId) {
//预约总人数
Integer subscribeTotal=0;
//获取演出详情预约人数
KylinPerformanceSubscribeStatisticalDao subscribeStatisticalByPerformancesId = performancesMapper.getSubscribeStatisticalByPerformancesId(performancesId);
KylinPerformanceSubscribeStatisticalVo kylinPerformanceSubscribeStatisticalVo = BeanConverterUtil.convert(subscribeStatisticalByPerformancesId, KylinPerformanceSubscribeStatisticalVo.class);
//获取演出票种预约人数
List<KylinPerformanceSubscribeTicketStatisticalDao> subscribeTicketStatisticalDaoList = performancesMapper.getSubscribeTicketStatisticalByPerformancesId(performancesId);
if(!CollectionUtil.isEmpty(subscribeTicketStatisticalDaoList)){
for (KylinPerformanceSubscribeTicketStatisticalDao kylinPerformanceSubscribeTicketStatisticalDao : subscribeTicketStatisticalDaoList) {
subscribeTotal+=kylinPerformanceSubscribeTicketStatisticalDao.getSubscribeTotal();
}
}
kylinPerformanceSubscribeStatisticalVo.setKylinPerformanceSubscribeTicketStatisticalDaoList(subscribeTicketStatisticalDaoList);
kylinPerformanceSubscribeStatisticalVo.setSubscribeTotal(subscribeTotal);
return kylinPerformanceSubscribeStatisticalVo;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment