From 5b275c38c82bd54496dc2b2d268cde1ec9ec2b29 Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期日, 29 十二月 2024 14:58:23 +0800 Subject: [PATCH] 1.行政区划:(高德、腾讯)相关修改 --- src/main/java/com/mzl/flower/web/login/CustomerLoginController.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 53 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java b/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java index 1f5b9a9..f0b1510 100644 --- a/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java +++ b/src/main/java/com/mzl/flower/web/login/CustomerLoginController.java @@ -14,7 +14,12 @@ import com.mzl.flower.constant.Constants; import com.mzl.flower.dto.request.CreateWechatUserDTO; import com.mzl.flower.dto.request.UserLoginDTO; +import com.mzl.flower.dto.response.customer.CustomerDTO; +import com.mzl.flower.dto.response.wx.WxUserVO; import com.mzl.flower.entity.system.User; +import com.mzl.flower.mapper.customer.CustomerMapper; +import com.mzl.flower.service.customer.CustomerService; +import com.mzl.flower.service.impl.WechatUserDetailsService; import com.mzl.flower.service.login.LoginService; import com.mzl.flower.service.system.UserService; import com.mzl.flower.service.system.WeChatService; @@ -33,10 +38,12 @@ import org.springframework.security.oauth2.common.OAuth2RefreshToken; import org.springframework.security.oauth2.provider.token.TokenStore; import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.validation.constraints.NotBlank; +import java.util.Map; @Slf4j @RestController @@ -61,6 +68,9 @@ @Autowired private UserService userService; + @Autowired + private CustomerMapper customerMapper; + @Autowired private TokenStore tokenStore; @@ -68,6 +78,7 @@ public static final String TOKEN_KEY = "TOKEN-KEY"; public static final String SEPARATOR = ":"; + @PostMapping("/login/wechat") @ApiOperation(value = "微信小程序登录", notes = "微信小程序登录") @@ -77,6 +88,17 @@ String openId = session.getOpenid(); String sessionKey = session.getSessionKey(); String unionId = session.getUnionid(); + // 判断当前用户账号是否存在 + dto.setOpenId(openId); + dto.setSessionKey(sessionKey); + dto.setUnionId(unionId); + dto.setUserType(Constants.USER_TYPE.customer.name()); + + User existUserByOpenId = userService.getExistUserByOpenId(openId, sessionKey, unionId, Constants.USER_TYPE.customer.name()); + if(ObjectUtils.isEmpty(existUserByOpenId)){ + userService.registWxUser(dto); + } + User user = userService.findUserByOpenId(openId, sessionKey, unionId , dto.getImgUrl(), dto.getNickname(),Constants.USER_TYPE.customer.name()); String tokenCache = stringCacheClient.get(TOKEN_KEY + SEPARATOR + user.getId()); @@ -99,6 +121,23 @@ log.error(e.getMessage(), e); throw new BaseException(R.RUNTIME_EXCEPTION.getCode(), "登录错误"); } + } + + @PostMapping("/wx/getuserphonenumber") + @ApiOperation(value = "获取当前授权的手机号") + public ResponseEntity<ReturnDataDTO> getuserphonenumber(@RequestBody CreateWechatUserDTO dto) throws Exception{ + return returnData(R.SUCCESS.getCode(), weChatService.getuserphonenumber(dto)); + } + + @PostMapping("/wx/getExistUserByOpenId") + @ApiOperation(value = "查看当前微信号是否已经绑定了用户") + public ResponseEntity<ReturnDataDTO> getExistUserByOpenId(@RequestBody CreateWechatUserDTO dto) throws Exception{ + WxMaJscode2SessionResult session = weChatService.getWxMaSessionInfo(dto.getCode()); + String openId = session.getOpenid(); + String sessionKey = session.getSessionKey(); + String unionId = session.getUnionid(); + User user=userService.getExistUserByOpenId(openId, sessionKey, unionId,dto.getUserType()); + return returnData(R.SUCCESS.getCode(), new WxUserVO(openId,sessionKey,unionId,user)); } @GetMapping("/wx/jscode2session") @@ -124,6 +163,13 @@ User user = userService.findByTel(username, Constants.USER_TYPE.customer.name()); if(user == null){ throw new ValidationException("用户不存在"); + } + CustomerDTO currentCustomer = customerMapper.getCurrentCustomer(user.getId()); + if (ObjectUtils.isEmpty(currentCustomer)) { + throw new ValidationException("用户不存在"); + } + if (currentCustomer.getIsEnabled() == false) { + throw new ValidationException("用户已禁用,请联系管理员"); } String tokenCache = stringCacheClient.get(TOKEN_KEY + SEPARATOR + user.getId()); if (StringUtils.isNotBlank(tokenCache)) { @@ -171,6 +217,13 @@ if(user == null){ throw new ValidationException("用户不存在"); } + CustomerDTO currentCustomer = customerMapper.getCurrentCustomer(user.getId()); + if (ObjectUtils.isEmpty(currentCustomer)) { + throw new ValidationException("用户不存在"); + } + if (currentCustomer.getIsEnabled() == false) { + throw new ValidationException("用户已禁用,请联系管理员"); + } String tokenCache = stringCacheClient.get(TOKEN_KEY + SEPARATOR + user.getId()); if (StringUtils.isNotBlank(tokenCache)) { //强制删除token,下线 -- Gitblit v1.9.3