Răsfoiți Sursa

微信支付宝授权的开发(未联调前端)

dongxin 1 an în urmă
părinte
comite
f793bbb13a
20 a modificat fișierele cu 566 adăugiri și 19 ștergeri
  1. 18 0
      authentication/pom.xml
  2. 30 0
      authentication/src/main/java/com/jzg/config/WechatOpenProperties.java
  3. 51 0
      authentication/src/main/java/com/jzg/config/WechatWorkConfig.java
  4. 35 0
      authentication/src/main/java/com/jzg/controller/AlipayController.java
  5. 37 0
      authentication/src/main/java/com/jzg/controller/AuthController.java
  6. 35 0
      authentication/src/main/java/com/jzg/controller/WechatController.java
  7. 27 0
      authentication/src/main/java/com/jzg/entity/SysUser.java
  8. 8 0
      authentication/src/main/java/com/jzg/entity/vo/AlipayBindVo.java
  9. 7 0
      authentication/src/main/java/com/jzg/entity/vo/AppRegisterFormVo.java
  10. 7 0
      authentication/src/main/java/com/jzg/entity/vo/LoginFormVo.java
  11. 15 0
      authentication/src/main/java/com/jzg/entity/vo/WechatBindVo.java
  12. 6 6
      authentication/src/main/java/com/jzg/handler/JzgAuthenticationSuccessHandler.java
  13. 19 0
      authentication/src/main/java/com/jzg/service/AlipayService.java
  14. 26 0
      authentication/src/main/java/com/jzg/service/WechatService.java
  15. 112 0
      authentication/src/main/java/com/jzg/service/impl/AlipayServiceImpl.java
  16. 2 0
      authentication/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java
  17. 108 0
      authentication/src/main/java/com/jzg/service/impl/WechatServiceImpl.java
  18. 6 0
      authentication/src/main/resources/application-dev.yml
  19. 4 1
      gateway/src/main/java/com/jzg/config/CorsConfig.java
  20. 13 12
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/api/component/GuorenDuplicateInsuranceComponent.java

+ 18 - 0
authentication/pom.xml

@@ -87,6 +87,24 @@
             <artifactId>hutool-crypto</artifactId>
         </dependency>
 
+        <!--集成微信-->
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-mp</artifactId>
+            <version>4.3.8.B</version>
+        </dependency>
+        <!--集成企业微信-->
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-cp</artifactId>
+            <version>4.6.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alipay.sdk</groupId>
+            <artifactId>alipay-sdk-java</artifactId>
+            <version>4.34.0.ALL</version>
+        </dependency>
         <!--        <dependency>-->
 <!--            <groupId>com.alibaba.cloud</groupId>-->
 <!--            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>-->

+ 30 - 0
authentication/src/main/java/com/jzg/config/WechatOpenProperties.java

@@ -0,0 +1,30 @@
+package com.jzg.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+@Component
+@ConfigurationProperties(prefix = "wechat.open")
+@Data
+public class WechatOpenProperties {
+
+    private Map<String, PropertiesDto> properties;
+
+    @Data
+    public static class PropertiesDto{
+
+        /**
+         * 设置微信三方平台的appid
+         */
+        private String componentAppId;
+
+        /**
+         * 设置微信三方平台的app secret
+         */
+        private String componentSecret;
+    }
+
+}

+ 51 - 0
authentication/src/main/java/com/jzg/config/WechatWorkConfig.java

@@ -0,0 +1,51 @@
+package com.jzg.config;
+
+import jakarta.annotation.Resource;
+import me.chanjar.weixin.cp.api.*;
+import me.chanjar.weixin.cp.api.impl.*;
+import me.chanjar.weixin.cp.config.impl.WxCpDefaultConfigImpl;
+import me.chanjar.weixin.mp.api.WxMpService;
+import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
+import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * @version
+ * @description: 微信相关配置
+ * @author: wenks
+ * @date: 2024/11/27 15:01
+ **/
+@Configuration
+public class WechatWorkConfig {
+
+    @Resource
+    private WechatOpenProperties wechatOpenProperties;
+
+
+    @Bean
+    public Map<String, WxMpService> wxMpService() {
+        Map<String, WxMpDefaultConfigImpl> collect = wechatOpenProperties.getProperties().keySet()
+                .stream()
+                .collect(Collectors.toMap(x->x, x -> {
+                    WechatOpenProperties.PropertiesDto propertiesDto = wechatOpenProperties.getProperties().get(x);
+                    WxMpDefaultConfigImpl wxMpDefaultConfig = new WxMpDefaultConfigImpl();
+                    wxMpDefaultConfig.setAppId(propertiesDto.getComponentAppId());
+                    wxMpDefaultConfig.setSecret(propertiesDto.getComponentSecret());
+                    return wxMpDefaultConfig;
+                }));
+
+        return collect.keySet().stream().collect(Collectors.toMap(x -> x, x -> {
+            WxMpServiceImpl wxMpService = new WxMpServiceImpl();
+            WxMpDefaultConfigImpl wxMpDefaultConfig = collect.get(x);
+            wxMpService.setWxMpConfigStorage(wxMpDefaultConfig);
+            return wxMpService;
+        }));
+    }
+
+}

+ 35 - 0
authentication/src/main/java/com/jzg/controller/AlipayController.java

@@ -0,0 +1,35 @@
+package com.jzg.controller;
+
+import com.alipay.api.AlipayApiException;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.entity.vo.AlipayBindVo;
+import com.jzg.service.AlipayService;
+import com.jzg.service.impl.AlipayServiceImpl;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+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.RestController;
+
+@Slf4j
+@Tag(name="支付宝授权接口")
+@RestController
+@RequestMapping("/alipay")
+@RequiredArgsConstructor
+public class AlipayController  extends BaseController {
+
+    private final AlipayService alipayService;
+
+
+    @PostMapping("/bind")
+    @Operation(summary = "工号绑定支付宝",
+            description = "工号绑定支付宝")
+    public HttpResult<Object> bind(@RequestBody AlipayBindVo alipayBindVo) throws AlipayApiException {
+        return alipayService.bind(alipayBindVo);
+    }
+}

+ 37 - 0
authentication/src/main/java/com/jzg/controller/AuthController.java

@@ -5,10 +5,12 @@ import cn.hutool.crypto.BCUtil;
 import cn.hutool.crypto.SmUtil;
 import cn.hutool.crypto.asymmetric.SM2;
 import com.alibaba.fastjson.JSONObject;
+import com.alipay.api.AlipayConfig;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.annotation.IgnoreTenant;
 import com.jzg.commons.constants.EncryptionConstants;
+import com.jzg.commons.entity.po.SysUserJzgApp;
 import com.jzg.commons.request.RequestSingleParam;
 import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.MinioUtils;
@@ -30,8 +32,11 @@ import com.jzg.entity.vo.ModifyPassWordFormVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.handler.JzgAuthenticationSuccessHandler;
 import com.jzg.mapper.SysUploadFilesMapper;
+import com.jzg.mapper.SysUserJzgAppMapper;
+import com.jzg.service.AlipayService;
 import com.jzg.service.SysUserService;
 import com.jzg.commons.util.ImageUtil;
+import com.jzg.service.WechatService;
 import com.wf.captcha.SpecCaptcha;
 import com.wf.captcha.base.Captcha;
 import io.swagger.v3.oas.annotations.Operation;
@@ -41,6 +46,10 @@ import jakarta.servlet.ServletException;
 import jakarta.servlet.ServletOutputStream;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.mp.api.WxMpService;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.tomcat.util.http.fileupload.IOUtils;
 import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
@@ -62,6 +71,7 @@ import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.security.*;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.Random;
 import java.util.concurrent.TimeUnit;
@@ -74,6 +84,7 @@ import java.util.regex.Pattern;
 @Tag(name="授权接口")
 @RestController
 @RequestMapping("/auth")
+@Slf4j
 public class AuthController extends BaseController {
 
     @Value("${minio.bucket-name}")
@@ -97,6 +108,15 @@ public class AuthController extends BaseController {
     @Autowired
     SysUploadFilesMapper sysUploadFilesMapper;
 
+    @Autowired
+    private WechatService wechatService;
+
+    @Autowired
+    private AlipayService alipayService;
+
+    @Autowired
+    private SysUserJzgAppMapper sysUserJzgAppMapper;
+
     /**
      * 登录接口
      * @param loginFormVo
@@ -117,6 +137,15 @@ public class AuthController extends BaseController {
         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
         HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
         if(loginFormVo.getSystem().equals("APP")){
+
+            String weOpenId = null;
+            String aliOpenId = null;
+            if(loginFormVo.getType().equals(0)){
+                weOpenId = wechatService.auth(loginFormVo);
+
+            }else if(loginFormVo.getType().equals(1)){
+                aliOpenId = alipayService.auth(loginFormVo);
+            }
             SysUser userById = sysUserService.getOne(new LambdaQueryWrapper<SysUser>()
                     .eq(SysUser::getMobile, loginFormVo.getUserName()));
             if(Objects.isNull(userById)) {
@@ -126,6 +155,12 @@ public class AuthController extends BaseController {
                 appRegisterFormVo.setCaptcha(loginFormVo.getCaptcha());
                 appRegisterFormVo.setCaptchaId(loginFormVo.getCaptchaId());
                 appRegisterFormVo.setSmsCode(loginFormVo.getSmsCode());
+                if(StringUtils.isNotBlank(weOpenId)){
+                    appRegisterFormVo.setOpenId(weOpenId);
+                }
+                if(StringUtils.isNotBlank(aliOpenId)){
+                    appRegisterFormVo.setAlipay(aliOpenId);
+                }
                 register(appRegisterFormVo);
             }
         }
@@ -137,6 +172,8 @@ public class AuthController extends BaseController {
     }
 
 
+
+
     @GetMapping("captchaById")
     @Operation(summary = "获取验证码通过用户ID",
                 description = "获取验证码通过用户ID")

+ 35 - 0
authentication/src/main/java/com/jzg/controller/WechatController.java

@@ -0,0 +1,35 @@
+package com.jzg.controller;
+
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.vo.WechatBindVo;
+import com.jzg.service.WechatService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+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.RestController;
+
+@Slf4j
+@Tag(name="微信授权接口")
+@RestController
+@RequestMapping("/wechat")
+@RequiredArgsConstructor
+public class WechatController extends BaseController {
+
+    private final WechatService wechatService;
+
+
+    @PostMapping("/bind")
+    @Operation(summary = "工号绑定微信",
+            description = "工号绑定微信")
+    public HttpResult<Object> bind(@RequestBody WechatBindVo wechatBindVo){
+        return wechatService.bind(wechatBindVo);
+
+    }
+
+
+}

+ 27 - 0
authentication/src/main/java/com/jzg/entity/SysUser.java

@@ -1,6 +1,8 @@
 package com.jzg.entity;
 
 import com.jzg.commons.core.base.BaseModel;
+import com.jzg.commons.entity.po.SysUserJzgApp;
+import com.jzg.commons.exception.SystemException;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -29,4 +31,29 @@ public class SysUser extends BaseModel {
     @Schema(description = "账号状态")
     private Integer accountStatus;
 
+
+    /**
+     * 验证用户
+     *
+     * @author: lig
+     * @date: 2023年07月03日 0003
+     */
+    public static void verifyUser(SysUser user) {
+        if(user.getAccountStatus().equals(1)){
+            throw new SystemException("账号已被锁定,请联系管理员");
+        }
+    }
+
+    public static void verifyUserApp(SysUserJzgApp sysUser) {
+        if (sysUser == null) {
+            throw new SystemException("账号不存在");
+        }
+        if (sysUser.getStatus() != 5) {
+            throw new SystemException("新注册用户需要审核,请联系管理员");
+        }
+        // 账号锁定
+        if(sysUser.getIsEnable().equals(1)){
+            throw new SystemException("账号已被禁用,请联系管理员");
+        }
+    }
 }

+ 8 - 0
authentication/src/main/java/com/jzg/entity/vo/AlipayBindVo.java

@@ -0,0 +1,8 @@
+package com.jzg.entity.vo;
+
+import lombok.Data;
+
+@Data
+public class AlipayBindVo {
+    private String code;
+}

+ 7 - 0
authentication/src/main/java/com/jzg/entity/vo/AppRegisterFormVo.java

@@ -1,5 +1,6 @@
 package com.jzg.entity.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
@@ -22,4 +23,10 @@ public class AppRegisterFormVo {
 
     @Schema(description = "验证码")
     private String captcha;
+
+    @Schema(description = "微信id")
+    private String openId;
+
+    @Schema(description = "支付宝id")
+    private String alipay;
 }

+ 7 - 0
authentication/src/main/java/com/jzg/entity/vo/LoginFormVo.java

@@ -25,4 +25,11 @@ public class LoginFormVo {
     @Schema(description = "短信验证码")
     private String smsCode;
 
+    @Schema(description = "授权code")
+    private String code;
+
+    @Schema(description = "授权类型 0.微信 1.支付宝")
+    private String type;
+
+
 }

+ 15 - 0
authentication/src/main/java/com/jzg/entity/vo/WechatBindVo.java

@@ -0,0 +1,15 @@
+package com.jzg.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class WechatBindVo implements Serializable {
+
+
+    private static final long serialVersionUID = 417994839522017663L;
+
+    private String code;
+
+}

+ 6 - 6
authentication/src/main/java/com/jzg/handler/JzgAuthenticationSuccessHandler.java

@@ -69,14 +69,14 @@ public class JzgAuthenticationSuccessHandler implements AuthenticationSuccessHan
         response.setContentType("application/json");
         JSONObject json = new JSONObject();
         JSONObject data = new JSONObject();
-        data.put("token",token);
-        data.put("isFirst",isFirst);
-        json.put("code",200);
-        json.put("msg","login success");
-        json.put("data",data);
+//        data.put("token",token);
+//        data.put("isFirst",isFirst);
 //        json.put("code",200);
 //        json.put("msg","login success");
-//        json.put("data",token);
+//        json.put("data",data);
+        json.put("code",200);
+        json.put("msg","login success");
+        json.put("data",token);
         // 将 Token 返回给前端
         response.getWriter().write(json.toJSONString());
 

+ 19 - 0
authentication/src/main/java/com/jzg/service/AlipayService.java

@@ -0,0 +1,19 @@
+package com.jzg.service;
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.vo.AlipayBindVo;
+import com.jzg.entity.vo.LoginFormVo;
+
+public interface AlipayService {
+
+    /**
+     * 绑定微信
+     */
+    HttpResult<Object> bind(AlipayBindVo alipayBindVo);
+
+    /**
+     * 支付宝授权
+     * @return
+     */
+    String auth(LoginFormVo loginFormVo);
+}

+ 26 - 0
authentication/src/main/java/com/jzg/service/WechatService.java

@@ -0,0 +1,26 @@
+package com.jzg.service;
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.entity.vo.LoginFormVo;
+import com.jzg.entity.vo.WechatBindVo;
+
+public interface WechatService {
+
+//    /**
+//     * 微信登录
+//     */
+//    SysUserJzgApp login(WechatLoginVo code);
+
+    /**
+     * 绑定微信
+     */
+    HttpResult<Object> bind(WechatBindVo wechatBindVo);
+
+    /**
+     * 微信授权
+     *
+     * @param loginFormVo
+     * @return
+     */
+    String auth(LoginFormVo loginFormVo);
+}

+ 112 - 0
authentication/src/main/java/com/jzg/service/impl/AlipayServiceImpl.java

@@ -0,0 +1,112 @@
+package com.jzg.service.impl;
+
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.AlipayConfig;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.request.AlipaySystemOauthTokenRequest;
+import com.alipay.api.response.AlipaySystemOauthTokenResponse;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysUserJzgApp;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.entity.SysUser;
+import com.jzg.entity.vo.AlipayBindVo;
+import com.jzg.entity.vo.LoginFormVo;
+import com.jzg.mapper.SysUserJzgAppMapper;
+import com.jzg.service.AlipayService;
+import com.jzg.service.SysUserService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.Objects;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class AlipayServiceImpl implements AlipayService {
+
+    private final SysUserJzgAppMapper sysUserJzgAppMapper;
+
+    private final SysUserService sysUserService;
+    @Override
+    public HttpResult<Object> bind(AlipayBindVo alipayBindVo) {
+        String aliPayId = null;
+        AlipayClient alipayClient = null;
+        try {
+            alipayClient = new DefaultAlipayClient(getAlipayConfig());
+            // 构造请求参数以调用接口
+            AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
+            // 设置授权码
+            request.setCode(alipayBindVo.getCode());
+            // 设置授权方式
+            request.setGrantType("authorization_code");
+
+            AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
+            aliPayId = response.getUserId();
+        } catch (AlipayApiException e) {
+            throw new RuntimeException(e);
+        }
+        LambdaQueryWrapper<SysUserJzgApp> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysUserJzgApp::getAlipay, aliPayId);
+        SysUserJzgApp userJzgApp = sysUserJzgAppMapper.selectOne(wrapper);
+        if (userJzgApp == null) {
+            throw new SystemException("工号不存在");
+        }
+        userJzgApp.setAlipay(aliPayId);
+        int updateCount = sysUserJzgAppMapper.updateById(userJzgApp);
+
+        if (updateCount > 0) {
+            return HttpResult.ok("绑定成功");
+        }
+        throw new SystemException("绑定失败");
+    }
+
+    @Override
+    public String auth(LoginFormVo loginFormVo) {
+        String aliPayId = null;
+        AlipayClient alipayClient = null;
+        try {
+            alipayClient = new DefaultAlipayClient(getAlipayConfig());
+            // 构造请求参数以调用接口
+            AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
+            // 设置授权码
+            request.setCode(loginFormVo.getCode());
+            // 设置授权方式
+            request.setGrantType("authorization_code");
+
+            AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
+            aliPayId = response.getUserId();
+        } catch (AlipayApiException e) {
+            throw new RuntimeException(e);
+        }
+        if(StringUtils.isBlank(loginFormVo.getUserName())){
+            LambdaQueryWrapper<SysUserJzgApp> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(SysUserJzgApp::getAlipay, aliPayId);
+            SysUserJzgApp userJzgApp = sysUserJzgAppMapper.selectOne(wrapper);
+            if(Objects.nonNull(userJzgApp)){
+                SysUser user = sysUserService.getById(userJzgApp.getUserId());
+                loginFormVo.setUserName(user.getMobile());
+                loginFormVo.setPassWord(user.getPassword());
+            }
+        }
+
+        return aliPayId;
+    }
+
+    private static AlipayConfig getAlipayConfig() {
+        String privateKey  = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCmb0GfNv7ex5SmUiBnMn3szFP4XM5c8KnYll6HGoFCQTxwMSVYq652ELBtGAScqV9QOVcF/1Z1NF+a0AabGd0qSKKsPOhHNg3vG4yHHs4gwOdqFxwjATXqgHaZXSIQGnoPUJ3J05AlYLlinm9oOoTAY68880pM9h9d7t4Aq4WqVfnGteNaV5+oaV/KgX2OGo7m3WPR+e5Yjl9xxYXjVF1Uv7hznNER74KuYhRP44759lgfo0RlncGXuaygKHoxCpKTozGmvedP0hTO/WJTEi5l11Gp4mfMN9Gb/VtjsRDJaCFMmXU19UcHOFxyFOrKoyNYxdj3ue07/l51l4+8TVyJAgMBAAECggEBAJGR09qW9nsSIxEJ2e+I+RzpZjRfr9sYX+XhN1KBuzag6mTSh3Cz0IbReA4jKL2BYq0/Sb8kIpGmukwk0PJNv+Rg3W86YosOW0ecV+BC8FUzg/SFvAVd5LNzosfm7okZL1M/1pKVaYlXvS3ll1mZfUzso3Py8zS3PJ4i86ewXdupp2HcQt8c5O57lkzdhi35a38k9RrrSsYgnUClAMFWvmN4x1v7vuddzW0/q5Ztg1k9Ukz209dMOIc5cZ8+zyX5PO0rEofUETMtF5D5N2qtsMsMlDxvYq7aQoNq5I1p8e2mjZv5U7EvkLENTZmPRtAdddut1LGACU0AAlvvOOgu9wECgYEA27Q/EuQPfFh/aOYyi6zq0AWFN2U+tN/y3/nAvGymisdp6c2q1s6ESvENJep7v9PR/cownHKIllTJbzh03DKrQd0LYJrh4CFr6xv5DSUXMft5+6Te+t1FpULqhtkVLcqqTSqMRo8Yl/QMDxI6mRd4pmEFscOIEW+5lzyofxfL7mECgYEAwe4hNIyz2b/uBCCUMPA8CL8kJILqw0ZHB4EekoLugqYHAi3LPCDpJzFJ3pcZXjUdH9TUKQp67eizk+xedfFdicm0ENzPqCoUPidT88QZImaP8uP2LblTlxNCDf8D15BQzBHDlTDN+2tzFi7qAb3v2mgK5U9WGOOkicmMGzv8jykCgYARP3hIKmFQ2L2/5XqIXp3ckOJhc/BVUNOHY9sOr9TvRjJ5aW0FChd2rq/ijyMB70YoD2x7i75PVv6tXZhHBS9Or2TKQ76B0v3e6kZGEuhcQyrTZ6EdvqtOCw/QYFB6VNPD1RhIHcnHfCBKOpshE6ekIC/LQdd3zvaZ+egceijHYQKBgDgN250z2jxjZKnevNbUaZXhodHH4ZGl+5vor2yL2eL7mGUB1Y/At4OzlHV5WUTIt21e+CAQvm2L6HQmSztuE6pjGeAR4xfpacZ5WaPJF7bAzHTZfWvD+KxfTaV8A6FIPoJt1AmIfNFiQna0AsGUJAMONbAIWYuCKSoGjq/EjADZAoGAS0ZaZdPKKQnd4g/lqM8CnHTfhW11ANP/rPZDU+NvjW2jQ6SIdJhwJaKMEQCcDp63j0SADlghzrvm+KMbnTrFqTHlAizcFxnOOOxO1pKXKuOJWWsyNBN33suB3XPFrsobEtmtnWyvph1GoAZOX457RN5LSmBTbqpbyEsjKg/W1zc=";
+        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArP+St5P9dLhPmm/ggf3jPDc2552wu/+91QSAzlEqRSrdWAIwrHcntM0VY/4/+39Z8h44/0TBNTb0j1gdWrCyb+1ENxwwgCqs7f8C/5gClTQCcoNys4MtGAAM7BbNp/LzmswOuPTOMtjlUBArWFvJDgDoSQJ8vGwGHgRcLsSLPwlhwVdnqVbq60CI185U/yZgNITTCGpDXv5bnQQ26GrUbH+5Qm4fYmT2B/2ijAVJUYq+EaBMOyv+AD8C1+CtXcgH86+g13MdD1T8cw5nkV9/4fcPIWD8R1aj20C1+kCMujaydB4yDpHiqQcQEtJoVbZJk5MYp8JcctqDT01brVct5wIDAQAB";
+        AlipayConfig alipayConfig = new AlipayConfig();
+        alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
+        alipayConfig.setAppId("2021004153668213");
+        alipayConfig.setPrivateKey(privateKey);
+        alipayConfig.setFormat("json");
+        alipayConfig.setAlipayPublicKey(alipayPublicKey);
+        alipayConfig.setCharset("UTF-8");
+        alipayConfig.setSignType("RSA2");
+        return alipayConfig;
+    }
+}

+ 2 - 0
authentication/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java

@@ -48,6 +48,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         sysUserJzgApp.setUserId(sysUser.getId());
         sysUserJzgApp.setIsEnable(0);
         sysUserJzgApp.setStatus(0);
+        sysUserJzgApp.setOpenId(appRegisterFormVo.getOpenId());
+        sysUserJzgApp.setAlipay(appRegisterFormVo.getAlipay());
         sysUserJzgAppMapper.insert(sysUserJzgApp);
         return true;
     }

+ 108 - 0
authentication/src/main/java/com/jzg/service/impl/WechatServiceImpl.java

@@ -0,0 +1,108 @@
+package com.jzg.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysUserJzgApp;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.entity.SysUser;
+import com.jzg.entity.vo.LoginFormVo;
+import com.jzg.entity.vo.WechatBindVo;
+import com.jzg.mapper.SysUserJzgAppMapper;
+import com.jzg.service.SysUserService;
+import com.jzg.service.WechatService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.mp.api.WxMpService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.Objects;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class WechatServiceImpl implements WechatService {
+
+    @Value("${pyramid.dept.id}")
+    private String pyramid;
+
+    private final SysUserJzgAppMapper sysUserJzgAppMapper;
+
+    private final SysUserService sysUserService;
+
+    private final Map<String, WxMpService> wxMpService;
+
+//    @Override
+//    public SysUserJzgApp login(WechatLoginVo wechatLoginVo){
+//        WxOAuth2AccessToken accessToken = null;
+//        try{
+//            accessToken = wxMpService.get(wechatLoginVo.getSystemCode()).getOAuth2Service().getAccessToken(wechatLoginVo.getCode());
+//        }catch (WxErrorException e){
+//            log.info(e.getMessage());
+//            throw new SystemException("微信授权失败");
+//        }
+//        String openId = accessToken.getOpenId();
+//        LambdaQueryWrapper<SysUserJzgApp> wrapper = new LambdaQueryWrapper<>();
+//        wrapper.eq(SysUserJzgApp::getOpenId, openId);
+//        SysUserJzgApp sysUser = sysUserJzgAppMapper.selectOne(wrapper);
+//        SysUser.verifyUserApp(sysUser);
+//        return sysUser;
+//    }
+
+    @Override
+    public HttpResult<Object> bind(WechatBindVo wechatBindVo){
+
+        WxOAuth2AccessToken accessToken = null;
+        try{
+            accessToken = wxMpService.get("app").getOAuth2Service().getAccessToken(wechatBindVo.getCode());
+        }catch (WxErrorException e){
+            log.info(e.getMessage());
+            throw new SystemException("微信授权失败");
+        }
+        String openId = accessToken.getOpenId();
+        LambdaQueryWrapper<SysUserJzgApp> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(SysUserJzgApp::getOpenId, openId);
+        SysUserJzgApp userJzgApp = sysUserJzgAppMapper.selectOne(wrapper);
+        if (userJzgApp == null) {
+            throw new SystemException("工号不存在");
+        }
+        userJzgApp.setOpenId(openId);
+        int updateCount = sysUserJzgAppMapper.updateById(userJzgApp);
+
+        if (updateCount > 0) {
+            return HttpResult.ok("绑定成功");
+        }
+        throw new SystemException("绑定失败");
+    }
+
+    @Override
+    public String auth(LoginFormVo loginFormVo) {
+        String openId = null;
+        WxOAuth2AccessToken accessToken = null;
+        try{
+            accessToken = wxMpService.get("app").getOAuth2Service().getAccessToken(loginFormVo.getCode());
+        }catch (WxErrorException e){
+            log.info(e.getMessage());
+            throw new SystemException("微信授权失败");
+        }
+        openId = accessToken.getOpenId();
+
+        if(StringUtils.isBlank(loginFormVo.getUserName())){
+            LambdaQueryWrapper<SysUserJzgApp> wrapper = new LambdaQueryWrapper<>();
+            wrapper.eq(SysUserJzgApp::getOpenId, openId);
+            SysUserJzgApp userJzgApp = sysUserJzgAppMapper.selectOne(wrapper);
+            if(Objects.nonNull(userJzgApp)){
+                SysUser user = sysUserService.getById(userJzgApp.getUserId());
+                loginFormVo.setUserName(user.getMobile());
+                loginFormVo.setPassWord(user.getPassword());
+            }
+        }
+        return openId;
+    }
+
+
+}

+ 6 - 0
authentication/src/main/resources/application-dev.yml

@@ -44,3 +44,9 @@ seata:
       password: nacos
       # registry.conf中,配置cluster名称
       cluster: default
+wechat:
+  open:
+    properties:
+      app:
+        componentAppId: wx612ca90988c46947
+        componentSecret: 75b7d4cda453b2075dec23f849278bc0

+ 4 - 1
gateway/src/main/java/com/jzg/config/CorsConfig.java

@@ -18,6 +18,7 @@ public class CorsConfig {
         corsConfiguration.addAllowedOrigin("http://localhost:9000");
         corsConfiguration.addAllowedOrigin("http://localhost:9001");
         corsConfiguration.addAllowedOrigin("http://127.0.0.1:9000");
+        corsConfiguration.addAllowedOrigin("http://127.0.0.1:9001");
         corsConfiguration.addAllowedOrigin("http://192.168.0.149:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.0.253:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.0.69:9000");
@@ -29,6 +30,8 @@ public class CorsConfig {
         corsConfiguration.addAllowedOrigin("http://192.168.0.20:9001");
         corsConfiguration.addAllowedOrigin("http://192.168.0.22:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.0.22:9001");
+        corsConfiguration.addAllowedOrigin("http://192.168.0.55:9000");
+        corsConfiguration.addAllowedOrigin("http://192.168.0.55:9001");
         corsConfiguration.addAllowedOrigin("http://192.168.0.106:8001");
         corsConfiguration.addAllowedOrigin("http://192.168.0.106:9001");
         corsConfiguration.addAllowedOrigin("http://192.168.0.106:9000");
@@ -51,4 +54,4 @@ public class CorsConfig {
     }
 
 
-}
+}

+ 13 - 12
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/api/component/GuorenDuplicateInsuranceComponent.java

@@ -1,9 +1,9 @@
 package com.jzg.quotation.guoren.api.component;
 
 import cn.hutool.core.lang.Assert;
-import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpResponse;
-import cn.hutool.json.JSONUtil;
+//import cn.hutool.http.HttpRequest;
+//import cn.hutool.http.HttpResponse;
+//import cn.hutool.json.JSONUtil;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -246,13 +246,14 @@ public class GuorenDuplicateInsuranceComponent {
 
     public static String sendPost(String url,String bodyStr){
         System.err.println("请求[post、json、body]参数:"+bodyStr);
-        HttpRequest request = HttpRequest.post(url)
-                .header("Content-Type", "application/json")//以json的方式传递
-//     .header("authorization","Bearer abcdefghijklmnopqrstuvwxyz")
-                .body(bodyStr);
-
-        HttpResponse response = request.execute();
-        String respStr = response.body();
+//        HttpRequest request = HttpRequest.post(url)
+//                .header("Content-Type", "application/json")//以json的方式传递
+////     .header("authorization","Bearer abcdefghijklmnopqrstuvwxyz")
+//                .body(bodyStr);
+//
+//        HttpResponse response = request.execute();
+//        String respStr = response.body();
+        String respStr = "";
         System.err.println("返回[post、json、body]参数:"+ respStr);
 
         return respStr;
@@ -270,8 +271,8 @@ public class GuorenDuplicateInsuranceComponent {
         bodyMap.put("syImage", toString(syImageStr, ""));
         String sendBody = toJson(bodyMap);
         String ocrStr = sendPost("http://39.98.41.104:8088/getres", sendBody);
-        return JSONUtil.toBean(ocrStr, CheckCodeResp.class);
-
+//        return JSONUtil.toBean(ocrStr, CheckCodeResp.class);
+        return null;
     }