Browse Source

Merge remote-tracking branch 'origin/milestone-20250727-金币重构三期' into milestone-20250727-金币重构三期

lijianlin/feature-20250728171217-三期金豆消费相关
sunjiabei 2 months ago
parent
commit
848537d1b4
  1. 11
      src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java
  2. 8
      src/main/java/com/example/demo/controller/coin/GoldDetailController.java
  3. 22
      src/main/java/com/example/demo/domain/entity/User.java
  4. 3
      src/main/java/com/example/demo/mapper/coin/GoldDetailMapper.java
  5. 2
      src/main/java/com/example/demo/service/coin/GoldDetailService.java
  6. 2
      src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java
  7. 5
      src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java
  8. 16
      src/main/resources/mapper/GoldDetailMapper.xml

11
src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java

@ -155,6 +155,7 @@ public class MysqlServiceImpl implements MysqlService {
}
if (validThreeTypes.contains(gtype)) {
mysqlStmt.setInt(13, 3);
mysqlStmt.setNull(20, java.sql.Types.INTEGER);
mysqlStmt.setString(1, "ERPQT_" + timestampPart + randomNumber);
}
@ -171,17 +172,17 @@ public class MysqlServiceImpl implements MysqlService {
}
mysqlStmt.setInt(7, core_jb);
if (operation_platform.equals("1")) {
mysqlStmt.setString(8, "6");
mysqlStmt.setString(8, "ERP");
} else if (operation_platform.equals("2")) {
mysqlStmt.setString(8, "5");
mysqlStmt.setString(8, "HomilyLink");
} else if (operation_platform.equals("3")) {
mysqlStmt.setString(8, "3");
mysqlStmt.setString(8, "HomilyChart");
} else if (operation_platform.equals("4")) {
continue;
} else if (operation_platform.equals("0")) {
mysqlStmt.setString(8, "4");
mysqlStmt.setString(8, "初始化金币");
} else {
mysqlStmt.setString(8, "2");
mysqlStmt.setString(8, "其他");
}
mysqlStmt.setString(9, goods_name);
mysqlStmt.setString(12, remark);

8
src/main/java/com/example/demo/controller/coin/GoldDetailController.java

@ -9,6 +9,7 @@ import com.example.demo.domain.DTO.GoldUserDTO;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.coin.GoldDetail;
import com.example.demo.domain.vo.coin.GoldUser;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.coin.GoldDetailService;
@ -284,4 +285,11 @@ public class GoldDetailController {
return Result.success(goldDetailService.getGold(page.getPageNum(), page.getPageSize(), page.getUser()));
}
/*
更新用户消费次数
*/
@PostMapping("/updateConsumeNum")
public Result updateConsumeNum() {
return goldDetailService.updateConsumeNum();
}
}

22
src/main/java/com/example/demo/domain/entity/User.java

@ -26,14 +26,16 @@ public class User implements Serializable {
private String name; // 客户姓名
@ExcelProperty("所属地区")
private String market; // 所属地区
@ExcelProperty("历史永久金币")
@ExcelIgnore
private BigDecimal sumPermanentGold; // 历史永久金币
@ExcelProperty("历史六月免费金币")
@ExcelIgnore
private BigDecimal sumFreeJune; // 历史六月免费金币
@ExcelProperty("历史十二月免费金币")
@ExcelIgnore
private BigDecimal sumFreeDecember; // 历史十二月免费金币
@ExcelProperty("历史任务金币")
@ExcelIgnore
private BigDecimal sumTaskGold; // 历史任务金币
@ExcelProperty("金币总数")
private BigDecimal sumGold;// 金币总数
@ExcelProperty("当前永久金币")
private BigDecimal currentPermanentGold; // 当前永久金币
@ExcelProperty("当前六月免费金币")
@ -42,17 +44,17 @@ public class User implements Serializable {
private BigDecimal currentFreeDecember; // 当前十二月免费金币
@ExcelProperty("当前任务金币")
private BigDecimal currentTaskGold; // 当前任务金币
@ExcelProperty("充值次数")
@ExcelProperty("充值次数(25年起)")
private Integer rechargeNum; // 充值次数
@ExcelProperty("历史消费")
@ExcelIgnore
private Integer sumConsume; // 历史消费
@ExcelProperty("历史消费次数")
@ExcelProperty("消费次数(25年起)")
private Integer consumeNum; // 消费次数
@ExcelProperty("历史消费永久金币")
@ExcelIgnore
private BigDecimal sumConsumePermanent;
@ExcelProperty("历史消费任务金币")
@ExcelIgnore
private BigDecimal sumConsumeTask;
@ExcelProperty("历史消费免费金币")
@ExcelIgnore
private BigDecimal sumConsumeFree;
@ExcelIgnore
private List<String> markets;

3
src/main/java/com/example/demo/mapper/coin/GoldDetailMapper.java

@ -3,6 +3,7 @@ package com.example.demo.mapper.coin;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.coin.Gold;
import com.example.demo.domain.vo.coin.GoldDetail;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.domain.vo.coin.Total;
import lombok.Data;
import org.apache.ibatis.annotations.Mapper;
@ -29,6 +30,8 @@ public interface GoldDetailMapper {
Total GoldTotal(User user);
//获取金币明细合计数
Gold sumGold(@Param("goldDetail") GoldDetail goldDetail);
//更新用户消费次数
Result updateConsumeNum();
@Data
public static class ExportRecordIdHolder{

2
src/main/java/com/example/demo/service/coin/GoldDetailService.java

@ -27,4 +27,6 @@ public interface GoldDetailService {
Result addExportRecord(GoldDetailDTO dto);
//异步导出金币余额
Result addExportRecordGold(GoldUserDTO dto);
//更新用户消费次数
Result updateConsumeNum();
}

2
src/main/java/com/example/demo/serviceImpl/coin/AuditServiceImpl.java

@ -67,7 +67,7 @@ public class AuditServiceImpl implements AuditService {
if (order.getType()==2) { //退款
//2.获取对应的消费订单退款订单号去掉开头"TK"即为对应消费订单
String consumeOrderCode = order.getOrderCode().replaceFirst("TK", "");
String consumeOrderCode = order.getOrderCode().replaceFirst("TK_", "");
//3.更新消费订单是否已退款状态为0
UserGoldRecord consumeOrder = auditMapper.selectAllOrderByOrderCode(consumeOrderCode);
if (consumeOrderCode != null&&consumeOrder.getType()==1){ //确保是消费订单

5
src/main/java/com/example/demo/serviceImpl/coin/GoldDetailServiceImpl.java

@ -194,6 +194,11 @@ public class GoldDetailServiceImpl implements GoldDetailService {
}
return Result.success();
}
//更新用户消费次数
@Override
public Result updateConsumeNum() {
return goldDetailMapper.updateConsumeNum();
}
}

16
src/main/resources/mapper/GoldDetailMapper.xml

@ -5,6 +5,21 @@
insert into export (account,type,state,url,file_name,data_num)
values(#{account},#{type},#{state},#{url},#{fileName},#{dataNum})
</insert>
<update id="updateConsumeNum">
UPDATE user AS u
JOIN (
SELECT
jwcode,
SUM(CASE WHEN type = 1 THEN 1 ELSE 0 END) AS consume_cnt
FROM user_gold_record
WHERE type IN (0,1)
AND audit_status IN (1,3)
AND flag = 1
GROUP BY jwcode
) AS t ON u.jwcode = t.jwcode
SET
u.consume_num = t.consume_cnt;
</update>
<select id="getGoldDetail" resultType="com.example.demo.domain.vo.coin.GoldDetail">
SELECT
@ -101,6 +116,7 @@
u.jwcode,
u.name,
m.name AS market,
ROUND(IFNULL(u.current_permanent_gold+u.current_free_june+u.current_free_december+u.current_task_gold, 0) / 100.0, 2) AS sumGold,
ROUND(IFNULL(u.sum_permanent_gold, 0) / 100.0, 2) AS sumPermanentGold,
ROUND(IFNULL(u.sum_free_june, 0) / 100.0, 2) AS sumFreeJune,
ROUND(IFNULL(u.sum_free_december, 0) / 100.0, 2) AS sumFreeDecember,

Loading…
Cancel
Save