Browse Source

Merge branch 'milestone-20250727-金币重构三期' into sunjiabei/feature-20250725135225-金币三期

huangqizheng/feature-20250801114957-导出
sunjiabei 2 weeks ago
parent
commit
1b9514be2f
  1. 40
      src/main/java/com/example/demo/controller/bean/BeanConsumeController.java
  2. 6
      src/main/java/com/example/demo/controller/bean/BeanRechargeController.java
  3. 41
      src/main/java/com/example/demo/domain/vo/bean/BeanConsumeArticle.java
  4. 6
      src/main/java/com/example/demo/domain/vo/bean/BeanPage.java
  5. 9
      src/main/java/com/example/demo/domain/vo/coin/Page.java
  6. 9
      src/main/java/com/example/demo/mapper/bean/BeanConsumeMapper.java
  7. 11
      src/main/java/com/example/demo/service/bean/BeanConsumeService.java
  8. 24
      src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java
  9. 117
      src/main/resources/jindouMapper/BeanConsumeMapper.xml

40
src/main/java/com/example/demo/controller/bean/BeanConsumeController.java

@ -49,45 +49,63 @@ public class BeanConsumeController {
//筛选查询直播消费记录 //筛选查询直播消费记录
@PostMapping("/selectLiveBy") @PostMapping("/selectLiveBy")
public Result selectLiveBy(@RequestBody BeanPage beanPage){
public Result selectLiveBy(@RequestBody Page page){
try { try {
if (ObjectUtils.isEmpty(beanPage.getPageNum())) {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!"); return Result.error("页码数为空!");
} }
if (ObjectUtils.isEmpty(beanPage.getPageSize())) {
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!"); return Result.error("页大小为空!");
} else { } else {
return Result.success(beanConsumeService.selectLiveBy(beanPage.getPageNum(), beanPage.getPageSize(), beanPage.getBeanConsumeLive()));
return Result.success(beanConsumeService.selectLiveBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeLive()));
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
//返回堆栈信息
return Result.error(e.toString()); return Result.error(e.toString());
}} }}
//筛选查询直播消费记录
//筛选查询铁粉消费记录
@PostMapping("/selectFanBy") @PostMapping("/selectFanBy")
public Result selectFanBy(@RequestBody BeanPage beanPage){
public Result selectFanBy(@RequestBody Page page){
try { try {
if (ObjectUtils.isEmpty(beanPage.getPageNum())) {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!"); return Result.error("页码数为空!");
} }
if (ObjectUtils.isEmpty(beanPage.getPageSize())) {
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!"); return Result.error("页大小为空!");
} else { } else {
return Result.success(beanConsumeService.selectFanBy(beanPage.getPageNum(), beanPage.getPageSize(), beanPage.getBeanConsumeFan()));
return Result.success(beanConsumeService.selectFanBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeFan()));
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return Result.error(e.toString()); return Result.error(e.toString());
}} }}
//筛选查询文章消费记录
@PostMapping("/selectArticleBy")
public Result selectArticleBy(@RequestBody Page page){
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(beanConsumeService.selectArticleBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeArticle()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error(e.toString());
}}
//消费合计数 //消费合计数
@PostMapping("sumConsumeGold") @PostMapping("sumConsumeGold")
public BeanConsumeGold sumConsumeGold(@RequestBody BeanPage beanPage) {
public BeanConsumeGold sumConsumeGold(@RequestBody Page page) {
return beanConsumeService.sumConsumeGold( beanPage);
return beanConsumeService.sumConsumeGold( page);
} }
//查询所有直播礼物 //查询所有直播礼物
@PostMapping("/getLiveGift") @PostMapping("/getLiveGift")

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

@ -4,10 +4,6 @@ import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.entity.Admin; import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.bean.BeanRecharge; import com.example.demo.domain.vo.bean.BeanRecharge;
import com.example.demo.domain.vo.bean.BeanPage; import com.example.demo.domain.vo.bean.BeanPage;
import com.example.demo.domain.vo.bean.BeanRechargeInfo;
import com.example.demo.domain.vo.bean.GoldBean;
import com.example.demo.domain.vo.coin.Gold;
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.service.bean.BeanRechargeService; import com.example.demo.service.bean.BeanRechargeService;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@ -53,7 +49,7 @@ public class BeanRechargeController {
//系统充值 //系统充值
@PostMapping("/selectBySystem") @PostMapping("/selectBySystem")
public Result selectBySystem(@RequestBody BeanPage page) {
public Result selectBySystem(@RequestBody Page page) {
try { try {
if (ObjectUtils.isEmpty(page.getPageNum())) { if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!"); return Result.error("页码数为空!");

41
src/main/java/com/example/demo/domain/vo/bean/BeanConsumeArticle.java

@ -0,0 +1,41 @@
package com.example.demo.domain.vo.bean;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @program: gold-java
* @ClassName BeanConsumeArticle
* @description:
* @author: Ethan
* @create: 202507-31 17:05
* @Version 1.0
**/
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BeanConsumeArticle {
private static final long serialVersionUID = 1L;
private String name; //姓名
private Integer jwcode; //精网号
private String dept; //地区/分部
private String type; //类型source_type 910打赏11付费
private Integer payMode; // 0 打赏 1 付费 2 其他
private String beanNum; //金豆数量
private Integer articleId; //文章/视频ID
private String articleName; //文章/视频标题source_name
private String author; //作者
private String payType; //支付类型 1-5:直播 7铁粉 8文章
private String sortField; //排序字段
private String sortOrder; //排序顺序
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date consumeTime; // 付费时间 时间戳转化
@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; // 结束时间
}

6
src/main/java/com/example/demo/domain/vo/bean/BeanPage.java

@ -19,9 +19,5 @@ public class BeanPage {
private String token; private String token;
private Integer pageNum; //页码 private Integer pageNum; //页码
private Integer pageSize; //每页大小 private Integer pageSize; //每页大小
private Integer payType; //支付方式直播12345铁粉7文章8
private BeanConsumeLive beanConsumeLive; //直播金豆消费
private BeanConsumeFan beanConsumeFan; //铁粉金豆消费
private BeanRechargeInfo beanRechargeInfo; //金豆充值信息
private BeanConsumeGold beanConsumeGold; //金豆消费合计数
} }

9
src/main/java/com/example/demo/domain/vo/coin/Page.java

@ -1,7 +1,7 @@
package com.example.demo.domain.vo.coin; package com.example.demo.domain.vo.coin;
import com.example.demo.domain.entity.User; import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.bean.BeanConsumeLive;
import com.example.demo.domain.vo.bean.*;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -30,5 +30,10 @@ public class Page {
private RefundAudit refundAudit; private RefundAudit refundAudit;
private RechargeUser rechargeUser; private RechargeUser rechargeUser;
private RoleVo roleVo; private RoleVo roleVo;
private Integer payType; //支付方式直播12345铁粉7文章8
private BeanConsumeLive beanConsumeLive; //直播金豆消费
private BeanConsumeFan beanConsumeFan; //铁粉金豆消费
private BeanConsumeArticle beanConsumeArticle; //文章金豆消费
private BeanRechargeInfo beanRechargeInfo; //金豆充值信息
private BeanConsumeGold beanConsumeGold; //金豆消费合计数
} }

9
src/main/java/com/example/demo/mapper/bean/BeanConsumeMapper.java

@ -1,9 +1,6 @@
package com.example.demo.mapper.bean; package com.example.demo.mapper.bean;
import com.example.demo.domain.vo.bean.BeanConsumeFan;
import com.example.demo.domain.vo.bean.BeanConsumeGold;
import com.example.demo.domain.vo.bean.BeanConsumeLive;
import com.example.demo.domain.vo.bean.BeanPage;
import com.example.demo.domain.vo.bean.*;
import com.example.demo.domain.vo.coin.RechargeAudit; import com.example.demo.domain.vo.coin.RechargeAudit;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -26,10 +23,14 @@ public interface BeanConsumeMapper {
List<BeanConsumeLive> selectLiveBy(@Param("beanConsumeLive") BeanConsumeLive beanConsumeLive); List<BeanConsumeLive> selectLiveBy(@Param("beanConsumeLive") BeanConsumeLive beanConsumeLive);
//筛选查询铁粉消费 //筛选查询铁粉消费
List<BeanConsumeFan> selectFanBy(@Param("beanConsumeFan") BeanConsumeFan beanConsumeFan); List<BeanConsumeFan> selectFanBy(@Param("beanConsumeFan") BeanConsumeFan beanConsumeFan);
//筛选查询文章消费
List<BeanConsumeArticle> selectArticleBy(@Param("beanConsumeArticle") BeanConsumeArticle beanConsumeArticle);
//查询金豆直播消费金额 //查询金豆直播消费金额
BeanConsumeGold selectSumLiveBy(@Param("beanConsumeLive") BeanConsumeLive beanConsumeLive); BeanConsumeGold selectSumLiveBy(@Param("beanConsumeLive") BeanConsumeLive beanConsumeLive);
//查询金豆铁粉消费金额 //查询金豆铁粉消费金额
BeanConsumeGold selectSumFansBy(@Param("beanConsumeFan") BeanConsumeFan beanConsumeFan); BeanConsumeGold selectSumFansBy(@Param("beanConsumeFan") BeanConsumeFan beanConsumeFan);
//查询金豆文章消费金额
BeanConsumeGold selectSumArticleBy(@Param("beanConsumeArticle") BeanConsumeArticle beanConsumeArticle);
//查询直播礼物 //查询直播礼物
List<String> getLiveGift(); List<String> getLiveGift();
//查询直播全部频道 //查询直播全部频道

11
src/main/java/com/example/demo/service/bean/BeanConsumeService.java

@ -1,10 +1,8 @@
package com.example.demo.service.bean; package com.example.demo.service.bean;
import com.example.demo.domain.vo.bean.BeanConsumeFan;
import com.example.demo.domain.vo.bean.BeanConsumeGold;
import com.example.demo.domain.vo.bean.BeanConsumeLive;
import com.example.demo.domain.vo.bean.BeanPage;
import com.example.demo.domain.vo.bean.*;
import com.example.demo.domain.vo.coin.Gold; import com.example.demo.domain.vo.coin.Gold;
import com.example.demo.domain.vo.coin.Page;
import java.util.List; import java.util.List;
@ -24,11 +22,14 @@ public interface BeanConsumeService {
Object selectLiveBy(Integer pageNum, Integer pageSize, BeanConsumeLive beanConsumeLive); Object selectLiveBy(Integer pageNum, Integer pageSize, BeanConsumeLive beanConsumeLive);
//筛选查询铁粉消费 //筛选查询铁粉消费
Object selectFanBy(Integer pageNum, Integer pageSize, BeanConsumeFan beanConsumeFan); Object selectFanBy(Integer pageNum, Integer pageSize, BeanConsumeFan beanConsumeFan);
//筛选查询文章消费
Object selectArticleBy(Integer pageNum, Integer pageSize, BeanConsumeArticle beanConsumeArticle);
//消费金币合计数 //消费金币合计数
BeanConsumeGold sumConsumeGold(BeanPage beanPage);
BeanConsumeGold sumConsumeGold(Page page);
//查询直播礼物 //查询直播礼物
List<String> getLiveGift(); List<String> getLiveGift();
//获取直播频道 //获取直播频道
List<String> getLiveChannel(); List<String> getLiveChannel();
} }

24
src/main/java/com/example/demo/serviceImpl/bean/BeanConsumeServiceImpl.java

@ -1,10 +1,8 @@
package com.example.demo.serviceImpl.bean; package com.example.demo.serviceImpl.bean;
import com.example.demo.domain.vo.bean.BeanConsumeFan;
import com.example.demo.domain.vo.bean.BeanConsumeGold;
import com.example.demo.domain.vo.bean.BeanConsumeLive;
import com.example.demo.domain.vo.bean.BeanPage;
import com.example.demo.domain.vo.bean.*;
import com.example.demo.domain.vo.coin.Gold; import com.example.demo.domain.vo.coin.Gold;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.RechargeAudit; import com.example.demo.domain.vo.coin.RechargeAudit;
import com.example.demo.domain.vo.coin.RechargeUser; import com.example.demo.domain.vo.coin.RechargeUser;
import com.example.demo.mapper.bean.BeanConsumeMapper; import com.example.demo.mapper.bean.BeanConsumeMapper;
@ -49,17 +47,27 @@ public class BeanConsumeServiceImpl implements BeanConsumeService {
List<BeanConsumeFan> beanConsumeFans = BeanConsumeMapper.selectFanBy(beanConsumeFan); List<BeanConsumeFan> beanConsumeFans = BeanConsumeMapper.selectFanBy(beanConsumeFan);
return new PageInfo<>(beanConsumeFans); return new PageInfo<>(beanConsumeFans);
} }
//筛选查询文章消费
@Override
public Object selectArticleBy(Integer pageNum, Integer pageSize, BeanConsumeArticle beanConsumeArticle) {
PageHelper.startPage(pageNum, pageSize);
List<BeanConsumeArticle> beanConsumeArticles = BeanConsumeMapper.selectArticleBy(beanConsumeArticle);
return new PageInfo<>(beanConsumeArticles);
}
@Override @Override
public BeanConsumeGold sumConsumeGold(BeanPage beanPage) {
public BeanConsumeGold sumConsumeGold(Page page) {
BeanConsumeGold gold = new BeanConsumeGold(); BeanConsumeGold gold = new BeanConsumeGold();
Integer payType = beanPage.getPayType();
Integer payType = page.getPayType();
if (payType==1) { if (payType==1) {
//直播消费合计 //直播消费合计
gold = BeanConsumeMapper.selectSumLiveBy(beanPage.getBeanConsumeLive());
gold = BeanConsumeMapper.selectSumLiveBy(page.getBeanConsumeLive());
}else if (payType==7) { }else if (payType==7) {
//充值消费合计 //充值消费合计
gold = BeanConsumeMapper.selectSumFansBy(beanPage.getBeanConsumeFan());
gold = BeanConsumeMapper.selectSumFansBy(page.getBeanConsumeFan());
}else if (payType==8) {
//文章消费合计
gold = BeanConsumeMapper.selectSumArticleBy(page.getBeanConsumeArticle());
} }
return gold; return gold;

117
src/main/resources/jindouMapper/BeanConsumeMapper.xml

@ -122,6 +122,7 @@
</where> </where>
) AS t ) AS t
</select> </select>
<!--筛选铁粉消费记录-->
<select id="selectFanBy" resultType="com.example.demo.domain.vo.bean.BeanConsumeFan"> <select id="selectFanBy" resultType="com.example.demo.domain.vo.bean.BeanConsumeFan">
SELECT fm.nickname AS name, SELECT fm.nickname AS name,
fm.jwcode, fm.jwcode,
@ -134,7 +135,7 @@
FROM fx_member fm FROM fx_member fm
INNER JOIN fx_yaoqing_records fyr ON fyr.uid = fm.id INNER JOIN fx_yaoqing_records fyr ON fyr.uid = fm.id
<where> <where>
fyr.pay_type IN (7)
fyr.pay_type = 7
<if test="beanConsumeFan.jwcode != null and beanConsumeFan.jwcode != ''"> <if test="beanConsumeFan.jwcode != null and beanConsumeFan.jwcode != ''">
AND fm.jwcode = #{beanConsumeFan.jwcode} AND fm.jwcode = #{beanConsumeFan.jwcode}
</if> </if>
@ -193,7 +194,121 @@
</where> </where>
) AS t ) AS t
</select> </select>
<!--筛选文章消费记录-->
<select id="selectArticleBy" resultType="com.example.demo.domain.vo.bean.BeanConsumeArticle">
SELECT fm.nickname AS name,
fm.jwcode,
fm.dept,
fyr.source_type AS type,
fyr.money AS beanNum,
fyr.source_id AS articleId,
fyr.source_name AS articleName,
(SELECT fm2.nickname
FROM fx_member fm2
WHERE fm2.jwcode = fyr.source_jwcode
LIMIT 1) AS author,
FROM_UNIXTIME(fyr.time, '%Y-%m-%d %H:%i:%s') AS consumeTime,
fyr.pay_type AS payType
FROM fx_member fm
INNER JOIN fx_yaoqing_records fyr ON fyr.uid = fm.id
<where>
fyr.pay_type = 8
<if test="beanConsumeArticle.jwcode != null and beanConsumeArticle.jwcode != ''">
AND fm.jwcode = #{beanConsumeArticle.jwcode}
</if>
<if test="beanConsumeArticle.dept != null and beanConsumeArticle.dept != ''">
AND fm.dept = #{beanConsumeArticle.dept}
</if>
<if test="beanConsumeArticle.author != null and beanConsumeArticle.author != ''">
AND (SELECT fm2.nickname
FROM fx_member fm2
WHERE fm2.jwcode = fyr.source_jwcode
LIMIT 1)=#{beanConsumeArticle.author}
</if>
<if test="beanConsumeArticle.ArticleName != null and beanConsumeArticle.ArticleName != ''">
AND fyr.source_name =#{beanConsumeArticle.ArticleName}
</if>
<if test="beanConsumeArticle.articleId != null and beanConsumeArticle.articleId != ''">
AND fyr.source_id =#{beanConsumeArticle.articleId}
</if>
<if test="beanConsumeArticle.startTime != null and beanConsumeArticle.endTime != null">
AND fyr.time BETWEEN UNIX_TIMESTAMP(#{beanConsumeArticle.startTime})
AND UNIX_TIMESTAMP(#{beanConsumeArticle.endTime})
</if>
</where>
<choose>
<when test="beanConsumeArticle.payMode == 0">
AND fyr.source_type IN (9, 10)
</when>
<when test="beanConsumeArticle.payMode == 1">
AND fyr.source_type = 11
</when>
<when test="beanConsumeArticle.payMode == 2">
AND fyr.source_type not in (9, 10,11)
</when>
<when test="beanConsumeArticle.sortField != null and beanConsumeArticle.sortField != '' and beanConsumeArticle.sortOrder != null and beanConsumeArticle.sortOrder != ''">
ORDER BY ${beanConsumeArticle.sortField} ${beanConsumeArticle.sortOrder}
</when>
<otherwise>
ORDER BY consumeTime DESC
</otherwise>
</choose>
</select>
<!--查询金豆文章消费-->
<select id="selectSumArticleBy" resultType="com.example.demo.domain.vo.bean.BeanConsumeGold">
SELECT
IFNULL(SUM(t.money_buy), 0) AS permanentBean,
IFNULL(SUM(t.money_free), 0) AS freeBean,
COUNT(*) AS totalNum
FROM ( SELECT
fyr.money_buy,
fyr.money_free,
fyr.time
FROM fx_member fm
INNER JOIN fx_yaoqing_records fyr ON fyr.uid = fm.id
<where>
fyr.pay_type = 8
<if test="beanConsumeArticle.jwcode != null and beanConsumeArticle.jwcode != ''">
AND fm.jwcode = #{beanConsumeArticle.jwcode}
</if>
<if test="beanConsumeArticle.dept != null and beanConsumeArticle.dept != ''">
AND fm.dept = #{beanConsumeArticle.dept}
</if>
<if test="beanConsumeArticle.ArticleName != null and beanConsumeArticle.ArticleName != ''">
AND fyr.source_name =#{beanConsumeArticle.ArticleName}
</if>
<if test="beanConsumeArticle.author != null and beanConsumeArticle.author != ''">
AND (SELECT fm2.nickname
FROM fx_member fm2
WHERE fm2.jwcode = fyr.source_jwcode
LIMIT 1)=#{beanConsumeArticle.author}
</if>
<if test="beanConsumeArticle.articleId != null and beanConsumeArticle.articleId != ''">
AND fyr.source_id =#{beanConsumeArticle.articleId}
</if>
<if test="beanConsumeArticle.startTime != null and beanConsumeArticle.endTime != null">
AND fyr.time BETWEEN UNIX_TIMESTAMP(#{beanConsumeArticle.startTime})
AND UNIX_TIMESTAMP(#{beanConsumeArticle.endTime})
</if>
</where>
<choose>
<when test="beanConsumeArticle.payMode == 0">
AND fyr.source_type IN (9, 10)
</when>
<when test="beanConsumeArticle.payMode == 1">
AND fyr.source_type = 11
</when>
<when test="beanConsumeArticle.payMode == 2">
AND fyr.source_type not in (9, 10,11)
</when>
</choose>
) as t
</select>
<!--获取直播礼物-->
<select id="getLiveGift" resultType="java.lang.String"> <select id="getLiveGift" resultType="java.lang.String">
SELECT DISTINCT SELECT DISTINCT
CASE CASE

Loading…
Cancel
Save