Browse Source

Merge remote-tracking branch 'origin/milestone-20250702-金币重构一期' into milestone-20250702-金币重构一期

sunjiabei/feature-20250623130922-消费功能
huangqizhen 4 days ago
parent
commit
d884849dc4
  1. 10
      pom.xml
  2. 42
      src/main/java/com/example/demo/controller/AuditController.java
  3. 8
      src/main/java/com/example/demo/controller/ConsumeController.java
  4. 2
      src/main/java/com/example/demo/controller/RechargeController.java
  5. 30
      src/main/java/com/example/demo/controller/RefundController.java
  6. 5
      src/main/java/com/example/demo/controller/StatisticsController.java
  7. 2
      src/main/java/com/example/demo/controller/WorkbenchController.java
  8. 18
      src/main/java/com/example/demo/domain/vo/AuditRequest.java
  9. 1
      src/main/java/com/example/demo/domain/vo/ConsumeUser.java
  10. 2
      src/main/java/com/example/demo/domain/vo/Page.java
  11. 57
      src/main/java/com/example/demo/domain/vo/RechargeAudit.java
  12. 55
      src/main/java/com/example/demo/domain/vo/RefundAudit.java
  13. 1
      src/main/java/com/example/demo/domain/vo/RefundUser.java
  14. 2
      src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java
  15. 25
      src/main/java/com/example/demo/mapper/AuditMapper.java
  16. 2
      src/main/java/com/example/demo/mapper/ConsumeMapper.java
  17. 5
      src/main/java/com/example/demo/mapper/RefundMapper.java
  18. 13
      src/main/java/com/example/demo/service/AuditService.java
  19. 7
      src/main/java/com/example/demo/service/RefundService.java
  20. 2
      src/main/java/com/example/demo/service/WorkbenchService.java
  21. 104
      src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java
  22. 6
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  23. 85
      src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java
  24. 12
      src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java
  25. 6
      src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java
  26. 103
      src/main/resources/mapper/AuditMapper.xml
  27. 11
      src/main/resources/mapper/ConsumeMapper.xml
  28. 19
      src/main/resources/mapper/RechargeMapper.xml
  29. 45
      src/main/resources/mapper/RefundMapper.xml
  30. 4
      src/main/resources/mapper/StatisticsMapper.xml

10
pom.xml

@ -122,6 +122,16 @@
<artifactId>pagehelper-spring-boot-starter</artifactId> <artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version> <version>1.4.6</version>
</dependency> </dependency>
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>3.0.2</version> <!-- Jakarta Validation规范版本 -->
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>8.0.0.Final</version> <!-- 对应Spring Boot 3的实现版本 -->
</dependency>
</dependencies> </dependencies>
<build> <build>

42
src/main/java/com/example/demo/controller/AuditController.java

@ -1,11 +1,17 @@
package com.example.demo.controller; package com.example.demo.controller;
import com.example.demo.domain.vo.AuditRequest;
import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.RechargeAudit;
import com.example.demo.domain.vo.RefundAudit;
import com.example.demo.service.AuditService;
import com.github.pagehelper.PageInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
/** /**
* @program: gold-java * @program: gold-java
@ -23,4 +29,34 @@ import org.springframework.web.bind.annotation.RestController;
@Transactional @Transactional
@CrossOrigin @CrossOrigin
public class AuditController { public class AuditController {
@Autowired
private AuditService auditService;
//审核订单
@PostMapping("audit")
public ResponseEntity<Boolean> auditOrder(
@RequestBody AuditRequest request) {
boolean result = auditService.auditOrder(request.getToken(),request.getOrderCode(), request.getAuditId(), request.getAction(),request.getRejectReason());
return ResponseEntity.ok(result);
}
//多条件查询充值审核订单列表
@PostMapping("selectRecharge")
public PageInfo<RechargeAudit> searchRechargeAudit(
@RequestBody Page page) {
Integer pageNum = page.getPageNum();
Integer pageSize = page.getPageSize();
RechargeAudit rechargeAudit = page.getRechargeAudit();
return auditService.selectRechargeBy(pageNum, pageSize, rechargeAudit);
} //多条件查询退款审核订单列表
@PostMapping("selectRefund")
public PageInfo<RefundAudit> searchRefundAudit(
@RequestBody Page page) {
Integer pageNum = page.getPageNum();
Integer pageSize = page.getPageSize();
RefundAudit refundAudit = page.getRefundAudit();
return auditService.selectRefundBy(pageNum, pageSize, refundAudit);
}
} }

8
src/main/java/com/example/demo/controller/ConsumeController.java

@ -6,6 +6,7 @@ import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.Page; import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.Result;
import com.example.demo.service.ConsumeService; import com.example.demo.service.ConsumeService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -85,6 +86,13 @@ public class ConsumeController {
public Result add(@RequestBody ConsumeUser consumeUser) { public Result add(@RequestBody ConsumeUser consumeUser) {
try { try {
return consumeService.add(consumeUser); return consumeService.add(consumeUser);
// if(consumeUser.getJwcode().equals(94226013))
// {
// return consumeService.add(consumeUser);
// }else {
// return Result.error("不是测试的精网号,无法添加消费");
// }
//
} catch (Exception e) { } catch (Exception e) {
return Result.error("接口调用失败"); return Result.error("接口调用失败");
} }

2
src/main/java/com/example/demo/controller/RechargeController.java

@ -78,7 +78,7 @@ public class RechargeController {
} }
} }
//消耗金币增加
//充值金币增加
@PostMapping("/add") @PostMapping("/add")
public Result add(@RequestBody RechargeUser rechargeUser) { public Result add(@RequestBody RechargeUser rechargeUser) {
try { try {

30
src/main/java/com/example/demo/controller/RefundController.java

@ -1,9 +1,6 @@
package com.example.demo.controller; package com.example.demo.controller;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.RefundUser;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.*;
import com.example.demo.service.ConsumeService; import com.example.demo.service.ConsumeService;
import com.example.demo.service.RefundService; import com.example.demo.service.RefundService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -12,6 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* @program: gold-java * @program: gold-java
* @ClassName RefundMapper.xml * @ClassName RefundMapper.xml
@ -76,4 +75,27 @@ public class RefundController {
} }
} }
@PostMapping("/refundType")
public Result getRefundType()
{
List<String> list = refundService.getRefundType();
return Result.success(list);
}
@PostMapping("/selectGoods")
public Result getSelectGoods(@RequestBody RefundUser refundUser)
{
List<RefundUser> list = refundService.selectGoods(refundUser.getJwcode());
return Result.success(list);
}
//消耗金币增加
@PostMapping("/add")
public Result add(@RequestBody RefundUser refundUser) {
try {
return refundService.add(refundUser);
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
} }

5
src/main/java/com/example/demo/controller/StatisticsController.java

@ -44,6 +44,11 @@ public class StatisticsController {
public void HourlyTask2() { public void HourlyTask2() {
statisticsService.runHourlyTaskPart2(); statisticsService.runHourlyTaskPart2();
} }
//测试一周内定时任务part2
@PostMapping("/Daily2")
public void DailyTask2() {
statisticsService.runDailyTaskPart2();
}

2
src/main/java/com/example/demo/controller/WorkbenchController.java

@ -43,7 +43,7 @@ public class WorkbenchController {
*/ */
@PostMapping("getCard") @PostMapping("getCard")
public ResponseEntity<WorkbenchCard> card1(@RequestBody WorkbenchCard workbench){ public ResponseEntity<WorkbenchCard> card1(@RequestBody WorkbenchCard workbench){
WorkbenchCard result =workbenchService.getCard(workbench.getToken(),workbench.getMarkets());
WorkbenchCard result =workbenchService.getCard(workbench.getToken());
return ResponseEntity.ok(result); return ResponseEntity.ok(result);
} }
/* /*

18
src/main/java/com/example/demo/domain/vo/AuditRequest.java

@ -0,0 +1,18 @@
package com.example.demo.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AuditRequest {
private String token;
private String orderCode; //订单号
private Integer auditId; //审核人id
private Integer action; //操作
private String rejectReason; //驳回理由
}

1
src/main/java/com/example/demo/domain/vo/ConsumeUser.java

@ -1,6 +1,7 @@
package com.example.demo.domain.vo; package com.example.demo.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.PositiveOrZero;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

2
src/main/java/com/example/demo/domain/vo/Page.java

@ -24,5 +24,7 @@ public class Page {
private User user; private User user;
private RefundUser refundUser; private RefundUser refundUser;
private Permission permission; private Permission permission;
private RechargeAudit rechargeAudit;
private RefundAudit refundAudit;
private RechargeUser rechargeUser; private RechargeUser rechargeUser;
} }

57
src/main/java/com/example/demo/domain/vo/RechargeAudit.java

@ -0,0 +1,57 @@
package com.example.demo.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @program: gold-java
* @ClassName RechargeAudit
* @description: 充值审核
* @author: Ethan
* @create: 202506-30 10:29
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RechargeAudit {
private static final long serialVersionUID = 1L;
private String name; // 客户姓名
private Integer jwcode; // 精网号
private String orderCode; // 订单号
private String activity; // 活动名称
private String market; // 所属地区
private Byte refundType; // 退款类型
private Integer sumGold; //充值金额
private Integer permanentGold; // 永久金币
private Integer freeGold; // 免费金币
private Integer freeJune; // 6月免费金币
private Integer freeDecember; // 12月免费金币
private String remark; // 备注
private String payModel; //支付方式
private String voucher; //支付凭证
private Integer adminId; //提交人Id
private String adminName; //提交人姓名
private String auditStatus; //审核状态
private Integer auditId; //审核人Id
private String auditName; //审核人姓名
private Byte type; //类型
private String rejectReason; //驳回理由
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private String payTime; //支付时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime; // 创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date startTime; // 开始时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date auditTime; // 审核时间
}

55
src/main/java/com/example/demo/domain/vo/RefundAudit.java

@ -0,0 +1,55 @@
package com.example.demo.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @program: gold-java
* @ClassName RechargeAudit
* @description: 退款审核
* @author: Ethan
* @create: 202506-30 13:29
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RefundAudit {
private static final long serialVersionUID = 1L;
private String name; // 客户姓名
private Integer jwcode; // 精网号
private String orderCode; // 订单号
private String market; // 所属地区
private Byte refundModel; // 退款方式-全额 部分
private String goodsName; // 商品名称
private Integer sumGold; // 退款金额
private Integer permanentGold; // 永久金币
private Integer freeGold; // 免费金币
private Integer freeJune; // 6月免费金币
private Integer freeDecember; // 12月免费金币
private String remark; // 备注
private String payModel; //支付方式
private String voucher; //支付凭证
private Integer adminId; //提交人Id
private String adminName; //提交人姓名
private String auditStatus; //审核状态
private Integer auditId; //审核人Id
private String auditName; //审核人姓名
private String rejectReason; //驳回理由
private Byte type; //类型
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime; // 创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date startTime; // 开始时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date auditTime; // 审核时间
}

1
src/main/java/com/example/demo/domain/vo/RefundUser.java

@ -23,6 +23,7 @@ public class RefundUser {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private String orderCode; // 订单号
private String name; // 客户姓名 private String name; // 客户姓名
private Integer jwcode; // 精网号 private Integer jwcode; // 精网号
private String market; // 所属地区 private String market; // 所属地区

2
src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java

@ -45,7 +45,7 @@ public class WorkbenchMarketCard implements Serializable {
private Integer refundFreeJune; // 当日新增退款六月免费 private Integer refundFreeJune; // 当日新增退款六月免费
private Integer refundFreeDecember; // 当日新增退款十二月免费 private Integer refundFreeDecember; // 当日新增退款十二月免费
private Integer refundTask; // 当日新增退款任务 private Integer refundTask; // 当日新增退款任务
private Integer dailyConsume; // 当日总消耗 = consumePermanent + consumeFreeJune + consumeFreeDecember + consumeTask - (refundPermanent + refundFreeJune + refundFreeDecember + refundTask)
private Integer dailyReduce; // 当日总消耗 = consumePermanent + consumeFreeJune + consumeFreeDecember + consumeTask - (refundPermanent + refundFreeJune + refundFreeDecember + refundTask)
private Integer yearlyConsume; // 全年累计消费 private Integer yearlyConsume; // 全年累计消费
private Integer yearlyRefund; // 全年累计退款金币数 private Integer yearlyRefund; // 全年累计退款金币数
private Integer yearlyReduce; // 全年累计消耗金币数 = yearlyConsume - yearlyRefund private Integer yearlyReduce; // 全年累计消耗金币数 = yearlyConsume - yearlyRefund

25
src/main/java/com/example/demo/mapper/AuditMapper.java

@ -1,6 +1,14 @@
package com.example.demo.mapper; package com.example.demo.mapper;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.RechargeAudit;
import com.example.demo.domain.vo.RefundAudit;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* @program: gold-java * @program: gold-java
@ -13,6 +21,21 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface AuditMapper { public interface AuditMapper {
//根据订单号查订单
UserGoldRecord selectOrderByOrderCode(String orderCode);
//修改订单审核人与审核状态
int updateOrder (UserGoldRecord userGoldRecord);
//修改用户余额
int updateUserGold(User user);
//修改消费订单为以退款
int updateOrderRefund(String orderCode);
//多条件查询充值审核订单
List<RechargeAudit> selectRechargeBy(@Param("pageNum") Integer pageNum,
@Param("pageSize") Integer pageSize,
@Param("rechargeAudit") RechargeAudit rechargeAudit);
//多条件查询消费审核订单
List<RefundAudit> selectRefundBy(@Param("pageNum") Integer pageNum,
@Param("pageSize") Integer pageSize,
@Param("refundAudit") RefundAudit refundAudit);
} }

2
src/main/java/com/example/demo/mapper/ConsumeMapper.java

@ -23,4 +23,6 @@ public interface ConsumeMapper {
List<ConsumeUser> selectBy(ConsumeUser consumeUser); List<ConsumeUser> selectBy(ConsumeUser consumeUser);
void add(UserGoldRecord userGoldRecord); void add(UserGoldRecord userGoldRecord);
void updateIsRefund(String orderCode);
} }

5
src/main/java/com/example/demo/mapper/RefundMapper.java

@ -24,4 +24,9 @@ public interface RefundMapper {
List<RefundUser> selectBy(RefundUser refundUser); List<RefundUser> selectBy(RefundUser refundUser);
void add(UserGoldRecord userGoldRecord); void add(UserGoldRecord userGoldRecord);
List<String> getRefundType();
List<RefundUser> selectGoods(Integer jwcode);
} }

13
src/main/java/com/example/demo/service/AuditService.java

@ -1,5 +1,10 @@
package com.example.demo.service; package com.example.demo.service;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.RechargeAudit;
import com.example.demo.domain.vo.RefundAudit;
import com.github.pagehelper.PageInfo;
/** /**
* @program: gold-java * @program: gold-java
* @ClassName AuditService * @ClassName AuditService
@ -11,4 +16,12 @@ package com.example.demo.service;
public interface AuditService { public interface AuditService {
//审核订单并修改用户余额等
boolean auditOrder(String token, String orderCode, Integer auditId,Integer action,String rejectReason);
//多条件查询充值审核订单
PageInfo<RechargeAudit> selectRechargeBy(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit);
//多条件查询退款审核订单
PageInfo<RefundAudit> selectRefundBy(Integer pageNum, Integer pageSize, RefundAudit refundAudit);
//金币合计数
Gold sumRechargeGold();
} }

7
src/main/java/com/example/demo/service/RefundService.java

@ -7,6 +7,8 @@ import com.example.demo.domain.vo.RefundUser;
import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.Result;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import java.util.List;
/** /**
* @program: gold-java * @program: gold-java
* @ClassName RefundService * @ClassName RefundService
@ -25,4 +27,9 @@ public interface RefundService {
PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser); PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser);
Result add(RefundUser refundUser); Result add(RefundUser refundUser);
//获取退款类型
List<String> getRefundType();
List<RefundUser> selectGoods(Integer jwcode);
} }

2
src/main/java/com/example/demo/service/WorkbenchService.java

@ -18,7 +18,7 @@ import java.util.List;
public interface WorkbenchService { public interface WorkbenchService {
//获取不同地区的工作台统计卡片 //获取不同地区的工作台统计卡片
WorkbenchCard getCard(String token, List<String> markets);
WorkbenchCard getCard(String token);
//获取不同地区的工作台柱状图数据根据类型起止时间地区查询 //获取不同地区的工作台柱状图数据根据类型起止时间地区查询
WorkbenchCard getGraph(String token, Date startDate, Date endDate, List<String> markets); WorkbenchCard getGraph(String token, Date startDate, Date endDate, List<String> markets);
//根据类型获取年初至今的统计数据 //根据类型获取年初至今的统计数据

104
src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java

@ -1,6 +1,18 @@
package com.example.demo.serviceImpl; package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.RechargeAudit;
import com.example.demo.domain.vo.RefundAudit;
import com.example.demo.mapper.AuditMapper;
import com.example.demo.service.AuditService; import com.example.demo.service.AuditService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* @program: gold-java * @program: gold-java
@ -11,6 +23,96 @@ import com.example.demo.service.AuditService;
* @Version 1.0 * @Version 1.0
**/ **/
@Service
public class AuditServiceImpl implements AuditService { public class AuditServiceImpl implements AuditService {
@Autowired
private AuditMapper auditMapper;
/*
审核订单并修改用户余额等
*/
@Override
public boolean auditOrder(String token, String orderCode, Integer auditId, Integer action,String rejectReason) {
UserGoldRecord order=auditMapper.selectOrderByOrderCode(orderCode);
if (order == null || order.getAuditStatus() != 0) {
throw new IllegalArgumentException("订单不存在或已被审核");
}
//更新订单的审核状态和审核人
UserGoldRecord updateOrder = new UserGoldRecord();
updateOrder.setOrderCode(orderCode);
updateOrder.setAuditId(auditId);
//判断是通过还是驳回
if (action==2){ //驳回
updateOrder.setAuditStatus(2);
updateOrder.setRejectReason(rejectReason);
auditMapper.updateOrder(updateOrder);
return true;
}else if (action==1) { //通过
updateOrder.setAuditStatus(1);
}
// 执行审核更新
auditMapper.updateOrder(updateOrder);
//判断是充值还是退款
if (order.getType()==0){ //充值
//更新用户余额
User update = new User();
update.setJwcode(order.getJwcode()); //精网号
update.setSumPermanentGold(order.getPermanentGold()); //历史永久金币
update.setSumFreeJune(order.getFreeJune()); //历史六月免费金币
update.setSumFreeDecember(order.getFreeDecember()); //历史十二月免费金币
update.setSumTaskGold(order.getTaskGold()); //历史任务金币
update.setCurrentPermanentGold(order.getPermanentGold()); //当前永久金币
update.setCurrentFreeJune(order.getFreeJune()); //当前六月免费金币
update.setCurrentFreeDecember(order.getFreeDecember()); //当前十二月免费金币
update.setCurrentTaskGold(order.getTaskGold()); //当前任务金币
auditMapper.updateUserGold(update);
}else if (order.getType()==2) { //退款
//1.更新用户余额,并标记对应的消费订单为已退款
User update = new User();
update.setJwcode(order.getJwcode());
update.setCurrentPermanentGold(order.getPermanentGold()); //当前永久金币
update.setCurrentFreeJune(order.getFreeJune()); //当前六月免费金币
update.setCurrentFreeDecember(order.getFreeDecember()); //当前十二月免费金币
update.setCurrentTaskGold(order.getTaskGold()); //当前任务金币
auditMapper.updateUserGold(update);
//2.获取对应的消费订单退款订单号去掉开头"TK"即为对应消费订单
String consumeOrderCode = order.getOrderCode().replaceFirst("TK", "");
//3.更新消费订单是否已退款状态为1
UserGoldRecord consumeOrder = auditMapper.selectOrderByOrderCode(consumeOrderCode);
if (consumeOrderCode != null&&consumeOrder.getType()==1){ //确保是消费订单
auditMapper.updateOrderRefund(consumeOrderCode);
}else {
throw new IllegalArgumentException("找不到对应的订单或不是有效订单");
}
}
return true;
}
/*
* 多条件查询充值订单列表
*/
@Override
public PageInfo<RechargeAudit> selectRechargeBy(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit) {
PageHelper.startPage(pageNum, pageSize);
List<RechargeAudit> rechargeAudits = auditMapper.selectRechargeBy(pageNum, pageSize, rechargeAudit);
return new PageInfo<>(rechargeAudits);
}
@Override
public PageInfo<RefundAudit> selectRefundBy(Integer pageNum, Integer pageSize, RefundAudit refundAudit) {
PageHelper.startPage(pageNum, pageSize);
List<RefundAudit> refundAudits = auditMapper.selectRefundBy(pageNum, pageSize, refundAudit);
return new PageInfo<>(refundAudits);
}
/*
金币合计数
*/
@Override
public Gold sumRechargeGold() {
Gold gold = new Gold();
//获取充值审核订单列表
List<RechargeAudit> rechargeAudits = auditMapper.selectRechargeBy(1, 1000, null);
return null;
}
} }

6
src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java

@ -1,5 +1,6 @@
package com.example.demo.serviceImpl; package com.example.demo.serviceImpl;
import com.example.demo.Util.GoldTistV2;
import com.example.demo.domain.entity.User; import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.UserGoldRecord; import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.ConsumeUser; import com.example.demo.domain.vo.ConsumeUser;
@ -14,6 +15,7 @@ import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -158,6 +160,10 @@ public class ConsumeServiceImpl implements ConsumeService {
user.setConsumeNum(gold.getConsumeNum() + 1); user.setConsumeNum(gold.getConsumeNum() + 1);
user.setSumConsume(consumeUser.getPermanentGold() + consumeUser.getFreeGold() + consumeUser.getTaskGold()); user.setSumConsume(consumeUser.getPermanentGold() + consumeUser.getFreeGold() + consumeUser.getTaskGold());
userMapper.updateGold(user); userMapper.updateGold(user);
//对接接口
// GoldTistV2.addCoinNew(userGoldRecord.getJwcode().toString(), 65,
// (double) (userGoldRecord.getPermanentGold() + userGoldRecord.getFreeDecember() + userGoldRecord.getFreeJune() + userGoldRecord.getTaskGold()) /100,
// userGoldRecord.getRemark(),((double) userGoldRecord.getPermanentGold() /100), userGoldRecord.getPayPlatform(), userGoldRecord.getGoodsName());
return Result.success(); return Result.success();
} }
} }

85
src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java

@ -1,5 +1,6 @@
package com.example.demo.serviceImpl; package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.ConsumeUser; import com.example.demo.domain.vo.ConsumeUser;
import com.example.demo.domain.vo.Gold; import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.RefundUser; import com.example.demo.domain.vo.RefundUser;
@ -13,7 +14,13 @@ import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/** /**
* @program: gold-java * @program: gold-java
@ -31,7 +38,7 @@ public class RefundServiceImpl implements RefundService {
private RefundMapper refundMapper; private RefundMapper refundMapper;
@Autowired @Autowired
private UserMapper userMapper;
private ConsumeMapper consumeMapper;
@Override @Override
public PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) { public PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) {
@ -83,6 +90,80 @@ public class RefundServiceImpl implements RefundService {
@Override @Override
public Result add(RefundUser refundUser) { public Result add(RefundUser refundUser) {
return null;
UserGoldRecord userGoldRecord = new UserGoldRecord();
String goodsNameWithOrder = refundUser.getGoodsName();
String orderCode = "";
//订单号生成
if (goodsNameWithOrder != null && goodsNameWithOrder.contains("_")) {
String[] parts = goodsNameWithOrder.split("_", 2);
if (parts.length >= 2) {
// 提取订单号保留原始前缀
orderCode = parts[0]; // XF202506281545524400006580
// 提取商品名处理可能包含下划线的情况
String goodsName = parts[1]; // 商品A
// 设置属性添加退款前缀
userGoldRecord.setOrderCode("TK" + orderCode); // TKXF202506281545524400006580
userGoldRecord.setGoodsName(goodsName); // 商品A
}
}
userGoldRecord.setJwcode(refundUser.getJwcode());
userGoldRecord.setRefundType(refundUser.getRefundType());
userGoldRecord.setRefundModel(refundUser.getRefundModel());
userGoldRecord.setPermanentGold(refundUser.getPermanentGold());
// 获取当前月份1-12
int currentMonth = LocalDate.now().getMonthValue();
// 根据当前月份设置对应字段
if (currentMonth >= 1 && currentMonth <= 6) {
// 1-6月设置6月额度12月保持默认值
userGoldRecord.setFreeJune(0);
userGoldRecord.setFreeDecember(refundUser.getFreeGold());
} else {
// 7-12月设置12月额度6月保持默认值
userGoldRecord.setFreeJune(refundUser.getFreeGold());
userGoldRecord.setFreeDecember(0);
}
userGoldRecord.setTaskGold(refundUser.getTaskGold());
userGoldRecord.setSumGold(refundUser.getSumGold());
userGoldRecord.setPayPlatform("金币系统");
userGoldRecord.setRemark(refundUser.getRemark());
userGoldRecord.setAdminId(refundUser.getAdminId());
userGoldRecord.setType((byte) 2);
userGoldRecord.setAuditStatus(0);
userGoldRecord.setCreateTime(new Date());
refundMapper.add(userGoldRecord);
consumeMapper.updateIsRefund(orderCode);
return Result.success();
}
@Override
public List<String> getRefundType() {
List<String> list = refundMapper.getRefundType();
return list;
}
@Override
public List<RefundUser> selectGoods(Integer jwcode) {
List<RefundUser> refundUsers = refundMapper.selectGoods(jwcode);
List<RefundUser> list = new ArrayList<>();
for (RefundUser record : refundUsers) {
if (record == null) {
continue;
}
String orderCode = record.getOrderCode() != null ? record.getOrderCode() : "无订单号";
String goodsName = record.getGoodsName() != null ? record.getGoodsName() : "无商品名";
// 拼接格式订单号_商品名例如XF20250629_商品BC
String combined = orderCode + "_" + goodsName;
RefundUser refundUser = new RefundUser();
refundUser.setGoodsName(combined);
refundUser.setPermanentGold(record.getPermanentGold());
refundUser.setFreeGold(record.getFreeGold());
refundUser.setTaskGold(record.getTaskGold());
list.add(refundUser);
}
return list;
} }
} }

12
src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java

@ -68,7 +68,17 @@ public class StatisticsServiceImpl implements StatisticsService {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, -7); // 一周前 cal.add(Calendar.DAY_OF_YEAR, -7); // 一周前
Date startDate = cal.getTime(); Date startDate = cal.getTime();
Date endDate = generalService.getYesterday(); // 昨天
Date yesterday = generalService.getYesterday(); // 昨天
// 获取 Calendar 实例并设置为昨天的日期
Calendar calendar = Calendar.getInstance();
calendar.setTime(yesterday);
// 设置时间为昨天的23:55
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 55);
//把yesterday的结束时间设为结束时间
Date endDate= calendar.getTime();
//近一周的日期列表 //近一周的日期列表
List<Date> dateList =generalService.getAllDatesBetween(startDate, endDate); List<Date> dateList =generalService.getAllDatesBetween(startDate, endDate);

6
src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java

@ -39,7 +39,7 @@ public class WorkbenchServiceImpl implements WorkbenchService {
@Autowired @Autowired
private StatisticsMapper statisticsMapper; private StatisticsMapper statisticsMapper;
@Override @Override
public WorkbenchCard getCard(String token, List<String> markets) {
public WorkbenchCard getCard(String token) {
Date date=new Date(); Date date=new Date();
// 获取开始时间和结束时间当天 // 获取开始时间和结束时间当天
LocalDateTime startOfDay = date.toInstant() LocalDateTime startOfDay = date.toInstant()
@ -53,7 +53,7 @@ public class WorkbenchServiceImpl implements WorkbenchService {
// 获取当前年份的第一天 // 获取当前年份的第一天
LocalDate firstDayOfYear = today.withDayOfYear(1); LocalDate firstDayOfYear = today.withDayOfYear(1);
Date yearlyStartDate=Date.from(firstDayOfYear.atStartOfDay(ZoneId.systemDefault()).toInstant()); Date yearlyStartDate=Date.from(firstDayOfYear.atStartOfDay(ZoneId.systemDefault()).toInstant());
List<String> markets = generalService.getMarket();
List<WorkbenchMarketCard> marketCards = new ArrayList<>(); List<WorkbenchMarketCard> marketCards = new ArrayList<>();
// 遍历每个 marketCard 并填充数据 // 遍历每个 marketCard 并填充数据
for (String market : markets) { for (String market : markets) {
@ -95,7 +95,7 @@ public class WorkbenchServiceImpl implements WorkbenchService {
int totalConsume = card.getConsumePermanent() + card.getConsumeFreeJune() + card.getConsumeFreeDecember() + card.getConsumeTask(); int totalConsume = card.getConsumePermanent() + card.getConsumeFreeJune() + card.getConsumeFreeDecember() + card.getConsumeTask();
//当日总退款 //当日总退款
int totalRefund = card.getRefundPermanent() + card.getRefundFreeJune() + card.getRefundFreeDecember() + card.getRefundTask(); int totalRefund = card.getRefundPermanent() + card.getRefundFreeJune() + card.getRefundFreeDecember() + card.getRefundTask();
card.setDailyConsume(totalConsume - totalRefund);//当日总消耗
card.setDailyReduce(totalConsume - totalRefund);//当日总消耗
card.setYearlyConsume(calculateSum(market, "consume", yearlyStartDate,date));//年累计消费 card.setYearlyConsume(calculateSum(market, "consume", yearlyStartDate,date));//年累计消费
card.setYearlyRefund(calculateSum(market, "refund",yearlyStartDate ,date));//年累计退款 card.setYearlyRefund(calculateSum(market, "refund",yearlyStartDate ,date));//年累计退款
card.setYearlyReduce(card.getYearlyConsume() - card.getYearlyRefund());//年累计消耗 card.setYearlyReduce(card.getYearlyConsume() - card.getYearlyRefund());//年累计消耗

103
src/main/resources/mapper/AuditMapper.xml

@ -1,5 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.AuditMapper"> <mapper namespace="com.example.demo.mapper.AuditMapper">
<!-- 修改订单审核人与审核状态-->
<update id="updateOrder">
update user_gold_record
set audit_id = #{auditId},
audit_status = #{auditStatus},
reject_reason = #{rejectReason}
where order_code = #{orderCode}
</update>
<!--更新用户余额-->
<update id="updateUserGold">
update user
set sum_permanent_gold = sum_permanent_gold + COALESCE(#{sumPermanentGold},0),
sum_free_june = sum_free_june + COALESCE(#{sumFreeJune},0),
sum_free_december = sum_free_december + COALESCE(#{sumFreeDecember},0),
sum_task_gold = sum_task_gold + COALESCE(#{sumTaskGold},0),
current_permanent_gold = current_permanent_gold + COALESCE(#{currentPermanentGold},0),
current_free_june = current_free_june + COALESCE(#{currentFreeJune},0),
current_free_december = current_free_december + COALESCE(#{currentFreeDecember},0),
current_task_gold = current_task_gold + COALESCE(#{currentTaskGold},0)
where jwcode = #{jwcode}
</update>
<!--修改消费订单为已退款-->
<update id="updateOrderRefund">
update user_gold_record
set is_refund = 1
where order_code = #{orderCode}
</update>
<!--根据订单号查订单-->
<select id="selectOrderByOrderCode" resultType="com.example.demo.domain.entity.UserGoldRecord">
select * from user_gold_record where order_code = #{orderCode}
</select>
<!--多条件查询充值审核订单-->
<select id="selectRechargeBy" resultType="com.example.demo.domain.vo.RechargeAudit">
SELECT ugr.*,
u.name as name,
u.market as market,
a1.admin_name as adminName,
a2.admin_name as auditName
FROM user_gold_record as ugr
LEFT JOIN user u ON ugr.jwcode = u.jwcode
LEFT JOIN admin a1 ON ugr.admin_id = a1.id
LEFT JOIN admin a2 ON ugr.audit_id = a2.id
<where>
<if test="rechargeAudit.jwcode != null and rechargeAudit.jwcode != ''">
AND ugr.jwcode = #{rechargeAudit.jwcode}
</if>
<if test="rechargeAudit.activity != null and rechargeAudit.activity != ''">
AND ugr.activity = #{rechargeAudit.activity}
</if>
<if test="rechargeAudit.payModel != null and rechargeAudit.payModel != ''">
AND ugr.payModel = #{rechargeAudit.payModel}
</if>
<if test="rechargeAudit.market != null and rechargeAudit.market != ''">
AND u.market = #{rechargeAudit.market}
</if>
<if test="rechargeAudit.startTime != null and rechargeAudit.endTime != null ">
AND ugr.pay_time between #{rechargeAudit.startTime} and #{rechargeAudit.endTime}
</if>
<if test="rechargeAudit.auditStatus != null and rechargeAudit.auditStatus != ''">
AND ugr.audit_status = #{rechargeAudit.auditStatus}
</if>
AND ugr.type = 0
</where>
</select>
<!--多条件查询退款审核订单-->
<select id="selectRefundBy" resultType="com.example.demo.domain.vo.RefundAudit">
SELECT ugr.*,
u.name as name,
u.market as market,
a1.admin_name as adminName,
a2.admin_name as auditName
FROM user_gold_record as ugr
LEFT JOIN user u ON ugr.jwcode = u.jwcode
LEFT JOIN admin a1 ON ugr.admin_id = a1.id
LEFT JOIN admin a2 ON ugr.audit_id = a2.id
<where>
<if test="refundAudit.jwcode != null and refundAudit.jwcode != ''">
AND ugr.jwcode = #{refundAudit.jwcode}
</if>
<if test="refundAudit.refundModel != null and refundAudit.refundModel != ''">
AND ugr.refund_model = #{refundAudit.refundModel}
</if>
<if test="refundAudit.goodsName != null and refundAudit.goodsName != ''">
AND ugr.goods_name = #{refundAudit.goodsName}
</if>
<if test="refundAudit.market != null and refundAudit.market != ''">
AND u.market = #{refundAudit.market}
</if>
<if test="refundAudit.startTime != null and refundAudit.endTime != null ">
AND ugr.create_time between #{refundAudit.startTime} and #{refundAudit.endTime}
</if>
<if test="refundAudit.auditStatus != null and refundAudit.auditStatus != ''">
AND ugr.audit_status = #{refundAudit.auditStatus}
</if>
AND ugr.type = 2
</where>
</select>
</mapper> </mapper>

11
src/main/resources/mapper/ConsumeMapper.xml

@ -171,4 +171,15 @@
#{payTime} #{payTime}
</trim> </trim>
</insert> </insert>
<update id="updateIsRefund" parameterType="java.lang.String">
UPDATE user_gold_record
SET is_refund = 1
<where>
order_code = #{orderCode}
<if test="isRefund != null and isRefund != 0">
AND is_refund != 0 <!-- 可选:仅更新非0状态的记录 -->
</if>
</where>
</update>
</mapper> </mapper>

19
src/main/resources/mapper/RechargeMapper.xml

@ -19,7 +19,7 @@
ugr.remark AS remark, ugr.remark AS remark,
ugr.admin_id AS adminId, ugr.admin_id AS adminId,
a.admin_name AS adminName, a.admin_name AS adminName,
ugr.create_time AS createTime
ugr.pay_time AS payTime
FROM user u FROM user u
JOIN user_gold_record ugr ON u.jwcode = ugr.jwcode JOIN user_gold_record ugr ON u.jwcode = ugr.jwcode
JOIN admin a ON ugr.admin_id = a.id JOIN admin a ON ugr.admin_id = a.id
@ -35,9 +35,9 @@
<when test="sortField == 'permanentGold'">ugr.permanent_gold</when> <when test="sortField == 'permanentGold'">ugr.permanent_gold</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))</when> <when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))</when>
<!-- 对时间字段的排序处理 --> <!-- 对时间字段的排序处理 -->
<when test="sortField == 'createTime'">ugr.create_time</when>
<when test="sortField == 'payTime'">ugr.pay_time</when>
<!-- 其他字段不支持排序,使用默认排序 --> <!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.create_time</otherwise>
<otherwise>ugr.pay_time</otherwise>
</choose> </choose>
<!-- 排序方向处理 --> <!-- 排序方向处理 -->
@ -55,7 +55,7 @@
<!-- 未指定排序字段时,使用默认的时间降序排序 --> <!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise> <otherwise>
ugr.create_time DESC
ugr.pay_time DESC
</otherwise> </otherwise>
</choose> </choose>
</trim> </trim>
@ -78,7 +78,7 @@
ugr.remark AS remark, ugr.remark AS remark,
ugr.admin_id AS adminId, ugr.admin_id AS adminId,
a.admin_name AS adminName, a.admin_name AS adminName,
ugr.create_time AS createTime
ugr.pay_time AS payTime
FROM user u FROM user u
JOIN user_gold_record ugr ON u.jwcode = ugr.jwcode JOIN user_gold_record ugr ON u.jwcode = ugr.jwcode
JOIN admin a ON ugr.admin_id = a.id JOIN admin a ON ugr.admin_id = a.id
@ -98,7 +98,7 @@
AND ugr.pay_platform = #{payPlatform} AND ugr.pay_platform = #{payPlatform}
</if> </if>
<if test="startTime != null and endTime != null"> <if test="startTime != null and endTime != null">
AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
AND ugr.pay_time BETWEEN #{startTime} AND #{endTime}
</if> </if>
</where> </where>
<trim prefix="ORDER BY" suffixOverrides=","> <trim prefix="ORDER BY" suffixOverrides=",">
@ -108,11 +108,12 @@
<choose> <choose>
<!-- 对金币数量的排序处理 --> <!-- 对金币数量的排序处理 -->
<when test="sortField == 'permanentGold'">ugr.permanent_gold</when> <when test="sortField == 'permanentGold'">ugr.permanent_gold</when>
<when test="sortField == 'money'">ugr.money</when>
<when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))</when> <when test="sortField == 'freeGold'">(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))</when>
<!-- 对时间字段的排序处理 --> <!-- 对时间字段的排序处理 -->
<when test="sortField == 'createTime'">ugr.create_time</when>
<when test="sortField == 'payTime'">ugr.pay_time</when>
<!-- 其他字段不支持排序,使用默认排序 --> <!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.create_time</otherwise>
<otherwise>ugr.pay_time</otherwise>
</choose> </choose>
<!-- 排序方向处理 --> <!-- 排序方向处理 -->
@ -130,7 +131,7 @@
<!-- 未指定排序字段时,使用默认的时间降序排序 --> <!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise> <otherwise>
ugr.create_time DESC
ugr.pay_time DESC
</otherwise> </otherwise>
</choose> </choose>
</trim> </trim>

45
src/main/resources/mapper/RefundMapper.xml

@ -7,6 +7,7 @@
SELECT u.name AS name, SELECT u.name AS name,
u.jwcode AS jwcode, u.jwcode AS jwcode,
u.market AS market, u.market AS market,
ugr.order_code AS orderCode,
ugr.goods_name AS goodsName, ugr.goods_name AS goodsName,
ugr.refund_model AS refundModel, ugr.refund_model AS refundModel,
ugr.refund_type AS refundType, ugr.refund_type AS refundType,
@ -64,6 +65,7 @@
SELECT u.name AS name, SELECT u.name AS name,
u.jwcode AS jwcode, u.jwcode AS jwcode,
u.market AS market, u.market AS market,
ugr.order_code AS orderCode,
ugr.goods_name AS goodsName, ugr.goods_name AS goodsName,
ugr.refund_model AS refundModel, ugr.refund_model AS refundModel,
ugr.refund_type AS refundType, ugr.refund_type AS refundType,
@ -138,37 +140,64 @@
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
order_code, order_code,
jwcode, jwcode,
refund_type,
refund_model,
sum_gold, sum_gold,
permanent_gold, permanent_gold,
free_june, free_june,
free_december, free_december,
task_gold, task_gold,
goods_name, goods_name,
pay_platform,
remark, remark,
type, type,
pay_platform,
is_refund,
admin_id, admin_id,
create_time,
pay_time
audit_status,
create_time
</trim> </trim>
VALUES VALUES
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
#{orderCode}, #{orderCode},
#{jwcode}, #{jwcode},
#{refundType},
#{refundModel},
#{sumGold}, #{sumGold},
#{permanentGold}, #{permanentGold},
#{freeJune}, #{freeJune},
#{freeDecember}, #{freeDecember},
#{taskGold}, #{taskGold},
#{goodsName}, #{goodsName},
#{payPlatform},
#{remark}, #{remark},
#{type}, #{type},
#{payPlatform},
#{isRefund},
#{adminId}, #{adminId},
#{createTime},
#{payTime}
#{auditStatus},
#{createTime}
</trim> </trim>
</insert> </insert>
<select id="getRefundType" resultType="java.lang.String">
select DISTINCT refund_Type from user_gold_record
</select>
<select id="selectGoods" resultType="com.example.demo.domain.vo.RefundUser">
SELECT
ugr.goods_name AS goodsName,
ugr.order_code AS orderCode,
ugr.permanent_gold AS permanentGold,
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
ugr.task_gold AS taskGold
FROM user_gold_record ugr
<where>
ugr.type = 1
AND ugr.is_refund = 0
<if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode}
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
ugr.create_time DESC
</trim>
</select>
</mapper> </mapper>

4
src/main/resources/mapper/StatisticsMapper.xml

@ -27,13 +27,13 @@
market, current_datetime, market, current_datetime,
current_gold, daily_change, current_gold, daily_change,
current_permanent, current_free_june, current_permanent, current_free_june,
current_free_december, current_task,
current_free_december, current_task
) VALUES ( ) VALUES (
#{market}, #{currentDatetime}, #{market}, #{currentDatetime},
#{currentGold}, #{dailyChange}, #{currentGold}, #{dailyChange},
#{currentPermanent}, #{currentFreeJune}, #{currentPermanent}, #{currentFreeJune},
#{currentFreeDecember}, #{currentTask},
#{currentFreeDecember}, #{currentTask}
) )
</insert> </insert>

Loading…
Cancel
Save