Browse Source

7月31日线上充值与与金币统计

huangqizheng/feature-20250801114957-导出
sunjiabei 2 weeks ago
parent
commit
df23d7058b
  1. 3
      src/main/java/com/example/demo/DemoApplication.java
  2. 2
      src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java
  3. 30
      src/main/java/com/example/demo/controller/bean/BeanRechargeController.java
  4. 4
      src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java
  5. 2
      src/main/java/com/example/demo/domain/vo/bean/GoldBean.java
  6. 23
      src/main/java/com/example/demo/mapper/pay/BeanRechargeMapper3.java
  7. 9
      src/main/java/com/example/demo/service/bean/BeanRechargeService.java
  8. 55
      src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java
  9. 66
      src/main/resources/paymapper/BeanRechargeMapper3.xml

3
src/main/java/com/example/demo/DemoApplication.java

@ -7,8 +7,9 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication @SpringBootApplication
@EnableScheduling // 启用调度功能 @EnableScheduling // 启用调度功能
@MapperScan(basePackages = "com.example.demo.mapper", sqlSessionTemplateRef = "mysql1SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.coin", sqlSessionTemplateRef = "mysql1SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.bean", sqlSessionTemplateRef = "mysql2SqlSessionTemplate") @MapperScan(basePackages = "com.example.demo.mapper.bean", sqlSessionTemplateRef = "mysql2SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.pay", sqlSessionTemplateRef = "mysql3SqlSessionTemplate")
public class DemoApplication { public class DemoApplication {
public static void main(String[] args) { public static void main(String[] args) {

2
src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java

@ -29,7 +29,7 @@ public class Mysql3DataSourceConfig {
@Qualifier("globalConfiguration3") org.apache.ibatis.session.Configuration globalConfiguration3) throws Exception { @Qualifier("globalConfiguration3") org.apache.ibatis.session.Configuration globalConfiguration3) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource); sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:jindouMapper/*.xml"));
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:payMapper/*.xml"));
sessionFactory.setConfiguration(globalConfiguration3); sessionFactory.setConfiguration(globalConfiguration3);
return sessionFactory.getObject(); return sessionFactory.getObject();
} }

30
src/main/java/com/example/demo/controller/bean/BeanRechargeController.java

@ -80,4 +80,34 @@ public class BeanRechargeController {
return Result.error("请检查数据的格式"); return Result.error("请检查数据的格式");
} }
} }
//线上充值
@PostMapping("/selectByOnline")
public Result selectByOnline(@RequestBody BeanPage page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(beanRechargeService.selectByOnline(page.getPageNum(), page.getPageSize(), page.getBeanRechargeInfo()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error("请检查筛选数据的格式");
}
}
//线上金豆统计
@PostMapping("/statsOnlineBean")
public Result statsOnlineBean(@RequestBody BeanRechargeInfo beanRechargeInfo) {
try {
GoldBean goldBean = beanRechargeService.statsOnlineBean(beanRechargeInfo);
return Result.success(goldBean);
} catch (Exception e) {
return Result.error("请检查数据的格式");
}
}
} }

4
src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java

@ -28,8 +28,8 @@ public class BeanRechargeInfo {
private String market; // 所属地区 private String market; // 所属地区
private Integer freeBean; // 免费豆 private Integer freeBean; // 免费豆
private Integer permanentBean; // 永久豆 private Integer permanentBean; // 永久豆
private Integer money; // 金额
private Integer num; // 数量
private Double money; // 金额
private Integer num; // 数量
private Double amount; // 金额 private Double amount; // 金额
private String orderNo; // 订单号 private String orderNo; // 订单号
private String remark; //备注 private String remark; //备注

2
src/main/java/com/example/demo/domain/vo/bean/GoldBean.java

@ -19,6 +19,6 @@ import lombok.NoArgsConstructor;
public class GoldBean { public class GoldBean {
private Integer freeBean; // 免费豆 private Integer freeBean; // 免费豆
private Integer permanentBean; // 永久豆 private Integer permanentBean; // 永久豆
private Integer money; // 金额
private Double money; // 金额
private Integer beanNum; // 豆数量 private Integer beanNum; // 豆数量
} }

23
src/main/java/com/example/demo/mapper/pay/BeanRechargeMapper3.java

@ -0,0 +1,23 @@
package com.example.demo.mapper.pay;
import com.example.demo.domain.vo.bean.BeanRechargeInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanRechargeMapper
* @description:
* @author: Double
* @create: 202507-30 15:43
* @Version 1.0
**/
@Mapper
public interface BeanRechargeMapper3 {
List<BeanRechargeInfo> selectByOnline(BeanRechargeInfo beanRechargeInfo);
}

9
src/main/java/com/example/demo/service/bean/BeanRechargeService.java

@ -19,9 +19,18 @@ import com.github.pagehelper.PageInfo;
public interface BeanRechargeService { public interface BeanRechargeService {
//线上充值
Result add(BeanRecharge recharge); Result add(BeanRecharge recharge);
//系统充值
PageInfo<BeanRechargeInfo> selectBySystem(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo); PageInfo<BeanRechargeInfo> selectBySystem(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo);
//系统金豆统计
GoldBean statsSystemBean(BeanRechargeInfo beanRechargeInfo); GoldBean statsSystemBean(BeanRechargeInfo beanRechargeInfo);
//线上充值
PageInfo<BeanRechargeInfo> selectByOnline(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo);
//线上金豆统计
GoldBean statsOnlineBean(BeanRechargeInfo beanRechargeInfo);
} }

55
src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java

@ -8,15 +8,19 @@ import com.example.demo.domain.vo.coin.RechargeUser;
import com.example.demo.domain.vo.coin.Result; import com.example.demo.domain.vo.coin.Result;
import com.example.demo.mapper.bean.BeanRechargeMapper2; import com.example.demo.mapper.bean.BeanRechargeMapper2;
import com.example.demo.mapper.coin.BeanRechargeMapper1; import com.example.demo.mapper.coin.BeanRechargeMapper1;
import com.example.demo.mapper.pay.BeanRechargeMapper3;
import com.example.demo.service.bean.BeanRechargeService; import com.example.demo.service.bean.BeanRechargeService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import java.util.List; import java.util.List;
import java.util.UUID;
/** /**
* @program: gold-java * @program: gold-java
@ -39,6 +43,9 @@ public class BeanRechargeServiceImpl implements BeanRechargeService {
@Autowired @Autowired
private BeanRechargeMapper1 beanRechargeMapper1; private BeanRechargeMapper1 beanRechargeMapper1;
@Autowired
private BeanRechargeMapper3 beanRechargeMapper3;
//新增金豆 //新增金豆
@Override @Override
@ -65,6 +72,9 @@ public class BeanRechargeServiceImpl implements BeanRechargeService {
if (recharge.getRemark() == null || recharge.getRemark().toString().isEmpty()) { if (recharge.getRemark() == null || recharge.getRemark().toString().isEmpty()) {
return Result.error("备注不能为空"); return Result.error("备注不能为空");
} }
if(recharge.getAdminName() == null || recharge.getAdminName().toString().isEmpty()){
return Result.error("管理员名称不能为空");
}
beanRechargeMapper1.add(recharge); beanRechargeMapper1.add(recharge);
// String jwcode = recharge.getJwcode().toString(); // String jwcode = recharge.getJwcode().toString();
// String op = "recharge"; // 操作类型根据实际业务定义例如"recharge"表示充值 // String op = "recharge"; // 操作类型根据实际业务定义例如"recharge"表示充值
@ -93,6 +103,14 @@ public class BeanRechargeServiceImpl implements BeanRechargeService {
} }
} }
//系统充值明细
@Override
public PageInfo<BeanRechargeInfo> selectBySystem(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo){
PageHelper.startPage(pageNum, pageSize);
List<BeanRechargeInfo> beanRechargeInfos = beanRechargeMapper2.selectBySystem(beanRechargeInfo);
return new PageInfo<>(beanRechargeInfos);
}
//统计系统金豆记录 //统计系统金豆记录
@Override @Override
public GoldBean statsSystemBean(BeanRechargeInfo beanRechargeInfo) { public GoldBean statsSystemBean(BeanRechargeInfo beanRechargeInfo) {
@ -102,7 +120,7 @@ public class BeanRechargeServiceImpl implements BeanRechargeService {
// 初始化累加器 // 初始化累加器
int permanentGoldSum = 0; int permanentGoldSum = 0;
int freeGoldSum = 0; int freeGoldSum = 0;
int moneySum = 0;
Double moneySum = 0.0;
// 遍历充值记录并累加金币 // 遍历充值记录并累加金币
for (BeanRechargeInfo info : beanRechargeInfos) { for (BeanRechargeInfo info : beanRechargeInfos) {
@ -128,11 +146,40 @@ public class BeanRechargeServiceImpl implements BeanRechargeService {
return gold; return gold;
} }
//系统充值明细
//线上充值明细
@Override @Override
public PageInfo<BeanRechargeInfo> selectBySystem(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo){
public PageInfo<BeanRechargeInfo> selectByOnline(Integer pageNum, Integer pageSize, BeanRechargeInfo beanRechargeInfo){
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);
List<BeanRechargeInfo> beanRechargeInfos = beanRechargeMapper2.selectBySystem(beanRechargeInfo);
List<BeanRechargeInfo> beanRechargeInfos = beanRechargeMapper3.selectByOnline(beanRechargeInfo);
return new PageInfo<>(beanRechargeInfos); return new PageInfo<>(beanRechargeInfos);
} }
//统计线上金豆记录
@Override
public GoldBean statsOnlineBean(BeanRechargeInfo beanRechargeInfo) {
GoldBean gold = new GoldBean();
List<BeanRechargeInfo> beanRechargeInfos = beanRechargeMapper3.selectByOnline(beanRechargeInfo);
// 初始化累加器
int countSum = 0;
Double moneySum = 0.0;
// 遍历充值记录并累加金币
for (BeanRechargeInfo info : beanRechargeInfos) {
// 累加数量
if (info.getNum() != null) {
countSum += info.getNum();
}
// 累加金额
if (info.getMoney() != null) {
moneySum += info.getMoney();
}
}
// 将累加结果设置到Gold对象
gold.setBeanNum(countSum);
gold.setMoney(moneySum);
return gold;
}
} }

66
src/main/resources/paymapper/BeanRechargeMapper3.xml

@ -0,0 +1,66 @@
<?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.pay.BeanRechargeMapper3">
<select id="selectByOnline" resultType="com.example.demo.domain.vo.bean.BeanRechargeInfo">
SELECT g.id AS id,
g.jwcode AS jwcode,
m.name AS name,
m.deptName AS market,
g.order_no AS orderNo,
g.count AS num,
g.price AS money,
g.platform AS platform,
FROM_UNIXTIME(g.add_time) AS rechargeTime
FROM g_order g
LEFT JOIN member_info m ON g.jwcode = m.jwcode
<where>
g.type = "gold" AND g.state = 1
<if test="jwcode != null and jwcode != ''">
AND g.jwcode = #{jwcode}
</if>
<if test="market != null and market != ''">
AND m.deptName = #{market}
</if>
<if test="orderNo != null and orderNo != ''">
AND g.order_no = #{orderNo}
</if>
<if test="platform != null and platform != ''">
AND g.platform = #{platform}
</if>
<if test="startTime != null and endTime != null">
AND FROM_UNIXTIME(g.add_time) BETWEEN #{startTime} AND #{endTime}
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
<choose>
<!-- 当指定排序字段时使用指定字段排序 -->
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对金币数量的排序处理 -->
<when test="sortField == 'num'">g.count</when>
<when test="sortField == 'money'">g.price</when>
<!-- 对时间字段的排序处理 -->
<when test="sortField == 'rechargeTime'">g.add_time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>g.add_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>
g.add_time DESC
</otherwise>
</choose>
</trim>
</select>
</mapper>
Loading…
Cancel
Save