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<EChoBean> 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<UserAssets>()
|
.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<OrderEchoBean> queryOrderEcho(HttpServletRequest request) {
|
User user = this.iUserService.getCurrentRefreshUser(request);
|
if (user == null) {
|
return new ArrayList<>();
|
}
|
return orderEchoMapper.queryByUserId(user.getId());
|
}
|
|
@Override
|
public List<OrderEChoReponse> queryALLOrderEcho() {
|
return orderEchoMapper.queryAll();
|
}
|
|
@Override
|
public void sendMoney() {
|
QueryWrapper<OrderEchoBean> queryWrapper = new QueryWrapper<>();
|
queryWrapper.eq("state", 1);
|
queryWrapper.lt("end_time", System.currentTimeMillis());
|
List<OrderEchoBean> 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<UserAssets>()
|
.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);
|
}
|
}
|