Merge remote-tracking branch 'origin/6-29' into 6-29
43 files modified
9 files added
| | |
| | | */ |
| | | @PostMapping({"getDzList.do"}) |
| | | @ResponseBody |
| | | public ServerResponse getDzList() { |
| | | return this.stockDzService.getDzList(); |
| | | public ServerResponse getDzList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum, |
| | | @RequestParam(value = "pageSize", defaultValue = "10") int pageSize, |
| | | @RequestParam(value = "orderBy", required = false) String orderBy, |
| | | @RequestParam(value = "keyWords", required = false) String keyWords, |
| | | HttpServletRequest request) { |
| | | return stockDzService.getDzList(pageNum, pageSize, orderBy,keyWords , request); |
| | | } |
| | | |
| | | |
| | |
| | | package com.nq.controller; |
| | | |
| | | |
| | | 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.MoneyLogMapper; |
| | | import com.nq.dao.StockConfigMapper; |
| | | import com.nq.pojo.MoneyLog; |
| | | import com.nq.pojo.SiteSpread; |
| | | import com.nq.pojo.StockConfig; |
| | | import com.nq.service.IMoneyLogServces; |
| | | import com.nq.service.ISiteSpreadService; |
| | | import com.nq.service.IStockConfigServices; |
| | | import com.nq.service.IUserService; |
| | | |
| | | import com.nq.utils.PropertiesUtil; |
| | |
| | | |
| | | import com.nq.utils.redis.RedisShardedPoolUtils; |
| | | |
| | | import com.nq.utils.translate.GoogleTranslateUtil; |
| | | import com.nq.vo.user.UserLoginResultVO; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | import javax.servlet.http.HttpSession; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.http.util.TextUtils; |
| | | import org.slf4j.Logger; |
| | | |
| | | import org.slf4j.LoggerFactory; |
| | |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | |
| | | @Controller |
| | |
| | | |
| | | @Autowired |
| | | ISiteSpreadService iSiteSpreadService; |
| | | |
| | | @Autowired |
| | | StockConfigMapper stockConfigMapper; |
| | | |
| | | @Autowired |
| | | IMoneyLogServces iMoneyLogServces; |
| | | |
| | | @Autowired |
| | | MoneyLogMapper moneyLogMapper; |
| | | |
| | | //注册 |
| | | @RequestMapping(value = {"reg.do"}, method = {RequestMethod.POST}) |
| | | @ResponseBody |
| | |
| | | return ServerResponse.createBySuccess("Success", siteSpread); |
| | | } |
| | | |
| | | @RequestMapping({"queryStockConfig.do"}) |
| | | @ResponseBody |
| | | public ServerResponse updateConfig(){ |
| | | StockConfig stockConfig = stockConfigMapper.selectOne(new LambdaQueryWrapper<StockConfig>().eq(StockConfig::getCKey, "buy_handling_charge")); |
| | | return ServerResponse.createBySuccess(stockConfig); |
| | | |
| | | } |
| | | |
| | | @RequestMapping({"moneylogAll.do"}) |
| | | @ResponseBody |
| | | public ServerResponse taskList(@RequestParam(value = "userId") String userId, |
| | | @RequestParam(value = "type", required = false) String type, |
| | | @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, |
| | | @RequestParam(value = "pageSize", defaultValue = "50") int pageSize, |
| | | HttpServletRequest request) { |
| | | Page<MoneyLog> page1 = new Page<>(pageNum, pageSize); |
| | | QueryWrapper<MoneyLog> queryWrapper = new QueryWrapper<>(); |
| | | |
| | | if(!TextUtils.isEmpty(userId)){ |
| | | queryWrapper.eq("user_id",userId); |
| | | } |
| | | if(StringUtils.isNotEmpty(type)){ |
| | | queryWrapper.eq("type",type); |
| | | } |
| | | queryWrapper.orderByDesc("create_time"); |
| | | Page<MoneyLog> moneyLogPage = moneyLogMapper.selectPage(page1, queryWrapper); |
| | | List<MoneyLog> records = moneyLogPage.getRecords(); |
| | | records.forEach(f->{ |
| | | f.setDescs( new GoogleTranslateUtil().translate(f.getDescs(),request.getHeader("lang"))); |
| | | }); |
| | | moneyLogPage.setRecords(records); |
| | | return ServerResponse.createBySuccess(moneyLogPage); |
| | | } |
| | | } |
| | | |
| New file |
| | |
| | | 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) { |
| | | Page<UserPositionCheckDz> page = Page.of(pageNum, pageSize); |
| | | LambdaQueryWrapper<UserPositionCheckDz> queryWrapper = new LambdaQueryWrapper<UserPositionCheckDz>(); |
| | | |
| | | // 判断type是否为空,不为空则加入查询条件 |
| | | if (type != null) { |
| | | queryWrapper.eq(UserPositionCheckDz::getCheckType, type); |
| | | } |
| | | |
| | | // 判断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); |
| | | userPositionMapper.insert(userPosition); |
| | | userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"",""); |
| | | return ServerResponse.createBySuccessMsg("审核成功,订单已转客户持仓"); |
| | | } |
| | | } |
| | |
| | | //创建持仓单 |
| | | @RequestMapping({"create.do"}) |
| | | @ResponseBody |
| | | public ServerResponse create(@RequestParam("userId") Integer userId, @RequestParam("stockCode") String stockCode, @RequestParam("buyPrice") String buyPrice, @RequestParam("buyTime") String buyTime, @RequestParam("buyNum") Integer buyNum, @RequestParam("buyType") Integer buyType, @RequestParam("lever") Integer lever, @RequestParam(value = "profitTarget",required = false) BigDecimal profitTarget, @RequestParam(value = "stopTarget",required = false) BigDecimal stopTarget) { |
| | | public ServerResponse create(@RequestParam("userId") Integer userId, |
| | | @RequestParam("stockCode") String stockCode, |
| | | @RequestParam("buyPrice") String buyPrice, |
| | | @RequestParam("buyTime") String buyTime, |
| | | @RequestParam("buyNum") Integer buyNum, |
| | | @RequestParam("buyType") Integer buyType, |
| | | @RequestParam(value = "lever", defaultValue = "1") Integer lever, |
| | | @RequestParam(value = "profitTarget",required = false) BigDecimal profitTarget, |
| | | @RequestParam(value = "stopTarget",required = false) BigDecimal stopTarget) { |
| | | return this.iUserPositionService.create(userId, stockCode, buyPrice, buyTime, buyNum, buyType, lever, profitTarget, stopTarget); |
| | | } |
| | | |
| | |
| | | //查询产品管理 所以股票信息及模糊查询 |
| | | @RequestMapping({"list.do"}) |
| | | @ResponseBody |
| | | public ServerResponse list(@RequestParam(value = "showState", required = false) Integer showState, @RequestParam(value = "lockState", required = false) Integer lockState, @RequestParam(value = "code", required = false) String code, @RequestParam(value = "name", required = false) String name, @RequestParam(value = "stockPlate", required = false) String stockPlate, @RequestParam(value = "stockType", required = false) String stockType, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize, HttpServletRequest request) { |
| | | return this.iStockService.listByAdmin(showState, lockState, code, name, stockPlate, stockType, pageNum, pageSize, request); |
| | | public ServerResponse list(@RequestParam(value = "stockGid", required = false) String stockGid, |
| | | @RequestParam(value = "showState", required = false) Integer showState, |
| | | @RequestParam(value = "lockState", required = false) Integer lockState, |
| | | @RequestParam(value = "code", required = false) String code, |
| | | @RequestParam(value = "name", required = false) String name, |
| | | @RequestParam(value = "stockPlate", required = false) String stockPlate, |
| | | @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, |
| | | @RequestParam(value = "pageSize", defaultValue = "10") int pageSize, |
| | | HttpServletRequest request) { |
| | | return this.iStockService.listByAdmin(stockGid,showState, lockState, code, name, stockPlate, null, pageNum, pageSize, request); |
| | | } |
| | | |
| | | //修改产品管理 股票是否锁定 |
| | |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @RestController |
| | | @RequestMapping({"/admin/stockDz/"}) |
| | | public class AdminStockDz { |
| | |
| | | StockDzService stockDzService; |
| | | |
| | | /** |
| | | * @Description: 获取大宗列表 |
| | | * @Description: 获取大宗列表 |
| | | * @Param: |
| | | * @return: |
| | | */ |
| | |
| | | public ServerResponse getDzListByAdmin(String keywords) { |
| | | return stockDzService.getDzListByAdmin(keywords); |
| | | } |
| | | |
| | | /** |
| | | * @Description: 新增大宗 |
| | | * @Description: 新增大宗 |
| | | * @Param: |
| | | * @return: |
| | | */ |
| | | @RequestMapping({"addByAdmin.do"}) |
| | | public ServerResponse addByAdmin(@RequestParam(value = "stockCode")String stockCode, |
| | | @RequestParam(value = "stockNum")String stockNum, |
| | | @RequestParam(value = "password")String password, |
| | | @RequestParam(value = "startTime")String startTime, |
| | | @RequestParam(value = "endTime")String endTime, |
| | | @RequestParam(value = "discount") String discount, |
| | | @RequestParam(value = "period")Integer period) { |
| | | return stockDzService.addByAdmin(stockCode,stockNum,password,startTime,endTime,discount,period); |
| | | public ServerResponse addByAdmin(@RequestParam(value = "stockCode") String stockCode, |
| | | @RequestParam(value = "stockNum") String stockNum, |
| | | @RequestParam(value = "password") String password, |
| | | @RequestParam(value = "startTime") String startTime, |
| | | @RequestParam(value = "endTime") String endTime, |
| | | @RequestParam(value = "discount", required = false) String discount, |
| | | @RequestParam(value = "period") Integer period, |
| | | @RequestParam(value = "nowPrice") String nowPrice, |
| | | @RequestParam(value = "switchType", defaultValue = "0") Integer switchType) { |
| | | return stockDzService.addByAdmin(stockCode, stockNum, password, startTime, endTime, discount, period,nowPrice,switchType); |
| | | } |
| | | |
| | | /** |
| | | * 删除大宗 |
| | | */ |
| | |
| | | public ServerResponse deleteByAdmin(@RequestParam(value = "id") String id) { |
| | | return stockDzService.deleteByAdmin(id); |
| | | } |
| | | |
| | | /** |
| | | * 修改大宗 |
| | | */ |
| | |
| | | @RequestParam(value = "zt", required = false) Integer zt, |
| | | @RequestParam(value = "isLock", required = false) Integer isLock, |
| | | @RequestParam(value = "type", required = false) Integer type, |
| | | @RequestParam(value = "stockType", required = false) Integer stockType, |
| | | HttpServletRequest request) { |
| | | return this.iStockSubscribeService.list(name,code,zt,0,isLock,type,request); |
| | | return this.iStockSubscribeService.list(name,code,zt,0,isLock,type,stockType,1,request); |
| | | } |
| | | /** |
| | | * @Description: 新增新股 |
| | |
| | | import com.nq.service.IUserBankService; |
| | | import com.nq.service.IUserService; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | import com.nq.vo.user.UserQueryParams; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | |
| | | import java.text.ParseException; |
| | | import java.util.Date; |
| | | |
| | | |
| | | @Controller |
| | |
| | | //分页查询所有用户列表信息 及模糊查询用户信息 |
| | | @RequestMapping({"list.do"}) |
| | | @ResponseBody |
| | | public ServerResponse list(@RequestParam(value = "realName", required = false) String realName, @RequestParam(value = "phone", required = false) String phone, @RequestParam(value = "agentId", required = false) Integer agentId, @RequestParam(value = "accountType", required = false) Integer accountType, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize, HttpServletRequest request) { |
| | | return this.iUserService.listByAdmin(realName, phone, agentId, accountType, pageNum, pageSize, request); |
| | | public ServerResponse list(UserQueryParams queryParams, |
| | | HttpServletRequest request) throws ParseException { |
| | | return this.iUserService.listByAdmin(queryParams.getRealName(),queryParams.getPhone(),queryParams.getAgentId(),queryParams.getAccountType(),queryParams.getPageNum(),queryParams.getPageSize(),queryParams.getIsLock(),queryParams.getIsLogin(),queryParams.getRegTime(),queryParams.getIsActive(),request); |
| | | } |
| | | |
| | | //查询用户信息是否存在 |
| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpSession; |
| | | |
| | | import com.nq.vo.stock.UserStockSubscribeAddIn; |
| | | import org.apache.ibatis.annotations.Property; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | |
| | | buyOrderCreated.set(true); |
| | | return this.iUserPositionService.buy(stockId, buyNum, buyType, lever,profitTarget,stopLoss, request); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return ServerResponse.createByErrorMsg("订单异常,请稍后重试", request); |
| | | } finally{ |
| | | buyLock.unlock(); |
| | |
| | | @RequestParam(value = "type", required = false) Integer type, |
| | | @RequestParam(value = "getType", required = false) Integer getType, |
| | | HttpServletRequest request) { |
| | | return this.iStockSubscribeService.list(name,code,zt,getType,isLock,type,request); |
| | | return this.iStockSubscribeService.list(name,code,zt,getType,isLock,type,null,0,request); |
| | | } |
| | | /** |
| | | * 新股申购 添加 |
| | |
| | | */ |
| | | @RequestMapping({"add.do"}) |
| | | @ResponseBody |
| | | public ServerResponse add(UserStockSubscribe model,HttpServletRequest request) throws Exception { |
| | | public ServerResponse add(UserStockSubscribeAddIn model, HttpServletRequest request) throws Exception { |
| | | return this.iUserStockSubscribeService.insert(model,request); |
| | | } |
| | | /*新股申购-用户新股申购数据*/ |
| | |
| | | */ |
| | | @RequestMapping({"buyStockDz.do"}) |
| | | @ResponseBody |
| | | public ServerResponse buyDz(@RequestParam("stockCode") String stockCode, @RequestParam("password") String password,@RequestParam("num") Integer num, HttpServletRequest request) throws Exception { |
| | | public ServerResponse buyDz(@RequestParam("dzId") Integer dzId, @RequestParam("password") String password,@RequestParam("num") Integer num, HttpServletRequest request) throws Exception { |
| | | lock.lock(); |
| | | try { |
| | | if (orderCreated.get()) { |
| | | return ServerResponse.createByErrorMsg("当前内幕交易人数过多,请稍后重试", request); |
| | | } |
| | | orderCreated.set(true); |
| | | return this.iUserPositionService.buyDz(stockCode, password, num, request); |
| | | return this.iUserPositionService.buyDz(dzId, password, num, request); |
| | | } catch (Exception e) { |
| | | return ServerResponse.createByErrorMsg("订单异常,请稍后重试", request); |
| | | } finally{ |
| | |
| | | //用户提现 |
| | | @RequestMapping({"outMoney.do"}) |
| | | @ResponseBody |
| | | public ServerResponse outMoney(@RequestParam(value = "amt") String amt, |
| | | public ServerResponse outMoney(@RequestParam(value = "amt") String amt,@RequestParam(value = "bankId") String bankId, |
| | | @RequestParam(value = "assetsType") String accsetType, |
| | | HttpServletRequest request) { |
| | | ServerResponse serverResponse = null; |
| | | User user = this.iUserService.getCurrentRefreshUser(request); |
| | | try { |
| | | serverResponse = this.iUserWithdrawService.outMoney(amt, user.getWithPwd(), accsetType,request); |
| | | serverResponse = this.iUserWithdrawService.outMoney(amt, user.getWithPwd(), accsetType,bankId,request); |
| | | } catch (Exception e) { |
| | | log.error("出金异常 e = {}", e); |
| | | serverResponse = ServerResponse.createByErrorMsg("提现异常,请稍后再试",request); |
| | |
| | | package com.nq.dao; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.nq.pojo.Stock; |
| | | import java.util.List; |
| | | |
| | | import com.nq.pojo.StockDz; |
| | | import com.nq.pojo.StockSetting; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | @Mapper |
| | |
| | | |
| | | Stock findStockByName(String paramString); |
| | | |
| | | List listByAdmin(@Param("showState") Integer paramInteger1, @Param("lockState") Integer paramInteger2, @Param("code") String paramString1, @Param("name") String paramString2, @Param("stockPlate") String paramString3, @Param("stockType") String paramString4); |
| | | List listByAdmin(@Param("stockGid") String stockGid,@Param("showState") Integer paramInteger1, @Param("lockState") Integer paramInteger2, @Param("code") String paramString1, @Param("name") String paramString2, @Param("stockPlate") String paramString3, @Param("stockType") String paramString4); |
| | | |
| | | int CountStockNum(); |
| | | |
| | |
| | | List findStockByType(@Param("orderBy") String orderBy, @Param("stockType") String stockType,@Param("keyWords") String keyWords); |
| | | |
| | | |
| | | List findStockTypeDz(@Param("orderBy") String orderBy, @Param("stockType") String stockType,@Param("keyWords") String keyWords); |
| | | List<StockDz> findStockTypeDz(@Param("orderBy") String orderBy, @Param("keyWords") String keyWords , @Param("formatDate") String formatDate); |
| | | |
| | | } |
| | |
| | | package com.nq.dao; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.nq.pojo.UserBank; |
| | | import com.nq.pojo.UserPositionCheckDz; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | public interface UserBankMapper { |
| | | import java.util.List; |
| | | |
| | | @Mapper |
| | | public interface UserBankMapper extends BaseMapper<UserBank> { |
| | | int deleteByPrimaryKey(Integer paramInteger); |
| | | |
| | | int insert(UserBank paramUserBank); |
| | |
| | | |
| | | int updateByPrimaryKey(UserBank paramUserBank); |
| | | |
| | | UserBank findUserBankByUserId(Integer paramInteger); |
| | | // List<UserBank> findUserBankByUserId(Integer paramInteger); |
| | | } |
| | |
| | | import com.nq.pojo.User; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import org.apache.ibatis.annotations.Param; |
| | |
| | | |
| | | List listByAgent(@Param("realName") String paramString1, @Param("phone") String paramString2, @Param("searchId") Integer paramInteger1, @Param("accountType") Integer paramInteger2); |
| | | |
| | | List listByAdmin(@Param("realName") String paramString1, @Param("phone") String paramString2, @Param("searchId") Integer paramInteger1, @Param("accountType") Integer paramInteger2); |
| | | List listByAdmin(@Param("realName") String paramString1, @Param("phone") String paramString2, @Param("searchId") Integer paramInteger1, @Param("accountType") Integer paramInteger2,@Param("isLock") Integer isLock,@Param("isLogin") Integer isLogin,@Param("regTime") String regTime,@Param("isActive") Integer isActive); |
| | | |
| | | int CountUserSize(Integer paramInteger); |
| | | |
| New file |
| | |
| | | package com.nq.dao; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.nq.pojo.UserPendingorder; |
| | | import com.nq.pojo.UserPositionCheckDz; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | @Mapper |
| | | public interface UserPositionCheckDzMapper extends BaseMapper<UserPositionCheckDz> { |
| | | } |
| | |
| | | package com.nq.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.baomidou.mybatisplus.annotation.*; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | |
| | | private BigDecimal increaseRatio; |
| | | |
| | | private Integer stockNum; |
| | | |
| | | @TableField(updateStrategy = FieldStrategy.IGNORED) |
| | | private String password; |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date startTime; |
| | |
| | | private BigDecimal discount; |
| | | private Integer period; |
| | | |
| | | /** |
| | | * 大宗审核开关(0:关闭 1:打开) |
| | | */ |
| | | private Integer switchType = 0; |
| | | private static final long serialVersionUID = 1L; |
| | | //价格 |
| | | private BigDecimal nowPrice; |
| | | } |
| | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.FieldStrategy; |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.Data; |
| | |
| | | */ |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 密钥 |
| | | */ |
| | | @TableField(updateStrategy = FieldStrategy.IGNORED) |
| | | private String password; |
| | | |
| | | /** |
| | | * 最低买入价格 |
| | | */ |
| | | @TableField(updateStrategy = FieldStrategy.IGNORED) |
| | | private BigDecimal minPrice; |
| | | |
| | | /** |
| | | * 是否在有效时间 |
| | | */ |
| | | @TableField(exist = false) |
| | | private Boolean isBetween; |
| | | } |
| | |
| | | package com.nq.pojo; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | |
| | | @Data |
| | | public class UserBank { |
| | | |
| | | @TableId(type = IdType.AUTO,value = "id") |
| | | private Integer id; |
| | | |
| | | private Integer userId; |
| | |
| | | private String bankImg; |
| | | |
| | | private String bankPhone; |
| | | // 银行卡户主名称 |
| | | private String bankCardholderName; |
| | | // 绑定邮箱 |
| | | private String bankEmail; |
| | | |
| | | private Date addTime; |
| | | |
| | | |
| | | public UserBank(Integer id, Integer userId, String bankName, String bankNo, String bankAddress, String bankImg, String bankPhone, Date addTime) { |
| | | |
| | | this.id = id; |
| | | |
| | | this.userId = userId; |
| | | |
| | | this.bankName = bankName; |
| | | |
| | | this.bankNo = bankNo; |
| | | |
| | | this.bankAddress = bankAddress; |
| | | |
| | | this.bankImg = bankImg; |
| | | |
| | | this.bankPhone = bankPhone; |
| | | |
| | | this.addTime = addTime; |
| | | |
| | | } |
| | | |
| | | public UserBank() { |
| | | } |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | public Integer getUserId() { |
| | | return userId; |
| | | } |
| | | |
| | | public void setUserId(Integer userId) { |
| | | this.userId = userId; |
| | | } |
| | | |
| | | public String getBankName() { |
| | | return bankName; |
| | | } |
| | | |
| | | public void setBankName(String bankName) { |
| | | this.bankName = bankName; |
| | | } |
| | | |
| | | public String getBankNo() { |
| | | return bankNo; |
| | | } |
| | | |
| | | public void setBankNo(String bankNo) { |
| | | this.bankNo = bankNo; |
| | | } |
| | | |
| | | public String getBankAddress() { |
| | | return bankAddress; |
| | | } |
| | | |
| | | public void setBankAddress(String bankAddress) { |
| | | this.bankAddress = bankAddress; |
| | | } |
| | | |
| | | public String getBankImg() { |
| | | return bankImg; |
| | | } |
| | | |
| | | public void setBankImg(String bankImg) { |
| | | this.bankImg = bankImg; |
| | | } |
| | | |
| | | public String getBankPhone() { |
| | | return bankPhone; |
| | | } |
| | | |
| | | public void setBankPhone(String bankPhone) { |
| | | this.bankPhone = bankPhone; |
| | | } |
| | | |
| | | public Date getAddTime() { |
| | | return addTime; |
| | | } |
| | | |
| | | public void setAddTime(Date addTime) { |
| | | this.addTime = addTime; |
| | | } |
| | | private Date addTime = new Date(); |
| | | } |
| New file |
| | |
| | | package com.nq.pojo; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @program: dabaogp |
| | | * @description: 大宗交易审核表 |
| | | * @create: 2024-07-02 14:23 |
| | | **/ |
| | | @Data |
| | | public class UserPositionCheckDz { |
| | | |
| | | @TableId(type = IdType.AUTO,value = "id") |
| | | private Integer id; |
| | | private Integer positionType; |
| | | private String positionSn; |
| | | private Integer userId; |
| | | private String nickName; |
| | | private Integer agentId; |
| | | private String stockName; |
| | | private String stockCode; |
| | | private String stockGid; |
| | | private String stockSpell; |
| | | private String buyOrderId; |
| | | // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date buyOrderTime; |
| | | private BigDecimal buyOrderPrice; |
| | | private String sellOrderId; |
| | | // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date sellOrderTime; |
| | | |
| | | public void setId(Integer id) { |
| | | this.id = id; |
| | | } |
| | | |
| | | private BigDecimal sellOrderPrice; |
| | | // |
| | | private BigDecimal profitTargetPrice; |
| | | private BigDecimal stopTargetPrice; |
| | | private String orderDirection; |
| | | private Integer orderNum; |
| | | private Integer orderLever; |
| | | private BigDecimal orderTotalPrice; |
| | | private BigDecimal orderFee; |
| | | private BigDecimal orderSpread; |
| | | private BigDecimal orderStayFee; |
| | | private Integer orderStayDays; |
| | | private BigDecimal profitAndLose; |
| | | private BigDecimal allProfitAndLose; |
| | | private Integer isLock; |
| | | private String lockMsg; |
| | | private String stockPlate; |
| | | /*点差费金额*/ |
| | | private BigDecimal spreadRatePrice; |
| | | /*追加保证金额*/ |
| | | private BigDecimal marginAdd; |
| | | |
| | | //0:待审核 1:成功 2:失败 |
| | | private Integer checkType = 0; |
| | | |
| | | private Integer dzId; |
| | | } |
| | |
| | | */ |
| | | private String agentName; |
| | | |
| | | /** |
| | | * 新股id |
| | | */ |
| | | private Integer newStockId; |
| | | |
| | | /** |
| | | * 申购股票代码 |
| | |
| | | |
| | | Map<String, Object> getNewStock(String stockCode); |
| | | |
| | | BigDecimal getNowPrice(String stockCode,String stockType); |
| | | |
| | | |
| | | boolean isLimitUpBuy(String stockCode); |
| | | |
| | | |
| | |
| | | |
| | | ServerResponse<Stock> findStockById(Integer paramInteger); |
| | | |
| | | ServerResponse<PageInfo> listByAdmin(Integer paramInteger1, Integer paramInteger2, String paramString1, String paramString2, String paramString3, String paramString4, int paramInt1, int paramInt2, HttpServletRequest paramHttpServletRequest); |
| | | ServerResponse<PageInfo> listByAdmin(String stockGid,Integer paramInteger1, Integer paramInteger2, String paramString1, String paramString2, String paramString3, String paramString4, int paramInt1, int paramInt2, HttpServletRequest paramHttpServletRequest); |
| | | |
| | | ServerResponse updateLock(Integer paramInteger); |
| | | |
| | |
| | | * @createDate 2022-10-24 23:27:27 |
| | | */ |
| | | public interface IStockSubscribeService extends IService<StockSubscribe> { |
| | | ServerResponse list( String name,String code,Integer zt,Integer getType,Integer isLock,Integer type, HttpServletRequest paramHttpServletRequest); |
| | | ServerResponse list( String name,String code,Integer zt,Integer getType,Integer isLock,Integer type,Integer stockGid,Integer postType, HttpServletRequest paramHttpServletRequest); |
| | | |
| | | |
| | | ServerResponse add(StockSubscribe model, HttpServletRequest request); |
| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | public interface IUserBankService { |
| | | UserBank findUserBankByUserId(Integer paramInteger); |
| | | |
| | | |
| | | ServerResponse addBank(UserBank paramUserBank, HttpServletRequest paramHttpServletRequest); |
| | | |
| | | ServerResponse updateBank(UserBank paramUserBank, HttpServletRequest paramHttpServletRequest); |
| | |
| | | |
| | | ServerResponse buyVipQc(String stockCode, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, HttpServletRequest request) throws Exception; |
| | | |
| | | ServerResponse buyDz(String stockCode, String password, Integer num, HttpServletRequest request) throws Exception; |
| | | ServerResponse buyDz(Integer dzId, String password, Integer num, HttpServletRequest request) throws Exception; |
| | | |
| | | ServerResponse buyStockDzList(HttpServletRequest request); |
| | | |
| | |
| | | import com.nq.pojo.User; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.text.ParseException; |
| | | import java.util.Date; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | public interface IUserService { |
| | |
| | | |
| | | ServerResponse addSimulatedAccount(Integer paramInteger1, String paramString1, String paramString2, String paramString3, Integer paramInteger2, HttpServletRequest paramHttpServletRequest); |
| | | |
| | | ServerResponse listByAdmin(String paramString1, String paramString2, Integer paramInteger1, Integer paramInteger2, int paramInt1, int paramInt2, HttpServletRequest paramHttpServletRequest); |
| | | ServerResponse listByAdmin(String paramString1, String paramString2, Integer paramInteger1, Integer paramInteger2, int paramInt1, int paramInt2, Integer isLock, Integer isLogin, String regTime,Integer isActive, HttpServletRequest paramHttpServletRequest) throws ParseException; |
| | | |
| | | ServerResponse findByUserId(Integer paramInteger); |
| | | |
| | |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.nq.common.ServerResponse; |
| | | import com.nq.pojo.UserStockSubscribe; |
| | | import com.nq.vo.stock.UserStockSubscribeAddIn; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | |
| | | /** |
| | | * 新增 |
| | | */ |
| | | ServerResponse insert(UserStockSubscribe model,HttpServletRequest request) throws Exception; |
| | | ServerResponse insert(UserStockSubscribeAddIn model, HttpServletRequest request) throws Exception; |
| | | |
| | | /** |
| | | * 更新 |
| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | public interface IUserWithdrawService { |
| | | ServerResponse outMoney(String paramString,String with_Pwd, String assetsType,HttpServletRequest paramHttpServletRequest) throws Exception; |
| | | ServerResponse outMoney(String paramString,String with_Pwd, String assetsType,String bankId,HttpServletRequest paramHttpServletRequest) throws Exception; |
| | | |
| | | ServerResponse<PageInfo> findUserWithList(String paramString, HttpServletRequest paramHttpServletRequest, int paramInt1, int paramInt2); |
| | | |
| | |
| | | import com.nq.common.ServerResponse; |
| | | import com.nq.pojo.StockDz; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | /** |
| | | * @author Administrator |
| | | * @description 针对表【stock_dz】的数据库操作Service |
| | |
| | | */ |
| | | public interface StockDzService extends IService<StockDz> { |
| | | |
| | | ServerResponse getDzList(); |
| | | ServerResponse getDzList(int paramInt1, int paramInt2, String paramString1, String paramString2, HttpServletRequest request); |
| | | |
| | | ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period); |
| | | ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period,String nowPrice,Integer switchType); |
| | | |
| | | ServerResponse getDzListByAdmin(String keywords); |
| | | |
| New file |
| | |
| | | package com.nq.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.nq.pojo.UserPendingorder; |
| | | import com.nq.pojo.UserPositionCheckDz; |
| | | |
| | | /** |
| | | * @program: dabaogp |
| | | * @description: |
| | | * @create: 2024-07-02 14:25 |
| | | **/ |
| | | public interface UserPositionCheckDzService extends IService<UserPositionCheckDz> { |
| | | } |
| | |
| | | package com.nq.service.impl; |
| | | |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.fasterxml.jackson.core.JsonProcessingException; |
| | | import com.google.gson.Gson; |
| | |
| | | import java.io.InputStreamReader; |
| | | import java.net.HttpURLConnection; |
| | | import java.net.URL; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | |
| | | Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code",stockCode)); |
| | | StockSetting stockSetting = stockSettingMapper.selectOne(new QueryWrapper<StockSetting>().eq("stock_code",stockCode)); |
| | | if(stockSetting != null){ |
| | | if(TimeUtil.isTradingHour(stockSetting.getStartTime(),stockSetting.getEndTime())){ |
| | | Date newDate = new Date(); |
| | | DateTime startTime = DateUtil.parseDateTime(stockSetting.getStartTime()); |
| | | DateTime endTime = DateUtil.parseDateTime(stockSetting.getEndTime()); |
| | | if(newDate.after(startTime) && newDate.before(endTime)){ |
| | | // if(TimeUtil.isTradingHour(stockSetting.getStartTime(),stockSetting.getEndTime())){ |
| | | if(stockSetting.getType().equals("0")){ |
| | | return new BigDecimal(stockSetting.getPrice()); |
| | | }else{ |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public BigDecimal getNowPrice(String stockCode, String stockType) { |
| | | BigDecimal nowPrice = getNowPrice(stockCode); |
| | | if (!stockType.equals("DZ")){ |
| | | return nowPrice; |
| | | } |
| | | QueryWrapper queryWrapper = new QueryWrapper<>(); |
| | | queryWrapper.eq("stock_code",stockCode); |
| | | StockDz stockDz = stockDZMapper.selectOne(queryWrapper); |
| | | if(stockDz == null){ |
| | | return nowPrice;} |
| | | return nowPrice.multiply(stockDz.getDiscount()); |
| | | } |
| | | |
| | | @Override |
| | |
| | | package com.nq.service.impl; |
| | | |
| | | import cn.hutool.core.date.DatePattern; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.google.common.collect.Lists; |
| | | import com.nq.common.ServerResponse; |
| | | import com.nq.dao.StockDzMapper; |
| | | import com.nq.dao.StockMapper; |
| | | import com.nq.pojo.Stock; |
| | | import com.nq.pojo.StockDz; |
| | | import com.nq.pojo.reponse.RPageInfo; |
| | | import com.nq.service.StockDzService; |
| | | import com.nq.utils.stock.sina.StockApi; |
| | | import com.nq.utils.timeutil.DateTimeUtil; |
| | | import com.nq.vo.stock.StockDzVo; |
| | | import com.nq.vo.stock.StockListVO; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.concurrent.CompletableFuture; |
| | | |
| | | /** |
| | | * @author Administrator |
| | |
| | | private SiteSettingServiceImpl siteSettingService; |
| | | @Autowired |
| | | private StockMapper stockMapper; |
| | | |
| | | @Override |
| | | public ServerResponse getDzList() { |
| | | // List<StockDz> list = stockDzMapper.selectList(new QueryWrapper<StockDz>().eq("is_show", 1)); |
| | | // List<StockDzVo> stockDzVos = Lists.newArrayList(); |
| | | // for (StockDz stockDz : list) { |
| | | // StockListVO stockListVO = SinaStockApi.assembleInStockListVO(SinaStockApi.getInStockDetail(stockDz.getStockCode())); |
| | | // BigDecimal price = new BigDecimal(stockListVO.getNowPrice()).multiply(stockDz.getDiscount()); |
| | | // |
| | | // StockDzVo stockDzVo = new StockDzVo(); |
| | | // stockDzVo.setId(stockDz.getId()); |
| | | // stockDzVo.setStockName(stockDz.getStockName()); |
| | | // stockDzVo.setStockCode(stockDz.getStockCode()); |
| | | // stockDzVo.setPrice(price); |
| | | // stockDzVo.setStockType(stockDz.getStockType()); |
| | | // stockDzVo.setStockGid(stockDz.getStockGid()); |
| | | // stockDzVo.setStockPlate(stockDz.getStockPlate()); |
| | | // stockDzVo.setIsLock(stockDz.getIsLock()); |
| | | // stockDzVo.setStockNum(stockDz.getStockNum()); |
| | | // stockDzVo.setStartTime(stockDz.getStartTime()); |
| | | // stockDzVo.setEndTime(stockDz.getEndTime()); |
| | | // stockDzVos.add(stockDzVo); |
| | | // } |
| | | return ServerResponse.createBySuccess(); |
| | | public ServerResponse getDzList(int pageNum, int pageSize, String orderBy, String keyWords, HttpServletRequest request) { |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | String formatDate = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN); |
| | | List<StockDz> stockTypeDz = stockMapper.findStockTypeDz(orderBy, keyWords,formatDate); |
| | | RPageInfo pageInfo = new RPageInfo(); |
| | | pageInfo.setList(stockTypeDz); |
| | | return ServerResponse.createBySuccess(pageInfo); |
| | | } |
| | | |
| | | @Override |
| | | public ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period) { |
| | | if (stockCode == null || stockCode.equals("")||stockNum == null || stockNum.equals("")||password == null || discount == null|| discount.equals("")|| |
| | | password.equals("")|| startTime == null || startTime.equals("")||endTime == null || endTime.equals("") || period == null){ |
| | | public ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period,String nowPrice,Integer switchType) { |
| | | if (stockCode == null || stockCode.equals("")||stockNum == null || stockNum.equals("")|| startTime == null || startTime.equals("")||endTime == null || endTime.equals("") || period == null || nowPrice == null){ |
| | | return ServerResponse.createByErrorMsg("参数不能为空"); |
| | | } |
| | | |
| | |
| | | if (stock == null){ |
| | | return ServerResponse.createByErrorMsg("股票代码不存在"); |
| | | } |
| | | Long count = stockDzMapper.selectCount(new LambdaQueryWrapper<StockDz>().eq(StockDz::getStockCode, stockCode)); |
| | | if(count > 0){ |
| | | return ServerResponse.createByErrorMsg("股票代码已存在"); |
| | | } |
| | | |
| | | StockDz stockDz = new StockDz(); |
| | | stockDz.setStockName(stock.getStockName()); |
| | | stockDz.setStockCode(stock.getStockCode()); |
| | |
| | | stockDz.setPassword(password); |
| | | stockDz.setStartTime(DateTimeUtil.strToDate(startTime)); |
| | | stockDz.setEndTime(DateTimeUtil.strToDate(endTime)); |
| | | stockDz.setDiscount(new BigDecimal(discount)); |
| | | // stockDz.setDiscount(new BigDecimal(discount)); |
| | | stockDz.setPeriod(period); |
| | | stockDz.setSwitchType(switchType); |
| | | stockDz.setNowPrice(new BigDecimal(nowPrice)); |
| | | int res = stockDzMapper.insert(stockDz); |
| | | if (res > 0) { |
| | | return ServerResponse.createBySuccessMsg("添加成功"); |
| | |
| | | @Override |
| | | public ServerResponse getStockByType(int pageNum, int pageSize, String orderBy, String keyWords, String stockType, HttpServletRequest request) { |
| | | List<Stock> stockList = new ArrayList<>(); |
| | | if(stockType.equals(EStockType.IN.getCode())){ |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | stockList.addAll(stockMapper.findStockByType(orderBy,stockType,keyWords)); |
| | | }else{ |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | stockList.addAll(stockMapper.findStockTypeDz(orderBy,EStockType.IN.getCode(), keyWords)); |
| | | } |
| | | |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | stockList.addAll(stockMapper.findStockByType(orderBy,stockType,keyWords)); |
| | | List<StockListVO> stockListVOS = Lists.newArrayList(); |
| | | if (stockList.size() > 0){ |
| | | stockListVOS.addAll(Objects.requireNonNull(StockApi.getStockReailTimes(stockList))); |
| | |
| | | return ServerResponse.createBySuccess(this.stockMapper.selectByPrimaryKey(stockId)); |
| | | } |
| | | |
| | | public ServerResponse<PageInfo> listByAdmin(Integer showState, Integer lockState, String code, String name, String stockPlate, String stockType, int pageNum, int pageSize, HttpServletRequest request) { |
| | | public ServerResponse<PageInfo> listByAdmin(String stockGid,Integer showState, Integer lockState, String code, String name, String stockPlate, String stockType, int pageNum, int pageSize, HttpServletRequest request) { |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | List<Stock> stockList = this.stockMapper.listByAdmin(showState, lockState, code, name, stockPlate, stockType); |
| | | List<Stock> stockList = this.stockMapper.listByAdmin(stockGid,showState, lockState, code, name, stockPlate, stockType); |
| | | List<StockAdminListVO> stockAdminListVOS = Lists.newArrayList(); |
| | | for (Stock stock : stockList) { |
| | | StockAdminListVO stockAdminListVO = assembleStockAdminListVO(stock); |
| | |
| | | package com.nq.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.nq.common.ServerResponse; |
| | | import com.nq.dao.StockMapper; |
| | |
| | | @Override |
| | | public ServerResponse saveStockSetting(StockSetting stockSetting) { |
| | | |
| | | |
| | | Long count = stockSettingMapper.selectCount(new LambdaQueryWrapper<StockSetting>().eq(StockSetting::getStockCode, stockSetting.getStockCode())); |
| | | if(count > 0){ |
| | | return ServerResponse.createByErrorMsg("已存在相同股票"); |
| | | } |
| | | Stock stock = stockMapper.findStockByCode(stockSetting.getStockCode()); |
| | | if(stock == null){ |
| | | return ServerResponse.createByErrorMsg("添加股票不存在"); |
| | |
| | | package com.nq.service.impl; |
| | | |
| | | 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.service.impl.ServiceImpl; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.xml.stream.events.EntityDeclaration; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | * @Date: 2022/10/25 |
| | | */ |
| | | @Override |
| | | public ServerResponse list(String name, String code, Integer zt,Integer getType, Integer isLock, Integer type, HttpServletRequest request) { |
| | | public ServerResponse list(String name, String code, Integer zt,Integer getType, Integer isLock, Integer type, Integer stockType,Integer postType,HttpServletRequest request) { |
| | | |
| | | //name和code模糊查询 |
| | | QueryWrapper<StockSubscribe> queryWrapper = new QueryWrapper(); |
| | |
| | | if (type != null && !type.equals("")) { |
| | | queryWrapper.eq("type", type); |
| | | } |
| | | if(getType == 1){ |
| | | queryWrapper.gt("list_date", new Date()); |
| | | // if(getType == 1){ |
| | | // queryWrapper.gt("list_date", new Date()); |
| | | // } |
| | | if(stockType != null){ |
| | | queryWrapper.eq("stock_type", stockType); |
| | | } |
| | | queryWrapper.orderByDesc("newlist_id"); |
| | | // if(postType == 0){ |
| | | // queryWrapper.select(StockSubscribe.class, info -> !info.getColumn().equals("password")); |
| | | // } |
| | | List<StockSubscribe> stockSubscribeList = this.stockSubscribeMapper.selectList(queryWrapper); |
| | | |
| | | Date newDate = new Date(); |
| | | |
| | | for (StockSubscribe stockSubscribe : stockSubscribeList) { |
| | | Date startDate = stockSubscribe.getSubscribeTime(); |
| | | Date endDate = stockSubscribe.getSubscriptionTime(); |
| | | |
| | | boolean isBetween = newDate.after(startDate) && newDate.before(endDate); |
| | | stockSubscribe.setIsBetween(isBetween); |
| | | } |
| | | |
| | | PageInfo pageInfo = new PageInfo(stockSubscribeList); |
| | | pageInfo.setList(stockSubscribeList); |
| | | |
| | |
| | | if(null == stock){ |
| | | return ServerResponse.createByErrorMsg("新股代码不存在"); |
| | | } |
| | | Long count = stockSubscribeMapper.selectCount(new LambdaQueryWrapper<StockSubscribe>() |
| | | .eq(StockSubscribe::getCode, model.getCode()) |
| | | .eq(StockSubscribe::getType, model.getType())); |
| | | if(count > 0){ |
| | | return ServerResponse.createByErrorMsg("新股已存在"); |
| | | } |
| | | |
| | | int resultCount = this.stockSubscribeMapper.insert(model); |
| | | if (resultCount > 0) { |
| | | return ServerResponse.createBySuccessMsg("添加新股成功"); |
| | |
| | | if (stockSubscribe == null) { |
| | | return ServerResponse.createByErrorMsg("新股不存在"); |
| | | } |
| | | Long count = stockSubscribeMapper.selectCount(new LambdaQueryWrapper<StockSubscribe>() |
| | | .eq(StockSubscribe::getCode, model.getCode()) |
| | | .eq(StockSubscribe::getType, model.getType()).ne(StockSubscribe::getNewlistId,model.getNewlistId())); |
| | | if(count > 0){ |
| | | return ServerResponse.createByErrorMsg("新股已存在"); |
| | | } |
| | | |
| | | //修改新股 |
| | | int resultCount = this.stockSubscribeMapper.updateById(model); |
| | | //修改用户申购的新股代码 |
| | | List<UserStockSubscribe> userStockSubscribes = userStockSubscribeMapper |
| | | .selectList(new LambdaQueryWrapper<UserStockSubscribe>() |
| | | .eq(UserStockSubscribe::getNewCode, stockSubscribe.getCode())); |
| | | .eq(UserStockSubscribe::getNewStockId, stockSubscribe.getNewlistId())); |
| | | for (UserStockSubscribe u : userStockSubscribes) { |
| | | u.setNewCode(model.getCode()); |
| | | userStockSubscribeMapper.updateById(u); |
| | |
| | | package com.nq.service.impl; |
| | | |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.nq.dao.StockMapper; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.time.LocalDate; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @program: dabao |
| | |
| | | StockTimeSetting stockTimeSetting = stockTimeSettingMapper.selectOne(new QueryWrapper<StockTimeSetting>().eq("accets_type",stock.getStockType())); |
| | | if(stockSetting!= null){ |
| | | // 说明进入盘前交易或者盘后交易时间 |
| | | if(TimeUtil.isTradingHour(stockSetting.getStartTime(),stockSetting.getEndTime())){ |
| | | Date newDate = new Date(); |
| | | DateTime startTime = DateUtil.parseDateTime(stockSetting.getStartTime()); |
| | | DateTime endTime = DateUtil.parseDateTime(stockSetting.getEndTime()); |
| | | if(newDate.after(startTime) && newDate.before(endTime)){ |
| | | return true; |
| | | } |
| | | } |
| | |
| | | package com.nq.service.impl; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.nq.common.ServerResponse; |
| | | |
| | | import com.nq.dao.UserBankMapper; |
| | |
| | | import com.nq.vo.user.UserBankInfoVO; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service("iUserBankService") |
| | | public class UserBankServiceImpl implements IUserBankService { |
| | | public class UserBankServiceImpl extends ServiceImpl<UserBankMapper, UserBank> implements IUserBankService { |
| | | |
| | | @Resource |
| | | UserBankMapper userBankMapper; |
| | |
| | | @Autowired |
| | | IUserService iUserService; |
| | | |
| | | public UserBank findUserBankByUserId(Integer userId) { return this.userBankMapper.findUserBankByUserId(userId); } |
| | | |
| | | @Override |
| | | public ServerResponse addBank(UserBank bank, HttpServletRequest request) { |
| | | |
| | | User user = this.iUserService.getCurrentUser(request); |
| | | UserBank dbBank = this.userBankMapper.findUserBankByUserId(user.getId()); |
| | | if (dbBank != null) { |
| | | List<UserBank> userBanks = this.userBankMapper.selectList(new LambdaQueryWrapper<UserBank>().eq(UserBank::getBankNo, bank.getBankNo())); |
| | | if (CollectionUtils.isNotEmpty(userBanks)) { |
| | | return ServerResponse.createByErrorMsg("银行信息已经存在。不要再加一次",request ); |
| | | } |
| | | UserBank userBank = new UserBank(); |
| | | |
| | | userBank.setUserId(user.getId()); |
| | | |
| | | userBank.setBankName(bank.getBankName()); |
| | | |
| | | userBank.setBankNo(bank.getBankNo()); |
| | | |
| | | userBank.setBankAddress(bank.getBankAddress()); |
| | | |
| | | userBank.setBankImg(bank.getBankImg()); |
| | | |
| | | userBank.setBankPhone(bank.getBankPhone()); |
| | | |
| | | userBank.setAddTime(new Date()); |
| | | |
| | | int insertCount = this.userBankMapper.insert(userBank); |
| | | |
| | | bank.setUserId(user.getId()); |
| | | int insertCount = this.userBankMapper.insert(bank); |
| | | if (insertCount > 0) { |
| | | return ServerResponse.createBySuccess("添加银行卡成功",request ); |
| | | |
| | | } |
| | | |
| | | return ServerResponse.createByErrorMsg("添加银行卡失败",request ); |
| | | |
| | | } |
| | | |
| | | public ServerResponse updateBank(UserBank bank, HttpServletRequest request) { |
| | | |
| | | User user = this.iUserService.getCurrentUser(request); |
| | | |
| | | UserBank dbBank = this.userBankMapper.findUserBankByUserId(user.getId()); |
| | | |
| | | UserBank dbBank = this.userBankMapper.selectById(bank.getId()); |
| | | if (dbBank == null) { |
| | | |
| | | return ServerResponse.createByErrorMsg("修改失败。银行找不到",request ); |
| | | |
| | | } |
| | | |
| | | dbBank.setBankName(bank.getBankName()); |
| | | |
| | | dbBank.setBankNo(bank.getBankNo()); |
| | | |
| | | dbBank.setBankAddress(bank.getBankAddress()); |
| | | |
| | | dbBank.setBankImg(bank.getBankImg()); |
| | | |
| | | dbBank.setBankPhone(bank.getBankPhone()); |
| | | |
| | | int updateCount = this.userBankMapper.updateByPrimaryKeySelective(dbBank); |
| | | |
| | | int updateCount = this.userBankMapper.updateByPrimaryKeySelective(bank); |
| | | if (updateCount > 0) { |
| | | |
| | | return ServerResponse.createBySuccess("修改银行卡成功",request ); |
| | | |
| | | } |
| | | |
| | | return ServerResponse.createByErrorMsg("修改银行卡失败",request ); |
| | | } |
| | | |
| | | @Override |
| | | public ServerResponse getBankInfo(HttpServletRequest request) { |
| | | |
| | | User user = this.iUserService.getCurrentUser(request); |
| | | |
| | | UserBank dbBank = this.userBankMapper.findUserBankByUserId(user.getId()); |
| | | |
| | | if (dbBank == null) { |
| | | |
| | | List<UserBank> userBanks = this.userBankMapper.selectList(new LambdaQueryWrapper<UserBank>().eq(UserBank::getUserId,user.getId())); |
| | | if (userBanks == null) { |
| | | return ServerResponse.createByErrorMsg("没有添加银行信息",request ); |
| | | |
| | | } |
| | | |
| | | UserBankInfoVO userBankInfoVO = new UserBankInfoVO(); |
| | | |
| | | userBankInfoVO.setRealName(user.getRealName()); |
| | | |
| | | userBankInfoVO.setBankName(dbBank.getBankName()); |
| | | |
| | | userBankInfoVO.setBankImg(dbBank.getBankImg()); |
| | | |
| | | userBankInfoVO.setBankAddress(dbBank.getBankAddress()); |
| | | |
| | | userBankInfoVO.setBankNo(dbBank.getBankNo()); |
| | | |
| | | return ServerResponse.createBySuccess(userBankInfoVO); |
| | | return ServerResponse.createBySuccess(userBanks); |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | } |
| | | |
| | | public ServerResponse getBank(Integer userId) { return ServerResponse.createBySuccess(this.userBankMapper.findUserBankByUserId(userId)); } |
| | | public ServerResponse getBank(Integer userId) { return ServerResponse.createBySuccess(this.userBankMapper.selectList(new LambdaQueryWrapper<UserBank>().eq(UserBank::getUserId,userId)));} |
| | | |
| | | } |
| New file |
| | |
| | | package com.nq.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.nq.dao.UserPendingorderMapper; |
| | | import com.nq.dao.UserPositionCheckDzMapper; |
| | | import com.nq.pojo.UserPendingorder; |
| | | import com.nq.pojo.UserPositionCheckDz; |
| | | import com.nq.service.UserPendingorderService; |
| | | import com.nq.service.UserPositionCheckDzService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * @program: dabaogp |
| | | * @description: |
| | | * @create: 2024-07-02 14:25 |
| | | **/ |
| | | @Service |
| | | public class UserPositionCheckDzServiceImpl extends ServiceImpl<UserPositionCheckDzMapper, UserPositionCheckDz> implements UserPositionCheckDzService { |
| | | } |
| | |
| | | package com.nq.service.impl; |
| | | |
| | | import cn.hutool.core.convert.Convert; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.nq.dao.*; |
| | |
| | | @Autowired |
| | | IStockConfigServices iStockConfigServices; |
| | | |
| | | @Autowired |
| | | UserPositionCheckDzService userPositionCheckDzService; |
| | | |
| | | |
| | | |
| | |
| | | if (userStockSubscribe == null) { |
| | | return ServerResponse.createByErrorMsg("无该申购记录"); |
| | | } |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<StockSubscribe>().eq("code", userStockSubscribe.getNewCode()).eq("type",userStockSubscribe.getType())); |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<StockSubscribe>().eq("newlist_id", userStockSubscribe.getNewStockId())); |
| | | if (userStockSubscribe == null) { |
| | | return ServerResponse.createByErrorMsg("该新股不存在"); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | @Transactional |
| | | public ServerResponse buyDz(String stockCode, String password, Integer num, HttpServletRequest request) throws Exception { |
| | | public ServerResponse buyDz(Integer dzId, String password, Integer num, HttpServletRequest request) throws Exception { |
| | | /*实名认证开关开启*/ |
| | | SiteProduct siteProduct = iSiteProductService.getProductSetting(); |
| | | User user = this.iUserService.getCurrentRefreshUser(request); |
| | |
| | | if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){ |
| | | return ServerResponse.createByErrorMsg("请先缴清待补资金", request); |
| | | } |
| | | StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("stock_code", stockCode)); |
| | | if (!Objects.equals(stockDz.getPassword(), password)) { |
| | | StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("id", dzId)); |
| | | if (StringUtils.isNotEmpty(stockDz.getPassword()) && !Objects.equals(stockDz.getPassword(), password)) { |
| | | return ServerResponse.createByErrorMsg("密码错误", request); |
| | | } |
| | | if (stockDz.getIsLock() != 0) { |
| | |
| | | if(stockDz.getStartTime().getTime() > new Date().getTime() || stockDz.getEndTime().getTime() < new Date().getTime()){ |
| | | return ServerResponse.createByErrorMsg("不在内幕交易时间之内", request); |
| | | } |
| | | BigDecimal nowPrice = priceServices.getNowPrice(stockCode).multiply(stockDz.getDiscount()); |
| | | // BigDecimal nowPrice = priceServices.getNowPrice(stockDz.getStockCode()).multiply(stockDz.getDiscount()); |
| | | BigDecimal nowPrice = stockDz.getNowPrice(); |
| | | |
| | | if (nowPrice.compareTo(new BigDecimal("0")) == 0) { |
| | | return ServerResponse.createByErrorMsg("股票价格0,请重试", request); |
| | |
| | | return ServerResponse.createByErrorMsg("订单失败,配资不足", request); |
| | | } |
| | | |
| | | //判断审核开关 |
| | | if(stockDz.getSwitchType() == 1){ |
| | | UserPosition userPosition = getUserPosition(num, user, stockDz, nowPrice, stock, buyAmt); |
| | | UserPositionCheckDz userPositionCheckDz = Convert.convert(UserPositionCheckDz.class, userPosition); |
| | | userPositionCheckDz.setDzId(dzId); |
| | | userPositionCheckDzService.save(userPositionCheckDz); |
| | | return ServerResponse.createBySuccess("购买成功,等待审核", request); |
| | | } |
| | | |
| | | // 创建UserPosition对象 |
| | | UserPosition userPosition = getUserPosition(num, user, stockDz, nowPrice, stock, buyAmt); |
| | | userPositionMapper.insert(userPosition); |
| | | userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"",""); |
| | | return ServerResponse.createBySuccess("购买成功", request); |
| | | } |
| | | |
| | | private UserPosition getUserPosition(Integer num, User user, StockDz stockDz, BigDecimal nowPrice, Stock stock, BigDecimal buyAmt) { |
| | | UserPosition userPosition = new UserPosition(); |
| | | userPosition.setPositionType(3); |
| | | userPosition.setPositionSn(KeyUtils.getUniqueKey()); |
| | |
| | | userPosition.setAllProfitAndLose(all_profit_and_lose); |
| | | userPosition.setOrderStayDays(Integer.valueOf(0)); |
| | | userPosition.setOrderStayFee(new BigDecimal("0")); |
| | | |
| | | userPosition.setOrderSpread(BigDecimal.ZERO); |
| | | userPositionMapper.insert(userPosition); |
| | | userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"",""); |
| | | return ServerResponse.createBySuccess("购买成功", request); |
| | | return userPosition; |
| | | } |
| | | |
| | | @Override |
| | |
| | | package com.nq.service.impl; |
| | | |
| | | import cn.hutool.core.convert.Convert; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.github.pagehelper.PageHelper; |
| | |
| | | import com.nq.vo.position.PositionProfitVO; |
| | | import com.nq.vo.position.PositionVO; |
| | | import com.nq.vo.position.UserPositionVO; |
| | | import com.nq.vo.stock.StockAdminListVO; |
| | | import com.nq.vo.stock.StockListVO; |
| | | import com.nq.vo.user.UserInfoVO; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | |
| | | import com.nq.vo.user.UserOut; |
| | | import org.apache.commons.lang3.Conversion; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | |
| | | |
| | | @Autowired |
| | | IPriceServices priceServices; |
| | | |
| | | @Autowired |
| | | IUserService iUserService; |
| | | |
| | | |
| | | public ServerResponse reg(String yzmCode, String agentCode, String phone, String userPwd, HttpServletRequest request) { |
| | |
| | | } |
| | | |
| | | |
| | | public ServerResponse listByAdmin(String realName, String phone, Integer agentId, Integer accountType, int pageNum, int pageSize, HttpServletRequest request) { |
| | | public ServerResponse listByAdmin(String realName, String phone, Integer agentId, Integer accountType, int pageNum, int pageSize, Integer isLock, Integer isLogin, String regTime, Integer isActive, HttpServletRequest request) throws ParseException { |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String formattedDateString = null; |
| | | if (StringUtils.isNotEmpty(regTime)) { |
| | | formattedDateString = outputFormat.format(inputFormat.parse(regTime)); |
| | | } |
| | | List<User> users = this.userMapper.listByAdmin(realName, phone, agentId, accountType, isLock, isLogin, formattedDateString, isActive); |
| | | List<UserOut> userOuts = new ArrayList<>(); |
| | | |
| | | List<User> users = this.userMapper.listByAdmin(realName, phone, agentId, accountType); |
| | | // 获取用户资产信息并构建返回结果 |
| | | Map<Integer, UserOut> userOutMap = new HashMap<>(); |
| | | for (User user : users) { |
| | | ServerResponse money = iUserService.getMoney(user.getId()); |
| | | List<RUserAssets> rUserAssetsList = (List<RUserAssets>) money.getData(); |
| | | RUserAssets rUserAssets = rUserAssetsList.stream() |
| | | .filter(stock -> "IN".equals(stock.getAccectType())) |
| | | .findFirst() |
| | | .orElse(null); |
| | | |
| | | PageInfo pageInfo = new PageInfo(users); |
| | | UserOut userOut = Convert.convert(UserOut.class, user); |
| | | if (rUserAssets != null) { |
| | | userOut.setTotalMoney(rUserAssets.getTotalMoney().equals("0E-8") ? "0" : rUserAssets.getTotalMoney()); |
| | | userOut.setFreezeMoney(rUserAssets.getFreezeMoney().equals("0E-8") ? "0" : rUserAssets.getFreezeMoney()); |
| | | userOut.setAvailableBalance(rUserAssets.getAvailableBalance().equals("0E-8") ? "0" : rUserAssets.getAvailableBalance()); |
| | | } |
| | | |
| | | userOutMap.put(user.getId(), userOut); |
| | | userOuts.add(userOut); |
| | | } |
| | | |
| | | PageInfo pageInfo = new PageInfo(userOuts); |
| | | |
| | | return ServerResponse.createBySuccess(pageInfo); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | public ServerResponse findByUserId(Integer userId) { |
| | |
| | | BigDecimal futuresForceLine = futuresForcePercent.multiply(futuresPositionVO.getAllFuturesDepositAmt()); |
| | | |
| | | agentUserListVO.setFuturesForceLine(futuresForceLine); |
| | | |
| | | |
| | | UserBank userBank = this.iUserBankService.findUserBankByUserId(user.getId()); |
| | | if (userBank != null) { |
| | | agentUserListVO.setBankName(userBank.getBankName()); |
| | | agentUserListVO.setBankNo(userBank.getBankNo()); |
| | | agentUserListVO.setBankAddress(userBank.getBankAddress()); |
| | | } |
| | | |
| | | return agentUserListVO; |
| | | } |
| | |
| | | package com.nq.service.impl; |
| | | |
| | | |
| | | import cn.hutool.core.convert.Convert; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | |
| | | import com.nq.utils.redis.JsonUtil; |
| | | import com.nq.utils.redis.RedisShardedPoolUtils; |
| | | import com.nq.utils.stock.BuyAndSellUtils; |
| | | import com.nq.vo.stock.UserStockSubscribeAddIn; |
| | | import com.sun.org.apache.bcel.internal.generic.RETURN; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public ServerResponse insert(UserStockSubscribe model, HttpServletRequest request) throws Exception { |
| | | public ServerResponse insert(UserStockSubscribeAddIn model, HttpServletRequest request) throws Exception { |
| | | int ret = 0; |
| | | if (model == null) { |
| | | return ServerResponse.createByErrorMsg("参数错误",request); |
| | |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN",user.getId()); |
| | | if (model.getNewCode() != null) { |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<StockSubscribe>() |
| | | .eq("code", model.getNewCode()).eq("type",model.getType())); |
| | | .eq("newlist_id", model.getNewlistId())); |
| | | //判断购买新股需不需要密钥 |
| | | if(StringUtils.isNotEmpty(stockSubscribe.getPassword()) && !stockSubscribe.getPassword().equals(model.getPassword())){ |
| | | return ServerResponse.createByErrorMsg("密钥输入错误",request); |
| | | } |
| | | //实名认证开关 |
| | | SiteProduct siteProduct = iSiteProductService.getProductSetting(); |
| | | if (siteProduct.getRealNameDisplay() && user.getIsActive() != 2) { |
| | |
| | | return ServerResponse.createByErrorMsg("不在认缴或配售时间之内",request); |
| | | } |
| | | |
| | | //重复申购限制 |
| | | UserStockSubscribe userStockSubscribe = userStockSubscribeMapper.selectOne(new QueryWrapper<UserStockSubscribe>().eq( |
| | | "new_code", model.getNewCode()).eq("user_id", user.getId()).eq("type",model.getType())); |
| | | if (userStockSubscribe != null) { |
| | | return ServerResponse.createByErrorMsg("请勿重复申请",request); |
| | | } |
| | | // //重复申购限制 |
| | | // UserStockSubscribe userStockSubscribe = userStockSubscribeMapper.selectOne(new QueryWrapper<UserStockSubscribe>().eq( |
| | | // "new_code", model.getNewCode()).eq("user_id", user.getId()).eq("type",model.getType())); |
| | | // if (userStockSubscribe != null) { |
| | | // return ServerResponse.createByErrorMsg("请勿重复申请",request); |
| | | // } |
| | | if (siteProduct.getRealNameDisplay() && user.getIsLock().intValue() == 1) { |
| | | return ServerResponse.createByErrorMsg("订单失败,帐户已被锁定",request); |
| | | } |
| | | if (stockSubscribe == null) { |
| | | return ServerResponse.createByErrorMsg("新的股票代码不存在",request); |
| | | } |
| | | if (model.getApplyNums() == null || model.getApplyNums() > stockSubscribe.getOrderNumber()|| model.getApplyNums() < 500) { |
| | | return ServerResponse.createByErrorMsg("最小起订量是500,最大值" |
| | | + stockSubscribe.getOrderNumber(),request); |
| | | |
| | | if ( model.getApplyNums() == null){ |
| | | // 申请数量为空时返回错误信息 |
| | | return ServerResponse.createByErrorMsg("申请数量不能为空", request); |
| | | } |
| | | |
| | | if (model.getApplyNums() > stockSubscribe.getOrderNumber()){ |
| | | // 申请数量大于订单数量时返回错误信息 |
| | | return ServerResponse.createByErrorMsg("最多可申购:" + stockSubscribe.getOrderNumber(), request); |
| | | } |
| | | |
| | | if(stockSubscribe.getType() == 1){ |
| | | model.setUserId(user.getId()); |
| | | model.setNewName(stockSubscribe.getName()); |
| | | model.setAgentId(user.getAgentId()); |
| | | model.setAgentName(user.getAgentName()); |
| | | model.setPhone(user.getPhone()); |
| | | model.setBuyPrice(stockSubscribe.getPrice()); |
| | | model.setBond(new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice())); |
| | | model.setBuyPrice(stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()); |
| | | model.setBond(new BigDecimal(model.getApplyNums()).multiply((stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()))); |
| | | model.setRealName(Objects.equals(user.getRealName(), "")||user.getRealName()==null ?"模拟用户无实名":user.getRealName()); |
| | | model.setAddTime(new Date()); |
| | | model.setOrderNo(KeyUtils.getUniqueKey()); |
| | | model.setType(stockSubscribe.getType()); |
| | | ret = userStockSubscribeMapper.insert(model); |
| | | UserStockSubscribe userStockSubscribe = Convert.convert(UserStockSubscribe.class, model); |
| | | userStockSubscribe.setNewStockId(stockSubscribe.getNewlistId()); |
| | | ret = userStockSubscribeMapper.insert(userStockSubscribe); |
| | | if (ret > 0) { |
| | | return ServerResponse.createBySuccessMsg("申购成功",request); |
| | | } else { |
| | | return ServerResponse.createByErrorMsg("申购失败",request); |
| | | } |
| | | }else{ |
| | | BigDecimal bound = new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice()); |
| | | |
| | | BigDecimal bound; |
| | | if(stockSubscribe.getMinPrice() != null || stockSubscribe.getMinPrice().compareTo(BigDecimal.ZERO)<0){ |
| | | bound = new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getMinPrice()); |
| | | }else{ |
| | | bound = new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice()); |
| | | } |
| | | |
| | | BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(EStockType.IN.getCode(), user.getId()); |
| | | if(useEnaAmount.compareTo(bound)<0){ |
| | | return ServerResponse.createByErrorMsg("余额不足,配售失败",request); |
| | |
| | | model.setAgentId(user.getAgentId()); |
| | | model.setAgentName(user.getAgentName()); |
| | | model.setPhone(user.getPhone()); |
| | | model.setBuyPrice(stockSubscribe.getPrice()); |
| | | model.setBond(new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice())); |
| | | model.setBuyPrice(stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()); |
| | | model.setBond(new BigDecimal(model.getApplyNums()).multiply((stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()))); |
| | | model.setRealName(Objects.equals(user.getRealName(), "")||user.getRealName()==null ?"模拟用户无实名":user.getRealName()); |
| | | model.setAddTime(new Date()); |
| | | model.setOrderNo(KeyUtils.getUniqueKey()); |
| | | model.setType(stockSubscribe.getType()); |
| | | model.setDbMoney(BigDecimal.ZERO); |
| | | ret = userStockSubscribeMapper.insert(model); |
| | | UserStockSubscribe userStockSubscribe = Convert.convert(UserStockSubscribe.class, model); |
| | | userStockSubscribe.setNewStockId(stockSubscribe.getNewlistId()); |
| | | ret = userStockSubscribeMapper.insert(userStockSubscribe); |
| | | iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(),EUserAssets.BUY,bound.negate(),"",""); |
| | | if (ret > 0) { |
| | | return ServerResponse.createBySuccessMsg("配售成功",request); |
| | |
| | | return ServerResponse.createByErrorMsg("不能更改申购状态"); |
| | | } |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe()) |
| | | .eq("code", userStockSubscribe.getNewCode()).eq("type",userStockSubscribe.getType())); |
| | | .eq("newlist_id", userStockSubscribe.getNewStockId())); |
| | | if((model.getStatus() == 3 && model.getApplyNumber() == null) || (model.getStatus() == 3 && model.getApplyNumber() == 0) ){ |
| | | return ServerResponse.createByErrorMsg("中签数量不能小于0"); |
| | | } |
| | | if (model.getStatus() == 3 && model.getApplyNumber() != null){ |
| | | if(stockSubscribe.getType() == 1){ |
| | | model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber()))); |
| | | model.setBond((stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()).multiply(BigDecimal.valueOf(model.getApplyNumber()))); |
| | | model.setDbMoney(model.getDbMoney()); |
| | | //客户中签直接扣除客户账户可用资金 |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", userStockSubscribe.getUserId()); |
| | |
| | | return ServerResponse.createByErrorMsg("配置中签数量不能超过申请数量",request); |
| | | } |
| | | BigDecimal cCount = new BigDecimal(model.getApplyNums()-model.getApplyNumber()); |
| | | BigDecimal tMoney = stockSubscribe.getPrice().multiply(cCount); |
| | | BigDecimal tMoney = ((stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice())).multiply(cCount); |
| | | iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(),userStockSubscribe.getUserId(), |
| | | EUserAssets.TOP_UP,tMoney,"",""); |
| | | model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber()))); |
| | | model.setBond((stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()).multiply(BigDecimal.valueOf(model.getApplyNumber()))); |
| | | model.setDbMoney(BigDecimal.ZERO); |
| | | model.setStatus(4); |
| | | ret = userStockSubscribeMapper.update1(model); |
| | |
| | | model.setAgentId(user.getAgentId()); |
| | | model.setAgentName(user.getAgentName()); |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe()) |
| | | .eq("code", model.getNewCode())); |
| | | .eq("newlist_id", model.getNewStockId())); |
| | | if (stockSubscribe == null) { |
| | | return ServerResponse.createByErrorMsg("Failed. Ipo information does not exist"); |
| | | } |
| | | |
| | | model.setNewName(stockSubscribe.getName()); |
| | | model.setBuyPrice(stockSubscribe.getPrice()); |
| | | model.setBuyPrice(stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()); |
| | | if (model.getApplyNums() > stockSubscribe.getOrderNumber() || model.getApplyNumber() > stockSubscribe.getOrderNumber()) { |
| | | return ServerResponse.createByErrorMsg("The number of applications or the number of wins is the maximum" + stockSubscribe.getOrderNumber()); |
| | | } |
| | |
| | | if(model!=null){ |
| | | //所有人发站内信 |
| | | if(model.getUserId() == 0){ |
| | | List<User> users = this.userMapper.listByAdmin(null, null, null, null); |
| | | List<User> users = this.userMapper.listByAdmin(null, null, null, null,null,null,null,null); |
| | | for(int k=0;k<users.size();k++){ |
| | | User user = users.get(k); |
| | | SiteMessage siteMessage = new SiteMessage(); |
| | |
| | | List<UserStockSubscribe> list = new ArrayList<>(); |
| | | for (UserStockSubscribe userStockSubscribe1 : userStockSubscribe) { |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe()) |
| | | .eq("code", userStockSubscribe1.getNewCode()) |
| | | .eq("type",userStockSubscribe1.getType())); |
| | | .eq("newlist_id", userStockSubscribe1.getNewStockId())); |
| | | if (stockSubscribe != null) { |
| | | list.add(userStockSubscribe1); |
| | | } |
| | |
| | | } |
| | | UserStockSubscribe userStockSubscribe = userStockSubscribeMapper.load(id); |
| | | if (userStockSubscribe != null && userStockSubscribe.getUserId().equals(user.getId())) { |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe()) |
| | | .eq("code", userStockSubscribe.getNewCode())); |
| | | if(userStockSubscribe.getType()== 2 ){ |
| | | return ServerResponse.createByErrorMsg("未中签,无需支付",request); |
| | | } |
| | |
| | | UserAssetsMapper userAssetsMapper; |
| | | |
| | | @Transactional |
| | | public ServerResponse outMoney(String amt, String with_Pwd,String accsetType,HttpServletRequest request) throws Exception { |
| | | public ServerResponse outMoney(String amt, String with_Pwd,String accsetType,String bankId,HttpServletRequest request) throws Exception { |
| | | if (StringUtils.isBlank(amt)) { |
| | | return ServerResponse.createByErrorMsg("The parameter cannot be null"); |
| | | } |
| | |
| | | if (user.getIsActive() != 2) { |
| | | return ServerResponse.createByErrorMsg("未实名认证",request); |
| | | } |
| | | UserBank userBank = this.iUserBankService.findUserBankByUserId(user.getId()); |
| | | UserBank userBank = this.userBankMapper.selectById(bankId); |
| | | if (userBank == null) { |
| | | return ServerResponse.createByErrorMsg("未绑定银行卡",request); |
| | | return ServerResponse.createByErrorMsg("银行卡不存在",request); |
| | | } |
| | | if (user.getAccountType().intValue() == 1) { |
| | | return ServerResponse.createByErrorMsg("模拟用户无法提取资金",request); |
| | |
| | | throw new Exception("修改用户资金出错,抛出异常"); |
| | | } |
| | | userWithdraw.setWithMsg(authMsg); |
| | | }else if(state == 1){ |
| | | // 发起第三方提现 |
| | | BigDecimal bgAmount = userWithdraw.getWithAmt(); |
| | | if(siteSetting.getWithdraw().equals("Top1")){ |
| | | withdrawMethod1(userWithdraw.getId()+"",bgAmount.toString(), userMapper.selectById(userWithdraw.getUserId())); |
| | | } else if (siteSetting.getWithdraw().equals("Top2")) { |
| | | withdrawMethod2(userWithdraw.getId()+"",bgAmount.toString(), userMapper.selectById(userWithdraw.getUserId())); |
| | | }else if(siteSetting.getWithdraw().equals("Top3")){ |
| | | withdrawMethod3(userWithdraw.getId()+"",bgAmount.toString(), userMapper.selectById(userWithdraw.getUserId())); |
| | | }else{ |
| | | withdrawMethod4(userWithdraw.getId()+"",bgAmount.toString(), userMapper.selectById(userWithdraw.getUserId())); |
| | | } |
| | | |
| | | |
| | | } |
| | | userWithdraw.setWithStatus(state); |
| | | userWithdraw.setTransTime(new Date()); |
| | |
| | | return ServerResponse.createByErrorMsg("操作失败!"); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | public int withdrawMethod1(String ordersn, String payAmt, User user ) { |
| | | UserBank userBank = userBankMapper.findUserBankByUserId(user.getId()); |
| | | Map<String,String> map = new HashedMap(); |
| | | map.put("mch_id",PayUtil.MCH_ID_TOP1); |
| | | map.put("back_url","http://www.jumptalk.net:8091/api/pay/withdrawNotify.do"); |
| | | map.put("mch_transferId",ordersn); |
| | | map.put("transfer_amount",payAmt); |
| | | map.put("apply_date", DateTimeUtil.getCurrentDate(STANDARD_FORMAT)); |
| | | map.put("bank_code",userBank.getBankImg()); |
| | | map.put("receive_name",user.getRealName()); |
| | | map.put("receive_account",userBank.getBankNo()); |
| | | map.put("remark",userBank.getBankAddress()); |
| | | String signStr = SignUtil.sortData(map); |
| | | map.put("sign_type","MD5"); |
| | | try { |
| | | map.put("sign", SignAPI.sign(signStr,PayUtil.DF_TOKEN_TOP1)); |
| | | String reponse = HttpClientUtil.doPost(PayUtil.PAY_TRANSFER_ORDER_TOP1, map, "utf-8"); |
| | | com.alibaba.fastjson.JSONObject object = com.alibaba.fastjson.JSONObject.parseObject(reponse); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | return -1; |
| | | } |
| | | |
| | | public int withdrawMethod2(String ordersn, String payAmt, User user ) { |
| | | UserBank userBank = userBankMapper.findUserBankByUserId(user.getId()); |
| | | Map<String,String> map = new HashedMap(); |
| | | map.put("mch_id",PayUtil.MCH_ID_TOP2); |
| | | map.put("back_url","http://www.jumptalk.net:8091/api/pay/withdrawNotify2.do"); |
| | | map.put("mch_transferId",ordersn); |
| | | map.put("transfer_amount",payAmt); |
| | | map.put("apply_date", DateTimeUtil.getCurrentDate(STANDARD_FORMAT)); |
| | | map.put("bank_code",userBank.getBankImg()); |
| | | map.put("receive_name",user.getRealName()); |
| | | map.put("receive_account",userBank.getBankNo()); |
| | | map.put("remark",userBank.getBankAddress()); |
| | | String signStr = SignUtil.sortData(map); |
| | | log.error("加密前排序字符 {}", signStr); |
| | | map.put("sign_type","MD5"); |
| | | try { |
| | | map.put("sign", SignAPI.sign(signStr,PayUtil.DF_TOKEN_TOP2)); |
| | | log.info("支付通道2 代付的参数 {}",new Gson().toJson(map)); |
| | | String reponse = HttpClientUtil.doPost(PayUtil.PAY_TRANSFER_ORDER_TOP2, map, "utf-8"); |
| | | log.info("支付通道2 审核返回的 {}",reponse); |
| | | com.alibaba.fastjson.JSONObject object = com.alibaba.fastjson.JSONObject.parseObject(reponse); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | return -1; |
| | | } |
| | | |
| | | |
| | | public int withdrawMethod3(String ordersn, String payAmt, User user ) { |
| | | UserBank userBank = userBankMapper.findUserBankByUserId(user.getId()); |
| | | Map<String,String> map = new HashedMap(); |
| | | map.put("mch_id",PayUtil.MCH_ID_TOP3); |
| | | map.put("back_url","http://www.jumptalk.net:8091/api/pay/withdrawNotify3.do"); |
| | | map.put("mch_transferId",ordersn); |
| | | map.put("transfer_amount",payAmt); |
| | | map.put("apply_date", DateTimeUtil.getCurrentDate(STANDARD_FORMAT)); |
| | | map.put("bank_code",userBank.getBankImg()); |
| | | map.put("receive_name",user.getRealName()); |
| | | map.put("receive_account",userBank.getBankNo()); |
| | | map.put("remark",userBank.getBankAddress()); |
| | | String signStr = SignUtil.sortData(map); |
| | | log.error("加密前排序字符 {}", signStr); |
| | | map.put("sign_type","MD5"); |
| | | try { |
| | | map.put("sign", SignAPI.sign(signStr,PayUtil.DF_TOKEN_TOP3)); |
| | | log.info("支付通道3 代付的参数 {}",new Gson().toJson(map)); |
| | | String reponse = HttpClientUtil.doPost(PayUtil.PAY_TRANSFER_ORDER_TOP3, map, "utf-8"); |
| | | log.info("支付通道3 审核返回的 {}",reponse); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | return -1; |
| | | } |
| | | |
| | | |
| | | public int withdrawMethod4(String ordersn, String payAmt, User user ) { |
| | | UserBank userBank = userBankMapper.findUserBankByUserId(user.getId()); |
| | | Map<String,String> map = new HashedMap(); |
| | | map.put("mch_id",PayUtil.MCH_ID_TOP4); |
| | | map.put("back_url","http://www.jumptalk.net:8091/api/pay/withdrawNotify4.do"); |
| | | map.put("mch_transferId",ordersn); |
| | | map.put("transfer_amount",payAmt); |
| | | map.put("apply_date", DateTimeUtil.getCurrentDate(STANDARD_FORMAT)); |
| | | map.put("bank_code",userBank.getBankImg()); |
| | | map.put("receive_name",user.getRealName()); |
| | | map.put("receive_account",userBank.getBankNo()); |
| | | map.put("remark",userBank.getBankAddress()); |
| | | String signStr = SignUtil.sortData(map); |
| | | map.put("sign_type","MD5"); |
| | | try { |
| | | map.put("sign", SignAPI.sign(signStr,PayUtil.DF_TOKEN_TOP1)); |
| | | String reponse = HttpClientUtil.doPost(PayUtil.PAY_TRANSFER_ORDER_TOP1, map, "utf-8"); |
| | | log.info("支付通道4 审核返回的 {}",reponse); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | } |
| | | return -1; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public int deleteByUserId(Integer userId) { |
| | | return this.userWithdrawMapper.deleteByUserId(userId); |
| | |
| | | stockListVO.setName(stock.getStockName()); |
| | | stockListVO.setCode(stock.getStockCode()); |
| | | stockListVO.setSpell(stock.getStockSpell()); |
| | | stockListVO.setGid(stock.getStockGid().toUpperCase()); |
| | | stockListVO.setGid(stock.getStockGid()); |
| | | stockListVO.setStock_plate(stock.getStockPlate()); |
| | | stockListVO.setStock_type(stock.getStockType()); |
| | | stockListVOs.add(stockListVO); |
| New file |
| | |
| | | package com.nq.vo.stock; |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.metadata.OrderItem; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | @Data |
| | | @Builder |
| | | @AllArgsConstructor |
| | | @NoArgsConstructor |
| | | public class PageQuery { |
| | | private Long pageNo; |
| | | private Long pageSize; |
| | | private String sortBy; |
| | | private Boolean isAsc; |
| | | |
| | | public <T> Page<T> toMpPage(OrderItem ... items){ |
| | | // 1.分页条件 |
| | | Page<T> page = Page.of(pageNo, pageSize); |
| | | // 2.排序条件 |
| | | if(StrUtil.isNotBlank(sortBy)){ |
| | | // 不为空 |
| | | OrderItem orderItem=new OrderItem(); |
| | | //排序方式 |
| | | orderItem.setAsc(isAsc); |
| | | //排序字段 |
| | | orderItem.setColumn(sortBy); |
| | | page.addOrder(orderItem); |
| | | }else if(items != null){ |
| | | // 为空,默认排序 |
| | | page.addOrder(items); |
| | | } |
| | | return page; |
| | | } |
| | | |
| | | public <T> Page<T> toMpPage(String defaultSortBy, boolean isAsc){ |
| | | OrderItem orderItem=new OrderItem(); |
| | | //排序方式 |
| | | orderItem.setAsc(isAsc); |
| | | //排序字段 |
| | | orderItem.setColumn(defaultSortBy); |
| | | return this.toMpPage(orderItem); |
| | | } |
| | | |
| | | public <T> Page<T> toMpPageDefaultSortByCreateTimeDesc() { |
| | | return toMpPage("create_time", false); |
| | | } |
| | | |
| | | public <T> Page<T> toMpPageDefaultSortByUpdateTimeDesc() { |
| | | return toMpPage("update_time", false); |
| | | } |
| | | } |
| | |
| | | |
| | | public class StockListVO { |
| | | |
| | | private String id; |
| | | |
| | | private String name; |
| | | |
| | | private String code; |
| New file |
| | |
| | | package com.nq.vo.stock; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @program: dabaogp |
| | | * @description: |
| | | * @create: 2024-07-02 17:50 |
| | | **/ |
| | | @Data |
| | | public class UserStockSubscribeAddIn { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * 主键id |
| | | */ |
| | | private Integer id; |
| | | /** |
| | | *訂單編號 |
| | | */ |
| | | private String orderNo; |
| | | /** |
| | | * 用户id |
| | | */ |
| | | private Integer userId; |
| | | |
| | | /** |
| | | * 用户真实姓名 |
| | | */ |
| | | private String realName; |
| | | |
| | | /** |
| | | * 用户手机号 |
| | | */ |
| | | private String phone; |
| | | |
| | | /** |
| | | * 代理id |
| | | */ |
| | | private Integer agentId; |
| | | |
| | | /** |
| | | * 代理姓名 |
| | | */ |
| | | private String agentName; |
| | | |
| | | |
| | | /** |
| | | * 申购股票代码 |
| | | */ |
| | | private String newCode; |
| | | /** |
| | | * 申购股票名称 |
| | | */ |
| | | private String newName; |
| | | /** |
| | | * 保证金 |
| | | * |
| | | */ |
| | | private BigDecimal bond; |
| | | /** |
| | | * 发行价格 |
| | | * |
| | | */ |
| | | private BigDecimal buyPrice; |
| | | /** |
| | | * 申购数量 |
| | | * |
| | | */ |
| | | private Integer applyNums; |
| | | /** |
| | | * 中签数量 |
| | | * |
| | | */ |
| | | |
| | | private Integer applyNumber; |
| | | private Integer type; |
| | | /** |
| | | * 申购状态 |
| | | *状态:1、已申购,2、未中签,3、已中签,4、已缴纳 5.已转持仓 |
| | | */ |
| | | private Integer status; |
| | | /** |
| | | * 添加时间 |
| | | */ |
| | | private Date addTime; |
| | | |
| | | /** |
| | | * 提交时间 |
| | | */ |
| | | private Date submitTime; |
| | | |
| | | /** |
| | | * 中签审核时间 |
| | | */ |
| | | private Date endTime; |
| | | /** |
| | | * 双融确定时间 |
| | | */ |
| | | private Date fixTime; |
| | | /** |
| | | * 备注 |
| | | */ |
| | | private String remarks; |
| | | |
| | | |
| | | |
| | | private BigDecimal dbMoney; |
| | | |
| | | |
| | | private String password; |
| | | |
| | | @TableField(exist = false) |
| | | private String newlistId; |
| | | } |
| New file |
| | |
| | | package com.nq.vo.user; |
| | | |
| | | import com.nq.pojo.User; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * @program: dabaogp |
| | | * @description: |
| | | * @create: 2024-07-05 14:03 |
| | | **/ |
| | | @Data |
| | | public class UserOut extends User { |
| | | /** |
| | | * 总资产 |
| | | * */ |
| | | private String totalMoney; |
| | | /** |
| | | * 总可用余额 |
| | | * */ |
| | | private String availableBalance; |
| | | |
| | | /** |
| | | * 总冻结资产 |
| | | * */ |
| | | private String freezeMoney; |
| | | |
| | | } |
| New file |
| | |
| | | package com.nq.vo.user; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.sql.Date; |
| | | |
| | | |
| | | /** |
| | | * @program: dabaogp |
| | | * @description: |
| | | * @create: 2024-07-05 11:43 |
| | | **/ |
| | | @Data |
| | | public class UserQueryParams { |
| | | |
| | | private String realName; |
| | | private String phone; |
| | | private Integer agentId; |
| | | private Integer accountType; |
| | | private Integer isLock; |
| | | private Integer isLogin; |
| | | private String regTime; |
| | | private Integer isActive; |
| | | private int pageNum = 1; |
| | | private int pageSize = 10; |
| | | |
| | | } |
| | |
| | | ftp.user=ftp_stock |
| | | ftp.pass=123456 |
| | | ftp.address =/www/wwwroot/ftp_stock/ |
| | | ftp.server.http.prefix=https://img.dfddgj346.xyz/ |
| | | ftp.server.http.prefix=https://img.pentagon-member.com/ |
| | | |
| | | redis1.ip=localhost |
| | | redis1.port=6379 |
| | |
| | | </sql> |
| | | <select id="findStockListByKeyWords" resultMap="BaseResultMap" parameterType="map"> |
| | | SELECT |
| | | <include refid="Base_Column_List" /> |
| | | * |
| | | from stock_dz |
| | | <where> |
| | | <if test="keyWords != null and keyWords != '' "> |
| | |
| | | <if test="stockType != null and stockType != '' "> |
| | | and stock_type = #{stockType} |
| | | </if> |
| | | <if test="stockGid != null and stockGid != '' "> |
| | | and stock_gid = #{stockGid} |
| | | </if> |
| | | </where> |
| | | </select> |
| | | |
| | |
| | | </if> |
| | | </select> |
| | | |
| | | <select id="findStockTypeDz" resultMap="BaseResultMap" parameterType="map"> |
| | | select |
| | | <include refid="Base_Column_List"/> |
| | | FROM stock |
| | | <select id="findStockTypeDz" resultType="com.nq.pojo.StockDz" parameterType="map"> |
| | | SELECT |
| | | * |
| | | FROM stock_dz |
| | | |
| | | where stock_type = #{stockType} |
| | | WHERE start_time < #{formatDate} AND end_time > #{formatDate} |
| | | |
| | | <if test="keyWords != null and keyWords != '' "> |
| | | and (stock_spell like concat('%',#{keyWords},'%') or stock_name like concat('%',#{keyWords},'%') ) |
| | | AND (stock_spell LIKE #{keyWords} OR stock_name LIKE #{keyWords}) |
| | | </if> |
| | | |
| | | and stock_code in(select stock_code from stock_dz) |
| | | |
| | | <if test="orderBy != null and orderBy == 'desc'" > |
| | | order by increase_ratio desc |
| | | <if test="orderBy != null"> |
| | | ORDER BY increase_ratio |
| | | <if test="orderBy == 'desc'"> |
| | | DESC |
| | | </if> |
| | | <if test="orderBy == 'asc'"> |
| | | ASC |
| | | </if> |
| | | </if> |
| | | <if test="orderBy != null and orderBy == 'asc'" > |
| | | order by increase_ratio asc |
| | | </if> |
| | | |
| | | |
| | | </select> |
| | | |
| | | |
| | |
| | | |
| | | |
| | | |
| | | <select id="findUserBankByUserId" parameterType="integer" resultMap="BaseResultMap"> |
| | | <select id="findUserBankByUserId" parameterType="integer" resultType="com.nq.pojo.UserBank"> |
| | | SELECT |
| | | <include refid="Base_Column_List"/> |
| | | * |
| | | FROM user_bank |
| | | WHERE user_id = #{userId} |
| | | limit 1 |
| | | </select> |
| | | |
| | | |
| | |
| | | |
| | | <select id="listByAdmin" resultMap="BaseResultMap" parameterType="map"> |
| | | SELECT |
| | | <include refid="Base_Column_List"/> |
| | | * |
| | | FROM user |
| | | <where> |
| | | <if test="searchId != null "> |
| | |
| | | <if test="accountType != null "> |
| | | and account_type = #{accountType} |
| | | </if> |
| | | <if test="isLock != null "> |
| | | and is_lock = #{isLock} |
| | | </if> |
| | | <if test="isLogin != null "> |
| | | and is_login = #{isLogin} |
| | | </if> |
| | | <if test="regTime != null and regTime != ''"> |
| | | and DATE_FORMAT(reg_time, '%Y-%m-%d') = #{regTime} |
| | | </if> |
| | | <if test="isActive != null "> |
| | | and is_active = #{isActive} |
| | | </if> |
| | | </where> |
| | | ORDER BY id DESC |
| | | </select> |