zhuyifan

feat(login): 添加账号禁用异常处理和踢人下线功能

......@@ -2,6 +2,7 @@ package com.infoloop.tianting.controller;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.infoloop.tianting.mealorderservice.SingleMpAccountRpcResponse;
import com.infoloop.tianting.model.dto.MpAccountDTO;
......@@ -61,4 +62,12 @@ public class LoginController {
@RequestBody @Valid MpAccountDTO.ModifyMpAccountDTO modifyMpAccountDTO) {
loginService.updateMpAccount(mpAccount, modifyMpAccountDTO);
}
@SaIgnore
@ApiOperation(value = "踢人下线")
@PostMapping("/kickout")
@ResponseStatus(HttpStatus.OK)
public void kickout(@Valid @RequestBody PermissionDTO.KickOutDTO kickOutDTO) {
StpUtil.kickout(kickOutDTO.getId());
}
}
......
......@@ -62,7 +62,9 @@ public enum ErrorCodeEnum implements BaseEnum {
MEAL_ORDER_TIME_NOT_IN_RANGE(406000022, "当前时间不在选餐时间内"),
DINER_NAME_STUDENT_NO_NOT_MISMATCH(406000023, "该就餐人学号和名称不匹配")
DINER_NAME_STUDENT_NO_NOT_MISMATCH(406000023, "该就餐人学号和名称不匹配"),
MP_ACCOUNT_ALREADY_DISABLED(406000024, "账号已禁用"),
;
......
......@@ -40,4 +40,13 @@ public class PermissionDTO {
private Integer enterpriseId = 0;
}
@Data
@Builder
@ApiModel(description = "kickOut DTO")
public static class KickOutDTO {
private String id;
}
}
......
......@@ -64,6 +64,9 @@ public class LoginServiceImpl implements LoginService {
.setPhoneNumber(loginDto.getOperatorPhone() != null ? loginDto.getOperatorPhone() : "")
.build()).getId();
} else {
if (mpAccountByOpenId.getStatus() != MpAccountStatusEnum.MP_ACCOUNT_STATUS_ENABLE) {
throw ClientEndExceptions.IncorrectRequestValue.build(ErrorCodeEnum.MP_ACCOUNT_ALREADY_DISABLED);
}
mpAccountId = mpAccountByOpenId.getId();
}
Assert.isTrue(mpAccountId != 0, "创建小程序账号失败");
......