From f4cb8f3c5aa240e136561f0a53e92ee3b075c350 Mon Sep 17 00:00:00 2001 From: yk Date: Wed, 3 Jan 2024 17:40:21 +0800 Subject: [PATCH 01/33] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4=EF=BC=8C=E5=AE=8C?= =?UTF-8?q?=E6=88=90Login=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=8A=A0=E5=AF=86?= =?UTF-8?q?=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/tenant/feign/RemoteTenantService.java | 4 ++ .../factory/RemoteTenantFallbackFactory.java | 5 +++ .../common/core/utils/core/CryptoUtil.java | 42 +++++++++++++++++++ .../staff/graphql/VisitorGraphQLQuery.java | 28 ++++++++++++- .../wechat/controller/WeChatController.java | 35 +++++++++------- .../domain/bean/WeChatSessionResponse.java | 6 +-- .../system/wechat/service/WeChatService.java | 16 +++++-- 7 files changed, 111 insertions(+), 25 deletions(-) create mode 100644 xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/core/CryptoUtil.java diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java index 98de7ff4..7ba3a12e 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java @@ -45,4 +45,8 @@ public interface RemoteTenantService { @GetMapping("/tenant/staff") R existStaff(@RequestParam ("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @PostMapping("/tenant/staff") + R saveEnterpriseStaff(@RequestBody SysEnterpriseStaff staff, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + } \ No newline at end of file diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java index 38b3d0e1..7d65e2ee 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java @@ -47,6 +47,11 @@ public class RemoteTenantFallbackFactory implements FallbackFactory existStaff(String phone, String source) { return R.fail("验证用户手机号失败:" + throwable.getMessage()); } + + @Override + public R saveEnterpriseStaff(SysEnterpriseStaff staff, String source) { + return null; + } }; } } \ No newline at end of file diff --git a/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/core/CryptoUtil.java b/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/core/CryptoUtil.java new file mode 100644 index 00000000..3bafcca5 --- /dev/null +++ b/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/core/CryptoUtil.java @@ -0,0 +1,42 @@ +package com.xueyi.common.core.utils.core; + +import javax.crypto.Cipher; +import javax.crypto.spec.SecretKeySpec; +import java.security.Key; +import java.util.Base64; + +/** + * @author yk + * @description + * @date 2024-01-03 18:48 + */ +public class CryptoUtil { + public static final String DEFAULT_KEY = "7uw823wuyeuwiyeehbsuuwgwvsyyeuii"; + + public static String encrypt(String data) throws Exception{ + Key k = new SecretKeySpec(DEFAULT_KEY.getBytes(), "AES"); + + // 创建 Cipher 对象 + Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); + + // 初始化 Cipher 对象 + cipher.init(Cipher.ENCRYPT_MODE, k); + + // 加密数据 + byte[] ciphertext = cipher.doFinal(data.getBytes()); + + // 输出密文 + return Base64.getEncoder().encodeToString(ciphertext); + } + + + public static String decrypt(String encryptedData) throws Exception { + byte[] encryptedDataBytes = Base64.getDecoder().decode(encryptedData); + Key k = new SecretKeySpec(DEFAULT_KEY.getBytes(), "AES"); + Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); + cipher.init(Cipher.DECRYPT_MODE, k); + byte[] decryptedBytes = cipher.doFinal(encryptedDataBytes); + //base64加密 + return new String(decryptedBytes); + } +} diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java index 37875017..430243d2 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/graphql/VisitorGraphQLQuery.java @@ -1,13 +1,37 @@ +/* package com.xueyi.system.staff.graphql; +import com.coxautodev.graphql.tools.GraphQLQueryResolver; +import com.xueyi.system.api.digitalmans.domain.po.DmVisitorsPo; +import com.xueyi.system.staff.domain.model.DmVisitorsConverter; +import com.xueyi.system.staff.mapper.DmVisitorsMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.stream.Collectors; + +*/ /** * @author yk * @description * @date 2023-12-25 19:55 - */ + *//* + @Service -public class VisitorGraphQLQuery { +class VisitorGraphQLQueryResolver implements GraphQLQueryResolver { + @Autowired + private DmVisitorsMapper mapper; + + @Autowired + private DmVisitorsConverter converter; + + public DmVisitorsPo findOneVisitor(Long id){ + return mapper.selectById(id); + } + public List getVisitorList(){ + return mapper.selectList(null).stream().map(t->converter.mapperDto(t)).collect(Collectors.toList()); + } } +*/ diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeChatController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeChatController.java index 214fd1ec..81214f39 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeChatController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeChatController.java @@ -1,8 +1,10 @@ package com.xueyi.system.wechat.controller; +import com.baomidou.dynamic.datasource.toolkit.CryptoUtils; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.xueyi.common.core.constant.basic.SecurityConstants; +import com.xueyi.common.core.utils.core.CryptoUtil; import com.xueyi.common.core.utils.core.ObjectUtil; import com.xueyi.common.core.web.result.AjaxResult; import com.xueyi.common.core.web.result.R; @@ -22,10 +24,12 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; import java.util.Map; /** @@ -51,35 +55,34 @@ public class WeChatController { - @GetMapping("/login") - public AjaxResult login(@RequestParam String code, HttpServletResponse response) { + @RequestMapping(value = "/login", method = {RequestMethod.GET}) + public AjaxResult login(@RequestParam("code") String code, HttpServletResponse response) { // 根据code获取微信用户信息 WeChatSessionResponse weChatUserInfo = null; try { weChatUserInfo = weChatService.getUserInfo(code); } catch (Exception e) { + e.printStackTrace(); response.setStatus(500); - return AjaxResult.error("微信服务器请求失败"); + return AjaxResult.error("微信服务器请求openid失败"); } log.info("微信login返回信息:{}", weChatUserInfo); R staff = tenantService.existStaff(weChatUserInfo.getOpenid(), SecurityConstants.INNER); - if (staff.getData() == null) { - response.setStatus(500); - return AjaxResult.error("对应用户不存在", weChatUserInfo); - } else { - R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(staff.getData().getPhone(), SecurityConstants.INNER); - - log.info("根据手机号获取用户信息返回信息:{}", loginInfoResult.getData().getEnterpriseName()); - if (ObjectUtil.isNull(loginInfoResult.getData())) { - response.setStatus(500); - return AjaxResult.error("手机号可能错误,请查证后重试!", weChatUserInfo); - } else { - Map map = tokenService.createToken(loginInfoResult.getData()); - map.put("openid", weChatUserInfo.getOpenid()); + Map map = new HashMap<>(); + try { + map.put("wechat_auth", CryptoUtil.encrypt(weChatUserInfo.toString())); + if (staff.getData() != null) { + R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(staff.getData().getPhone(), SecurityConstants.INNER); + map.putAll(tokenService.createToken(loginInfoResult.getData())); return AjaxResult.success(map); } + return AjaxResult.success(map); + } catch (Exception e){ + e.printStackTrace(); + response.setStatus(500); + return AjaxResult.error("服务器异常"); } } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSessionResponse.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSessionResponse.java index 3b2be5dd..60ce6fdc 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSessionResponse.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSessionResponse.java @@ -5,6 +5,7 @@ package com.xueyi.system.wechat.domain.bean; * @description * @date 2024-01-02 12:45 */ +import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; @@ -23,10 +24,7 @@ public class WeChatSessionResponse { @Override public String toString() { - return "WeChatSessionResponse{" + - "openid='" + openid + '\'' + - ", session_key='" + sessionKey + '\'' + - '}'; + return JSONObject.from(this).toJSONString(); } } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeChatService.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeChatService.java index 84bbd3fc..859a8192 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeChatService.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeChatService.java @@ -1,11 +1,14 @@ package com.xueyi.system.wechat.service; +import com.alibaba.fastjson2.JSON; import com.xueyi.common.redis.utils.RedisUtil; import com.xueyi.system.wechat.domain.bean.WeChatSessionResponse; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.stereotype.Service; +import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import org.springframework.web.client.UnknownContentTypeException; @@ -35,19 +38,26 @@ public class WeChatService { @Autowired private RestTemplate restTemplate; - public WeChatSessionResponse getUserInfo(String code) throws UnknownContentTypeException { + public WeChatSessionResponse getUserInfo(String code) { log.info("appId: {}, appSecret: {}, code: {}",appId, appSecret, code); // 向微信服务器发送请求,获取用户的openid和session_key String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appId + "&secret=" + appSecret + "&js_code=" + code + "&grant_type=authorization_code"; - - WeChatSessionResponse sessionResponse = restTemplate.getForObject(url, WeChatSessionResponse.class); + log.info("url: {}", url); + restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter()); + +// WeChatSessionResponse sessionResponse = restTemplate.getForObject(url, WeChatSessionResponse.class); + String str = restTemplate.getForObject(url, String.class); + log.info("sessionResponse: str {}", str); + WeChatSessionResponse sessionResponse = JSON.parseObject(str, WeChatSessionResponse.class); + log.info("sessionResponse: {}", sessionResponse); RedisUtil.setVal(WECHAT_REDIS_SESSION_KEY+sessionResponse.getOpenid(), sessionResponse.getSessionKey()); log.info("sessionResponse: {}", sessionResponse); return sessionResponse; + } From 769050e2ee42f5ba2fb3f64a91c996fd386e7557 Mon Sep 17 00:00:00 2001 From: yk Date: Wed, 3 Jan 2024 21:19:11 +0800 Subject: [PATCH 02/33] =?UTF-8?q?sonar=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/xueyi/auth/controller/TokenController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java b/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java index 6d745547..ffe5655f 100644 --- a/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java +++ b/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java @@ -73,7 +73,7 @@ public class TokenController { private RedisTemplate redisTemplate; - private final String REDIS_LOGIN_CODE_PIX = "saas:login:code:"; + private final static String REDIS_LOGIN_CODE_PIX = "saas:login:code:"; @PostMapping("login") public AjaxResult login(@RequestBody LoginBody form) { @@ -139,7 +139,7 @@ public class TokenController { @GetMapping("validCode") - public R validCode(@RequestParam String phone) { + public R validCode(@RequestParam String phone) { R staff = tenantService.existStaff(phone, SecurityConstants.INNER); if (staff.getData() == null) { return R.fail("手机号不存在,请查验"); From 046d7d645fcb7ca61dac6c57714250e6af954319 Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 10:57:08 +0800 Subject: [PATCH 03/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wechat/controller/WeChatController.java | 14 +++++- .../wechat/domain/bean/WeChatSignUpReq.java | 2 +- .../wechat/domain/po/WeChatUserInfo.java | 6 +++ .../system/wechat/service/WeChatService.java | 43 +++++++++++-------- 4 files changed, 44 insertions(+), 21 deletions(-) diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeChatController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeChatController.java index 81214f39..dae93930 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeChatController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeChatController.java @@ -90,7 +90,15 @@ public class WeChatController { @PostMapping("/signup") public AjaxResult signup(@RequestBody WeChatSignUpReq signUpReq, HttpServletResponse response) { - String decodeStr = weChatService.decrypt(signUpReq.getEncryptedData(), signUpReq.getIv(), signUpReq.getWeappAuth()); + String decodeStr = null; + try { + decodeStr = weChatService.decrypt(signUpReq.getEncryptedData(), signUpReq.getIv(), signUpReq.getWechatAuth()); + } catch (Exception e) { + e.printStackTrace(); + response.setStatus(500); +// throw new RuntimeException(e); + return AjaxResult.error("微信数据解析错误"); + } ObjectMapper objectMapper = new ObjectMapper(); WeChatUserInfo userInfo = null; @@ -99,9 +107,10 @@ public class WeChatController { } catch (JsonProcessingException e) { response.setStatus(500); // throw new RuntimeException(e); - return AjaxResult.error("解析错误"); + return AjaxResult.error("WeChatUserInfo解析错误"); } + log.info("微信用户信息:{}", userInfo); R staff = tenantService.existStaff(userInfo.getPhoneNumber(), SecurityConstants.INNER); String phone = null; if (staff.getData() == null) { @@ -113,6 +122,7 @@ public class WeChatController { } else { phone = staff.getData().getPhone(); } + log.info("信息 phone:{}", phone); R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(phone, SecurityConstants.INNER); log.info("根据手机号获取用户信息返回:{}", loginInfoResult.getData().getEnterpriseName()); diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSignUpReq.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSignUpReq.java index ecb8708e..a98de840 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSignUpReq.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSignUpReq.java @@ -14,7 +14,7 @@ public class WeChatSignUpReq { private String encryptedData; private JSONObject rawData; private String signature; - private String weappAuth; + private String wechatAuth; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeChatUserInfo.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeChatUserInfo.java index 1fd1e03d..2c1e3095 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeChatUserInfo.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeChatUserInfo.java @@ -1,5 +1,6 @@ package com.xueyi.system.wechat.domain.po; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.annotation.TableName; import com.xueyi.common.core.web.tenant.base.TBaseEntity; import lombok.Data; @@ -44,6 +45,11 @@ public class WeChatUserInfo extends TBaseEntity { // Getters and Setters } + @Override + public String toString(){ + return JSON.toJSONString(this); + } + } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeChatService.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeChatService.java index 859a8192..008f423f 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeChatService.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeChatService.java @@ -1,6 +1,7 @@ package com.xueyi.system.wechat.service; import com.alibaba.fastjson2.JSON; +import com.xueyi.common.core.utils.core.CryptoUtil; import com.xueyi.common.redis.utils.RedisUtil; import com.xueyi.system.wechat.domain.bean.WeChatSessionResponse; import org.slf4j.Logger; @@ -61,28 +62,34 @@ public class WeChatService { } - public String decrypt(String encryptedData, String iv, String sessionKey) { - try { - // Base64 解码 - byte[] sessionKeyBytes = Base64.getDecoder().decode(sessionKey); - byte[] encryptedDataBytes = Base64.getDecoder().decode(encryptedData); - byte[] ivBytes = Base64.getDecoder().decode(iv); + public String decrypt(String encryptedData, String iv, String wechatAuth) throws Exception{ - // 创建 AES 密钥对象 - SecretKey secretKey = new SecretKeySpec(sessionKeyBytes, "AES"); + String str = CryptoUtil.decrypt(wechatAuth); + WeChatSessionResponse obj = JSON.parseObject(str, WeChatSessionResponse.class); + // Base64 解码 + byte[] sessionKeyBytes = Base64.getDecoder().decode(obj.getSessionKey()); + byte[] encryptedDataBytes = Base64.getDecoder().decode(encryptedData); + byte[] ivBytes = Base64.getDecoder().decode(iv); + log.info("sessionKeyBytes: {}", new String(sessionKeyBytes)); + log.info("encryptedDataBytes: {}", new String(encryptedDataBytes)); + log.info("ivBytes: {}", new String(ivBytes)); - // 创建 AES 解密器 - Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); - cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(ivBytes)); + // 创建 AES 密钥对象 + SecretKey secretKey = new SecretKeySpec(sessionKeyBytes, "AES"); + log.info("secretKey: {} 1===", secretKey.getAlgorithm()); - // 解密 - byte[] decryptedBytes = cipher.doFinal(encryptedDataBytes); - String decoded = new String(decryptedBytes, "UTF-8"); + // 创建 AES 解密器 + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + log.info("cipher: {} 2===", cipher.getAlgorithm()); + cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(ivBytes)); + + // 解密 + byte[] decryptedBytes = cipher.doFinal(encryptedDataBytes); + log.info("decryptedBytes: {} 3===", new String(decryptedBytes)); + String decoded = new String(decryptedBytes, "UTF-8"); + log.info("decoded: {} 4===", decoded); + return decoded; - return decoded; - } catch (Exception e) { - throw new IllegalArgumentException("Illegal Buffer", e); - } } } From dfa639101ae2a4a2f3092f4b5412b2d06f06bcc2 Mon Sep 17 00:00:00 2001 From: kira Date: Thu, 4 Jan 2024 11:05:47 +0800 Subject: [PATCH 04/33] =?UTF-8?q?yinruoxi=20=E6=B7=BB=E5=8A=A0=EF=BC=9A=20?= =?UTF-8?q?=20=20=20=201.=E8=81=94=E5=8A=A8=E5=8C=97=E6=96=B9=E5=A4=A7?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E6=95=8F=E6=84=9F=E8=AF=8D=E5=AF=B9=E5=BA=94?= =?UTF-8?q?status=E5=AD=97=E6=AE=B5=E6=B7=BB=E5=8A=A0=E5=85=9C=E5=BA=95?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xueyi/nlt/nlt/controller/DmIntentController.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java index a6d55814..8dc5da38 100644 --- a/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java +++ b/xueyi-modules/xueyi-nlt/src/main/java/com/xueyi/nlt/nlt/controller/DmIntentController.java @@ -415,6 +415,16 @@ public class DmIntentController extends BaseController Date: Thu, 4 Jan 2024 11:46:52 +0800 Subject: [PATCH 05/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...atController.java => WeappController.java} | 52 ++++++++++-------- .../system/wechat/domain/bean/Watermark.java | 14 +++++ ...esponse.java => WeappSessionResponse.java} | 2 +- ...ChatSignUpReq.java => WeappSignUpReq.java} | 9 ++- .../wechat/domain/po/WeChatUserInfo.java | 55 ------------------- .../wechat/domain/po/WeappUserInfo.java | 31 +++++++++++ .../{WeChatService.java => WeappService.java} | 17 +++--- 7 files changed, 88 insertions(+), 92 deletions(-) rename xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/{WeChatController.java => WeappController.java} (74%) create mode 100644 xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/Watermark.java rename xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/{WeChatSessionResponse.java => WeappSessionResponse.java} (93%) rename xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/{WeChatSignUpReq.java => WeappSignUpReq.java} (65%) delete mode 100644 xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeChatUserInfo.java create mode 100644 xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeappUserInfo.java rename xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/{WeChatService.java => WeappService.java} (82%) diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeChatController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java similarity index 74% rename from xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeChatController.java rename to xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java index dae93930..c13b5c3c 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeChatController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java @@ -1,8 +1,7 @@ package com.xueyi.system.wechat.controller; -import com.baomidou.dynamic.datasource.toolkit.CryptoUtils; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.xueyi.common.core.constant.basic.SecurityConstants; import com.xueyi.common.core.utils.core.CryptoUtil; import com.xueyi.common.core.utils.core.ObjectUtil; @@ -11,16 +10,15 @@ import com.xueyi.common.core.web.result.R; import com.xueyi.common.security.service.TokenService; import com.xueyi.system.api.authority.feign.RemoteLoginService; import com.xueyi.system.api.model.LoginUser; -import com.xueyi.system.wechat.domain.bean.WeChatSessionResponse; -import com.xueyi.system.wechat.domain.bean.WeChatSignUpReq; -import com.xueyi.system.wechat.domain.po.WeChatUserInfo; -import com.xueyi.system.wechat.service.WeChatService; +import com.xueyi.system.wechat.domain.bean.WeappSessionResponse; +import com.xueyi.system.wechat.domain.bean.WeappSignUpReq; +import com.xueyi.system.wechat.domain.po.WeappUserInfo; +import com.xueyi.system.wechat.service.WeappService; import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -38,11 +36,11 @@ import java.util.Map; * @date 2024-01-02 12:42 */ @RestController -@RequestMapping("/api/wechat") -public class WeChatController { - Logger log = LoggerFactory.getLogger(WeChatController.class); +@RequestMapping("/api/weapp") +public class WeappController { + Logger log = LoggerFactory.getLogger(WeappController.class); @Autowired - private WeChatService weChatService; + private WeappService weappService; @Autowired RemoteTenantService tenantService; @@ -59,9 +57,9 @@ public class WeChatController { public AjaxResult login(@RequestParam("code") String code, HttpServletResponse response) { // 根据code获取微信用户信息 - WeChatSessionResponse weChatUserInfo = null; + WeappSessionResponse weChatUserInfo = null; try { - weChatUserInfo = weChatService.getUserInfo(code); + weChatUserInfo = weappService.getUserInfo(code); } catch (Exception e) { e.printStackTrace(); response.setStatus(500); @@ -72,7 +70,7 @@ public class WeChatController { R staff = tenantService.existStaff(weChatUserInfo.getOpenid(), SecurityConstants.INNER); Map map = new HashMap<>(); try { - map.put("wechat_auth", CryptoUtil.encrypt(weChatUserInfo.toString())); + map.put("weappAuth", CryptoUtil.encrypt(weChatUserInfo.toString())); if (staff.getData() != null) { R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(staff.getData().getPhone(), SecurityConstants.INNER); map.putAll(tokenService.createToken(loginInfoResult.getData())); @@ -88,23 +86,31 @@ public class WeChatController { @PostMapping("/signup") - public AjaxResult signup(@RequestBody WeChatSignUpReq signUpReq, HttpServletResponse response) { + public AjaxResult signup(@RequestBody WeappSignUpReq signUpReq, HttpServletResponse response) { + log.info("微信注册请求信息:{}", signUpReq); + + if (signUpReq == null || StringUtils.isEmpty(signUpReq.getWeappAuth())) { + response.setStatus(500); + return AjaxResult.error("请求参数错误"); + } String decodeStr = null; + WeappSessionResponse obj = null; try { - decodeStr = weChatService.decrypt(signUpReq.getEncryptedData(), signUpReq.getIv(), signUpReq.getWechatAuth()); + String str = CryptoUtil.decrypt(signUpReq.getWeappAuth()); + obj = JSON.parseObject(str, WeappSessionResponse.class); + decodeStr = weappService.decrypt(signUpReq.getEncryptedData(), signUpReq.getIv(), obj); } catch (Exception e) { e.printStackTrace(); response.setStatus(500); -// throw new RuntimeException(e); return AjaxResult.error("微信数据解析错误"); } - ObjectMapper objectMapper = new ObjectMapper(); - WeChatUserInfo userInfo = null; + WeappUserInfo userInfo = null; try { - userInfo = objectMapper.readValue(decodeStr, WeChatUserInfo.class); - } catch (JsonProcessingException e) { + userInfo = JSON.parseObject(decodeStr, WeappUserInfo.class); +// userInfo = objectMapper.readValue(decodeStr, WeChatUserInfo.class); + } catch (Exception e) { response.setStatus(500); // throw new RuntimeException(e); return AjaxResult.error("WeChatUserInfo解析错误"); @@ -115,7 +121,7 @@ public class WeChatController { String phone = null; if (staff.getData() == null) { SysEnterpriseStaff staff1 = new SysEnterpriseStaff(); -// staff1.setOpenid(userInfo.get); + staff1.setOpenid(obj.getOpenid()); staff1.setPhone(userInfo.getPhoneNumber()); tenantService.saveEnterpriseStaff(staff1, SecurityConstants.INNER); phone = userInfo.getPhoneNumber(); diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/Watermark.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/Watermark.java new file mode 100644 index 00000000..e1039f19 --- /dev/null +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/Watermark.java @@ -0,0 +1,14 @@ +package com.xueyi.system.wechat.domain.bean; + +import lombok.Data; + +/** + * @author yk + * @description + * @date 2024-01-04 11:04 + */ +@Data +public class Watermark { + private Long timestamp; + private String appid; +} diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSessionResponse.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeappSessionResponse.java similarity index 93% rename from xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSessionResponse.java rename to xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeappSessionResponse.java index 60ce6fdc..02f44e43 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSessionResponse.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeappSessionResponse.java @@ -10,7 +10,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; @Data -public class WeChatSessionResponse { +public class WeappSessionResponse { @JsonProperty("openid") private String openid; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSignUpReq.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeappSignUpReq.java similarity index 65% rename from xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSignUpReq.java rename to xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeappSignUpReq.java index a98de840..c7f68433 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeChatSignUpReq.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/bean/WeappSignUpReq.java @@ -9,13 +9,16 @@ import lombok.Data; * @date 2024-01-02 16:47 */ @Data -public class WeChatSignUpReq { +public class WeappSignUpReq { private String iv; private String encryptedData; private JSONObject rawData; private String signature; - private String wechatAuth; - + private String weappAuth; + @Override + public String toString(){ + return JSONObject.toJSONString(this); + } } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeChatUserInfo.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeChatUserInfo.java deleted file mode 100644 index 2c1e3095..00000000 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeChatUserInfo.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.xueyi.system.wechat.domain.po; - -import com.alibaba.fastjson2.JSON; -import com.baomidou.mybatisplus.annotation.TableName; -import com.xueyi.common.core.web.tenant.base.TBaseEntity; -import lombok.Data; - -import static com.xueyi.common.core.constant.basic.EntityConstants.CREATE_BY; -import static com.xueyi.common.core.constant.basic.EntityConstants.CREATE_TIME; -import static com.xueyi.common.core.constant.basic.EntityConstants.DEL_FLAG; -import static com.xueyi.common.core.constant.basic.EntityConstants.NAME; -import static com.xueyi.common.core.constant.basic.EntityConstants.REMARK; -import static com.xueyi.common.core.constant.basic.EntityConstants.SORT; -import static com.xueyi.common.core.constant.basic.EntityConstants.STATUS; -import static com.xueyi.common.core.constant.basic.EntityConstants.UPDATE_BY; -import static com.xueyi.common.core.constant.basic.EntityConstants.UPDATE_TIME; - -/** - * @author yk - * @description - * @date 2024-01-02 12:47 - */ -@Data -@TableName(value = "sys_wechat_user",excludeProperty = {STATUS, UPDATE_BY, SORT, CREATE_BY, DEL_FLAG, CREATE_TIME, UPDATE_TIME, REMARK, NAME }) -public class WeChatUserInfo extends TBaseEntity { - - private String openId; - private String nickName; - private int gender; - private String city; - private String province; - private String country; - private String avatarUrl; - private String unionId; - private Watermark watermark; - private String phoneNumber; - - // Getters and Setters - - @Data - public static class Watermark { - private long timestamp; - private String appid; - - // Getters and Setters - } - - @Override - public String toString(){ - return JSON.toJSONString(this); - } - - -} - diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeappUserInfo.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeappUserInfo.java new file mode 100644 index 00000000..d10d99c3 --- /dev/null +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/domain/po/WeappUserInfo.java @@ -0,0 +1,31 @@ +package com.xueyi.system.wechat.domain.po; + +import com.alibaba.fastjson2.JSON; +import com.xueyi.system.wechat.domain.bean.Watermark; +import lombok.Data; + +/** + * @author yk + * @description + * @date 2024-01-02 12:47 + */ +@Data +public class WeappUserInfo { + + private String openId; + private String countryCode; + private Watermark watermark; + private String phoneNumber; + private String purePhoneNumber; + + // Getters and Setters + + + @Override + public String toString(){ + return JSON.toJSONString(this); + } + + +} + diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeChatService.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeappService.java similarity index 82% rename from xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeChatService.java rename to xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeappService.java index 008f423f..6d7b829e 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeChatService.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeappService.java @@ -3,15 +3,13 @@ package com.xueyi.system.wechat.service; import com.alibaba.fastjson2.JSON; import com.xueyi.common.core.utils.core.CryptoUtil; import com.xueyi.common.redis.utils.RedisUtil; -import com.xueyi.system.wechat.domain.bean.WeChatSessionResponse; +import com.xueyi.system.wechat.domain.bean.WeappSessionResponse; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.stereotype.Service; -import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; -import org.springframework.web.client.UnknownContentTypeException; import javax.crypto.Cipher; import javax.crypto.SecretKey; @@ -25,8 +23,8 @@ import java.util.Base64; * @date 2024-01-02 12:43 */ @Service -public class WeChatService { - Logger log = org.slf4j.LoggerFactory.getLogger(WeChatService.class); +public class WeappService { + Logger log = org.slf4j.LoggerFactory.getLogger(WeappService.class); public static final String WECHAT_REDIS_SESSION_KEY = "wechat:session_key:"; @@ -39,7 +37,7 @@ public class WeChatService { @Autowired private RestTemplate restTemplate; - public WeChatSessionResponse getUserInfo(String code) { + public WeappSessionResponse getUserInfo(String code) { log.info("appId: {}, appSecret: {}, code: {}",appId, appSecret, code); // 向微信服务器发送请求,获取用户的openid和session_key String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appId + @@ -52,7 +50,7 @@ public class WeChatService { // WeChatSessionResponse sessionResponse = restTemplate.getForObject(url, WeChatSessionResponse.class); String str = restTemplate.getForObject(url, String.class); log.info("sessionResponse: str {}", str); - WeChatSessionResponse sessionResponse = JSON.parseObject(str, WeChatSessionResponse.class); + WeappSessionResponse sessionResponse = JSON.parseObject(str, WeappSessionResponse.class); log.info("sessionResponse: {}", sessionResponse); RedisUtil.setVal(WECHAT_REDIS_SESSION_KEY+sessionResponse.getOpenid(), sessionResponse.getSessionKey()); log.info("sessionResponse: {}", sessionResponse); @@ -62,10 +60,9 @@ public class WeChatService { } - public String decrypt(String encryptedData, String iv, String wechatAuth) throws Exception{ + public String decrypt(String encryptedData, String iv, WeappSessionResponse obj) throws Exception{ + - String str = CryptoUtil.decrypt(wechatAuth); - WeChatSessionResponse obj = JSON.parseObject(str, WeChatSessionResponse.class); // Base64 解码 byte[] sessionKeyBytes = Base64.getDecoder().decode(obj.getSessionKey()); byte[] encryptedDataBytes = Base64.getDecoder().decode(encryptedData); From e84cf32bdbcb7e341d5f4cc73f4aa24b0439f472 Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 13:12:19 +0800 Subject: [PATCH 06/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xueyi/system/wechat/controller/WeappController.java | 9 ++++----- .../com/xueyi/system/wechat/service/WeappService.java | 7 ------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java index c13b5c3c..5148aabd 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java @@ -131,13 +131,12 @@ public class WeappController { log.info("信息 phone:{}", phone); R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(phone, SecurityConstants.INNER); - log.info("根据手机号获取用户信息返回:{}", loginInfoResult.getData().getEnterpriseName()); - if (ObjectUtil.isNull(loginInfoResult.getData())) { - response.setStatus(500); - return AjaxResult.error("手机号可能错误,请查证后重试!", signUpReq); + if (ObjectUtil.isNull(loginInfoResult.getData()) || loginInfoResult.isFail()) { + log.info("根据手机号获取用户信息返回:{}", loginInfoResult.getData().getEnterpriseName()); + response.setStatus(401); + return AjaxResult.error("手机号无对应员工,请查证后重试!"); } else { Map map = tokenService.createToken(loginInfoResult.getData()); -// map.put("openid", signUpReq.getOpenid()); return AjaxResult.success(map); } } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeappService.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeappService.java index 6d7b829e..f5bfb888 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeappService.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/service/WeappService.java @@ -67,24 +67,17 @@ public class WeappService { byte[] sessionKeyBytes = Base64.getDecoder().decode(obj.getSessionKey()); byte[] encryptedDataBytes = Base64.getDecoder().decode(encryptedData); byte[] ivBytes = Base64.getDecoder().decode(iv); - log.info("sessionKeyBytes: {}", new String(sessionKeyBytes)); - log.info("encryptedDataBytes: {}", new String(encryptedDataBytes)); - log.info("ivBytes: {}", new String(ivBytes)); // 创建 AES 密钥对象 SecretKey secretKey = new SecretKeySpec(sessionKeyBytes, "AES"); - log.info("secretKey: {} 1===", secretKey.getAlgorithm()); // 创建 AES 解密器 Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); - log.info("cipher: {} 2===", cipher.getAlgorithm()); cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(ivBytes)); // 解密 byte[] decryptedBytes = cipher.doFinal(encryptedDataBytes); - log.info("decryptedBytes: {} 3===", new String(decryptedBytes)); String decoded = new String(decryptedBytes, "UTF-8"); - log.info("decoded: {} 4===", decoded); return decoded; } From ac0f41b3821a26ef916dc32e4e23e17472def957 Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 13:21:41 +0800 Subject: [PATCH 07/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B94=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=94=E5=9B=9E=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xueyi/system/wechat/controller/WeappController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java index 5148aabd..f88dc6ac 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java @@ -132,7 +132,7 @@ public class WeappController { R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(phone, SecurityConstants.INNER); if (ObjectUtil.isNull(loginInfoResult.getData()) || loginInfoResult.isFail()) { - log.info("根据手机号获取用户信息返回:{}", loginInfoResult.getData().getEnterpriseName()); + log.info("根据手机号获取用户信息返回:{}", loginInfoResult); response.setStatus(401); return AjaxResult.error("手机号无对应员工,请查证后重试!"); } else { From e53bf6a99361aadc26162cf2790d80d88601af0c Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 13:51:35 +0800 Subject: [PATCH 08/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B95=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=94=E5=9B=9E=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xueyi/common/core/web/result/R.java | 6 ++++++ .../com/xueyi/system/wechat/controller/WeappController.java | 2 ++ 2 files changed, 8 insertions(+) diff --git a/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/web/result/R.java b/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/web/result/R.java index 3498cf1f..12091788 100644 --- a/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/web/result/R.java +++ b/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/web/result/R.java @@ -1,5 +1,6 @@ package com.xueyi.common.core.web.result; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.xueyi.common.core.constant.basic.Constants; @@ -119,4 +120,9 @@ public class R implements Serializable { } return json; } + + @Override + public String toString(){ + return JSON.toJSONString(this); + } } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java index f88dc6ac..6de89dc5 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java @@ -124,8 +124,10 @@ public class WeappController { staff1.setOpenid(obj.getOpenid()); staff1.setPhone(userInfo.getPhoneNumber()); tenantService.saveEnterpriseStaff(staff1, SecurityConstants.INNER); + log.info("新用户注册:{}", userInfo.getPhoneNumber()); phone = userInfo.getPhoneNumber(); } else { + log.info("新用户注册--2:{}", staff.getData()); phone = staff.getData().getPhone(); } log.info("信息 phone:{}", phone); From 29a012302547dccf52b4aca128a66bc58cd10957 Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 14:01:40 +0800 Subject: [PATCH 09/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B96=20add=20lo?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xueyi/tenant/api/tenant/feign/RemoteTenantService.java | 2 +- .../com/xueyi/system/wechat/controller/WeappController.java | 5 +++-- .../xueyi/tenant/tenant/controller/TeTenantController.java | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java index 7ba3a12e..a420bacd 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java @@ -46,7 +46,7 @@ public interface RemoteTenantService { R existStaff(@RequestParam ("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); - @PostMapping("/tenant/staff") + @PostMapping("/tenant/save-staff") R saveEnterpriseStaff(@RequestBody SysEnterpriseStaff staff, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } \ No newline at end of file diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java index 6de89dc5..b0a54f16 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java @@ -116,8 +116,9 @@ public class WeappController { return AjaxResult.error("WeChatUserInfo解析错误"); } - log.info("微信用户信息:{}", userInfo); - R staff = tenantService.existStaff(userInfo.getPhoneNumber(), SecurityConstants.INNER); + log.info("微信用户信息:{}, phone:{}", userInfo, userInfo.getPurePhoneNumber()); + R staff = tenantService.existStaff(userInfo.getPurePhoneNumber(), SecurityConstants.INNER); + log.info("微信对应用户 staff:{}", staff); String phone = null; if (staff.getData() == null) { SysEnterpriseStaff staff1 = new SysEnterpriseStaff(); diff --git a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java index ec3ccfb4..805e2816 100644 --- a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java +++ b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java @@ -99,7 +99,7 @@ public class TeTenantController extends BaseController staff(@RequestBody SysEnterpriseStaff staff) { staffMapper.insert(staff); return R.ok(staff); From 1f0338cb7473746c271438ea6b064c9566575d46 Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 14:08:49 +0800 Subject: [PATCH 10/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B96=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wechat/controller/WeappController.java | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java index b0a54f16..e05be390 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java @@ -116,22 +116,8 @@ public class WeappController { return AjaxResult.error("WeChatUserInfo解析错误"); } - log.info("微信用户信息:{}, phone:{}", userInfo, userInfo.getPurePhoneNumber()); - R staff = tenantService.existStaff(userInfo.getPurePhoneNumber(), SecurityConstants.INNER); - log.info("微信对应用户 staff:{}", staff); - String phone = null; - if (staff.getData() == null) { - SysEnterpriseStaff staff1 = new SysEnterpriseStaff(); - staff1.setOpenid(obj.getOpenid()); - staff1.setPhone(userInfo.getPhoneNumber()); - tenantService.saveEnterpriseStaff(staff1, SecurityConstants.INNER); - log.info("新用户注册:{}", userInfo.getPhoneNumber()); - phone = userInfo.getPhoneNumber(); - } else { - log.info("新用户注册--2:{}", staff.getData()); - phone = staff.getData().getPhone(); - } - log.info("信息 phone:{}", phone); + String phone = userInfo.getPurePhoneNumber(); + log.info("微信用户信息:{}, phone:{}", userInfo, phone); R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(phone, SecurityConstants.INNER); if (ObjectUtil.isNull(loginInfoResult.getData()) || loginInfoResult.isFail()) { From b8d365cddf7bb36f6e2595439747ae0d49bbc7e1 Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 14:39:57 +0800 Subject: [PATCH 11/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B97=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/api/staff/feign/RemoteStaffService.java | 3 +++ .../controller/api/DmStaffInnerApiController.java | 12 ++++++++++++ .../system/wechat/controller/WeappController.java | 13 +++++++++++++ 3 files changed, 28 insertions(+) diff --git a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteStaffService.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteStaffService.java index bcf96279..bf0f8bd7 100644 --- a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteStaffService.java +++ b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/staff/feign/RemoteStaffService.java @@ -35,6 +35,9 @@ public interface RemoteStaffService { @GetMapping("/staff/inner-api/selectOne/{staffId}") JSONObject fetchStaff(@RequestParam(value = "staffId") String staffId, @RequestHeader(SecurityConstants.ENTERPRISE_ID) Long enterpriseId, @RequestHeader(SecurityConstants.SOURCE_NAME) String sourceName, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping("/staff/inner-api/selectByPhone") + JSONObject fetchStaffByPhone(@RequestParam(value = "phone") String phone, @RequestHeader(SecurityConstants.ENTERPRISE_ID) Long enterpriseId, @RequestHeader(SecurityConstants.SOURCE_NAME) String sourceName, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping("/staff/inner/tenantId/{enterpriseName}") public R tenantIdInner(@RequestParam(value = "enterpriseName") String enterpriseName) ; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffInnerApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffInnerApiController.java index 14e737eb..311b638f 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffInnerApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffInnerApiController.java @@ -26,6 +26,7 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @@ -73,6 +74,17 @@ public class DmStaffInnerApiController extends BaseApiController { return output(ResponseCode.DATA_NOT_EXISTS,"指定ID的员工").toJSON(); } + @InnerAuth + @GetMapping(value = "selectByPhone") + @ResponseBody + public JSONObject fetchStaffByPhone(@RequestParam(value = "phone") String phone){ + DmStaffPo dmStaff = dmStaffMapper.selectOne(Wrappers.lambdaQuery().eq(DmStaffPo::getPhone, phone).last(SqlConstants.LIMIT_ONE)); + if (dmStaff!= null) { + return outputSuccess(dmStaff).toJSON(); + } + return output(ResponseCode.DATA_NOT_EXISTS,"指定phone的员工").toJSON(); + } + @InnerAuth @PostMapping(value = "new-staff") @ResponseBody diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java index e05be390..c4ddc5c6 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java @@ -1,15 +1,20 @@ package com.xueyi.system.wechat.controller; import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.xueyi.common.core.constant.basic.SecurityConstants; +import com.xueyi.common.core.utils.JwtUtil; import com.xueyi.common.core.utils.core.CryptoUtil; import com.xueyi.common.core.utils.core.ObjectUtil; import com.xueyi.common.core.web.result.AjaxResult; import com.xueyi.common.core.web.result.R; import com.xueyi.common.security.service.TokenService; +import com.xueyi.common.security.utils.SecurityUtils; import com.xueyi.system.api.authority.feign.RemoteLoginService; import com.xueyi.system.api.model.LoginUser; +import com.xueyi.system.api.staff.domain.po.DmStaffPo; +import com.xueyi.system.api.staff.feign.RemoteStaffService; import com.xueyi.system.wechat.domain.bean.WeappSessionResponse; import com.xueyi.system.wechat.domain.bean.WeappSignUpReq; import com.xueyi.system.wechat.domain.po.WeappUserInfo; @@ -48,6 +53,9 @@ public class WeappController { @Autowired RemoteLoginService remoteLoginService; + @Autowired + RemoteStaffService staffService; + @Autowired TokenService tokenService; @@ -126,6 +134,11 @@ public class WeappController { return AjaxResult.error("手机号无对应员工,请查证后重试!"); } else { Map map = tokenService.createToken(loginInfoResult.getData()); + String token = (String)map.get("access_token"); + log.info("信息,token:{}, enterpriseName:{}, source:{}", token, JwtUtil.getEnterpriseName(token),JwtUtil.getSourceName(token)); + JSONObject json = staffService.fetchStaffByPhone(phone, Long.valueOf(JwtUtil.getEnterpriseId(token)), JwtUtil.getSourceName(token), SecurityConstants.INNER); + map.put("enterpriseName", loginInfoResult.getData().getEnterpriseName()); + map.put("staff", json.get("data")); return AjaxResult.success(map); } } From 90159c4d1846b0a5edbbd529119fb51fd50b518e Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 14:57:36 +0800 Subject: [PATCH 12/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B98=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../staff/controller/DmStaffController.java | 22 ++++++++++++++++++- .../api/DmStaffInnerApiController.java | 13 +++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java index 6eb4838d..cf29270a 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java @@ -28,9 +28,13 @@ import com.xueyi.system.api.staff.domain.dto.DmStaffDto; import com.xueyi.system.api.staff.domain.po.DmStaffPo; import com.xueyi.system.authority.service.ISysLoginService; import com.xueyi.system.organize.service.ISysEnterpriseService; +import com.xueyi.system.resource.domain.dto.DmResourcesDto; +import com.xueyi.system.resource.service.IDmResourcesService; import com.xueyi.system.staff.domain.query.DmStaffQuery; import com.xueyi.system.api.staff.domain.vo.DmStaffFeature; import com.xueyi.system.staff.service.IDmStaffService; +import com.xueyi.tenant.api.tenant.domain.po.SysEnterpriseStaff; +import com.xueyi.tenant.api.tenant.feign.RemoteTenantService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -65,6 +69,13 @@ public class DmStaffController extends BaseControllerlambdaQuery().eq(DmStaffPo::getId, staffId).last(SqlConstants.LIMIT_ONE)); if (dmStaff!= null) { + if (dmStaff.getResourceId() != null) { + DmResourcesDto dto = iDmResourcesService.selectById(dmStaff.getResourceId()); + if (dto != null) { + dmStaff.setAvatar(dto.getUrl()); + } + } return outputSuccess(dmStaff).toJSON(); } return output(ResponseCode.DATA_NOT_EXISTS,"指定ID的员工").toJSON(); @@ -80,7 +86,14 @@ public class DmStaffInnerApiController extends BaseApiController { public JSONObject fetchStaffByPhone(@RequestParam(value = "phone") String phone){ DmStaffPo dmStaff = dmStaffMapper.selectOne(Wrappers.lambdaQuery().eq(DmStaffPo::getPhone, phone).last(SqlConstants.LIMIT_ONE)); if (dmStaff!= null) { + if (dmStaff.getResourceId() != null) { + DmResourcesDto dto = iDmResourcesService.selectById(dmStaff.getResourceId()); + if (dto != null) { + dmStaff.setAvatar(dto.getUrl()); + } + } return outputSuccess(dmStaff).toJSON(); + } return output(ResponseCode.DATA_NOT_EXISTS,"指定phone的员工").toJSON(); } From f04452951cdbd9978aa95041d3328a90c7de75a4 Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 15:29:17 +0800 Subject: [PATCH 13/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B99=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=B7=E6=B1=82=E8=BF=94=E5=9B=9E=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tenant/api/tenant/feign/RemoteTenantService.java | 7 +++++-- .../feign/factory/RemoteTenantFallbackFactory.java | 10 ++++++++-- .../com/xueyi/auth/controller/TokenController.java | 2 +- .../system/staff/controller/DmStaffController.java | 3 ++- .../system/wechat/controller/WeappController.java | 12 +++++++++--- .../resources/mapper/SysEnterpriseStaffMapper.xml | 4 ++++ 6 files changed, 29 insertions(+), 9 deletions(-) diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java index a420bacd..3daf4903 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/RemoteTenantService.java @@ -42,8 +42,11 @@ public interface RemoteTenantService { R tenant(@RequestParam ("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); - @GetMapping("/tenant/staff") - R existStaff(@RequestParam ("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + @GetMapping("/tenant/query-tenant-by-staff-phone") + R queryTenantByStaffPhone(@RequestParam ("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + @GetMapping("/tenant/query-staff-by-phone") + R queryStaff(@RequestParam ("phone") String phone, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); @PostMapping("/tenant/save-staff") diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java index 7d65e2ee..e05144aa 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/feign/factory/RemoteTenantFallbackFactory.java @@ -44,13 +44,19 @@ public class RemoteTenantFallbackFactory implements FallbackFactory existStaff(String phone, String source) { + public R queryTenantByStaffPhone(String phone, String source) { + return null; + } + + + @Override + public R queryStaff(String phone, String source) { return R.fail("验证用户手机号失败:" + throwable.getMessage()); } @Override public R saveEnterpriseStaff(SysEnterpriseStaff staff, String source) { - return null; + return R.fail("保存员工失败:" + throwable.getMessage()); } }; } diff --git a/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java b/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java index ffe5655f..4ea96133 100644 --- a/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java +++ b/xueyi-auth/src/main/java/com/xueyi/auth/controller/TokenController.java @@ -140,7 +140,7 @@ public class TokenController { @GetMapping("validCode") public R validCode(@RequestParam String phone) { - R staff = tenantService.existStaff(phone, SecurityConstants.INNER); + R staff = tenantService.queryStaff(phone, SecurityConstants.INNER); if (staff.getData() == null) { return R.fail("手机号不存在,请查验"); } diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java index cf29270a..299489e9 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java @@ -138,10 +138,11 @@ public class DmStaffController extends BaseController staff = tenantService.existStaff(weChatUserInfo.getOpenid(), SecurityConstants.INNER); + R staffR = tenantService.queryStaff(weChatUserInfo.getOpenid(), SecurityConstants.INNER); Map map = new HashMap<>(); try { map.put("weappAuth", CryptoUtil.encrypt(weChatUserInfo.toString())); - if (staff.getData() != null) { - R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(staff.getData().getPhone(), SecurityConstants.INNER); + SysEnterpriseStaff staff = staffR.getData(); + if (staff != null) { + R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(staff.getPhone(), SecurityConstants.INNER); map.putAll(tokenService.createToken(loginInfoResult.getData())); + String token = (String)map.get("access_token"); + log.info("信息,token:{}, enterpriseName:{}, source:{}", token, JwtUtil.getEnterpriseName(token),JwtUtil.getSourceName(token)); + JSONObject json = staffService.fetchStaffByPhone(staff.getPhone(), Long.valueOf(JwtUtil.getEnterpriseId(token)), JwtUtil.getSourceName(token), SecurityConstants.INNER); + map.put("enterpriseName", loginInfoResult.getData().getEnterpriseName()); + map.put("staff", json.get("data")); return AjaxResult.success(map); } return AjaxResult.success(map); diff --git a/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml b/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml index 3d7fe2fa..8d05a52e 100644 --- a/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml +++ b/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml @@ -8,6 +8,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select * from te_tenant where id = (select tenant_id from sys_enterprise_staff where (phone = #{phone} or openid = #{phone}) and del_flag = 0 limit 1) + + update sys_enterprise_staff From d83531c1154159f23acf52490ebc98ceabd4be9a Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 15:38:39 +0800 Subject: [PATCH 14/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B99=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=B7=E6=B1=82mapper.xml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tenant/controller/TeTenantController.java | 14 ++++++++++---- .../tenant/mapper/SysEnterpriseStaffMapper.java | 5 ++++- .../resources/mapper/SysEnterpriseStaffMapper.xml | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java index 805e2816..1bd80b0c 100644 --- a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java +++ b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/controller/TeTenantController.java @@ -86,15 +86,21 @@ public class TeTenantController extends BaseController tenant(@RequestParam("phone") String phone) { log.info("tenant one方法,手机号查询SysEnterpriseStaff:{}", phone); - TeTenantPo po = enterpriseStaffMapper.selectByPhone(phone); + TeTenantPo po = enterpriseStaffMapper.selectTenantByPhone(phone); return R.ok(po); } + @InnerAuth + @GetMapping("/query-tenant-by-staff-phone") + R queryTenantByStaffPhone(@RequestParam("phone") String phone) { + TeTenantPo po = staffMapper.selectTenantByPhone(phone); + return R.ok(po); + } @InnerAuth - @GetMapping("/staff") - R staff(@RequestParam("phone") String phone) { - TeTenantPo po = staffMapper.selectByPhone(phone); + @GetMapping("/query-staff-by-phone") + R queryStaff(@RequestParam("phone") String phone) { + SysEnterpriseStaff po = staffMapper.selectStaffByPhone(phone); return R.ok(po); } diff --git a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/mapper/SysEnterpriseStaffMapper.java b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/mapper/SysEnterpriseStaffMapper.java index 139a63fd..8739fd5e 100644 --- a/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/mapper/SysEnterpriseStaffMapper.java +++ b/xueyi-modules/xueyi-tenant/src/main/java/com/xueyi/tenant/tenant/mapper/SysEnterpriseStaffMapper.java @@ -17,7 +17,10 @@ import org.apache.ibatis.annotations.Param; @Master public interface SysEnterpriseStaffMapper extends BaseMapper { @TenantIgnore(tenantLine = true) - TeTenantPo selectByPhone(@Param("phone") String phone); + TeTenantPo selectTenantByPhone(@Param("phone") String phone); + + @TenantIgnore(tenantLine = true) + SysEnterpriseStaff selectStaffByPhone(@Param("phone") String phone); @TenantIgnore(tenantLine = true) void updateEntity(SysEnterpriseStaff po); diff --git a/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml b/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml index 8d05a52e..09b978d1 100644 --- a/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml +++ b/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml @@ -4,7 +4,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - select * from te_tenant where id = (select tenant_id from sys_enterprise_staff where (phone = #{phone} or openid = #{phone}) and del_flag = 0 limit 1) From db5ec3d67470893dc9355ab629eae11b926ec7f8 Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 15:57:05 +0800 Subject: [PATCH 15/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B910=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java | 2 +- .../com/xueyi/system/wechat/controller/WeappController.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java index 96791d03..56e6ac68 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java @@ -14,7 +14,7 @@ import java.io.Serial; */ @Data @EqualsAndHashCode(callSuper = true) -@TableName(value = "dm_enterprise_staff") +@TableName(value = "sys_enterprise_staff") public class SysEnterpriseStaff extends TBaseEntity { @Serial diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java index 7d5739ce..d0f4aa9c 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java @@ -81,6 +81,7 @@ public class WeappController { map.put("weappAuth", CryptoUtil.encrypt(weChatUserInfo.toString())); SysEnterpriseStaff staff = staffR.getData(); if (staff != null) { + log.info("login phone:{}", staff.getPhone()); R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(staff.getPhone(), SecurityConstants.INNER); map.putAll(tokenService.createToken(loginInfoResult.getData())); String token = (String)map.get("access_token"); From 8ec7db599d81474bca78f1c659e56c496900ef00 Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 16:05:08 +0800 Subject: [PATCH 16/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B910=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xueyi/system/wechat/controller/WeappController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java index d0f4aa9c..a247702f 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java @@ -80,6 +80,7 @@ public class WeappController { try { map.put("weappAuth", CryptoUtil.encrypt(weChatUserInfo.toString())); SysEnterpriseStaff staff = staffR.getData(); + log.info("login staff:{}", staff); if (staff != null) { log.info("login phone:{}", staff.getPhone()); R loginInfoResult = remoteLoginService.getLoginInfoInnerByPhone(staff.getPhone(), SecurityConstants.INNER); From 8c9fc3368d486f22a33ae157d53cc778e8172c37 Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 16:24:27 +0800 Subject: [PATCH 17/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B910=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0log,=E4=BF=AE=E6=94=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/wechat/controller/WeappController.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java index a247702f..8f94c599 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/wechat/controller/WeappController.java @@ -142,9 +142,20 @@ public class WeappController { return AjaxResult.error("手机号无对应员工,请查证后重试!"); } else { Map map = tokenService.createToken(loginInfoResult.getData()); + R enterpriseStaffR = tenantService.queryStaff(phone, SecurityConstants.INNER); + log.info("根据手机号查询员工返回:{}", enterpriseStaffR); + if (!enterpriseStaffR.isFail() && enterpriseStaffR.getData() != null){ + SysEnterpriseStaff enterpriseStaff = enterpriseStaffR.getData(); + enterpriseStaff.setOpenid(obj.getOpenid()); + log.error("根据手机号查询员工返回:1111{}", enterpriseStaff); + log.error("根据手机号查询员工返回:2222{}", obj.getOpenid()); + tenantService.saveEnterpriseStaff(enterpriseStaff, SecurityConstants.INNER); + } String token = (String)map.get("access_token"); log.info("信息,token:{}, enterpriseName:{}, source:{}", token, JwtUtil.getEnterpriseName(token),JwtUtil.getSourceName(token)); JSONObject json = staffService.fetchStaffByPhone(phone, Long.valueOf(JwtUtil.getEnterpriseId(token)), JwtUtil.getSourceName(token), SecurityConstants.INNER); + + map.put("enterpriseName", loginInfoResult.getData().getEnterpriseName()); map.put("staff", json.get("data")); return AjaxResult.success(map); From 74f3ef3b3bc301dfd5cd3855c8c15980c55bb165 Mon Sep 17 00:00:00 2001 From: yk Date: Thu, 4 Jan 2024 16:49:27 +0800 Subject: [PATCH 18/33] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8Fsignup=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B910=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0log,=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tenant/api/tenant/domain/po/SysEnterpriseStaff.java | 6 ++++-- .../xueyi/system/staff/controller/DmStaffController.java | 2 +- .../xueyi/tenant/tenant/controller/TeTenantController.java | 6 +++++- .../src/main/resources/mapper/SysEnterpriseStaffMapper.xml | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java index 56e6ac68..58f7655c 100644 --- a/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java +++ b/xueyi-api/xueyi-api-tenant/src/main/java/com/xueyi/tenant/api/tenant/domain/po/SysEnterpriseStaff.java @@ -14,17 +14,19 @@ import java.io.Serial; */ @Data @EqualsAndHashCode(callSuper = true) -@TableName(value = "sys_enterprise_staff") +@TableName(value = "sys_enterprise_staff", excludeProperty = {"name","sort","createBy","createTime","updateBy","updateTime","remark","tenantId"}) public class SysEnterpriseStaff extends TBaseEntity { @Serial private static final long serialVersionUID = 1L; + protected Long id; + protected Long staffId; protected String phone; - private Long tenantId; + private Long tId;//租户号 private String openid; } \ No newline at end of file diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java index 299489e9..5436f742 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/DmStaffController.java @@ -143,7 +143,7 @@ public class DmStaffController extends BaseController staff(@RequestBody SysEnterpriseStaff staff) { - staffMapper.insert(staff); + if (staff.getId() != null) { + staffMapper.updateById(staff); + } else { + staffMapper.insert(staff); + } return R.ok(staff); } /** diff --git a/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml b/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml index 09b978d1..d7a64df4 100644 --- a/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml +++ b/xueyi-modules/xueyi-tenant/src/main/resources/mapper/SysEnterpriseStaffMapper.xml @@ -5,7 +5,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"