统计添加注释

This commit is contained in:
Jerry Yan 2025-03-19 14:28:00 +08:00
parent 8a7021d759
commit fb530a1eb4
2 changed files with 21 additions and 11 deletions

View File

@ -139,23 +139,28 @@ public class AppStatisticsServiceImpl implements AppStatisticsService {
//镜头检测游客数 //镜头检测游客数
Integer cameraShotOfMemberNum=statisticsMapper.countCameraShotOfMember(query); Integer cameraShotOfMemberNum=statisticsMapper.countCameraShotOfMember(query);
//扫码访问人数 //扫码访问人数
// 扫小程序码或景区码进入访问的用户数包括授权用户使用OpenID进行精准统计和未授权用户(使用 UUID统计访问)但当用户授权时获取OpenID并与UUID关联删除本地UUID避免重复记录
Integer scanCodeVisitorOfMemberNum=statisticsMapper.countScanCodeOfMember(query); Integer scanCodeVisitorOfMemberNum=statisticsMapper.countScanCodeOfMember(query);
//镜头检测游客数_扫码访问人数_转化率 //镜头检测游客数_扫码访问人数_转化率
// vo.setCsom_scaom(calculateConversionRate(scanCodeVisitorOfMemberNum,cameraShotOfMemberNum)); // vo.setCsom_scaom(calculateConversionRate(scanCodeVisitorOfMemberNum,cameraShotOfMemberNum));
vo.setCsom_scaom("-"); vo.setCsom_scaom("-");
//上传头像人脸人数 //上传头像人脸人数
// 上传了人脸的用户数包括本地临时ID和获取到OpenID的同一设备微信获取到OpenID要覆盖掉之前生成的临时ID上传多张人脸都只算一个人
Integer uploadFaceOfMemberNum=statisticsMapper.countUploadFaceOfMember(query); Integer uploadFaceOfMemberNum=statisticsMapper.countUploadFaceOfMember(query);
//扫码访问人数_上传头像人数_转化率 //扫码访问人数_上传头像人数_转化率
vo.setScaom_ufom(calculateConversionRate(uploadFaceOfMemberNum,scanCodeVisitorOfMemberNum)); vo.setScaom_ufom(calculateConversionRate(uploadFaceOfMemberNum,scanCodeVisitorOfMemberNum));
//推送订阅人数 //推送订阅人数
// 只要点了允许通知哪怕只勾选1条订阅都算
Integer pushOfMemberNum =statisticsMapper.countPushOfMember(query); Integer pushOfMemberNum =statisticsMapper.countPushOfMember(query);
//上传头像人数_推送订阅人数_转化率 //上传头像人数_推送订阅人数_转化率
vo.setUfom_pom((calculateConversionRate(pushOfMemberNum,uploadFaceOfMemberNum))); vo.setUfom_pom((calculateConversionRate(pushOfMemberNum,uploadFaceOfMemberNum)));
//生成视频人数 //生成视频人数
// 生成过Vlog视频的用户ID数要注意屏蔽掉以前没有片段也能生成的情况
Integer completeVideoOfMemberNum =statisticsMapper.countCompleteVideoOfMember(query); Integer completeVideoOfMemberNum =statisticsMapper.countCompleteVideoOfMember(query);
//推送订阅人数_生成视频人数_转化率 //推送订阅人数_生成视频人数_转化率
vo.setPom_cvom((calculateConversionRate(completeVideoOfMemberNum,pushOfMemberNum))); vo.setPom_cvom((calculateConversionRate(completeVideoOfMemberNum,pushOfMemberNum)));
//预览视频人数 //预览视频人数
// 购买前播放了5秒的视频条数
Integer previewVideoOfMemberNum =statisticsMapper.countPreviewVideoOfMember(query); Integer previewVideoOfMemberNum =statisticsMapper.countPreviewVideoOfMember(query);
if (previewVideoOfMemberNum==null){ if (previewVideoOfMemberNum==null){
previewVideoOfMemberNum=0; previewVideoOfMemberNum=0;
@ -163,6 +168,7 @@ public class AppStatisticsServiceImpl implements AppStatisticsService {
//生成视频人数_预览视频人数_转化率 //生成视频人数_预览视频人数_转化率
vo.setCvom_pvom((calculateConversionRate(previewVideoOfMemberNum,completeVideoOfMemberNum))); vo.setCvom_pvom((calculateConversionRate(previewVideoOfMemberNum,completeVideoOfMemberNum)));
//点击购买人数 //点击购买人数
// 点了立即购买按钮的用户ID就算包括支付的和未支付的都算只要点击了
Integer clickOnPayOfMemberNum =statisticsMapper.countClickPayOfMember(query); Integer clickOnPayOfMemberNum =statisticsMapper.countClickPayOfMember(query);
//预览视频人数_点击购买人数_转化率 //预览视频人数_点击购买人数_转化率
vo.setPvom_cpom((calculateConversionRate(clickOnPayOfMemberNum,previewVideoOfMemberNum))); vo.setPvom_cpom((calculateConversionRate(clickOnPayOfMemberNum,previewVideoOfMemberNum)));
@ -171,9 +177,11 @@ public class AppStatisticsServiceImpl implements AppStatisticsService {
//点击购买人数_支付订单人数_转化率 //点击购买人数_支付订单人数_转化率
vo.setCpom_pom((calculateConversionRate(payOfMemberNum,clickOnPayOfMemberNum))); vo.setCpom_pom((calculateConversionRate(payOfMemberNum,clickOnPayOfMemberNum)));
//总访问人数 //总访问人数
// 通过任何途径访问到小程序的总人数包括授权用户和未授权用户
Integer totalVisitorOfMemberNum =statisticsMapper.countTotalVisitorOfMember(query); Integer totalVisitorOfMemberNum =statisticsMapper.countTotalVisitorOfMember(query);
// Integer totalVisitorOfMemberNum =scanCodeVisitorOfMemberNum; // Integer totalVisitorOfMemberNum =scanCodeVisitorOfMemberNum;
//生成视频条数 //生成视频条数
// 仅指代生成的Vlog条数不包含录像原片
Integer completeOfVideoNum =statisticsMapper.countCompleteOfVideo(query); Integer completeOfVideoNum =statisticsMapper.countCompleteOfVideo(query);
//预览视频条数 //预览视频条数
Integer previewOfVideoNum =statisticsMapper.countPreviewOfVideo(query); Integer previewOfVideoNum =statisticsMapper.countPreviewOfVideo(query);
@ -341,15 +349,16 @@ public class AppStatisticsServiceImpl implements AppStatisticsService {
int payCount=statisticsMapper.countPayOfOrder(query); int payCount=statisticsMapper.countPayOfOrder(query);
if(cycle==1){ if(cycle==1){
//当前周期的支付订单金额 // 支付订单金额包含已退款的金额
vo.setNowOrderAmount(orderAmountDf.format(orderAmount)); vo.setNowOrderAmount(orderAmountDf.format(orderAmount));
//当前周期预览_支付转化率扫码_付费用户转化率 // 订单数÷预览人数假设一共5个人预览产生了3个订单其实是2个人支付的其中1人购买2单预览-支付转化率是3÷5而不是2÷5
if(preview==0){ if(preview==0){
vo.setNowPreviewPay("0.00"); vo.setNowPreviewPay("0.00");
}else { }else {
BigDecimal previewPay = new BigDecimal(pay).divide(new BigDecimal(preview), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); BigDecimal previewPay = new BigDecimal(payCount).divide(new BigDecimal(preview), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
vo.setNowPreviewPay(df.format(previewPay)); vo.setNowPreviewPay(df.format(previewPay));
} }
// 付费的用户人数÷扫码的用户人数此处是人数除以人数而且是除以扫码人数而不是预览人数
if(scanCode==0){ if(scanCode==0){
vo.setNowScanCodePay("0.00"); vo.setNowScanCodePay("0.00");
}else { }else {
@ -358,14 +367,16 @@ public class AppStatisticsServiceImpl implements AppStatisticsService {
} }
}else if(cycle==2){ }else if(cycle==2){
//上一个周期的支付订单金额 //上一个周期的支付订单金额
// 支付过订单的金额包含已退款的金额
vo.setPreviousOrderAmount(orderAmountDf.format(orderAmount)); vo.setPreviousOrderAmount(orderAmountDf.format(orderAmount));
// 计算预览_支付转化率 // 订单数÷预览人数假设一共5个人预览产生了3个订单其实是2个人支付的其中1人购买2单预览-支付转化率是3÷5而不是2÷5
if(preview==0){ if(preview==0){
vo.setPreviousPreviewPay("0.00"); vo.setPreviousPreviewPay("0.00");
}else { }else {
BigDecimal previewPay = new BigDecimal(pay).divide(new BigDecimal(preview), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100)); BigDecimal previewPay = new BigDecimal(payCount).divide(new BigDecimal(preview), 4, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
vo.setPreviousPreviewPay(df.format(previewPay)); vo.setPreviousPreviewPay(df.format(previewPay));
} }
// 付费的用户人数÷扫码的用户人数此处是人数除以人数而且是除以扫码人数而不是预览人数
if(scanCode==0){ if(scanCode==0){
vo.setPreviousScanCodePay("0.00"); vo.setPreviousScanCodePay("0.00");
}else { }else {

View File

@ -155,17 +155,16 @@
<select id="countCompleteVideoOfMember" resultType="java.lang.Integer"> <select id="countCompleteVideoOfMember" resultType="java.lang.Integer">
select ifnull(count(1),0) as count select ifnull(count(1),0) as count
from( from(
select member_video.member_id select member_id
from member_video from member_video
left join video on member_video.video_id = video.id
where member_video.scenic_id = #{scenicId} where member_video.scenic_id = #{scenicId}
<if test="startTime!= null"> <if test="startTime!= null">
and video.create_time >= #{startTime} and member_video.create_time >= #{startTime}
</if> </if>
<if test="endTime!= null"> <if test="endTime!= null">
and video.create_time &lt;= #{endTime} and member_video.create_time &lt;= #{endTime}
</if> </if>
group by member_video.member_id group by member_id
)a )a
</select> </select>
<select id="countTotalVisitorOfMember" resultType="java.lang.Integer"> <select id="countTotalVisitorOfMember" resultType="java.lang.Integer">
@ -186,7 +185,7 @@
</select> </select>
<select id="countCompleteOfVideo" resultType="java.lang.Integer"> <select id="countCompleteOfVideo" resultType="java.lang.Integer">
select count(1) as count select count(1) as count
from task from video
where scenic_id = #{scenicId} where scenic_id = #{scenicId}
<if test="startTime!= null"> <if test="startTime!= null">
and create_time >= #{startTime} and create_time >= #{startTime}