diff --git a/pom.xml b/pom.xml
index 93ebbc3..0876372 100644
--- a/pom.xml
+++ b/pom.xml
@@ -122,6 +122,16 @@
pagehelper-spring-boot-starter
1.4.6
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.0.2
+
+
+ org.hibernate.validator
+ hibernate-validator
+ 8.0.0.Final
+
diff --git a/src/main/java/com/example/demo/controller/AuditController.java b/src/main/java/com/example/demo/controller/AuditController.java
index 7c58292..bec1e92 100644
--- a/src/main/java/com/example/demo/controller/AuditController.java
+++ b/src/main/java/com/example/demo/controller/AuditController.java
@@ -1,11 +1,17 @@
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.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
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
@@ -23,4 +29,34 @@ import org.springframework.web.bind.annotation.RestController;
@Transactional
@CrossOrigin
public class AuditController {
+
+ @Autowired
+ private AuditService auditService;
+
+ //审核订单
+ @PostMapping("audit")
+ public ResponseEntity 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 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 searchRefundAudit(
+ @RequestBody Page page) {
+ Integer pageNum = page.getPageNum();
+ Integer pageSize = page.getPageSize();
+ RefundAudit refundAudit = page.getRefundAudit();
+
+ return auditService.selectRefundBy(pageNum, pageSize, refundAudit);
+}
}
diff --git a/src/main/java/com/example/demo/controller/ConsumeController.java b/src/main/java/com/example/demo/controller/ConsumeController.java
index cb99af9..9ddf11b 100644
--- a/src/main/java/com/example/demo/controller/ConsumeController.java
+++ b/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.Result;
import com.example.demo.service.ConsumeService;
+import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -85,6 +86,13 @@ public class ConsumeController {
public Result add(@RequestBody ConsumeUser consumeUser) {
try {
return consumeService.add(consumeUser);
+// if(consumeUser.getJwcode().equals(94226013))
+// {
+// return consumeService.add(consumeUser);
+// }else {
+// return Result.error("不是测试的精网号,无法添加消费");
+// }
+//
} catch (Exception e) {
return Result.error("接口调用失败");
}
diff --git a/src/main/java/com/example/demo/controller/RechargeController.java b/src/main/java/com/example/demo/controller/RechargeController.java
index 7ecf564..005e08a 100644
--- a/src/main/java/com/example/demo/controller/RechargeController.java
+++ b/src/main/java/com/example/demo/controller/RechargeController.java
@@ -78,7 +78,7 @@ public class RechargeController {
}
}
- //消耗金币增加
+ //充值金币增加
@PostMapping("/add")
public Result add(@RequestBody RechargeUser rechargeUser) {
try {
diff --git a/src/main/java/com/example/demo/controller/RefundController.java b/src/main/java/com/example/demo/controller/RefundController.java
index 30c180a..edd707b 100644
--- a/src/main/java/com/example/demo/controller/RefundController.java
+++ b/src/main/java/com/example/demo/controller/RefundController.java
@@ -1,9 +1,6 @@
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.RefundService;
import lombok.RequiredArgsConstructor;
@@ -12,6 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
+import java.util.List;
+
/**
* @program: gold-java
* @ClassName RefundMapper.xml
@@ -76,4 +75,27 @@ public class RefundController {
}
}
+ @PostMapping("/refundType")
+ public Result getRefundType()
+ {
+ List list = refundService.getRefundType();
+ return Result.success(list);
+ }
+
+ @PostMapping("/selectGoods")
+ public Result getSelectGoods(@RequestBody RefundUser refundUser)
+ {
+ List 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("接口调用失败");
+ }
+ }
}
diff --git a/src/main/java/com/example/demo/controller/StatisticsController.java b/src/main/java/com/example/demo/controller/StatisticsController.java
index d18fee3..c1a9726 100644
--- a/src/main/java/com/example/demo/controller/StatisticsController.java
+++ b/src/main/java/com/example/demo/controller/StatisticsController.java
@@ -44,6 +44,11 @@ public class StatisticsController {
public void HourlyTask2() {
statisticsService.runHourlyTaskPart2();
}
+ //测试一周内定时任务part2
+ @PostMapping("/Daily2")
+ public void DailyTask2() {
+ statisticsService.runDailyTaskPart2();
+ }
diff --git a/src/main/java/com/example/demo/controller/WorkbenchController.java b/src/main/java/com/example/demo/controller/WorkbenchController.java
index 3e73097..f6fcf8c 100644
--- a/src/main/java/com/example/demo/controller/WorkbenchController.java
+++ b/src/main/java/com/example/demo/controller/WorkbenchController.java
@@ -43,7 +43,7 @@ public class WorkbenchController {
*/
@PostMapping("getCard")
public ResponseEntity card1(@RequestBody WorkbenchCard workbench){
- WorkbenchCard result =workbenchService.getCard(workbench.getToken(),workbench.getMarkets());
+ WorkbenchCard result =workbenchService.getCard(workbench.getToken());
return ResponseEntity.ok(result);
}
/*
diff --git a/src/main/java/com/example/demo/domain/vo/AuditRequest.java b/src/main/java/com/example/demo/domain/vo/AuditRequest.java
new file mode 100644
index 0000000..3be612a
--- /dev/null
+++ b/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; //驳回理由
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/demo/domain/vo/ConsumeUser.java b/src/main/java/com/example/demo/domain/vo/ConsumeUser.java
index 40768ea..d2370ce 100644
--- a/src/main/java/com/example/demo/domain/vo/ConsumeUser.java
+++ b/src/main/java/com/example/demo/domain/vo/ConsumeUser.java
@@ -1,6 +1,7 @@
package com.example.demo.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.PositiveOrZero;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/src/main/java/com/example/demo/domain/vo/Page.java b/src/main/java/com/example/demo/domain/vo/Page.java
index 16d172d..72b26bf 100644
--- a/src/main/java/com/example/demo/domain/vo/Page.java
+++ b/src/main/java/com/example/demo/domain/vo/Page.java
@@ -24,5 +24,7 @@ public class Page {
private User user;
private RefundUser refundUser;
private Permission permission;
+ private RechargeAudit rechargeAudit;
+ private RefundAudit refundAudit;
private RechargeUser rechargeUser;
}
diff --git a/src/main/java/com/example/demo/domain/vo/RechargeAudit.java b/src/main/java/com/example/demo/domain/vo/RechargeAudit.java
new file mode 100644
index 0000000..4438ea6
--- /dev/null
+++ b/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: 2025−06-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; // 审核时间
+}
diff --git a/src/main/java/com/example/demo/domain/vo/RefundAudit.java b/src/main/java/com/example/demo/domain/vo/RefundAudit.java
new file mode 100644
index 0000000..f7715c8
--- /dev/null
+++ b/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: 2025−06-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; // 审核时间
+}
diff --git a/src/main/java/com/example/demo/domain/vo/RefundUser.java b/src/main/java/com/example/demo/domain/vo/RefundUser.java
index 6ca6b78..e0e42f6 100644
--- a/src/main/java/com/example/demo/domain/vo/RefundUser.java
+++ b/src/main/java/com/example/demo/domain/vo/RefundUser.java
@@ -23,6 +23,7 @@ public class RefundUser {
private static final long serialVersionUID = 1L;
+ private String orderCode; // 订单号
private String name; // 客户姓名
private Integer jwcode; // 精网号
private String market; // 所属地区
diff --git a/src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java b/src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java
index 747c0bc..36db07f 100644
--- a/src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java
+++ b/src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java
@@ -45,7 +45,7 @@ public class WorkbenchMarketCard implements Serializable {
private Integer refundFreeJune; // 当日新增退款(六月免费)
private Integer refundFreeDecember; // 当日新增退款(十二月免费)
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 yearlyRefund; // 全年累计退款金币数
private Integer yearlyReduce; // 全年累计消耗金币数 = yearlyConsume - yearlyRefund
diff --git a/src/main/java/com/example/demo/mapper/AuditMapper.java b/src/main/java/com/example/demo/mapper/AuditMapper.java
index 63dc767..1287ccd 100644
--- a/src/main/java/com/example/demo/mapper/AuditMapper.java
+++ b/src/main/java/com/example/demo/mapper/AuditMapper.java
@@ -1,6 +1,14 @@
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.Param;
+
+import java.util.List;
/**
* @program: gold-java
@@ -13,6 +21,21 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AuditMapper {
-
+ //根据订单号查订单
+ UserGoldRecord selectOrderByOrderCode(String orderCode);
+ //修改订单审核人与审核状态
+ int updateOrder (UserGoldRecord userGoldRecord);
+ //修改用户余额
+ int updateUserGold(User user);
+ //修改消费订单为以退款
+ int updateOrderRefund(String orderCode);
+ //多条件查询充值审核订单
+ List selectRechargeBy(@Param("pageNum") Integer pageNum,
+ @Param("pageSize") Integer pageSize,
+ @Param("rechargeAudit") RechargeAudit rechargeAudit);
+ //多条件查询消费审核订单
+ List selectRefundBy(@Param("pageNum") Integer pageNum,
+ @Param("pageSize") Integer pageSize,
+ @Param("refundAudit") RefundAudit refundAudit);
}
diff --git a/src/main/java/com/example/demo/mapper/ConsumeMapper.java b/src/main/java/com/example/demo/mapper/ConsumeMapper.java
index 489028a..fd6bf53 100644
--- a/src/main/java/com/example/demo/mapper/ConsumeMapper.java
+++ b/src/main/java/com/example/demo/mapper/ConsumeMapper.java
@@ -23,4 +23,6 @@ public interface ConsumeMapper {
List selectBy(ConsumeUser consumeUser);
void add(UserGoldRecord userGoldRecord);
+
+ void updateIsRefund(String orderCode);
}
diff --git a/src/main/java/com/example/demo/mapper/RefundMapper.java b/src/main/java/com/example/demo/mapper/RefundMapper.java
index fd6c184..3f8f14c 100644
--- a/src/main/java/com/example/demo/mapper/RefundMapper.java
+++ b/src/main/java/com/example/demo/mapper/RefundMapper.java
@@ -24,4 +24,9 @@ public interface RefundMapper {
List selectBy(RefundUser refundUser);
void add(UserGoldRecord userGoldRecord);
+
+ List getRefundType();
+
+ List selectGoods(Integer jwcode);
+
}
diff --git a/src/main/java/com/example/demo/service/AuditService.java b/src/main/java/com/example/demo/service/AuditService.java
index ca524e9..36107e2 100644
--- a/src/main/java/com/example/demo/service/AuditService.java
+++ b/src/main/java/com/example/demo/service/AuditService.java
@@ -1,5 +1,10 @@
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
* @ClassName AuditService
@@ -11,4 +16,12 @@ package com.example.demo.service;
public interface AuditService {
+ //审核订单并修改用户余额等
+ boolean auditOrder(String token, String orderCode, Integer auditId,Integer action,String rejectReason);
+ //多条件查询充值审核订单
+ PageInfo selectRechargeBy(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit);
+ //多条件查询退款审核订单
+ PageInfo selectRefundBy(Integer pageNum, Integer pageSize, RefundAudit refundAudit);
+ //金币合计数
+ Gold sumRechargeGold();
}
diff --git a/src/main/java/com/example/demo/service/RefundService.java b/src/main/java/com/example/demo/service/RefundService.java
index 40e0b25..f8cbb41 100644
--- a/src/main/java/com/example/demo/service/RefundService.java
+++ b/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.github.pagehelper.PageInfo;
+import java.util.List;
+
/**
* @program: gold-java
* @ClassName RefundService
@@ -25,4 +27,9 @@ public interface RefundService {
PageInfo selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser);
Result add(RefundUser refundUser);
+
+ //获取退款类型
+ List getRefundType();
+
+ List selectGoods(Integer jwcode);
}
diff --git a/src/main/java/com/example/demo/service/WorkbenchService.java b/src/main/java/com/example/demo/service/WorkbenchService.java
index 30fad16..c66e860 100644
--- a/src/main/java/com/example/demo/service/WorkbenchService.java
+++ b/src/main/java/com/example/demo/service/WorkbenchService.java
@@ -18,7 +18,7 @@ import java.util.List;
public interface WorkbenchService {
//获取不同地区的工作台统计卡片
- WorkbenchCard getCard(String token, List markets);
+ WorkbenchCard getCard(String token);
//获取不同地区的工作台柱状图数据(根据类型,起止时间,地区查询)
WorkbenchCard getGraph(String token, Date startDate, Date endDate, List markets);
//根据类型获取年初至今的统计数据
diff --git a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java
index 19b30c0..8019806 100644
--- a/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java
+++ b/src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java
@@ -1,6 +1,18 @@
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.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
@@ -11,6 +23,96 @@ import com.example.demo.service.AuditService;
* @Version 1.0
**/
-
+@Service
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 selectRechargeBy(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit) {
+ PageHelper.startPage(pageNum, pageSize);
+
+ List rechargeAudits = auditMapper.selectRechargeBy(pageNum, pageSize, rechargeAudit);
+ return new PageInfo<>(rechargeAudits);
+ }
+
+ @Override
+ public PageInfo selectRefundBy(Integer pageNum, Integer pageSize, RefundAudit refundAudit) {
+ PageHelper.startPage(pageNum, pageSize);
+
+ List refundAudits = auditMapper.selectRefundBy(pageNum, pageSize, refundAudit);
+
+ return new PageInfo<>(refundAudits);
+ }
+ /*
+ 金币合计数
+ */
+ @Override
+ public Gold sumRechargeGold() {
+ Gold gold = new Gold();
+ //获取充值审核订单列表
+ List rechargeAudits = auditMapper.selectRechargeBy(1, 1000, null);
+ return null;
+ }
}
diff --git a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
index 7fb3df7..7faf332 100644
--- a/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
+++ b/src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
@@ -1,5 +1,6 @@
package com.example.demo.serviceImpl;
+import com.example.demo.Util.GoldTistV2;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.UserGoldRecord;
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.stereotype.Service;
+import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@@ -158,6 +160,10 @@ public class ConsumeServiceImpl implements ConsumeService {
user.setConsumeNum(gold.getConsumeNum() + 1);
user.setSumConsume(consumeUser.getPermanentGold() + consumeUser.getFreeGold() + consumeUser.getTaskGold());
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();
}
}
diff --git a/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java
index 200f391..2269d4a 100644
--- a/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java
+++ b/src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java
@@ -1,5 +1,6 @@
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.Gold;
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.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.concurrent.atomic.AtomicInteger;
/**
* @program: gold-java
@@ -31,7 +38,7 @@ public class RefundServiceImpl implements RefundService {
private RefundMapper refundMapper;
@Autowired
- private UserMapper userMapper;
+ private ConsumeMapper consumeMapper;
@Override
public PageInfo selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) {
@@ -83,6 +90,80 @@ public class RefundServiceImpl implements RefundService {
@Override
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 getRefundType() {
+ List list = refundMapper.getRefundType();
+ return list;
+ }
+
+ @Override
+ public List selectGoods(Integer jwcode) {
+ List refundUsers = refundMapper.selectGoods(jwcode);
+ List 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;
}
}
diff --git a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java
index b311ed8..8e346db 100644
--- a/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java
+++ b/src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java
@@ -68,7 +68,17 @@ public class StatisticsServiceImpl implements StatisticsService {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, -7); // 一周前
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 dateList =generalService.getAllDatesBetween(startDate, endDate);
diff --git a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java
index 669e4ee..9dad75b 100644
--- a/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java
+++ b/src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java
@@ -39,7 +39,7 @@ public class WorkbenchServiceImpl implements WorkbenchService {
@Autowired
private StatisticsMapper statisticsMapper;
@Override
- public WorkbenchCard getCard(String token, List markets) {
+ public WorkbenchCard getCard(String token) {
Date date=new Date();
// 获取开始时间和结束时间(当天)
LocalDateTime startOfDay = date.toInstant()
@@ -53,7 +53,7 @@ public class WorkbenchServiceImpl implements WorkbenchService {
// 获取当前年份的第一天
LocalDate firstDayOfYear = today.withDayOfYear(1);
Date yearlyStartDate=Date.from(firstDayOfYear.atStartOfDay(ZoneId.systemDefault()).toInstant());
-
+ List markets = generalService.getMarket();
List marketCards = new ArrayList<>();
// 遍历每个 marketCard 并填充数据
for (String market : markets) {
@@ -95,7 +95,7 @@ public class WorkbenchServiceImpl implements WorkbenchService {
int totalConsume = card.getConsumePermanent() + card.getConsumeFreeJune() + card.getConsumeFreeDecember() + card.getConsumeTask();
//当日总退款
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.setYearlyRefund(calculateSum(market, "refund",yearlyStartDate ,date));//年累计退款
card.setYearlyReduce(card.getYearlyConsume() - card.getYearlyRefund());//年累计消耗
diff --git a/src/main/resources/mapper/AuditMapper.xml b/src/main/resources/mapper/AuditMapper.xml
index f6453a2..71dd88c 100644
--- a/src/main/resources/mapper/AuditMapper.xml
+++ b/src/main/resources/mapper/AuditMapper.xml
@@ -1,5 +1,108 @@
+
+
+ update user_gold_record
+ set audit_id = #{auditId},
+ audit_status = #{auditStatus},
+ reject_reason = #{rejectReason}
+ where order_code = #{orderCode}
+
+
+
+ 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 user_gold_record
+ set is_refund = 1
+ where order_code = #{orderCode}
+
+
+
+
+
+
+
diff --git a/src/main/resources/mapper/ConsumeMapper.xml b/src/main/resources/mapper/ConsumeMapper.xml
index 0098af5..c0d4592 100644
--- a/src/main/resources/mapper/ConsumeMapper.xml
+++ b/src/main/resources/mapper/ConsumeMapper.xml
@@ -171,4 +171,15 @@
#{payTime}
+
+
+ UPDATE user_gold_record
+ SET is_refund = 1
+
+ order_code = #{orderCode}
+
+ AND is_refund != 0
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/RechargeMapper.xml b/src/main/resources/mapper/RechargeMapper.xml
index 5bec492..e8405f8 100644
--- a/src/main/resources/mapper/RechargeMapper.xml
+++ b/src/main/resources/mapper/RechargeMapper.xml
@@ -19,7 +19,7 @@
ugr.remark AS remark,
ugr.admin_id AS adminId,
a.admin_name AS adminName,
- ugr.create_time AS createTime
+ ugr.pay_time AS payTime
FROM user u
JOIN user_gold_record ugr ON u.jwcode = ugr.jwcode
JOIN admin a ON ugr.admin_id = a.id
@@ -35,9 +35,9 @@
ugr.permanent_gold
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))
- ugr.create_time
+ ugr.pay_time
- ugr.create_time
+ ugr.pay_time
@@ -55,7 +55,7 @@
- ugr.create_time DESC
+ ugr.pay_time DESC
@@ -78,7 +78,7 @@
ugr.remark AS remark,
ugr.admin_id AS adminId,
a.admin_name AS adminName,
- ugr.create_time AS createTime
+ ugr.pay_time AS payTime
FROM user u
JOIN user_gold_record ugr ON u.jwcode = ugr.jwcode
JOIN admin a ON ugr.admin_id = a.id
@@ -98,7 +98,7 @@
AND ugr.pay_platform = #{payPlatform}
- AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
+ AND ugr.pay_time BETWEEN #{startTime} AND #{endTime}
@@ -108,11 +108,12 @@
ugr.permanent_gold
+ ugr.money
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0))
- ugr.create_time
+ ugr.pay_time
- ugr.create_time
+ ugr.pay_time
@@ -130,7 +131,7 @@
- ugr.create_time DESC
+ ugr.pay_time DESC
diff --git a/src/main/resources/mapper/RefundMapper.xml b/src/main/resources/mapper/RefundMapper.xml
index 2e70fec..faa99a7 100644
--- a/src/main/resources/mapper/RefundMapper.xml
+++ b/src/main/resources/mapper/RefundMapper.xml
@@ -7,6 +7,7 @@
SELECT u.name AS name,
u.jwcode AS jwcode,
u.market AS market,
+ ugr.order_code AS orderCode,
ugr.goods_name AS goodsName,
ugr.refund_model AS refundModel,
ugr.refund_type AS refundType,
@@ -64,6 +65,7 @@
SELECT u.name AS name,
u.jwcode AS jwcode,
u.market AS market,
+ ugr.order_code AS orderCode,
ugr.goods_name AS goodsName,
ugr.refund_model AS refundModel,
ugr.refund_type AS refundType,
@@ -138,37 +140,64 @@
order_code,
jwcode,
+ refund_type,
+ refund_model,
sum_gold,
permanent_gold,
free_june,
free_december,
task_gold,
goods_name,
+ pay_platform,
remark,
type,
- pay_platform,
- is_refund,
admin_id,
- create_time,
- pay_time
+ audit_status,
+ create_time
VALUES
#{orderCode},
#{jwcode},
+ #{refundType},
+ #{refundModel},
#{sumGold},
#{permanentGold},
#{freeJune},
#{freeDecember},
#{taskGold},
#{goodsName},
+ #{payPlatform},
#{remark},
#{type},
- #{payPlatform},
- #{isRefund},
#{adminId},
- #{createTime},
- #{payTime}
+ #{auditStatus},
+ #{createTime}
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/StatisticsMapper.xml b/src/main/resources/mapper/StatisticsMapper.xml
index 76dda9d..700ed65 100644
--- a/src/main/resources/mapper/StatisticsMapper.xml
+++ b/src/main/resources/mapper/StatisticsMapper.xml
@@ -27,13 +27,13 @@
market, current_datetime,
current_gold, daily_change,
current_permanent, current_free_june,
- current_free_december, current_task,
+ current_free_december, current_task
) VALUES (
#{market}, #{currentDatetime},
#{currentGold}, #{dailyChange},
#{currentPermanent}, #{currentFreeJune},
- #{currentFreeDecember}, #{currentTask},
+ #{currentFreeDecember}, #{currentTask}
)