Browse Source

充值次数与首充时间修改

milestone-20250702-金币重构一期
lijianlin 1 month ago
parent
commit
e6950a483f
  1. 11
      src/main/java/com/example/demo/controller/UserController.java
  2. 16
      src/main/java/com/example/demo/mapper/UserMapper.java
  3. 8
      src/main/java/com/example/demo/service/UserService.java
  4. 6
      src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java
  5. 25
      src/main/java/com/example/demo/serviceImpl/UserServiceImpl.java
  6. 3
      src/main/resources/mapper/AuditMapper.xml
  7. 26
      src/main/resources/mapper/UserMapper.xml

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

@ -68,5 +68,14 @@ public class UserController {
return Result.error("请检查属性");
}
}
//检查并更新所有用户的首充时间若有变化
@PostMapping("/updateFirstRecharge")
public Result updateFirstRecharge() {
try {
userService.updateFirstRecharge();
return Result.success("更新成功");
} catch (Exception e) {
return Result.error("更新失败");
}
}
}

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

@ -3,7 +3,12 @@ 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 lombok.Data;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
@ -24,11 +29,18 @@ public interface UserMapper {
void updateGold(User user);
User selectAllUser(String jwcode);
//查询充值次数
Integer selectRechargeNumByJwcode(Integer jwcode);
//获取用户表全部jwcode
List<Integer> getAllJwcode();
//获取某用户最早的充值订单
Date getEarliestRecharge(Integer jwcode);
//更新用户首充日期
void updateFirstRecharge(@Param("jwcode") Integer jwcode,
@Param("firstRecharge") Date firstRecharge);
void updateAllGold(User user);
void addUser(User user);
//根据精网号查询用户
User selectUserByJwcode(Integer jwcode);
}

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

@ -4,6 +4,8 @@ import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.GoldUser;
import java.util.List;
/**
* @program: gold-java
* @ClassName UserService
@ -19,8 +21,10 @@ public interface UserService {
GoldUser selectgold(String jwcode);
User selectAllUser(String jwcode);
//更新用户的全部金币
void updateAllGold(User user);
//新增用户
void addUser(User user);
//更新用户的首充时间
void updateFirstRecharge();
}

6
src/main/java/com/example/demo/serviceImpl/AuditServiceImpl.java

@ -4,6 +4,7 @@ import com.example.demo.Util.GoldTistV2;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.GoldUser;
import com.example.demo.domain.vo.RechargeAudit;
import com.example.demo.domain.vo.RefundAudit;
import com.example.demo.mapper.AuditMapper;
@ -72,7 +73,8 @@ public class AuditServiceImpl implements AuditService {
if (order.getType()==0){ //充值
//更新用户余额
User update = new User();
Integer rechargeNum = userMapper.selectRechargeNumByJwcode(order.getJwcode());
GoldUser gold = userMapper.selectGold(order.getJwcode().toString());
update.setJwcode(order.getJwcode()); //精网号
update.setSumPermanentGold(order.getPermanentGold()); //历史永久金币
update.setSumFreeJune(order.getFreeJune()); //历史六月免费金币
@ -82,7 +84,7 @@ public class AuditServiceImpl implements AuditService {
update.setCurrentFreeJune(order.getFreeJune()); //当前六月免费金币
update.setCurrentFreeDecember(order.getFreeDecember()); //当前十二月免费金币
update.setCurrentTaskGold(order.getTaskGold()); //当前任务金币
update.setRechargeNum(rechargeNum+1); //充值次数加一
update.setRechargeNum(gold.getRechargeNum()+1); //充值次数加一
auditMapper.updateUserGold(update);
//erp增加充值数据
// if(update.getJwcode().equals(94226013)){

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

@ -7,8 +7,12 @@ 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.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
* @ClassName UserServiceImpl
@ -46,6 +50,27 @@ public class UserServiceImpl implements UserService {
public void addUser(User user) {
userMapper.addUser(user);
}
/*
每小时更新用户首充时间
*/
@Override
@Scheduled(cron = "0 0 0 * * ?")
public void updateFirstRecharge() {
List<Integer> jwcodeList = userMapper.getAllJwcode();
for(Integer jwcode : jwcodeList){
Date earliestPayTime = userMapper.getEarliestRecharge(jwcode);
if (earliestPayTime != null){
//获取用户的首充时间
Date currentFirstRecharge = userMapper.selectUserByJwcode(jwcode).getFirstRecharge();
//弱国首充时间为空或与最早支付时间不一致则更新
if (currentFirstRecharge == null || !currentFirstRecharge.after(earliestPayTime)){
userMapper.updateFirstRecharge(jwcode, earliestPayTime);
System.out.println("更新了用户" + jwcode + "的首充时间为"+earliestPayTime);
}
}
}
}
@Override
public GoldUser selectgold(String jwcode) {

3
src/main/resources/mapper/AuditMapper.xml

@ -22,7 +22,8 @@
current_permanent_gold = current_permanent_gold + COALESCE(#{currentPermanentGold},0),
current_free_june = current_free_june + COALESCE(#{currentFreeJune},0),
current_free_december = current_free_december + COALESCE(#{currentFreeDecember},0),
current_task_gold = current_task_gold + COALESCE(#{currentTaskGold},0)
current_task_gold = current_task_gold + COALESCE(#{currentTaskGold},0),
recharge_num = recharge_num + COALESCE(#{rechargeNum},0)
where jwcode = #{jwcode}
</update>

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

@ -46,13 +46,27 @@
current_free_june AS "NowFreeJune",
current_free_december AS "NowFreeDecember",
current_task_gold AS "NowTaskGold",
consume_num AS "consumeNum"
consume_num AS "consumeNum",
recharge_num AS "rechargeNum"
FROM user
WHERE jwcode = #{jwcode}
</select>
<select id="selectRechargeNumByJwcode" resultType="java.lang.Integer">
select recharge_num from user where jwcode = #{jwcode}
<select id="getAllJwcode" resultType="java.lang.Integer">
SELECT jwcode FROM user
</select>
<!--查用户最早的充值订单-->
<select id="getEarliestRecharge" resultType="java.util.Date">
select min(pay_time)
from user_gold_record
where jwcode = #{jwcode}
and type = 0 and audit_status in (1,3)
</select>
<select id="selectUserByJwcode" resultType="com.example.demo.domain.entity.User">
SELECT *
FROM user
WHERE jwcode = #{jwcode}
</select>
<!-- 根据精网号更新数据 -->
<update id="updateGold" parameterType="com.example.demo.domain.entity.User">
@ -83,4 +97,10 @@
where jwcode = #{jwcode}
</update>
<!--更新用户首充时间-->
<update id="updateFirstRecharge">
update user
set first_recharge = #{firstRecharge}
where jwcode = #{jwcode}
</update>
</mapper>
Loading…
Cancel
Save