package com.nq.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.nq.dao.EChoMapper; import com.nq.dao.OrderEchoMapper; import com.nq.dao.UserAssetsMapper; import com.nq.enums.EStockType; import com.nq.enums.EUserAssets; import com.nq.pojo.EChoBean; import com.nq.pojo.OrderEchoBean; import com.nq.pojo.User; import com.nq.pojo.UserAssets; import com.nq.pojo.reponse.OrderEChoReponse; import com.nq.service.IEchoServices; import com.nq.service.IUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.ArrayList; import java.util.List; @Service public class EchoServices implements IEchoServices { @Autowired EChoMapper eChoMapper; @Autowired OrderEchoMapper orderEchoMapper; @Autowired IUserService iUserService; @Autowired private UserAssetsServices serAssetsServices; @Autowired private UserAssetsMapper userAssetsMapper; @Override public List queryList() { return eChoMapper.selectQueryAll(); } @Override public boolean buyECho(String eId, Integer money, HttpServletRequest request) { User user = this.iUserService.getCurrentRefreshUser(request); if (user == null) { return false; } EChoBean eChoBean = eChoMapper.selectById(Integer.parseInt(eId)); if (eChoBean == null) { return false; } else { OrderEchoBean orderEchoBean = new OrderEchoBean(); orderEchoBean.setEid(eChoBean.getId().toString()); orderEchoBean.setReturnOfRate(eChoBean.getReturnOfRate()); orderEchoBean.setUserId(user.getId() + ""); Long buyTime = System.currentTimeMillis(); orderEchoBean.setBuyTime(buyTime); Long sTime = Long.parseLong(eChoBean.getReturnTime())*86400000; Long endTime = buyTime +sTime; orderEchoBean.setEndTime(endTime);; orderEchoBean.setMoney(money.toString()); orderEchoBean.setState("1"); UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper() .eq(UserAssets::getUserId, orderEchoBean.getUserId()) .eq(UserAssets::getAccectType, "IN") ); userAssets.setAvailableBalance(userAssets.getAvailableBalance().subtract(new BigDecimal(money))); userAssetsMapper.updateById(userAssets); return orderEchoMapper.insert(orderEchoBean) >= 1; } } @Override public List queryOrderEcho(HttpServletRequest request) { User user = this.iUserService.getCurrentRefreshUser(request); if (user == null) { return new ArrayList<>(); } return orderEchoMapper.queryByUserId(user.getId()); } @Override public List queryALLOrderEcho() { return orderEchoMapper.queryAll(); } @Override public void sendMoney() { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("state", 1); queryWrapper.lt("end_time", System.currentTimeMillis()); List list = orderEchoMapper.selectList(queryWrapper); for (OrderEchoBean orderEchoBean : list) { BigDecimal money = new BigDecimal(orderEchoBean.getMoney()); // 本金 BigDecimal rate = new BigDecimal(orderEchoBean.getReturnOfRate()); // 收益率 // 将rate除以100,并向上取整 rate = rate.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP); // 本金*收益率*周期/365=收益金额 BigDecimal incomeAmount = money.multiply(rate); BigDecimal aml = incomeAmount.add(money); if (aml.compareTo(BigDecimal.ZERO) > 0) { UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper() .eq(UserAssets::getUserId, orderEchoBean.getUserId()) .eq(UserAssets::getAccectType, "IN") ); userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(aml)); userAssetsMapper.updateById(userAssets); orderEchoBean.setState("2"); orderEchoBean.setEarnings(incomeAmount.toString()); orderEchoMapper.updateById(orderEchoBean); } } } @Override public int insertEcho(EChoBean eChoBean) { return eChoMapper.insert(eChoBean); } @Override public int updateEcho(EChoBean eChoBean) { return eChoMapper.updateById(eChoBean); } @Override public int deletet(Integer id) { return eChoMapper.deleteById(id); } }