123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- package com.ruoyi.app.controller;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.ruoyi.app.annotation.PassToken;
- import com.ruoyi.app.base.AppLoginUser;
- import com.ruoyi.app.base.AppTokenService;
- import com.ruoyi.app.domain.TbAppUser;
- import com.ruoyi.app.domain.vo.AppLoginVo;
- import com.ruoyi.app.domain.vo.AppMemberVo;
- import com.ruoyi.app.service.ITbAppUserService;
- import com.ruoyi.app.util.AliSMSUtil;
- import com.ruoyi.common.constant.Constants;
- import com.ruoyi.common.core.domain.AjaxResult;
- import com.ruoyi.common.core.redis.RedisCache;
- import com.ruoyi.common.utils.DateUtils;
- import com.ruoyi.common.utils.ServletUtils;
- import com.ruoyi.common.utils.StringUtils;
- import com.ruoyi.common.utils.ip.IpUtils;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiImplicitParam;
- import io.swagger.annotations.ApiImplicitParams;
- import io.swagger.annotations.ApiOperation;
- import lombok.RequiredArgsConstructor;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import javax.servlet.http.HttpServletRequest;
- import java.util.Date;
- import java.util.Map;
- /**
- * 会员登录
- *
- * @author Alex
- * @date 2020-09-24
- */
- @Api(value = "APP登录",tags = "APP登录")
- @RequiredArgsConstructor(onConstructor_ = @Autowired)
- @RestController
- @RequestMapping("/app" )
- public class AppLoginController {
- private final AppTokenService appTokenService;
- private final ITbAppUserService userService;
- /**
- * 登录
- */
- @PassToken
- @ApiOperation(value = "APP登录", notes = "APP登录")
- @PostMapping("/login")
- public AjaxResult login(@RequestBody AppLoginVo loginVo){
- if (StringUtils.isBlank(loginVo.getMobile())) {
- return AjaxResult.error("手机号不能为空");
- }
- if (StringUtils.isBlank(loginVo.getCaptcha())){
- return AjaxResult.error("验证码不能为空");
- }
- //手机短信验证
- // boolean ckCaptcha = AliSMSUtil.getInstance().validateSmsCode(loginVo.getMobile(), loginVo.getCaptcha());
- // if (!ckCaptcha) {
- // return AjaxResult.error("验证码错误");
- // }
- AppMemberVo appUser = userService.getAppMember(null,loginVo.getMobile());
- boolean ck;
- Date date = new Date();
- // 为空则新增
- if (appUser == null) {
- appUser = new AppMemberVo();
- appUser.setMobile(loginVo.getMobile());
- appUser.setNickName(loginVo.getMobile());
- appUser.setQrcode(DateUtils.getCurrentTimeRandom());
- appUser.setCreateTime(date);
- ck = userService.saveOrUpdate(appUser);
- if (!ck){
- return AjaxResult.error("未知异常,登录失败");
- }
- appUser.setCreateBy(appUser.getUserId().toString());
- }
- String ip = IpUtils.getIpAddr(ServletUtils.getRequest());
- appUser.setClientId(loginVo.getClientId());
- appUser.setLoginIp(ip);
- appUser.setLoginTime(date);
- appUser.setUpdateBy(appUser.getUserId().toString());
- appUser.setUpdateTime(date);
- ck = userService.saveOrUpdate(appUser);
- if (!ck){
- return AjaxResult.error("未知异常,登录失败");
- }
- //每次登录前,先删除缓存,保证登录唯一性
- appTokenService.delLoginUser(loginVo.getMobile());
- JSONObject jsonObject = new JSONObject();
- AppLoginUser loginUser = new AppLoginUser();
- loginUser.setUser(appUser);
- String token = appTokenService.createToken(loginUser);
- jsonObject.put("token", token);
- jsonObject.put("user", appUser);
- return AjaxResult.success(jsonObject);
- }
- /**
- * 发送短信验证码
- * @param type 1、用户注册;2、登录确认;3、身份验证;4、登录异常;5、修改密码;6、信息变更;
- * @param mobile 手机号码
- * @return
- */
- @PassToken
- @ApiOperation(value = "发送短信验证码", notes = "发送短信验证码")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "type", value = "1.用户注册;2.登录确认;3.身份验证;4.登录异常;5.修改密码;6.信息变更",paramType="int"),
- @ApiImplicitParam(name = "mobile", value = "手机号",paramType="string")
- })
- @GetMapping("/captchaSend")
- public AjaxResult sendCaptcha(Integer type, String mobile){
- if(StringUtils.isBlank(mobile)){
- return AjaxResult.error("请输入手机号");
- }
- Map<String,String> map = AliSMSUtil.getInstance().sendSmsCode(type, mobile);
- if(map.get("code").equals("200")) {
- return AjaxResult.success("发送成功");
- }
- return AjaxResult.error(map.get("msg"));
- }
- /**
- * 校验验证码
- * @param mobile
- * @param captcha
- * @return
- */
- @PassToken
- @ApiOperation(value = "校验短信验证码", notes = "校验短信验证码")
- @GetMapping("/captchaValidate")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "mobile", value = "手机号",paramType="string"),
- @ApiImplicitParam(name = "captcha", value = "验证码",paramType="string")
- })
- public AjaxResult validateCaptcha(String mobile, String captcha){
- if (StringUtils.isBlank(mobile)) {
- return AjaxResult.error("手机号不能为空");
- }
- if (StringUtils.isBlank(captcha)){
- return AjaxResult.error("验证码不能为空");
- }
- //手机短信验证
- boolean ckCaptcha = AliSMSUtil.getInstance().validateSmsCode(mobile, captcha);
- if (!ckCaptcha) {
- return AjaxResult.error("验证码错误");
- }
- return AjaxResult.success("验证成功");
- }
- }
|