123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package com.care.client.controller;
- import com.care.client.service.PassportService;
- import com.care.client.vo.MemberInitParams;
- import com.care.common.entity.CareMemberInfo;
- import com.care.common.service.CareMemberInfoService;
- import com.care.common.service.SmsSendService;
- import com.care.common.util.CheckUtils;
- import com.care.common.util.Result;
- import com.google.common.cache.Cache;
- import com.google.common.cache.CacheBuilder;
- import io.swagger.annotations.*;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.web.bind.annotation.*;
- import javax.annotation.Resource;
- import java.util.Random;
- import java.util.concurrent.TimeUnit;
- @Api(tags = "登录")
- @RestController
- @RequestMapping("/pinanbao")
- public class PassportController {
- @Resource
- private PassportService passportService;
- @Resource
- private SmsSendService smsSendService;
- @Resource
- private CareMemberInfoService careMemberInfoService;
- public final Cache<String, String> smsTimeoutCache = CacheBuilder.newBuilder().expireAfterWrite(5, TimeUnit.MINUTES).build();
- @ApiOperation(value = "小程序登录", notes = "小程序授权登录")
- @ApiParam(name = "params", value = "登录参数")
- @PostMapping("login")
- public Result<Object> login(@RequestBody MemberInitParams params) {
- if ("wx".equalsIgnoreCase(params.getLoginType())) {
- CheckUtils.valueIsNull(params, "code");
- } else if ("pwd".equalsIgnoreCase(params.getLoginType())) {
- if (StringUtils.isBlank(params.getPhone())) {
- return Result.error("请输入手机号码");
- }
- if (StringUtils.isBlank(params.getPassword())) {
- return Result.error("请输入密码");
- }
- }
- return passportService.login(params);
- }
- @ApiOperation(value = "新用户注册", notes = "新用户注册")
- @GetMapping("registerPhone")
- @ApiImplicitParams(value = {
- @ApiImplicitParam(paramType = "query", name = "phone", value = "电话号码"),
- @ApiImplicitParam(paramType = "query", name = "vcode", value = "验证码"),
- @ApiImplicitParam(paramType = "query", name = "password", value = "密码 "),
- })
- public Result<Object> registerPhone(@RequestHeader(value = "token") String token,
- @RequestParam(value = "phone", required = true) String phone,
- @RequestParam(value = "vcode", required = true) String vcode,
- @RequestParam(value = "password", required = true) String password) {
- if (StringUtils.isBlank(phone)) {
- return Result.error("请输入手机号");
- }
- if (!StringUtils.equalsIgnoreCase(vcode, smsTimeoutCache.getIfPresent(phone))) {
- return Result.error("请输入正确的验证码");
- }
- if (StringUtils.isBlank(password)) {
- return Result.error("请输入密码");
- }
- if (StringUtils.isNotBlank(phone) && StringUtils.isNotBlank(password)) {
- CareMemberInfo careMemberInfo = new CareMemberInfo();
- careMemberInfo.setPhone(phone);
- careMemberInfo.setPassword(password);
- boolean flag = careMemberInfoService.save(careMemberInfo);
- if (flag) {
- return Result.success();
- }
- }
- return Result.error("绑定手机号码失败");
- }
- @ApiOperation(value = "新用户注册-获取验证码", notes = "新用户注册-获取验证码")
- @GetMapping("getVCode")
- @ApiImplicitParams(value = {
- @ApiImplicitParam(paramType = "query", name = "phone", value = "电话号码"),
- })
- public Result<String> getVCode(@RequestParam(value = "phone", required = true) String phone) {
- String vcode = String.format("%04d",new Random().nextInt(9999));
- boolean flag = smsSendService.sendSmsCode4RegisterPhone(phone, vcode);
- if (flag) {
- smsTimeoutCache.put(phone, vcode);
- return Result.success();
- } else {
- return Result.error("获取验证码失败");
- }
- }
- @ApiOperation(value = "小程序登出", notes = "小程序登出")
- @PostMapping("logout")
- public Result<Object> logout(@RequestHeader String token) {
- passportService.logout(token);
- return Result.success();
- }
- }
|