From b28c6e0bc48cd4d016f0040e63440261369c4c0b Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期五, 15 十月 2021 15:10:31 +0800
Subject: [PATCH] 爱心仓库修改
---
springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/LoginApi.java | 219 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 219 insertions(+), 0 deletions(-)
diff --git a/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/LoginApi.java b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/LoginApi.java
new file mode 100644
index 0000000..67f8aa2
--- /dev/null
+++ b/springcloud_k8s_panzhihuazhihuishequ/applets/src/main/java/com/panzhihua/applets/api/LoginApi.java
@@ -0,0 +1,219 @@
+package com.panzhihua.applets.api;
+
+import javax.annotation.Resource;
+
+import org.springframework.util.ObjectUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import com.alibaba.fastjson.JSONObject;
+import com.panzhihua.applets.config.WxMaConfiguration;
+import com.panzhihua.applets.model.vos.LoginRequest;
+import com.panzhihua.common.controller.BaseController;
+import com.panzhihua.common.exceptions.UnAuthenticationException;
+import com.panzhihua.common.model.vos.LoginReturnVO;
+import com.panzhihua.common.model.vos.LoginUserInfoVO;
+import com.panzhihua.common.model.vos.R;
+import com.panzhihua.common.model.vos.community.ComActVO;
+import com.panzhihua.common.model.vos.community.ComMngStructAreaVO;
+import com.panzhihua.common.model.vos.user.SysUserAgreementVO;
+import com.panzhihua.common.service.auth.TokenService;
+import com.panzhihua.common.service.community.CommunityService;
+import com.panzhihua.common.service.user.UserService;
+import com.panzhihua.common.validated.PutGroup;
+
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
+import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
+import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @program: springcloud_k8s_panzhihuazhihuishequ
+ * @description: 登录
+ * @author: huang.hongfa weixin hhf9596 qq 959656820
+ * @create: 2020-11-19 16:35
+ **/
+@Slf4j
+@Api(tags = {"登录模块"})
+@RestController("/")
+public class LoginApi extends BaseController {
+ @Resource
+ private UserService userService;
+ @Resource
+ private WxMaConfiguration wxMaConfiguration;
+ @Resource
+ private TokenService tokenService;
+ @Resource
+ private CommunityService communityService;
+
+ @ApiOperation(value = "登录", response = LoginReturnVO.class)
+ @PostMapping("login")
+ public R login(@RequestBody LoginRequest loginRequest) {
+ String code = loginRequest.getCode();
+ if (ObjectUtils.isEmpty(code)) {
+ return R.fail("缺少登录参数");
+ }
+ log.info(code);
+ WxMaService maService = wxMaConfiguration.getMaService();
+ WxMaJscode2SessionResult sessionInfo = null;
+ try {
+ sessionInfo = maService.getUserService().getSessionInfo(code);
+ } catch (Exception e) {
+ log.error("微信登录失败【{}】", e.getMessage());
+ if (code.equals("22")) {
+ sessionInfo = new WxMaJscode2SessionResult();
+ sessionInfo.setOpenid("88888888");
+ sessionInfo.setSessionKey("9999999");
+ } else {
+ return R.fail("微信登录失败");
+ }
+ }
+ log.info("微信登录成功【{}】", JSONObject.toJSONString(sessionInfo));
+ String openid = sessionInfo.getOpenid();
+ String sessionKey = sessionInfo.getSessionKey();
+ String unionid = sessionInfo.getUnionid();
+ if (ObjectUtils.isEmpty(unionid)) {
+ unionid = "无";
+ }
+ userService.addOrUpdate(openid, sessionKey, unionid);
+ return tokenService.loginApplets(openid);
+ }
+
+ @ApiOperation(value = "维护用户基本信息(昵称、性别、头像)")
+ @PostMapping("updateUserWeiXinInfo")
+ public R updateUserWeiXinInfo(@RequestBody LoginRequest loginRequest) {
+ Long userId = this.getUserId();
+ if (userId == null) {
+ return R.fail(401, "请先登录");
+ }
+ boolean empty2 = ObjectUtils.isEmpty(userId);
+ if (empty2) {
+ throw new UnAuthenticationException();
+ }
+ WxMaUserInfo wxUserInfo = loginRequest.getUserInfo();
+ if (null == wxUserInfo) {
+ return R.fail("缺少基本信息参数");
+ }
+ String avatarUrl = wxUserInfo.getAvatarUrl();
+ String gender = wxUserInfo.getGender();
+ String nickName = wxUserInfo.getNickName();
+ return userService.updateUserWeiXinInfo(userId, nickName, Integer.parseInt(gender), avatarUrl);
+ }
+
+ @ApiOperation(value = "维护微信用户手机号")
+ @PostMapping("updateUserWeiXinPhone")
+ public R updateUserWeiXinPhone(@RequestBody LoginRequest loginRequest) {
+ String encryptedData = loginRequest.getEncryptedData();
+ String iv = loginRequest.getIv();
+ boolean empty = ObjectUtils.isEmpty(iv);
+ boolean empty1 = ObjectUtils.isEmpty(encryptedData);
+ if (empty || empty1) {
+ return R.fail("微信用户参数不全");
+ }
+ WxMaService maService = wxMaConfiguration.getMaService();
+ Long userId = this.getUserId();
+ R<LoginUserInfoVO> r = userService.getUserInfoByUserId(userId + "");
+ LoginUserInfoVO loginUserInfoVO = r.getData();
+ WxMaPhoneNumberInfo wxMaPhoneNumberInfo =
+ maService.getUserService().getPhoneNoInfo(loginUserInfoVO.getSessionKey(), encryptedData, iv);
+ if (ObjectUtils.isEmpty(wxMaPhoneNumberInfo) || ObjectUtils.isEmpty(wxMaPhoneNumberInfo.getPhoneNumber())) {
+ return R.fail("微信解析手机号失败");
+ }
+ String purePhoneNumber = wxMaPhoneNumberInfo.getPurePhoneNumber();
+ return userService.updateUserWeiXinPhone(userId, purePhoneNumber);
+ }
+
+ @ApiOperation(value = "维护微信用户手机号")
+ @PostMapping("updateUserWeiXinPhone2")
+ public R updateUserWeiXinPhone2(@RequestBody LoginRequest loginRequest) {
+ String code = loginRequest.getCode();
+ if (ObjectUtils.isEmpty(code)) {
+ return R.fail("缺少登录参数");
+ }
+ log.info(code);
+ WxMaService maService = wxMaConfiguration.getMaService();
+ WxMaJscode2SessionResult sessionInfo = null;
+ try {
+ sessionInfo = maService.getUserService().getSessionInfo(code);
+ } catch (Exception e) {
+ log.error("微信登录失败【{}】", e.getMessage());
+ if (code.equals("22")) {
+ sessionInfo = new WxMaJscode2SessionResult();
+ sessionInfo.setOpenid("88888888");
+ sessionInfo.setSessionKey("9999999");
+ } else {
+ return R.fail("微信登录失败");
+ }
+ }
+ log.info("微信登录成功【{}】", JSONObject.toJSONString(sessionInfo));
+
+ String encryptedData = loginRequest.getEncryptedData();
+ String iv = loginRequest.getIv();
+ boolean empty = ObjectUtils.isEmpty(iv);
+ boolean empty1 = ObjectUtils.isEmpty(encryptedData);
+ if (empty || empty1) {
+ return R.fail("微信用户参数不全");
+ }
+ // WxMaService maService = wxMaConfiguration.getMaService();
+ Long userId = this.getUserId();
+ // R<LoginUserInfoVO> r = userService.getUserInfoByUserId(userId + "");
+ // LoginUserInfoVO loginUserInfoVO = r.getData();
+ WxMaPhoneNumberInfo wxMaPhoneNumberInfo =
+ maService.getUserService().getPhoneNoInfo(sessionInfo.getSessionKey(), encryptedData, iv);
+ if (ObjectUtils.isEmpty(wxMaPhoneNumberInfo) || ObjectUtils.isEmpty(wxMaPhoneNumberInfo.getPhoneNumber())) {
+ return R.fail("微信解析手机号失败");
+ }
+ String purePhoneNumber = wxMaPhoneNumberInfo.getPurePhoneNumber();
+ return userService.updateUserWeiXinPhone(userId, purePhoneNumber);
+ }
+
+ @ApiOperation(value = "用户登出")
+ @PostMapping("logout")
+ public R updateUserWeiXinPhone() {
+ String token = this.getToken();
+ boolean empty2 = ObjectUtils.isEmpty(token);
+ if (empty2) {
+ return R.ok();
+ }
+ return tokenService.logout(token);
+ }
+
+ @ApiOperation(value = "刷新token", response = LoginReturnVO.class)
+ @GetMapping("refreshToken")
+ @ApiImplicitParam(name = "refreshToken", value = "登录返回的刷新token")
+ public R refreshToken(@RequestParam("refreshToken") String refreshToken) {
+ return tokenService.refreshToken(refreshToken);
+ }
+
+ @ApiOperation(value = "查询社区")
+ @PostMapping("listcommunity")
+ public R listCommunity(@RequestBody ComActVO comActVO) {
+ return communityService.listCommunity(comActVO);
+ }
+
+ @ApiOperation(value = "查询小区", response = ComMngStructAreaVO.class)
+ @GetMapping("listarea")
+ @ApiImplicitParam(name = "communityId", value = "社区id", required = true)
+ public R listArea(@RequestParam("communityId") Long communityId) {
+ return communityService.listArea(communityId);
+ }
+
+ @ApiOperation(value = "用户绑定社区、小区")
+ @PutMapping("putusercommunityarea")
+ public R putUserCommunityArea(@RequestBody @Validated(PutGroup.class) LoginUserInfoVO loginUserInfoVO) {
+ Long userId = this.getUserId();
+ loginUserInfoVO.setUserId(userId);
+ return userService.putUserCommunityArea(loginUserInfoVO);
+ }
+
+ @ApiOperation(value = "用户协议和隐私政策", response = SysUserAgreementVO.class)
+ @GetMapping("useragreement")
+ public R userAgreement() {
+ int type = 1;
+ return userService.userAgreement(type);
+ }
+}
--
Gitblit v1.7.1