zj
2026-01-14 3a1977e8cc0c5fffbc6490f220f30116af6cce86
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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
package com.nq.controller;
 
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nq.common.ResponseCode;
import com.nq.common.ServerResponse;
 
import com.nq.dao.MoneyLogMapper;
import com.nq.dao.StockConfigMapper;
import com.nq.enums.EConfigKey;
import com.nq.pojo.MoneyLog;
import com.nq.pojo.SiteSpread;
import com.nq.pojo.StockConfig;
import com.nq.pojo.User;
import com.nq.service.*;
 
import com.nq.utils.PropertiesUtil;
 
import com.nq.utils.redis.CookieUtils;
 
import com.nq.utils.redis.JsonUtil;
 
import com.nq.utils.redis.RedisConst;
 
import com.nq.utils.redis.RedisShardedPoolUtils;
 
import com.nq.utils.translate.GoogleTranslateUtil;
import com.nq.vo.user.UserLoginResultVO;
 
import javax.servlet.http.HttpServletRequest;
 
import javax.servlet.http.HttpServletResponse;
 
import javax.servlet.http.HttpSession;
 
import org.apache.commons.lang3.StringUtils;
import org.apache.http.util.TextUtils;
import org.slf4j.Logger;
 
import org.slf4j.LoggerFactory;
 
import org.springframework.beans.factory.annotation.Autowired;
 
import org.springframework.stereotype.Controller;
 
import org.springframework.web.bind.annotation.*;
 
import java.math.BigDecimal;
import java.util.List;
 
 
@Controller
@RequestMapping({"/api/user/"})
public class UserApiController {
    private static final Logger log = LoggerFactory.getLogger(UserApiController.class);
 
    @Autowired
    IUserService iUserService;
 
    @Autowired
    ISiteSpreadService iSiteSpreadService;
 
    @Autowired
    StockConfigMapper stockConfigMapper;
 
    @Autowired
    MoneyLogMapper moneyLogMapper;
 
    @Autowired
    IStockConfigServices stockConfigServices;
 
    @Autowired
    IStockBuySettingServices stockBuySettingServices;
 
    //注册
    @RequestMapping(value = {"reg.do"}, method = {RequestMethod.POST})
    @ResponseBody
    public ServerResponse reg(@RequestParam("agentCode") String agentCode, @RequestParam("phone") String phone, @RequestParam(value = "yzmCode", defaultValue = "") String yzmCode, @RequestParam("userPwd") String userPwd, HttpServletRequest httpServletRequest) {
        return this.iUserService.reg(yzmCode, agentCode, phone, userPwd, httpServletRequest);
    }
 
    //登录
    @RequestMapping(value = {"login.do"}, method = {RequestMethod.POST})
    @ResponseBody
    public ServerResponse login(@RequestParam("phone") String phone, @RequestParam("userPwd") String userPwd, HttpSession httpSession, HttpServletRequest request, HttpServletResponse response) {
        String pc_cookie_name = PropertiesUtil.getProperty("user.cookie.name");
        String token = RedisConst.getUserRedisKey(httpSession.getId());
        ServerResponse serverResponse = this.iUserService.login(phone, userPwd, request);
        if (serverResponse.isSuccess()) {
            CookieUtils.writeLoginToken(response, token, pc_cookie_name);
            String redisSetExResult = RedisShardedPoolUtils.setEx(token, JsonUtil.obj2String(serverResponse.getData()), 9999);
            log.info("redis setex user result : {}", redisSetExResult);
            UserLoginResultVO resultVO = new UserLoginResultVO();
            resultVO.setKey(pc_cookie_name);
            resultVO.setToken(token);
            return ServerResponse.createBySuccess("登录成功", resultVO);
        }
        return serverResponse;
    }
 
    //注销
    @RequestMapping({"logout.do"})
    @ResponseBody
    public ServerResponse logout(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
        String cookie_name = PropertiesUtil.getProperty("user.cookie.name");
        String logintoken = CookieUtils.readLoginToken(httpServletRequest, cookie_name);
        RedisShardedPoolUtils.del(logintoken);
        CookieUtils.delLoginToken(httpServletRequest, httpServletResponse, cookie_name);
        return ServerResponse.createBySuccess();
    }
 
    //查询手机号是否存在
    @RequestMapping({"checkPhone.do"})
    @ResponseBody
    public ServerResponse checkPhone(String phoneNum) {
        return this.iUserService.checkPhone(phoneNum);
    }
 
    //找回密码
    @RequestMapping({"updatePwd.do"})
    @ResponseBody
    public ServerResponse updatePwd(String phoneNum, String code, String newPwd) {
        return this.iUserService.updatePwd(phoneNum, code, newPwd);
    }
 
    /**
     * 查询点差费率
     * @author lr
     * @date 2020/07/01
     * applies:涨跌幅
     * turnover:成交额
     * code:股票代码
     * unitprice:股票单价
     **/
    @RequestMapping({"findSpreadRateOne.do"})
    @ResponseBody
    public ServerResponse findSpreadRateOne(BigDecimal applies, BigDecimal turnover, String code, BigDecimal unitprice) {
        SiteSpread siteSpread = this.iSiteSpreadService.findSpreadRateOne(applies,turnover,code,unitprice);
        return ServerResponse.createBySuccess("Success", siteSpread);
    }
 
    @RequestMapping({"queryStockConfig.do"})
    @ResponseBody
    public  ServerResponse  updateConfig(){
        StockConfig stockConfig = stockConfigMapper.selectOne(new LambdaQueryWrapper<StockConfig>().eq(StockConfig::getCKey, EConfigKey.BUY_HANDLING_CHARGE.getCode()));
        return  ServerResponse.createBySuccess(stockConfig);
    }
 
    @RequestMapping({"queryStockConfigTwo.do"})
    @ResponseBody
    public  ServerResponse  queryStockConfigTwo(){
        StockConfig stockConfig = stockConfigMapper.selectOne(new LambdaQueryWrapper<StockConfig>().eq(StockConfig::getCKey, EConfigKey.EXCHANGE_HANDLING_CHARGE.getCode()));
        return  ServerResponse.createBySuccess(stockConfig);
    }
 
    @RequestMapping({"queryAllStockConfig.do"})
    @ResponseBody
    public  ServerResponse  queryAllStockConfig(){
        return  stockConfigServices.queryAll(null);
    }
 
    @GetMapping({"queryStockBuySetting.do"})
    @ResponseBody
    public ServerResponse queryStockBuySetting(HttpServletRequest request, String stockType) {
        return stockBuySettingServices.queryStockBuySetting(stockType);
    }
 
 
    @RequestMapping({"moneylogAll.do"})
    @ResponseBody
    public ServerResponse taskList(@RequestParam(value = "userId", required = false) String userId,
                                   @RequestParam(value = "type", required = false) String type,
                                   @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
                                   @RequestParam(value = "pageSize", defaultValue = "50") int pageSize,
                                   HttpServletRequest request) {
        Page<MoneyLog> page1 = new Page<>(pageNum, pageSize);
        QueryWrapper<MoneyLog> queryWrapper = new QueryWrapper<>();
 
        if(!TextUtils.isEmpty(userId)){
            queryWrapper.eq("user_id", userId);
        } else {
            User user = iUserService.getCurrentUser(request);
            if (user == null ){
                return ServerResponse.createByErrorCodeMsg(ResponseCode.NEED_LOGIN.getCode(),"请先登录", request);
            }
            queryWrapper.eq("user_id", user.getId());
        }
        if(StringUtils.isNotEmpty(type)){
            queryWrapper.eq("type",type);
        }
        queryWrapper.orderByDesc("create_time");
        Page<MoneyLog> moneyLogPage = moneyLogMapper.selectPage(page1, queryWrapper);
        List<MoneyLog> records = moneyLogPage.getRecords();
        records.forEach(f->{
            f.setDescs( new GoogleTranslateUtil().translate(f.getDescs(), request.getHeader("lang")));
        });
        moneyLogPage.setRecords(records);
        return ServerResponse.createBySuccess(moneyLogPage);
    }
}