package com.gear.customer.swx.biz.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.gear.common.constant.SwxConstons; import com.gear.common.core.redis.RedisCache; import com.gear.customer.swx.biz.SwxBizIndex; import com.gear.customer.swx.vo.response.SwxContentsVo; import com.gear.customer.swx.vo.response.SwxIndexMarketInfoVo; import com.gear.customer.swx.vo.response.SwxIndexQueryMarketVo; import com.gear.swx.domain.*; import com.gear.swx.service.*; import com.gear.swx.vo.SyncKValueFromLdVo; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @Component public class SwxBizIndexImpl implements SwxBizIndex { @Autowired private ISwxMarketService swxMarketService; @Autowired private RedisCache redisCache; @Autowired private ISwxMarketContractsService swxMarketContractsService; @Autowired private ISwxMarketOptionsService swxMarketOptionsService; @Autowired private ISwxMarketSmartService swxMarketSmartService; @Autowired private ISwxSettingsService swxSettingsService; @Autowired private ISwxContentsService swxContentsService; @Autowired private ISwxNftService swxNftService; @Override public List listMarketByType(Integer type, Integer canSamrt) { QueryWrapper queryWrapper = new QueryWrapper<>(); if(type == null){ queryWrapper.lambda().eq(SwxMarket::getShowIndex, SwxConstons.NOMARL_STATUS_YES); }else{ queryWrapper.lambda().eq(SwxMarket::getType,type); } if(canSamrt != null){ queryWrapper.lambda().eq(SwxMarket::getCanSmart,SwxConstons.NOMARL_STATUS_YES); } queryWrapper.lambda().orderByAsc(SwxMarket::getSortNum); List list = swxMarketService.list(queryWrapper); List result = new ArrayList<>(); for (SwxMarket item : list){ SwxIndexQueryMarketVo vo = new SwxIndexQueryMarketVo(); BeanUtils.copyProperties(item,vo); vo.setZdf(redisCache.getCacheObject(vo.getCode()+"CurrZdf") == null ? BigDecimal.ZERO : new BigDecimal(redisCache.getCacheObject(vo.getCode()+"CurrZdf")+"")); vo.setPrice(redisCache.getCacheObject(vo.getCode()+"CurrPrice") == null ? BigDecimal.ZERO : new BigDecimal(redisCache.getCacheObject(vo.getCode()+"CurrPrice")+"")); vo.setHundred(redisCache.getCacheList(item.getCode()+"Hundred")); result.add(vo); } return result; } @Override public SwxIndexMarketInfoVo getMarketInfo(String id) { SwxMarket market = swxMarketService.getById(id); SwxIndexMarketInfoVo result = new SwxIndexMarketInfoVo(); BeanUtils.copyProperties(market,result); if(market != null){ if (market.getCanContracts() == SwxConstons.NOMARL_STATUS_YES){ SwxMarketContracts contracts = swxMarketContractsService.getOne(new QueryWrapper().lambda().eq(SwxMarketContracts::getMId,market.getId())); result.setContractsInfo(contracts); } if (market.getCanOptions() == SwxConstons.NOMARL_STATUS_YES){ SwxMarketOptions options = swxMarketOptionsService.getOne(new QueryWrapper().lambda().eq(SwxMarketOptions::getMId,market.getId())); result.setOptionsInfo(options); } if (market.getCanSmart() == SwxConstons.NOMARL_STATUS_YES){ SwxMarketSmart contracts = swxMarketSmartService.getOne(new QueryWrapper().lambda().eq(SwxMarketSmart::getMId,market.getId())); result.setSmartInfo(contracts); } result.setZdf(redisCache.getCacheObject(result.getCode()+"CurrZdf") == null ? BigDecimal.ZERO : new BigDecimal(redisCache.getCacheObject(result.getCode()+"CurrZdf")+"")); result.setPrice(redisCache.getCacheObject(result.getCode()+"CurrPrice") == null ? BigDecimal.ZERO : new BigDecimal(redisCache.getCacheObject(result.getCode()+"CurrPrice")+"")); result.setHundred(redisCache.getCacheList(market.getCode()+"Hundred")); } return result; } @Override public SwxMarketContracts getContractsByMarket(String mId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(SwxMarketContracts::getMId,mId); return swxMarketContractsService.getOne(queryWrapper); } @Override public SwxMarketOptions getOptionsByMarket(String mId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(SwxMarketOptions::getMId,mId); return swxMarketOptionsService.getOne(queryWrapper); } @Override public SwxMarketSmart getSmartByMarket(String mId) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(SwxMarketSmart::getMId,mId); return swxMarketSmartService.getOne(queryWrapper); } @Override public List getKValueByCodeAndDate(String code, String dateType) { return redisCache.getCacheList(code+dateType+"KValue"); } @Override public SwxSettings getParamByKey(String key) { return swxSettingsService.getOne(new QueryWrapper().lambda().eq(SwxSettings::getParamKey,key)); } @Override public List listContents(Integer language) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(SwxContents::getStatus,SwxConstons.NOMARL_STATUS_YES); queryWrapper.lambda().eq(SwxContents::getLanguage,language); queryWrapper.lambda().orderByAsc(SwxContents::getSortNum); List list = swxContentsService.list(queryWrapper); List result = new ArrayList<>(); for (SwxContents item :list){ SwxContentsVo vo = new SwxContentsVo(); BeanUtils.copyProperties(item,vo); result.add(vo); } return result; } @Override public SwxContents getContentsById(String id) { return swxContentsService.getById(id); } @Override public List listNft() { return swxNftService.list(new QueryWrapper().lambda().eq(SwxNft::getStatus,SwxConstons.NOMARL_STATUS_YES)); } }