From 8f47428a53105cc0926c295efaeb962665ca3eba Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Sun, 20 Jul 2025 20:12:42 +0800
Subject: [PATCH] 1
---
src/main/java/com/nq/pojo/IntradayOrder.java | 39 ++
src/main/java/com/nq/vo/smart/IntradayOrderVo.java | 47 +++
src/main/java/com/nq/service/impl/UserAssetsServices.java | 6
src/main/java/com/nq/utils/stock/sina/StockApi.java | 2
src/main/java/com/nq/service/impl/StockServiceImpl.java | 8
src/main/java/com/nq/service/impl/IntradayOrderSerivceImpl.java | 17 +
src/main/java/com/nq/controller/StockApiController.java | 7
src/main/java/com/nq/controller/protol/UserController.java | 26 -
src/main/java/com/nq/dao/IntradayOrderMapper.java | 12
src/main/java/com/nq/service/IntradayOrderSerivce.java | 8
src/main/java/com/nq/service/impl/SmartIntradaySerivceImpl.java | 17 +
src/main/java/com/nq/pojo/StockIndexData.java | 57 ++++
src/main/java/com/nq/controller/smart/IntradayOrderController.java | 131 +++++++++
src/main/java/com/nq/service/SmartIntradaySerivce.java | 10
src/main/java/com/nq/common/ServerResponse.java | 4
src/main/java/com/nq/dao/SmartIntradayMapper.java | 11
src/main/resources/mapper/IntradayOrderMapper.xml | 35 ++
src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java | 1
src/main/java/com/nq/pojo/SmartIntraday.java | 30 ++
src/main/java/com/nq/service/IStockService.java | 2
src/main/java/com/nq/controller/backend/SmartIntradayController.java | 300 +++++++++++++++++++++
src/main/java/com/nq/vo/smart/SmartIntradayVo.java | 32 ++
22 files changed, 766 insertions(+), 36 deletions(-)
diff --git a/src/main/java/com/nq/common/ServerResponse.java b/src/main/java/com/nq/common/ServerResponse.java
index 208c7ac..c9d06a8 100644
--- a/src/main/java/com/nq/common/ServerResponse.java
+++ b/src/main/java/com/nq/common/ServerResponse.java
@@ -82,8 +82,8 @@
}
- public static <T> ServerResponse<T> createBySuccess(String data,HttpServletRequest request) {
- return new ServerResponse(ResponseCode.SUCCESS.getCode(), new GoogleTranslateUtil().translate(data,request.getHeader(LANG)));
+ public static <T> ServerResponse<T> createBySuccess(String data, HttpServletRequest request) {
+ return new ServerResponse(ResponseCode.SUCCESS.getCode(), new GoogleTranslateUtil().translate(data, request.getHeader(LANG)));
}
public static <T> ServerResponse<T> createBySuccess(String msg, T data) {
diff --git a/src/main/java/com/nq/controller/StockApiController.java b/src/main/java/com/nq/controller/StockApiController.java
index d265e7a..744c5f6 100644
--- a/src/main/java/com/nq/controller/StockApiController.java
+++ b/src/main/java/com/nq/controller/StockApiController.java
@@ -81,7 +81,12 @@
}
-
+ /*查询股票指数*/
+ @RequestMapping({"getIndexData.do"})
+ @ResponseBody
+ public ServerResponse getIndexData() {
+ return this.iStockService.getIndexData();
+ }
/**
*大宗交易 列表
diff --git a/src/main/java/com/nq/controller/backend/SmartIntradayController.java b/src/main/java/com/nq/controller/backend/SmartIntradayController.java
new file mode 100644
index 0000000..d274597
--- /dev/null
+++ b/src/main/java/com/nq/controller/backend/SmartIntradayController.java
@@ -0,0 +1,300 @@
+package com.nq.controller.backend;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateUtil;
+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.*;
+import com.nq.enums.EConfigKey;
+import com.nq.enums.EStockType;
+import com.nq.pojo.*;
+import com.nq.service.*;
+import com.nq.service.impl.IntradayOrderSerivceImpl;
+import com.nq.service.impl.SmartIntradaySerivceImpl;
+import com.nq.service.impl.UserPositionServiceImpl;
+import com.nq.utils.ConverterUtil;
+import com.nq.utils.KeyUtils;
+import com.nq.utils.stock.GeneratePosition;
+import com.nq.vo.smart.IntradayOrderVo;
+import com.nq.vo.smart.SmartIntradayVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
+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 javax.validation.constraints.DecimalMin;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @program: dabaogp
+ * @description: 智能日内
+ * @create: 2025-07-15 10:20
+ **/
+@Controller
+@RequestMapping({"/admin/smart/"})
+public class SmartIntradayController {
+
+ @Autowired
+ private SmartIntradaySerivceImpl smartIntradaySerivce;
+
+ @Autowired
+ private IntradayOrderSerivceImpl intradayOrderSerivce;
+
+ @Autowired
+ private IntradayOrderMapper intradayOrderMapper;
+
+ @Autowired
+ private UserMapper userMapper;
+
+ @Autowired
+ private IUserAssetsServices iUserAssetsServices;
+
+ @Autowired
+ private UserAssetsMapper userAssetsMapper;
+
+ @Autowired
+ private StockMapper stockMapper;
+
+ @Autowired
+ private UserPositionMapper userPositionMapper;
+
+
+ /**
+ * 添加智能日内
+ * @param vo
+ * @return
+ */
+ @RequestMapping(value = {"addSmart.do"}, method = {RequestMethod.POST})
+ @ResponseBody
+ public ServerResponse addSmart(@Valid SmartIntradayVo vo) {
+ long count = smartIntradaySerivce.count(new LambdaQueryWrapper<>(SmartIntraday.class)
+ .eq(SmartIntraday::getDepositName, vo.getDepositName())
+ .eq(SmartIntraday::getAccountType, vo.getAccountType())
+ .eq(SmartIntraday::getStockType, vo.getStockType())
+ );
+ if(count > 0){
+ return ServerResponse.createByErrorMsg("已存在同名产品");
+ }
+ SmartIntraday smartIntraday = ConverterUtil.convert(vo, SmartIntraday.class);
+
+ smartIntraday.setStockType(EStockType.JP.getCode());
+ smartIntraday.setAccountType(EStockType.JP.getCode());
+ smartIntradaySerivce.save(smartIntraday);
+ return ServerResponse.createBySuccessMsg("添加成功");
+ }
+
+ /**
+ * 修改智能日内
+ * @param vo
+ * @return
+ */
+ @RequestMapping(value = {"updateSmart.do"}, method = {RequestMethod.POST})
+ @ResponseBody
+ public ServerResponse updateSmart(@Valid SmartIntradayVo vo) {
+ long count = smartIntradaySerivce.count(new LambdaQueryWrapper<>(SmartIntraday.class)
+ .eq(SmartIntraday::getDepositName, vo.getDepositName())
+ .eq(SmartIntraday::getAccountType, vo.getAccountType())
+ .eq(SmartIntraday::getStockType, vo.getStockType())
+ .ne(SmartIntraday::getId,vo.getId())
+ );
+ if(count > 0){
+ return ServerResponse.createByErrorMsg("已存在同名产品");
+ }
+ SmartIntraday smartIntraday = ConverterUtil.convert(vo, SmartIntraday.class);
+ smartIntradaySerivce.updateById(smartIntraday);
+ return ServerResponse.createBySuccessMsg("修改成功");
+ }
+
+ /**
+ * 智能日内列表
+ */
+ @RequestMapping(value = {"listSmart.do"}, method = {RequestMethod.POST})
+ @ResponseBody
+ public ServerResponse listSmart(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "15") int pageSize,
+ @RequestParam(value = "status" , required = false) Integer status) {
+ // 创建分页对象
+ Page<SmartIntraday> page = Page.of(pageNum, pageSize);
+ // 创建查询条件
+ LambdaQueryWrapper<SmartIntraday> wrapper = new LambdaQueryWrapper<>();
+
+ // 状态查询
+ if (status != null) {
+ wrapper.eq(SmartIntraday::getStatus, status);
+ }
+ // 按创建时间倒序
+ wrapper.orderByDesc(SmartIntraday::getCreatedAt);
+ // 执行分页查询
+ Page<SmartIntraday> intradayPage = smartIntradaySerivce.page(page, wrapper);
+ return ServerResponse.createBySuccess(intradayPage);
+ }
+
+ /**
+ * 删除智能日内
+ * @return
+ */
+ @RequestMapping(value = {"deleteSmart.do"}, method = {RequestMethod.POST})
+ @ResponseBody
+ public ServerResponse deleteSmart( @RequestParam("id") Integer id) {
+ smartIntradaySerivce.removeById(id);
+ return ServerResponse.createBySuccessMsg("删除成功");
+ }
+
+
+
+ /**
+ * 审核日内订单
+ * @param vo
+ * @return
+ */
+ @RequestMapping(value = {"updateIntraday.do"}, method = {RequestMethod.POST})
+ @ResponseBody
+ @Transactional(rollbackFor = Exception.class) // 异常时回滚
+ public ServerResponse updateIntraday(@Valid IntradayOrderVo vo) {
+ IntradayOrder intradayOrder = intradayOrderSerivce.getById(vo.getId());
+ if(intradayOrder.getAuditStatus() != 0){
+ return ServerResponse.createByErrorMsg("订单已操作");
+ }
+ Stock stock = stockMapper.findStockByCode(vo.getStockCode());
+ if(ObjectUtil.isEmpty(stock)){
+ return ServerResponse.createByErrorMsg("选择的股票不存在!");
+ }
+
+
+ intradayOrder.setStockType(vo.getStockType());
+ intradayOrder.setStockCode(vo.getStockCode());
+ intradayOrder.setStockName(stock.getStockName());
+ intradayOrder.setStockGid(stock.getStockGid());
+ intradayOrder.setStockQuantity(vo.getStockQuantity());
+ intradayOrder.setPriceType(vo.getPriceType());
+ intradayOrder.setStockPrice(new BigDecimal(vo.getStockPrice()));
+ intradayOrder.setAuditStatus(vo.getAuditStatus());
+ intradayOrder.setOrderTime(DateUtil.parse(vo.getOrderTime(),"yyyy-MM-dd HH:mm:ss"));
+ intradayOrder.setIsLocked(vo.getIsLocked());
+ intradayOrder.setStockId(stock.getId());
+
+ if(vo.getAuditStatus() == 2){
+ UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(EStockType.JP.getCode(), intradayOrder.getUserId());
+ BigDecimal orderAmount = vo.getOrderAmount();
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(orderAmount));
+ userAssetsMapper.updateById(userAssets);
+ return ServerResponse.createBySuccessMsg("操作成功");
+ }
+ BigDecimal stockQuantity = new BigDecimal(intradayOrder.getStockQuantity());//股票数量
+ BigDecimal totalPrice = intradayOrder.getStockPrice().multiply(stockQuantity);//订单总价
+ if(intradayOrder.getOrderAmount().compareTo(totalPrice) < 0){
+ return ServerResponse.createByErrorMsg("股票总价超过订单金额!");
+ }
+
+
+ User user = userMapper.selectById(intradayOrder.getUserId());
+
+
+ //结余资金返还账户
+ BigDecimal surplusAmount = intradayOrder.getOrderAmount().subtract(totalPrice);//结余
+ UserPosition userPosition = new UserPosition();
+ userPosition.setProfitTargetPrice(BigDecimal.ZERO);
+ userPosition.setStopTargetPrice(BigDecimal.ZERO);
+ userPosition.setPositionType(user.getAccountType());
+ userPosition.setPositionSn(KeyUtils.getUniqueKey());
+ userPosition.setUserId(intradayOrder.getUserId());
+ userPosition.setNickName(user.getRealName());
+ userPosition.setAgentId(user.getAgentId());
+ userPosition.setStockCode(stock.getStockCode());
+ userPosition.setStockName(stock.getStockName());
+ userPosition.setStockGid(stock.getStockType());
+ userPosition.setStockSpell(stock.getStockSpell());
+ userPosition.setBuyOrderId(GeneratePosition.getPositionId());
+ userPosition.setBuyOrderTime(new Date());
+ userPosition.setBuyOrderPrice(intradayOrder.getStockPrice());
+ userPosition.setOrderDirection((intradayOrder.getPriceType() == 0) ? "买涨" : "买跌");
+ userPosition.setOrderNum(intradayOrder.getStockQuantity());
+ if (stock.getStockPlate() != null) {
+ userPosition.setStockPlate(stock.getStockPlate());
+ }
+ userPosition.setIsLock(intradayOrder.getIsLocked());
+ userPosition.setOrderLever(1);
+ userPosition.setOrderTotalPrice(totalPrice);
+ // 手续费
+ userPosition.setOrderFee(BigDecimal.ZERO);
+ userPosition.setOrderSpread(BigDecimal.ZERO);
+ userPosition.setSpreadRatePrice(BigDecimal.ZERO);
+ BigDecimal profit_and_lose = new BigDecimal("0");
+ userPosition.setProfitAndLose(profit_and_lose);
+ userPosition.setAllProfitAndLose(profit_and_lose.add(BigDecimal.ZERO));
+ userPosition.setOrderStayDays(Integer.valueOf(0));
+ userPosition.setOrderStayFee(BigDecimal.ZERO);
+ userPositionMapper.insert(userPosition);
+
+ //结余资金返还账户
+ UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(EStockType.JP.getCode(), intradayOrder.getUserId());
+ userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(surplusAmount));
+ userAssetsMapper.updateById(userAssets);
+ intradayOrder.setPositionOrder(userPosition.getId());
+ intradayOrder.setPurchaseAmount(totalPrice);
+ intradayOrderMapper.updateById(intradayOrder);
+ return ServerResponse.createBySuccessMsg("操作成功");
+ }
+
+ /**
+ * 智能日内订单列表
+ */
+ @RequestMapping(value = {"listIntraday.do"}, method = {RequestMethod.POST})
+ @ResponseBody
+ public ServerResponse listIntraday(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+ @RequestParam(value = "pageSize", defaultValue = "15") int pageSize,
+ @RequestParam(value = "userId" , required = false) Integer userId,
+ @RequestParam(value = "phone" , required = false) String phone,
+ @RequestParam(value = "stockName" , required = false) String stockName,
+ @RequestParam(value = "stockGid" , required = false) String stockGid,
+ @RequestParam(value = "status" , required = false) Integer status
+
+ ) {
+ // 执行分页查询
+ PageHelper.startPage(pageNum, pageSize);
+ List<IntradayOrder> intradayOrderList = intradayOrderMapper.conditionQuery(userId,phone,stockName,stockGid,status);
+ PageInfo<IntradayOrder> pageInfo = new PageInfo<>(intradayOrderList);
+ return ServerResponse.createBySuccess(pageInfo);
+ }
+
+ /**
+ * 删除日内订单
+ * @return
+ */
+ @RequestMapping(value = {"deleteIntraday.do"}, method = {RequestMethod.POST})
+ @ResponseBody
+ public ServerResponse deleteIntraday( @RequestParam("id") Integer id) {
+ intradayOrderSerivce.removeById(id);
+ return ServerResponse.createBySuccessMsg("删除成功");
+ }
+
+ /**
+ * 根据条件查询所有股票
+ */
+ @RequestMapping(value = {"getStockByKeyWords.do"}, method = {RequestMethod.POST})
+ @ResponseBody
+ public ServerResponse updateIntraday(@RequestParam("keyWords") String keyWords) {
+ Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<>(Stock.class)
+ .eq(Stock::getStockCode, keyWords).last(" limit 1"));
+ if(ObjectUtil.isEmpty(stock)){
+ return ServerResponse.createBySuccessMsg("股票不存在");
+ }
+ return ServerResponse.createBySuccess(stock);
+ }
+
+}
diff --git a/src/main/java/com/nq/controller/protol/UserController.java b/src/main/java/com/nq/controller/protol/UserController.java
index b01f91a..43bef84 100644
--- a/src/main/java/com/nq/controller/protol/UserController.java
+++ b/src/main/java/com/nq/controller/protol/UserController.java
@@ -418,31 +418,7 @@
@ResponseBody
public ServerResponse thirdPartyRecharge(@RequestParam("tradeAmoun") String tradeAmoun,@RequestParam("type") Integer type,HttpServletRequest request) {
return ServerResponse.createBySuccess("请联系客服充值");
-// payLock.lock();
-// try {
-//
-// if (payCreated.get()) {
-// return ServerResponse.createByErrorMsg("当前充值人数过多,请稍后重试", request);
-// }
-// if (!isIntegerGreaterThan100(tradeAmoun)) {
-// return ServerResponse.createByErrorMsg("请输入整数!",request);
-// }
-// if(null == type){
-// return ServerResponse.createByErrorMsg("请选择支付通道!",request);
-// }
-// if(new BigDecimal(tradeAmoun).compareTo(new BigDecimal("1000")) < 0){
-// return ServerResponse.createByErrorMsg("请重新输入,最低充值金额:1000", request);
-// }
-//
-// payCreated.set(true);
-// return payService.thirdPartyRecharge(request,tradeAmoun,type);
-// } catch (Exception e) {
-// e.printStackTrace();
-// return ServerResponse.createByErrorMsg("获取充值链接异常,请稍后重试", request);
-// } finally{
-// payLock.unlock();
-// payCreated.set(false);
-// }
+
}
// 判断字符串是否是整数且大于100
public static boolean isIntegerGreaterThan100(String str) {
diff --git a/src/main/java/com/nq/controller/smart/IntradayOrderController.java b/src/main/java/com/nq/controller/smart/IntradayOrderController.java
new file mode 100644
index 0000000..109777b
--- /dev/null
+++ b/src/main/java/com/nq/controller/smart/IntradayOrderController.java
@@ -0,0 +1,131 @@
+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<SmartIntraday> wrapper = new LambdaQueryWrapper<>();
+
+ wrapper.eq(SmartIntraday::getStatus,1);
+ // 按创建时间倒序
+ wrapper.orderByDesc(SmartIntraday::getCreatedAt);
+ // 执行分页查询
+ List<SmartIntraday>list = 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<IntradayOrder> intradayOrderList = intradayOrderMapper.selectList(new LambdaQueryWrapper<>(IntradayOrder.class)
+ .eq(IntradayOrder::getAuditStatus,status)
+ .eq(IntradayOrder::getUserId,user.getId())
+ );
+ return ServerResponse.createBySuccess(intradayOrderList);
+ }
+}
diff --git a/src/main/java/com/nq/dao/IntradayOrderMapper.java b/src/main/java/com/nq/dao/IntradayOrderMapper.java
new file mode 100644
index 0000000..fd802ca
--- /dev/null
+++ b/src/main/java/com/nq/dao/IntradayOrderMapper.java
@@ -0,0 +1,12 @@
+package com.nq.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.nq.pojo.IntradayOrder;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface IntradayOrderMapper extends BaseMapper<IntradayOrder> {
+ List<IntradayOrder> conditionQuery(Integer userId, String phone, String stockName, String stockGid, Integer status);
+}
diff --git a/src/main/java/com/nq/dao/SmartIntradayMapper.java b/src/main/java/com/nq/dao/SmartIntradayMapper.java
new file mode 100644
index 0000000..dce631b
--- /dev/null
+++ b/src/main/java/com/nq/dao/SmartIntradayMapper.java
@@ -0,0 +1,11 @@
+package com.nq.dao;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.nq.pojo.SmartIntraday;
+import com.nq.pojo.StockDz;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SmartIntradayMapper extends BaseMapper<SmartIntraday> {
+}
diff --git a/src/main/java/com/nq/pojo/IntradayOrder.java b/src/main/java/com/nq/pojo/IntradayOrder.java
new file mode 100644
index 0000000..e130d2f
--- /dev/null
+++ b/src/main/java/com/nq/pojo/IntradayOrder.java
@@ -0,0 +1,39 @@
+package com.nq.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.sql.Date;
+
+/**
+ * @program: dabaogp
+ * @description: 日内交易订单表
+ * @create: 2025-07-15 10:41
+ **/
+@Data
+public class IntradayOrder {
+
+ @TableId(value = "id",type = IdType.AUTO)
+ private Integer id; // 订单ID
+ private Integer userId; // 用户ID
+ private Integer smartId; //日内产品id
+ private BigDecimal orderAmount; // 订单金额
+ private String stockType; // 股票类型: 日股/美股/港股等
+ private String stockCode; // 股票编码
+ private String stockName; // 股票名称
+ private String stockGid; // 股票GID
+ private Integer stockQuantity; // 股票数量
+ private Integer priceType; // 涨跌类型: 0-买涨,1-买跌
+ private Integer positionOrder; // 持仓订单
+ private BigDecimal stockPrice; // 股票价格
+ private Integer auditStatus; // 审核状态: 0-未审核,1-审核通过,2-审核拒绝
+ private java.util.Date orderTime; // 下单时间
+ private Integer isLocked; // 是否锁仓: 0-开仓,1-锁仓
+ private java.util.Date createdAt; // 创建时间
+ private java.util.Date updatedAt; // 更新时间
+ private Integer stockId; //股票id
+ private BigDecimal purchaseAmount; //实际买入金额
+
+}
diff --git a/src/main/java/com/nq/pojo/SmartIntraday.java b/src/main/java/com/nq/pojo/SmartIntraday.java
new file mode 100644
index 0000000..452bf4b
--- /dev/null
+++ b/src/main/java/com/nq/pojo/SmartIntraday.java
@@ -0,0 +1,30 @@
+package com.nq.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.sql.Date;
+
+/**
+ * @program: dabaogp
+ * @description: 日内交易产品表
+ * @create: 2025-07-15 10:44
+ **/
+@Data
+public class SmartIntraday {
+
+ @TableId(type = IdType.AUTO,value = "id")
+ private Integer id; // 主键ID
+ private String depositName; // 定存名称
+ private String stockType; // 股票类型
+ private String accountType; // 账户类型
+ private String profit; // 盈利
+ private Integer status = 1; // 状态: 0-关闭, 1-开启
+ private BigDecimal minAmount; // 最小金额
+ private BigDecimal maxAmount; // 最大金额
+ private java.util.Date createdAt; // 创建时间
+ private java.util.Date updatedAt; // 更新时间
+
+}
diff --git a/src/main/java/com/nq/pojo/StockIndexData.java b/src/main/java/com/nq/pojo/StockIndexData.java
new file mode 100644
index 0000000..945a4b4
--- /dev/null
+++ b/src/main/java/com/nq/pojo/StockIndexData.java
@@ -0,0 +1,57 @@
+package com.nq.pojo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @program: dabaogp
+ * @description: 股票指数
+ * @create: 2025-07-15 17:48
+ **/
+@Data
+public class StockIndexData {
+
+ /** 指数ID(也是指数的PID) */
+ private Long id;
+
+ /** 股票/指数名称 */
+ private String name;
+
+ /** 股票/指数代码 */
+ private String symbol;
+
+ /** 最新价格 */
+ private BigDecimal last;
+
+ /** 当日最高价 */
+ private BigDecimal high;
+
+ /** 当日最低价 */
+ private BigDecimal low;
+
+ /** 今日开盘价 */
+ private BigDecimal open;
+
+ /** 昨日收盘价 */
+ private BigDecimal prevClose;
+
+ /** 价格更新时间(Unix时间戳) */
+ private Long time;
+
+ /** 交易量 */
+ private Long volume;
+
+ /** 涨跌额 */
+ private BigDecimal chg;
+
+ /** 涨跌幅百分比 */
+ private BigDecimal chgPct;
+
+ /** 所属国家ID */
+ private Integer countryId;
+
+ /** 交易所类型(如NSE) */
+ private String type;
+
+}
diff --git a/src/main/java/com/nq/service/IStockService.java b/src/main/java/com/nq/service/IStockService.java
index 4763888..f5bc74d 100644
--- a/src/main/java/com/nq/service/IStockService.java
+++ b/src/main/java/com/nq/service/IStockService.java
@@ -105,4 +105,6 @@
ServerResponse getOptionStock(HttpServletRequest request);
+
+ ServerResponse getIndexData();
}
diff --git a/src/main/java/com/nq/service/IntradayOrderSerivce.java b/src/main/java/com/nq/service/IntradayOrderSerivce.java
new file mode 100644
index 0000000..5f1ceec
--- /dev/null
+++ b/src/main/java/com/nq/service/IntradayOrderSerivce.java
@@ -0,0 +1,8 @@
+package com.nq.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.nq.pojo.IntradayOrder;
+import com.nq.pojo.SmartIntraday;
+
+public interface IntradayOrderSerivce extends IService<IntradayOrder> {
+}
diff --git a/src/main/java/com/nq/service/SmartIntradaySerivce.java b/src/main/java/com/nq/service/SmartIntradaySerivce.java
new file mode 100644
index 0000000..fc3ab37
--- /dev/null
+++ b/src/main/java/com/nq/service/SmartIntradaySerivce.java
@@ -0,0 +1,10 @@
+package com.nq.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.nq.pojo.SmartIntraday;
+import com.nq.pojo.StockDz;
+
+
+public interface SmartIntradaySerivce extends IService<SmartIntraday> {
+}
diff --git a/src/main/java/com/nq/service/impl/IntradayOrderSerivceImpl.java b/src/main/java/com/nq/service/impl/IntradayOrderSerivceImpl.java
new file mode 100644
index 0000000..4f53ab9
--- /dev/null
+++ b/src/main/java/com/nq/service/impl/IntradayOrderSerivceImpl.java
@@ -0,0 +1,17 @@
+package com.nq.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.nq.dao.IntradayOrderMapper;
+import com.nq.dao.SmartIntradayMapper;
+import com.nq.pojo.IntradayOrder;
+import com.nq.pojo.SmartIntraday;
+import org.springframework.stereotype.Service;
+
+/**
+ * @program: dabaogp
+ * @description:
+ * @create: 2025-07-15 10:50
+ **/
+@Service
+public class IntradayOrderSerivceImpl extends ServiceImpl<IntradayOrderMapper, IntradayOrder> {
+}
diff --git a/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java b/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
index a5ad4ff..69b940e 100644
--- a/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteAdminServiceImpl.java
@@ -123,7 +123,6 @@
return ServerResponse.createByErrorMsg("参数不能为空");
}
-
adminPwd = SymmetricCryptoUtil.encryptPassword(adminPwd);
SiteAdmin siteAdmin = this.siteAdminMapper.login(adminPhone, adminPwd);
if (siteAdmin == null) {
diff --git a/src/main/java/com/nq/service/impl/SmartIntradaySerivceImpl.java b/src/main/java/com/nq/service/impl/SmartIntradaySerivceImpl.java
new file mode 100644
index 0000000..2c1d407
--- /dev/null
+++ b/src/main/java/com/nq/service/impl/SmartIntradaySerivceImpl.java
@@ -0,0 +1,17 @@
+package com.nq.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.nq.dao.SmartIntradayMapper;
+import com.nq.dao.StockDzMapper;
+import com.nq.pojo.SmartIntraday;
+import com.nq.pojo.StockDz;
+import org.springframework.stereotype.Service;
+
+/**
+ * @program: dabaogp
+ * @description:
+ * @create: 2025-07-15 10:48
+ **/
+@Service
+public class SmartIntradaySerivceImpl extends ServiceImpl<SmartIntradayMapper, SmartIntraday> {
+}
diff --git a/src/main/java/com/nq/service/impl/StockServiceImpl.java b/src/main/java/com/nq/service/impl/StockServiceImpl.java
index e645c0c..34ef33e 100644
--- a/src/main/java/com/nq/service/impl/StockServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -462,6 +462,14 @@
return ServerResponse.createBySuccess();
}
+ @Override
+ public ServerResponse getIndexData() {
+ Object object = HttpUtil.get(EStockType.JP.stockUrl + "/indices?country_id="+EStockType.JP.contryId+"&key="+EStockType.JP.getStockKey());
+ Gson gson = new Gson();
+ List<StockIndexData> dataList = gson.fromJson(object.toString(), new TypeToken<List<StockIndexData>>(){}.getType());
+ return ServerResponse.createBySuccess(dataList);
+ }
+
public ServerResponse<Stock> findStockByName(String name) {
return ServerResponse.createBySuccess(this.stockMapper.findStockByName(name));
}
diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index 09f5d3e..fa18738 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -51,9 +51,6 @@
@Override
public UserAssets assetsByTypeAndUserId(String accetType, Integer userId) {
- if(accetType.equals("SZHB")){
- accetType = "US";
- }
QueryWrapper<UserAssets> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("accect_type",accetType);
queryWrapper.eq("user_id",userId);
@@ -159,9 +156,6 @@
@Override
public BigDecimal getAvailableBalance(String accetType, Integer userId) {
- if(accetType.equals("SZHB")){
- accetType = "US";
- }
return assetsByTypeAndUserId(accetType,userId).getAvailableBalance();
}
diff --git a/src/main/java/com/nq/utils/stock/sina/StockApi.java b/src/main/java/com/nq/utils/stock/sina/StockApi.java
index 369dc63..ee55cc8 100644
--- a/src/main/java/com/nq/utils/stock/sina/StockApi.java
+++ b/src/main/java/com/nq/utils/stock/sina/StockApi.java
@@ -38,7 +38,7 @@
Stock stock = stocks.get(i);
StockRealTimeBean realTimeStock = RedisKeyUtil.getCacheRealTimeStock(stock);
StockListVO stockListVO = new StockListVO();
- stockListVO.setHcrate(new BigDecimal(realTimeStock.getPcp()));
+ stockListVO.setHcrate(new BigDecimal(realTimeStock.getPc()));
stockListVO.setHcrateP(realTimeStock.getPcp()+"%");
if(realTimeStock.getPcp().contains("-")){
stockListVO.setColor(0);
diff --git a/src/main/java/com/nq/vo/smart/IntradayOrderVo.java b/src/main/java/com/nq/vo/smart/IntradayOrderVo.java
new file mode 100644
index 0000000..3905843
--- /dev/null
+++ b/src/main/java/com/nq/vo/smart/IntradayOrderVo.java
@@ -0,0 +1,47 @@
+package com.nq.vo.smart;
+
+import lombok.Data;
+
+import javax.validation.constraints.*;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @program: dabaogp
+ * @description:
+ * @create: 2025-07-15 10:52
+ **/
+@Data
+public class IntradayOrderVo {
+
+ private Integer id; // 订单ID
+
+ private Integer smartId;
+
+ @NotNull(message = "订单金额不能为空")
+ @DecimalMin(value = "1", message = "订单金额必须大于0")
+ private BigDecimal orderAmount; // 订单金额
+
+ private String stockType; // 股票类型: 日股/美股/港股等
+
+ private String stockCode; // 股票编码
+
+ private String stockName; // 股票名称
+
+ private String stockGid; // 股票GID
+
+ private Integer stockQuantity; // 股票数量
+
+ private Integer priceType; // 涨跌类型: 1-买涨,2-买跌
+
+ private String positionOrder; // 持仓订单
+
+ private String stockPrice; // 股票价格
+
+ private Integer auditStatus = 0; // 审核状态: 0-未审核,1-审核通过,2-审核拒绝
+
+ private String orderTime; // 下单时间
+
+ private Integer isLocked; // 是否锁仓: 0-开仓,1-锁仓
+
+}
diff --git a/src/main/java/com/nq/vo/smart/SmartIntradayVo.java b/src/main/java/com/nq/vo/smart/SmartIntradayVo.java
new file mode 100644
index 0000000..488fdaf
--- /dev/null
+++ b/src/main/java/com/nq/vo/smart/SmartIntradayVo.java
@@ -0,0 +1,32 @@
+package com.nq.vo.smart;
+
+import lombok.Data;
+
+import javax.validation.constraints.*;
+import java.math.BigDecimal;
+
+/**
+ * @program: dabaogp
+ * @description:
+ * @create: 2025-07-15 10:52
+ **/
+@Data
+public class SmartIntradayVo {
+
+ private Integer id; // 主键ID
+
+ private String depositName; // 定存名称
+
+ private String stockType; // 股票类型
+
+ private String accountType; // 账户类型
+
+ private String profit; // 盈利百分比
+
+ private Integer status = 1; // 状态: 0-关闭, 1-开启
+
+ private BigDecimal minAmount; // 最小金额
+
+ private BigDecimal maxAmount; // 最大金额
+
+}
diff --git a/src/main/resources/mapper/IntradayOrderMapper.xml b/src/main/resources/mapper/IntradayOrderMapper.xml
new file mode 100644
index 0000000..898fe6f
--- /dev/null
+++ b/src/main/resources/mapper/IntradayOrderMapper.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.nq.dao.IntradayOrderMapper">
+
+ <select id="conditionQuery" resultType="com.nq.pojo.IntradayOrder">
+ SELECT
+ o.*
+ FROM
+ intraday_order o
+ LEFT JOIN user u ON o.user_id = u.id
+ LEFT JOIN stock s ON s.id = o.stock_id
+ <where>
+ 1=1
+ <if test="userId != null and userId != ''">
+ AND u.id = #{userId}
+ </if>
+ <if test="phone != null and phone != ''">
+ AND u.phone = #{phone}
+ </if>
+ <if test="stockName != null and stockName != ''">
+ AND s.stock_name LIKE CONCAT('%', #{stockName}, '%')
+ </if>
+ <if test="stockGid != null and stockGid != ''">
+ AND s.stock_gid = #{stockGid}
+ </if>
+ <if test="status != null and status != '' ">
+ AND o.audit_status = #{auditStatus}
+ </if>
+ </where>
+ GROUP BY o.id
+ ORDER BY o.order_time DESC
+
+ </select>
+</mapper>
--
Gitblit v1.9.3