11 Commits

  1. 21
      src/main/java/com/example/demo/controller/AuditController.java
  2. 14
      src/main/java/com/example/demo/controller/ConsumeController.java
  3. 6
      src/main/java/com/example/demo/controller/GeneralController.java
  4. 93
      src/main/java/com/example/demo/controller/RechargeController.java
  5. 35
      src/main/java/com/example/demo/controller/RefundController.java
  6. 3
      src/main/java/com/example/demo/domain/vo/ConsumeUser.java
  7. 1
      src/main/java/com/example/demo/domain/vo/Gold.java
  8. 1
      src/main/java/com/example/demo/domain/vo/Page.java
  9. 51
      src/main/java/com/example/demo/domain/vo/RechargeUser.java
  10. 5
      src/main/java/com/example/demo/domain/vo/RefundAudit.java
  11. 4
      src/main/java/com/example/demo/domain/vo/RefundUser.java
  12. 2
      src/main/java/com/example/demo/mapper/AuditMapper.java
  13. 2
      src/main/java/com/example/demo/mapper/ConsumeMapper.java
  14. 1
      src/main/java/com/example/demo/mapper/GeneralMapper.java
  15. 27
      src/main/java/com/example/demo/mapper/RechargeMapper.java
  16. 7
      src/main/java/com/example/demo/mapper/RefundMapper.java
  17. 6
      src/main/java/com/example/demo/service/AuditService.java
  18. 4
      src/main/java/com/example/demo/service/ConsumeService.java
  19. 3
      src/main/java/com/example/demo/service/GeneralService.java
  20. 26
      src/main/java/com/example/demo/service/RechargeService.java
  21. 11
      src/main/java/com/example/demo/service/RefundService.java
  22. 2
      src/main/java/com/example/demo/service/StatisticsService.java
  23. 3
      src/main/java/com/example/demo/service/WorkbenchService.java
  24. 103
      src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java
  25. 34
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  26. 7
      src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java
  27. 131
      src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java
  28. 103
      src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java
  29. 2
      src/main/java/com/example/demo/serviceImpl/StatisticsServiceImpl.java
  30. 77
      src/main/java/com/example/demo/serviceImpl/WorkbenchServiceImpl.java
  31. 6
      src/main/resources/mapper/AuditMapper.xml
  32. 102
      src/main/resources/mapper/ConsumeMapper.xml
  33. 3
      src/main/resources/mapper/GeneralMapper.xml
  34. 183
      src/main/resources/mapper/RechargeMapper.xml
  35. 112
      src/main/resources/mapper/RefundMapper.xml
  36. 5
      src/main/resources/mapper/StatisticsMapper.xml

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

@ -1,9 +1,6 @@
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.domain.vo.*;
import com.example.demo.service.AuditService;
import com.github.pagehelper.PageInfo;
import lombok.RequiredArgsConstructor;
@ -59,4 +56,20 @@ public class AuditController {
return auditService.selectRefundBy(pageNum, pageSize, refundAudit);
}
//充值审核合计数
@PostMapping("sumRechargeGold")
public Gold sumRechargeGold(@RequestBody Page page) {
Integer pageNum = page.getPageNum();
Integer pageSize = page.getPageSize();
RechargeAudit rechargeAudit = page.getRechargeAudit();
return auditService.sumRechargeGold(pageNum, pageSize, rechargeAudit);
}
//退款审核合计数
@PostMapping("sumRefundGold")
public Gold sumRefundGold(@RequestBody Page page) {
Integer pageNum = page.getPageNum();
Integer pageSize = page.getPageSize();
RefundAudit refundAudit = page.getRefundAudit();
return auditService.sumRefundGold(pageNum, pageSize, refundAudit);
}
}

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

@ -41,7 +41,7 @@ public class ConsumeController {
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(consumeService.selectAll(page.getPageNum(), page.getPageSize()));
return Result.success(consumeService.selectAll(page.getPageNum(), page.getPageSize(),page.getConsumeUser()));
}
} catch (Exception e) {
return Result.error("接口调用失败");
@ -50,6 +50,7 @@ public class ConsumeController {
}
//消耗明细筛选
@PostMapping("/selectBy")
public Result selcetBy(@RequestBody Page page) {
@ -70,9 +71,9 @@ public class ConsumeController {
//消耗金币统计
@PostMapping("/statsGold")
public Result statsGold() {
public Result statsGold(@RequestBody ConsumeUser consumeUser) {
try {
Gold gold = consumeService.statsGold();
Gold gold = consumeService.statsGold(consumeUser);
return Result.success(gold);
} catch (Exception e) {
return Result.error("接口调用失败");
@ -84,6 +85,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("接口调用失败");
}

6
src/main/java/com/example/demo/controller/GeneralController.java

@ -47,4 +47,10 @@ public class GeneralController {
List<String> list = generalService.getGoods();
return Result.success(list);
}
@PostMapping("/activity")
public Result getActivity()
{
List<String> list = generalService.getActivity();
return Result.success(list);
}
}

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

@ -0,0 +1,93 @@
package com.example.demo.controller;
import com.example.demo.domain.vo.*;
import com.example.demo.service.ConsumeService;
import com.example.demo.service.RechargeService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
/**
* @program: gold-java
* @ClassName RechargeController
* @description:
* @author: Double
* @create: 202506-29 13:01
* @Version 1.0
**/
@RestController
@RequestMapping("/recharge")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class RechargeController {
@Autowired
private RechargeService rechargeService;
//消耗明细
@PostMapping("/selectAll")
public Result selcetAll(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(rechargeService.selectAll(page.getPageNum(), page.getPageSize(),page.getRechargeUser()));
}
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
//消耗明细筛选
@PostMapping("/selectBy")
public Result selcetBy(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(rechargeService.selectBy(page.getPageNum(), page.getPageSize(), page.getRechargeUser()));
}
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
//消耗金币统计
@PostMapping("/statsGold")
public Result statsGold(@RequestBody RechargeUser rechargeUser) {
try {
Gold gold = rechargeService.statsGold(rechargeUser);
return Result.success(gold);
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
//充值金币增加
@PostMapping("/add")
public Result add(@RequestBody RechargeUser rechargeUser) {
try {
return rechargeService.add(rechargeUser);
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
}

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

@ -1,8 +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.Result;
import com.example.demo.domain.vo.*;
import com.example.demo.service.ConsumeService;
import com.example.demo.service.RefundService;
import lombok.RequiredArgsConstructor;
@ -11,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
@ -40,7 +40,7 @@ public class RefundController {
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(refundService.selectAll(page.getPageNum(), page.getPageSize()));
return Result.success(refundService.selectAll(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
}
} catch (Exception e) {
return Result.error("接口调用失败");
@ -66,13 +66,36 @@ public class RefundController {
}
@PostMapping("/statsGold")
public Result statsGold() {
public Result statsGold(@RequestBody RefundUser refundUser) {
try {
Gold gold = refundService.statsGold();
Gold gold = refundService.statsGold(refundUser);
return Result.success(gold);
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
@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("接口调用失败");
}
}
}

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

@ -43,4 +43,7 @@ public class ConsumeUser implements Serializable {
private Date startTime; // 开始时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
private String sortField; //排序字段
private String sortOrder; //排序顺序
}

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

@ -20,6 +20,7 @@ import java.io.Serializable;
@AllArgsConstructor
public class Gold implements Serializable {
private static final long serialVersionUID = 1L;
private Integer totalNum; //总条数
private Integer permanentGolds; // 永久金币总数
private Integer freeGolds; // 免费金币总数
private Integer taskGolds; // 任务金币总数

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

@ -26,4 +26,5 @@ public class Page {
private Permission permission;
private RechargeAudit rechargeAudit;
private RefundAudit refundAudit;
private RechargeUser rechargeUser;
}

51
src/main/java/com/example/demo/domain/vo/RechargeUser.java

@ -0,0 +1,51 @@
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 Recharge
* @description:
* @author: Double
* @create: 202506-29 13:18
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RechargeUser {
private static final long serialVersionUID = 1L;
private String name; // 客户姓名
private Integer jwcode; // 精网号
private String market; // 所属地区
private String activity; // 活动名称
private Integer rateId; // 汇率ID
private String rateName; // 汇率名称
private Integer money; // 金额[]
private Integer permanentGold; // 永久金币
private Integer freeGold; // 免费金币
private String payModel; // 支付方式
private String payPlatform; // 支付平台
private String voucher; // 支付凭证
private String remark; // 备注
private Integer adminId; //提交人Id
private String adminName; //提交人姓名
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date payTime; // 创建时间
@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; // 结束时间
private String sortField; //排序字段
private String sortOrder; //排序顺序
}

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

@ -25,16 +25,15 @@ public class RefundAudit {
private Integer jwcode; // 精网号
private String orderCode; // 订单号
private String market; // 所属地区
private Byte refundModel; // 退款方式-全额 部分
private Integer refundModel; // 退款方式-全额 部分
private String goodsName; // 商品名称
private Integer sumGold; // 退款金额
private Integer permanentGold; // 永久金币
private Integer freeGold; // 免费金币
private Integer freeJune; // 6月免费金币
private Integer freeDecember; // 12月免费金币
private Integer taskGold; // 任务金币
private String remark; // 备注
private String payModel; //支付方式
private String voucher; //支付凭证
private Integer adminId; //提交人Id
private String adminName; //提交人姓名
private String auditStatus; //审核状态

4
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; // 所属地区
@ -43,4 +44,7 @@ public class RefundUser {
private Date startTime; // 开始时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
private String sortField; //排序字段
private String sortOrder; //排序顺序
}

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

@ -28,7 +28,7 @@ public interface AuditMapper {
//修改用户余额
int updateUserGold(User user);
//修改消费订单为以退款
int updateOrderRefund(String orderCode);
int updateOrderRefund(String orderCode ,Byte isRefund);
//多条件查询充值审核订单
List<RechargeAudit> selectRechargeBy(@Param("pageNum") Integer pageNum,
@Param("pageSize") Integer pageSize,

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

@ -18,7 +18,7 @@ import java.util.List;
@Mapper
public interface ConsumeMapper {
List<ConsumeUser> selectAll();
List<ConsumeUser> selectAll(ConsumeUser consumeUser);
List<ConsumeUser> selectBy(ConsumeUser consumeUser);

1
src/main/java/com/example/demo/mapper/GeneralMapper.java

@ -17,4 +17,5 @@ public interface GeneralMapper {
List<String> getMarket();
List<String> getPlatform();
List<String> getGoods();
List<String> getActivity();
}

27
src/main/java/com/example/demo/mapper/RechargeMapper.java

@ -0,0 +1,27 @@
package com.example.demo.mapper;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.RechargeUser;
import com.example.demo.domain.vo.RefundUser;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @program: gold-java
* @ClassName RechargeMapper
* @description:
* @author: Double
* @create: 202506-29 13:41
* @Version 1.0
**/
@Mapper
public interface RechargeMapper {
List<RechargeUser> selectAll(RechargeUser rechargeUser);
List<RechargeUser> selectBy(RechargeUser rechargeUser);
void add(UserGoldRecord userGoldRecord);
}

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

@ -19,9 +19,14 @@ import java.util.List;
@Mapper
public interface RefundMapper {
List<RefundUser> selectAll();
List<RefundUser> selectAll(RefundUser refundUser);
List<RefundUser> selectBy(RefundUser refundUser);
void add(UserGoldRecord userGoldRecord);
List<String> getRefundType();
List<RefundUser> selectGoods(Integer jwcode);
}

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

@ -22,6 +22,8 @@ public interface AuditService {
PageInfo<RechargeAudit> selectRechargeBy(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit);
//多条件查询退款审核订单
PageInfo<RefundAudit> selectRefundBy(Integer pageNum, Integer pageSize, RefundAudit refundAudit);
//金币合计数
Gold sumRechargeGold();
//充值审核金币合计数
Gold sumRechargeGold(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit);
//退款审核金币合计数
Gold sumRefundGold(Integer pageNum, Integer pageSize,RefundAudit refundAudit);
}

4
src/main/java/com/example/demo/service/ConsumeService.java

@ -18,9 +18,9 @@ import com.github.pagehelper.PageInfo;
public interface ConsumeService {
PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize);
PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize, ConsumeUser consumeUser);
Gold statsGold();
Gold statsGold(ConsumeUser consumeUser);
PageInfo<ConsumeUser> selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser);

3
src/main/java/com/example/demo/service/GeneralService.java

@ -20,7 +20,10 @@ public interface GeneralService {
List<String> getMarket();
//获取平台
List<String> getPlatform();
//获取商品
List<String> getGoods();
//获取活动
List<String> getActivity();
//获取昨天的日期
Date getYesterday();
//获取某天的开始时间(00:00:00)

26
src/main/java/com/example/demo/service/RechargeService.java

@ -0,0 +1,26 @@
package com.example.demo.service;
import com.example.demo.domain.vo.ConsumeUser;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.RechargeUser;
import com.example.demo.domain.vo.Result;
import com.github.pagehelper.PageInfo;
/**
* @program: gold-java
* @ClassName RechargeService
* @description:
* @author: Double
* @create: 202506-29 13:39
* @Version 1.0
**/
public interface RechargeService {
PageInfo<RechargeUser> selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser);
Gold statsGold(RechargeUser rechargeUser);
PageInfo<RechargeUser> selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser);
Result add(RechargeUser rechargeUser);
}

11
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
@ -18,11 +20,16 @@ import com.github.pagehelper.PageInfo;
public interface RefundService {
PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize);
PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser);
Gold statsGold();
Gold statsGold(RefundUser refundUser);
PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser);
Result add(RefundUser refundUser);
//获取退款类型
List<String> getRefundType();
List<RefundUser> selectGoods(Integer jwcode);
}

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

@ -15,7 +15,7 @@ import java.util.Date;
public interface StatisticsService {
//12点18点,23点30分执行定时任务更新当天part2数据
//112点18点,23点30分执行定时任务更新当天part1数据
public void runHourlyTaskPart1();
//12点18点执行定时任务更新当天part2数据
public void runHourlyTaskPart2();

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

@ -1,5 +1,6 @@
package com.example.demo.service;
import com.example.demo.domain.entity.Statistics;
import com.example.demo.domain.vo.WorkbenchCard;
import com.example.demo.domain.vo.WorkbenchMarketCard;
@ -19,6 +20,8 @@ import java.util.List;
public interface WorkbenchService {
//获取不同地区的工作台统计卡片
WorkbenchCard getCard(String token);
//获取卡片数据
WorkbenchMarketCard createWorkbenchMarketCard(String market, Statistics statistics, Date yearlyStartDate, Date currentDate);
//获取不同地区的工作台柱状图数据根据类型起止时间地区查询
WorkbenchCard getGraph(String token, Date startDate, Date endDate, List<String> markets);
//根据类型获取年初至今的统计数据

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

@ -12,6 +12,7 @@ import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
@ -44,10 +45,22 @@ public class AuditServiceImpl implements AuditService {
if (action==2){ //驳回
updateOrder.setAuditStatus(2);
updateOrder.setRejectReason(rejectReason);
updateOrder.setAuditTime(new Date());
auditMapper.updateOrder(updateOrder);
return true;
if (order.getType()==2) { //退款
//2.获取对应的消费订单退款订单号去掉开头"TK"即为对应消费订单
String consumeOrderCode = order.getOrderCode().replaceFirst("TK", "");
//3.更新消费订单是否已退款状态为0
UserGoldRecord consumeOrder = auditMapper.selectOrderByOrderCode(consumeOrderCode);
if (consumeOrderCode != null&&consumeOrder.getType()==1){ //确保是消费订单
auditMapper.updateOrderRefund(consumeOrderCode,(byte)0);
}else {
throw new IllegalArgumentException("找不到对应的订单或不是有效订单");
}
}
}else if (action==1) { //通过
updateOrder.setAuditStatus(1);
updateOrder.setAuditTime(new Date());
}
// 执行审核更新
auditMapper.updateOrder(updateOrder);
@ -66,23 +79,16 @@ public class AuditServiceImpl implements AuditService {
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;
}
@ -94,25 +100,88 @@ public class AuditServiceImpl implements AuditService {
PageHelper.startPage(pageNum, pageSize);
List<RechargeAudit> rechargeAudits = auditMapper.selectRechargeBy(pageNum, pageSize, rechargeAudit);
// rechargeAudit.setFreeGold(rechargeAudit.getFreeJune()+rechargeAudit.getFreeDecember());
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);
//refundAudit.setFreeGold(refundAudit.getFreeJune()+refundAudit.getFreeDecember());
return new PageInfo<>(refundAudits);
}
/*
金币合计数
充值审核金币合计数
*/
@Override
public Gold sumRechargeGold() {
public Gold sumRechargeGold(Integer pageNum, Integer pageSize, RechargeAudit rechargeAudit) {
Gold gold = new Gold();
//获取充值审核订单列表
List<RechargeAudit> rechargeAudits = auditMapper.selectRechargeBy(1, 1000, null);
return null;
List<RechargeAudit> rechargeAudits = auditMapper.selectRechargeBy(1, 500000, rechargeAudit);
// 初始化累加器
int totalNum=0;
int permanentGoldSum = 0;
int freeGoldSum = 0;
// 遍历消费记录并累加金币
for (RechargeAudit recharge : rechargeAudits) {
// 累加永久金币
if (recharge.getPermanentGold() != null) {
permanentGoldSum += recharge.getPermanentGold();
}
// 累加免费金币
if (recharge.getFreeJune() != null||recharge.getFreeDecember() != null) {
freeGoldSum = freeGoldSum+recharge.getFreeJune()+recharge.getFreeDecember();
}
// 每遍历一条记录总条数加1
totalNum++;
}
// 将累加结果设置到Gold对象
gold.setPermanentGolds(permanentGoldSum);
gold.setFreeGolds(freeGoldSum);
gold.setTotalNum(totalNum);
return gold;
}
/*
退款审核合计数
*/
@Override
public Gold sumRefundGold(Integer pageNum, Integer pageSize, RefundAudit refundAudit) {
Gold gold = new Gold();
//获取充值审核订单列表
List<RefundAudit> refundAudits = auditMapper.selectRefundBy(1, 500000, refundAudit);
// 初始化累加器
int totalNum=0;
int permanentGoldSum = 0;
int freeGoldSum = 0;
int taskGoldSum = 0;
// 遍历消费记录并累加金币
for (RefundAudit refund : refundAudits) {
// 累加永久金币
if (refund.getPermanentGold() != null) {
permanentGoldSum += refund.getPermanentGold();
}
// 累加免费金币
if (refund.getFreeJune() != null||refund.getFreeDecember()!=null) {
freeGoldSum += refund.getFreeJune()+refund.getFreeDecember();
}
//累加任务金币
if(refund.getTaskGold()!=null)
taskGoldSum+=refund.getTaskGold();
// 每遍历一条记录总条数加1
totalNum++;
}
// 将累加结果设置到Gold对象
gold.setPermanentGolds(permanentGoldSum);
gold.setFreeGolds(freeGoldSum);
gold.setTotalNum(totalNum);
gold.setTaskGolds(taskGoldSum);
return gold;
}
}

34
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;
@ -42,17 +44,17 @@ public class ConsumeServiceImpl implements ConsumeService {
//消耗明细
@Override
public PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize) {
public PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize, ConsumeUser consumeUser) {
PageHelper.startPage(pageNum, pageSize);
List<ConsumeUser> consumeUsers = consumeMapper.selectAll();
List<ConsumeUser> consumeUsers = consumeMapper.selectAll(consumeUser);
return new PageInfo<>(consumeUsers);
}
//消耗金币统计
@Override
public Gold statsGold() {
public Gold statsGold(ConsumeUser consumeUser) {
Gold gold = new Gold();
List<ConsumeUser> consumeUsers = consumeMapper.selectAll();
List<ConsumeUser> consumeUsers = consumeMapper.selectBy(consumeUser);
// 初始化累加器
int permanentGoldSum = 0;
@ -60,18 +62,18 @@ public class ConsumeServiceImpl implements ConsumeService {
int taskGoldSum = 0;
// 遍历消费记录并累加金币
for (ConsumeUser consumeUser : consumeUsers) {
for (ConsumeUser user : consumeUsers) {
// 累加永久金币
if (consumeUser.getPermanentGold() != null) {
permanentGoldSum += consumeUser.getPermanentGold();
if (user.getPermanentGold() != null) {
permanentGoldSum += user.getPermanentGold();
}
// 累加免费金币
if (consumeUser.getFreeGold() != null) {
freeGoldSum += consumeUser.getFreeGold();
if (user.getFreeGold() != null) {
freeGoldSum += user.getFreeGold();
}
// 累加任务金币
if (consumeUser.getTaskGold() != null) {
taskGoldSum += consumeUser.getTaskGold();
if (user.getTaskGold() != null) {
taskGoldSum += user.getTaskGold();
}
}
@ -105,12 +107,9 @@ public class ConsumeServiceImpl implements ConsumeService {
int count = atomicInteger.getAndUpdate(c -> (c >= 999) ? 0 : c + 1);
String counterPart = String.format("%03d", count);
// 生成随机数部分四位数
Random RANDOM = new Random();
int randomNum = RANDOM.nextInt(9000) + 1000;
//订单号生成
userGoldRecord.setOrderCode(timestampPart + counterPart + randomNum);
userGoldRecord.setOrderCode("XF" + timestampPart + counterPart);
userGoldRecord.setJwcode(consumeUser.getJwcode());
userGoldRecord.setGoodsName(consumeUser.getGoodsName());
userGoldRecord.setSumGold(consumeUser.getSumGold());
@ -148,6 +147,7 @@ public class ConsumeServiceImpl implements ConsumeService {
userGoldRecord.setIsRefund((byte) 0);
userGoldRecord.setPayPlatform("金币系统");
userGoldRecord.setAdminId(consumeUser.getAdminId());
userGoldRecord.setAuditStatus(1);
userGoldRecord.setCreateTime(new Date());
userGoldRecord.setPayTime(new Date());
consumeMapper.add(userGoldRecord);
@ -160,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();
}
}

7
src/main/java/com/example/demo/serviceImpl/GeneralServiceImpl.java

@ -45,6 +45,13 @@ public class GeneralServiceImpl implements GeneralService {
return list;
}
@Override
public List<String> getActivity() {
List<String> list = generalMapper.getActivity();
return list;
}
/*
获取昨天的日期
*/

131
src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java

@ -0,0 +1,131 @@
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.*;
import com.example.demo.mapper.ConsumeMapper;
import com.example.demo.mapper.RechargeMapper;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.RechargeService;
import com.github.pagehelper.PageHelper;
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.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @program: gold-java
* @ClassName RechrageServceImpl
* @description:
* @author: Double
* @create: 202506-29 13:40
* @Version 1.0
**/
@Service
public class RechargeServiceImpl implements RechargeService {
@Autowired
private RechargeMapper rechargeMapper;
@Autowired
private UserMapper userMapper;
@Override
public PageInfo<RechargeUser> selectAll(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) {
PageHelper.startPage(pageNum, pageSize);
List<RechargeUser> rechargeUsers = rechargeMapper.selectAll(rechargeUser);
return new PageInfo<>(rechargeUsers);
}
@Override
public PageInfo<RechargeUser> selectBy(Integer pageNum, Integer pageSize, RechargeUser rechargeUser) {
PageHelper.startPage(pageNum, pageSize);
List<RechargeUser> rechargeUsers = rechargeMapper.selectBy(rechargeUser);
return new PageInfo<>(rechargeUsers);
}
@Override
public Gold statsGold(RechargeUser rechargeUser) {
Gold gold = new Gold();
List<RechargeUser> rechargeUsers = rechargeMapper.selectBy(rechargeUser);
// 初始化累加器
int permanentGoldSum = 0;
int freeGoldSum = 0;
// 遍历充值记录并累加金币
for (RechargeUser user : rechargeUsers) {
// 累加永久金币
if (user.getPermanentGold() != null) {
permanentGoldSum += user.getPermanentGold();
}
// 累加免费金币
if (user.getFreeGold() != null) {
freeGoldSum += user.getFreeGold();
}
}
// 将累加结果设置到Gold对象
gold.setPermanentGolds(permanentGoldSum);
gold.setFreeGolds(freeGoldSum);
return gold;
}
@Override
public Result add(RechargeUser rechargeUser) {
UserGoldRecord userGoldRecord = new UserGoldRecord();
// 获取当前时间戳部分
String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
// 获取自增计数器部分三位数不足补零
AtomicInteger atomicInteger = new AtomicInteger(0);
int count = atomicInteger.getAndUpdate(c -> (c >= 999) ? 0 : c + 1);
String counterPart = String.format("%03d", count);
//订单号生成
userGoldRecord.setOrderCode("CZ" + timestampPart + counterPart);
userGoldRecord.setJwcode(rechargeUser.getJwcode());
userGoldRecord.setActivity(rechargeUser.getActivity());
userGoldRecord.setPermanentGold(rechargeUser.getPermanentGold());
// 获取当前月份1-12
int currentMonth = LocalDate.now().getMonthValue();
// 根据当前月份设置对应字段
if (currentMonth >= 1 && currentMonth <= 6) {
// 1-6月设置6月额度12月保持默认值
userGoldRecord.setFreeJune(0);
userGoldRecord.setFreeDecember(rechargeUser.getFreeGold());
} else {
// 7-12月设置12月额度6月保持默认值
userGoldRecord.setFreeJune(rechargeUser.getFreeGold());
userGoldRecord.setFreeDecember(0);
}
userGoldRecord.setSumGold(rechargeUser.getFreeGold()+rechargeUser.getPermanentGold());
userGoldRecord.setRateId(rechargeUser.getRateId());
userGoldRecord.setMoney(rechargeUser.getMoney());
userGoldRecord.setVoucher(rechargeUser.getVoucher());
userGoldRecord.setPayPlatform("金币系统");
userGoldRecord.setPayModel(rechargeUser.getPayModel());
userGoldRecord.setPayTime(rechargeUser.getPayTime());
userGoldRecord.setRemark(rechargeUser.getRemark());
userGoldRecord.setAdminId(rechargeUser.getAdminId());
userGoldRecord.setType((byte) 0);
userGoldRecord.setAuditStatus(0);
userGoldRecord.setCreateTime(new Date());
rechargeMapper.add(userGoldRecord);
return Result.success();
}
}

103
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
@ -34,16 +41,16 @@ public class RefundServiceImpl implements RefundService {
private UserMapper userMapper;
@Override
public PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize) {
public PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize, RefundUser refundUser) {
PageHelper.startPage(pageNum, pageSize);
List<RefundUser> refundUsers = refundMapper.selectAll();
List<RefundUser> refundUsers = refundMapper.selectAll(refundUser);
return new PageInfo<>(refundUsers);
}
@Override
public Gold statsGold() {
public Gold statsGold(RefundUser refundUser) {
Gold gold = new Gold();
List<RefundUser> refundUsers = refundMapper.selectAll();
List<RefundUser> refundUsers = refundMapper.selectBy(refundUser);
// 初始化累加器
int permanentGoldSum = 0;
@ -51,18 +58,18 @@ public class RefundServiceImpl implements RefundService {
int taskGoldSum = 0;
// 遍历推开记录并累加金币
for (RefundUser refundUser : refundUsers) {
for (RefundUser user : refundUsers) {
// 累加永久金币
if (refundUser.getPermanentGold() != null) {
permanentGoldSum += refundUser.getPermanentGold();
if (user.getPermanentGold() != null) {
permanentGoldSum += user.getPermanentGold();
}
// 累加免费金币
if (refundUser.getFreeGold() != null) {
freeGoldSum += refundUser.getFreeGold();
if (user.getFreeGold() != null) {
freeGoldSum += user.getFreeGold();
}
// 累加任务金币
if (refundUser.getTaskGold() != null) {
taskGoldSum += refundUser.getTaskGold();
if (user.getTaskGold() != null) {
taskGoldSum += user.getTaskGold();
}
}
@ -83,6 +90,78 @@ public class RefundServiceImpl implements RefundService {
@Override
public Result add(RefundUser refundUser) {
return null;
UserGoldRecord userGoldRecord = new UserGoldRecord();
String goodsNameWithOrder = refundUser.getGoodsName();
//订单号生成
if (goodsNameWithOrder != null && goodsNameWithOrder.contains("_")) {
String[] parts = goodsNameWithOrder.split("_", 2);
if (parts.length >= 2) {
// 提取订单号保留原始前缀
String 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);
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;
}
}

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

@ -39,7 +39,7 @@ public class StatisticsServiceImpl implements StatisticsService {
12点18点23点30分执行定时任务更新当天part1数据
*/
@Override
@Scheduled(cron = "0 0 12,18 * * ?") // 分别在 12:00 18:00 执行
@Scheduled(cron = "0 0 1,12,18 * * ?") // 分别在 1:00 12:00 18:00 执行
@Scheduled(cron = "0 30 23 * * ?") // 23:30 执行
public void runHourlyTaskPart1() {
Date today = new Date(); //取当天日期

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

@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @program: gold-java
@ -52,10 +53,29 @@ public class WorkbenchServiceImpl implements WorkbenchService {
LocalDate today = LocalDate.now();
// 获取当前年份的第一天
LocalDate firstDayOfYear = today.withDayOfYear(1);
// 将年份的第一天日期转换为Date类型
Date yearlyStartDate=Date.from(firstDayOfYear.atStartOfDay(ZoneId.systemDefault()).toInstant());
List<String> markets = generalService.getMarket();
List<WorkbenchMarketCard> marketCards = new ArrayList<>();
// 遍历每个 marketCard 并填充数据
// 并行处理市场列表创建市场卡片列表
List<WorkbenchMarketCard> marketCards = markets.parallelStream()
// 过滤掉空或全空格的市场名称
.filter(market -> market != null && !market.trim().isEmpty())
.map(market -> {
// 根据市场名称和日期范围查询统计信息
Statistics statistics = statisticsMapper.selectByMarketAndDate(
market,
Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()),
Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant())
);
// 创建并返回市场卡片对象
return createWorkbenchMarketCard(market, statistics, yearlyStartDate, date);
})
// 收集并行流结果为列表
.collect(Collectors.toList());
return new WorkbenchCard(token, marketCards, markets, date, date);
/* List<WorkbenchMarketCard> marketCards = new ArrayList<>();
// 遍历每个 marketCard 并填充数据
for (String market : markets) {
if (market == null || market.trim().isEmpty()) continue;
@ -112,7 +132,58 @@ public class WorkbenchServiceImpl implements WorkbenchService {
}
}
return new WorkbenchCard(token, marketCards,markets,date,date);
return new WorkbenchCard(token, marketCards,markets,date,date);*/
}
/*
获取卡片数据
*/
@Override
public WorkbenchMarketCard createWorkbenchMarketCard(String market, Statistics statistics, Date yearlyStartDate, Date currentDate) {
Date date=new Date();
WorkbenchMarketCard card = new WorkbenchMarketCard();
card.setMarket(market);
if (statistics != null) {
// 卡片一当前金币相关
card.setCurrentPermanent(statistics.getCurrentPermanent());//余量-永久金币
card.setCurrentFreeJune(statistics.getCurrentFreeJune()); //余量-免费六月金币
card.setCurrentFreeDecember(statistics.getCurrentFreeDecember()); //余量-免费十二月金币
card.setCurrentTask(statistics.getCurrentTask()); //余量-任务金币
card.setCurrentFree(card.getCurrentFreeJune() + card.getCurrentFreeDecember()); //余量-免费金币
card.setCurrentGold(card.getCurrentPermanent() + card.getCurrentFree() + card.getCurrentTask()); //余量-总金币
card.setDailyChange(statistics.getDailyChange()); //较前一日变化
// 卡片二充值相关
card.setRecharge(statistics.getRecharge()); //充值-当日充值
card.setMoney(statistics.getMoney()); //充值-当日金额永久
card.setYearlyRecharge(calculateSum(market, "recharge",yearlyStartDate ,date));//充值-全年累计充值
card.setYearlyMoney(calculateSum(market, "money",yearlyStartDate ,date)); //充值-全年累计金额永久
// 卡片三消费与退款
card.setConsumePermanent(statistics.getConsumePermanent());//消费-永久金币
card.setConsumeFreeJune(statistics.getConsumeFreeJune());//消费-免费六月金币
card.setConsumeFreeDecember(statistics.getConsumeFreeDecember());//消费-免费十二月金币
card.setConsumeTask(statistics.getConsumeTask());//消费-任务金币
card.setRefundPermanent(statistics.getRefundPermanent());//退款-永久金币
card.setRefundFreeJune(statistics.getRefundFreeJune());//退款-免费六月金币
card.setRefundFreeDecember(statistics.getRefundFreeDecember());//退款-免费十二月金币
card.setRefundTask(statistics.getRefundTask());//退款-任务金币
//当日总消费
int totalConsume = card.getConsumePermanent() + card.getConsumeFreeJune() + card.getConsumeFreeDecember() + card.getConsumeTask();
//当日总退款
int totalRefund = card.getRefundPermanent() + card.getRefundFreeJune() + card.getRefundFreeDecember() + card.getRefundTask();
card.setDailyReduce(totalConsume - totalRefund);//当日总消耗
card.setYearlyConsume(calculateSum(market, "consume", yearlyStartDate,date));//年累计消费
card.setYearlyRefund(calculateSum(market, "refund",yearlyStartDate ,date));//年累计退款
card.setYearlyReduce(card.getYearlyConsume() - card.getYearlyRefund());//年累计消耗
// 卡片四人头数相关
card.setRechargeNum(statistics.getRechargeNum());
card.setFirstRecharge(statistics.getFirstRecharge());
card.setYearlyRechargeNum(calculateSum(market,"rechargeNum",yearlyStartDate,date));
// 周环比日同比
card.setWow(calculateWeekOverWeek(market, currentDate));
card.setDaily(calculateDayOverDay(market, currentDate));
}
return card;
}
@Override

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

@ -25,7 +25,7 @@
<!--修改消费订单为已退款-->
<update id="updateOrderRefund">
update user_gold_record
set is_refund = 1
set is_refund = #{isRefund}
where order_code = #{orderCode}
</update>
<!--根据订单号查订单-->
@ -82,10 +82,10 @@
LEFT JOIN admin a2 ON ugr.audit_id = a2.id
<where>
<if test="refundAudit.jwcode != null and refundAudit.jwcode != ''">
<if test="refundAudit.jwcode != null">
AND ugr.jwcode = #{refundAudit.jwcode}
</if>
<if test="refundAudit.refundModel != null and refundAudit.refundModel != ''">
<if test="refundAudit.refundModel != null ">
AND ugr.refund_model = #{refundAudit.refundModel}
</if>
<if test="refundAudit.goodsName != null and refundAudit.goodsName != ''">

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

@ -4,24 +4,58 @@
<!-- 查询所有消费记录 -->
<select id="selectAll" resultType="com.example.demo.domain.vo.ConsumeUser">
SELECT u.name AS name,
u.jwcode AS jwcode,
u.market AS market,
ugr.goods_name AS goodsName,
ugr.pay_platform AS payPlatform,
ugr.sum_gold AS sumGold,
ugr.permanent_gold AS permanentGold,
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
ugr.task_gold AS taskGold,
ugr.remark AS remark,
a.admin_name AS adminName,
ugr.create_time AS createTime
SELECT u.name AS name,
u.jwcode AS jwcode,
u.market AS market,
ugr.goods_name AS goodsName,
ugr.pay_platform AS payPlatform,
ugr.sum_gold AS sumGold,
ugr.permanent_gold AS permanentGold,
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
ugr.task_gold AS taskGold,
ugr.remark AS remark,
a.admin_name AS adminName,
ugr.create_time AS createTime
FROM user u
JOIN
user_gold_record ugr ON u.jwcode = ugr.jwcode
JOIN
admin a ON ugr.admin_id = a.id
JOIN
user_gold_record ugr ON u.jwcode = ugr.jwcode
JOIN
admin a ON ugr.admin_id = a.id
WHERE ugr.type = 1
<trim prefix="ORDER BY" suffixOverrides=",">
<choose>
<!-- 当指定排序字段时使用指定字段排序 -->
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'taskGold'">ugr.task_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 == 'createTime'">ugr.create_time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.create_time</otherwise>
</choose>
<!-- 排序方向处理 -->
<if test="sortOrder != null and sortOrder != ''">
<choose>
<when test="sortOrder == 'ASC'">ASC</when>
<when test="sortOrder == 'DESC'">DESC</when>
<otherwise>DESC</otherwise>
</choose>
</if>
<if test="sortOrder == null or sortOrder == ''">
DESC
</if>
</when>
<!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise>
ugr.create_time DESC
</otherwise>
</choose>
</trim>
</select>
<!-- 查询筛选后消费记录 -->
@ -61,6 +95,40 @@
AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
<choose>
<!-- 当指定排序字段时使用指定字段排序 -->
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'taskGold'">ugr.task_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 == 'createTime'">ugr.create_time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.create_time</otherwise>
</choose>
<!-- 排序方向处理 -->
<if test="sortOrder != null and sortOrder != ''">
<choose>
<when test="sortOrder == 'ASC'">ASC</when>
<when test="sortOrder == 'DESC'">DESC</when>
<otherwise>DESC</otherwise>
</choose>
</if>
<if test="sortOrder == null or sortOrder == ''">
DESC
</if>
</when>
<!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise>
ugr.create_time DESC
</otherwise>
</choose>
</trim>
</select>
<insert id="add" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true" keyProperty="id">
@ -79,6 +147,7 @@
pay_platform,
is_refund,
admin_id,
audit_status,
create_time,
pay_time
</trim>
@ -97,6 +166,7 @@
#{payPlatform},
#{isRefund},
#{adminId},
#{auditStatus},
#{createTime},
#{payTime}
</trim>

3
src/main/resources/mapper/GeneralMapper.xml

@ -11,4 +11,7 @@
<select id="getGoods" resultType="java.lang.String">
select DISTINCT goods_name from user_gold_record
</select>
<select id="getActivity" resultType="java.lang.String">
select DISTINCT activity from user_gold_record
</select>
</mapper>

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

@ -0,0 +1,183 @@
<?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">
<mapper namespace="com.example.demo.mapper.RechargeMapper">
<!-- 查询所有充值记录 -->
<select id="selectAll" resultType="com.example.demo.domain.vo.RechargeUser">
SELECT
u.name AS name,
u.jwcode AS jwcode,
u.market AS market,
ugr.activity AS activity,
ugr.rate_id AS rateId,
r.rate_name AS rateName,
ugr.money AS money,
ugr.permanent_gold AS permanentGold,
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
ugr.pay_model AS payModel,
ugr.pay_platform AS payPlatform,
ugr.remark AS remark,
ugr.admin_id AS adminId,
a.admin_name AS adminName,
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
JOIN rate r ON ugr.rate_id = r.id
WHERE ugr.type = 0
<trim prefix="ORDER BY" suffixOverrides=",">
<choose>
<!-- 当指定排序字段时使用指定字段排序 -->
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对金币数量的排序处理 -->
<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 == 'payTime'">ugr.pay_time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.pay_time</otherwise>
</choose>
<!-- 排序方向处理 -->
<if test="sortOrder != null and sortOrder != ''">
<choose>
<when test="sortOrder == 'ASC'">ASC</when>
<when test="sortOrder == 'DESC'">DESC</when>
<otherwise>DESC</otherwise>
</choose>
</if>
<if test="sortOrder == null or sortOrder == ''">
DESC
</if>
</when>
<!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise>
ugr.pay_time DESC
</otherwise>
</choose>
</trim>
</select>
<!-- 查询筛选后充值记录 -->
<select id="selectBy" resultType="com.example.demo.domain.vo.RechargeUser">
SELECT
u.name AS name,
u.jwcode AS jwcode,
u.market AS market,
ugr.activity AS activity,
ugr.rate_id AS rateId,
r.rate_name AS rateName,
ugr.money AS money,
ugr.permanent_gold AS permanentGold,
(COALESCE(ugr.free_june, 0) + COALESCE(ugr.free_december, 0)) AS freeGold,
ugr.pay_model AS payModel,
ugr.pay_platform AS payPlatform,
ugr.remark AS remark,
ugr.admin_id AS adminId,
a.admin_name AS adminName,
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
JOIN rate r ON ugr.rate_id = r.id
<where>
ugr.type = 0
<if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode}
</if>
<if test="activity != null and activity != ''">
AND ugr.activity = #{activity}
</if>
<if test="market != null and market != ''">
AND u.market = #{market}
</if>
<if test="payPlatform != null and payPlatform != ''">
AND ugr.pay_platform = #{payPlatform}
</if>
<if test="startTime != null and endTime != null">
AND ugr.pay_time BETWEEN #{startTime} AND #{endTime}
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
<choose>
<!-- 当指定排序字段时使用指定字段排序 -->
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对金币数量的排序处理 -->
<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 == 'payTime'">ugr.pay_time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.pay_time</otherwise>
</choose>
<!-- 排序方向处理 -->
<if test="sortOrder != null and sortOrder != ''">
<choose>
<when test="sortOrder == 'ASC'">ASC</when>
<when test="sortOrder == 'DESC'">DESC</when>
<otherwise>DESC</otherwise>
</choose>
</if>
<if test="sortOrder == null or sortOrder == ''">
DESC
</if>
</when>
<!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise>
ugr.pay_time DESC
</otherwise>
</choose>
</trim>
</select>
<insert id="add" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user_gold_record
<trim prefix="(" suffix=")" suffixOverrides=",">
order_code,
jwcode,
activity,
sum_gold,
permanent_gold,
free_june,
free_december,
rate_id,
money,
voucher,
pay_platform,
pay_model,
pay_time,
remark,
admin_id,
type,
audit_status,
create_time
</trim>
VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">
#{orderCode},
#{jwcode},
#{activity},
#{sumGold},
#{permanentGold},
#{freeJune},
#{freeDecember},
#{rateId},
#{money},
#{voucher},
#{payPlatform},
#{payModel},
#{payTime},
#{remark},
#{adminId},
#{type},
#{auditStatus},
#{createTime}
</trim>
</insert>
</mapper>

112
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,
@ -23,6 +24,40 @@
JOIN
admin a ON ugr.admin_id = a.id
WHERE ugr.type = 2
<trim prefix="ORDER BY" suffixOverrides=",">
<choose>
<!-- 当指定排序字段时使用指定字段排序 -->
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'taskGold'">ugr.task_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 == 'createTime'">ugr.create_time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.create_time</otherwise>
</choose>
<!-- 排序方向处理 -->
<if test="sortOrder != null and sortOrder != ''">
<choose>
<when test="sortOrder == 'ASC'">ASC</when>
<when test="sortOrder == 'DESC'">DESC</when>
<otherwise>DESC</otherwise>
</choose>
</if>
<if test="sortOrder == null or sortOrder == ''">
DESC
</if>
</when>
<!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise>
ugr.create_time DESC
</otherwise>
</choose>
</trim>
</select>
<!-- 查询筛选后消费记录 -->
@ -30,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,
@ -63,6 +99,40 @@
AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
<choose>
<!-- 当指定排序字段时使用指定字段排序 -->
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'taskGold'">ugr.task_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 == 'createTime'">ugr.create_time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>ugr.create_time</otherwise>
</choose>
<!-- 排序方向处理 -->
<if test="sortOrder != null and sortOrder != ''">
<choose>
<when test="sortOrder == 'ASC'">ASC</when>
<when test="sortOrder == 'DESC'">DESC</when>
<otherwise>DESC</otherwise>
</choose>
</if>
<if test="sortOrder == null or sortOrder == ''">
DESC
</if>
</when>
<!-- 未指定排序字段时,使用默认的时间降序排序 -->
<otherwise>
ugr.create_time DESC
</otherwise>
</choose>
</trim>
</select>
<insert id="add" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true" keyProperty="id">
@ -70,37 +140,63 @@
<trim prefix="(" suffix=")" suffixOverrides=",">
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
</trim>
VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">
#{orderCode},
#{jwcode},
#{refundType},
#{refundModel},
#{sumGold},
#{permanentGold},
#{freeJune},
#{freeDecember},
#{taskGold},
#{goodsName},
#{payPlatform},
#{remark},
#{type},
#{payPlatform},
#{isRefund},
#{adminId},
#{createTime},
#{payTime}
#{auditStatus},
#{createTime}
</trim>
</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
<if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode}
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
ugr.create_time DESC
</trim>
</select>
</mapper>

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

@ -103,9 +103,8 @@
SELECT *
FROM statistics
WHERE market = #{market}
AND current_datetime >= #{startDate}
AND current_datetime &lt;= #{endDate}
LIMIT 1
AND current_datetime BETWEEN #{startDate} AND #{endDate}
</select>
<select id="sumCurrentPermanentGold" resultType="java.lang.Integer">
SELECT SUM(user.current_permanent_gold)

Loading…
Cancel
Save