package com.nq.controller;
|
|
import cn.hutool.core.convert.Convert;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.nq.common.ServerResponse;
|
import com.nq.dao.*;
|
import com.nq.enums.EStockType;
|
import com.nq.enums.EUserAssets;
|
import com.nq.pojo.*;
|
import com.nq.service.IPriceServices;
|
import com.nq.service.IUserService;
|
import com.nq.service.UserPositionCheckDzService;
|
import com.nq.service.impl.UserAssetsServices;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import java.math.BigDecimal;
|
|
/**
|
* @program: dabaogp
|
* @description: 大宗交易审核
|
* @create: 2024-07-02 14:33
|
**/
|
@Controller
|
@RequestMapping({"/api/dzCheck/"})
|
public class UserPositionCheckDzController {
|
|
@Autowired
|
UserPositionCheckDzService service;
|
|
@Autowired
|
UserPositionCheckDzMapper mapper;
|
|
@Autowired
|
UserPositionMapper userPositionMapper;
|
|
@Autowired
|
UserAssetsServices userAssetsServices;
|
|
@Autowired
|
UserMapper userMapper;
|
|
@Autowired
|
IPriceServices priceServices;
|
|
@Autowired
|
StockDzMapper stockDzMapper;
|
|
//大宗交易审核列表
|
@RequestMapping({"getList.do"})
|
@ResponseBody
|
public ServerResponse getList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
|
@RequestParam(value = "pageSize", defaultValue = "15") int pageSize,
|
@RequestParam(value = "type", required = false) Integer type,
|
@RequestParam(value = "stockCode", required = false)String stockCode,
|
@RequestParam(value = "agentId", required = false) String agentId) {
|
Page<UserPositionCheckDz> page = Page.of(pageNum, pageSize);
|
LambdaQueryWrapper<UserPositionCheckDz> queryWrapper = new LambdaQueryWrapper<UserPositionCheckDz>();
|
|
// 判断type是否为空,不为空则加入查询条件
|
if (type != null) {
|
queryWrapper.eq(UserPositionCheckDz::getCheckType, type);
|
}
|
|
if (agentId != null) {
|
queryWrapper.eq(UserPositionCheckDz::getAgentId, agentId);
|
}
|
|
// 判断stockCode是否为空,不为空则加入查询条件
|
if (stockCode != null) {
|
queryWrapper.eq(UserPositionCheckDz::getStockCode, stockCode);
|
}
|
queryWrapper.orderByDesc(UserPositionCheckDz::getBuyOrderTime);
|
Page<UserPositionCheckDz> pageList = service.page(page, queryWrapper);
|
return ServerResponse.createBySuccess(pageList);
|
}
|
|
//大宗审核
|
@RequestMapping({"check.do"})
|
@ResponseBody
|
public ServerResponse check(@RequestParam(value = "id") Integer id,
|
@RequestParam(value = "checkType") Integer checkType,
|
@RequestParam(value = "orderNum") Integer orderNum) {
|
if(checkType != 2 && (id == null || checkType == null || orderNum == null)){
|
return ServerResponse.createByErrorMsg("参数不能为空");
|
}
|
UserPositionCheckDz userPositionCheckDz = service.getById(id);
|
if(userPositionCheckDz == null){
|
return ServerResponse.createByErrorMsg("订单不存在");
|
}
|
if(userPositionCheckDz.getCheckType() != 0){
|
return ServerResponse.createByErrorMsg("订单已审核");
|
}
|
if(checkType == 2){
|
userPositionCheckDz.setCheckType(checkType);
|
service.updateById(userPositionCheckDz);
|
return ServerResponse.createBySuccess("审核成功");
|
}
|
User user = userMapper.selectById(userPositionCheckDz.getUserId());
|
|
StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("id", userPositionCheckDz.getDzId()));
|
|
UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("IN", user.getId());
|
if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
|
return ServerResponse.createByErrorMsg("用户账户有待补资金未补齐,审核失败");
|
}
|
|
BigDecimal nowPrice = stockDz.getNowPrice();
|
|
if (nowPrice.compareTo(new BigDecimal("0")) == 0) {
|
return ServerResponse.createByErrorMsg("股票价格0,请重试");
|
}
|
userPositionCheckDz.setOrderNum(orderNum);
|
userPositionCheckDz.setOrderTotalPrice(nowPrice.multiply(new BigDecimal(orderNum.intValue())));
|
BigDecimal buyAmt = nowPrice.multiply(new BigDecimal(userPositionCheckDz.getOrderNum()));
|
BigDecimal fundratio = new BigDecimal(user.getFundRatio()).divide(new BigDecimal(100));
|
BigDecimal availableBalance = fundratio.multiply(userAssets.getAvailableBalance());
|
if (buyAmt.compareTo(availableBalance) > 0) {
|
return ServerResponse.createByErrorMsg("订单失败,配资不足");
|
}
|
userPositionCheckDz.setCheckType(checkType);
|
service.updateById(userPositionCheckDz);
|
UserPosition userPosition = Convert.convert(UserPosition.class, userPositionCheckDz);
|
userPosition.setBuyOrderPrice(nowPrice);
|
userPosition.setId(null);
|
userPosition.setDzId(stockDz.getId());
|
userPositionMapper.insert(userPosition);
|
userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
|
return ServerResponse.createBySuccessMsg("审核成功,订单已转客户持仓");
|
}
|
}
|