puzhibing
1 天以前 d2a65425646e33c26b8a98c394c7990a6bfb6b03
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
package com.ruoyi.auth.controller;
 
import com.ruoyi.auth.form.LoginBody;
import com.ruoyi.auth.form.RegisterBody;
import com.ruoyi.auth.service.SysLoginService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.JwtUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.security.auth.AuthUtil;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.goods.api.domain.GetLotteryEventList;
import com.ruoyi.goods.api.domain.TLotteryEvent;
import com.ruoyi.goods.api.domain.TLotteryEventUser;
import com.ruoyi.goods.api.service.LotteryEventClient;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto;
import com.ruoyi.system.api.model.AppMiniLoginDto;
import com.ruoyi.system.api.model.AppMiniLoginVo;
import com.ruoyi.system.api.model.LoginUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
 
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
 
/**
 * token 控制
 *
 * @author jqs
 */
@RestController
@Api(value = "系统和小程序登录", tags = "系统和小程序登录")
 
public class TokenController {
    @Autowired
    private TokenService tokenService;
    
    @Autowired
    private SysLoginService sysLoginService;
    
    @Resource
    private LotteryEventClient lotteryEventClient;
    
    
    
    
    
    @ApiOperation("系统登录")
    @PostMapping("login")
    public R<?> login(@RequestBody LoginBody form) {
        // 用户登录
        LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
        // 获取登录token
        return R.ok(tokenService.createToken(userInfo));
    }
    
    @ApiOperation("小程序登录")
    @PostMapping("miniLogin")
    public R<?> miniLogin(@RequestBody AppMiniLoginDto appMiniLoginDto) {
        // 小程序用户登录
        AppMiniLoginVo appMiniLoginVo = sysLoginService.miniLogin(appMiniLoginDto);
        Map<String, Object> miniToken = tokenService.createMiniToken(appMiniLoginVo);
        return R.ok(miniToken);
    }
    
    @ApiOperation("小程序注册【2.0】")
    @PostMapping("miniRegister")
    public R<?> miniRegister(@RequestBody AppMiniRegisterDto appUserRegisterDto) {
        // 小程序用户登录
        AppMiniLoginVo appMiniLoginVo = sysLoginService.miniRegister(appUserRegisterDto);
        // 获取登录token
        Map<String, Object> miniToken = tokenService.createMiniToken(appMiniLoginVo);
        //判断新用户是都符合抽奖条件
        miniToken.put("lotteryDraw", false);
        GetLotteryEventList getLotteryEventList = new GetLotteryEventList();
        getLotteryEventList.setActivityType(1);
        getLotteryEventList.setUserId(SecurityUtils.getUserId());
        List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData();
        if (data.size() > 0) {
            miniToken.put("lotteryDraw", true);
            miniToken.put("lotteryEventId", data.get(0).getId());
            //将数据添加到普通抽奖列表中
            TLotteryEventUser lotteryEventUser = new TLotteryEventUser();
            lotteryEventUser.setId(IdUtils.simpleUUID());
            lotteryEventUser.setLotteryEventId(data.get(0).getId());
            lotteryEventUser.setUser_id(SecurityUtils.getUserId());
            lotteryEventClient.addLotteryEventUser(lotteryEventUser);
        }
        return R.ok(miniToken);
    }
    
    @DeleteMapping("logout")
    public R<?> logout(HttpServletRequest request) {
        String token = SecurityUtils.getToken(request);
        if (StringUtils.isNotEmpty(token)) {
            String username = JwtUtils.getUserName(token);
            // 删除用户缓存记录
            AuthUtil.logoutByToken(token);
            // 记录用户退出日志
            sysLoginService.logout(username);
        }
        return R.ok();
    }
    
    @PostMapping("refresh")
    public R<?> refresh(HttpServletRequest request) {
        LoginUser loginUser = tokenService.getLoginUser(request);
        if (StringUtils.isNotNull(loginUser)) {
            // 刷新令牌有效期
            tokenService.refreshToken(loginUser);
            return R.ok();
        }
        return R.ok();
    }
    
    @PostMapping("register")
    public R<?> register(@RequestBody RegisterBody registerBody) {
        // 用户注册
        sysLoginService.register(registerBody.getUsername(), registerBody.getPassword());
        return R.ok();
    }
}