You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.Detail; import com.example.demo.domain.entity.User; import com.example.demo.domain.vo.UserVo; import com.example.demo.mapper.UserMapper; import com.example.demo.sevice.UserSevice; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; import org.springframework.cache.annotation.CacheConfig; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import java.math.BigDecimal; import java.util.List; @Transactional @Service @RequiredArgsConstructor @CacheConfig(cacheNames = "user") public class UserServiceImpl implements UserSevice {
private final UserMapper userMapper; @Override public UserVo search(UserVo userVo) throws Exception{ User sUser = userMapper.select(userVo.getJwcode());
if(ObjectUtils.isEmpty(sUser)){ throw new Exception("无此精网号"); } if(!userVo.getArea().equals("总部")){ if(!sUser.getArea().equals(userVo.getArea())){ throw new Exception("该地区查无此号"); } } return userMapper.selectA(userVo); } @Override public PageInfo<User> searchForPage(Integer pageNum, Integer pageSize, User user) { PageHelper.startPage(pageNum,pageSize); List<User> list= userMapper.selectAll(user); return new PageInfo<>(list); }
@Override public List<String> area() { return userMapper.selectArea(); }
@Override public List<String> jwcode() { return userMapper.selectJwcode(); }
@Override public int add(User user) throws Exception { User sUser = userMapper.select(user.getJwcode()); if (!ObjectUtils.isEmpty(sUser)){ throw new Exception("已存在此用户"); } BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); user.setPassword(passwordEncoder.encode("123")); return userMapper.add(user); }
//设置免费金币
// public User updateFreecoin(Detail userConsumeCoin) {
//
// String jwcode = userConsumeCoin.getJwcode();
// User user = userMapper.get(jwcode);
//
// //前端三币之和:allGold
// BigDecimal allGold = userConsumeCoin.getAllGold();
// //数据表
// BigDecimal sum = user.getFree6().add(user.getFree12()).add(user.getCoreJb()).add(user.getBuyJb());
// //前端提供免费金币,任务,充值金币
// BigDecimal freeSumCoin = userConsumeCoin.getFreeCoin().abs();
//// BigDecimal rechargeSumCoin = userConsumeCoin.getRechargeSumCoin();
//// BigDecimal taskSumCoin = userConsumeCoin.getTaskSumCoin();
// System.out.println(freeSumCoin+"---------freecoin");
// if(allGold.compareTo(sum)<=0 ){
// if (freeSumCoin == null) {
// // 根据业务需求处理 null 值
// System.out.println("000000000000000000");
// return null; // 或者抛出异常,或者设置默认行为
// }else{
//// 如果返回 -1,则调用 compareTo 的 BigDecimal 小于参数。
//// 如果返回 0,则两者相等。
//// 如果返回 1,则调用 compareTo 的 BigDecimal 大于参数。
// if(user.getFree6().compareTo(freeSumCoin)==1){
// //rechargeSumCoin小,直接减
// BigDecimal newFree6 = user.getFree6().subtract(freeSumCoin);
// System.out.println(newFree6+"_____newFree61---");
// System.out.println(user.getFree6()+"_____newFree6---");
// System.out.println(user.getFree12()+"_____newFree12---");
// user.setFree6(newFree6);
// System.out.println("1111111111111");
// return user;
// }else if(user.getFree6().compareTo(freeSumCoin)==-1){
// BigDecimal subtract = freeSumCoin.subtract(user.getFree6());//还差多少免费金币
// BigDecimal subtract1 = user.getFree12().subtract(subtract);
// user.setFree12(subtract1);
// user.setFree6(BigDecimal.ZERO);
// System.out.println(user.getFree6()+"_____newFree6---");
// System.out.println(user.getFree12()+"_____newFree12---");
// System.out.println("22222222222222222");
// return user;
// }else if(user.getFree6().compareTo(freeSumCoin)==0){
// user.setFree6(BigDecimal.ZERO);
// System.out.println(user.getFree6()+"_____newFree6---");
// System.out.println(user.getFree12()+"_____newFree12---");
// System.out.println("33333333333333333333");
// return user;
// }
//
// }
//
//
// }
// System.out.println("金币数不够,请前去去充值");
//
// return null;
//
// }
public User updateFreecoin(Detail userConsumeCoin) { // 获取用户消费的免费金币,并取绝对值确保为正数
BigDecimal newfree = userConsumeCoin.getFreeCoin().abs(); String jwcode = userConsumeCoin.getJwcode(); User user = userMapper.get(jwcode);
BigDecimal free6 = user.getFree6(); BigDecimal free12 = user.getFree12();
// 先尝试从 free6 中扣除
if (free6.compareTo(newfree) >= 0) { // free6 足够支付新消费的免费金币
free6 = free6.subtract(newfree); user.setFree6(free6); System.out.println("只花了free6 "); } else { // free6 不足以支付,需要从 free12 中扣除剩余部分
BigDecimal remaining = newfree.subtract(free6); free6 = BigDecimal.ZERO; free12 = free12.subtract(remaining); user.setFree6(free6); user.setFree12(free12); System.out.println("花了free6 和free12."); }
// 更新用户对象以反映新的余额
int result = userMapper.update(user); if (result != 1) { throw new RuntimeException("无法实现用户表金币更新"); }
return user; }
}
|