소스 검색

二期 管家小程序

suntianwu 3 년 전
부모
커밋
927c2abc56

+ 9 - 4
src/main/java/com/care/bms/controller/MemberInfoController.java

@@ -6,7 +6,9 @@ import com.care.common.annotation.Permission;
 import com.care.common.exception.BDException;
 import com.care.common.util.PageResult;
 import com.care.common.util.Result;
+import com.care.common.util.WebPageUtils;
 import com.care.common.vo.PageReqVO;
+import com.care.common.vo.UserLogindConvertVO;
 import com.care.common.vo.memberinfo.MemberInfoVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -16,6 +18,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**
@@ -40,11 +43,13 @@ public class MemberInfoController {
             @ApiImplicitParam(paramType = "query", name = "name", value = "用户名"),
             @ApiImplicitParam(paramType = "query", name = "phone", value = "电话"),
     })
-    public PageResult<List<MemberInfoVO>> listMemberInfo(@RequestHeader(value = "token") String token,
-                                               @RequestParam(value = "name", required = false) String name,
-                                               @RequestParam(value = "phone", required = false) String phone,
-                                               PageReqVO pageReqVo){
+    public PageResult<List<MemberInfoVO>> listMemberInfo(HttpServletRequest request, @RequestHeader(value = "token") String token,
+                                                         @RequestParam(value = "name", required = false) String name,
+                                                         @RequestParam(value = "phone", required = false) String phone,
+                                                         PageReqVO pageReqVo){
         try {
+            UserLogindConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+
             IPage<MemberInfoVO> pageResponse = this.bmsMemberInfoService.listCareMemberInfo(name,phone,pageReqVo);
             return PageResult.success(pageResponse.getRecords(),pageResponse.getCurrent(),pageResponse.getSize(),pageResponse.getTotal());
         }catch (BDException e) {

+ 3 - 7
src/main/java/com/care/client/controller/PassportController.java

@@ -6,6 +6,7 @@ import com.care.common.entity.CareMemberInfo;
 import com.care.common.service.CareMemberInfoService;
 import com.care.common.service.SmsSendService;
 import com.care.common.util.CheckUtils;
+import com.care.common.util.JwtUtils;
 import com.care.common.util.Result;
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
@@ -15,6 +16,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.Random;
 import java.util.concurrent.TimeUnit;
@@ -56,13 +58,7 @@ public class PassportController {
     @ApiOperation(value = "小程序登录", notes = "微信登录解密手机号")
     @PostMapping("decodePhoneNumber")
     public Result<Object> decodePhoneNumber(@RequestBody Map<String,String> body) {
-
-        if (passportService.decodePhoneNumber(body.get("code"),body.get("encryptedData"),body.get("iv"))){
-            return Result.success();
-        } else {
-            return Result.error("失败");
-        }
-
+        return passportService.decodePhoneNumber(body.get("code"),body.get("encryptedData"),body.get("iv"));
     }
 
     @ApiOperation(value = "新用户注册", notes = "新用户注册")

+ 1 - 1
src/main/java/com/care/client/service/AbstractPassportService.java

@@ -48,7 +48,7 @@ public class AbstractPassportService {
         } else if ("pwd".equalsIgnoreCase(params.getLoginType())) {
             member = careMemberInfoService.detailByPhone(params.getPhone());
             if (member == null) {
-                return Result.error("账号密码不匹配");
+                return Result.error("账号不存在");
             }
             if (!StrUtil.equalsIgnoreCase(SecureUtil.md5(params.getPassword()), member.getPassword())) {
                 return Result.error("账号密码不匹配");

+ 13 - 18
src/main/java/com/care/client/service/PassportService.java

@@ -40,20 +40,17 @@ public class PassportService extends AbstractPassportService {
 
         if ("wx".equalsIgnoreCase(params.getLoginType())) {
             CheckUtils.valueIsNull(params, "code");
-            Result<Object>  result = wxPassportService.login(params);
-            return result;
+            CareMemberInfo  careMemberInfo = wxPassportService.login(params);
+            if(careMemberInfo != null){
+                return cache(params);
+            } else {
+                return Result.success();
+            }
+
         } else if ("pwd".equalsIgnoreCase(params.getLoginType())) {
             CheckUtils.valueIsNull(params, "phone");
             CheckUtils.valueIsNull(params, "password");
-            CareMemberInfo careMemberInfo = careMemberInfoService.detailByPhone(params.getPhone());
-            if (careMemberInfo == null){
-                return  Result.error("手机号没注册");
-            }
-            if (!DigestUtils.md5Hex(params.getPassword()).equals(careMemberInfo.getPassword())) {
-                return  Result.error("密码错误");
-            }
-            cache(params);
-            return Result.success();
+            return cache(params);
         }
         return Result.error();
     }
@@ -81,7 +78,7 @@ public class PassportService extends AbstractPassportService {
          return careMemberInfoService.updateById(careMemberInfo);
      }
 
-     public Boolean decodePhoneNumber(String code, String encryptedData,String iv) {
+     public Result<Object> decodePhoneNumber(String code, String encryptedData,String iv) {
          MemberInitParams params = (MemberInitParams) redisUtil.hget(RedisKeyConstant.PINANBAO_WX_LOGIN_INFO, code);
          String sessionKey = params.getSessionKey();
          String openId = params.getOpenid();
@@ -92,7 +89,7 @@ public class PassportService extends AbstractPassportService {
 
          String phone = WxUtil.getPhoneNumber(encryptedData,sessionKey,iv);
         if (StringUtils.isEmpty(phone)) {
-            return false;
+            return  Result.error();
         }
          params.setPhone(phone);
          CareMemberInfo member = careMemberInfoService.detailByPhone(phone);
@@ -118,14 +115,12 @@ public class PassportService extends AbstractPassportService {
 
              boolean flag = careMemberInfoService.save(careMemberInfo);
              if (flag) {
-                 cache(params);
-                 return true;
+                 return cache(params);
              } else {
-                 return false;
+                 return Result.error();
              }
          } else { //已经注册了
-             cache(params);
-             return true;
+             return cache(params);
          }
      }
 }

+ 21 - 11
src/main/java/com/care/client/service/WxPassportService.java

@@ -7,8 +7,9 @@ import com.care.client.config.WxConfig;
 import com.care.client.vo.MemberInitParams;
 import com.care.common.cache.RedisKeyConstant;
 import com.care.common.cache.RedisUtil;
+import com.care.common.entity.CareMemberInfo;
+import com.care.common.service.CareMemberInfoService;
 import com.care.common.util.HttpUtil;
-import com.care.common.util.Result;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -24,9 +25,10 @@ public class WxPassportService extends AbstractPassportService {
 
     @Resource
     private PlatformPinanbaoConfig platformPinanbaoConfig;
+    @Resource
+    private CareMemberInfoService careMemberInfoService;
 
-
-    public Result<Object> login(MemberInitParams params) {
+    public CareMemberInfo login(MemberInitParams params) {
         WxConfig wxConfig = platformPinanbaoConfig.wxConfig();
         // 解析codeUrl
         String codeUrl = MessageFormat.format(wxConfig.getCodeUrl(), wxConfig.getAppId(), wxConfig.getSecret(), params.getCode());
@@ -35,15 +37,23 @@ public class WxPassportService extends AbstractPassportService {
         log.warn("-----jsonObject:[{}]", jsonObject);
 
         String openid = jsonObject.getStr("openid");
-        String sessionKey = jsonObject.getStr("session_key");
-        log.warn("-----openid:[{}], session_key:[{}]", openid, sessionKey);
+        //判断是否注册过了
+        CareMemberInfo careMemberInfo = careMemberInfoService.detailByOpenid(openid);
+        if(careMemberInfo != null) {
+            return careMemberInfo;
+        } else { //没有注册,走第二步
+            String sessionKey = jsonObject.getStr("session_key");
+            log.warn("-----openid:[{}], session_key:[{}]", openid, sessionKey);
+
+            MemberInitParams memberInitParams = new MemberInitParams();
+            memberInitParams.setLoginType("wx");
+            memberInitParams.setOpenid(openid);
+            memberInitParams.setSessionKey(sessionKey);
+            redisUtil.hset(RedisKeyConstant.PINANBAO_WX_LOGIN_INFO, params.getCode(), memberInitParams, RedisKeyConstant.PINANBAO_WX_LOGIN_INFO_TIME);
+            return null;
+        }
+
 
-        MemberInitParams memberInitParams = new MemberInitParams();
-        memberInitParams.setLoginType("wx");
-        memberInitParams.setOpenid(openid);
-        memberInitParams.setSessionKey(sessionKey);
-        redisUtil.hset(RedisKeyConstant.PINANBAO_WX_LOGIN_INFO, params.getCode(), memberInitParams, RedisKeyConstant.PINANBAO_WX_LOGIN_INFO_TIME);
-        return Result.success();
     }
 
 

+ 2 - 6
src/main/java/com/care/keeper/controller/KeeperPassportController.java

@@ -37,6 +37,7 @@ public class KeeperPassportController {
     @ApiParam(name = "params", value = "登录参数")
     @PostMapping("login")
     public Result<Object> login(@RequestBody KeeperInitParams params) {
+        CheckUtils.valueIsNull(params, "loginType");
 
         if ("wx".equalsIgnoreCase(params.getLoginType())) {
             CheckUtils.valueIsNull(params, "code");
@@ -55,12 +56,7 @@ public class KeeperPassportController {
     @ApiOperation(value = "管家小程序登录", notes = "微信登录解密手机号 --二期新增")
     @PostMapping("decodePhoneNumber")
     public Result<Object> decodePhoneNumber(@RequestBody Map<String,String> body) {
-        if (keeperPassportService.decodePhoneNumber(body.get("code"),body.get("encryptedData"),body.get("iv"))){
-            return Result.success();
-        } else {
-            return Result.error("失败");
-        }
-
+        return keeperPassportService.decodePhoneNumber(body.get("code"),body.get("encryptedData"),body.get("iv"));
     }
     @ApiOperation(value = " 获取验证码", notes = "获取验证码 --二期新增")
     @GetMapping("getVCode")

+ 11 - 16
src/main/java/com/care/keeper/service/KeeperPassportService.java

@@ -32,20 +32,16 @@ public class KeeperPassportService extends AbstractKeeperPassportService{
 
         if ("wx".equalsIgnoreCase(params.getLoginType())) {
             CheckUtils.valueIsNull(params, "code");
-            Result<Object>  result = wxKeeperPassportService.login(params);
-            return result;
+            CareSysUser careSysUser = wxKeeperPassportService.login(params);
+            if(careSysUser != null){
+                return cache(params);
+            } else {
+                return Result.success();
+            }
         } else if ("pwd".equalsIgnoreCase(params.getLoginType())) {
             CheckUtils.valueIsNull(params, "phone");
             CheckUtils.valueIsNull(params, "password");
-            CareSysUser careSysUser = careSysUserService.detailByPhone4Keeper(params.getPhone());
-            if (careSysUser == null){
-                return  Result.error("手机号没注册");
-            }
-            if (!DigestUtils.md5Hex(params.getPassword()).equals(careSysUser.getPassword())) {
-                return  Result.error("密码错误");
-            }
-            cache(params);
-            return Result.success();
+            return cache(params);
         }
         return Result.error();
 
@@ -74,21 +70,20 @@ public class KeeperPassportService extends AbstractKeeperPassportService{
          return careSysUserService.updateById(careSysUser);
      }
 
-     public Boolean decodePhoneNumber(String code, String encryptedData,String iv) {
+     public Result<Object> decodePhoneNumber(String code, String encryptedData,String iv) {
          KeeperInitParams params = (KeeperInitParams) redisUtil.hget(RedisKeyConstant.PINANSHOUHU_WX_LOGIN_INFO, code);
          String sessionKey = params.getSessionKey();
 
          String phone = WxUtil.getPhoneNumber(encryptedData,sessionKey,iv);
         if (StringUtils.isEmpty(phone)) {
-            return false;
+            return  Result.error();
         }
          params.setPhone(phone);
          CareSysUser careSysUser = careSysUserService.detailByPhone4Keeper(phone);
          if (careSysUser == null) { //没注册
-             return false;
+             return  Result.error();
          } else { //已经注册了
-             cache(params);
-             return true;
+             return cache(params);
          }
      }
 }

+ 18 - 12
src/main/java/com/care/keeper/service/WxKeeperPassportService.java

@@ -4,12 +4,12 @@ package com.care.keeper.service;
 import cn.hutool.json.JSONObject;
 import com.care.common.cache.RedisKeyConstant;
 import com.care.common.cache.RedisUtil;
+import com.care.common.entity.CareSysUser;
+import com.care.common.service.CareSysUserService;
 import com.care.common.util.HttpUtil;
-import com.care.common.util.Result;
 import com.care.keeper.config.KeeperWxConfig;
 import com.care.keeper.config.PlatformPinanshouhuConfig;
 import com.care.keeper.vo.KeeperInitParams;
-import com.google.gson.Gson;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -25,10 +25,11 @@ public class WxKeeperPassportService extends AbstractKeeperPassportService {
 
     @Resource
     private PlatformPinanshouhuConfig platformPinanshouhuConfig;
+    @Resource
+    private CareSysUserService careSysUserService;
 
-    Gson gson = new Gson();
 
-    public Result<Object> login(KeeperInitParams params) {
+    public CareSysUser login(KeeperInitParams params) {
         KeeperWxConfig wxConfig = platformPinanshouhuConfig.keeperWxConfig();
         // 解析codeUrl
         String codeUrl = MessageFormat.format(wxConfig.getCodeUrl(), wxConfig.getAppId(), wxConfig.getSecret(), params.getCode());
@@ -37,15 +38,20 @@ public class WxKeeperPassportService extends AbstractKeeperPassportService {
         log.warn("-----jsonObject:[{}]", jsonObject);
 
         String openid = jsonObject.getStr("openid");
-        String sessionKey = jsonObject.getStr("session_key");
-        log.warn("-----openid:[{}], session_key:[{}]", openid, sessionKey);
+        CareSysUser careSysUser = careSysUserService.detailByOpenid4Keeper(openid);
+        if(careSysUser != null) {
+            return careSysUser;
+        } else { //没有注册,走第二步
+            String sessionKey = jsonObject.getStr("session_key");
+            log.warn("-----openid:[{}], session_key:[{}]", openid, sessionKey);
 
-        KeeperInitParams keeperInitParams = new KeeperInitParams();
-        keeperInitParams.setLoginType("wx");
-        keeperInitParams.setOpenid(openid);
-        keeperInitParams.setSessionKey(sessionKey);
-        redisUtil.hset(RedisKeyConstant.PINANSHOUHU_WX_LOGIN_INFO, params.getCode(), keeperInitParams, RedisKeyConstant.PINANSHOUHU_WX_LOGIN_INFO_TIME);
-        return Result.success();
+            KeeperInitParams keeperInitParams = new KeeperInitParams();
+            keeperInitParams.setLoginType("wx");
+            keeperInitParams.setOpenid(openid);
+            keeperInitParams.setSessionKey(sessionKey);
+            redisUtil.hset(RedisKeyConstant.PINANSHOUHU_WX_LOGIN_INFO, params.getCode(), keeperInitParams, RedisKeyConstant.PINANSHOUHU_WX_LOGIN_INFO_TIME);
+            return null;
+        }
     }