diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/AuthCardController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/AuthCardController.java index d60c92769..058d9c5df 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/AuthCardController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/AuthCardController.java @@ -3,10 +3,14 @@ package com.jsowell.api.uniapp; import com.alibaba.fastjson2.JSONObject; import com.jsowell.common.annotation.Anonymous; import com.jsowell.common.core.controller.BaseController; +import com.jsowell.common.enums.ykc.ReturnCodeEnum; +import com.jsowell.common.exception.BusinessException; import com.jsowell.common.response.RestApiResponse; +import com.jsowell.pile.dto.MemberRegisterAndLoginDTO; import com.jsowell.pile.dto.PileAuthCardDTO; import com.jsowell.pile.service.IPileAuthCardService; import com.jsowell.pile.vo.uniapp.AuthCardVO; +import com.jsowell.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -27,8 +31,12 @@ public class AuthCardController extends BaseController { @Autowired private IPileAuthCardService pileAuthCardService; + @Autowired + private MemberService memberService; + /** * 查询鉴权卡列表 + * http://localhost:8080/uniapp/authCard/getAuthCardList * @param request * @return */ @@ -51,23 +59,37 @@ public class AuthCardController extends BaseController { /** * 用户绑定鉴权卡 + * http://localhost:8080/uniapp/authCard/bindAuthCard * @param dto * @return */ @PostMapping("/bindAuthCard") public RestApiResponse bindAuthCard(HttpServletRequest request, @RequestBody PileAuthCardDTO dto) { logger.info("用户绑定鉴权卡 params: {}", JSONObject.toJSONString(dto)); + RestApiResponse response = null; try { String memberId = getMemberIdByAuthorization(request); - if (memberId != null) { - dto.setMemberId(memberId); - + if (memberId == null) { + throw new BusinessException(ReturnCodeEnum.CODE_AUTHENTICATION_ERROR); } - + dto.setMemberId(memberId); + // 校验短信验证码 + MemberRegisterAndLoginDTO registerAndLoginDTO = MemberRegisterAndLoginDTO.builder() + .mobileNumber(dto.getPhoneNumber()) + .verificationCode(dto.getVerificationCode()) + .build(); + memberService.checkVerificationCode(registerAndLoginDTO); + int i = pileAuthCardService.bindAuthCard(dto); + response = new RestApiResponse<>(i); + }catch (BusinessException e){ + logger.warn("用户绑定鉴权卡 warn:", e); + response = new RestApiResponse<>(e.getCode(), e.getMessage()); } catch (Exception e) { - + logger.error("用户绑定鉴权卡 error", e); + response = new RestApiResponse<>(e); } - return null; + logger.info("用户绑定鉴权卡 result:{}", response); + return response; } } diff --git a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java index 3e85e594d..c85748955 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java +++ b/jsowell-common/src/main/java/com/jsowell/common/enums/ykc/ReturnCodeEnum.java @@ -142,6 +142,7 @@ public enum ReturnCodeEnum { CODE_SECRET_KEY_NOT_SAME("00600004", "密钥错误,请检查!"), + CODE_THIS_CARD_STATUS_ANOMALY("00600005", "卡状态异常!"), ; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileAuthCardDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileAuthCardDTO.java index 629c20872..7895c040b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileAuthCardDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PileAuthCardDTO.java @@ -18,9 +18,11 @@ public class PileAuthCardDTO { private String status; + private String secretKey; + private String memberId; private String phoneNumber; - private String VerificationCode; + private String verificationCode; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IPileAuthCardService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IPileAuthCardService.java index 600ac36c0..9baab70fb 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IPileAuthCardService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IPileAuthCardService.java @@ -119,4 +119,10 @@ public interface IPileAuthCardService { * @return */ List getAuthCardListByMemberId(String memberId); + + /** + * 用户绑定鉴权卡 (小程序用) + * @param dto + */ + int bindAuthCard(PileAuthCardDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileAuthCardServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileAuthCardServiceImpl.java index 93b231e8d..69fd6af88 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileAuthCardServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileAuthCardServiceImpl.java @@ -7,7 +7,9 @@ import java.util.Locale; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; +import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.MemberBasicInfo; +import com.jsowell.pile.dto.MemberRegisterAndLoginDTO; import com.jsowell.pile.dto.PileAuthCardDTO; import com.jsowell.pile.service.IMemberBasicInfoService; import com.jsowell.pile.vo.uniapp.AuthCardVO; @@ -217,4 +219,31 @@ public class PileAuthCardServiceImpl implements IPileAuthCardService { } return list; } + + /** + * 用户绑定鉴权卡 + * @param dto + */ + @Override + public int bindAuthCard(PileAuthCardDTO dto) { + String phoneNumber = dto.getPhoneNumber(); + // 判断此用户是否已注册小程序账号 + MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMobileNumber(phoneNumber); + if (memberBasicInfo == null) { + throw new BusinessException(ReturnCodeEnum.CODE_USER_IS_NOT_REGISTER); + } + // 判断此卡是否已被绑定 + PileAuthCard pileAuthCard = selectCardInfoByLogicCard(dto.getLogicCard()); + if (!StringUtils.equals(pileAuthCard.getStatus(), "0")) { // 0-待激活 + throw new BusinessException(ReturnCodeEnum.CODE_THIS_CARD_STATUS_ANOMALY); + } + // 验证密钥 + if (!StringUtils.equals(dto.getSecretKey(), pileAuthCard.getSecretKey())) { + throw new BusinessException(ReturnCodeEnum.CODE_SECRET_KEY_NOT_SAME); + } + // 绑定操作 + pileAuthCard.setMemberId(dto.getMemberId()); + pileAuthCard.setStatus("1"); + return updatePileAuthCard(pileAuthCard); + } }