Browse Source

消耗更正以及用户卡片信息

huangqizheng/feature-20250626103451-权限页面
sunjiabei 7 days ago
parent
commit
2ed53a5326
  1. 16
      src/main/java/com/example/demo/controller/ConsumeController.java
  2. 37
      src/main/java/com/example/demo/controller/UserController.java
  3. 2
      src/main/java/com/example/demo/domain/vo/ConsumeUser.java
  4. 15
      src/main/java/com/example/demo/domain/vo/GoldUser.java
  5. 2
      src/main/java/com/example/demo/domain/vo/Page.java
  6. 6
      src/main/java/com/example/demo/mapper/ConsumeMapper.java
  7. 19
      src/main/java/com/example/demo/mapper/UserMapper.java
  8. 13
      src/main/java/com/example/demo/service/ConsumeService.java
  9. 17
      src/main/java/com/example/demo/service/UserService.java
  10. 57
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  11. 31
      src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java
  12. 4
      src/main/resources/mapper/ConsumeMapper.xml
  13. 25
      src/main/resources/mapper/UserMapper.xml

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

@ -1,6 +1,6 @@
package com.example.demo.controller;
import com.example.demo.domain.vo.Consume;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.Result;
@ -11,8 +11,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @program: gold-java
* @ClassName ConsumeController
@ -55,7 +53,7 @@ public class ConsumeController {
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(consumeService.selectBy(page.getPageNum(), page.getPageSize(), page.getConsume()));
return Result.success(consumeService.selectBy(page.getPageNum(), page.getPageSize(), page.getConsumeUser()));
}
}
@ -67,11 +65,13 @@ public class ConsumeController {
return Result.success(gold);
}
@PostMapping("/selectUser")
public Result selectUser() {
Gold gold = consumeService.statsGold();
return Result.success(gold);
//消耗金币统计
@PostMapping("/add")
public Result add(@RequestBody UserGoldRecord userGoldRecord) {
consumeService.add(userGoldRecord);
return Result.success();
}
}

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

@ -0,0 +1,37 @@
package com.example.demo.controller;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.GoldUser;
import com.example.demo.domain.vo.Result;
import com.example.demo.service.ConsumeService;
import com.example.demo.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @program: gold-java
* @ClassName UserController
* @description:
* @author: Double
* @create: 202506-25 10:25
* @Version 1.0
**/
@RestController
@RequestMapping("/user")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/selectUser")
public Result selectUser(@RequestBody GoldUser user) {
user = userService.selectUser(user.getJwcode().toString());
return Result.success(user);
}
}

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

@ -20,7 +20,7 @@ import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Consume implements Serializable {
public class ConsumeUser implements Serializable {
private static final long serialVersionUID = 1L;

15
src/main/java/com/example/demo/domain/vo/GoldUser.java

@ -1,9 +1,12 @@
package com.example.demo.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @program: gold-java
* @ClassName ConsumeUser
@ -21,6 +24,16 @@ public class GoldUser {
private Integer jwcode; // 精网号
private String market; // 所属地区
private Integer NowSumGold; // 当前金币总数
private Integer NowPermanentGold; // 当前永久金币
private Integer NowFreeGold; // 当前免费金币
private Integer NowTaskGold; // 当前任务金币
private Integer historySumGold; // 历史金币总数
private Integer historyPermanentGold; // 历史永久金币
private Integer historyFreeGold; // 历史免费金币
private Integer historyTaskGold; // 历史任务金币
private Integer rechargeNum; // 充值次数
private Integer consumeNum; // 消费次数
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "Asia/Shanghai")
private Date firstRecharge; // 首充日期
}

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

@ -20,7 +20,7 @@ public class Page {
private Integer pageNum;
private Integer pageSize;
private GoldDetail goldDetail;
private Consume consume;
private ConsumeUser consumeUser;
private User user;
}

6
src/main/java/com/example/demo/mapper/ConsumeMapper.java

@ -1,6 +1,6 @@
package com.example.demo.mapper;
import com.example.demo.domain.vo.Consume;
import com.example.demo.domain.vo.ConsumeUser;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -17,7 +17,7 @@ import java.util.List;
@Mapper
public interface ConsumeMapper {
List<Consume> selectAll();
List<ConsumeUser> selectAll();
List<Consume> selectBy(Consume consume);
List<ConsumeUser> selectBy(ConsumeUser consumeUser);
}

19
src/main/java/com/example/demo/mapper/UserMapper.java

@ -0,0 +1,19 @@
package com.example.demo.mapper;
import com.example.demo.domain.vo.GoldUser;
import org.apache.ibatis.annotations.Mapper;
/**
* @program: gold-java
* @ClassName UserMapper
* @description:
* @author: Double
* @create: 202506-25 10:40
* @Version 1.0
**/
@Mapper
public interface UserMapper {
GoldUser selectUser(String jwcode);
}

13
src/main/java/com/example/demo/service/ConsumeService.java

@ -1,13 +1,11 @@
package com.example.demo.service;
import com.example.demo.domain.vo.Consume;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.ConsumeUser;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.GoldDetail;
import com.github.pagehelper.PageInfo;
import java.util.List;
/**
* @program: gold-java
* @ClassName ConsumeService
@ -16,11 +14,14 @@ import java.util.List;
* @create: 202506-23 13:58
* @Version 1.0
**/
public interface ConsumeService {
PageInfo<Consume> selectAll(Integer pageNum, Integer pageSize);
PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize);
Gold statsGold();
PageInfo<Consume> selectBy(Integer pageNum, Integer pageSize, Consume consume);
PageInfo<ConsumeUser> selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser);
void add(UserGoldRecord userGoldRecord);
}

17
src/main/java/com/example/demo/service/UserService.java

@ -0,0 +1,17 @@
package com.example.demo.service;
import com.example.demo.domain.vo.GoldUser;
/**
* @program: gold-java
* @ClassName UserService
* @description:
* @author: Double
* @create: 202506-25 10:30
* @Version 1.0
**/
public interface UserService {
GoldUser selectUser(String jwcode);
}

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

@ -1,6 +1,7 @@
package com.example.demo.serviceImpl;
import com.example.demo.domain.vo.Consume;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.ConsumeUser;
import com.example.demo.domain.vo.Gold;
import com.example.demo.mapper.ConsumeMapper;
import com.example.demo.service.ConsumeService;
@ -9,7 +10,11 @@ import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @program: gold-java
@ -28,17 +33,17 @@ public class ConsumeServiceImpl implements ConsumeService {
//消耗明细
@Override
public PageInfo<Consume> selectAll(Integer pageNum, Integer pageSize) {
public PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize) {
PageHelper.startPage(pageNum, pageSize);
List<Consume> consumes = consumeMapper.selectAll();
return new PageInfo<>(consumes);
List<ConsumeUser> consumeUsers = consumeMapper.selectAll();
return new PageInfo<>(consumeUsers);
}
//消耗金币统计
@Override
public Gold statsGold() {
Gold gold = new Gold();
List<Consume> consumes = consumeMapper.selectAll();
List<ConsumeUser> consumeUsers = consumeMapper.selectAll();
// 初始化累加器
int permanentGoldSum = 0;
@ -46,18 +51,18 @@ public class ConsumeServiceImpl implements ConsumeService {
int taskGoldSum = 0;
// 遍历消费记录并累加金币
for (Consume consume : consumes) {
for (ConsumeUser consumeUser : consumeUsers) {
// 累加永久金币
if (consume.getPermanentGold() != null) {
permanentGoldSum += consume.getPermanentGold();
if (consumeUser.getPermanentGold() != null) {
permanentGoldSum += consumeUser.getPermanentGold();
}
// 累加免费金币
if (consume.getFreeGold() != null) {
freeGoldSum += consume.getFreeGold();
if (consumeUser.getFreeGold() != null) {
freeGoldSum += consumeUser.getFreeGold();
}
// 累加任务金币
if (consume.getTaskGold() != null) {
taskGoldSum += consume.getTaskGold();
if (consumeUser.getTaskGold() != null) {
taskGoldSum += consumeUser.getTaskGold();
}
}
@ -71,9 +76,31 @@ public class ConsumeServiceImpl implements ConsumeService {
//消耗明细筛选
@Override
public PageInfo<Consume> selectBy(Integer pageNum, Integer pageSize, Consume consume) {
public PageInfo<ConsumeUser> selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser) {
PageHelper.startPage(pageNum, pageSize);
List<Consume> consumes = consumeMapper.selectBy(consume);
return new PageInfo<>(consumes);
List<ConsumeUser> consumeUsers = consumeMapper.selectBy(consumeUser);
return new PageInfo<>(consumeUsers);
}
//新增消耗
@Override
public void add(UserGoldRecord userGoldRecord) {
// 获取当前时间戳部分
String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
// 获取自增计数器部分三位数不足补零
AtomicInteger atomicInteger = new AtomicInteger(0);
int count = atomicInteger.getAndUpdate(c -> (c >= 999) ? 0 : c + 1);
String counterPart = String.format("%03d", count);
// 生成随机数部分四位数
Random RANDOM = new Random();
int randomNum = RANDOM.nextInt(9000) + 1000;
//订单号生成
userGoldRecord.setOrderCode(timestampPart + counterPart + randomNum);
}
}

31
src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java

@ -0,0 +1,31 @@
package com.example.demo.serviceImpl;
import com.example.demo.domain.vo.GoldUser;
import com.example.demo.mapper.ConsumeMapper;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @program: gold-java
* @ClassName UserServiceImpl
* @description:
* @author: Double
* @create: 202506-25 10:32
* @Version 1.0
**/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public GoldUser selectUser(String jwcode) {
GoldUser user = userMapper.selectUser(jwcode);
return user;
}
}

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

@ -3,7 +3,7 @@
<mapper namespace="com.example.demo.mapper.ConsumeMapper">
<!-- 查询所有消费记录 -->
<select id="selectAll" resultType="com.example.demo.domain.vo.Consume">
<select id="selectAll" resultType="com.example.demo.domain.vo.ConsumeUser">
SELECT u.name AS name,
u.jwcode AS jwcode,
u.market AS market,
@ -25,7 +25,7 @@
</select>
<!-- 查询筛选后消费记录 -->
<select id="selectBy" resultType="com.example.demo.domain.vo.Consume">
<select id="selectBy" resultType="com.example.demo.domain.vo.ConsumeUser">
SELECT u.name AS name,
u.jwcode AS jwcode,
u.market AS market,

25
src/main/resources/mapper/UserMapper.xml

@ -0,0 +1,25 @@
<?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.UserMapper">
<!-- 根据精网号查询用户信息 -->
<select id="selectUser" resultType="com.example.demo.domain.vo.GoldUser">
SELECT
name AS "name",
jwcode AS "jwcode",
market AS "market",
(COALESCE(current_permanent_gold, 0) + COALESCE(current_free_june, 0) + COALESCE(current_free_december, 0) + COALESCE(current_task_gold, 0)) AS "nowSumGold",
current_permanent_gold AS "nowPermanentGold",
(COALESCE(current_free_june, 0) + COALESCE(current_free_december, 0)) AS "nowFreeGold",
current_task_gold AS "nowTaskGold",
(COALESCE(sum_permanent_gold, 0) + COALESCE(sum_free_june, 0) + COALESCE(sum_free_december, 0) + COALESCE(sum_task_gold, 0)) AS "historySumGold",
sum_permanent_gold AS "historyPermanentGold",
(COALESCE(sum_free_june, 0) + COALESCE(sum_free_december, 0)) AS "historyFreeGold",
sum_task_gold AS "historyTaskGold",
recharge_num AS "rechargeNum",
consume_num AS "consumeNum",
first_recharge AS "firstRecharge"
FROM user
WHERE jwcode = #{jwcode}
</select>
</mapper>
Loading…
Cancel
Save