package com.nq.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; import com.google.gson.Gson; import com.nq.common.ServerResponse; import com.nq.dao.StockMapper; import com.nq.dao.StockOptionMapper; import com.nq.pojo.*; import com.nq.service.IStockOptionService; import com.nq.service.IUserService; import com.nq.utils.redis.RedisShardedPoolUtils; import com.nq.utils.stock.sina.SinaStockApi; import com.nq.vo.stock.StockListVO; import com.nq.vo.stock.StockOptionListVO; import com.nq.vo.stock.StockVO; import java.math.BigDecimal; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service("iStockOptionService") public class StockOptionServiceImpl implements IStockOptionService { private static final Logger log = LoggerFactory.getLogger(StockOptionServiceImpl.class); @Autowired StockOptionMapper stockOptionMapper; @Autowired IUserService iUserService; @Autowired StockMapper stockMapper; public ServerResponse findMyStockOptions(String keyWords, HttpServletRequest request, int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); User user = this.iUserService.getCurrentUser(request); if (user == null ){ return ServerResponse.createBySuccessMsg("請先登錄"); } List stockOptions = this.stockOptionMapper.findMyOptionByKeywords(user.getId(), keyWords); List stockOptionListVOS = Lists.newArrayList(); for (StockOption option : stockOptions) { StockOptionListVO stockOptionListVO = assembleStockOptionListVO(option); stockOptionListVO.setIsOption("1"); stockOptionListVOS.add(stockOptionListVO); } PageInfo pageInfo = new PageInfo(stockOptions); pageInfo.setList(stockOptionListVOS); return ServerResponse.createBySuccess(pageInfo); } public ServerResponse isOption(Integer uid, String code) { StockOption stockOption = this.stockOptionMapper.isOption(uid, code); if (stockOption == null) { return ServerResponse.createBySuccessMsg("未添加"); } return ServerResponse.createByErrorMsg("已添加"); } public String isMyOption(Integer uid, String code) { StockOption stockOption = this.stockOptionMapper.isOption(uid, code); if (stockOption == null) { return "0"; } return "1"; } private StockOptionListVO assembleStockOptionListVO(StockOption option) { StockOptionListVO stockOptionListVO = new StockOptionListVO(); stockOptionListVO.setId(option.getId().intValue()); stockOptionListVO.setStockName(option.getStockName()); stockOptionListVO.setStockCode(option.getStockCode()); stockOptionListVO.setStockGid(option.getStockGid()); StockListVO stockVO = null; Stock stock = stockMapper.findStockByCode(option.getStockCode()); stockVO = getStockRealTime(stock); stockOptionListVO.setNowPrice(stockVO.getNowPrice()); stockOptionListVO.setHcrate(stockVO.getHcrate().toString()); stockOptionListVO.setPreclose_px(stockVO.getPreclose_px()); stockOptionListVO.setOpen_px(stockVO.getOpen_px()); stockOptionListVO.setType(stockVO.getType()); Stock stock1 = this.stockMapper.selectByPrimaryKey(option.getStockId()); stockOptionListVO.setStock_plate(stock1.getStockPlate()==null?"":stock.getStockPlate()); stockOptionListVO.setStock_type(stock1.getStockType()); return stockOptionListVO; } public static StockListVO getStockRealTime(Stock stock) { if (stock == null) { return null; } StockListVO stockListVO = new StockListVO(); try { StockRealTimeBean realTimeStock = new Gson().fromJson(RedisShardedPoolUtils.get("instockDetail:"+ stock.getStockCode()), StockRealTimeBean.class); stockListVO.setHcrate(new BigDecimal(realTimeStock.getPcp().replace("%", ""))); stockListVO.setNowPrice(realTimeStock.getLast()); stockListVO.setToday_max(realTimeStock.getHigh()); stockListVO.setToday_min(realTimeStock.getLow()); stockListVO.setOpen_px(realTimeStock.getBid()); stockListVO.setPreclose_px(realTimeStock.getPc()); stockListVO.setBusiness_amount(realTimeStock.getAsk()); stockListVO.setBusiness_balance(""); stockListVO.setName(stock.getStockName()); stockListVO.setCode(stock.getStockCode()); stockListVO.setSpell(stock.getStockSpell()); stockListVO.setGid(stock.getStockGid().toUpperCase()); stockListVO.setStock_plate(stock.getStockPlate()); stockListVO.setStock_type(stock.getStockType()); } catch (Exception e) { e.printStackTrace(); return null; } return stockListVO; } }