package com.mindskip.xzs.controller.wechat.student;
|
|
import com.mindskip.xzs.base.RestResponse;
|
import com.mindskip.xzs.configuration.property.SystemConfig;
|
import com.mindskip.xzs.controller.wechat.BaseWechatApiController;
|
import com.mindskip.xzs.domain.UserToken;
|
import com.mindskip.xzs.domain.enums.UserStatusEnum;
|
import com.mindskip.xzs.service.AuthenticationService;
|
import com.mindskip.xzs.service.UserService;
|
import com.mindskip.xzs.service.UserTokenService;
|
import com.mindskip.xzs.utility.WechatUtil;
|
import com.mindskip.xzs.viewmodel.wechat.student.user.BindInfo;
|
import com.mindskip.xzs.domain.User;
|
import lombok.AllArgsConstructor;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.validation.Valid;
|
import javax.validation.constraints.NotBlank;
|
|
|
/**
|
* @version 2.2.0
|
* @description: 身份验证
|
* Copyright (C), 2020-2021, 武汉思维跳跃科技有限公司
|
* @date 2021 /9/7 9:45
|
*/
|
@Controller("WechatStudentAuthController")
|
@RequestMapping(value = "/api/wx/student/auth")
|
@AllArgsConstructor
|
@ResponseBody
|
public class AuthController extends BaseWechatApiController {
|
|
private final SystemConfig systemConfig;
|
private final AuthenticationService authenticationService;
|
private final UserService userService;
|
private final UserTokenService userTokenService;
|
|
/**
|
* 用户绑定
|
*
|
* @param model the model
|
* @return the rest response
|
*/
|
@RequestMapping(value = "/bind", method = RequestMethod.POST)
|
public RestResponse bind(@Valid BindInfo model) {
|
User user = userService.getUserByUserName(model.getUserName());
|
if (user == null) {
|
return RestResponse.fail(2, "用户名或密码错误");
|
}
|
boolean result = authenticationService.authUser(user, model.getUserName(), model.getPassword());
|
if (!result) {
|
return RestResponse.fail(2, "用户名或密码错误");
|
}
|
UserStatusEnum userStatusEnum = UserStatusEnum.fromCode(user.getStatus());
|
if (UserStatusEnum.Disable == userStatusEnum) {
|
return RestResponse.fail(3, "用户被禁用");
|
}
|
String code = model.getCode();
|
String openid = WechatUtil.getOpenId(systemConfig.getWechat().getAppid(), systemConfig.getWechat().getSecret(), code);
|
if (null == openid) {
|
return RestResponse.fail(4, "获取微信OpenId失败");
|
}
|
user.setWxOpenId(openid);
|
UserToken userToken = userTokenService.bind(user);
|
return RestResponse.ok(userToken.getToken());
|
}
|
|
|
/**
|
* 检查是否绑定
|
*
|
* @param code the code
|
* @return the rest response
|
*/
|
@RequestMapping(value = "/checkBind", method = RequestMethod.POST)
|
public RestResponse checkBind(@Valid @NotBlank String code) {
|
String openid = WechatUtil.getOpenId(systemConfig.getWechat().getAppid(), systemConfig.getWechat().getSecret(), code);
|
if (null == openid) {
|
return RestResponse.fail(3, "获取微信OpenId失败");
|
}
|
UserToken userToken = userTokenService.checkBind(openid);
|
if (null != userToken) {
|
return RestResponse.ok(userToken.getToken());
|
}
|
return RestResponse.fail(2, "用户未绑定");
|
}
|
|
|
/**
|
* 解绑
|
*
|
* @return the rest response
|
*/
|
@RequestMapping(value = "/unBind", method = RequestMethod.POST)
|
public RestResponse unBind() {
|
UserToken userToken = getUserToken();
|
userTokenService.unBind(userToken);
|
return RestResponse.ok();
|
}
|
}
|