jiangping
2023-10-26 7a1d1ae5f7bb4fce96fb7a134d755765cd3c4e4a
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
package doumeemes.api.system;
 
import doumeemes.api.BaseController;
import doumeemes.biz.system.SystemUserBiz;
import doumeemes.core.annotation.pr.PreventRepeat;
import doumeemes.core.annotation.trace.Trace;
import doumeemes.core.model.ApiResponse;
import doumeemes.core.model.LoginUserInfo;
import doumeemes.core.utils.Constants;
import doumeemes.core.utils.DateUtil;
import doumeemes.dao.business.dto.CompanyInitDataDTO;
import doumeemes.dao.ext.dto.WxLoginDTO;
import doumeemes.dao.ext.dto.WxLoginOutDTO;
import doumeemes.dao.ext.vo.WxLoginVO;
import doumeemes.dao.system.dto.LoginDTO;
import doumeemes.dao.system.dto.UpdatePwdDto;
import doumeemes.service.business.BizLingyangService;
import doumeemes.service.system.SystemLoginService;
import doumeemes.service.system.WxLoginService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Date;
import java.util.Iterator;
 
/**
 * @author Eva.Caesar Liu
 * @date 2022/04/18 18:12
 */
@Api(tags = "系统功能")
@Trace(exclude = true)
@Slf4j
@RestController
@RequestMapping("/system")
public class SystemController extends BaseController {
 
    @Autowired
    private SystemUserBiz systemUserBiz;
 
    @Autowired
    private SystemLoginService systemLoginService;
 
    @Autowired
    private WxLoginService wxLoginService;
 
    @Autowired
    BizLingyangService bizLingyangService;
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("登录")
    @PostMapping("/login")
    public ApiResponse<String> login (@Validated @RequestBody LoginDTO dto, HttpServletRequest request) {
        return ApiResponse.success(systemLoginService.loginByPassword(dto, request));
    }
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("手动同步某天的数据(yyyy-MM-dd HH:mm:ss)")
    @GetMapping("/syncLingCountData")
    public ApiResponse<String> syncLingCountData (@RequestParam String dateStr, HttpServletRequest request) {
        Date date = DateUtil.getDateFromString(dateStr);
        bizLingyangService.syncLingData(date);
        return ApiResponse.success("操作完成");
    }
 
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("平台登录")
    @PostMapping("/platform/login")
    public ApiResponse<String> platformLogin (@Validated @RequestBody LoginDTO dto, HttpServletRequest request) {
        return ApiResponse.success(systemLoginService.platformLogin(dto, request));
    }
 
 
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("微信登录")
    @GetMapping("/wxLogin")
    public ApiResponse<WxLoginVO> wxLogin (@RequestParam String code, HttpServletRequest request) {
        return ApiResponse.success(wxLoginService.wxLogin(code, request));
    }
 
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("微信小程序登录")
    @GetMapping("/wxProgramLogin")
    public ApiResponse<WxLoginVO> wxProgramLogin (@RequestParam String code, HttpServletRequest request) {
        return ApiResponse.success(wxLoginService.wxProgramLogin(code, request));
    }
 
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("微信登录账号密码")
    @PostMapping("/wxAccountLogin")
    public ApiResponse<String> wxAccountLogin (@Validated @RequestBody WxLoginDTO dto, HttpServletRequest request) {
        return ApiResponse.success(wxLoginService.wxLoginByPassword(dto, request));
    }
 
    @PreventRepeat(limit = 10, lockTime = 10000)
    @ApiOperation("微信退出登录")
    @PostMapping("/wxLoginOut")
    public ApiResponse wxLoginOut (@Validated @RequestBody WxLoginOutDTO dto, HttpServletRequest request) {
        wxLoginService.wxLoginOut(dto);
        return ApiResponse.success("操作成功");
    }
 
    @ApiOperation("退出登录")
    @PostMapping("/logout")
    public ApiResponse logout () {
        Subject subject = SecurityUtils.getSubject();
        subject.logout();
        return ApiResponse.success(null);
    }
 
    @Trace(withRequestParameters = false)
    @ApiOperation("修改当前用户密码")
    @PostMapping("/updatePwd")
    public ApiResponse updatePwd (@Validated @RequestBody UpdatePwdDto dto) {
        dto.setUserId(this.getLoginUser().getId());
        systemUserBiz.updatePwd(dto);
        return ApiResponse.success(null);
    }
 
    @ApiOperation("获取当前登录的用户信息")
    @GetMapping("/getUserInfo")
    public ApiResponse<LoginUserInfo> getUserInfo () {
        return ApiResponse.success(this.getLoginUser());
    }
 
}