30 files modified
1 files added
| | |
| | | // * @author leon |
| | | // * @createDate 2018年10月15日 下午4:02:38 |
| | | // * @version v1.0 |
| | | // * @classRemarks TODO |
| | | // */ |
| | | //@Configuration |
| | | //public class ScheduleConfig implements SchedulingConfigurer { |
| | |
| | | |
| | | if ("1".equals((String) request.getParameter("status"))) { |
| | | // 这里编写用户业务逻辑代码,如存储订单状态,自动发货等 |
| | | //TODO |
| | | if (amount != null & !StringUtils.isEmpty(amount)) { |
| | | System.out.println("============更新用户金额==============="); |
| | | Double aDouble = Double.valueOf(amount); |
| | |
| | | UserRecharge userRecharge = this.userRechargeMapper.findUserRechargeByOrderSn(orderno); |
| | | if(userRecharge == null){ |
| | | System.out.println("============充值完成==============="); |
| | | iUserRechargeService.createOrder(Integer.valueOf(arr[0]), 1, aDouble.intValue(), orderno); |
| | | // iUserRechargeService.createOrder(Integer.valueOf(arr[0]), 1, aDouble.intValue(), orderno); |
| | | jsonObj.put("reason", "success"); |
| | | } else { |
| | | System.out.println("============充值失败,已回调成功无需重复回调==============="); |
| | |
| | | |
| | | //if ("200".equals((String) request.getParameter("status"))) { |
| | | // 这里编写用户业务逻辑代码,如存储订单状态,自动发货等 |
| | | //TODO |
| | | if (amount != null & !StringUtils.isEmpty(amount)) { |
| | | System.out.println("============更新用户金额==============="); |
| | | Double aDouble = Double.valueOf(amount); |
| | |
| | | UserRecharge userRecharge = this.userRechargeMapper.findUserRechargeByOrderSn(orderno); |
| | | if(userRecharge == null){ |
| | | System.out.println("============充值完成==============="); |
| | | iUserRechargeService.createOrder(Integer.valueOf(arr[0]), 1, aDouble.intValue(), orderno); |
| | | // iUserRechargeService.createOrder(Integer.valueOf(arr[0]), 1, aDouble.intValue(), orderno); |
| | | } else { |
| | | System.out.println("============充值失败,已回调成功无需重复回调==============="); |
| | | } |
| | |
| | | public ServerResponse createUSDTOrder(@RequestParam("userId") Integer userId, |
| | | @RequestParam("amt") Integer amt, |
| | | @RequestParam("img") String img, |
| | | @RequestParam("accectType") String accectType, |
| | | HttpServletRequest request) { |
| | | return ServerResponse.createBySuccess(iUserRechargeService.createUSDTOrder(userId,amt,img,request)); |
| | | return ServerResponse.createBySuccess(iUserRechargeService.createUSDTOrder(userId,amt,img,accectType,request)); |
| | | } |
| | | } |
| | |
| | | public ServerResponse updateayChnnel( |
| | | @RequestParam("id") Integer id, |
| | | @RequestParam("amt") String amt, |
| | | @RequestParam("type") String type |
| | | @RequestParam("type") String type, |
| | | @RequestParam("accectType") String accectType |
| | | |
| | | ){ |
| | | return iUserAssetsServices.updateUserAssets(id,amt,type); |
| | | return iUserAssetsServices.updateUserAssets(id,amt,type,accectType); |
| | | } |
| | | |
| | | //查询首页充值,提现,注册统计 |
| | |
| | | return serverResponse; |
| | | } |
| | | |
| | | //创建资金管理 充值订单 |
| | | @RequestMapping({"createOrder.do"}) |
| | | @ResponseBody |
| | | public ServerResponse createOrder(@RequestParam(value = "userId", required = false) Integer userId, @RequestParam(value = "state", required = false) Integer state, @RequestParam(value = "amt", required = false) Integer amt, @RequestParam(value = "payChannel", required = false) String payChannel) { |
| | | return this.iUserRechargeService.createOrder(userId, state, amt, payChannel); |
| | | } |
| | | // //创建资金管理 充值订单 |
| | | // @RequestMapping({"createOrder.do"}) |
| | | // @ResponseBody |
| | | // public ServerResponse createOrder(@RequestParam(value = "userId", required = false) Integer userId, |
| | | // @RequestParam(value = "state", required = false) Integer state, |
| | | // @RequestParam(value = "amt", required = false) Integer amt, |
| | | // @RequestParam(value = "payChannel", required = false) String payChannel) { |
| | | // return this.iUserRechargeService.createOrder(userId, state, amt, payChannel); |
| | | // } |
| | | |
| | | //删除资金管理 充值列表订单信息 |
| | | @RequestMapping({"del.do"}) |
| | |
| | | //挂单操作-列表 |
| | | @RequestMapping({"orderList.do"}) |
| | | @ResponseBody |
| | | public ServerResponse orderList(HttpServletRequest request) { |
| | | public ServerResponse orderList(@RequestParam("stockType") String stockType,HttpServletRequest request) { |
| | | ServerResponse serverResponse = null; |
| | | try { |
| | | |
| | | serverResponse = this.userPendingorderService.orderList(request); |
| | | serverResponse = this.userPendingorderService.orderList(stockType,request); |
| | | } catch (Exception e) { |
| | | log.error("挂单操作-列表 = {}", e); |
| | | } |
| | |
| | | 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 findStockTypeDz(@Param("orderBy") String orderBy, @Param("keyWords") String keyWords); |
| | | } |
| | |
| | | |
| | | public interface UserRechargeMapper extends BaseMapper<UserRecharge> { |
| | | |
| | | int insert(UserRecharge paramUserRecharge); |
| | | // int insert(UserRecharge paramUserRecharge); |
| | | |
| | | int insertSelective(UserRecharge paramUserRecharge); |
| | | |
| | |
| | | |
| | | private Date addTime; |
| | | |
| | | |
| | | private String assetsType; |
| | | private Integer status; |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | |
| | | |
| | | |
| | | |
| | | ServerResponse updateUserAssets(Integer id, String amt,String type); |
| | | ServerResponse updateUserAssets(Integer id, String amt,String type,String accectType); |
| | | |
| | | |
| | | List<UserAssets> assetsByUserId(Integer userId); |
| | |
| | | |
| | | ServerResponse updateState(Integer paramInteger1, Integer paramInteger2) throws Exception; |
| | | |
| | | ServerResponse createOrder(Integer paramInteger1, Integer paramInteger2, Integer paramInteger3, String paramString); |
| | | ServerResponse createOrder(Integer paramInteger1, Integer paramInteger2, Integer paramInteger3, String paramString,String accectType); |
| | | |
| | | ServerResponse del(Integer paramInteger); |
| | | |
| | |
| | | |
| | | List<UserRecharge> exportByAdmin( Integer agentId, Integer userId, String realName, Integer state, String beginTime, String endTime, HttpServletRequest request); |
| | | |
| | | public ServerResponse createUSDTOrder(Integer userId,Integer amt,String currency,HttpServletRequest request); |
| | | public ServerResponse createUSDTOrder(Integer userId,Integer amt,String currency,String accectType,HttpServletRequest request); |
| | | } |
| | |
| | | |
| | | ServerResponse addOrder(String stockId, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, BigDecimal targetPrice, HttpServletRequest request); |
| | | |
| | | ServerResponse orderList( HttpServletRequest request); |
| | | ServerResponse orderList(String stockType, HttpServletRequest request); |
| | | |
| | | void orderTask(); |
| | | |
| | |
| | | if (stockSetting.getType().equals("0")) { |
| | | return new BigDecimal(stockSetting.getPrice()); |
| | | } else { |
| | | String s = doPost(stock.getStockCode()); |
| | | String s = doPost(stock.getStockCode(),stock.getStockType()); |
| | | if (null != s) { |
| | | Map<String, Object> stringObjectMap = jsonToMap(s); |
| | | return new BigDecimal(stringObjectMap.get("last").toString()).multiply(new BigDecimal(stockSetting.getPrice())); |
| | | if(stock.getStockType().equals("US")){ |
| | | return new BigDecimal(stringObjectMap.get("Last").toString()).multiply(new BigDecimal(stockSetting.getPrice())); |
| | | }else{ |
| | | return new BigDecimal(stringObjectMap.get("last").toString()).multiply(new BigDecimal(stockSetting.getPrice())); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | String s = doPost(stock.getStockCode()); |
| | | String s = doPost(stock.getStockCode(),stock.getStockType()); |
| | | if (null != s) { |
| | | Map<String, Object> stringObjectMap = jsonToMap(s); |
| | | return new BigDecimal(stringObjectMap.get("last").toString()); |
| | | if(stock.getStockType().equals("US")){ |
| | | return new BigDecimal(stringObjectMap.get("Last").toString()); |
| | | }else{ |
| | | return new BigDecimal(stringObjectMap.get("last").toString()); |
| | | } |
| | | } |
| | | return BigDecimal.ZERO; |
| | | } |
| | |
| | | @Override |
| | | public Map<String, Object> getNewStock(String stockCode) { |
| | | Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code", stockCode)); |
| | | String s = doPost(stock.getStockCode()); |
| | | String s = doPost(stock.getStockCode(),stock.getStockType()); |
| | | if (null != s) { |
| | | Map<String, Object> stringObjectMap = jsonToMap(s); |
| | | return stringObjectMap; |
| | |
| | | } |
| | | } |
| | | |
| | | public String doPost(String pid) { |
| | | |
| | | public String doPost(String pid,String stockType) { |
| | | String url; |
| | | if(stockType.equals("JP")){ |
| | | url = PropertiesUtil.getProperty("JP_HTTP_API") + "stock?version=v1&key=" + PropertiesUtil.getProperty("JP_KEY"); |
| | | }else{ |
| | | url = PropertiesUtil.getProperty("US_HTTP_API") + "stock?version=v1&key=" + PropertiesUtil.getProperty("US_KEY"); |
| | | } |
| | | try { |
| | | String url = PropertiesUtil.getProperty("JP_HTTP_API") + "stock?version=v1&key=" + PropertiesUtil.getProperty("JP_KEY"); |
| | | URL obj = new URL(url); |
| | | HttpURLConnection con = (HttpURLConnection) obj.openConnection(); |
| | | |
| | |
| | | @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.JP.getCode())){ |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | if(!stockType.equals("DZ")){ |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | stockList.addAll(stockMapper.findStockByType(orderBy,stockType,keyWords)); |
| | | }else{ |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | stockList.addAll(stockMapper.findStockTypeDz(orderBy,EStockType.JP.getCode(), keyWords)); |
| | | stockList.addAll(stockMapper.findStockTypeDz(orderBy, keyWords)); |
| | | } |
| | | |
| | | List<StockListVO> stockListVOS = Lists.newArrayList(); |
| | |
| | | stockVO.setName(stock.getStockName()); |
| | | stockVO.setSpell(stock.getStockSpell()); |
| | | stockVO.setGid(stock.getStockGid().toUpperCase()); |
| | | |
| | | Map<String, Object> newStock = iPriceServices.getNewStock(stock.getStockCode()); |
| | | stockVO.setHcrate(newStock.get("pcp").toString().replaceAll("%", "")); |
| | | stockVO.setToday_max(newStock.get("high").toString()); |
| | | stockVO.setToday_min(newStock.get("low").toString()); |
| | | if(stock.getStockType().equals("US")){ |
| | | stockVO.setHcrate(newStock.get("ChgPct").toString().replaceAll("%", "")); |
| | | stockVO.setToday_max(newStock.get("High").toString()); |
| | | stockVO.setToday_min(newStock.get("Low").toString()); |
| | | }else{ |
| | | stockVO.setHcrate(newStock.get("pcp").toString().replaceAll("%", "")); |
| | | stockVO.setToday_max(newStock.get("high").toString()); |
| | | stockVO.setToday_min(newStock.get("low").toString()); |
| | | } |
| | | if(null != cacheBaseStock){ |
| | | stockVO.setOpen_px(cacheBaseStock.getOpen()); |
| | | stockVO.setPreclose_px(cacheBaseStock.getPrevClose()); |
| | |
| | | lastData.setL(stockVO.getToday_min()); |
| | | return gson.toJson(dataList); |
| | | |
| | | }else{ |
| | | Object object = HttpUtil.get(eStockType.stockUrl + "kline?pid=" + pid + "&interval=" + interval + "&key=" + eStockType.stockKey); |
| | | Gson gson = new Gson(); |
| | | List<kData> dataList = gson.fromJson(object.toString(), new TypeToken<List<kData>>(){}.getType()); |
| | | |
| | | Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<Stock>().eq(Stock::getStockCode, pid)); |
| | | BigDecimal nowPrice = iPriceServices.getNowPrice(stock.getStockCode()); |
| | | Map singleStock = getSingleStock(stock.getStockCode()); |
| | | StockVO stockVO = (StockVO)singleStock.get("stock"); |
| | | // 修改 List 中的最后一条数据 |
| | | kData lastData = dataList.get(dataList.size() - 1); |
| | | lastData.setC(nowPrice.toString()); |
| | | lastData.setO(stockVO.getOpen_px()); |
| | | lastData.setH(stockVO.getToday_max()); |
| | | lastData.setL(stockVO.getToday_min()); |
| | | return gson.toJson(dataList); |
| | | } |
| | | return HttpUtil.get(eStockType.stockUrl + "kline?pid=" + pid + "&interval=" + interval + "&key=" + eStockType.stockKey); |
| | | // return HttpUtil.get(eStockType.stockUrl + "kline?pid=" + pid + "&interval=" + interval + "&key=" + eStockType.stockKey); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public ServerResponse updateUserAssets(Integer id, String amt,String type) { |
| | | UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<>(UserAssets.class).eq(UserAssets::getUserId,id)); |
| | | public ServerResponse updateUserAssets(Integer id, String amt,String type,String accectType) { |
| | | UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<>(UserAssets.class).eq(UserAssets::getUserId,id).eq(UserAssets::getAccectType,accectType)); |
| | | // 0 入款 1是扣钱 2 是充值 3 是提币 |
| | | BigDecimal bigAmt = new BigDecimal(amt); |
| | | if(type.equals("0") || type.equals("1")){ |
| | |
| | | } |
| | | }else{ |
| | | if(type.equals("2")){ |
| | | return userRechargeService.createOrder(id,1,bigAmt.intValue(),"1"); |
| | | return userRechargeService.createOrder(id,1,bigAmt.intValue(),"1",accectType); |
| | | }else{ |
| | | |
| | | |
| | |
| | | UserAssetsMapper userAssetsMapper; |
| | | |
| | | @Override |
| | | public ServerResponse addOrder(String stockId, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, BigDecimal targetPrice, HttpServletRequest request) { |
| | | public ServerResponse addOrder(String stockId, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, BigDecimal targetPrice,HttpServletRequest request) { |
| | | User user = this.iUserService.getCurrentRefreshUser(request); |
| | | |
| | | if (user == null) { |
| | |
| | | return ServerResponse.createByErrorMsg("The pending order failed because the purchased quantity was greater than" + siteSetting |
| | | .getBuyMaxNum() + "stocks",request); |
| | | } |
| | | |
| | | Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<>(Stock.class).eq(Stock::getStockCode, stockId)); |
| | | UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>() |
| | | .eq(UserAssets::getUserId, user.getId()) |
| | | .eq(UserAssets::getAccectType, "JP") |
| | | .eq(UserAssets::getAccectType, stock.getStockType()) |
| | | ); |
| | | |
| | | BigDecimal amount = new BigDecimal(buyNum).multiply(targetPrice).setScale(5, RoundingMode.DOWN); |
| | | if (userAssets.getAvailableBalance().compareTo(amount) < 0) { |
| | | return ServerResponse.createByErrorMsg("订单失败,余额不足", request); |
| | | } |
| | | if(buyNum<100){ |
| | | if(buyNum<siteSetting.getBuyMinNum()){ |
| | | return ServerResponse.createByErrorMsg("最低购买数量"+siteSetting.getBuyMinNum(), request); |
| | | } |
| | | |
| | |
| | | userPendingorder.setTargetPrice(targetPrice); |
| | | userPendingorder.setAddTime(new Date()); |
| | | userPendingorder.setStatus(0); |
| | | userPendingorder.setAssetsType(stock.getStockType()); |
| | | int ret = userPendingorderMapper.insert(userPendingorder); |
| | | if (ret > 0) { |
| | | String lang = request.getHeader("lang"); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public ServerResponse orderList(HttpServletRequest request) { |
| | | public ServerResponse orderList(String stockType,HttpServletRequest request) { |
| | | |
| | | String property = PropertiesUtil.getProperty("user.cookie.name"); |
| | | String header = request.getHeader(property); |
| | |
| | | User user = (User) JsonUtil.string2Obj(userJson, User.class); |
| | | // log.info("user:{}",user); |
| | | if (user != null) { |
| | | List<UserPendingorder> userPendingorders = userPendingorderMapper.selectList(new QueryWrapper<UserPendingorder>().eq("user_id", user.getId()).ne("status",1)); |
| | | List<UserPendingorder> userPendingorders = userPendingorderMapper.selectList(new QueryWrapper<UserPendingorder>() |
| | | .eq("user_id", user.getId()) |
| | | .eq("assets_type",stockType) |
| | | .ne("status",1)); |
| | | |
| | | List UserPendingorderList = new ArrayList(); |
| | | |
| | |
| | | if (delCount > 0) { |
| | | UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>() |
| | | .eq(UserAssets::getUserId, user.getId()) |
| | | .eq(UserAssets::getAccectType, "JP") |
| | | .eq(UserAssets::getAccectType, userPendingorder.getAssetsType()) |
| | | ); |
| | | BigDecimal amount = new BigDecimal(userPendingorder.getBuyNum()).multiply(userPendingorder.getTargetPrice()).setScale(5, RoundingMode.DOWN); |
| | | userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount)); |
| | |
| | | if (siteProduct.getRealNameDisplay() && user.getIsLock().intValue() == 1) { |
| | | return ServerResponse.createByErrorMsg("Order failed, account has been locked"); |
| | | } |
| | | UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("JP", user.getId()); |
| | | //价格处理 |
| | | StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("stock_code", stockCode)); |
| | | Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code", stockDz.getStockCode())); |
| | | UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId(stock.getStockType(), user.getId()); |
| | | 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)) { |
| | | return ServerResponse.createByErrorMsg("密码错误", request); |
| | | } |
| | | if (stockDz.getIsLock() != 0) { |
| | | return ServerResponse.createByErrorMsg("股票被锁定,不能购买", request); |
| | | } |
| | | //价格处理 |
| | | Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code", stockDz.getStockCode())); |
| | | |
| | | if(stockDz.getStartTime().getTime() > new Date().getTime() || stockDz.getEndTime().getTime() < new Date().getTime()){ |
| | | return ServerResponse.createByErrorMsg("不在内幕交易时间之内", request); |
| | |
| | | |
| | | userPosition.setOrderSpread(BigDecimal.ZERO); |
| | | userPositionMapper.insert(userPosition); |
| | | userAssetsServices.availablebalanceChange(EStockType.JP.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"",""); |
| | | userAssetsServices.availablebalanceChange(userAssets.getAccectType(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"",""); |
| | | return ServerResponse.createBySuccess("购买成功", request); |
| | | } |
| | | |
| | |
| | | |
| | | for (int i = 0; i <userRecharges.size() ; i++) { |
| | | SitePay s = sitePayMapper.selectById(userRecharges.get(i).getPayId()); |
| | | userRecharges.get(i).setAssetsType(EStockType.JP.getSymbol1()); |
| | | userRecharges.get(i).setChannelName(EStockType.JP.getSymbol()); |
| | | userRecharges.get(i).setAssetsType(EStockType.getEStockTypeByCode(userRecharges.get(i).getAssetsType()).getSymbol1()); |
| | | userRecharges.get(i).setChannelName(EStockType.getEStockTypeByCode(userRecharges.get(i).getAssetsType()).getSymbol()); |
| | | } |
| | | |
| | | return ServerResponse.createBySuccess(pageInfo); |
| | |
| | | return ServerResponse.createByErrorMsg("用户不存在"); |
| | | } |
| | | // SitePay payChnnel = sitePayMapper.selectById(userRecharge.getPayId()); |
| | | userAssetsServices.availablebalanceChange(EStockType.JP.getCode(),user.getId(), EUserAssets.TOP_UP,userRecharge.getPayAmt(),"",""); |
| | | userAssetsServices.availablebalanceChange(userRecharge.getAssetsType(),user.getId(), EUserAssets.TOP_UP,userRecharge.getPayAmt(),"",""); |
| | | } |
| | | userRecharge.setOrderStatus(Integer.valueOf((state.intValue() == 1) ? 1 : 2)); |
| | | userRecharge.setPayTime(new Date()); |
| | |
| | | } |
| | | |
| | | |
| | | public ServerResponse createOrder(Integer userId, Integer state, Integer amt, String payChannel) { |
| | | public ServerResponse createOrder(Integer userId, Integer state, Integer amt, String payChannel,String accectType) { |
| | | if (userId == null || state == null || amt == null) { |
| | | return ServerResponse.createByErrorMsg("参数不能为空"); |
| | | } |
| | |
| | | userRecharge.setPayTime(new Date()); |
| | | userRecharge.setOrderStatus(Integer.valueOf(1)); |
| | | userRecharge.setPayId(1); |
| | | userAssetsServices.availablebalanceChange(EStockType.JP.getCode(), |
| | | userRecharge.setAssetsType(accectType); |
| | | userAssetsServices.availablebalanceChange(userRecharge.getAssetsType(), |
| | | userId,EUserAssets.TOP_UP,new BigDecimal(amt),"",""); |
| | | int insertCount = this.userRechargeMapper.insert(userRecharge); |
| | | if (insertCount > 0) { |
| | |
| | | } |
| | | |
| | | @Override |
| | | public ServerResponse createUSDTOrder(Integer userId, Integer amt,String currency, HttpServletRequest request) { |
| | | public ServerResponse createUSDTOrder(Integer userId, Integer amt,String currency,String accectType, HttpServletRequest request) { |
| | | if (userId == null || amt == null) { |
| | | return ServerResponse.createByErrorMsg("参数不能为空"); |
| | | } |
| | |
| | | userRecharge.setPayId(1); |
| | | userRecharge.setRechargeType(1); |
| | | userRecharge.setImg(currency); |
| | | userRecharge.setAssetsType(accectType); |
| | | int insertCount = this.userRechargeMapper.insert(userRecharge); |
| | | if (insertCount > 0) { |
| | | return ServerResponse.createBySuccessMsg("提交成功",request); |
| | |
| | | return ServerResponse.createByErrorMsg("登录失败。账户锁定",request); |
| | | } |
| | | userAssetsServices.assetsByTypeAndUserId(EStockType.JP.getCode(),user.getId()); |
| | | userAssetsServices.assetsByTypeAndUserId(EStockType.US.getCode(),user.getId()); |
| | | this.iSiteLoginLogService.saveLog(user, request); |
| | | return ServerResponse.createBySuccess(user); |
| | | } |
| | |
| | | * 总手续费 |
| | | * */ |
| | | BigDecimal allHMoney = BigDecimal.ZERO; |
| | | |
| | | /** |
| | | * 总手续费 |
| | | * */ |
| | | BigDecimal amountToBeCovered = BigDecimal.ZERO; |
| | | |
| | | |
| | | for (int i = 0; i <userAssetsList.size() ; i++) { |
| | | RUserAssets rUserAssets = new RUserAssets(); |
| | | UserAssets userAssets = userAssetsList.get(i); |
| | |
| | | rUserAssets.setCumulativeProfitAndLossUSD(cumulativeProfitAndLossUSD.setScale(s,BigDecimal.ROUND_UP).toString()); |
| | | rUserAssets.setHandlingChargeUSD(handlingChargeUSD.setScale(s,BigDecimal.ROUND_UP).toString()); |
| | | rUserAssets.setProfitAndLossUSD(profitAndLossUSD.setScale(s,BigDecimal.ROUND_UP).toString()); |
| | | rUserAssets.setProfitAndLoss(getProfitAndLose(userId).toString()); |
| | | rUserAssets.setProfitAndLoss(getProfitAndLose(userId,userAssets.getAccectType()).toString()); |
| | | BigDecimal decimal = new BigDecimal(rUserAssets.getTotalMoney()).add(new BigDecimal(rUserAssets.getProfitAndLoss())); |
| | | rUserAssets.setTotalMoney(decimal.toString()); |
| | | AllProfitAndLose = AllProfitAndLose.add(profitAndLossUSD); |
| | |
| | | AllHProfitAndLose = AllHProfitAndLose.add(handlingChargeUSD); |
| | | allFreeMoney = allFreeMoney.add(freezeMoneyUSD); |
| | | allHMoney = allHMoney.add(handlingChargeUSD); |
| | | |
| | | |
| | | |
| | | |
| | | amountToBeCovered = amountToBeCovered.add(new BigDecimal(rUserAssets.getAmountToBeCovered())); |
| | | |
| | | rUserAssetsList.add(rUserAssets); |
| | | } |
| | |
| | | rUserAssets.setFreezeMoneyUSD(allFreeMoney.setScale(s,BigDecimal.ROUND_DOWN).toString()); |
| | | rUserAssets.setSymbol("$"); |
| | | rUserAssets.setSymbolCode("USD"); |
| | | rUserAssets.setAmountToBeCovered(amountToBeCovered.setScale(s,BigDecimal.ROUND_DOWN).toString()); |
| | | rUserAssetsList.add(rUserAssets); |
| | | |
| | | return ServerResponse.createBySuccess(rUserAssetsList); |
| | | } |
| | | |
| | | public BigDecimal getProfitAndLose(Integer userId){ |
| | | public BigDecimal getProfitAndLose(Integer userId,String accectType){ |
| | | List<UserPosition> userPositions; |
| | | userPositions = userPositionMapper. |
| | | findMyPositionByCodeAndSpell(userId, |
| | | "","", |
| | | 0, "JP"); |
| | | 0, accectType); |
| | | |
| | | |
| | | List<UserPositionVO> userPositionVOS = Lists.newArrayList(); |
| | |
| | | ServerResponse money = iUserService.getMoney(user.getId()); |
| | | List<RUserAssets> rUserAssetsList = (List<RUserAssets>) money.getData(); |
| | | RUserAssets rUserAssets = rUserAssetsList.stream() |
| | | .filter(stock -> "JP".equals(stock.getAccectType())) |
| | | .filter(stock -> "ALL".equals(stock.getAccectType())) |
| | | .findFirst() |
| | | .orElse(null); |
| | | |
| | |
| | | package com.nq.service.impl; |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.github.pagehelper.PageInfo; |
| | | import com.nq.common.ServerResponse; |
| | | import com.nq.dao.StockSubscribeMapper; |
| | | import com.nq.dao.UserAssetsMapper; |
| | | import com.nq.dao.UserMapper; |
| | | import com.nq.dao.UserStockSubscribeMapper; |
| | | import com.nq.dao.*; |
| | | import com.nq.enums.EStockType; |
| | | import com.nq.enums.EUserAssets; |
| | | import com.nq.pojo.*; |
| | |
| | | @Autowired |
| | | UserAssetsMapper userAssetsMapper; |
| | | |
| | | @Autowired |
| | | StockMapper stockMapper; |
| | | |
| | | /** |
| | | * 用户新股申购 |
| | | * @param model |
| | |
| | | if (model == null) { |
| | | return ServerResponse.createByErrorMsg("参数错误",request); |
| | | } |
| | | Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<>(Stock.class).eq(Stock::getStockCode, model.getNewCode())); |
| | | User user = iUserService.getCurrentRefreshUser(request); |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("JP",user.getId()); |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(stock.getStockType(),user.getId()); |
| | | if (model.getNewCode() != null) { |
| | | StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<StockSubscribe>() |
| | | .eq("code", model.getNewCode()).eq("type",model.getType())); |
| | |
| | | model.setType(stockSubscribe.getType()); |
| | | model.setDbMoney(BigDecimal.ZERO); |
| | | ret = userStockSubscribeMapper.insert(model); |
| | | iUserAssetsServices.availablebalanceChange(EStockType.JP.getCode(), user.getId(),EUserAssets.BUY,bound.negate(),"",""); |
| | | iUserAssetsServices.availablebalanceChange(stock.getStockType(), user.getId(),EUserAssets.BUY,bound.negate(),"",""); |
| | | if (ret > 0) { |
| | | return ServerResponse.createBySuccessMsg("配售成功",request); |
| | | } else { |
| | |
| | | if((model.getStatus() == 3 && model.getApplyNumber() == null) || (model.getStatus() == 3 && model.getApplyNumber() == 0) ){ |
| | | return ServerResponse.createByErrorMsg("中签数量不能小于0"); |
| | | } |
| | | Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<>(Stock.class).eq(Stock::getStockCode, stockSubscribe.getCode())); |
| | | if (model.getStatus() == 3 && model.getApplyNumber() != null){ |
| | | if(stockSubscribe.getType() == 1){ |
| | | model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber()))); |
| | | model.setDbMoney(model.getDbMoney()); |
| | | //客户中签直接扣除客户账户可用资金 |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("JP", userStockSubscribe.getUserId()); |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(stock.getStockType(), userStockSubscribe.getUserId()); |
| | | if(null == userAssets){ |
| | | return ServerResponse.createByErrorMsg("客户资金账户不存在"); |
| | | } |
| | |
| | | } |
| | | BigDecimal cCount = new BigDecimal(model.getApplyNums()-model.getApplyNumber()); |
| | | BigDecimal tMoney = stockSubscribe.getPrice().multiply(cCount); |
| | | iUserAssetsServices.availablebalanceChange(EStockType.JP.getCode(),userStockSubscribe.getUserId(), |
| | | iUserAssetsServices.availablebalanceChange(stock.getStockType(),userStockSubscribe.getUserId(), |
| | | EUserAssets.TOP_UP,tMoney,"",""); |
| | | model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber()))); |
| | | model.setDbMoney(BigDecimal.ZERO); |
| | |
| | | User user = this.userMapper.selectById(userWithdraw.getUserId()); |
| | | |
| | | |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("JP", user.getId()); |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(userWithdraw.getAssetsType(), user.getId()); |
| | | if (userAssets == null) { |
| | | return ServerResponse.createByErrorMsg("用户资金账户不存在"); |
| | | } |
| | |
| | | if (user == null) { |
| | | return ServerResponse.createByErrorMsg("用户不存在"); |
| | | } |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("JP", user.getId()); |
| | | UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(userWithdraw.getAssetsType(), user.getId()); |
| | | if (userAssets == null) { |
| | | return ServerResponse.createByErrorMsg("用户资金账户不存在"); |
| | | } |
| | |
| | | |
| | | |
| | | private final Lock NewsInfoTaskLock = new ReentrantLock(); |
| | | |
| | | private final AtomicBoolean USNewsInfoTask = new AtomicBoolean(false); |
| | | |
| | | |
| | | private final Lock USNewsInfoTaskLock = new ReentrantLock(); |
| | | |
| | | |
| | | /* |
| | | * 新聞資訊抓取 |
| | | * */ |
| | |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * 新聞資訊抓取 |
| | | * */ |
| | | @Scheduled(cron = "0 0/10 * * * ?") |
| | | public void USNewsInfoTask() { |
| | | if (USNewsInfoTask.get()) { // 判断任务是否在处理中 |
| | | return; |
| | | } |
| | | if (USNewsInfoTaskLock.tryLock()) { // 加锁 |
| | | try { |
| | | USNewsInfoTask.set(true); // 设置处理中标识为true |
| | | System.out.println("美国新闻定时任务---->开始"); |
| | | iSiteNewsService.grabNews(); |
| | | } catch (Exception e) { |
| | | System.err.println("美国新闻抓取出现异常: " + e.getMessage()); // 打印具体的异常信息 |
| | | } finally { |
| | | USNewsInfoTaskLock.unlock(); // 释放锁 |
| | | USNewsInfoTask.set(false); // 设置处理中标识为false |
| | | System.out.println("美国新闻定时任务---->结束"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /* |
| | |
| | | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
| | | import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; |
| | | import com.nq.common.ServerResponse; |
| | | import com.nq.dao.StockSubscribeMapper; |
| | | import com.nq.dao.UserAssetsMapper; |
| | | import com.nq.dao.UserMapper; |
| | | import com.nq.dao.UserStockSubscribeMapper; |
| | | import com.nq.pojo.StockSubscribe; |
| | | import com.nq.pojo.User; |
| | | import com.nq.pojo.UserAssets; |
| | | import com.nq.pojo.UserStockSubscribe; |
| | | import com.nq.dao.*; |
| | | import com.nq.pojo.*; |
| | | import com.nq.service.IUserAssetsServices; |
| | | import com.nq.service.IUserPositionService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | @Autowired |
| | | IUserAssetsServices userAssetsServices; |
| | | |
| | | @Autowired |
| | | StockMapper stockMapper; |
| | | |
| | | private final Lock ballotLock = new ReentrantLock(); |
| | | |
| | | private final Lock subscriptionLock = new ReentrantLock(); |
| | |
| | | private final AtomicBoolean ballot = new AtomicBoolean(false); |
| | | |
| | | |
| | | @Scheduled(cron = "0 0/10 * * * ?") |
| | | @Scheduled(cron = "0 0/1 * * * ?") |
| | | public void ballot() { |
| | | if (ballot.get()) { // 判断任务是否在处理中 |
| | | return; |
| | |
| | | List<UserStockSubscribe> userStockSubscribes = userStockSubscribeMapper.selectList(new LambdaQueryWrapper<UserStockSubscribe>() |
| | | .eq(UserStockSubscribe::getStatus, 3)); |
| | | userStockSubscribes.forEach(f->{ |
| | | UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("JP",f.getUserId()); |
| | | Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<>(Stock.class).eq(Stock::getStockCode, f.getNewCode())); |
| | | UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId(stock.getStockType(),f.getUserId()); |
| | | if(null != userAssets && userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) == 0){ |
| | | f.setStatus(4); |
| | | userStockSubscribeMapper.updateById(f); |
| | |
| | | |
| | | private final Lock syncINStockDataLock = new ReentrantLock(); |
| | | |
| | | private final AtomicBoolean syncUSStockData = new AtomicBoolean(false); |
| | | |
| | | private final Lock syncUSStockDataLock = new ReentrantLock(); |
| | | |
| | | /** |
| | | * 同步系统所需要的股票 |
| | | */ |
| | | @Scheduled(cron = "0 */1 * * * ?") |
| | | @Scheduled(cron = "0 0/1 * * * ?") |
| | | public void syncINStockData() { |
| | | if (syncINStockData.get()) { // 判断任务是否在处理中 |
| | | return; |
| | |
| | | /** |
| | | * 同步美国股票 |
| | | */ |
| | | // @Scheduled(cron = "0 0/30 * * * ?") |
| | | @Scheduled(cron = "0 0/1 * * * ?") |
| | | public void loadStockCompanies() { |
| | | loadAllCompanies(); |
| | | if (syncUSStockData.get()) { // 判断任务是否在处理中 |
| | | return; |
| | | } |
| | | if (syncUSStockDataLock.tryLock()) { |
| | | try { |
| | | syncUSStockData.set(true); // 设置处理中标识为true |
| | | loadAllStock(EStockType.US); |
| | | } finally { |
| | | syncUSStockDataLock.unlock(); |
| | | syncUSStockData.set(false); // 设置处理中标识为false |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| New file |
| | |
| | | package com.nq.ws; |
| | | |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.reflect.TypeToken; |
| | | import com.nq.enums.EStockType; |
| | | import com.nq.pojo.StockRealTimeBean; |
| | | import com.nq.utils.redis.RedisKeyUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.http.HttpResponse; |
| | | import org.apache.http.client.HttpClient; |
| | | import org.apache.http.client.entity.UrlEncodedFormEntity; |
| | | import org.apache.http.client.methods.HttpPost; |
| | | import org.apache.http.impl.client.HttpClients; |
| | | import org.apache.http.message.BasicNameValuePair; |
| | | import org.java_websocket.client.WebSocketClient; |
| | | import org.java_websocket.handshake.ServerHandshake; |
| | | |
| | | import java.io.IOException; |
| | | import java.lang.reflect.Type; |
| | | import java.net.URI; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @program: dabaogp |
| | | * @description: |
| | | * @create: 2024-10-25 14:44 |
| | | **/ |
| | | @Slf4j |
| | | public class USWebsocketRunClient extends WebSocketClient { |
| | | |
| | | private EStockType eStockType; |
| | | public USWebsocketRunClient(URI serverUri, |
| | | EStockType eStockType |
| | | ) { |
| | | super(serverUri); |
| | | this.eStockType = eStockType; |
| | | } |
| | | |
| | | @Override |
| | | public void onOpen(ServerHandshake serverHandshake) { |
| | | send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()+":v1").getBytes()); |
| | | } |
| | | |
| | | @Override |
| | | public void onMessage(String s) { |
| | | try { |
| | | if(!s.equals("pong") && !s.equals("身份验证成功")){ |
| | | StockRealTimeBean stockDetailBean = new Gson().fromJson(s, StockRealTimeBean.class); |
| | | RedisKeyUtil.setCacheRealTimeStock(eStockType,stockDetailBean); |
| | | send(s); |
| | | } |
| | | }catch (Exception e){ |
| | | log.error("ws 消息接收错误:"+s); |
| | | } |
| | | } |
| | | |
| | | public static Map<String, Object> jsonToMap(String json) { |
| | | Gson gson = new Gson(); |
| | | Type type = new TypeToken<Map<String, Object>>(){}.getType(); |
| | | return gson.fromJson(json, type); |
| | | } |
| | | |
| | | @Override |
| | | public void onClose(int i, String s, boolean b) { |
| | | log.info("websocket 美股 关闭"+1); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(Exception e) { |
| | | log.info("websocket 错误"); |
| | | } |
| | | |
| | | |
| | | private HttpClient httpClient; // 声明一个成员变量 |
| | | |
| | | private HttpPost httpPost = new HttpPost("http://127.0.0.1:8002/api/sendNotification"); // 创建一个HttpPost对象 |
| | | |
| | | @Override |
| | | public void send(String message) { |
| | | |
| | | try { |
| | | |
| | | if (httpClient == null) { |
| | | httpClient = HttpClients.createDefault(); // 使用单例模式创建HttpClient对象 |
| | | } |
| | | |
| | | // 准备 form-data 参数 |
| | | List<BasicNameValuePair> params = new ArrayList<>(); |
| | | params.add(new BasicNameValuePair("message", message)); |
| | | |
| | | // 设置编码格式为 UTF-8 |
| | | UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, StandardCharsets.UTF_8); |
| | | httpPost.setEntity(entity); // 设置HttpPost对象的参数 |
| | | |
| | | // 发送请求 |
| | | HttpResponse response = httpClient.execute(httpPost); |
| | | |
| | | // 处理响应 |
| | | int statusCode = response.getStatusLine().getStatusCode(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | public Map<String, WebSocketClient> websocketRunClientMap() { |
| | | |
| | | Map<String, WebSocketClient> retMap = new HashMap<>(2); |
| | | // try { |
| | | // WebsocketRunClient websocketRunClient = new WebsocketRunClient(new URI(PropertiesUtil.getProperty("JP_WS_URL")),EStockType.JP); |
| | | // websocketRunClient.connect(); |
| | | // websocketRunClient.setConnectionLostTimeout(0); |
| | | // new Thread(() -> { |
| | | // while (true) { |
| | | // try { |
| | | // Thread.sleep(8000); |
| | | // websocketRunClient.send("heartbeat".getBytes()); |
| | | // } catch (Exception e) { |
| | | // websocketRunClient.reconnect(); |
| | | // websocketRunClient.setConnectionLostTimeout(0); |
| | | // } |
| | | // } |
| | | // }).start(); |
| | | // } catch (Exception e) { |
| | | // } |
| | | |
| | | try { |
| | | WebsocketRunClient websocketRunClient = new WebsocketRunClient(new URI(PropertiesUtil.getProperty("JP_WS_URL")),EStockType.JP); |
| | | USWebsocketRunClient websocketRunClient = new USWebsocketRunClient(new URI(PropertiesUtil.getProperty("US_WS_URL")),EStockType.US); |
| | | websocketRunClient.connect(); |
| | | websocketRunClient.setConnectionLostTimeout(0); |
| | | new Thread(() -> { |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | return retMap; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | #JS_IN_WS_URL =ws://api-in-2-ws.js-stock.top |
| | | #JS_IN_KEY = eVKtHt7aG4m6ozwWL9qG |
| | | # |
| | | #US_HTTP_API = http://api-us.js-stock.top/ |
| | | #US_WS_URL = ws://ws-us.js-stock.top |
| | | #US_KEY = jZFrku4RGQjP87Hmq5tm |
| | | US_HTTP_API = http://api-us-v2.js-stock.top/ |
| | | US_WS_URL = ws://api-us-v2-ws.js-stock.top |
| | | US_KEY = bP1PkxkXyzV2mfb3miun |
| | | # |
| | | #HK_HTTP_API = http://test.js-stock.top/ |
| | | #HK_WS_URL = ws://test-ws.js-stock.top |
| | |
| | | <include refid="Base_Column_List" /> |
| | | from stock |
| | | <where> |
| | | stock_gid = 'TSE' |
| | | 1=1 |
| | | <if test="showState != null "> |
| | | and is_show = #{showState} |
| | | </if> |
| | |
| | | <include refid="Base_Column_List"/> |
| | | FROM stock |
| | | |
| | | where stock_type = #{stockType} and stock_gid = 'TSE' |
| | | where stock_type = #{stockType} |
| | | -- and stock_gid = 'TSE' |
| | | |
| | | <if test="keyWords != null and keyWords != '' "> |
| | | and (stock_spell like concat('%',#{keyWords},'%') or stock_name like concat('%',#{keyWords},'%') ) |
| | |
| | | <include refid="Base_Column_List"/> |
| | | FROM stock |
| | | |
| | | where stock_type = #{stockType} |
| | | where 1 = 1 |
| | | |
| | | <if test="keyWords != null and keyWords != '' "> |
| | | and (stock_spell like concat('%',#{keyWords},'%') or stock_name like concat('%',#{keyWords},'%') ) |
| | |
| | | |
| | | <select id="findMyPositionByCodeAndSpell" parameterType="map" resultMap="BaseResultMap"> |
| | | SELECT |
| | | <include refid="Base_Column_List"/> |
| | | FROM user_position |
| | | u.* |
| | | FROM user_position u left join stock s on u.stock_code = s.stock_code |
| | | <where> |
| | | user_id = #{uid} |
| | | u.user_id = #{uid} |
| | | and s.stock_type = #{stockType} |
| | | <if test="state != null "> |
| | | <if test="state == 0"> |
| | | and sell_order_id is null |
| | | and u.sell_order_id is null |
| | | </if> |
| | | <if test="state == 1"> |
| | | and sell_order_id is not null |
| | | and u.sell_order_id is not null |
| | | </if> |
| | | </if> |
| | | <if test="stockCode != null and stockCode != '' "> |
| | | and stock_code like CONCAT('%','${stockCode}','%') |
| | | and u.stock_code like CONCAT('%','${stockCode}','%') |
| | | </if> |
| | | <if test="stockSpell != null and stockSpell != '' "> |
| | | and stock_spell like CONCAT('%','${stockSpell}','%') |
| | | and u.stock_spell like CONCAT('%','${stockSpell}','%') |
| | | </if> |
| | | <!-- <if test="stockType != null and stockType!= ''">--> |
| | | <!-- and stock_gid = #{stockType}--> |
| | | <!-- </if>--> |
| | | |
| | | |
| | | |
| | | </where> |
| | |
| | | id, user_id, nick_name, agent_id, order_sn, pay_sn, pay_channel, pay_amt, order_status, |
| | | order_desc, add_time, pay_time, pay_id,img |
| | | </sql> |
| | | <insert id="insert" parameterType="com.nq.pojo.UserRecharge" > |
| | | insert into user_recharge (id, user_id, nick_name, |
| | | agent_id, order_sn, pay_sn, |
| | | pay_channel, pay_amt, order_status, |
| | | order_desc, add_time, pay_time,pay_id,img |
| | | ) |
| | | values (#{id,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER}, #{nickName,jdbcType=VARCHAR}, |
| | | #{agentId,jdbcType=INTEGER}, #{orderSn,jdbcType=VARCHAR}, #{paySn,jdbcType=VARCHAR}, |
| | | #{payChannel,jdbcType=VARCHAR}, #{payAmt,jdbcType=DECIMAL}, #{orderStatus,jdbcType=INTEGER}, |
| | | #{orderDesc,jdbcType=VARCHAR}, #{addTime,jdbcType=TIMESTAMP}, #{payTime,jdbcType=TIMESTAMP}, #{payId,jdbcType=INTEGER}, #{img,jdbcType=VARCHAR} |
| | | ) |
| | | </insert> |
| | | <!-- <insert id="insert" parameterType="com.nq.pojo.UserRecharge" >--> |
| | | <!-- insert into user_recharge (id, user_id, nick_name,--> |
| | | <!-- agent_id, order_sn, pay_sn,--> |
| | | <!-- pay_channel, pay_amt, order_status,--> |
| | | <!-- order_desc, add_time, pay_time,pay_id,img--> |
| | | <!-- )--> |
| | | <!-- values (#{id,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER}, #{nickName,jdbcType=VARCHAR},--> |
| | | <!-- #{agentId,jdbcType=INTEGER}, #{orderSn,jdbcType=VARCHAR}, #{paySn,jdbcType=VARCHAR},--> |
| | | <!-- #{payChannel,jdbcType=VARCHAR}, #{payAmt,jdbcType=DECIMAL}, #{orderStatus,jdbcType=INTEGER},--> |
| | | <!-- #{orderDesc,jdbcType=VARCHAR}, #{addTime,jdbcType=TIMESTAMP}, #{payTime,jdbcType=TIMESTAMP}, #{payId,jdbcType=INTEGER}, #{img,jdbcType=VARCHAR}--> |
| | | <!-- )--> |
| | | <!-- </insert>--> |
| | | <insert id="insertSelective" parameterType="com.nq.pojo.UserRecharge" > |
| | | insert into user_recharge |
| | | <trim prefix="(" suffix=")" suffixOverrides="," > |
| | |
| | | </sql> |
| | | <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" > |
| | | select |
| | | <include refid="Base_Column_List" /> |
| | | * |
| | | from user_withdraw |
| | | where id = #{id,jdbcType=INTEGER} |
| | | </select> |