Browse Source

BUG修复

whc 4 years ago
parent
commit
8f014d6908

+ 55 - 44
UI/src/pages/sellmanage/channelCode.js

@@ -234,54 +234,65 @@ class BirdGridPermissionPage extends React.Component {
     let editValue = data.messageList[0].msgType
     let messageList = data.messageList[0]
     let time = parseInt(data.qrcode_expireSeconds / 3600.0 / 24)
-    if (data.messageList.length == 2) {
-      var editImage = data.messageList[1].msgType
-      var imageList = data.messageList[1]
-      if (editImage == "image") {
-        let imgUrl = this.addToken(imageList.localUrl);
+
+    
+    data.messageList.forEach(message => {
+      let msgType = message.msgType;
+      if(msgType == "text"){
+        this.setState({
+          editKey: "1",
+          textContent: message.content,
+          description: "",
+          imageUrl8: "",
+          imageUrl5: "",
+          imageUrl9: "",
+          imageUrl6: ""
+        })
+      }
+      if(msgType == "image"){
+        let imgUrl = this.addToken(message.localUrl);
         this.setState({
+          editKey: "1",
           imageUrl7: WXMpAPI+imgUrl,
-          imageUrl4: WXMpAPI+imgUrl
+          imageUrl4: WXMpAPI+imgUrl,
+          mediaId4: message.mediaId,
+          imageUrl8: "",
+          imageUrl5: "",
+          imageUrl9: "",
+          imageUrl6: "",
         })
       }
-    }
-    if (editValue == "text") {
-      this.setState({
-        editKey: "1",
-        textContent: messageList.content,
-        description: "",
-        imageUrl8: "",
-        imageUrl5: "",
-        imageUrl9: "",
-        imageUrl6: ""
-      })
-    } else if (editValue == "news") {
-      let imageUrl = this.addToken(messageList.thumbUrl);
-      this.setState({
-        editKey: "2",
-        imageUrl8: imageUrl,
-        imageUrl5: imageUrl,
-        description: messageList.title,
-        textContent: "",
-        imageUrl9: "",
-        imageUrl6: "",
-        imageUrl7: "",
-        imageUrl4: "",
-      })
-    } else if (editValue == "miniprogrampage") {
-      let imgUrl = this.addToken(messageList.localUrl);
-      this.setState({
-        editKey: "3",
-        imageUrl9: WXMpAPI + imgUrl,
-        imageUrl6: WXMpAPI + imgUrl,
-        textContent: "",
-        description: "",
-        imageUrl8: "",
-        imageUrl5: "",
-        imageUrl7: "",
-        imageUrl4: "",
-      })
-    }
+      
+      if(msgType == "news"){
+        let imageUrl = this.addToken(message.thumbUrl);
+        this.setState({
+          editKey: "2",
+          imageUrl8: imageUrl,
+          imageUrl5: imageUrl,
+          description: message.title,
+          textContent: "",
+          imageUrl9: "",
+          imageUrl6: "",
+          imageUrl7: "",
+          imageUrl4: "",
+        })
+      }
+      if(msgType == "miniprogrampage"){
+        let imgUrl = this.addToken(messageList.localUrl);
+        this.setState({
+          editKey: "3",
+          imageUrl9: WXMpAPI + imgUrl,
+          imageUrl6: WXMpAPI + imgUrl,
+          textContent: "",
+          description: "",
+          imageUrl8: "",
+          imageUrl5: "",
+          imageUrl7: "",
+          imageUrl4: "",
+        })
+      }
+    })
+
     if (data.qrcode_isPermanent == 0) {
       this.setState({
         timedata: "临时二维码" + time + "天"

+ 46 - 32
mpwechatApp/src/main/java/com/liangjian11/wx/mp/controller/WxFansTagController.java

@@ -25,6 +25,7 @@ import org.springframework.web.client.RestTemplate;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 粉丝标签controller
@@ -51,25 +52,39 @@ public class WxFansTagController {
 
     /**
      * 获取标签 如果标签不同步 默认就给他同步
+     *
      * @param appid
-     * @param data 查询参数
+     * @param data  查询参数
      * @return
      */
     @PostMapping("/list")
-    public ResultInfo list(@PathVariable String appid, @RequestBody  FiltersData data){
-        if(appid!=null && !appid.equals("")  && !appid.equals("all")){
+    public ResultInfo list(@PathVariable String appid, @RequestBody FiltersData data) {
+        if (appid != null && !appid.equals("") && !appid.equals("all")) {
             List<FiltersUtils> filters = data.getFilters();
-            filters.add(new FiltersUtils("appId","equal",appid));
-
+            filters.add(new FiltersUtils("appId", "equal", appid));
         }
-        try {
-          WxMpUserTagService userTagService = wxService.switchoverTo(appid).getUserTagService();
 
+        try {
+            WxMpUserTagService userTagService = wxService.switchoverTo(appid).getUserTagService();
             //自动同步 因为只有100个 同一个微信最多支持100个标签
             List<WxUserTag> tagList = userTagService.tagGet();
-            for(WxUserTag wxUserTag : tagList) {
+            List<String> tagNameList = tagService.queryAll(appid).stream().map(EsTagInfo::getTagName).collect(Collectors.toList());
+
+            new 
+            for (WxUserTag wxUserTag : tagList) {
+                String tagName = wxUserTag.getName();
+                if(tagNameList.contains(tagName)){
+                    tagNameList.remove(tagName);
+                }else {
+
+                }
+
+
+            }
+
+            for (WxUserTag wxUserTag : tagList) {
                 QueryWrapper wrapper = new QueryWrapper();
-                wrapper.eq("tagValue",wxUserTag.getId().toString());
+                wrapper.eq("tagValue", wxUserTag.getId().toString());
                 List<EsTagInfo> tags = tagService.list(wrapper);
                 if (tags == null || tags.size() == 0) {
                     EsTagInfo tag = new EsTagInfo();
@@ -80,16 +95,12 @@ public class WxFansTagController {
                     tagService.save(tag);
                 }
             }
-
-//            Map<String, Object> body = restTemplate.postForEntity("http://" + client + "/memcount/AllTagList",data, HashMap.class).getBody();
-            //totalCount
-            //items
             ResultInfo body = tagService.queryTagList(data);
 
-            return ResultUtil.createSuccess(200,body);
+            return ResultUtil.createSuccess(200, body);
         } catch (WxErrorException e) {
             e.printStackTrace();
-            ResultInfo result = new ResultInfo(0,500,null,"出错",new String[]{},0);
+            ResultInfo result = new ResultInfo(0, 500, null, "出错", new String[]{}, 0);
             return result;
         }
     }
@@ -97,14 +108,15 @@ public class WxFansTagController {
 
     /**
      * 创建标签
+     *
      * @param appid
-     * @param tag 标签数据
+     * @param tag   标签数据
      * @return
      */
     @PostMapping("/add")
     public ResultInfo addTag(@PathVariable String appid,
-                             @RequestBody EsTagInfo tag ){
-        if(tag == null || tag.getTagName()==null || "".equals(tag.getTagName())){
+                             @RequestBody EsTagInfo tag) {
+        if (tag == null || tag.getTagName() == null || "".equals(tag.getTagName())) {
             return ResultUtil.createFail("标签名为空,请输入标签名!");
         }
         try {
@@ -118,42 +130,44 @@ public class WxFansTagController {
 
 //            ResultObject body = restTemplate.postForEntity("http://" + client + "/memcount/EditTag",tag, ResultObject.class).getBody();
 
-            return ResultUtil.createSuccess(200,userTag);
+            return ResultUtil.createSuccess(200, userTag);
         } catch (WxErrorException e) {
             e.printStackTrace();
-            if(e.getMessage().contains("错误代码:45157")){
-                return ResultUtil.createFail(600,null);//标签已存在
-            }else{
-                return ResultUtil.createFail(199,e.getStackTrace());
+            if (e.getMessage().contains("错误代码:45157")) {
+                return ResultUtil.createFail(600, null);//标签已存在
+            } else {
+                return ResultUtil.createFail(199, e.getStackTrace());
             }
         }
     }
 
     /**
      * 删除标签
+     *
      * @param appid
      * @param idList
      * @return
      */
     @CrossOrigin
     @RequestMapping("/delete")
-    public ResultInfo deleteTag(@PathVariable String appid, @RequestParam("idList") Integer idList){
+    public ResultInfo deleteTag(@PathVariable String appid, @RequestParam("idList") Integer idList) {
         try {
             WxMpUserTagService userTagService = wxService.switchoverTo(appid).getUserTagService();
             return tagService.deleteById(userTagService, idList);
         } catch (WxErrorException e) {
             e.printStackTrace();
-            return ResultUtil.createFail(199,e.getStackTrace());
+            return ResultUtil.createFail(199, e.getStackTrace());
         }
     }
 
     /**
      * 修改标签
+     *
      * @param appid
      * @return
      */
     @PutMapping("/update")
-    public ResultInfo updateTag(@PathVariable String appid, @RequestBody EsTagInfo tag){
+    public ResultInfo updateTag(@PathVariable String appid, @RequestBody EsTagInfo tag) {
         try {
             WxMpUserTagService userTagService = wxService.switchoverTo(appid).getUserTagService();
             Long id = Long.valueOf(tag.getTagValue());
@@ -164,20 +178,20 @@ public class WxFansTagController {
 //            ResultObject body = restTemplate.postForEntity("http://" + client + "/memcount/EditTag",tag, ResultObject.class).getBody();
 
             Boolean update = userTagService.tagUpdate(id, name);
-            return ResultUtil.createSuccess(200,update);
+            return ResultUtil.createSuccess(200, update);
         } catch (WxErrorException e) {
             e.printStackTrace();
 
-            if(e.getMessage().contains("错误代码:45057")){
-                return ResultUtil.createFail(601,e.getStackTrace());//
-            }else{
-                return ResultUtil.createFail(199,e.getStackTrace());
+            if (e.getMessage().contains("错误代码:45057")) {
+                return ResultUtil.createFail(601, e.getStackTrace());//
+            } else {
+                return ResultUtil.createFail(199, e.getStackTrace());
             }
         }
     }
 
     @GetMapping("/queryAll")
-    public ResultInfo queryAll(@PathVariable String appid){
+    public ResultInfo queryAll(@PathVariable String appid) {
         return tagService.queryAll(appid);
     }
 

+ 1 - 1
mpwechatApp/src/main/java/com/liangjian11/wx/mp/service/TagService.java

@@ -26,5 +26,5 @@ public interface TagService extends IService<EsTagInfo> {
      * @param appid
      * @return
      */
-    ResultInfo queryAll(String appid);
+    List<EsTagInfo> queryAll(String appid);
 }

+ 4 - 2
mpwechatApp/src/main/java/com/liangjian11/wx/mp/service/impl/TagServiceImpl.java

@@ -72,13 +72,15 @@ public class TagServiceImpl   extends ServiceImpl<TagMapper, EsTagInfo> implemen
     }
 
     @Override
-    public ResultInfo queryAll(String appid) {
+    public List<EsTagInfo> queryAll(String appid) {
         QueryWrapper<EsTagInfo> wrapper = new QueryWrapper<>();
         wrapper.eq("appId", appid);
         wrapper.eq("tagTypeId", "24");
         wrapper.orderByDesc("createtime");
         List<EsTagInfo> esTagInfos = tagMapper.selectList(wrapper);
-        return new ResultInfo(ResultInfo.TYPE_RESULT_SUCCESS, 1, "查询成功", esTagInfos);
+        return esTagInfos;
     }
 
+
+
 }

+ 31 - 1
qiyewechatApp/src/main/java/com/liangjiang11/wx/cp/config/QuartzConfig.java

@@ -5,6 +5,10 @@ import com.liangjiang11.wx.cp.quartz.UserJob;
 import com.liangjiang11.wx.cp.service.ExternalUserService;
 import com.liangjiang11.wx.cp.utils.DateUtil;
 import lombok.extern.slf4j.Slf4j;
+import me.chanjar.weixin.common.error.WxErrorException;
+import me.chanjar.weixin.cp.api.WxCpExternalContactService;
+import me.chanjar.weixin.cp.api.WxCpService;
+import me.chanjar.weixin.cp.api.WxCpUserService;
 import org.quartz.*;
 import org.quartz.impl.StdSchedulerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,6 +21,7 @@ import org.springframework.web.client.RestTemplate;
 import javax.annotation.PostConstruct;
 
 import java.time.LocalDateTime;
+import java.util.Map;
 
 import static org.quartz.CronScheduleBuilder.cronSchedule;
 import static org.quartz.JobBuilder.newJob;
@@ -70,11 +75,36 @@ public class QuartzConfig {
         }
     }*/
 
+    /**
+     * 同步企业微信客服
+     */
     @Scheduled(cron = "0 0 1 * * ?")
     private void configureTasks() {
-        userJob.executeInternal(null);
+        Map<String, Map<Integer, WxCpService>> cpService = WxCpConfiguration.getCpService();
+        for(String corpid: cpService.keySet()) {
+            Map<Integer, WxCpService> agentIdMap = cpService.get(corpid);
+            WxCpUserService userService = agentIdMap.get(1000001).getUserService();
+            WxCpExternalContactService exUserService = agentIdMap.get(1000002).getExternalContactService();
+            if (userService == null) {
+                log.error(String.format("企业微信%s:通讯录应用未配置或配置错误", corpid));
+            } else if (exUserService == null) {
+                log.error(String.format("企业微信%s:客户联系应用未配置或配置错误", corpid));
+            } else {
+                log.info(String.format("企业微信%s:同步客服客户开始", corpid));
+                try {
+                    externalUserService.syncExtUser(corpid, userService, exUserService);
+                } catch (WxErrorException e) {
+                    log.error(String.format("企业微信%s:同步失败", corpid), e);
+                    continue;
+                }
+                log.info(String.format("企业微信%s:同步客服客户结束", corpid));
+            }
+        }
     }
 
+    /**
+     * CRM客户同步
+     */
 //    @Scheduled(cron = "0 0/2 * * * ?")
     private void syncExternalUser() {
         log.info(DateUtil.getNowDateTimeStr()+"-----"+corpid);

+ 2 - 1
qiyewechatApp/src/main/java/com/liangjiang11/wx/cp/service/ExternalUserService.java

@@ -2,6 +2,7 @@ package com.liangjiang11.wx.cp.service;
 
 import com.liangjiang11.wx.cp.model.ExternalUser;
 import com.liangjiang11.wx.cp.utils.FiltersData;
+import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.cp.api.WxCpExternalContactService;
 import me.chanjar.weixin.cp.api.WxCpService;
 import me.chanjar.weixin.cp.api.WxCpUserService;
@@ -46,5 +47,5 @@ public interface ExternalUserService {
      * @param extUserService
      * @return
      */
-    String syncExtUser(String corpid, WxCpUserService userService, WxCpExternalContactService extUserService);
+    String syncExtUser(String corpid, WxCpUserService userService, WxCpExternalContactService extUserService) throws WxErrorException;
 }

+ 47 - 39
qiyewechatApp/src/main/java/com/liangjiang11/wx/cp/service/impl/ExternalUserServiceImpl.java

@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.liangjiang11.wx.cp.dao.foo.ExternalUserMapper;
+import com.liangjiang11.wx.cp.dao.foo.QiyeUsersMapper;
 import com.liangjiang11.wx.cp.model.ExternalUser;
+import com.liangjiang11.wx.cp.model.Users;
 import com.liangjiang11.wx.cp.service.ExternalUserService;
 import com.liangjiang11.wx.cp.utils.FiltersData;
 import com.liangjiang11.wx.cp.utils.FiltersUtils;
@@ -41,6 +43,9 @@ public class ExternalUserServiceImpl implements ExternalUserService {
 
     private Logger logger = LoggerFactory.getLogger(ExternalUserServiceImpl.class);
 
+    @Autowired
+    private QiyeUsersMapper usersMapper;
+
     @Autowired
     private ExternalUserMapper externalUserMapper;
 
@@ -251,47 +256,50 @@ public class ExternalUserServiceImpl implements ExternalUserService {
     }
 
     @Override
-    public String syncExtUser(String corpid, WxCpUserService userService, WxCpExternalContactService extUserService) {
-        try {
-            List<String> useridList = extUserService.listFollowUser();
-
-            for (String userid : useridList) {
-                WxCpUser user = userService.getById(userid);
-
-                List<String> extUseridList = null;
-                try {
-                    extUseridList = extUserService.listExternalContacts(userid);
-                }catch (WxErrorException e){
-                    logger.error(String.format("客服%s,查询外部联系人错误:", userid), e);
-                    continue;
-                }
-                for (String extUserid : extUseridList) {
-                    List<ExternalUser> extUser = externalUserMapper.getExUserByCorpidAndUserId(extUserid, corpid);
-                    if(extUser.size()==0){
-                        WxCpUserExternalContactInfo extUserDetail = extUserService.getContactDetail(extUserid);
-                        ExternalUser externalUser=new ExternalUser();
-                        externalUser.setId(SnowflakeUtil.getSnowflakeIdWorker().nextId());
-                        externalUser.setAvatar(extUserDetail.getExternalContact().getAvatar());
-                        externalUser.setExternal_userid(extUserDetail.getExternalContact().getExternalUserId());
-                        externalUser.setName(extUserDetail.getExternalContact().getName());
-                        externalUser.setGender(String.valueOf(extUserDetail.getExternalContact().getGender()));
-                        externalUser.setType(extUserDetail.getExternalContact().getType());
-                        externalUser.setUserid(userid);
-                        externalUser.setCreatetime(new Date());
-
-                        externalUser.setCompany_avatar(user.getAvatar());
-                        externalUser.setCompany_gender(user.getGender().getGenderName());
-                        externalUser.setCompany_mobiles(user.getMobile());
-                        externalUser.setCompany_name(user.getName());
-                        externalUser.setTermain_type("企业微信");
-                        externalUser.setCorpid(corpid);
-                        externalUser.setUser_age(0);//企业微信未返回年龄,默认18
-                        externalUserMapper.insert(externalUser);
-                    }
+    public String syncExtUser(String corpid, WxCpUserService userService, WxCpExternalContactService extUserService) throws WxErrorException {
+        List<String> useridList = extUserService.listFollowUser();
+        for (String userid : useridList) {
+            WxCpUser user = userService.getById(userid);
+            QueryWrapper<Users> wrapper = new QueryWrapper<>();
+            wrapper.eq("corpid", corpid);
+            wrapper.eq("userid", userid);
+            Integer count = usersMapper.selectCount(wrapper);
+            if(count==0){
+                Users users = new Users(user, corpid);
+                usersMapper.insert(users);
+            }
+
+            List<String> extUseridList = null;
+            try {
+                extUseridList = extUserService.listExternalContacts(userid);
+            }catch (WxErrorException e){
+                logger.error(String.format("客服%s,查询外部联系人错误:", userid), e);
+                continue;
+            }
+            for (String extUserid : extUseridList) {
+                List<ExternalUser> extUser = externalUserMapper.getExUserByCorpidAndUserId(extUserid, corpid);
+                if(extUser.size()==0){
+                    WxCpUserExternalContactInfo extUserDetail = extUserService.getContactDetail(extUserid);
+                    ExternalUser externalUser=new ExternalUser();
+                    externalUser.setId(SnowflakeUtil.getSnowflakeIdWorker().nextId());
+                    externalUser.setAvatar(extUserDetail.getExternalContact().getAvatar());
+                    externalUser.setExternal_userid(extUserDetail.getExternalContact().getExternalUserId());
+                    externalUser.setName(extUserDetail.getExternalContact().getName());
+                    externalUser.setGender(String.valueOf(extUserDetail.getExternalContact().getGender()));
+                    externalUser.setType(extUserDetail.getExternalContact().getType());
+                    externalUser.setUserid(userid);
+                    externalUser.setCreatetime(new Date());
+
+                    externalUser.setCompany_avatar(user.getAvatar());
+                    externalUser.setCompany_gender(user.getGender().getGenderName());
+                    externalUser.setCompany_mobiles(user.getMobile());
+                    externalUser.setCompany_name(user.getName());
+                    externalUser.setTermain_type("企业微信");
+                    externalUser.setCorpid(corpid);
+                    externalUser.setUser_age(0);//企业微信未返回年龄,默认18
+                    externalUserMapper.insert(externalUser);
                 }
             }
-        } catch (Exception e) {
-            logger.error("同步客户失败:", e);
         }
         return "同步成功";
     }