瀏覽代碼

公司公众号配置修改

yusm 1 月之前
父節點
當前提交
d5c8fa85e1

+ 52 - 6
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/WechatAccountController.java

@@ -3,6 +3,7 @@ package com.management.platform.controller;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.management.platform.entity.User;
 import com.management.platform.entity.UserQrCode;
 import com.management.platform.entity.WechatAccount;
@@ -73,6 +74,44 @@ public class WechatAccountController {
 
     private final static String prefixUrl="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=";
 
+
+    //保存或修改
+    @RequestMapping("/saveOrUpdate")
+    public HttpRespMsg saveOrUpdate(WechatAccount wechatAccount ,HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        String token = request.getHeader("Token");
+        User user = userService.getById(token);
+        if (wechatAccount.getId()==null){
+            int count = wechatAccountService.count(new QueryWrapper<WechatAccount>().eq("company_id", user.getCompanyId()));
+            if (count>0){
+                httpRespMsg.setError("公司配置已存在,请传公司关键信息");
+                return httpRespMsg;
+            }
+            wechatAccount.setCompanyId(user.getCompanyId());
+            wechatAccountService.save(wechatAccount);
+        }else {
+            wechatAccountService.update(null,new UpdateWrapper<WechatAccount>()
+                    .set("company_name", wechatAccount.getCompanyName())
+                    .set("app_id", wechatAccount.getAppId())
+                    .set("app_secret", wechatAccount.getAppSecret())
+                    .eq("id", wechatAccount.getId()));
+
+        }
+        return httpRespMsg;
+    }
+
+    //获取企业微信公众号配置
+    @RequestMapping("/getCompanyWeiXin")
+    public HttpRespMsg getCompanyWeiXin(HttpServletRequest request) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        String token = request.getHeader("Token");
+        User user = userService.getById(token);
+        WechatAccount wechatAccount = wechatAccountService.getOne(new QueryWrapper<WechatAccount>().eq("company_id", user.getCompanyId()));
+        httpRespMsg.setData(wechatAccount);
+        return httpRespMsg;
+    }
+
+
     /**
      * 保存修改并获取公司对应的accessToken
      * @param request
@@ -84,6 +123,10 @@ public class WechatAccountController {
         String token = request.getHeader("Token");
         User user = userService.getById(token);
         WechatAccount wechatAccount = wechatAccountService.getOne(new QueryWrapper<WechatAccount>().eq("company_id", user.getCompanyId()));
+        if (wechatAccount==null){
+            httpRespMsg.setError("该公司没有配置公众号相关的参数");
+            return httpRespMsg;
+        }
         String accessToken = wechatAccountService.getAccessToken(user.getCompanyId(), wechatAccount.getAppId());
         httpRespMsg.setData(accessToken);
         return httpRespMsg;
@@ -155,7 +198,8 @@ public class WechatAccountController {
                         userQrCode.setUrl(url);
                         userQrCode.setCompanyId(user.getCompanyId());
                         //保存图片
-                        CompletableFuture<String> future = saveWeChatQrCodeImgHttpClient(prefixUrl + ticket, ticket, uploadPath);
+                        String imgPrefix=(StringUtils.isEmpty(user.getJobNumber())?"":user.getJobNumber())+"_"+user.getName();
+                        CompletableFuture<String> future = saveWeChatQrCodeImgHttpClient(prefixUrl + ticket, imgPrefix, uploadPath);
                         String imgName = future.get(10, TimeUnit.SECONDS);// 添加超时
                         if (imgName.isEmpty()){
                             msg.setError("二维码图片保存失败");
@@ -197,7 +241,8 @@ public class WechatAccountController {
         List<String> userAlreadyIds = qrCodeList.stream().map(UserQrCode::getUserId).collect(Collectors.toList());//已经生成二维码的员工
         userAlreadyIds.add("-1");
 
-        List<User> userList = userService.list(new QueryWrapper<User>().notIn("id", userAlreadyIds));//未生成二维码的员工
+        List<User> userList = userService.list(new QueryWrapper<User>().notIn("id", userAlreadyIds)
+                .eq("company_id", user.getCompanyId()));//未生成二维码的员工
         if (!userList.isEmpty()){
             for (User u : userList) {
                 String userId = u.getId();
@@ -221,7 +266,8 @@ public class WechatAccountController {
                             userQrCode.setUrl(url);
                             userQrCode.setCompanyId(user.getCompanyId());
                             //保存图片
-                            CompletableFuture<String> future = saveWeChatQrCodeImgHttpClient(prefixUrl + ticket, ticket, uploadPath);
+                            String imgPrefix=(StringUtils.isEmpty(u.getJobNumber())?"":u.getJobNumber())+"_"+u.getName();
+                            CompletableFuture<String> future = saveWeChatQrCodeImgHttpClient(prefixUrl + ticket, imgPrefix, uploadPath);
                             String imgName = future.get(10, TimeUnit.SECONDS);// 添加超时
                             if (imgName.isEmpty()){
                                 msg.setError("二维码图片保存失败");
@@ -282,9 +328,9 @@ public class WechatAccountController {
     }
 
     @Async("taskExecutor")
-    public CompletableFuture<String> saveWeChatQrCodeImgHttpClient(String qrCodeUrl, String ticket, String uploadPath) {
+    public CompletableFuture<String> saveWeChatQrCodeImgHttpClient(String qrCodeUrl, String imgPrefix, String uploadPath) {
         try {
-            log.info("开始保存二维码图片,ticket: {}", ticket);
+
 
             // 确保目录存在
             File uploadDir = new File(uploadPath);
@@ -293,7 +339,7 @@ public class WechatAccountController {
             }
 
             // 构建目标文件路径
-            String fileName = ticket + ".jpg";
+            String fileName = imgPrefix + ".jpg";
             File destFile = new File(uploadPath, fileName);
 
 

+ 7 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/WechatAccount.java

@@ -37,6 +37,13 @@ public class WechatAccount extends Model<WechatAccount> {
     @TableField("company_id")
     private Integer companyId;
 
+
+    /**
+     * 企业公众号名称
+     */
+    @TableField("company_name")
+    private String companyName;
+
     /**
      * 公众号AppID
      */

+ 14 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -193,6 +193,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private SysDictService sysDictService;
     @Resource
     private SuperSonicConfig  superSonicConfig;
+    @Resource
+    private UserQrCodeService userQrCodeService;
+
+    private final static String prefixUrl="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=";
 
 
     //登录网页端
@@ -987,6 +991,16 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
                     }
                     list = active;
                 }
+                List<UserQrCode> qrCodeList = userQrCodeService.list(new QueryWrapper<UserQrCode>().eq("company_id", companyId));
+                for (Map<String, Object> map : list) {
+                    String userId = map.get("id").toString();
+                    Optional<UserQrCode> first = qrCodeList.stream().filter(q -> userId.equals(q.getUserId())).findFirst();
+                    if (first.isPresent()) {
+                        UserQrCode userQrCode = first.get();
+                        map.put("wxImgName",org.apache.commons.lang3.StringUtils.isEmpty(userQrCode.getImg())?null:userQrCode.getImg());
+                        map.put("wxImgUrlWithTicket", org.apache.commons.lang3.StringUtils.isEmpty(userQrCode.getTicket())?null:prefixUrl+userQrCode.getTicket());
+                    }
+                }
                 resultMap.put("records", list);
                 resultMap.put("total", total);
                 resultMap.put("nextCursor", "");