package com.hxzkappboot.controller;
|
|
import com.hxzkappboot.pojo.TbUser;
|
import com.hxzkappboot.service.UserService;
|
//import com.hxzkappboot.util.JwtUitls;
|
import com.hxzkappboot.util.JwtUtils;
|
import com.hxzkappboot.util.R;
|
import com.hxzkappboot.util.StatusCode;
|
import com.hxzkappboot.util.WechatLoginRequestDTO;
|
import com.tencentcloudapi.common.Credential;
|
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
|
import com.tencentcloudapi.common.profile.ClientProfile;
|
import com.tencentcloudapi.common.profile.HttpProfile;
|
import com.tencentcloudapi.sms.v20210111.SmsClient;
|
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
|
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
|
import org.jetbrains.annotations.NotNull;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import javax.validation.Valid;
|
|
import java.util.Objects;
|
|
import static java.lang.Integer.parseInt;
|
|
@RestController
|
public class LoginController {
|
|
private String SecretId = "AKIDrjZOI4e6KLZu9FAsSRN8eOwSt52lbMBz";
|
private String SecretKey = "xnRtHUL3YqdMyOLVSBjKkz1pQoxujS4d";
|
|
@Autowired
|
UserService userService;
|
|
@PostMapping("/api/wx/login")
|
public R login(@Valid @RequestBody WechatLoginRequestDTO loginRequest ) {
|
// System.out.println("收到微信code:" + loginRequest.getCode());
|
R response ;
|
try {
|
TbUser tbUser = new TbUser();
|
tbUser.setPassword(loginRequest.getPassword());
|
tbUser.setUsername(loginRequest.getUsername());
|
tbUser.setCid(loginRequest.getCid());
|
TbUser tbUser1 = userService.login(tbUser);
|
|
|
if (tbUser1!=null){
|
if (Objects.equals(tbUser1.getYanzheng(), "5")){
|
response = new R(StatusCode.Fail);
|
response.setCode(-1);
|
response.setMsg("当前登录失败次数已达上限,请联系管理员解锁!");
|
}else{
|
String token= JwtUtils.createToken(String.valueOf(tbUser1.getUsername()),5*24*60*60*1000);//生成token返回前端
|
response = new R(StatusCode.Success);
|
tbUser1.setToken(token);
|
tbUser1.setTokentype("Bearer");
|
response.setData(tbUser1);
|
}
|
|
}else{
|
response = new R(StatusCode.Fail);
|
response.setCode(-1);
|
response.setMsg("用户名密码有误,请重试");
|
TbUser tbUser2 = userService.findPhoneUser(loginRequest.getUsername());
|
if (tbUser2!=null ){
|
Integer i=0;
|
if (Objects.equals(tbUser2.getYanzheng(), "NaN") || Objects.equals(tbUser2.getYanzheng(), "") || tbUser2.getYanzheng()==null){
|
i=1;
|
|
}else if (tbUser2.getYanzheng().equals("5")){
|
i=5;
|
response.setMsg("当前登录失败次数已达上限,请联系管理员解锁!");
|
}else{
|
i = parseInt(tbUser2.getYanzheng())+1;
|
}
|
tbUser2.setYanzheng(i.toString());
|
userService.upUserJiaYanZheng(tbUser2);
|
}
|
|
}
|
|
} catch (Exception e) {
|
response = new R(StatusCode.Fail.getCode(), e.getMessage());
|
}
|
return response;
|
}
|
|
@GetMapping("/api/wx/checkLogin")
|
public R checkLogin( String token) {
|
System.out.println("收到待校验token:" + token);
|
R response ;
|
try {
|
token = token.substring(7);
|
R r=JwtUtils.checkToken(token);
|
if (r.getCode()==0){
|
response = new R(StatusCode.Success);
|
}else{
|
response = new R(StatusCode.Fail.getCode(),r.getMsg());
|
}
|
} catch (Exception e) {
|
response = new R(StatusCode.Fail.getCode(), e.getMessage());
|
}
|
return response;
|
}
|
|
@PostMapping("/api/wx/getUserCid")
|
public R getUserCid( @Valid @RequestBody WechatLoginRequestDTO loginRequest) {
|
// System.out.println("收到待校验token:" + token);
|
R response ;
|
try {
|
TbUser tbUser = new TbUser();
|
tbUser.setPassword(loginRequest.getPassword());
|
tbUser.setUsername(loginRequest.getUsername());
|
tbUser.setCid(loginRequest.getCid());
|
TbUser tbUser1 = userService.getUserCid(tbUser);
|
if (tbUser1!=null){
|
|
|
if (!Objects.equals(tbUser1.getCid(), loginRequest.getCid())) {
|
response = new R(StatusCode.Fail.getCode(),"当前账号已在其他设备登录,当前设备将强制退出!");
|
}else{
|
response = new R(StatusCode.Success);
|
response.setData(tbUser1);
|
}
|
|
}else{
|
response = new R(StatusCode.Fail.getCode(),"当前账号已删除,请注册账号后重新的登录");
|
}
|
} catch (Exception e) {
|
response = new R(StatusCode.Fail.getCode(), e.getMessage());
|
}
|
return response;
|
}
|
|
|
@GetMapping("upUserJiaYanZheng")
|
public int upUserJiaYanZheng(TbUser user){
|
return userService.upUserJiaYanZheng(user);
|
}
|
|
@GetMapping("/api/wx/sms")
|
public int sms(String phone, int randomNumber) throws TencentCloudSDKException {
|
try {
|
System.out.println("生成的随机整数是:" + randomNumber);
|
// 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
|
// 代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见:https://cloud.tencent.com/document/product/1278/85305
|
// 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
|
Credential cred = new Credential(SecretId, SecretKey);
|
// 实例化一个http选项,可选的,没有特殊需求可以跳过
|
HttpProfile httpProfile = new HttpProfile();
|
httpProfile.setEndpoint("sms.tencentcloudapi.com");
|
// 实例化一个client选项,可选的,没有特殊需求可以跳过
|
ClientProfile clientProfile = new ClientProfile();
|
clientProfile.setHttpProfile(httpProfile);
|
// 实例化要请求产品的client对象,clientProfile是可选的
|
SmsClient client = new SmsClient(cred, "ap-beijing", clientProfile);
|
// 实例化一个请求对象,每个接口都会对应一个request对象
|
SendSmsRequest req = new SendSmsRequest();
|
String[] phoneNumberSet1 = {phone};
|
req.setPhoneNumberSet(phoneNumberSet1);
|
|
req.setSmsSdkAppId("1400838975");
|
req.setSignName("北京华星北斗智控");
|
req.setTemplateId("1878379");
|
|
String[] templateParamSet1 = {String.valueOf(randomNumber)};
|
req.setTemplateParamSet(templateParamSet1);
|
|
// 返回的resp是一个SendSmsResponse的实例,与请求对象对应
|
SendSmsResponse resp = client.SendSms(req);
|
// 输出json格式的字符串回包
|
System.out.println(SendSmsResponse.toJsonString(resp));
|
} catch (TencentCloudSDKException e) {
|
System.out.println(e.toString());
|
}
|
return randomNumber;
|
}
|
|
}
|