package com.nq.controller.smart; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.nq.common.ServerResponse; import com.nq.dao.IntradayOrderMapper; import com.nq.dao.StockMapper; import com.nq.dao.UserAssetsMapper; import com.nq.enums.EStockType; import com.nq.enums.EUserAssets; import com.nq.pojo.*; import com.nq.service.IUserAssetsServices; import com.nq.service.IUserService; import com.nq.service.impl.IntradayOrderSerivceImpl; import com.nq.service.impl.SmartIntradaySerivceImpl; import com.nq.service.impl.StockServiceImpl; import com.nq.utils.ConverterUtil; import com.nq.vo.smart.IntradayOrderVo; import com.nq.vo.smart.SmartIntradayVo; 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.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.math.BigDecimal; import java.util.Collections; import java.util.List; /** * @program: dabaogp * @description: * @create: 2025-07-15 14:27 **/ @Controller @RequestMapping({"/api/intraday/"}) public class IntradayOrderController { @Autowired private IntradayOrderSerivceImpl intradayOrderSerivce; @Autowired private SmartIntradaySerivceImpl smartIntradaySerivce; @Autowired private StockMapper stockMapper; @Autowired private IUserService userService; @Autowired private IUserAssetsServices iUserAssetsServices; @Autowired private UserAssetsMapper userAssetsMapper; @Autowired private IntradayOrderMapper intradayOrderMapper; /** * 智能日内列表 */ @RequestMapping(value = {"listSmart.do"}, method = {RequestMethod.POST}) @ResponseBody public ServerResponse listSmart() { // 创建查询条件 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SmartIntraday::getStatus,1); // 按创建时间倒序 wrapper.orderByDesc(SmartIntraday::getCreatedAt); // 执行分页查询 Listlist = smartIntradaySerivce.list( wrapper); return ServerResponse.createBySuccess(list); } /** * 下单智能日内 * @param vo * @return */ @RequestMapping(value = {"addIntraday.do"}, method = {RequestMethod.POST}) @ResponseBody public ServerResponse addIntraday(@Valid IntradayOrderVo vo,HttpServletRequest request) { SmartIntraday smartIntraday = smartIntradaySerivce.getById(vo.getSmartId()); if(ObjectUtil.isEmpty(smartIntraday)){ return ServerResponse.createBySuccess("产品已下架!",request); } User user = userService.getCurrentRefreshUser(request); UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(EStockType.JP.getCode(), user.getId()); BigDecimal orderAmount = vo.getOrderAmount(); if(userAssets.getAvailableBalance().compareTo(orderAmount)<0){ return ServerResponse.createByErrorMsg("余额不足",request); } userAssets.setAvailableBalance(userAssets.getAvailableBalance().subtract(orderAmount)); userAssetsMapper.updateById(userAssets); IntradayOrder intradayOrder = ConverterUtil.convert(vo, IntradayOrder.class); intradayOrder.setUserId(user.getId()); intradayOrder.setSmartId(smartIntraday.getId()); intradayOrder.setStockType(EStockType.JP.getCode()); intradayOrderSerivce.save(intradayOrder); return ServerResponse.createBySuccess("下单成功",request); } /** * 智能日内订单列表 */ @RequestMapping(value = {"listIntraday.do"}, method = {RequestMethod.POST}) @ResponseBody public ServerResponse listIntraday(@RequestParam(value = "status" , required = false) Integer status,HttpServletRequest request) { User user = userService.getCurrentRefreshUser(request); List intradayOrderList = intradayOrderMapper.selectList(new LambdaQueryWrapper<>(IntradayOrder.class) .eq(IntradayOrder::getAuditStatus,status) .eq(IntradayOrder::getUserId,user.getId()) ); return ServerResponse.createBySuccess(intradayOrderList); } }