zj
2025-01-06 0e7b38c2b3af72ea2a7f8a2fcbaad4d78e2c1977
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
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<SwxIndexQueryMarketVo> listMarketByType(Integer type, Integer canSamrt) {
        QueryWrapper<SwxMarket> 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<SwxMarket> list = swxMarketService.list(queryWrapper);
        List<SwxIndexQueryMarketVo> 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<SwxMarketContracts>().lambda().eq(SwxMarketContracts::getMId,market.getId()));
                result.setContractsInfo(contracts);
            }
            if (market.getCanOptions() == SwxConstons.NOMARL_STATUS_YES){
                SwxMarketOptions options = swxMarketOptionsService.getOne(new QueryWrapper<SwxMarketOptions>().lambda().eq(SwxMarketOptions::getMId,market.getId()));
                result.setOptionsInfo(options);
            }
            if (market.getCanSmart() == SwxConstons.NOMARL_STATUS_YES){
                SwxMarketSmart contracts = swxMarketSmartService.getOne(new QueryWrapper<SwxMarketSmart>().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<SwxMarketContracts> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(SwxMarketContracts::getMId,mId);
        return swxMarketContractsService.getOne(queryWrapper);
    }
 
    @Override
    public SwxMarketOptions getOptionsByMarket(String mId) {
        QueryWrapper<SwxMarketOptions> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(SwxMarketOptions::getMId,mId);
        return swxMarketOptionsService.getOne(queryWrapper);
    }
 
    @Override
    public SwxMarketSmart getSmartByMarket(String mId) {
        QueryWrapper<SwxMarketSmart> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(SwxMarketSmart::getMId,mId);
        return swxMarketSmartService.getOne(queryWrapper);
    }
 
    @Override
    public List<SyncKValueFromLdVo> getKValueByCodeAndDate(String code, String dateType) {
        return redisCache.getCacheList(code+dateType+"KValue");
    }
 
    @Override
    public SwxSettings getParamByKey(String key) {
        return swxSettingsService.getOne(new QueryWrapper<SwxSettings>().lambda().eq(SwxSettings::getParamKey,key));
    }
 
    @Override
    public List<SwxContentsVo> listContents(Integer language) {
        QueryWrapper<SwxContents> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(SwxContents::getStatus,SwxConstons.NOMARL_STATUS_YES);
        queryWrapper.lambda().eq(SwxContents::getLanguage,language);
        queryWrapper.lambda().orderByAsc(SwxContents::getSortNum);
        List<SwxContents> list = swxContentsService.list(queryWrapper);
        List<SwxContentsVo> 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<SwxNft> listNft() {
        return swxNftService.list(new QueryWrapper<SwxNft>().lambda().eq(SwxNft::getStatus,SwxConstons.NOMARL_STATUS_YES));
    }
}