Browse Source

充值详情

暂用(不合并)
sunjiabei 3 days ago
parent
commit
cb5e5687f5
  1. 93
      src/main/java/com/example/demo/controller/RechargeController.java
  2. 1
      src/main/java/com/example/demo/domain/vo/Page.java
  3. 50
      src/main/java/com/example/demo/domain/vo/RechargeUser.java
  4. 27
      src/main/java/com/example/demo/mapper/RechargeMapper.java
  5. 26
      src/main/java/com/example/demo/service/RechargeService.java
  6. 1
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  7. 84
      src/main/java/com/example/demo/serviceImpl/RechargeServiceImpl.java
  8. 6
      src/main/resources/mapper/ConsumeMapper.xml
  9. 179
      src/main/resources/mapper/RechargeMapper.xml
  10. 4
      src/main/resources/mapper/RefundMapper.xml

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("接口调用失败");
}
}
}

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

@ -24,4 +24,5 @@ public class Page {
private User user;
private RefundUser refundUser;
private Permission permission;
private RechargeUser rechargeUser;
}

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

@ -0,0 +1,50 @@
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 remark; // 备注
private Integer adminId; //提交人Id
private String adminName; //提交人姓名
@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; // 结束时间
private String sortField; //排序字段
private String sortOrder; //排序顺序
}

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);
}

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);
}

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

@ -145,6 +145,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);

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

@ -0,0 +1,84 @@
package com.example.demo.serviceImpl;
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.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.util.List;
/**
* @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) {
return null;
}
}

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

@ -28,7 +28,7 @@
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'sumGold'">ugr.sum_gold</when>
<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>
<!-- 对时间字段的排序处理 -->
@ -101,7 +101,7 @@
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'sumGold'">ugr.sum_gold</when>
<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>
<!-- 对时间字段的排序处理 -->
@ -147,6 +147,7 @@
pay_platform,
is_refund,
admin_id,
audit_status,
create_time,
pay_time
</trim>
@ -165,6 +166,7 @@
#{payPlatform},
#{isRefund},
#{adminId},
#{auditStatus},
#{createTime},
#{payTime}
</trim>

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

@ -0,0 +1,179 @@
<?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.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 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 == '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>
<!-- 查询筛选后充值记录 -->
<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.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 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.create_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 == '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">
INSERT INTO user_gold_record
<trim prefix="(" suffix=")" suffixOverrides=",">
order_code,
jwcode,
sum_gold,
permanent_gold,
free_june,
free_december,
task_gold,
goods_name,
remark,
type,
pay_platform,
is_refund,
admin_id,
audit_status,
create_time,
pay_time
</trim>
VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">
#{orderCode},
#{jwcode},
#{sumGold},
#{permanentGold},
#{freeJune},
#{freeDecember},
#{taskGold},
#{goodsName},
#{remark},
#{type},
#{payPlatform},
#{isRefund},
#{adminId},
#{auditStatus},
#{createTime},
#{payTime}
</trim>
</insert>
</mapper>

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

@ -29,7 +29,7 @@
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'sumGold'">ugr.sum_gold</when>
<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>
<!-- 对时间字段的排序处理 -->
@ -103,7 +103,7 @@
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对三种金币数量的排序处理 -->
<when test="sortField == 'sumGold'">ugr.sum_gold</when>
<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>
<!-- 对时间字段的排序处理 -->

Loading…
Cancel
Save