Browse Source

新增消耗

feat0702/lhl
sunjiabei 1 week ago
parent
commit
339410fc7c
  1. 5
      src/main/java/com/example/demo/controller/ConsumeController.java
  2. 1
      src/main/java/com/example/demo/domain/vo/ConsumeUser.java
  3. 2
      src/main/java/com/example/demo/domain/vo/GoldUser.java
  4. 3
      src/main/java/com/example/demo/mapper/ConsumeMapper.java
  5. 6
      src/main/java/com/example/demo/mapper/UserMapper.java
  6. 2
      src/main/java/com/example/demo/service/ConsumeService.java
  7. 2
      src/main/java/com/example/demo/service/UserService.java
  8. 55
      src/main/java/com/example/demo/serviceImpl/ConsumeServiceImpl.java
  9. 7
      src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java
  10. 37
      src/main/resources/mapper/ConsumeMapper.xml
  11. 26
      src/main/resources/mapper/UserMapper.xml

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

@ -1,6 +1,7 @@
package com.example.demo.controller; package com.example.demo.controller;
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.Gold; import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.Page; import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.Result; import com.example.demo.domain.vo.Result;
@ -67,8 +68,8 @@ public class ConsumeController {
//消耗金币统计 //消耗金币统计
@PostMapping("/add") @PostMapping("/add")
public Result add(@RequestBody UserGoldRecord userGoldRecord) {
consumeService.add(userGoldRecord);
public Result add(@RequestBody ConsumeUser consumeUser) {
consumeService.add(consumeUser);
return Result.success(); return Result.success();
} }

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

@ -34,6 +34,7 @@ public class ConsumeUser implements Serializable {
private Integer freeGold; // 免费金币 private Integer freeGold; // 免费金币
private Integer taskGold; // 任务金币 private Integer taskGold; // 任务金币
private String remark; // 备注 private String remark; // 备注
private Integer adminId; //提交人Id
private String adminName; //提交人姓名 private String adminName; //提交人姓名
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")

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

@ -26,6 +26,8 @@ public class GoldUser {
private Integer NowSumGold; // 当前金币总数 private Integer NowSumGold; // 当前金币总数
private Integer NowPermanentGold; // 当前永久金币 private Integer NowPermanentGold; // 当前永久金币
private Integer NowFreeGold; // 当前免费金币 private Integer NowFreeGold; // 当前免费金币
private Integer NowFreeJune; // 免费金币6月
private Integer NowFreeDecember; // 免费金币12月
private Integer NowTaskGold; // 当前任务金币 private Integer NowTaskGold; // 当前任务金币
private Integer historySumGold; // 历史金币总数 private Integer historySumGold; // 历史金币总数
private Integer historyPermanentGold; // 历史永久金币 private Integer historyPermanentGold; // 历史永久金币

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

@ -1,5 +1,6 @@
package com.example.demo.mapper; package com.example.demo.mapper;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.ConsumeUser; import com.example.demo.domain.vo.ConsumeUser;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -20,4 +21,6 @@ public interface ConsumeMapper {
List<ConsumeUser> selectAll(); List<ConsumeUser> selectAll();
List<ConsumeUser> selectBy(ConsumeUser consumeUser); List<ConsumeUser> selectBy(ConsumeUser consumeUser);
void add(UserGoldRecord userGoldRecord);
} }

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

@ -1,5 +1,7 @@
package com.example.demo.mapper; package com.example.demo.mapper;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.GoldUser; import com.example.demo.domain.vo.GoldUser;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@ -16,4 +18,8 @@ import org.apache.ibatis.annotations.Mapper;
public interface UserMapper { public interface UserMapper {
GoldUser selectUser(String jwcode); GoldUser selectUser(String jwcode);
GoldUser selectGold(String jwcode);
void updateGold(User user);
} }

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

@ -23,5 +23,5 @@ public interface ConsumeService {
PageInfo<ConsumeUser> selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser); PageInfo<ConsumeUser> selectBy(Integer pageNum, Integer pageSize, ConsumeUser consumeUser);
void add(UserGoldRecord userGoldRecord);
void add(ConsumeUser consumeUser);
} }

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

@ -1,5 +1,6 @@
package com.example.demo.service; package com.example.demo.service;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.GoldUser; import com.example.demo.domain.vo.GoldUser;
/** /**
@ -14,4 +15,5 @@ import com.example.demo.domain.vo.GoldUser;
public interface UserService { public interface UserService {
GoldUser selectUser(String jwcode); GoldUser selectUser(String jwcode);
GoldUser selectgold(String jwcode);
} }

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

@ -1,17 +1,22 @@
package com.example.demo.serviceImpl; package com.example.demo.serviceImpl;
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;
import com.example.demo.domain.vo.Gold; import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.GoldUser;
import com.example.demo.mapper.ConsumeMapper; import com.example.demo.mapper.ConsumeMapper;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.ConsumeService; import com.example.demo.service.ConsumeService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; 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.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@ -31,6 +36,9 @@ public class ConsumeServiceImpl implements ConsumeService {
@Autowired @Autowired
private ConsumeMapper consumeMapper; private ConsumeMapper consumeMapper;
@Autowired
private UserMapper userMapper;
//消耗明细 //消耗明细
@Override @Override
public PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize) { public PageInfo<ConsumeUser> selectAll(Integer pageNum, Integer pageSize) {
@ -84,7 +92,8 @@ public class ConsumeServiceImpl implements ConsumeService {
//新增消耗 //新增消耗
@Override @Override
public void add(UserGoldRecord userGoldRecord) {
public void add(ConsumeUser consumeUser) {
UserGoldRecord userGoldRecord = new UserGoldRecord();
// 获取当前时间戳部分 // 获取当前时间戳部分
String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS")); String timestampPart = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));
@ -101,6 +110,48 @@ public class ConsumeServiceImpl implements ConsumeService {
//订单号生成 //订单号生成
userGoldRecord.setOrderCode(timestampPart + counterPart + randomNum); userGoldRecord.setOrderCode(timestampPart + counterPart + randomNum);
userGoldRecord.setJwcode(consumeUser.getJwcode());
userGoldRecord.setGoodsName(consumeUser.getGoodsName());
userGoldRecord.setSumGold(consumeUser.getSumGold());
userGoldRecord.setPermanentGold(consumeUser.getPermanentGold());
// 获取当前月份1-12
int currentMonth = LocalDate.now().getMonthValue();
GoldUser gold = userMapper.selectGold(consumeUser.getJwcode().toString());
// 根据当前月份设置对应字段
if (currentMonth >= 1 && currentMonth <= 6) {
// 1-6月设置6月额度12月保持默认值
if(consumeUser.getFreeGold()>gold.getNowFreeJune()) {
userGoldRecord.setFreeJune(gold.getNowFreeJune());
userGoldRecord.setFreeDecember(consumeUser.getFreeGold()-gold.getNowFreeJune());
}else {
userGoldRecord.setFreeJune(consumeUser.getFreeGold());
userGoldRecord.setFreeDecember(0);
}
} else {
// 7-12月设置12月额度6月保持默认值
if(consumeUser.getFreeGold()>gold.getNowFreeDecember()) {
userGoldRecord.setFreeDecember(gold.getNowFreeDecember());
userGoldRecord.setFreeJune(consumeUser.getFreeGold()-gold.getNowFreeDecember());
}else {
userGoldRecord.setFreeDecember(consumeUser.getFreeGold());
userGoldRecord.setFreeJune(0);
}
}
userGoldRecord.setTaskGold(consumeUser.getTaskGold());
userGoldRecord.setRemark(consumeUser.getRemark());
userGoldRecord.setType((byte) 1);
userGoldRecord.setIsRefund((byte) 0);
userGoldRecord.setAdminId(consumeUser.getAdminId());
userGoldRecord.setCreateTime(new Date());
userGoldRecord.setPayTime(new Date());
consumeMapper.add(userGoldRecord);
User user = new User();
user.setJwcode(userGoldRecord.getJwcode());
user.setCurrentPermanentGold(gold.getNowPermanentGold()-consumeUser.getPermanentGold());
user.setCurrentFreeJune(gold.getNowFreeJune()-userGoldRecord.getFreeJune());
user.setCurrentFreeDecember(gold.getNowFreeDecember()-userGoldRecord.getFreeDecember());
user.setCurrentTaskGold(gold.getNowTaskGold()-consumeUser.getTaskGold());
user.setConsumeNum(gold.getConsumeNum()-1);
userMapper.updateGold(user);
} }
} }

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

@ -1,5 +1,6 @@
package com.example.demo.serviceImpl; package com.example.demo.serviceImpl;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.GoldUser; import com.example.demo.domain.vo.GoldUser;
import com.example.demo.mapper.ConsumeMapper; import com.example.demo.mapper.ConsumeMapper;
import com.example.demo.mapper.UserMapper; import com.example.demo.mapper.UserMapper;
@ -28,4 +29,10 @@ public class UserServiceImpl implements UserService {
GoldUser user = userMapper.selectUser(jwcode); GoldUser user = userMapper.selectUser(jwcode);
return user; return user;
} }
@Override
public GoldUser selectgold(String jwcode) {
GoldUser gold = userMapper.selectGold(jwcode);
return gold;
}
} }

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

@ -59,4 +59,41 @@
</if> </if>
</where> </where>
</select> </select>
<insert id="add" parameterType="com.example.demo.domain.entity.UserGoldRecord" useGeneratedKeys="true" keyProperty="id">
INSERT INTO user_gold_record
<trim prefix="(" suffix=")" suffixOverrides=",">
order_code,
jwcode,
sum_gold,
permanent_gold,
free_june,
free_december,
task_gold,
goods_name,
remark,
type,
is_refund,
admin_id,
create_time,
pay_time
</trim>
VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">
#{orderCode},
#{jwcode},
#{sumGold},
#{permanentGold},
#{freeJune},
#{freeDecember},
#{taskGold},
#{goodsName},
#{remark},
#{type},
#{isRefund},
#{adminId},
#{createTime},
#{payTime}
</trim>
</insert>
</mapper> </mapper>

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

@ -22,4 +22,30 @@
FROM user FROM user
WHERE jwcode = #{jwcode} WHERE jwcode = #{jwcode}
</select> </select>
<!-- 根据精网号查询金币余额 -->
<select id="selectGold" resultType="com.example.demo.domain.vo.GoldUser">
SELECT
current_permanent_gold AS "NowPermanentGold",
(COALESCE(current_free_june, 0) + COALESCE(current_free_december, 0)) AS "NowFreeGold",
current_free_june AS "NowFreeJune",
current_free_december AS "NowFreeDecember",
current_task_gold AS "NowTaskGold",
consume_num AS "consumeNum"
FROM user
WHERE jwcode = #{jwcode}
</select>
<!-- 根据精网号更新数据 -->
<update id="updateGold" parameterType="com.example.demo.domain.entity.User">
UPDATE user
SET
current_permanent_gold = #{currentPermanentGold},
current_free_june = #{currentFreeJune},
current_free_december = #{currentFreeDecember},
current_task_gold = #{currentTaskGold},
consume_num = #{consumeNum},
update_time = NOW()
WHERE jwcode = #{jwcode}
</update>
</mapper> </mapper>
Loading…
Cancel
Save