1
zj
12 hours ago f658569891db433854221b80f0a9fa99608cff64
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
package com.yami.trading.api.controller;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yami.trading.bean.item.domain.ItemUserOptional;
import com.yami.trading.bean.item.dto.ItemUserOptionalDTO;
import com.yami.trading.common.domain.Result;
import com.yami.trading.common.exception.YamiShopBindException;
import com.yami.trading.common.util.ThreadUtils;
import com.yami.trading.security.common.util.SecurityUtils;
import com.yami.trading.service.item.ItemUserOptionalService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * 用户自选Controller
 * @author lucas
 * @version 2023-03-10
 */
 
@Api(tags ="h5用户自选")
@RestController
@CrossOrigin
@Slf4j
@RequestMapping
public class ApiItemUserOptionalController {
 
    @Autowired
    private ItemUserOptionalService itemUserOptionalService;
 
    /**
     * 返回自选币种的行情
     */
    @ApiOperation("返回用户自选币种的列表")
    @GetMapping("/api/itemUserOptional!list.action")
    public Result<List<ItemUserOptionalDTO>> list(@RequestParam(required = false) String symbol) {
        String partyId = SecurityUtils.getCurrentUserId();
        List<ItemUserOptionalDTO> models = itemUserOptionalService.getItemUserOptionals(symbol, partyId);
        return Result.ok(models);
    }
 
 
    /**
     * 加入自选
     */
    @ApiOperation("加入自选")
    @GetMapping("/api/itemUserOptional!add.action")
    public Result<String> add(@RequestParam String symbol) {
        boolean lock = false;
        String loginPartyId =SecurityUtils.getUser().getUserId();
        try {
            if (ItemLock.add(loginPartyId)) {
                lock = true;
                QueryWrapper queryWrapper = new QueryWrapper();
                queryWrapper.eq("party_id", loginPartyId);
                queryWrapper.eq("symbol", symbol);
                long count = itemUserOptionalService.count(queryWrapper);
                if (count > 0) {
                    throw new YamiShopBindException("当前已经加入过自选");
 
                }
 
                ItemUserOptional entity = new ItemUserOptional();
                entity.setPartyId(loginPartyId);
                entity.setSymbol(symbol);
                itemUserOptionalService.save(entity);
            } else {
                throw new YamiShopBindException("请稍后再试");
            }
        } catch (Exception e) {
            log.error("保存自选失败", e);
            throw new YamiShopBindException("保存自选失败:"+ e.getMessage());
        }finally {
            if (lock) {
                ThreadUtils.sleep(50);
                ItemLock.remove(loginPartyId);
            }
        }
        return Result.succeed("保存成功");
    }
 
    /**
     * 删除自选币种
     */
    @ApiOperation("删除自选币种")
    @GetMapping("/api/itemUserOptional!delete.action")
    public Result<String> delete(@RequestParam String symbol) {
        String loginPartyId =SecurityUtils.getUser().getUserId();
        boolean lock = false;
        try {
            if (ItemLock.add(loginPartyId)) {
                lock = true;
                QueryWrapper<ItemUserOptional> queryWrapper = new QueryWrapper<>();
                queryWrapper.eq("party_id", loginPartyId);
                queryWrapper.eq("symbol", symbol);
                itemUserOptionalService.remove(queryWrapper);
            } else {
                throw new YamiShopBindException("请稍后再试");
            }
        } catch (Exception e) {
            log.error("删除失败", e);
            throw new YamiShopBindException("删除失败");
 
        } finally {
            if (lock) {
                ThreadUtils.sleep(50);
                ItemLock.remove(loginPartyId);
            }
        }
        return Result.ok("删除自选币种成功");
    }
 
    /**
     * 查询是否已加入自选
     */
    @ApiOperation("查询是否已加入自选")
    @GetMapping("/api/itemUserOptional!getItemOptionalStatus.action")
    public Result<Map<String, Object>> getItemOptionalStatus(@RequestParam String symbol) {
        String loginPartyId =SecurityUtils.getUser().getUserId();
        QueryWrapper<ItemUserOptional> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("party_id", loginPartyId);
        queryWrapper.eq("symbol", symbol);
        long count = itemUserOptionalService.count(queryWrapper);
        Map<String, Object> data = new HashMap<>();
 
        if(count <= 0){
            data.put("status", "0");
        }else{
            data.put("status", "1");
        }
        return Result.ok(data);
    }
}