Browse Source

退款接口

huangqizheng/feature-20250628114355-权限接口完毕
sunjiabei 5 days ago
parent
commit
637be279e9
  1. 17
      src/main/java/com/example/demo/controller/ConsumeController.java
  2. 62
      src/main/java/com/example/demo/controller/RefundController.java
  3. 4
      src/main/java/com/example/demo/controller/UserController.java
  4. 2
      src/main/java/com/example/demo/domain/vo/ConsumeUser.java
  5. 1
      src/main/java/com/example/demo/domain/vo/Page.java
  6. 2
      src/main/java/com/example/demo/domain/vo/RefundUser.java
  7. 27
      src/main/java/com/example/demo/mapper/RefundMapper.java
  8. 28
      src/main/java/com/example/demo/service/RefundService.java
  9. 88
      src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java
  10. 9
      src/main/resources/mapper/ConsumeMapper.xml
  11. 106
      src/main/resources/mapper/RefundMapper.xml

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

@ -34,6 +34,7 @@ public class ConsumeController {
//消耗明细
@PostMapping("/selectAll")
public Result selcetAll(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
@ -42,12 +43,17 @@ public class ConsumeController {
} else {
return Result.success(consumeService.selectAll(page.getPageNum(), page.getPageSize()));
}
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
//消耗明细筛选
@PostMapping("/selectBy")
public Result selcetBy(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
@ -56,20 +62,31 @@ public class ConsumeController {
} else {
return Result.success(consumeService.selectBy(page.getPageNum(), page.getPageSize(), page.getConsumeUser()));
}
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
//消耗金币统计
@PostMapping("/statsGold")
public Result statsGold() {
try {
Gold gold = consumeService.statsGold();
return Result.success(gold);
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
//消耗金币增加
@PostMapping("/add")
public Result add(@RequestBody ConsumeUser consumeUser) {
try {
return consumeService.add(consumeUser);
} catch (Exception e) {
return Result.error("接口调用失败");
}
}

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

@ -1,14 +1,19 @@
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.service.ConsumeService;
import com.example.demo.service.RefundService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
/**
* @program: gold-java
* @ClassName RefundController
* @ClassName RefundMapper.xml
* @description:
* @author: Double
* @create: 202506-26 11:28
@ -21,4 +26,53 @@ import org.springframework.web.bind.annotation.RestController;
@Slf4j
@CrossOrigin
public class RefundController {
@Autowired
private RefundService refundService;
//退款明细
@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(refundService.selectAll(page.getPageNum(), page.getPageSize()));
}
} 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(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
}
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
@PostMapping("/statsGold")
public Result statsGold() {
try {
Gold gold = refundService.statsGold();
return Result.success(gold);
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
}

4
src/main/java/com/example/demo/controller/UserController.java

@ -31,7 +31,11 @@ public class UserController {
@PostMapping("/selectUser")
public Result selectUser(@RequestBody GoldUser user) {
try {
user = userService.selectUser(user.getJwcode().toString());
return Result.success(user);
} catch (Exception e) {
return Result.error("接口调用失败");
}
}
}

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

@ -38,7 +38,7 @@ public class ConsumeUser implements Serializable {
private String adminName; //提交人姓名
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date payTime; // 消费时间
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")

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

@ -22,5 +22,6 @@ public class Page {
private GoldDetail goldDetail;
private ConsumeUser consumeUser;
private User user;
private RefundUser refundUser;
}

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

@ -33,7 +33,7 @@ public class RefundUser {
private Integer permanentGold; // 永久金币
private Integer freeGold; // 免费金币
private Integer taskGold; // 任务金币
private String remark; // 备注
private String remark; // 退款原因
private Integer adminId; //提交人Id
private String adminName; //提交人姓名

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

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

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

@ -0,0 +1,28 @@
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.RefundUser;
import com.example.demo.domain.vo.Result;
import com.github.pagehelper.PageInfo;
/**
* @program: gold-java
* @ClassName RefundService
* @description:
* @author: Double
* @create: 202506-27 11:50
* @Version 1.0
**/
public interface RefundService {
PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize);
Gold statsGold();
PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser);
Result add(RefundUser refundUser);
}

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

@ -0,0 +1,88 @@
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.RefundUser;
import com.example.demo.domain.vo.Result;
import com.example.demo.mapper.ConsumeMapper;
import com.example.demo.mapper.RefundMapper;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.RefundService;
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 RefundServiceImpl
* @description:
* @author: Double
* @create: 202506-27 11:50
* @Version 1.0
**/
@Service
public class RefundServiceImpl implements RefundService {
@Autowired
private RefundMapper refundMapper;
@Autowired
private UserMapper userMapper;
@Override
public PageInfo<RefundUser> selectAll(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<RefundUser> refundUsers = refundMapper.selectAll();
return new PageInfo<>(refundUsers);
}
@Override
public Gold statsGold() {
Gold gold = new Gold();
List<RefundUser> refundUsers = refundMapper.selectAll();
// 初始化累加器
int permanentGoldSum = 0;
int freeGoldSum = 0;
int taskGoldSum = 0;
// 遍历推开记录并累加金币
for (RefundUser refundUser : refundUsers) {
// 累加永久金币
if (refundUser.getPermanentGold() != null) {
permanentGoldSum += refundUser.getPermanentGold();
}
// 累加免费金币
if (refundUser.getFreeGold() != null) {
freeGoldSum += refundUser.getFreeGold();
}
// 累加任务金币
if (refundUser.getTaskGold() != null) {
taskGoldSum += refundUser.getTaskGold();
}
}
// 将累加结果设置到Gold对象
gold.setPermanentGolds(permanentGoldSum);
gold.setFreeGolds(freeGoldSum);
gold.setTaskGolds(taskGoldSum);
return gold;
}
@Override
public PageInfo<RefundUser> selectBy(Integer pageNum, Integer pageSize, RefundUser refundUser) {
PageHelper.startPage(pageNum, pageSize);
List<RefundUser> refundUsers = refundMapper.selectBy(refundUser);
return new PageInfo<>(refundUsers);
}
@Override
public Result add(RefundUser refundUser) {
return null;
}
}

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

@ -15,7 +15,7 @@
ugr.task_gold AS taskGold,
ugr.remark AS remark,
a.admin_name AS adminName,
ugr.pay_time AS payTime
ugr.create_time AS createTime
FROM user u
JOIN
user_gold_record ugr ON u.jwcode = ugr.jwcode
@ -37,7 +37,7 @@
ugr.task_gold AS taskGold,
ugr.remark AS remark,
a.admin_name AS adminName,
ugr.pay_time AS payTime
ugr.create_time AS createTime
FROM user u
JOIN
user_gold_record ugr ON u.jwcode = ugr.jwcode
@ -45,6 +45,9 @@
admin a ON ugr.admin_id = a.id
<where>
ugr.type = 1
<if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode}
</if>
<if test="goodsName != null and goodsName != ''">
AND ugr.goods_name = #{goodsName}
</if>
@ -55,7 +58,7 @@
AND ugr.pay_platform = #{payPlatform}
</if>
<if test="startTime != null and endTime != null">
AND ugr.pay_time BETWEEN #{startTime} AND #{endTime}
AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
</if>
</where>
</select>

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

@ -0,0 +1,106 @@
<?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.RefundMapper">
<!-- 查询所有退款记录 -->
<select id="selectAll" resultType="com.example.demo.domain.vo.RefundUser">
SELECT u.name AS name,
u.jwcode AS jwcode,
u.market AS market,
ugr.goods_name AS goodsName,
ugr.refund_model AS refundModel,
ugr.refund_type AS refundType,
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
WHERE ugr.type = 2
</select>
<!-- 查询筛选后消费记录 -->
<select id="selectBy" resultType="com.example.demo.domain.vo.RefundUser">
SELECT u.name AS name,
u.jwcode AS jwcode,
u.market AS market,
ugr.goods_name AS goodsName,
ugr.refund_model AS refundModel,
ugr.refund_type AS refundType,
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
<where>
ugr.type = 2
<if test="jwcode != null and jwcode != ''">
AND ugr.jwcode = #{jwcode}
</if>
<if test="goodsName != null and goodsName != ''">
AND ugr.goods_name = #{goodsName}
</if>
<if test="market != null and market != ''">
AND u.market = #{market}
</if>
<if test="refundModel != null and refundModel != ''">
AND ugr.refund_model = #{refundModel}
</if>
<if test="startTime != null and endTime != null">
AND ugr.create_time BETWEEN #{startTime} AND #{endTime}
</if>
</where>
</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,
create_time,
pay_time
</trim>
VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">
#{orderCode},
#{jwcode},
#{sumGold},
#{permanentGold},
#{freeJune},
#{freeDecember},
#{taskGold},
#{goodsName},
#{remark},
#{type},
#{payPlatform},
#{isRefund},
#{adminId},
#{createTime},
#{payTime}
</trim>
</insert>
</mapper>
Loading…
Cancel
Save