Browse Source

8月18日金豆数据库统计优化

lijianlin/feature-20250728171217-三期金豆消费相关
sunjiabei 2 days ago
parent
commit
461e09daf6
  1. 3
      src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java
  2. 3
      src/main/java/com/example/demo/mapper/pay/BeanRechargeMapper3.java
  3. 51
      src/main/java/com/example/demo/serviceImpl/bean/BeanRechargeServiceImpl.java
  4. 52
      src/main/resources/jindouMapper/BeanRechargeMapper2.xml
  5. 57
      src/main/resources/paymapper/BeanRechargeMapper3.xml

3
src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java

@ -3,6 +3,7 @@ package com.example.demo.mapper.bean;
import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo;
import com.example.demo.domain.vo.bean.GoldBean;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -22,4 +23,6 @@ public interface BeanRechargeMapper2 {
List<BeanSystemRechargeInfo> selectBySystem(BeanSystemRechargeInfo beanSystemRechargeInfo);
List<String> systemMarket();
GoldBean selectSystemSum(BeanSystemRechargeInfo beanSystemRechargeInfo);
}

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

@ -2,6 +2,7 @@ package com.example.demo.mapper.pay;
import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo;
import com.example.demo.domain.vo.bean.GoldBean;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -21,4 +22,6 @@ public interface BeanRechargeMapper3 {
List<BeanOnlineRechargeInfo> selectByOnline(BeanOnlineRechargeInfo beanOnlineRechargeInfo);
List<String> onlineMarket();
GoldBean selectOnlineSum(BeanOnlineRechargeInfo beanOnlineRechargeInfo);
}

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

@ -132,31 +132,11 @@ public class BeanRechargeServiceImpl implements BeanRechargeService {
//统计系统金豆记录
@Override
public GoldBean statsSystemBean(BeanSystemRechargeInfo beanSystemRechargeInfo) {
GoldBean gold = new GoldBean();
List<BeanSystemRechargeInfo> beanSystemRechargeInfos = beanRechargeMapper2.selectBySystem(beanSystemRechargeInfo);
// 初始化累加器
int permanentGoldSum = 0;
int freeGoldSum = 0;
BigDecimal moneySum = new BigDecimal("0.0");
// 遍历充值记录并累加金币
for (BeanSystemRechargeInfo info : beanSystemRechargeInfos) {
// 累加永久金币
if (info.getPermanentBean() != null) {
permanentGoldSum += info.getPermanentBean();
}
// 累加免费金币
if (info.getFreeBean() != null) {
freeGoldSum += info.getFreeBean();
}
}
moneySum = new BigDecimal(permanentGoldSum).divide(new BigDecimal("50"), 2, RoundingMode.HALF_UP);
// 将累加结果设置到Gold对象
gold.setPermanentBean(permanentGoldSum);
gold.setFreeBean(freeGoldSum);
GoldBean gold = beanRechargeMapper2.selectSystemSum(beanSystemRechargeInfo);
BigDecimal moneySum;
moneySum = new BigDecimal(gold.getPermanentBean()).divide(new BigDecimal("50"), 2, RoundingMode.HALF_UP);
gold.setMoney(moneySum.doubleValue());
gold.setBeanNum(permanentGoldSum+freeGoldSum);
gold.setBeanNum(gold.getPermanentBean()+gold.getFreeBean());
return gold;
}
@ -182,28 +162,7 @@ public class BeanRechargeServiceImpl implements BeanRechargeService {
//统计线上金豆记录
@Override
public GoldBean statsOnlineBean(BeanOnlineRechargeInfo beanOnlineRechargeInfo) {
GoldBean gold = new GoldBean();
List<BeanOnlineRechargeInfo> beanOnlineRechargeInfos = beanRechargeMapper3.selectByOnline(beanOnlineRechargeInfo);
// 初始化累加器
int countSum = 0;
BigDecimal moneySum = new BigDecimal("0.0");
// 遍历充值记录并累加金币
for (BeanOnlineRechargeInfo info : beanOnlineRechargeInfos) {
// 累加数量
if (info.getNum() != null) {
countSum += info.getNum();
}
// 累加金额
if (info.getMoney() != null) {
moneySum = moneySum.add(new BigDecimal(info.getMoney().toString()));
}
}
// 将累加结果设置到Gold对象
gold.setBeanNum(countSum);
gold.setMoney(moneySum.doubleValue());
GoldBean gold = beanRechargeMapper3.selectOnlineSum(beanOnlineRechargeInfo);
return gold;
}

52
src/main/resources/jindouMapper/BeanRechargeMapper2.xml

@ -61,4 +61,56 @@
<select id="systemMarket" resultType="java.lang.String">
select DISTINCT dept from fx_member
</select>
<select id="selectSystemSum" resultType="com.example.demo.domain.vo.bean.GoldBean">
SELECT
SUM(f.money_free) AS freeBean,
SUM(f.money_buy) AS permanentBean
FROM fx_yaoqing_records f
LEFT JOIN fx_member m ON f.uid = m.id
<where>
f.data = 0
<if test="jwcode != null and jwcode != ''">
AND m.jwcode = #{jwcode}
</if>
<if test="market != null and market != ''">
AND m.dept = #{market}
</if>
<if test="startTime != null and endTime != null">
AND FROM_UNIXTIME(f.time) BETWEEN #{startTime} AND #{endTime}
</if>
</where>
<trim prefix="ORDER BY" suffixOverrides=",">
<choose>
<!-- 当指定排序字段时使用指定字段排序 -->
<when test="sortField != null and sortField != ''">
<choose>
<!-- 对金币数量的排序处理 -->
<when test="sortField == 'permanentBean'">f.money_buy</when>
<when test="sortField == 'freeBean'">f.money_free</when>
<!-- 对时间字段的排序处理 -->
<when test="sortField == 'rechargeTime'">f.time</when>
<!-- 其他字段不支持排序,使用默认排序 -->
<otherwise>f.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>
f.time DESC
</otherwise>
</choose>
</trim>
</select>
</mapper>

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

@ -67,4 +67,61 @@
<select id="onlineMarket" resultType="java.lang.String">
select DISTINCT deptName from member_info
</select>
<select id="selectOnlineSum" resultType="com.example.demo.domain.vo.bean.GoldBean">
SELECT
sum(g.count) as num,
sum(g.price) as money
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