From 6d78f8ab222498d727e91983d0511d8119d95aa3 Mon Sep 17 00:00:00 2001
From: 935090232@qq.com <ak473600000>
Date: Mon, 24 Jan 2022 19:34:42 +0800
Subject: [PATCH] Merge branch 'score_shop' into api_score_meger

---
 zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java |  140 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 139 insertions(+), 1 deletions(-)

diff --git a/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java b/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
index f3e8702..ed9b2c4 100644
--- a/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
+++ b/zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
@@ -1,5 +1,8 @@
 package com.matrix.system.app.action;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.matrix.component.tools.HttpCurlUtil;
 import com.matrix.core.pojo.AjaxResult;
 import com.matrix.core.tools.*;
 import com.matrix.system.app.authority.AppAuthorityManager;
@@ -8,9 +11,14 @@
 import com.matrix.system.app.vo.UserInfoVo;
 import com.matrix.system.common.authority.strategy.AccountPasswordLogin;
 import com.matrix.system.common.authority.strategy.LoginStrategy;
+import com.matrix.system.common.bean.SysCompany;
 import com.matrix.system.common.bean.SysUsers;
+import com.matrix.system.common.constance.AppConstance;
 import com.matrix.system.common.dao.BusParameterSettingsDao;
 import com.matrix.system.common.init.LocalCache;
+import com.matrix.system.common.init.UserCacheManager;
+import com.matrix.system.common.interceptor.HostInterceptor;
+import com.matrix.system.common.service.SysCompanyService;
 import com.matrix.system.common.service.SysUsersService;
 import com.matrix.system.common.tools.PasswordUtil;
 import com.matrix.system.common.tools.UploadUtil;
@@ -19,10 +27,12 @@
 import com.matrix.system.hive.plugin.util.CollectionUtils;
 import com.matrix.system.hive.plugin.util.ImageUtil;
 import com.matrix.system.hive.service.SysShopInfoService;
+import com.matrix.system.shopXcx.api.WeChatApiTools;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
+import net.sf.json.JSONObject;
 import org.apache.commons.fileupload.FileUploadException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -62,18 +72,29 @@
     @Autowired
     private BusParameterSettingsDao busParameterSettingsDao;
 
+    @Autowired
+    private SysCompanyService sysCompanyService;;
+
+    @Autowired
+    WeChatApiTools weChatApiTools;
+
+    @Autowired
+    private UserCacheManager userCacheManager;
 
     @Value("${file_storage_path}")
     private String fileStoragePath;
     @Value("${static_resource_url}")
     private String nginxUrl;
 
+    @Value("${login_public_key}")
+    private String publicKey;
+
     @ApiOperation(value = "登陆接口", notes = "手机端登陆接口")
     @ApiResponses({
             @ApiResponse(code = 200, message = "OK",  response = UserInfoVo.class)
     })
     @PostMapping(value = "/login")
-    public AjaxResult login(@RequestBody @Validated LoginDto loginDto) {
+    public AjaxResult login(@RequestBody @Validated LoginDto loginDto) throws Exception {
 
         SysUsers user = new SysUsers();
         user.setSuAccount(loginDto.getUsername());
@@ -97,10 +118,12 @@
         userInfoVo.setRoleName(user.getRoleName());
         userInfoVo.setPhoto(user.getSuPhoto());
 
+        String sb = token + "_1" + "_/api/vip/findVipInfoById/972";
         AjaxResult result = AjaxResult.buildSuccessInstance("登陆成功");
         authorityManager.initUserPower(result,user);
         result.putInMap("user", userInfoVo);
         result.putInMap("token", token);
+        result.putInMap("rasToken", RSAUtils.encryptByPublicKey(sb, publicKey));
         return result;
     }
 
@@ -247,6 +270,121 @@
     }
 
 
+    @ApiOperation(value = "根据企业编码获取对应的请求地址")
+    @PostMapping(value = "/getUrlByCompanyCode")
+    public AjaxResult getUrlByCompanyCode(@RequestBody SettingDto codeDto) {
+        SysCompany query = new SysCompany();
+        query.setComCode(codeDto.getCode());
+        List<SysCompany> list = sysCompanyService.findByModel(query);
+        if (CollUtil.isEmpty(list)) {
+            return new AjaxResult(AjaxResult.STATUS_FAIL, "企业编码有误");
+        }
 
+        AjaxResult ajaxResult = new AjaxResult();
+        ajaxResult.setStatus(AjaxResult.STATUS_SUCCESS);
+        ajaxResult.putInMap("url", list.get(0).getComWebUrl());
+        return ajaxResult;
+    }
+
+    @ApiOperation(value = "管理端小程序登录")
+    @PostMapping(value = "/wxLogin/{code}")
+    public AjaxResult wxLogin(@PathVariable("code") String code) throws IOException {
+        if (StrUtil.isBlank(code)) {
+            return AjaxResult.buildFailInstance("code不存在");
+        }
+        AjaxResult res = new AjaxResult();
+        String requrl = weChatApiTools.getManagerXcxLoginUrl(code);
+
+        String resultData = HttpCurlUtil.sendGetHttp(requrl, null);
+        JSONObject json = JSONObject.fromObject(resultData);
+        LogUtil.debug("管理端小程序登录获取到登录信息={}", json);
+
+        if (json.containsKey("errcode")) {
+            res.setStatus(AjaxResult.STATUS_FAIL);
+            res.setInfo("自动登录失败");
+            LogUtil.info("微信登录获取到异常信息errcode");
+            return res;
+        }
+
+        String openId = json.getString("openid");
+        res.setStatus(AjaxResult.STATUS_SUCCESS);
+        res.putInMap("openId", openId);
+        SysUsers hasBind = sysUsersService.findByOpenId(openId, HostInterceptor.getCompanyId());
+        if (hasBind == null) {
+            res.setInfo("未绑定用户");
+            return res;
+        }
+
+        String token = userCacheManager.saveUserInfo(hasBind);
+        LogUtil.info("用户token={}", token);
+
+        authorityManager.initUserPower(res, hasBind);
+
+        UserInfoVo userInfoVo = new UserInfoVo();
+        if(hasBind.getShopId()!=null){
+            SysShopInfo shopInfo = sysShopInfoService.findById(hasBind.getShopId());
+            hasBind.setShopName(shopInfo.getShopName());
+            userInfoVo.setShopName(shopInfo.getShopShortName());
+        }
+
+        userInfoVo.setId(hasBind.getSuId());
+        userInfoVo.setName(hasBind.getSuName());
+        userInfoVo.setRoleName(hasBind.getRoleName());
+        userInfoVo.setPhoto(hasBind.getSuPhoto());
+
+        res.putInMap("token", token);
+        res.putInMap("userInfo", userInfoVo);
+        return res;
+    }
+
+    @ApiOperation(value = "绑定用户")
+    @PostMapping(value = "/bindUser")
+    public AjaxResult bindUser(@RequestBody @Validated LoginDto loginDto) {
+        SysUsers user = new SysUsers();
+        user.setSuAccount(loginDto.getUsername());
+        user.setSuPassword(loginDto.getPassword());
+        LoginStrategy apLogin = new AccountPasswordLogin(user, sysUsersService);
+        user = authorityManager.login(apLogin);
+        user.setSuPassword(null);
+        user.setOpenIds(null);
+        String token = userCacheManager.saveUserInfo(user);
+
+        AjaxResult result = AjaxResult.buildSuccessInstance("登陆成功");
+        authorityManager.initUserPower(result, user);
+
+        UserInfoVo userInfoVo = new UserInfoVo();
+        if(user.getShopId()!=null){
+            SysShopInfo shopInfo = sysShopInfoService.findById(user.getShopId());
+            user.setShopName(shopInfo.getShopName());
+            userInfoVo.setShopName(shopInfo.getShopShortName());
+        }
+
+        userInfoVo.setId(user.getSuId());
+        userInfoVo.setName(user.getSuName());
+        userInfoVo.setRoleName(user.getRoleName());
+        userInfoVo.setPhoto(user.getSuPhoto());
+
+        result.putInMap("token", token);
+        result.putInMap("userInfo", userInfoVo);
+
+        synchronized (this) {
+            SysUsers hasBind = sysUsersService.findByOpenId(loginDto.getOpenId(), HostInterceptor.getCompanyId());
+            if (hasBind != null) {
+                if(StrUtil.isNotBlank(hasBind.getOpenIds())) {
+                    List<String> openIds = StrUtil.split(hasBind.getOpenIds(), ',');
+                    openIds.remove(loginDto.getOpenId());
+
+                    sysUsersService.modifyUserOpenId(CollUtil.join(openIds, ","), hasBind.getSuId());
+                }
+            }
+
+            List<String> openIds = StrUtil.split(user.getOpenIds(), ',');
+            openIds.add(loginDto.getOpenId());
+            user.setOpenIds(CollUtil.join(openIds, ","));
+            sysUsersService.modifyByModel(user);
+        }
+
+        return result;
+    }
 
 }

--
Gitblit v1.9.1