Pārlūkot izejas kodu

公众号登录

he2802 4 gadi atpakaļ
vecāks
revīzija
df8587ccea

+ 3 - 0
zhongzheng-admin/src/main/resources/application.yml

@@ -244,6 +244,9 @@ wx:
   small:
     appid: wx8295c6fa6b0b3106
     appsecret: 2a95e366da4c4b17a3963e9756b878fd
+  gzh:
+    appid: wx6f48f721d18244eb
+    appsecret: 2f8b2b4ff66e2f6adfb9f08ae22d7474
   wepay:
     mchid: 1342013901
     key: GdXyPxYjZx1234123yJzXgDxYpXyjpx9

+ 14 - 0
zhongzheng-api/src/main/java/com/zhongzheng/controller/wx/WxLoginController.java

@@ -66,6 +66,20 @@ public class WxLoginController
         return AjaxResult.success(map);
     }
 
+    /**
+     * 公众号登录方法
+     *
+     * @param loginBody 登公众号录信息
+     * @return 结果
+     */
+    @ApiOperation("公众号登录")
+    @PostMapping("/gzh_login")
+    public AjaxResult gzh_login(@RequestBody WxLoginBody loginBody)
+    {
+        Map<String,String> map = wxLoginService.gzh_login(loginBody);
+        return AjaxResult.success(map);
+    }
+
     @ApiOperation("刷新令牌")
     @GetMapping("/refreshToken/{unionId}")
     public AjaxResult refreshToken(@PathVariable("unionId") String unionId)

+ 3 - 0
zhongzheng-api/src/main/resources/application.yml

@@ -241,6 +241,9 @@ wx:
   small:
     appid: wx8295c6fa6b0b3106
     appsecret: 2a95e366da4c4b17a3963e9756b878fd
+  gzh:
+    appid: wx6f48f721d18244eb
+    appsecret: 2f8b2b4ff66e2f6adfb9f08ae22d7474
   wepay:
     mchid: 1342013901
     key: GdXyPxYjZx1234123yJzXgDxYpXyjpx9

+ 1 - 1
zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/SecurityConfig.java

@@ -101,7 +101,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 // 过滤请求
                 .authorizeRequests()
                 // 对于登录login 验证码captchaImage 允许匿名访问
-                .antMatchers("/login", "/captchaImage", "/testLogin","/wx/pay/callback").anonymous()
+                .antMatchers("/login", "/captchaImage", "/testLogin","/wx/pay/callback","/gzh_login").anonymous()
                 .antMatchers("/aliyun/oss/callback").anonymous()
                 .antMatchers(
                         HttpMethod.GET,

+ 51 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/web/service/WxLoginService.java

@@ -44,10 +44,25 @@ public class WxLoginService
     @Value("${wx.small.appsecret}")
     private String appsrcret;
 
+
     private String wxAuthUrl = "https://api.weixin.qq.com/sns/jscode2session";
 
     private String wxAuthParam = "appid=%s&secret=%s&js_code=%s&grant_type=authorization_code";
 
+    @Value("${wx.gzh.appid}")
+    private String gzh_appid;
+
+    @Value("${wx.gzh.appsecret}")
+    private String gzh_appsrcret;
+
+    private String gzh_wxAuthUrl = "https://api.weixin.qq.com/sns/oauth2/access_token";
+
+    private String gzh_wxAuthParam = "appid=%s&secret=%s&code=%s&grant_type=authorization_code";
+
+    private String gzh_wxUserInfoUrl = "https://api.weixin.qq.com/sns/userinfo";
+
+    private String gzh_wxUserInfoParam = "access_token=%s&openid=%s&lang=zh_CN";
+
     @Autowired
     private IUserService iUserService;
 
@@ -82,6 +97,19 @@ public class WxLoginService
         return map;
     }
 
+    public Map<String,String> gzh_login(WxLoginBody loginBody) {
+        User user = getWxGzhUnionIdUser(loginBody);
+        if(user==null){
+            throw new CustomException("登录错误");
+        }
+        ClientLoginUser loginUser = new ClientLoginUser();
+        loginUser.setUser(user);
+        Map<String,String> map = new HashMap<>();
+        map.put(Constants.TOKEN,wxTokenService.createToken(loginUser));
+        map.put("union_id",loginUser.getUser().getUnionId());
+        return map;
+    }
+
     public String refreshToken(String unionId) {
         User user = iUserService.queryByUnionId(unionId);
         if(user==null){
@@ -136,6 +164,7 @@ public class WxLoginService
         return true;
     }
 
+    //小程序获取用户信息
     public User getWxUnionIdUser(WxLoginBody loginBody) {
         String param = String.format(wxAuthParam, appid, appsrcret, loginBody.getCode());
         String resultString  = HttpUtils.sendGet(wxAuthUrl,param);
@@ -155,6 +184,28 @@ public class WxLoginService
         return user;
     }
 
+    //公众号获取用户信息
+    public User getWxGzhUnionIdUser(WxLoginBody loginBody) {
+        String param = String.format(gzh_wxAuthParam, gzh_appid, gzh_appsrcret, loginBody.getCode());
+        String resultString  = HttpUtils.sendGet(gzh_wxAuthUrl,param);
+        System.out.println(resultString);
+        //解析json
+        JSONObject jsonObject = (JSONObject) JSONObject.parse(resultString);
+        String access_token = String.valueOf(jsonObject.get("access_token"));
+        String openId = String.valueOf(jsonObject.get("openid"));
+
+        String userInfoParam = String.format(gzh_wxUserInfoParam, access_token, openId);
+        String userInfoResultString  = HttpUtils.sendGet(gzh_wxUserInfoUrl,userInfoParam);
+        //解析json
+        JSONObject jsonObject1 = (JSONObject) JSONObject.parse(userInfoResultString);
+        String unionId = String.valueOf(jsonObject1.get("unionid"));
+        User user = iUserService.queryByUnionId(unionId);
+        if(user==null){
+            throw new CustomException("您尚未注册,请前往小程序注册");
+        }
+        return user;
+    }
+
     public String obtainWxPhone(String iv, String encryptedData,String session_key){
         String userInfo = null;
         JSONObject userInfoJSON = null;

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java

@@ -41,6 +41,8 @@ public interface IOrderService extends IService<Order> {
 
 	Map<String, String> placeOrder(OrderAddBo bo);
 
+	Map<String, String> placeGzhOrder(OrderAddBo bo);
+
 	/**
 	 * 根据编辑业务对象修改订单
 	 * @param bo 订单编辑业务对象

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -164,6 +164,11 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return result;
     }
 
+    @Override
+    public Map<String, String> placeGzhOrder(OrderAddBo bo) {
+        return null;
+    }
+
     @Override
     public Boolean updateByEditBo(OrderEditBo bo) {
         Order update = BeanUtil.toBean(bo, Order.class);

+ 0 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/bo/WxLoginBody.java

@@ -24,7 +24,6 @@ public class WxLoginBody {
 
     /** iv */
     @ApiModelProperty("iv")
-    @NotBlank(message = "iv不能为空")
     private String iv;
 
     /** code */
@@ -34,7 +33,6 @@ public class WxLoginBody {
 
     /** encryptedData */
     @ApiModelProperty("encryptedData")
-    @NotBlank(message = "encryptedData不能为空")
     private String encryptedData;
 
     @ApiModelProperty("邀请码")