2 Commits

  1. 6
      src/main/java/com/example/demo/controller/ConsumeController.java
  2. 2
      src/main/java/com/example/demo/controller/RechargeController.java
  3. 30
      src/main/java/com/example/demo/controller/RefundController.java
  4. 1
      src/main/java/com/example/demo/domain/vo/RefundUser.java
  5. 5
      src/main/java/com/example/demo/mapper/RefundMapper.java
  6. 7
      src/main/java/com/example/demo/service/RefundService.java
  7. 6
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  8. 81
      src/main/java/com/example/demo/serviceImpl/RefundServiceImpl.java
  9. 6
      src/main/resources/application.yml
  10. 18
      src/main/resources/mapper/RechargeMapper.xml
  11. 43
      src/main/resources/mapper/RefundMapper.xml

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

@ -84,7 +84,13 @@ public class ConsumeController {
@PostMapping("/add") @PostMapping("/add")
public Result add(@RequestBody ConsumeUser consumeUser) { public Result add(@RequestBody ConsumeUser consumeUser) {
try { try {
if(consumeUser.getJwcode().equals(94226013))
{
return consumeService.add(consumeUser); return consumeService.add(consumeUser);
}else {
return Result.error("不是测试的精网号,无法添加消费");
}
} catch (Exception e) { } catch (Exception e) {
return Result.error("接口调用失败"); return Result.error("接口调用失败");
} }

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -1,5 +1,6 @@
package com.example.demo.serviceImpl; package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.ConsumeUser; import com.example.demo.domain.vo.ConsumeUser;
import com.example.demo.domain.vo.Gold; import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.RefundUser; import com.example.demo.domain.vo.RefundUser;
@ -13,7 +14,13 @@ import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/** /**
* @program: gold-java * @program: gold-java
@ -83,6 +90,78 @@ public class RefundServiceImpl implements RefundService {
@Override @Override
public Result add(RefundUser refundUser) { public Result add(RefundUser refundUser) {
return null;
UserGoldRecord userGoldRecord = new UserGoldRecord();
String goodsNameWithOrder = refundUser.getGoodsName();
//订单号生成
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;
} }
} }

6
src/main/resources/application.yml

@ -4,9 +4,9 @@ spring:
fail-on-unknown-properties: false fail-on-unknown-properties: false
datasource: datasource:
mysql1: mysql1:
jdbc-url: jdbc:mysql://192.168.8.220:3306/hwgold?serverTimezone=Asia/Shanghai
username: hwgold
password: 123456
jdbc-url: jdbc:mysql://18.143.76.3:3306/hwgoldc?serverTimezone=Asia/Shanghai
username: hwgoldc
password: zB48T55wCsHC8KPz
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
hikari: hikari:
pool-name: mysql1HikariCP pool-name: mysql1HikariCP

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

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

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

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