Compare commits

...

4 Commits

Author SHA1 Message Date
a361b59d74 配置
All checks were successful
ZhenTu-BE/pipeline/head This commit looks good
2025-09-23 20:57:01 +08:00
f779b0e040 计算 2025-09-23 20:53:22 +08:00
78c4548d02 文字 2025-09-23 17:54:49 +08:00
842310f73c ignore 2025-09-23 14:34:32 +08:00
5 changed files with 15 additions and 11 deletions

1
.gitignore vendored
View File

@@ -4,3 +4,4 @@ target/
.serena .serena
.claude .claude
.vscode .vscode
*.jpg

View File

@@ -196,7 +196,7 @@ public class AppOrderV2Controller {
if (cachedResult.getFinalAmount().compareTo(request.getExpectedFinalAmount()) != 0) { if (cachedResult.getFinalAmount().compareTo(request.getExpectedFinalAmount()) != 0) {
log.warn("移动端下单:价格不匹配, cached={}, expected={}, userId={}, scenicId={}", log.warn("移动端下单:价格不匹配, cached={}, expected={}, userId={}, scenicId={}",
cachedResult.getFinalAmount(), request.getExpectedFinalAmount(), currentUserId, scenicId); cachedResult.getFinalAmount(), request.getExpectedFinalAmount(), currentUserId, scenicId);
return ApiResponse.fail("请重新下单"); return ApiResponse.fail("价格信息变化,请退出后重新查询价格");
} }
// 验证原价是否匹配(可选) // 验证原价是否匹配(可选)
@@ -215,6 +215,7 @@ public class AppOrderV2Controller {
Long orderId = oldOrderService.createOrderCompact(currentUserId, request, cachedResult); Long orderId = oldOrderService.createOrderCompact(currentUserId, request, cachedResult);
return ApiResponse.success(String.valueOf(orderId)); return ApiResponse.success(String.valueOf(orderId));
} catch (Exception e) { } catch (Exception e) {
log.warn("移动端下单:订单创建失败, userId={}, scenicId={}, error={}", currentUserId, scenicId, e.getMessage(), e);
return ApiResponse.fail("订单创建失败,请稍后重试"); return ApiResponse.fail("订单创建失败,请稍后重试");
} }

View File

@@ -51,18 +51,18 @@ public class AppStatisticsFunnelVO {
return "-"; // TODO: REAL return "-"; // TODO: REAL
} }
// 扫码访问人数_上传头像人数_转化率 // 扫码访问人数_推送订阅人数_转化率
@JsonProperty("scaom_ufom") @JsonProperty("scaom_ufom")
public String getScaom_ufom() { public String getScaom_ufom() {
if (uploadFaceOfMemberNum == 0 || scanCodeVisitorOfMemberNum == 0) { if (scanCodeVisitorOfMemberNum == 0 || pushOfMemberNum == 0) {
return "0.00"; return "0.00";
} }
return new BigDecimal(uploadFaceOfMemberNum) return new BigDecimal(pushOfMemberNum)
.multiply(new BigDecimal(100)) .multiply(new BigDecimal(100))
.divide(new BigDecimal(scanCodeVisitorOfMemberNum), 2, RoundingMode.HALF_UP) .divide(new BigDecimal(scanCodeVisitorOfMemberNum), 2, RoundingMode.HALF_UP)
.toString(); .toString();
} }
// 上传头像人数_推送订阅人数_转化率 // 推送订阅人数_上传头像人数_转化率
@JsonProperty("ufom_pom") @JsonProperty("ufom_pom")
public String getUfom_pom() { public String getUfom_pom() {
if (pushOfMemberNum == 0 || uploadFaceOfMemberNum == 0) { if (pushOfMemberNum == 0 || uploadFaceOfMemberNum == 0) {
@@ -76,12 +76,12 @@ public class AppStatisticsFunnelVO {
// 上传头像人数_生成视频人数_转化率 // 上传头像人数_生成视频人数_转化率
@JsonProperty("pom_cvom") @JsonProperty("pom_cvom")
public String getPom_cvom() { public String getPom_cvom() {
if (uploadFaceOfMemberNum == 0 || pushOfMemberNum == 0) { if (uploadFaceOfMemberNum == 0 || completeVideoOfMemberNum == 0) {
return "0.00"; return "0.00";
} }
return new BigDecimal(completeVideoOfMemberNum) return new BigDecimal(completeVideoOfMemberNum)
.multiply(new BigDecimal(100)) .multiply(new BigDecimal(100))
.divide(new BigDecimal(pushOfMemberNum), 2, RoundingMode.HALF_UP) .divide(new BigDecimal(uploadFaceOfMemberNum), 2, RoundingMode.HALF_UP)
.toString(); .toString();
} }
// 生成视频人数_预览视频人数_转化率 // 生成视频人数_预览视频人数_转化率

View File

@@ -14,4 +14,5 @@ public class TemplateConfigEntity {
private Date createDate; private Date createDate;
private Integer minimalPlaceholderFill; private Integer minimalPlaceholderFill;
private Integer automaticPlaceholderFill; private Integer automaticPlaceholderFill;
private Integer duplicateEnable;
} }

View File

@@ -6,8 +6,8 @@
values (#{id}, #{scenicId}, #{name}, #{pid}, #{isPlaceholder}, #{sourceUrl}, #{effects}, #{luts}, #{overlays}, #{audios}, #{coverUrl}, #{frameRate}, #{speed}, #{price}, #{slashPrice}, #{sort}, #{cropEnable}, #{zoomCut}, #{onlyIf}, #{resolution}, now()) values (#{id}, #{scenicId}, #{name}, #{pid}, #{isPlaceholder}, #{sourceUrl}, #{effects}, #{luts}, #{overlays}, #{audios}, #{coverUrl}, #{frameRate}, #{speed}, #{price}, #{slashPrice}, #{sort}, #{cropEnable}, #{zoomCut}, #{onlyIf}, #{resolution}, now())
</insert> </insert>
<insert id="addConfig"> <insert id="addConfig">
insert into template_config(id, template_id, create_time) insert into template_config(id, template_id, duplicate_enable, create_time)
values (#{id}, #{templateId}, now()) values (#{id}, #{templateId}, #{duplicateEnable}, now())
</insert> </insert>
<update id="update"> <update id="update">
update template update template
@@ -52,7 +52,8 @@
<set> <set>
<if test="isDefault!= null">is_default = #{isDefault}, </if> <if test="isDefault!= null">is_default = #{isDefault}, </if>
minimal_placeholder_fill = #{minimalPlaceholderFill}, minimal_placeholder_fill = #{minimalPlaceholderFill},
automatic_placeholder_fill = #{automaticPlaceholderFill} automatic_placeholder_fill = #{automaticPlaceholderFill},
duplicate_enable = #{duplicateEnable}
</set> </set>
where id = #{id} where id = #{id}
</update> </update>