From 27eb97b3deede547c531e0fe1152bd0a39fbd5f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=A1=E6=BC=A0?= Date: Tue, 23 Feb 2021 16:06:04 +0800 Subject: [PATCH 01/67] fix --- .../src/main/java/com/linkwechat/wecom/domain/WeUser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUser.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUser.java index 9bf03b0d7..13dd7649e 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUser.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUser.java @@ -114,7 +114,7 @@ public class WeUser private String remark; - + @TableField(exist = false) private String departmentStr; -- Gitee From ebba8de767e7c00ee286b14e08b85741c22f1aea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=A1=E6=BC=A0?= Date: Tue, 23 Feb 2021 17:11:17 +0800 Subject: [PATCH 02/67] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=88=90=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/linkwechat/wecom/service/impl/WeUserServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java index e2b5869b5..b6fa638b7 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java @@ -222,8 +222,9 @@ public class WeUserServiceImpl extends ServiceImpl implemen List weUsers = weUserClient.list(WeConstans.WE_ROOT_DEPARMENT_ID, WeConstans.DEPARTMENT_SUB_WEUSER).getWeUsers(); if(CollectionUtil.isNotEmpty(weUsers)){ - - this.saveOrUpdateBatch(weUsers); + weUsers.forEach(userInfo ->{ + insertWeUserNoToWeCom(userInfo); + }); } } -- Gitee From c6bd6518afaf933ca0ec6289917c7ace918d3546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=A1=E6=BC=A0?= Date: Tue, 23 Feb 2021 19:20:38 +0800 Subject: [PATCH 03/67] fix --- .../main/java/com/tencent/wework/FinanceUtils.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java b/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java index b6e299087..2dc77eec6 100644 --- a/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java +++ b/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.linkwechat.common.config.RuoYiConfig; +import com.linkwechat.common.constant.Constants; import com.linkwechat.common.constant.WeConstans; import com.linkwechat.common.core.redis.RedisCache; import com.linkwechat.common.utils.DateUtils; @@ -244,6 +245,7 @@ public class FinanceUtils { getPath(realJsonData, msgType, fileName); } + //本地存储 private static void getPath(JSONObject realJsonData, String msgType, String fileName) { String filePath = getFilePath(msgType); JSONObject data = Optional.ofNullable(realJsonData.getJSONObject(msgType)) @@ -254,7 +256,14 @@ public class FinanceUtils { } catch (Exception e) { e.printStackTrace(); } - data.put("attachment", filePath + "/" + fileName); + String currentDir = StringUtils.substring(filePath,downloadWeWorkPath.length()+1); + String pathFileName; + if(org.apache.commons.lang3.StringUtils.isBlank(currentDir)){ + pathFileName = Constants.RESOURCE_PREFIX + "/" +fileName; + }else { + pathFileName = Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName; + } + data.put("attachment", pathFileName); if (realJsonData.containsKey("content")) { realJsonData.put("content", data); } else { -- Gitee From e8788fd478dc18f135100ba4070b90e441aa2e5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=A1=E6=BC=A0?= Date: Tue, 23 Feb 2021 19:46:08 +0800 Subject: [PATCH 04/67] fix --- .../java/com/tencent/wework/FinanceUtils.java | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java b/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java index 2dc77eec6..8efffccd6 100644 --- a/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java +++ b/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java @@ -3,17 +3,21 @@ package com.tencent.wework; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.linkwechat.common.config.CosConfig; import com.linkwechat.common.config.RuoYiConfig; import com.linkwechat.common.constant.Constants; import com.linkwechat.common.constant.WeConstans; import com.linkwechat.common.core.redis.RedisCache; import com.linkwechat.common.utils.DateUtils; import com.linkwechat.common.utils.StringUtils; +import com.linkwechat.common.utils.file.FileUploadUtils; +import com.linkwechat.common.utils.spring.SpringUtils; import com.linkwechat.common.utils.uuid.IdUtils; import com.linkwechat.common.utils.wecom.RSAUtil; import lombok.extern.slf4j.Slf4j; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.security.PrivateKey; import java.util.ArrayList; @@ -245,7 +249,7 @@ public class FinanceUtils { getPath(realJsonData, msgType, fileName); } - //本地存储 + /*//本地存储 private static void getPath(JSONObject realJsonData, String msgType, String fileName) { String filePath = getFilePath(msgType); JSONObject data = Optional.ofNullable(realJsonData.getJSONObject(msgType)) @@ -270,6 +274,31 @@ public class FinanceUtils { realJsonData.put(msgType, data); } + }*/ + + //云存储 + private static void getPath(JSONObject realJsonData, String msgType, String fileName) { + String filePath = getFilePath(msgType); + JSONObject data = Optional.ofNullable(realJsonData.getJSONObject(msgType)) + .orElse(realJsonData.getJSONObject("content")); + String sdkfileid = data.getString("sdkfileid"); + try { + getMediaData(sdkfileid, "", "", filePath, fileName); + CosConfig cosConfig = SpringUtils.getBean(CosConfig.class); + String suffix = fileName.substring(fileName.lastIndexOf(".") + 1); + StringBuilder cosUrl = new StringBuilder(cosConfig.getImgUrlPrefix()); + String cosFilePath = FileUploadUtils.upload2Cos(new FileInputStream(filePath + fileName), suffix, cosConfig); + cosUrl.append(cosFilePath); + data.put("attachment", cosUrl.toString()); + } catch (Exception e) { + e.printStackTrace(); + } + if (realJsonData.containsKey("content")) { + realJsonData.put("content", data); + } else { + realJsonData.put(msgType, data); + } + } private static String getFilePath(String msgType) { -- Gitee From 3dec7f351233230f53ca3eeab321a0ce5631eed1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=A1=E6=BC=A0?= Date: Wed, 24 Feb 2021 10:34:37 +0800 Subject: [PATCH 05/67] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WePageDateContraller.java | 47 ++++++++ .../src/main/resources/application.yml | 2 + .../main/resources/vm/java/sub-domain.java.vm | 76 +++++++++++++ .../quartz/task/GroupChatStatisticTask.java | 98 ++++++++++++++++ .../quartz/task/PageHomeDataTask.java | 70 ++++++++++++ .../quartz/task/UserBehaviorDataTak.java | 107 ++++++++++++++++++ .../wecom/client/WeCustomerClient.java | 26 +++-- .../wecom/domain/WeGroupStatistic.java | 96 ++++++++++++++++ .../wecom/domain/WeUserBehaviorData.java | 95 ++++++++++++++++ .../domain/dto/GroupChatStatisticDto.java | 66 +++++++++++ .../wecom/domain/dto/UserBehaviorDataDto.java | 59 ++++++++++ .../domain/query/GroupChatStatisticQuery.java | 28 +++++ .../domain/query/UserBehaviorDataQuery.java | 25 ++++ .../wecom/mapper/WeGroupStatisticMapper.java | 15 +++ .../mapper/WeUserBehaviorDataMapper.java | 14 +++ .../service/IWeGroupStatisticService.java | 21 ++++ .../service/IWeUserBehaviorDataService.java | 20 ++++ .../impl/WeGroupStatisticServiceImpl.java | 57 ++++++++++ .../impl/WeUserBehaviorDataServiceImpl.java | 55 +++++++++ .../mapper/wecom/WeGroupStatisticMapper.xml | 21 ++++ .../mapper/wecom/WeUserBehaviorDataMapper.xml | 21 ++++ 21 files changed, 1012 insertions(+), 7 deletions(-) create mode 100644 linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WePageDateContraller.java create mode 100644 linkwe-generator/src/main/resources/vm/java/sub-domain.java.vm create mode 100644 linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java create mode 100644 linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java create mode 100644 linkwe-quartz/src/main/java/com/linkwechat/quartz/task/UserBehaviorDataTak.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupStatistic.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/GroupChatStatisticDto.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/UserBehaviorDataDto.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/GroupChatStatisticQuery.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/UserBehaviorDataQuery.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupStatisticMapper.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupStatisticService.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserBehaviorDataService.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupStatisticServiceImpl.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserBehaviorDataServiceImpl.java create mode 100644 linkwe-wecom/src/main/resources/mapper/wecom/WeGroupStatisticMapper.xml create mode 100644 linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WePageDateContraller.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WePageDateContraller.java new file mode 100644 index 000000000..dfd77bc9b --- /dev/null +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WePageDateContraller.java @@ -0,0 +1,47 @@ +package com.linkwechat.web.controller.wecom; + +import com.linkwechat.common.core.domain.AjaxResult; +import com.linkwechat.common.core.redis.RedisCache; +import com.linkwechat.wecom.service.IWeCorpAccountService; +import com.linkwechat.wecom.service.IWeUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @author danmo + * @description 首页统计 + * @date 2021/2/23 15:30 + **/ +@Api(description = "首页统计contraller") +@Slf4j +@RestController +@RequestMapping("wecom/page/") +public class WePageDateContraller { + @Autowired + private RedisCache redisCache; + + /** + * + */ + @ApiOperation(value = "数据总览controller",httpMethod = "GET") + @PreAuthorize("@ss.hasPermi('wecom:page:getCorpBasicData')") + @GetMapping("/getCorpBasicData") + public AjaxResult getCorpBasicData(){ + return AjaxResult.success(redisCache.getCacheMap("getCorpBasicData")); + } + + @ApiOperation(value = "实时数据controller",httpMethod = "GET") + @PreAuthorize("@ss.hasPermi('wecom:page:getCorpRealTimeData')") + @GetMapping("/getCorpRealTimeData") + public AjaxResult getCorpRealTimeData(){ + return AjaxResult.success(redisCache.getCacheList("getCorpRealTimeData")); + } +} diff --git a/linkwe-admin/src/main/resources/application.yml b/linkwe-admin/src/main/resources/application.yml index 5f60dbcf9..2a05cc542 100644 --- a/linkwe-admin/src/main/resources/application.yml +++ b/linkwe-admin/src/main/resources/application.yml @@ -198,6 +198,8 @@ wecome: - /externalcontact/unionid_to_external_userid - /externalcontact/add_msg_template - /externalcontact/get_group_msg_result + - /externalcontact/get_user_behavior_data + - /externalcontact/groupchat/statistic fileUplodUrl: /media/upload,/media/uploadimg needProviderTokenUrl: - /service/get_login_info diff --git a/linkwe-generator/src/main/resources/vm/java/sub-domain.java.vm b/linkwe-generator/src/main/resources/vm/java/sub-domain.java.vm new file mode 100644 index 000000000..a3f53ebab --- /dev/null +++ b/linkwe-generator/src/main/resources/vm/java/sub-domain.java.vm @@ -0,0 +1,76 @@ +package ${packageName}.domain; + +#foreach ($import in $subImportList) +import ${import}; +#end +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * ${subTable.functionName}对象 ${subTableName} + * + * @author ${author} + * @date ${datetime} + */ +public class ${subClassName} extends BaseEntity +{ + private static final long serialVersionUID = 1L; + +#foreach ($column in $subTable.columns) +#if(!$table.isSuperColumn($column.javaField)) + /** $column.columnComment */ +#if($column.list) +#set($parentheseIndex=$column.columnComment.indexOf("(")) +#if($parentheseIndex != -1) +#set($comment=$column.columnComment.substring(0, $parentheseIndex)) +#else +#set($comment=$column.columnComment) +#end +#if($parentheseIndex != -1) + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") +#elseif($column.javaType == 'Date') + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "${comment}", width = 30, dateFormat = "yyyy-MM-dd") +#else + @Excel(name = "${comment}") +#end +#end + private $column.javaType $column.javaField; + +#end +#end +#foreach ($column in $subTable.columns) +#if(!$table.isSuperColumn($column.javaField)) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + public void set${AttrName}($column.javaType $column.javaField) + { + this.$column.javaField = $column.javaField; + } + + public $column.javaType get${AttrName}() + { + return $column.javaField; + } +#end +#end + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) +#foreach ($column in $subTable.columns) +#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]")) +#set($AttrName=$column.javaField) +#else +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#end + .append("${column.javaField}", get${AttrName}()) +#end + .toString(); + } +} diff --git a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java new file mode 100644 index 000000000..33519ca90 --- /dev/null +++ b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java @@ -0,0 +1,98 @@ +package com.linkwechat.quartz.task; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.linkwechat.common.utils.bean.BeanUtils; +import com.linkwechat.wecom.client.WeCustomerClient; +import com.linkwechat.wecom.domain.WeGroup; +import com.linkwechat.wecom.domain.WeGroupStatistic; +import com.linkwechat.wecom.domain.dto.GroupChatStatisticDto; +import com.linkwechat.wecom.domain.query.GroupChatStatisticQuery; +import com.linkwechat.wecom.service.IWeGroupService; +import com.linkwechat.wecom.service.IWeGroupStatisticService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * @author sxw + * @description 群聊数据统计 + * @date 2021/2/24 0:42 + **/ +@Slf4j +@Component("GroupChatStatisticTask") +public class GroupChatStatisticTask { + @Autowired + private WeCustomerClient weCustomerClient; + @Autowired + private IWeGroupService weGroupService; + @Autowired + private IWeGroupStatisticService weGroupStatisticService; + + public void getGroupChatData() { + log.info("群聊数据统计>>>>>>>>>>>>>>>>>>>启动"); + List weGroupList = weGroupService.list(new LambdaQueryWrapper().eq(WeGroup::getStatus, 0)); + log.info("群聊数据统计>>>>>>>>>>>>>>>>>>>weGroupList:{}",weGroupList.size()); + if (CollectionUtil.isNotEmpty(weGroupList)){ + List weGroupStatisticList = new ArrayList<>(); + GroupChatStatisticQuery query = new GroupChatStatisticQuery(); + //前一天的数据 + Long startTime = strToDate(-1, 0); + Long endTime = strToDate(-1, 1); + query.setDay_begin_time(startTime); + query.setDay_end_time(endTime); + weGroupList.forEach(weGroup -> { + GroupChatStatisticQuery.OwnerFilter ownerFilter = new GroupChatStatisticQuery.OwnerFilter(); + List idList = new ArrayList<>(); + idList.add(weGroup.getOwner()); + ownerFilter.setUserid_list(idList); + query.setOwnerFilter(ownerFilter); + GroupChatStatisticDto groupChatStatistic = weCustomerClient.getGroupChatStatistic(query); + List items = groupChatStatistic.getItems(); + if(CollectionUtil.isNotEmpty(items)){ + items.forEach(groupchatStatisticData -> { + WeGroupStatistic weGroupStatistic = new WeGroupStatistic(); + GroupChatStatisticDto.StatisticData data = groupchatStatisticData.getData(); + BeanUtils.copyPropertiesignoreOther(data, weGroupStatistic); + weGroupStatistic.setChatId(weGroup.getChatId()); + weGroupStatistic.setStatTime(groupchatStatisticData.getStatTime()); + weGroupStatisticList.add(weGroupStatistic); + }); + } + }); + weGroupStatisticService.saveBatch(weGroupStatisticList); + } + } + + private Long strToDate(int days, Integer type) { + Long time = null; + DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = null; + Calendar cale = Calendar.getInstance(); + cale.add(Calendar.DATE, days); + String tarday = new SimpleDateFormat("yyyy-MM-dd").format(cale.getTime()); + if (type.equals(0)) { + tarday += " 00:00:00"; + } else { + tarday += " 23:59:59"; + } + // String转Date + try { + date = format2.parse(tarday); + System.out.println(date.getTime()); + time = date.getTime() / 1000; + System.out.println(time.toString()); + } catch (ParseException e) { + e.printStackTrace(); + } + return time; + } +} diff --git a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java new file mode 100644 index 000000000..375e42c5c --- /dev/null +++ b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java @@ -0,0 +1,70 @@ +package com.linkwechat.quartz.task; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.linkwechat.common.constant.WeConstans; +import com.linkwechat.common.core.redis.RedisCache; +import com.linkwechat.wecom.domain.WeCorpAccount; +import com.linkwechat.wecom.domain.WeCustomer; +import com.linkwechat.wecom.domain.WeUser; +import com.linkwechat.wecom.service.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author danmo + * @description 首页数据统计 + * @date 2021/2/23 23:51 + **/ +@Slf4j +@Component("PageHomeDataTask") +public class PageHomeDataTask { + @Autowired + private IWeCorpAccountService weCorpAccountService; + + @Autowired + private IWeUserService weUserService; + + @Autowired + private IWeCustomerService weCustomerService; + + @Autowired + private IWeGroupService weGroupService; + + @Autowired + private IWeGroupMemberService weGroupMemberService; + + @Autowired + private RedisCache redisCache; + + + public void getCorpBasicData(){ + //查询当前使用企业 + //WeCorpAccount weCorpAccount = weCorpAccountService.findValidWeCorpAccount(); + //String corpId = weCorpAccount.getCorpId(); + Map totalMap = new HashMap<>(16); + //企业成员总数 + int userCount = weUserService.count(new LambdaQueryWrapper().eq(WeUser::getIsActivate, WeConstans.WE_USER_IS_ACTIVATE)); + //客户总人数 + int customerCount = weCustomerService.count(); + //客户群总数 + int groupCount = weGroupService.count(); + //群成员总数 + int groupMemberCount = weGroupMemberService.count(); + + totalMap.put("userCount",userCount); + totalMap.put("customerCount",customerCount); + totalMap.put("groupCount",groupCount); + totalMap.put("groupMemberCount",groupMemberCount); + redisCache.setCacheMap("getCorpBasicData",totalMap); + } + + + public void getCorpRealTimeData(){ + //今日 + //发起申请数 + } +} diff --git a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/UserBehaviorDataTak.java b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/UserBehaviorDataTak.java new file mode 100644 index 000000000..60012875d --- /dev/null +++ b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/UserBehaviorDataTak.java @@ -0,0 +1,107 @@ +package com.linkwechat.quartz.task; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.linkwechat.common.constant.WeConstans; +import com.linkwechat.common.utils.bean.BeanUtils; +import com.linkwechat.wecom.client.WeCustomerClient; +import com.linkwechat.wecom.domain.WeUser; +import com.linkwechat.wecom.domain.WeUserBehaviorData; +import com.linkwechat.wecom.domain.dto.UserBehaviorDataDto; +import com.linkwechat.wecom.domain.query.UserBehaviorDataQuery; +import com.linkwechat.wecom.service.IWeUserBehaviorDataService; +import com.linkwechat.wecom.service.IWeUserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * @author sxw + * @description 联系客户统计 + * @date 2021/2/24 0:41 + **/ +@Slf4j +@Component("UserBehaviorDataTak") +public class UserBehaviorDataTak { + @Autowired + private WeCustomerClient weCustomerClient; + @Autowired + private IWeUserService weUserService; + @Autowired + private IWeUserBehaviorDataService weUserBehaviorDataService; + + private final int offset = 500; + + public void getUserBehaviorData() { + log.info("联系客户统计>>>>>>>>>>>>>>>>>>>启动"); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper().eq(WeUser::getIsActivate, WeConstans.WE_USER_IS_ACTIVATE); + int userCount = weUserService.count(wrapper); + log.info("联系客户统计>>>>>>>>>>>>>>>>>>>userCount:{}",userCount); + double num = 1; + if (userCount > offset) { + num = Math.ceil((double) userCount / offset); + } + int temp = 0; + for (int i = 0; i < num; i++) { + wrapper.last("limit " + temp + "," + offset); + List list = weUserService.list(wrapper); + if (CollectionUtil.isNotEmpty(list)) { + List dataList = new ArrayList<>(); + UserBehaviorDataQuery query = new UserBehaviorDataQuery(); + //前一天的数据 + Long startTime = strToDate(-1, 0); + Long endTime = strToDate(-1, 1); + query.setStart_time(startTime); + query.setEnd_time(endTime); + list.forEach(weUser -> { + List idList = new ArrayList<>(); + idList.add(weUser.getUserId()); + query.setUserid(idList); + UserBehaviorDataDto userBehaviorData = weCustomerClient.getUserBehaviorData(query); + List behaviorDataList = userBehaviorData.getBehaviorData(); + for (UserBehaviorDataDto.BehaviorData data : behaviorDataList) { + WeUserBehaviorData weUserBehaviorData = new WeUserBehaviorData(); + BeanUtils.copyPropertiesignoreOther(data, weUserBehaviorData); + weUserBehaviorData.setUserId(weUser.getUserId()); + dataList.add(weUserBehaviorData); + } + }); + weUserBehaviorDataService.saveBatch(dataList); + } + temp += offset; + } + + } + + private Long strToDate(int days, Integer type) { + Long time = null; + DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = null; + Calendar cale = Calendar.getInstance(); + cale.add(Calendar.DATE, days); + String tarday = new SimpleDateFormat("yyyy-MM-dd").format(cale.getTime()); + if (type.equals(0)) { + tarday += " 00:00:00"; + } else { + tarday += " 23:59:59"; + } + // String转Date + try { + date = format2.parse(tarday); + System.out.println(date.getTime()); + time = date.getTime() / 1000; + System.out.println(time.toString()); + } catch (ParseException e) { + e.printStackTrace(); + } + return time; + } +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeCustomerClient.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeCustomerClient.java index a5279f1be..00827353f 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeCustomerClient.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeCustomerClient.java @@ -1,15 +1,13 @@ package com.linkwechat.wecom.client; import com.dtflys.forest.annotation.DataObject; +import com.dtflys.forest.annotation.JSONBody; import com.dtflys.forest.annotation.Query; import com.dtflys.forest.annotation.Request; -import com.linkwechat.wecom.domain.dto.WeCustomerDto; -import com.linkwechat.wecom.domain.dto.WeResultDto; -import com.linkwechat.wecom.domain.dto.WeWelcomeMsg; -import com.linkwechat.wecom.domain.dto.customer.CutomerTagEdit; -import com.linkwechat.wecom.domain.dto.customer.ExternalUserDetail; -import com.linkwechat.wecom.domain.dto.customer.ExternalUserList; -import com.linkwechat.wecom.domain.dto.customer.FollowUserList; +import com.linkwechat.wecom.domain.dto.*; +import com.linkwechat.wecom.domain.dto.customer.*; +import com.linkwechat.wecom.domain.query.GroupChatStatisticQuery; +import com.linkwechat.wecom.domain.query.UserBehaviorDataQuery; import java.util.Map; @@ -93,5 +91,19 @@ public interface WeCustomerClient { ExternalUserDetail unionidToExternalUserid(@DataObject ExternalUserDetail.ExternalContact unionid); + /** + * 联系客户统计 + * @return + */ + @Request(url = "/externalcontact/get_user_behavior_data", + type = "POST") + UserBehaviorDataDto getUserBehaviorData(@JSONBody UserBehaviorDataQuery query); + /** + * 联系客户统计 + * @return + */ + @Request(url = "/externalcontact/groupchat/statistic", + type = "POST") + GroupChatStatisticDto getGroupChatStatistic(@JSONBody GroupChatStatisticQuery query); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupStatistic.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupStatistic.java new file mode 100644 index 000000000..66cfd0aba --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupStatistic.java @@ -0,0 +1,96 @@ +package com.linkwechat.wecom.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.linkwechat.common.annotation.Excel; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 群聊数据统计数据 + * 对象 we_group_statistic + * + * @author ruoyi + * @date 2021-02-24 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@TableName("we_group_statistic") +public class WeGroupStatistic implements Serializable { + + private static final long serialVersionUID = 1L; + + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 群主ID + */ + @Excel(name = "群ID") + private String chatId; + + /** + * 数据日期 + */ + @Excel(name = "数据日期", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date statTime; + + /** + * 新增客户群数量 + */ + @Excel(name = "新增客户群数量") + private Integer newChatCnt; + + /** + * 截至当天客户群总数量 + */ + @Excel(name = "截至当天客户群总数量") + private Integer chatTotal; + + /** + * 截至当天有发过消息的客户群数量 + */ + @Excel(name = "截至当天有发过消息的客户群数量") + private Integer chatHasMsg; + + /** + * 客户群新增群人数 + */ + @Excel(name = "客户群新增群人数") + private Integer newMemberCnt; + + /** + * 截至当天客户群总人数 + */ + @Excel(name = "截至当天客户群总人数") + private Integer memberTotal; + + /** + * 截至当天有发过消息的群成员数 + */ + @Excel(name = "截至当天有发过消息的群成员数") + private Integer memberHasMsg; + + /** + * 截至当天客户群消息总数 + */ + @Excel(name = "截至当天客户群消息总数") + private Integer msgTotal; + + @TableField(exist = false) + private Map params = new HashMap<>(); +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java new file mode 100644 index 000000000..aec6c1a7c --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java @@ -0,0 +1,95 @@ +package com.linkwechat.wecom.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.linkwechat.common.annotation.Excel; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 联系客户统计数据 对象 we_user_behavior_data + * + * @author ruoyi + * @date 2021-02-24 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@TableName("we_user_behavior_data") +public class WeUserBehaviorData implements Serializable { + + private static final long serialVersionUID = 1L; + + + /** + * $column.columnComment + */ + @TableId(value = "id") + private Long id; + + /** + * 客户id + */ + @Excel(name = "客户id") + private String userId; + + /** + * 数据日期,为当日0点的时间戳 + */ + @Excel(name = "数据日期,为当日0点的时间戳", width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date statTime; + + /** + * 发起申请数 + */ + @Excel(name = "发起申请数") + private Integer newApplyCnt; + + /** + * 新增客户数,成员新添加的客户数量 + */ + @Excel(name = "新增客户数,成员新添加的客户数量") + private Integer newContactCnt; + + /** + * 聊天总数, 成员有主动发送过消息的单聊总数 + */ + @Excel(name = "聊天总数, 成员有主动发送过消息的单聊总数") + private Integer chatCnt; + + /** + * 发送消息数,成员在单聊中发送的消息总数 + */ + @Excel(name = "发送消息数,成员在单聊中发送的消息总数") + private Integer messageCnt; + + /** + * 已回复聊天占比,浮点型,客户主动发起聊天后,成员在一个自然日内有回复过消息的聊天数/客户主动发起的聊天数比例,不包括群聊,仅在确有聊天时返回 + */ + @Excel(name = "已回复聊天占比,浮点型,客户主动发起聊天后,成员在一个自然日内有回复过消息的聊天数/客户主动发起的聊天数比例,不包括群聊,仅在确有聊天时返回") + private Long replyPercentage; + + /** + * 平均首次回复时长 + */ + @Excel(name = "平均首次回复时长") + private Integer avgReplyTime; + + /** + * 删除/拉黑成员的客户数,即将成员删除或加入黑名单的客户数 + */ + @Excel(name = "删除/拉黑成员的客户数,即将成员删除或加入黑名单的客户数") + private Long negativeFeedbackCnt; + + @TableField(exist = false) + private Map params = new HashMap<>(); +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/GroupChatStatisticDto.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/GroupChatStatisticDto.java new file mode 100644 index 000000000..c7d2f50f3 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/GroupChatStatisticDto.java @@ -0,0 +1,66 @@ +package com.linkwechat.wecom.domain.dto; + + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author danmo + */ +@Data +public class GroupChatStatisticDto { + + + private List items; + + @Data + public static class GroupchatStatisticData { + + /** + * 数据日期,为当日0点的时间戳 + */ + @JSONField(format="unixtime") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date statTime; + + private StatisticData data; + + + } + + @Data + public static class StatisticData { + /** + * 新增客户群数量 + */ + private Integer newChatCnt; + /** + * 截至当天客户群总数量 + */ + private Integer chatTotal; + /** + * 截至当天有发过消息的客户群数量 + */ + private Integer chatHasMsg; + /** + * 客户群新增群人数 + */ + private Integer newMemberCnt; + /** + * 截至当天客户群总人数 + */ + private Integer memberTotal; + /** + * 截至当天有发过消息的群成员数 + */ + private Integer memberHasMsg; + /** + * 截至当天客户群消息总数 + */ + private Integer msgTotal; + } +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/UserBehaviorDataDto.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/UserBehaviorDataDto.java new file mode 100644 index 000000000..d120a9cf9 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/UserBehaviorDataDto.java @@ -0,0 +1,59 @@ +package com.linkwechat.wecom.domain.dto; + + +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author danmo + */ +@Data +public class UserBehaviorDataDto { + + + private List behaviorData; + + @Data + public static class BehaviorData{ + + /** + * 数据日期,为当日0点的时间戳 + */ + @JSONField(format="unixtime") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date statTime; + /** + * 聊天总数, 成员有主动发送过消息的单聊总数。 + */ + private Integer chatCnt; + /** + * 发送消息数,成员在单聊中发送的消息总数。 + */ + private Integer messageCnt; + /** + * 已回复聊天占比,浮点型,客户主动发起聊天后,成员在一个自然日内有回复过消息的聊天数/客户主动发起的聊天数比例,不包括群聊,仅在确有聊天时返回。 + */ + private Float replyPercentage; + /** + * 平均首次回复时长,单位为分钟,即客户主动发起聊天后,成员在一个自然日内首次回复的时长间隔为首次回复时长,所有聊天的首次回复总时长/已回复的聊天总数即为平均首次回复时长,不包括群聊,仅在确有聊天时返回。 + */ + private Integer avgReplyTime; + /** + * 删除/拉黑成员的客户数,即将成员删除或加入黑名单的客户数。 + */ + private Integer negativeFeedbackCnt; + /** + * 主动向客户发起的好友申请数量 + */ + private Integer newApplyCnt; + /** + * 新增客户数,成员新添加的客户数量。 + */ + private Integer newContactCnt; + + } +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/GroupChatStatisticQuery.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/GroupChatStatisticQuery.java new file mode 100644 index 000000000..171638251 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/GroupChatStatisticQuery.java @@ -0,0 +1,28 @@ +package com.linkwechat.wecom.domain.query; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +/** + * @author danmo + */ +@Data +public class GroupChatStatisticQuery { + @ApiModelProperty(value = "起始日期的时间戳") + private Long day_begin_time; + + @ApiModelProperty(value = "结束日期的时间戳") + private Long day_end_time; + + @ApiModelProperty(value = "群主过滤") + private OwnerFilter ownerFilter; + + @Data + public static class OwnerFilter{ + @ApiModelProperty(value = "群主ID列表") + private List userid_list; + } +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/UserBehaviorDataQuery.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/UserBehaviorDataQuery.java new file mode 100644 index 000000000..82c55b460 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/UserBehaviorDataQuery.java @@ -0,0 +1,25 @@ +package com.linkwechat.wecom.domain.query; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author danmo + */ +@Data +public class UserBehaviorDataQuery { + + @ApiModelProperty(value = "成员ID列表,最多100个") + private List userid; + + @ApiModelProperty(value = "部门ID列表,最多100个") + private List partyid; + + @ApiModelProperty(value = "数据起始时间") + private Long start_time; + + @ApiModelProperty(value = "数据结束时间") + private Long end_time; +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupStatisticMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupStatisticMapper.java new file mode 100644 index 000000000..145b166de --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupStatisticMapper.java @@ -0,0 +1,15 @@ +package com.linkwechat.wecom.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.linkwechat.wecom.domain.WeGroupStatistic; + +/** + * 群聊数据统计数据 +Mapper接口 + * + * @author ruoyi + * @date 2021-02-24 + */ +public interface WeGroupStatisticMapper extends BaseMapper { + +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java new file mode 100644 index 000000000..0bb1bf44c --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java @@ -0,0 +1,14 @@ +package com.linkwechat.wecom.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.linkwechat.wecom.domain.WeUserBehaviorData; + +/** + * 联系客户统计数据 Mapper接口 + * + * @author ruoyi + * @date 2021-02-24 + */ +public interface WeUserBehaviorDataMapper extends BaseMapper { + +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupStatisticService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupStatisticService.java new file mode 100644 index 000000000..8c2b56c3f --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupStatisticService.java @@ -0,0 +1,21 @@ +package com.linkwechat.wecom.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.linkwechat.wecom.domain.WeGroupStatistic; + +import java.util.List; + +/** + * 群聊数据统计数据 +Service接口 + * + * @author ruoyi + * @date 2021-02-24 + */ +public interface IWeGroupStatisticService extends IService { + + /** + * 查询列表 + */ + List queryList(WeGroupStatistic weGroupStatistic); +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserBehaviorDataService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserBehaviorDataService.java new file mode 100644 index 000000000..99a1457df --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserBehaviorDataService.java @@ -0,0 +1,20 @@ +package com.linkwechat.wecom.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.linkwechat.wecom.domain.WeUserBehaviorData; + +import java.util.List; + +/** + * 联系客户统计数据 Service接口 + * + * @author ruoyi + * @date 2021-02-24 + */ +public interface IWeUserBehaviorDataService extends IService { + + /** + * 查询列表 + */ + List queryList(WeUserBehaviorData weUserBehaviorData); +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupStatisticServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupStatisticServiceImpl.java new file mode 100644 index 000000000..609fe1bb8 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupStatisticServiceImpl.java @@ -0,0 +1,57 @@ +package com.linkwechat.wecom.service.impl; + +import com.linkwechat.wecom.domain.WeGroupStatistic; +import com.linkwechat.wecom.mapper.WeGroupStatisticMapper; +import com.linkwechat.wecom.service.IWeGroupStatisticService; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; +import java.util.Map; + +/** + * 群聊数据统计数据 +Service业务层处理 + * + * @author ruoyi + * @date 2021-02-24 + */ +@Service +public class WeGroupStatisticServiceImpl extends ServiceImpl implements IWeGroupStatisticService { + + @Override + public List queryList(WeGroupStatistic weGroupStatistic) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + if (StringUtils.isNotBlank(weGroupStatistic.getChatId())){ + lqw.eq(WeGroupStatistic::getChatId ,weGroupStatistic.getChatId()); + } + if (weGroupStatistic.getStatTime() != null){ + lqw.eq(WeGroupStatistic::getStatTime ,weGroupStatistic.getStatTime()); + } + if (weGroupStatistic.getNewChatCnt() != null){ + lqw.eq(WeGroupStatistic::getNewChatCnt ,weGroupStatistic.getNewChatCnt()); + } + if (weGroupStatistic.getChatTotal() != null){ + lqw.eq(WeGroupStatistic::getChatTotal ,weGroupStatistic.getChatTotal()); + } + if (weGroupStatistic.getChatHasMsg() != null){ + lqw.eq(WeGroupStatistic::getChatHasMsg ,weGroupStatistic.getChatHasMsg()); + } + if (weGroupStatistic.getNewMemberCnt() != null){ + lqw.eq(WeGroupStatistic::getNewMemberCnt ,weGroupStatistic.getNewMemberCnt()); + } + if (weGroupStatistic.getMemberTotal() != null){ + lqw.eq(WeGroupStatistic::getMemberTotal ,weGroupStatistic.getMemberTotal()); + } + if (weGroupStatistic.getMemberHasMsg() != null){ + lqw.eq(WeGroupStatistic::getMemberHasMsg ,weGroupStatistic.getMemberHasMsg()); + } + if (weGroupStatistic.getMsgTotal() != null){ + lqw.eq(WeGroupStatistic::getMsgTotal ,weGroupStatistic.getMsgTotal()); + } + return this.list(lqw); + } +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserBehaviorDataServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserBehaviorDataServiceImpl.java new file mode 100644 index 000000000..dbec45a2b --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserBehaviorDataServiceImpl.java @@ -0,0 +1,55 @@ +package com.linkwechat.wecom.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.linkwechat.wecom.domain.WeUserBehaviorData; +import com.linkwechat.wecom.mapper.WeUserBehaviorDataMapper; +import com.linkwechat.wecom.service.IWeUserBehaviorDataService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 联系客户统计数据 Service业务层处理 + * + * @author ruoyi + * @date 2021-02-24 + */ +@Service +public class WeUserBehaviorDataServiceImpl extends ServiceImpl implements IWeUserBehaviorDataService { + + @Override + public List queryList(WeUserBehaviorData weUserBehaviorData) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + if (StringUtils.isNotBlank(weUserBehaviorData.getUserId())){ + lqw.eq(WeUserBehaviorData::getUserId ,weUserBehaviorData.getUserId()); + } + if (weUserBehaviorData.getStatTime() != null){ + lqw.eq(WeUserBehaviorData::getStatTime ,weUserBehaviorData.getStatTime()); + } + if (weUserBehaviorData.getNewApplyCnt() != null){ + lqw.eq(WeUserBehaviorData::getNewApplyCnt ,weUserBehaviorData.getNewApplyCnt()); + } + if (weUserBehaviorData.getNewContactCnt() != null){ + lqw.eq(WeUserBehaviorData::getNewContactCnt ,weUserBehaviorData.getNewContactCnt()); + } + if (weUserBehaviorData.getChatCnt() != null){ + lqw.eq(WeUserBehaviorData::getChatCnt ,weUserBehaviorData.getChatCnt()); + } + if (weUserBehaviorData.getMessageCnt() != null){ + lqw.eq(WeUserBehaviorData::getMessageCnt ,weUserBehaviorData.getMessageCnt()); + } + if (weUserBehaviorData.getReplyPercentage() != null){ + lqw.eq(WeUserBehaviorData::getReplyPercentage ,weUserBehaviorData.getReplyPercentage()); + } + if (weUserBehaviorData.getAvgReplyTime() != null){ + lqw.eq(WeUserBehaviorData::getAvgReplyTime ,weUserBehaviorData.getAvgReplyTime()); + } + if (weUserBehaviorData.getNegativeFeedbackCnt() != null){ + lqw.eq(WeUserBehaviorData::getNegativeFeedbackCnt ,weUserBehaviorData.getNegativeFeedbackCnt()); + } + return this.list(lqw); + } +} diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeGroupStatisticMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeGroupStatisticMapper.xml new file mode 100644 index 000000000..69ff24230 --- /dev/null +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeGroupStatisticMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml new file mode 100644 index 000000000..a754d78c9 --- /dev/null +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- Gitee From e72b2918c49ab8fad77332a9ad399c9ab9a340e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=9F=E6=A2=A6=E8=8B=8D=E5=A4=A9?= <1048058229@qq.com> Date: Wed, 24 Feb 2021 15:42:29 +0800 Subject: [PATCH 06/67] =?UTF-8?q?=E6=B5=B7=E6=8A=A5=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/linkwechat/wecom/service/impl/WePosterServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePosterServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePosterServiceImpl.java index e264e27bf..9816c4372 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePosterServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WePosterServiceImpl.java @@ -133,7 +133,7 @@ public class WePosterServiceImpl extends ServiceImpl i } }) .collect(Collectors.toMap(WePosterSubassembly::getFontId, wePosterSubassembly -> posterFontService.getFont(wePosterSubassembly.getFontId(), wePosterSubassembly.getFontSize(),wePosterSubassembly.getFontStyle()))); - Map fileCallableMap = poster.getPosterSubassemblyList().stream().filter(wePosterSubassembly -> StringUtils.isNotBlank(wePosterSubassembly.getImgPath())).distinct().collect(Collectors.toMap(WePosterSubassembly::getImgPath, wePosterSubassembly -> NetFileUtils.getNetFile(wePosterSubassembly.getImgPath()))); + Map fileCallableMap = poster.getPosterSubassemblyList().stream().map(WePosterSubassembly::getImgPath).filter(StringUtils::isNotBlank).distinct().collect(Collectors.toMap(s->s, NetFileUtils::getNetFile)); if (CollectionUtils.isEmpty(fileCallableMap)) { fileCallableMap = new HashMap<>(); } -- Gitee From 337d8f6e505db86d5d3332cf718587322fd14a38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=AA=E6=B6=9B=E9=A3=9E?= <274131322@qq.com> Date: Wed, 24 Feb 2021 19:32:21 +0800 Subject: [PATCH 07/67] =?UTF-8?q?=E6=96=B0=E5=AE=A2=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=8B=89=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/domain/WeCommunityNewGroup.java | 33 +++++- .../domain/dto/WeCommunityNewGroupDto.java | 16 ++- .../domain/vo/WeCommunityNewGroupVo.java | 10 +- .../impl/WeCommunityNewGroupServiceImpl.java | 110 +++++++++++++----- .../service/impl/WeEmpleCodeServiceImpl.java | 4 +- 5 files changed, 126 insertions(+), 47 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCommunityNewGroup.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCommunityNewGroup.java index eda560e49..6043d3caa 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCommunityNewGroup.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCommunityNewGroup.java @@ -19,20 +19,45 @@ public class WeCommunityNewGroup extends BaseEntity { private Long newGroupId= SnowFlakeUtil.nextId(); /** - *员工活码ID + * 员工活码名称 */ - private Long empleCodeId; + private String empleCodeName; /** - * 员工活码名称 + * 活动场景 */ - private String empleCodeName; + private String activityScene; + + /** + * 欢迎语 + */ + private String welcomeMsg; + + /** + * 二维码链接 + */ + private String qrCode; + + /** + * 客户添加时无需经过确认自动成为好友:1:是;0:否 + */ + private Boolean isJoinConfirmFriends; + + /** + * 添加好友数 + */ + private Integer joinFriendNums; /** * 群活码ID */ private Long groupCodeId; + /** + * 素材的id + */ + private Long mediaId; + /** * 0 未删除 1 已删除 */ diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java index 58fce09e7..0236d6b3b 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java @@ -38,12 +38,6 @@ public class WeCommunityNewGroupDto { @TableField(exist = false) private List weEmpleCodeTags; - /** - * 员工活码 id - */ - @TableField(exist = false) - private Long weEmpleCodeId; - /** * 群活码ID */ @@ -54,4 +48,14 @@ public class WeCommunityNewGroupDto { */ private Boolean isJoinConfirmFriends; + /** + * 二维码链接 + */ + private String qrCode; + + /** + * 素材的id + */ + private Long mediaId; + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeCommunityNewGroupVo.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeCommunityNewGroupVo.java index c4c2b9607..96f266edc 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeCommunityNewGroupVo.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeCommunityNewGroupVo.java @@ -24,11 +24,6 @@ public class WeCommunityNewGroupVo { */ private Long newGroupId; - /** - *员工活码ID - */ - private Long empleCodeId; - /** * 员工活码名称 */ @@ -81,6 +76,11 @@ public class WeCommunityNewGroupVo { @TableField(exist = false) private WeMaterial weMaterial; + /** + * 素材的id + */ + private Long mediaId; + /** * 实际群聊 */ diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java index d979970a3..f70cf97ef 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java @@ -1,17 +1,21 @@ package com.linkwechat.wecom.service.impl; +import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.linkwechat.common.exception.wecom.WeComException; import com.linkwechat.common.utils.SecurityUtils; +import com.linkwechat.wecom.client.WeExternalContactClient; import com.linkwechat.wecom.domain.WeCommunityNewGroup; import com.linkwechat.wecom.domain.WeEmpleCode; import com.linkwechat.wecom.domain.WeGroupCode; import com.linkwechat.wecom.domain.dto.WeCommunityNewGroupDto; +import com.linkwechat.wecom.domain.dto.WeExternalContactDto; import com.linkwechat.wecom.domain.vo.WeCommunityNewGroupVo; import com.linkwechat.wecom.mapper.WeCommunityNewGroupMapper; import com.linkwechat.wecom.mapper.WeGroupCodeMapper; import com.linkwechat.wecom.service.IWeCommunityNewGroupService; -import com.linkwechat.wecom.service.IWeEmpleCodeService; +import com.linkwechat.wecom.service.IWeEmpleCodeTagService; +import com.linkwechat.wecom.service.IWeEmpleCodeUseScopService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -33,11 +37,21 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl item.setEmpleCodeId(communityNewGroup.getNewGroupId())); + iWeEmpleCodeUseScopService.saveBatch(weEmpleCode.getWeEmpleCodeUseScops()); + } + if (CollectionUtil.isNotEmpty(weEmpleCode.getWeEmpleCodeTags())) { + weEmpleCode.getWeEmpleCodeTags().forEach(item -> item.setEmpleCodeId(communityNewGroup.getNewGroupId())); + weEmpleCodeTagService.saveBatch(weEmpleCode.getWeEmpleCodeTags()); + } + } return 1; } + private WeEmpleCode getWeEmpleCode(WeCommunityNewGroupDto communityNewGroupDto) { + WeEmpleCode weEmpleCode = new WeEmpleCode(); + weEmpleCode.setCodeType(2); + weEmpleCode.setActivityScene(communityNewGroupDto.getActivityScene()); + weEmpleCode.setIsJoinConfirmFriends(communityNewGroupDto.getIsJoinConfirmFriends()); + weEmpleCode.setWelcomeMsg(communityNewGroupDto.getWelcomeMsg()); + weEmpleCode.setWeEmpleCodeUseScops(communityNewGroupDto.getWeEmpleCodeUseScops()); + weEmpleCode.setWeEmpleCodeTags(communityNewGroupDto.getWeEmpleCodeTags()); + weEmpleCode.setQrCode(communityNewGroupDto.getQrCode()); + weEmpleCode.setMediaId(communityNewGroupDto.getMediaId()); + return weEmpleCode; + } + @Override public List selectWeCommunityNewGroupList(WeCommunityNewGroup communityNewGroup) { return weCommunityNewGroupMapper.selectWeCommunityNewGroupList(communityNewGroup); @@ -96,26 +135,37 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl item.setEmpleCodeId(communityNewGroup.getNewGroupId())); + iWeEmpleCodeUseScopService.updateBatchById(weEmpleCode.getWeEmpleCodeUseScops()); + } + if (CollectionUtil.isNotEmpty(weEmpleCode.getWeEmpleCodeTags())) { + weEmpleCode.getWeEmpleCodeTags().forEach(item -> item.setEmpleCodeId(communityNewGroup.getNewGroupId())); + weEmpleCodeTagService.updateBatchById(weEmpleCode.getWeEmpleCodeTags()); + } + } return 1; } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeEmpleCodeServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeEmpleCodeServiceImpl.java index e094117de..ce146e59d 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeEmpleCodeServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeEmpleCodeServiceImpl.java @@ -326,7 +326,7 @@ public class WeEmpleCodeServiceImpl extends ServiceImpl weEmpleCodeUseScops = weEmpleCode.getWeEmpleCodeUseScops(); //根据类型生成相应的活码 -- Gitee From f13c157726796cd83613b9638930aa2ebf1c1caf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=AA=E6=B6=9B=E9=A3=9E?= <274131322@qq.com> Date: Wed, 24 Feb 2021 19:56:32 +0800 Subject: [PATCH 08/67] =?UTF-8?q?=E6=96=B0=E5=AE=A2=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=8B=89=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WeCommunityNewGroupServiceImpl.java | 49 +++++++++++++++++-- .../wecom/WeCommunityNewGroupMapper.xml | 29 ++++++++++- 2 files changed, 72 insertions(+), 6 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java index f70cf97ef..2709596e7 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java @@ -2,12 +2,11 @@ package com.linkwechat.wecom.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; import com.linkwechat.common.exception.wecom.WeComException; import com.linkwechat.common.utils.SecurityUtils; import com.linkwechat.wecom.client.WeExternalContactClient; -import com.linkwechat.wecom.domain.WeCommunityNewGroup; -import com.linkwechat.wecom.domain.WeEmpleCode; -import com.linkwechat.wecom.domain.WeGroupCode; +import com.linkwechat.wecom.domain.*; import com.linkwechat.wecom.domain.dto.WeCommunityNewGroupDto; import com.linkwechat.wecom.domain.dto.WeExternalContactDto; import com.linkwechat.wecom.domain.vo.WeCommunityNewGroupVo; @@ -16,12 +15,14 @@ import com.linkwechat.wecom.mapper.WeGroupCodeMapper; import com.linkwechat.wecom.service.IWeCommunityNewGroupService; import com.linkwechat.wecom.service.IWeEmpleCodeTagService; import com.linkwechat.wecom.service.IWeEmpleCodeUseScopService; +import com.linkwechat.wecom.service.IWeGroupCodeActualService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * 社群运营 新客自动拉群 @@ -52,6 +53,9 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl selectWeCommunityNewGroupList(WeCommunityNewGroup communityNewGroup) { - return weCommunityNewGroupMapper.selectWeCommunityNewGroupList(communityNewGroup); + List weCommunityNewGroupVos = weCommunityNewGroupMapper.selectWeCommunityNewGroupList(communityNewGroup); + if(CollectionUtil.isNotEmpty(weCommunityNewGroupVos)){ + List newGroupIdList = weCommunityNewGroupVos.stream().map(WeCommunityNewGroupVo::getNewGroupId).collect(Collectors.toList()); + List useScopList = iWeEmpleCodeUseScopService.selectWeEmpleCodeUseScopListByIds(newGroupIdList); + List tagList = weEmpleCodeTagService.selectWeEmpleCodeTagListByIds(newGroupIdList); + weCommunityNewGroupVos.forEach(newGroup -> { + List weGroupCodeActuals = getWeGroupCodeActuals(newGroup); + newGroup.setWeGroupUserScops(weGroupCodeActuals); + //活码使用人对象 + List weEmpleCodeUseScopList = useScopList.stream() + .filter(useScop -> useScop.getEmpleCodeId().equals(newGroup.getNewGroupId())).collect(Collectors.toList()); + newGroup.setWeEmpleCodeUseScops(weEmpleCodeUseScopList); + //员工活码标签对象 + newGroup.setWeEmpleCodeTags(tagList.stream() + .filter(tag -> tag.getEmpleCodeId().equals(newGroup.getNewGroupId())).collect(Collectors.toList())); + }); + } + return weCommunityNewGroupVos; } @Override public WeCommunityNewGroupVo selectWeCommunityNewGroupById(Long newGroupId) { + WeCommunityNewGroupVo weCommunityNewGroupVo = weCommunityNewGroupMapper.selectWeCommunityNewGroupById(newGroupId); + if(null!=weCommunityNewGroupVo){ + List weGroupCodeActuals = getWeGroupCodeActuals(weCommunityNewGroupVo); + weCommunityNewGroupVo.setWeGroupUserScops(weGroupCodeActuals); + List useScopList = iWeEmpleCodeUseScopService.selectWeEmpleCodeUseScopListByIds(Lists.newArrayList(weCommunityNewGroupVo.getNewGroupId())); + List tagList = weEmpleCodeTagService.selectWeEmpleCodeTagListByIds(Lists.newArrayList(weCommunityNewGroupVo.getNewGroupId())); + //活码使用人对象 + List weEmpleCodeUseScopList = useScopList.stream() + .filter(useScop -> useScop.getEmpleCodeId().equals(weCommunityNewGroupVo.getNewGroupId())).collect(Collectors.toList()); + weCommunityNewGroupVo.setWeEmpleCodeUseScops(weEmpleCodeUseScopList); + //员工活码标签对象 + weCommunityNewGroupVo.setWeEmpleCodeTags(tagList.stream() + .filter(tag -> tag.getEmpleCodeId().equals(weCommunityNewGroupVo.getNewGroupId())).collect(Collectors.toList())); + } return weCommunityNewGroupMapper.selectWeCommunityNewGroupById(newGroupId); } + private List getWeGroupCodeActuals(WeCommunityNewGroupVo weCommunityNewGroupVo) { + WeGroupCodeActual weGroupCodeActual = new WeGroupCodeActual(); + weGroupCodeActual.setGroupCodeId(weCommunityNewGroupVo.getNewGroupId()); + return weGroupCodeActualService.selectWeGroupCodeActualList(weGroupCodeActual); + } + @Override public int updateWeCommunityNewGroup(WeCommunityNewGroupDto communityNewGroupDto) { diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeCommunityNewGroupMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeCommunityNewGroupMapper.xml index 6a57d7e04..97b30303c 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeCommunityNewGroupMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeCommunityNewGroupMapper.xml @@ -4,6 +4,25 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + SELECT + new_group_id, + emple_code_name, + group_code_id, + create_by, + create_time, + update_by, + update_time, + del_flag, + activity_scene, + welcome_msg, + qr_code, + is_join_confirm_friends, + media_id, + join_friend_nums + FROM + we_community_new_group + update we_community_new_group set del_flag = 1 @@ -16,12 +35,18 @@ \ No newline at end of file -- Gitee From d869df3470c02035202bee9adda66fdf0ad00822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=AA=E6=B6=9B=E9=A3=9E?= <274131322@qq.com> Date: Wed, 24 Feb 2021 20:52:17 +0800 Subject: [PATCH 09/67] =?UTF-8?q?=E6=96=B0=E5=AE=A2=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=8B=89=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/service/impl/WeCommunityNewGroupServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java index 2709596e7..cb0ed4857 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java @@ -152,7 +152,7 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl tag.getEmpleCodeId().equals(weCommunityNewGroupVo.getNewGroupId())).collect(Collectors.toList())); } - return weCommunityNewGroupMapper.selectWeCommunityNewGroupById(newGroupId); + return weCommunityNewGroupVo; } private List getWeGroupCodeActuals(WeCommunityNewGroupVo weCommunityNewGroupVo) { -- Gitee From 3665c325f11fdde6053f440ae5862876c3c371f0 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Thu, 25 Feb 2021 14:52:41 +0800 Subject: [PATCH 10/67] =?UTF-8?q?=E5=A2=9E=E5=8A=A0nacos=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=B8=AD=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- linkwe-admin/pom.xml | 9 +++ .../com/linkwechat/LinkWeChatApplication.java | 36 +++++----- .../src/main/resources/bootstrap.properties | 4 ++ pom.xml | 66 +++++++++++-------- 4 files changed, 67 insertions(+), 48 deletions(-) create mode 100644 linkwe-admin/src/main/resources/bootstrap.properties diff --git a/linkwe-admin/pom.xml b/linkwe-admin/pom.xml index 7a21ea6a1..ec23b0398 100644 --- a/linkwe-admin/pom.xml +++ b/linkwe-admin/pom.xml @@ -74,6 +74,15 @@ 5.6.24 + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + diff --git a/linkwe-admin/src/main/java/com/linkwechat/LinkWeChatApplication.java b/linkwe-admin/src/main/java/com/linkwechat/LinkWeChatApplication.java index 9684fe1a9..3f7a258a7 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/LinkWeChatApplication.java +++ b/linkwe-admin/src/main/java/com/linkwechat/LinkWeChatApplication.java @@ -6,35 +6,33 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.scheduling.annotation.EnableAsync; /** * 启动程序 - * + * * @author ruoyi */ -@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, PageHelperAutoConfiguration.class }) +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, PageHelperAutoConfiguration.class}) @MapperScan("com.linkwechat.*.mapper") @ForestScan(basePackages = "com.linkwechat.wecom.client") @EnableAsync -public class LinkWeChatApplication -{ - public static void main(String[] args) - { +@EnableDiscoveryClient +public class LinkWeChatApplication { + public static void main(String[] args) { - SpringApplication.run(LinkWeChatApplication.class, args); - System.out.println("(♥◠‿◠)ノ゙ LinkWeChat启动成功 ლ(´ڡ`ლ)゙ \n" + - " .-------. ____ __ \n" + - " | _ _ \\ \\ \\ / / \n" + - " | ( ' ) | \\ _. / ' \n" + - " |(_ o _) / _( )_ .' \n" + - " | (_,_).' __ ___(_ o _)' \n" + - " | |\\ \\ | || |(_,_)' \n" + - " | | \\ `' /| `-' / \n" + - " | | \\ / \\ / \n" + - " ''-' `'-' `-..-' "); + SpringApplication.run(LinkWeChatApplication.class, args); + System.out.println("(♥◠‿◠)ノ゙ LinkWeChat启动成功 ლ(´ڡ`ლ)゙ \n" + + " .-------. ____ __ \n" + + " | _ _ \\ \\ \\ / / \n" + + " | ( ' ) | \\ _. / ' \n" + + " |(_ o _) / _( )_ .' \n" + + " | (_,_).' __ ___(_ o _)' \n" + + " | |\\ \\ | || |(_,_)' \n" + + " | | \\ `' /| `-' / \n" + + " | | \\ / \\ / \n" + + " ''-' `'-' `-..-' "); } - - } diff --git a/linkwe-admin/src/main/resources/bootstrap.properties b/linkwe-admin/src/main/resources/bootstrap.properties new file mode 100644 index 000000000..d50e0c02c --- /dev/null +++ b/linkwe-admin/src/main/resources/bootstrap.properties @@ -0,0 +1,4 @@ +spring.cloud.nacos.config.server-addr=${NACOS_SERVER:127.0.0.1:8848} +spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER:127.0.0.1:8848} +spring.application.name=link-wechat +spring.cloud.nacos.config.file-extension=yaml \ No newline at end of file diff --git a/pom.xml b/pom.xml index 35a110bf8..e72007200 100644 --- a/pom.xml +++ b/pom.xml @@ -2,8 +2,8 @@ - 4.0.0 - + 4.0.0 + com.linkwechat linkwechat 3.1.0 @@ -11,18 +11,18 @@ linkwechat http://www.ruoyi.vip 若依管理系统 - + 2.3.7.RELEASE 3.1.0 UTF-8 UTF-8 1.8 - + 1.1.14 1.19 2.9.2 - 2.3.2 + 2.3.2 1.2.7 1.2.73 3.9.1 @@ -39,8 +39,9 @@ 3.4.0 4.0.0 4.1.49.Final + 2.2.5.RELEASE - + @@ -61,35 +62,35 @@ pom import - + com.alibaba druid-spring-boot-starter ${druid.version} - + eu.bitwalker UserAgentUtils ${bitwalker.version} - + com.github.pagehelper pagehelper-spring-boot-starter ${pagehelper.boot.version} - + com.github.oshi oshi-core ${oshi.version} - + io.springfox @@ -106,91 +107,91 @@ - + io.springfox springfox-swagger-ui ${swagger.version} - + commons-io commons-io ${commons.io.version} - + commons-fileupload commons-fileupload ${commons.fileupload.version} - + org.apache.poi poi-ooxml ${poi.version} - + org.apache.velocity velocity ${velocity.version} - + com.alibaba fastjson ${fastjson.version} - + io.jsonwebtoken jjwt ${jwt.version} - + com.github.penggle kaptcha ${kaptcha.version} - + com.linkwechat linkwe-quartz ${linkwe.version} - + com.linkwechat linkwe-generator ${linkwe.version} - + com.linkwechat linkwe-framework ${linkwe.version} - + com.linkwechat linkwe-system ${linkwe.version} - + com.linkwechat @@ -257,6 +258,17 @@ ${vertx.version} + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + ${nacos.version} + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + ${nacos.version} + @@ -269,12 +281,8 @@ linkwe-common linkwe-wecom - pom - - - - + pom -- Gitee From 184fe2ba8e313546e3ca3ea57ace0f91366c3404 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Thu, 25 Feb 2021 15:00:46 +0800 Subject: [PATCH 11/67] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=8F=91=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- linkwe-admin/pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/linkwe-admin/pom.xml b/linkwe-admin/pom.xml index ec23b0398..b940a787b 100644 --- a/linkwe-admin/pom.xml +++ b/linkwe-admin/pom.xml @@ -79,10 +79,10 @@ spring-cloud-starter-alibaba-nacos-config - - com.alibaba.cloud - spring-cloud-starter-alibaba-nacos-discovery - + + + + -- Gitee From 78cfcfa41097cbef5fedf0f378c66a5ef75be9c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=A1=E6=BC=A0?= Date: Thu, 25 Feb 2021 16:37:11 +0800 Subject: [PATCH 12/67] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quartz/task/PageHomeDataTask.java | 109 +++++++++++- .../wecom/domain/WeUserBehaviorData.java | 2 +- .../wecom/domain/dto/WePageCountDto.java | 86 +++++++++ .../wecom/domain/dto/WePageStaticDataDto.java | 47 +++++ .../wecom/domain/query/WePageStateQuery.java | 32 ++++ .../mapper/WeUserBehaviorDataMapper.java | 30 ++++ .../service/IWeUserBehaviorDataService.java | 29 +++ .../impl/WeUserBehaviorDataServiceImpl.java | 22 +++ .../mapper/wecom/WeUserBehaviorDataMapper.xml | 167 ++++++++++++++++-- 9 files changed, 505 insertions(+), 19 deletions(-) create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WePageCountDto.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WePageStaticDataDto.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WePageStateQuery.java diff --git a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java index 375e42c5c..ee01a9f4a 100644 --- a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java +++ b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java @@ -1,17 +1,21 @@ package com.linkwechat.quartz.task; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.linkwechat.common.constant.WeConstans; import com.linkwechat.common.core.redis.RedisCache; -import com.linkwechat.wecom.domain.WeCorpAccount; -import com.linkwechat.wecom.domain.WeCustomer; import com.linkwechat.wecom.domain.WeUser; +import com.linkwechat.wecom.domain.dto.WePageCountDto; +import com.linkwechat.wecom.domain.dto.WePageStaticDataDto; +import com.linkwechat.wecom.domain.query.WePageStateQuery; import com.linkwechat.wecom.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -38,8 +42,13 @@ public class PageHomeDataTask { private IWeGroupMemberService weGroupMemberService; @Autowired - private RedisCache redisCache; + private IWeUserBehaviorDataService weUserBehaviorDataService; + @Autowired + private IWeGroupStatisticService weGroupStatisticService; + + @Autowired + private RedisCache redisCache; public void getCorpBasicData(){ //查询当前使用企业 @@ -64,7 +73,97 @@ public class PageHomeDataTask { public void getCorpRealTimeData(){ - //今日 - //发起申请数 + WePageStaticDataDto wePageStaticDataDto = new WePageStaticDataDto(); + //今天 + wePageStaticDataDto.setToday(getTodayData()); + wePageStaticDataDto.setWeek(getWeekData()); + wePageStaticDataDto.setMonth(getMonthData()); + wePageStaticDataDto.setUpdateTime(DateUtil.now()); + redisCache.setCacheObject("getCorpRealTimeData",wePageStaticDataDto); + } + + private WePageStaticDataDto.PageStaticData getTodayData(){ + /** + * 今日 + */ + String today = DateUtil.today(); + String yesterday = DateUtil.yesterday().toDateStr(); + //客户统计 + WePageCountDto newTime = weUserBehaviorDataService.getCountDataByDay(today,"d"); + /** + * 昨日 + */ + //客户统计 + WePageCountDto lastTime = weUserBehaviorDataService.getCountDataByDay(yesterday,"d"); + + WePageStaticDataDto.PageStaticData pageStaticData = setPageStaticData(newTime, lastTime); + + WePageStateQuery wePageStateQuery = new WePageStateQuery(); + //获取15天前的时间 + wePageStateQuery.setStartTime(DateUtil.offsetDay(new Date(), -15).toDateStr()); + wePageStateQuery.setEndTime(today); + wePageStateQuery.setFew(14); + List dayCountData = weUserBehaviorDataService.getDayCountData(wePageStateQuery); + pageStaticData.setDataList(dayCountData); + + return pageStaticData; + } + + private WePageStaticDataDto.PageStaticData getWeekData(){ + /** + * 本周 + */ + //客户统计 + WePageCountDto newTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.today(),"w"); + /** + * 上周 + */ + //客户统计 + WePageCountDto lastTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.lastWeek().toDateStr(),"w"); + + WePageStaticDataDto.PageStaticData pageStaticData = setPageStaticData(newTime, lastTime); + + WePageStateQuery wePageStateQuery = new WePageStateQuery(); + wePageStateQuery.setFew(5); + List weekCountData = weUserBehaviorDataService.getWeekCountData(wePageStateQuery); + pageStaticData.setDataList(weekCountData); + + return pageStaticData; + } + + private WePageStaticDataDto.PageStaticData getMonthData(){ + /** + * 本周 + */ + //客户统计 + WePageCountDto newTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.today(),"m"); + /** + * 上周 + */ + //客户统计 + WePageCountDto lastTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.lastMonth().toDateStr(),"m"); + + WePageStaticDataDto.PageStaticData pageStaticData = setPageStaticData(newTime, lastTime); + + WePageStateQuery wePageStateQuery = new WePageStateQuery(); + wePageStateQuery.setFew(5); + List monthCountData = weUserBehaviorDataService.getMonthCountData(wePageStateQuery); + pageStaticData.setDataList(monthCountData); + + return pageStaticData; + } + + + private WePageStaticDataDto.PageStaticData setPageStaticData(WePageCountDto nowTime,WePageCountDto lastTime){ + WePageStaticDataDto.PageStaticData pageStaticData = new WePageStaticDataDto.PageStaticData(); + + pageStaticData.setNewApplyCnt(nowTime.getNewApplyCnt()); + pageStaticData.setNewApplyCntDiff(nowTime.getNewApplyCnt() - lastTime.getNewApplyCnt()); + pageStaticData.setNegativeFeedbackCnt(nowTime.getNegativeFeedbackCnt()); + pageStaticData.setNegativeFeedbackCntDiff(nowTime.getNegativeFeedbackCnt() - lastTime.getNegativeFeedbackCnt()); + pageStaticData.setNewContactCnt(nowTime.getNewContactCnt()); + pageStaticData.setNewContactCntDiff(nowTime.getNewContactCnt() - lastTime.getNewContactCnt()); + + return pageStaticData; } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java index aec6c1a7c..bd909dd05 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java @@ -76,7 +76,7 @@ public class WeUserBehaviorData implements Serializable { * 已回复聊天占比,浮点型,客户主动发起聊天后,成员在一个自然日内有回复过消息的聊天数/客户主动发起的聊天数比例,不包括群聊,仅在确有聊天时返回 */ @Excel(name = "已回复聊天占比,浮点型,客户主动发起聊天后,成员在一个自然日内有回复过消息的聊天数/客户主动发起的聊天数比例,不包括群聊,仅在确有聊天时返回") - private Long replyPercentage; + private Float replyPercentage; /** * 平均首次回复时长 diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WePageCountDto.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WePageCountDto.java new file mode 100644 index 000000000..be4d8b79f --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WePageCountDto.java @@ -0,0 +1,86 @@ +package com.linkwechat.wecom.domain.dto; + +import lombok.Data; + +/** + * @author danmo + * @description + * @date 2021/2/25 11:21 + **/ +@Data +public class WePageCountDto { + /** + * 日期 + */ + private String xTime; + + /** + * 发起申请数 + */ + private Integer newApplyCnt; + + /** + * 新增客户数,成员新添加的客户数量 + */ + private Integer newContactCnt; + + /** + * 聊天总数, 成员有主动发送过消息的单聊总数 + */ + private Integer chatCnt; + + /** + * 发送消息数,成员在单聊中发送的消息总数 + */ + private Integer messageCnt; + + /** + * 已回复聊天占比,浮点型,客户主动发起聊天后,成员在一个自然日内有回复过消息的聊天数/客户主动发起的聊天数比例,不包括群聊,仅在确有聊天时返回 + */ + private Float replyPercentage; + + /** + * 平均首次回复时长 + */ + private Integer avgReplyTime; + + /** + * 删除/拉黑成员的客户数,即将成员删除或加入黑名单的客户数 + */ + private Long negativeFeedbackCnt; + + /** + * 新增客户群数量 + */ + private Integer newChatCnt; + + /** + * 截至当天客户群总数量 + */ + private Integer chatTotal; + + /** + * 截至当天有发过消息的客户群数量 + */ + private Integer chatHasMsg; + + /** + * 客户群新增群人数 + */ + private Integer newMemberCnt; + + /** + * 截至当天客户群总人数 + */ + private Integer memberTotal; + + /** + * 截至当天有发过消息的群成员数 + */ + private Integer memberHasMsg; + + /** + * 截至当天客户群消息总数 + */ + private Integer msgTotal; +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WePageStaticDataDto.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WePageStaticDataDto.java new file mode 100644 index 000000000..aa08cc15e --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WePageStaticDataDto.java @@ -0,0 +1,47 @@ +package com.linkwechat.wecom.domain.dto; + +import lombok.Data; + +import java.util.List; + +/** + * @author danmo + * @description + * @date 2021/2/25 11:21 + **/ +@Data +public class WePageStaticDataDto { + + /** + * 更新时间 + */ + private String updateTime; + + private PageStaticData today; + + private PageStaticData week; + + private PageStaticData month; + + @Data + public static class PageStaticData{ + //发起申请数 + private Integer newApplyCnt; + //发起申请数差值 + private Integer newApplyCntDiff; + //新增客户数 + private Integer newContactCnt; + //新增客户数差值 + private Integer newContactCntDiff; + //群新增人数 + private Integer newMemberCnt; + //群新增人数差值 + private Integer newMemberCntDiff; + //流失客户数 + private Long negativeFeedbackCnt; + //流失客户数差值 + private Long negativeFeedbackCntDiff; + //图表数据 + private List dataList; + } +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WePageStateQuery.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WePageStateQuery.java new file mode 100644 index 000000000..84e55a6a5 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WePageStateQuery.java @@ -0,0 +1,32 @@ +package com.linkwechat.wecom.domain.query; + +import lombok.Data; + +/** + * @author danmo + * @description + * @date 2021/2/25 11:21 + **/ +@Data +public class WePageStateQuery { + /** + * 日期间隔 + */ + private Integer few; + + /** + * 日期 + */ + private String dateTime; + + /** + * 开始时间 + */ + private String startTime; + + /** + * 结束时间 + */ + private String endTime; + +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java index 0bb1bf44c..4ae1bb418 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java @@ -2,6 +2,10 @@ package com.linkwechat.wecom.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.linkwechat.wecom.domain.WeUserBehaviorData; +import com.linkwechat.wecom.domain.dto.WePageCountDto; +import com.linkwechat.wecom.domain.query.WePageStateQuery; + +import java.util.List; /** * 联系客户统计数据 Mapper接口 @@ -11,4 +15,30 @@ import com.linkwechat.wecom.domain.WeUserBehaviorData; */ public interface WeUserBehaviorDataMapper extends BaseMapper { + /** + * 按日期查询当天数据统计结果 + * @param dateTime + * @return WeUserBehaviorDataDto + */ + public WePageCountDto getCountDataByDay(String dateTime,String type); + + /** + * 按天维度查询数据统计 + * @param wePageStateQuery 入参 + * @return List + */ + public List getDayCountData(WePageStateQuery wePageStateQuery); + /** + * 按周维度查询数据统计 + * @param wePageStateQuery 入参 + * @return List + */ + public List getWeekCountData(WePageStateQuery wePageStateQuery); + /** + * 按月维度查询数据统计 + * @param wePageStateQuery 入参 + * @return List + */ + public List getMonthCountData(WePageStateQuery wePageStateQuery); + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserBehaviorDataService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserBehaviorDataService.java index 99a1457df..904cae6f4 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserBehaviorDataService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserBehaviorDataService.java @@ -2,6 +2,8 @@ package com.linkwechat.wecom.service; import com.baomidou.mybatisplus.extension.service.IService; import com.linkwechat.wecom.domain.WeUserBehaviorData; +import com.linkwechat.wecom.domain.dto.WePageCountDto; +import com.linkwechat.wecom.domain.query.WePageStateQuery; import java.util.List; @@ -17,4 +19,31 @@ public interface IWeUserBehaviorDataService extends IService * 查询列表 */ List queryList(WeUserBehaviorData weUserBehaviorData); + + /** + * 按日期查询当天数据统计结果 + * @param dateTime + * @return WeUserBehaviorDataDto + */ + WePageCountDto getCountDataByDay(String dateTime,String type); + + /** + * 按天维度查询数据统计 + * @param wePageStateQuery 入参 + * @return List + */ + List getDayCountData(WePageStateQuery wePageStateQuery); + /** + * 按周维度查询数据统计 + * @param wePageStateQuery 入参 + * @return List + */ + List getWeekCountData(WePageStateQuery wePageStateQuery); + + /** + * 按月维度查询数据统计 + * @param wePageStateQuery 入参 + * @return List + */ + List getMonthCountData(WePageStateQuery wePageStateQuery); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserBehaviorDataServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserBehaviorDataServiceImpl.java index dbec45a2b..c50f32a36 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserBehaviorDataServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserBehaviorDataServiceImpl.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.linkwechat.wecom.domain.WeUserBehaviorData; +import com.linkwechat.wecom.domain.dto.WePageCountDto; +import com.linkwechat.wecom.domain.query.WePageStateQuery; import com.linkwechat.wecom.mapper.WeUserBehaviorDataMapper; import com.linkwechat.wecom.service.IWeUserBehaviorDataService; import org.apache.commons.lang3.StringUtils; @@ -52,4 +54,24 @@ public class WeUserBehaviorDataServiceImpl extends ServiceImpl getDayCountData(WePageStateQuery wePageStateQuery) { + return this.baseMapper.getDayCountData(wePageStateQuery); + } + + @Override + public List getWeekCountData(WePageStateQuery wePageStateQuery) { + return this.baseMapper.getWeekCountData(wePageStateQuery); + } + + @Override + public List getMonthCountData(WePageStateQuery wePageStateQuery) { + return this.baseMapper.getMonthCountData(wePageStateQuery); + } } diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml index a754d78c9..73bf8f892 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml @@ -1,21 +1,162 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - - - - - - - - - - + + + + + + + + + + + + + + + + \ No newline at end of file -- Gitee From 3d81f3aec2dfc3ec0997979d353a4bf4335856a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=A1=E6=BC=A0?= Date: Thu, 25 Feb 2021 16:58:44 +0800 Subject: [PATCH 13/67] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/linkwechat/quartz/task/PageHomeDataTask.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java index ee01a9f4a..23004310a 100644 --- a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java +++ b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java @@ -50,6 +50,12 @@ public class PageHomeDataTask { @Autowired private RedisCache redisCache; + + public void getPageHomeDataData(){ + getCorpBasicData(); + getCorpRealTimeData(); + } + public void getCorpBasicData(){ //查询当前使用企业 //WeCorpAccount weCorpAccount = weCorpAccountService.findValidWeCorpAccount(); -- Gitee From 236b51dfa0e05b48c35d410430eaf9a375bda707 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=A1=E6=BC=A0?= Date: Thu, 25 Feb 2021 17:12:20 +0800 Subject: [PATCH 14/67] fix --- linkwe-admin/src/main/resources/bootstrap.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linkwe-admin/src/main/resources/bootstrap.properties b/linkwe-admin/src/main/resources/bootstrap.properties index d50e0c02c..d588a70fd 100644 --- a/linkwe-admin/src/main/resources/bootstrap.properties +++ b/linkwe-admin/src/main/resources/bootstrap.properties @@ -1,4 +1,4 @@ -spring.cloud.nacos.config.server-addr=${NACOS_SERVER:127.0.0.1:8848} -spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER:127.0.0.1:8848} +spring.cloud.nacos.config.server-addr=${NACOS_SERVER:119.45.28.29:8848} +spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER:119.45.28.29:8848} spring.application.name=link-wechat spring.cloud.nacos.config.file-extension=yaml \ No newline at end of file -- Gitee From 6efa798eb33d3c3ed69a6a3409ed58be816f5873 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=A1=E6=BC=A0?= Date: Thu, 25 Feb 2021 17:12:41 +0800 Subject: [PATCH 15/67] fix --- linkwe-admin/src/main/resources/bootstrap.properties | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/linkwe-admin/src/main/resources/bootstrap.properties b/linkwe-admin/src/main/resources/bootstrap.properties index d588a70fd..66b77a5d2 100644 --- a/linkwe-admin/src/main/resources/bootstrap.properties +++ b/linkwe-admin/src/main/resources/bootstrap.properties @@ -1,4 +1,6 @@ -spring.cloud.nacos.config.server-addr=${NACOS_SERVER:119.45.28.29:8848} -spring.cloud.nacos.discovery.server-addr=${NACOS_SERVER:119.45.28.29:8848} +spring.cloud.nacos.config.server-addr=${NACOS_SERVER:119.45.28.29:10848} +spring.cloud.nacos.config.namespace=627a666a-76b2-42ad-a1b0-70a12d2c73fd spring.application.name=link-wechat -spring.cloud.nacos.config.file-extension=yaml \ No newline at end of file +spring.cloud.nacos.config.file-extension=yaml +spring.cloud.nacos.config.username=dev +spring.cloud.nacos.config.password=dev \ No newline at end of file -- Gitee From 33d807b8483cbc62f4cdd897e857de12b1e2d1b2 Mon Sep 17 00:00:00 2001 From: YaoYuHang Date: Thu, 25 Feb 2021 18:19:28 +0800 Subject: [PATCH 16/67] =?UTF-8?q?=E7=BE=A4=E6=B4=BB=E7=A0=81=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E5=89=8D=E7=AB=AF=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysLoginController.java | 28 ------------------- .../wecom/WeGroupCodeController.java | 14 +++++----- .../linkwechat/wecom/domain/WeGroupCode.java | 5 ++++ .../service/impl/WeGroupCodeServiceImpl.java | 6 ---- .../mapper/wecom/WeGroupCodeMapper.xml | 4 +++ sql/link-wechat.sql | 10 ++----- 6 files changed, 18 insertions(+), 49 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java index 53304c6bc..7c1d3428b 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/system/SysLoginController.java @@ -159,32 +159,4 @@ public class SysLoginController } -// /** -// * 从群活码获取第一个可用的实际码 -// */ -// @GetMapping("/getChatQRCode") -// public AjaxResult getActual(Long weGroupCodeId) { -// WeGroupCode weGroupCode = weGroupCodeService.selectWeGroupCodeById(weGroupCodeId); -// List weGroupCodeActualList = weGroupCodeService.selectActualListByGroupCodeId(weGroupCodeId); -// WeGroupCodeActual weGroupCodeActual = null; -// for (WeGroupCodeActual item : weGroupCodeActualList) { -// // 获取第一个可用的实际码 -// if (item.getStatus().intValue() == WeConstans.WE_GROUP_CODE_ENABLE) { -// weGroupCodeActual = item; -// break; -// } -// } -// if (StringUtils.isNotNull(weGroupCodeActual)) { -// AjaxResult ajax = AjaxResult.success(); -// ajax.put("tipMsg", weGroupCode.getTipMsg()); -// ajax.put("activityName", weGroupCode.getActivityName()); -// ajax.put("groupName", weGroupCodeActual.getChatGroupName()); -// ajax.put("actualQRCode", weGroupCodeActual.getActualGroupQrCode()); -// return ajax; -// } else { -// return AjaxResult.error(HttpStatus.NOT_FOUND, "数据不存在"); -// } -// } - - } diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeGroupCodeController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeGroupCodeController.java index 2f77bd264..e17c81f2c 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeGroupCodeController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeGroupCodeController.java @@ -46,7 +46,7 @@ public class WeGroupCodeController extends BaseController { /** * 查询客户群活码列表 */ - @PreAuthorize("@ss.hasPermi('wecom:groupCode:list')") + @PreAuthorize("@ss.hasPermi('drainageCode:group:list')") @GetMapping("/list") public TableDataInfo list(WeGroupCode weGroupCode) { startPage(); @@ -57,7 +57,7 @@ public class WeGroupCodeController extends BaseController { /** * 批量下载群活码 */ - @PreAuthorize("@ss.hasPermi('wecom:groupCode:downloadBatch')") + @PreAuthorize("@ss.hasPermi('drainageCode:group:downloadBatch')") @Log(title = "群活码批量下载", businessType = BusinessType.OTHER) @GetMapping("/downloadBatch") public void downloadBatch(String ids, HttpServletRequest request, HttpServletResponse response) { @@ -92,7 +92,7 @@ public class WeGroupCodeController extends BaseController { } } - @PreAuthorize("@ss.hasPermi('wecom:groupCode:download')") + @PreAuthorize("@ss.hasPermi('drainageCode:group:download')") @Log(title = "群活码下载", businessType = BusinessType.OTHER) @GetMapping("/download") public void download(String id, HttpServletRequest request, HttpServletResponse response) { @@ -120,7 +120,7 @@ public class WeGroupCodeController extends BaseController { /** * 获取客户群活码详细信息 */ - @PreAuthorize("@ss.hasPermi('wecom:groupCode:query')") + @PreAuthorize("@ss.hasPermi('drainageCode:group:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { WeGroupCode weGroupCode = weGroupCodeService.selectWeGroupCodeById(id); @@ -135,7 +135,7 @@ public class WeGroupCodeController extends BaseController { /** * 新增客户群活码 */ - @PreAuthorize("@ss.hasPermi('wecom:groupCode:add')") + @PreAuthorize("@ss.hasPermi('drainageCode:group:add')") @Log(title = "客户群活码", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@Validated @RequestBody WeGroupCode weGroupCode) { @@ -153,7 +153,7 @@ public class WeGroupCodeController extends BaseController { /** * 修改客户群活码 */ - @PreAuthorize("@ss.hasPermi('wecom:groupCode:edit')") + @PreAuthorize("@ss.hasPermi('drainageCode:group:edit')") @Log(title = "客户群活码", businessType = BusinessType.UPDATE) @PutMapping(value = "/{id}") public AjaxResult edit(@PathVariable("id") Long id, @RequestBody WeGroupCode weGroupCode) { @@ -174,7 +174,7 @@ public class WeGroupCodeController extends BaseController { /** * 删除客户群活码 */ - @PreAuthorize("@ss.hasPermi('wecom:groupCode:remove')") + @PreAuthorize("@ss.hasPermi('drainageCode:group:remove')") @Log(title = "客户群活码", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult batchRemove(@PathVariable Long[] ids) { diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupCode.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupCode.java index b9dad9cd1..f0b35f53f 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupCode.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupCode.java @@ -35,6 +35,11 @@ public class WeGroupCode extends BaseEntity { */ private String codeUrl; + /** + * 二维码的uuid + */ + private String uuid; + /** * 活码头像 */ diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupCodeServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupCodeServiceImpl.java index bd9ee7ea9..b46fcee39 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupCodeServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupCodeServiceImpl.java @@ -102,12 +102,6 @@ public class WeGroupCodeServiceImpl extends ServiceImpl + @@ -30,6 +31,7 @@ SELECT w.id, w.code_url, + w.uuid, w.activity_head_url, w.activity_name, w.activity_desc, @@ -100,6 +102,7 @@ id, code_url, + uuid, activity_head_url, activity_name, activity_desc, @@ -119,6 +122,7 @@ #{id}, #{codeUrl}, + #{uuid}, #{activityHeadUrl}, #{activityName}, #{activityDesc}, diff --git a/sql/link-wechat.sql b/sql/link-wechat.sql index 89070dc89..624d7546e 100644 --- a/sql/link-wechat.sql +++ b/sql/link-wechat.sql @@ -24730,6 +24730,7 @@ DROP TABLE IF EXISTS `we_group_code`; CREATE TABLE `we_group_code` ( `id` bigint(20) NOT NULL, `code_url` varchar(150) NOT NULL COMMENT '二维码链接', + `uuid` varchar(32) NOT NULL COMMENT '二维码标识符', `activity_head_url` varchar(150) DEFAULT NULL COMMENT '活码头像链接', `activity_name` varchar(60) DEFAULT NULL COMMENT '活码名称', `activity_desc` varchar(60) DEFAULT NULL COMMENT '活码描述', @@ -24750,14 +24751,7 @@ CREATE TABLE `we_group_code` ( -- ---------------------------- -- Records of we_group_code -- ---------------------------- -INSERT INTO `we_group_code` VALUES ('1354247069136719872', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/01/27/1e46f0f1-0461-4837-ab54-bf107d92d7b6.png', '', '哈哈', '哈哈', null, '哈哈', '0', '', '', null, 'admin', '2021-01-27 09:57:17', 'admin', '2021-02-18 22:26:05', null); -INSERT INTO `we_group_code` VALUES ('1354247279053246464', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/01/27/739b72e1-f304-4dfe-928b-ace989dc5968.png', '', '123321', 'test、', null, '', '0', '', '', null, 'admin', '2021-01-27 09:58:07', '', '2021-01-27 09:58:07', null); -INSERT INTO `we_group_code` VALUES ('1354258116010708992', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/01/27/aaf5440a-d113-445a-b870-95c884a9bfa1.png', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/01/27/64fdeab7-79cd-4f90-821b-3836b863cb82.jpg', '滴了个滴', '哒了个哒', null, '瞧一瞧,看一看', '1', '咚了个咚', '', null, 'admin', '2021-01-27 10:41:10', '', '2021-01-27 10:41:10', null); -INSERT INTO `we_group_code` VALUES ('1361969875039424512', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/02/17/4f913c79-978e-40a3-ad3a-e1f8d4167f65.png', '', '辅导费 ', '辅导费', null, '短发短发', '0', '', '', null, 'admin', '2021-02-17 17:24:57', '', '2021-02-17 17:24:57', null); -INSERT INTO `we_group_code` VALUES ('1362406755178516480', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/02/18/36ef3dc3-f203-47c3-9412-8cb3a184d5b1.png', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/02/18/2f3316fa-4ab5-458f-977c-34657c83ab10.JPG', '时代大厦', 'da s d', null, '阿迪三大', '0', '哈哈哈', '', null, 'admin', '2021-02-18 22:20:57', '', '2021-02-18 22:20:57', null); -INSERT INTO `we_group_code` VALUES ('1362579210891300864', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/02/19/f4bfdaa6-ad93-42e4-8b23-a61136b20277.png', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/02/19/f6915c67-9be2-4b59-b5b7-1b38543c0703.jpg', '322', '3232', null, '323232232323rere', '0', '', '', null, 'admin', '2021-02-19 09:46:14', '', '2021-02-19 09:46:14', null); -INSERT INTO `we_group_code` VALUES ('1362580445904113664', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/02/19/5b9bb660-fdf9-48e6-8018-e9e0a233f1da.png', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/02/19/157ede0c-1fd5-4002-98c5-58f10a24162c.jpg', '测试群活码', '测试', null, '测试', '0', '', '', null, 'admin', '2021-02-19 09:51:08', '', '2021-02-19 09:51:08', null); -INSERT INTO `we_group_code` VALUES ('1362600782515539968', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/02/19/357fc901-20e2-4227-ac25-7b7df958084e.png', 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/02/19/53ce7c00-3c6e-4942-b510-6b2387576689.jpg', '信息', '挺好听那', null, '', '0', '', '', null, 'admin', '2021-02-19 11:11:57', '', '2021-02-19 11:11:57', null); +INSERT INTO `we_group_code` VALUES (1364149701775069184, 'https://link-wechat-1251309172.cos.ap-nanjing.myqcloud.com/2021/02/23/142c491d-cf4c-4159-a89d-71c68151e41f.png', '5f8aa1f033d240bbb3d2f5064b905bd0', '', 'test1', '123123123', NULL, '', 0, '', '', NULL, 'admin', '2021-02-23 17:46:48', '', '2021-02-23 17:46:48', NULL); -- ---------------------------- -- Table structure for we_group_code_actual -- Gitee From 9fad8d67b7dd1cb8f5474b62da65ca7c94a4c8a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=A1=E6=BC=A0?= Date: Thu, 25 Feb 2021 18:50:48 +0800 Subject: [PATCH 17/67] fix --- .../java/com/linkwechat/wecom/domain/WeUserBehaviorData.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java index bd909dd05..1e481d94c 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java @@ -88,7 +88,7 @@ public class WeUserBehaviorData implements Serializable { * 删除/拉黑成员的客户数,即将成员删除或加入黑名单的客户数 */ @Excel(name = "删除/拉黑成员的客户数,即将成员删除或加入黑名单的客户数") - private Long negativeFeedbackCnt; + private Integer negativeFeedbackCnt; @TableField(exist = false) private Map params = new HashMap<>(); -- Gitee From 63e0a388a9d7098d72b550217b8e66e2998e7821 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B7=A1=E6=BC=A0?= Date: Thu, 25 Feb 2021 23:16:35 +0800 Subject: [PATCH 18/67] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=AE=A2=E6=8B=89=E7=BE=A4API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeCommunityNewGroupController.java | 11 +++++++- .../quartz/task/GroupChatStatisticTask.java | 2 +- .../quartz/task/PageHomeDataTask.java | 12 ++++----- .../wecom/client/WeCustomerClient.java | 10 ++++++- .../wecom/domain/WeCommunityNewGroup.java | 12 +++++++++ .../wecom/domain/WeGroupStatistic.java | 2 +- .../wecom/domain/WeUserBehaviorData.java | 2 +- .../domain/dto/GroupChatStatisticDto.java | 6 +++-- .../wecom/domain/dto/UserBehaviorDataDto.java | 26 +++++++++---------- .../mapper/WeUserBehaviorDataMapper.java | 3 ++- .../mapper/wecom/WeUserBehaviorDataMapper.xml | 26 +++++++++---------- 11 files changed, 72 insertions(+), 40 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java index b6a88c006..c6414909b 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java @@ -12,6 +12,9 @@ import com.linkwechat.wecom.domain.WeEmpleCode; import com.linkwechat.wecom.domain.dto.WeCommunityNewGroupDto; import com.linkwechat.wecom.domain.vo.WeCommunityNewGroupVo; import com.linkwechat.wecom.service.IWeCommunityNewGroupService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; @@ -28,6 +31,7 @@ import java.util.stream.Collectors; * @author kewen * @date 2021-02-19 */ +@Api(description = "新客自动拉群 Controller") @Controller @RequestMapping(value = "communityNewGroup") public class WeCommunityNewGroupController extends BaseController { @@ -38,6 +42,7 @@ public class WeCommunityNewGroupController extends BaseController { /** * 查询新客自动拉群列表 */ + @ApiOperation(value = "查询新客自动拉群列表",httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:list')") @GetMapping("/list") public TableDataInfo list(WeCommunityNewGroup communityNewGroup) { @@ -49,15 +54,17 @@ public class WeCommunityNewGroupController extends BaseController { /** * 获取新客自动拉群详细信息 */ + @ApiOperation(value = "获取新客自动拉群详细信息",httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:query')") @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("newGroupId") Long newGroupId) { + public AjaxResult getInfo(@PathVariable("newGroupId") @ApiParam("主键ID") Long newGroupId) { return AjaxResult.success(weCommunityNewGroupService.selectWeCommunityNewGroupById(newGroupId)); } /** * 修改新客自动拉群 */ + @ApiOperation(value = "修改新客自动拉群",httpMethod = "PUT") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:edit')") @Log(title = "新客自动拉群", businessType = BusinessType.UPDATE) @PutMapping("/update") @@ -70,6 +77,7 @@ public class WeCommunityNewGroupController extends BaseController { /** * 删除新客自动拉群 */ + @ApiOperation(value = "删除新客自动拉群",httpMethod = "DELETE") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:remove')") @Log(title = "新客自动拉群", businessType = BusinessType.DELETE) @DeleteMapping("/delete/{ids}") @@ -82,6 +90,7 @@ public class WeCommunityNewGroupController extends BaseController { /** * 新增新客自动拉群 */ + @ApiOperation(value = "新增新客自动拉群",httpMethod = "POST") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:add')") @Log(title = "新客自动拉群", businessType = BusinessType.INSERT) @PostMapping("/add") diff --git a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java index 33519ca90..dedc35198 100644 --- a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java +++ b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java @@ -55,7 +55,7 @@ public class GroupChatStatisticTask { idList.add(weGroup.getOwner()); ownerFilter.setUserid_list(idList); query.setOwnerFilter(ownerFilter); - GroupChatStatisticDto groupChatStatistic = weCustomerClient.getGroupChatStatistic(query); + GroupChatStatisticDto groupChatStatistic = weCustomerClient.getGroupChatStatisticGroupByDay(query); List items = groupChatStatistic.getItems(); if(CollectionUtil.isNotEmpty(items)){ items.forEach(groupchatStatisticData -> { diff --git a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java index 23004310a..9b6ff39cb 100644 --- a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java +++ b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/PageHomeDataTask.java @@ -95,12 +95,12 @@ public class PageHomeDataTask { String today = DateUtil.today(); String yesterday = DateUtil.yesterday().toDateStr(); //客户统计 - WePageCountDto newTime = weUserBehaviorDataService.getCountDataByDay(today,"d"); + WePageCountDto newTime = weUserBehaviorDataService.getCountDataByDay(today,"day"); /** * 昨日 */ //客户统计 - WePageCountDto lastTime = weUserBehaviorDataService.getCountDataByDay(yesterday,"d"); + WePageCountDto lastTime = weUserBehaviorDataService.getCountDataByDay(yesterday,"day"); WePageStaticDataDto.PageStaticData pageStaticData = setPageStaticData(newTime, lastTime); @@ -120,12 +120,12 @@ public class PageHomeDataTask { * 本周 */ //客户统计 - WePageCountDto newTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.today(),"w"); + WePageCountDto newTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.today(),"week"); /** * 上周 */ //客户统计 - WePageCountDto lastTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.lastWeek().toDateStr(),"w"); + WePageCountDto lastTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.lastWeek().toDateStr(),"week"); WePageStaticDataDto.PageStaticData pageStaticData = setPageStaticData(newTime, lastTime); @@ -142,12 +142,12 @@ public class PageHomeDataTask { * 本周 */ //客户统计 - WePageCountDto newTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.today(),"m"); + WePageCountDto newTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.today(),"month"); /** * 上周 */ //客户统计 - WePageCountDto lastTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.lastMonth().toDateStr(),"m"); + WePageCountDto lastTime = weUserBehaviorDataService.getCountDataByDay(DateUtil.lastMonth().toDateStr(),"month"); WePageStaticDataDto.PageStaticData pageStaticData = setPageStaticData(newTime, lastTime); diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeCustomerClient.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeCustomerClient.java index 00827353f..c18256ec2 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeCustomerClient.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/client/WeCustomerClient.java @@ -100,10 +100,18 @@ public interface WeCustomerClient { UserBehaviorDataDto getUserBehaviorData(@JSONBody UserBehaviorDataQuery query); /** - * 联系客户统计 + * 群聊数据统计(按群主聚合的方式) * @return */ @Request(url = "/externalcontact/groupchat/statistic", type = "POST") GroupChatStatisticDto getGroupChatStatistic(@JSONBody GroupChatStatisticQuery query); + + /** + * 群聊数据统计(按自然日聚合的方式) + * @return + */ + @Request(url = "/externalcontact/groupchat/statistic_group_by_day", + type = "POST") + GroupChatStatisticDto getGroupChatStatisticGroupByDay(@JSONBody GroupChatStatisticQuery query); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCommunityNewGroup.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCommunityNewGroup.java index 6043d3caa..c19ef8504 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCommunityNewGroup.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCommunityNewGroup.java @@ -2,6 +2,8 @@ package com.linkwechat.wecom.domain; import com.linkwechat.common.core.domain.BaseEntity; import com.linkwechat.common.utils.SnowFlakeUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -10,6 +12,7 @@ import lombok.Data; * @author kewen * @date 2021-02-19 */ +@ApiModel @Data public class WeCommunityNewGroup extends BaseEntity { @@ -21,46 +24,55 @@ public class WeCommunityNewGroup extends BaseEntity { /** * 员工活码名称 */ + @ApiModelProperty("员工活码名称") private String empleCodeName; /** * 活动场景 */ + @ApiModelProperty("活动场景") private String activityScene; /** * 欢迎语 */ + @ApiModelProperty("欢迎语") private String welcomeMsg; /** * 二维码链接 */ + @ApiModelProperty("二维码链接") private String qrCode; /** * 客户添加时无需经过确认自动成为好友:1:是;0:否 */ + @ApiModelProperty("客户添加时无需经过确认自动成为好友:1:是;0:否") private Boolean isJoinConfirmFriends; /** * 添加好友数 */ + @ApiModelProperty("添加好友数") private Integer joinFriendNums; /** * 群活码ID */ + @ApiModelProperty("群活码ID") private Long groupCodeId; /** * 素材的id */ + @ApiModelProperty("素材的id") private Long mediaId; /** * 0 未删除 1 已删除 */ + @ApiModelProperty("0 未删除 1 已删除") private int delFlag; } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupStatistic.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupStatistic.java index 66cfd0aba..b55463943 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupStatistic.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupStatistic.java @@ -46,7 +46,7 @@ public class WeGroupStatistic implements Serializable { * 数据日期 */ @Excel(name = "数据日期", width = 30, dateFormat = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd") private Date statTime; /** diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java index 1e481d94c..08c2f9def 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeUserBehaviorData.java @@ -45,7 +45,7 @@ public class WeUserBehaviorData implements Serializable { * 数据日期,为当日0点的时间戳 */ @Excel(name = "数据日期,为当日0点的时间戳", width = 30, dateFormat = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd") private Date statTime; /** diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/GroupChatStatisticDto.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/GroupChatStatisticDto.java index c7d2f50f3..c52c20147 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/GroupChatStatisticDto.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/GroupChatStatisticDto.java @@ -23,10 +23,12 @@ public class GroupChatStatisticDto { /** * 数据日期,为当日0点的时间戳 */ - @JSONField(format="unixtime") - @JsonFormat(pattern = "yyyy-MM-dd") private Date statTime; + public void setStatTime(Long statTime) { + this.statTime = new Date(statTime * 1000); + } + private StatisticData data; diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/UserBehaviorDataDto.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/UserBehaviorDataDto.java index d120a9cf9..efe07a080 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/UserBehaviorDataDto.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/UserBehaviorDataDto.java @@ -1,8 +1,6 @@ package com.linkwechat.wecom.domain.dto; -import com.alibaba.fastjson.annotation.JSONField; -import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; @@ -12,8 +10,7 @@ import java.util.List; * @author danmo */ @Data -public class UserBehaviorDataDto { - +public class UserBehaviorDataDto{ private List behaviorData; @@ -23,37 +20,40 @@ public class UserBehaviorDataDto { /** * 数据日期,为当日0点的时间戳 */ - @JSONField(format="unixtime") - @JsonFormat(pattern = "yyyy-MM-dd") private Date statTime; + + public void setStatTime(Long statTime) { + this.statTime = new Date(statTime * 1000); + } + /** * 聊天总数, 成员有主动发送过消息的单聊总数。 */ - private Integer chatCnt; + private Integer chatCnt = 0; /** * 发送消息数,成员在单聊中发送的消息总数。 */ - private Integer messageCnt; + private Integer messageCnt = 0; /** * 已回复聊天占比,浮点型,客户主动发起聊天后,成员在一个自然日内有回复过消息的聊天数/客户主动发起的聊天数比例,不包括群聊,仅在确有聊天时返回。 */ - private Float replyPercentage; + private Float replyPercentage = 0.00f; /** * 平均首次回复时长,单位为分钟,即客户主动发起聊天后,成员在一个自然日内首次回复的时长间隔为首次回复时长,所有聊天的首次回复总时长/已回复的聊天总数即为平均首次回复时长,不包括群聊,仅在确有聊天时返回。 */ - private Integer avgReplyTime; + private Integer avgReplyTime = 0; /** * 删除/拉黑成员的客户数,即将成员删除或加入黑名单的客户数。 */ - private Integer negativeFeedbackCnt; + private Integer negativeFeedbackCnt = 0; /** * 主动向客户发起的好友申请数量 */ - private Integer newApplyCnt; + private Integer newApplyCnt = 0; /** * 新增客户数,成员新添加的客户数量。 */ - private Integer newContactCnt; + private Integer newContactCnt = 0; } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java index 4ae1bb418..36f1d9101 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserBehaviorDataMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.linkwechat.wecom.domain.WeUserBehaviorData; import com.linkwechat.wecom.domain.dto.WePageCountDto; import com.linkwechat.wecom.domain.query.WePageStateQuery; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -20,7 +21,7 @@ public interface WeUserBehaviorDataMapper extends BaseMapper * @param dateTime * @return WeUserBehaviorDataDto */ - public WePageCountDto getCountDataByDay(String dateTime,String type); + public WePageCountDto getCountDataByDay(@Param("dateTime") String dateTime, @Param("type") String type); /** * 按天维度查询数据统计 diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml index 73bf8f892..058c832a8 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeUserBehaviorDataMapper.xml @@ -19,25 +19,25 @@ -- Gitee From 4269044a4b36777a596e2b43b3273f2f9bb8c640 Mon Sep 17 00:00:00 2001 From: 18356073052 <274131322@qq.com> Date: Sun, 28 Feb 2021 12:35:08 +0800 Subject: [PATCH 24/67] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BE=A4=E5=8F=91bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/wecom/WeCustomerMessgaeResultMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMessgaeResultMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMessgaeResultMapper.xml index 90d30e9f5..5911834af 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMessgaeResultMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMessgaeResultMapper.xml @@ -25,7 +25,7 @@ chat_name ) VALUES - + (#{item.messgaeResultId}, #{item.messageId}, #{item.externalUserid}, -- Gitee From 8d18bff0116f94337113af2af2a8d0f25e274a7e Mon Sep 17 00:00:00 2001 From: 18356073052 <274131322@qq.com> Date: Sun, 28 Feb 2021 13:07:11 +0800 Subject: [PATCH 25/67] =?UTF-8?q?=E7=BE=A4=E5=8F=91=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/wecom/WeCustomerMessageOriginalMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMessageOriginalMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMessageOriginalMapper.xml index 7f92fba68..c0e84d813 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMessageOriginalMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMessageOriginalMapper.xml @@ -40,6 +40,7 @@ AND wcm.create_by=#{sender} + ORDER BY wcmo.create_time DESC - - - del_flag = 0 - - AND emple_code_name LIKE CONCAT("%",#{empleCodeName},"%") - - - AND date_format(create_time,'%y%m%d') >= date_format(#{beginTime},'%y%m%d') - + + + del_flag = 0 + + AND emple_code_name LIKE CONCAT("%",#{empleCodeName},"%") + + + AND date_format(create_time,'%y%m%d') >= date_format(#{beginTime},'%y%m%d') + - - AND date_format(create_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d') - - - AND create_by LIKE CONCAT("%",#{createBy},"%") - - + + AND date_format(create_time,'%y%m%d') <= date_format(#{endTime},'%y%m%d') + + + AND create_by LIKE CONCAT("%",#{createBy},"%") + + + + \ No newline at end of file -- Gitee From 459ae79b4f96ddb9bb9bf1d1938f8a31ffd73531 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Mon, 1 Mar 2021 10:55:10 +0800 Subject: [PATCH 30/67] =?UTF-8?q?=E5=A2=9E=E5=8A=A0RSA=20PKCS1=E8=A7=A3?= =?UTF-8?q?=E5=AF=86=E6=94=AF=E6=8C=81,=E8=B0=83=E6=95=B4=E5=8E=9F?= =?UTF-8?q?=E6=9C=89=E5=8A=A0=E5=AF=86=E6=8F=AD=E7=A7=98=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- linkwe-common/pom.xml | 19 ++++- .../common/utils/wecom/RSAUtil.java | 75 ++++++++----------- .../java/com/tencent/wework/FinanceUtils.java | 1 - 3 files changed, 49 insertions(+), 46 deletions(-) diff --git a/linkwe-common/pom.xml b/linkwe-common/pom.xml index 0d9c26b2b..75b111009 100644 --- a/linkwe-common/pom.xml +++ b/linkwe-common/pom.xml @@ -149,8 +149,6 @@ - - io.swagger @@ -245,6 +243,23 @@ cos_api 5.6.24 + + + + org.bouncycastle + bcprov-jdk15on + 1.68 + + + org.bouncycastle + bcpg-jdk15on + 1.68 + + + org.bouncycastle + bcpkix-jdk15on + 1.68 + \ No newline at end of file diff --git a/linkwe-common/src/main/java/com/linkwechat/common/utils/wecom/RSAUtil.java b/linkwe-common/src/main/java/com/linkwechat/common/utils/wecom/RSAUtil.java index 8a4d30c76..a959faebb 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/utils/wecom/RSAUtil.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/utils/wecom/RSAUtil.java @@ -1,20 +1,18 @@ package com.linkwechat.common.utils.wecom; -import sun.security.util.DerInputStream; -import sun.security.util.DerValue; +import org.bouncycastle.openssl.PEMKeyPair; +import org.bouncycastle.openssl.PEMParser; +import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import java.io.IOException; -import java.math.BigInteger; -import java.security.InvalidKeyException; -import java.security.KeyFactory; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.RSAPrivateCrtKeySpec; +import java.io.Reader; +import java.io.StringReader; +import java.nio.charset.StandardCharsets; +import java.security.*; import java.util.Base64; /** @@ -26,51 +24,42 @@ public class RSAUtil { /** * RSA pkcs1 2048bit 解密工具, * 获取私钥PrivateKey + * * @param privKeyPEM 2048bit pkcs1格式,base64编码后的RSA字符串 - * @return PrivateKey,用于解密 decryptRSA + * @return PrivateKey, 用于解密 decryptRSA * @throws IOException 异常 - * @throws NoSuchAlgorithmException 异常 - * @throws InvalidKeySpecException 异常 */ - public static PrivateKey getPrivateKey(String privKeyPEM) throws IOException, NoSuchAlgorithmException, InvalidKeySpecException { - String privKeyPEMnew = privKeyPEM.replaceAll("\\r\\n", "")//看看保存到数据库的这个字符是不是有\r,如果没有,那就只需要替换掉"\\n" - .replaceAll("\n", "") - .replace("-----BEGIN RSA PRIVATE KEY-----", "") - .replace("-----END RSA PRIVATE KEY-----", ""); - byte[] bytes = java.util.Base64.getDecoder().decode(privKeyPEMnew); - DerInputStream derReader = new DerInputStream(bytes); - DerValue[] seq = derReader.getSequence(0); - BigInteger modulus = seq[1].getBigInteger(); - BigInteger publicExp = seq[2].getBigInteger(); - BigInteger privateExp = seq[3].getBigInteger(); - BigInteger prime1 = seq[4].getBigInteger(); - BigInteger prime2 = seq[5].getBigInteger(); - BigInteger exp1 = seq[6].getBigInteger(); - BigInteger exp2 = seq[7].getBigInteger(); - BigInteger crtCoef = seq[8].getBigInteger(); - RSAPrivateCrtKeySpec keySpec = new RSAPrivateCrtKeySpec(modulus, publicExp, privateExp, prime1, prime2, exp1, exp2, crtCoef); - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - PrivateKey privateKey = keyFactory.generatePrivate(keySpec); + public static PrivateKey getPrivateKey(String privKeyPEM) throws IOException { + PrivateKey privateKey = null; + Reader privateKeyReader = new StringReader(privKeyPEM); + PEMParser privatePemParser = new PEMParser(privateKeyReader); + Object privateObject = privatePemParser.readObject(); + if (privateObject instanceof PEMKeyPair) { + PEMKeyPair pemKeyPair = (PEMKeyPair) privateObject; + JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC"); + privateKey = converter.getPrivateKey(pemKeyPair.getPrivateKeyInfo()); + } return privateKey; } /** * RSA pkcs1 2048bit 解密工具, - * @param str 被解密的字符串 + * + * @param str 被解密的字符串 * @param privateKey 私钥对象 从 getPrivateKey 获取 * @return 解密后数据 - * @throws NoSuchPaddingException 异常 - * @throws NoSuchAlgorithmException 异常 - * @throws InvalidKeyException 异常 - * @throws BadPaddingException 异常 + * @throws NoSuchPaddingException 异常 + * @throws NoSuchAlgorithmException 异常 + * @throws InvalidKeyException 异常 + * @throws BadPaddingException 异常 * @throws IllegalBlockSizeException 异常 */ - public static String decryptRSA(String str, PrivateKey privateKey) throws NoSuchPaddingException, - NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException { - Cipher cipher = Cipher.getInstance("RSA"); - cipher.init(Cipher.DECRYPT_MODE, privateKey); - byte[] randomkeybyte = Base64.getDecoder().decode(str); - byte[] finalrandomkeybyte = cipher.doFinal(randomkeybyte); - return new String(finalrandomkeybyte); + public static String decryptRSA(String str, PrivateKey privateKey) throws NoSuchPaddingException, + NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, NoSuchProviderException { + Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); + Cipher rsa = Cipher.getInstance("RSA/ECB/PKCS1Padding", "BC"); + rsa.init(Cipher.DECRYPT_MODE, privateKey); + byte[] utf8 = rsa.doFinal(Base64.getDecoder().decode(str)); + return new String(utf8, StandardCharsets.UTF_8); } } diff --git a/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java b/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java index 87561360b..ba9a8dc7c 100644 --- a/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java +++ b/linkwe-common/src/main/java/com/tencent/wework/FinanceUtils.java @@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.linkwechat.common.config.CosConfig; import com.linkwechat.common.config.RuoYiConfig; -import com.linkwechat.common.constant.Constants; import com.linkwechat.common.constant.WeConstans; import com.linkwechat.common.core.redis.RedisCache; import com.linkwechat.common.utils.DateUtils; -- Gitee From aa472ef4eb3b9bf3f9835db285da4895e161dc19 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Mon, 1 Mar 2021 11:23:18 +0800 Subject: [PATCH 31/67] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B9=9F=E5=8F=91=E9=80=81=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java index aee74fc0a..5b6c57901 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java @@ -257,7 +257,7 @@ public class WeSensitiveServiceImpl implements IWeSensitiveService { private void addHitSensitiveList(List json, WeSensitive weSensitive) { elasticSearch.createIndex2(WeConstans.WECOM_SENSITIVE_HIT_INDEX, getSensitiveHitMapping()); boolean sendMessage = false; - if (weSensitive.getAlertFlag().equals(1)) { + if (weSensitive.getAlertFlag().equals(1) && CollectionUtils.isNotEmpty(json)) { //发送消息通知给相应的审计人 WeCorpAccount weCorpAccount = weCorpAccountService.findValidWeCorpAccount(); String auditUserId = weSensitive.getAuditUserId(); @@ -268,7 +268,7 @@ public class WeSensitiveServiceImpl implements IWeSensitiveService { pushDto.setTouser(auditUserId); pushDto.setMsgtype(MessageType.TEXT.getMessageType()); pushDto.setText(textMessageDto); - weMessagePushClient.sendMessageToUser(pushDto,weCorpAccount.getAgentId()); + weMessagePushClient.sendMessageToUser(pushDto, weCorpAccount.getAgentId()); sendMessage = true; } //批量提交插入记录 -- Gitee From a80b4575b50b73af400fe6d474d682ff416d2730 Mon Sep 17 00:00:00 2001 From: 18356073052 <274131322@qq.com> Date: Mon, 1 Mar 2021 14:17:05 +0800 Subject: [PATCH 32/67] =?UTF-8?q?=E6=96=B0=E5=AE=A2=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=8B=89=E7=BE=A4=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeCommunityNewGroupController.java | 53 ++++++++++--------- .../mapper/WeCommunityNewGroupMapper.java | 3 +- .../service/IWeCommunityNewGroupService.java | 3 +- .../impl/WeCommunityNewGroupServiceImpl.java | 4 +- 4 files changed, 33 insertions(+), 30 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java index 316229aca..b37252baf 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java @@ -46,25 +46,28 @@ import java.util.zip.ZipOutputStream; @RequestMapping(value = "communityNewGroup") public class WeCommunityNewGroupController extends BaseController { - @Autowired - private IWeCommunityNewGroupService weCommunityNewGroupService; + @Autowired + private IWeCommunityNewGroupService weCommunityNewGroupService; /** * 查询新客自动拉群列表 */ - @ApiOperation(value = "查询新客自动拉群列表",httpMethod = "GET") + @ApiOperation(value = "查询新客自动拉群列表", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:list')") @GetMapping("/list") - public TableDataInfo list(WeCommunityNewGroup communityNewGroup) { + public TableDataInfo list(@RequestParam(value = "empleCodeName", required = false) String empleCodeName + , @RequestParam(value = "createBy", required = false) String createBy + , @RequestParam(value = "beginTime", required = false) String beginTime + , @RequestParam(value = "endTime", required = false) String endTime) { startPage(); - List communityNewGroupVos = weCommunityNewGroupService.selectWeCommunityNewGroupList(communityNewGroup); + List communityNewGroupVos = weCommunityNewGroupService.selectWeCommunityNewGroupList(empleCodeName, createBy, beginTime, endTime); return getDataTable(communityNewGroupVos); } /** * 获取新客自动拉群详细信息 */ - @ApiOperation(value = "获取新客自动拉群详细信息",httpMethod = "GET") + @ApiOperation(value = "获取新客自动拉群详细信息", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("newGroupId") @ApiParam("主键ID") Long newGroupId) { @@ -74,7 +77,7 @@ public class WeCommunityNewGroupController extends BaseController { /** * 修改新客自动拉群 */ - @ApiOperation(value = "修改新客自动拉群",httpMethod = "PUT") + @ApiOperation(value = "修改新客自动拉群", httpMethod = "PUT") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:edit')") @Log(title = "新客自动拉群", businessType = BusinessType.UPDATE) @PutMapping("/update") @@ -87,7 +90,7 @@ public class WeCommunityNewGroupController extends BaseController { /** * 删除新客自动拉群 */ - @ApiOperation(value = "删除新客自动拉群",httpMethod = "DELETE") + @ApiOperation(value = "删除新客自动拉群", httpMethod = "DELETE") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:remove')") @Log(title = "新客自动拉群", businessType = BusinessType.DELETE) @DeleteMapping("/delete/{ids}") @@ -100,7 +103,7 @@ public class WeCommunityNewGroupController extends BaseController { /** * 新增新客自动拉群 */ - @ApiOperation(value = "新增新客自动拉群",httpMethod = "POST") + @ApiOperation(value = "新增新客自动拉群", httpMethod = "POST") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:add')") @Log(title = "新客自动拉群", businessType = BusinessType.INSERT) @PostMapping("/add") @@ -110,9 +113,9 @@ public class WeCommunityNewGroupController extends BaseController { return AjaxResult.success(); } catch (Exception e) { e.printStackTrace(); - if (e instanceof WeComException){ + if (e instanceof WeComException) { return AjaxResult.error(e.getMessage()); - }else { + } else { return AjaxResult.error("请求接口异常!"); } } @@ -123,16 +126,16 @@ public class WeCommunityNewGroupController extends BaseController { /** * 员工活码批量下载 * - * @param ids 新客自动拉群ids - * @param request 请求 + * @param ids 新客自动拉群ids + * @param request 请求 * @param response 输出 * @throws Exception */ - @ApiOperation(value = "员工活码批量下载",httpMethod = "GET") + @ApiOperation(value = "员工活码批量下载", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:code:downloadBatch')") @Log(title = "员工活码批量下载", businessType = BusinessType.OTHER) @GetMapping("/downloadBatch") - public void downloadBatch(String ids, HttpServletRequest request, HttpServletResponse response){ + public void downloadBatch(String ids, HttpServletRequest request, HttpServletResponse response) { List idList = Arrays.stream(Optional.ofNullable(ids).orElse("").split(",")) .filter(StringUtils::isNotEmpty).collect(Collectors.toList()); try { @@ -141,15 +144,15 @@ public class WeCommunityNewGroupController extends BaseController { //zip输出流 ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()); - if (CollectionUtil.isNotEmpty(weCommunityNewGroupVos)){ - for (WeCommunityNewGroupVo communityNewGroupVo : weCommunityNewGroupVos){ + if (CollectionUtil.isNotEmpty(weCommunityNewGroupVos)) { + for (WeCommunityNewGroupVo communityNewGroupVo : weCommunityNewGroupVos) { String qrCode = communityNewGroupVo.getQrCode(); - if (StringUtils.isEmpty(qrCode)){ + if (StringUtils.isEmpty(qrCode)) { continue; } URL url = new URL(qrCode); //每个二维码名称 - String fileName =communityNewGroupVo.getEmpleCodeName()+communityNewGroupVo.getActivityScene()+".jpg"; + String fileName = communityNewGroupVo.getEmpleCodeName() + communityNewGroupVo.getActivityScene() + ".jpg"; zos.putNextEntry(new ZipEntry(fileName)); InputStream fis = url.openConnection().getInputStream(); byte[] buffer = new byte[1024]; @@ -165,20 +168,20 @@ public class WeCommunityNewGroupController extends BaseController { zos.close(); } catch (IOException e) { e.printStackTrace(); - } catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); } } - @ApiOperation(value = "员工活码下载",httpMethod = "GET") + @ApiOperation(value = "员工活码下载", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:code:download')") @Log(title = "员工活码下载", businessType = BusinessType.OTHER) @GetMapping("/download") - public void download(String id, HttpServletRequest request, HttpServletResponse response){ - WeCommunityNewGroupVo communityNewGroupVo=weCommunityNewGroupService.selectWeCommunityNewGroupById(Long.valueOf(id)); - if (StringUtils.isEmpty(communityNewGroupVo.getQrCode())){ + public void download(String id, HttpServletRequest request, HttpServletResponse response) { + WeCommunityNewGroupVo communityNewGroupVo = weCommunityNewGroupService.selectWeCommunityNewGroupById(Long.valueOf(id)); + if (StringUtils.isEmpty(communityNewGroupVo.getQrCode())) { return; - }else { + } else { try { FileUtils.downloadFile(communityNewGroupVo.getQrCode(), response.getOutputStream()); } catch (IOException e) { diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java index 063fee2d8..65b43fba0 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java @@ -21,7 +21,8 @@ public interface WeCommunityNewGroupMapper extends BaseMapper selectWeCommunityNewGroupList(WeCommunityNewGroup communityNewGroup); + List selectWeCommunityNewGroupList(@Param("empleCodeName") String empleCodeName, @Param("createBy") String createBy + ,@Param("beginTime") String beginTime, @Param("endTime") String endTime); /** * 获取新客自动拉群详细信息 diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityNewGroupService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityNewGroupService.java index 263f00815..cffe13910 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityNewGroupService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCommunityNewGroupService.java @@ -26,10 +26,9 @@ public interface IWeCommunityNewGroupService extends IService selectWeCommunityNewGroupList(WeCommunityNewGroup communityNewGroup); + List selectWeCommunityNewGroupList(String empleCodeName, String createBy, String beginTime, String endTime); /** * 获取新客自动拉群详细信息 diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java index f7192e483..797b5b4dd 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java @@ -115,8 +115,8 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl selectWeCommunityNewGroupList(WeCommunityNewGroup communityNewGroup) { - List weCommunityNewGroupVos = weCommunityNewGroupMapper.selectWeCommunityNewGroupList(communityNewGroup); + public List selectWeCommunityNewGroupList(String empleCodeName, String createBy, String beginTime, String endTime) { + List weCommunityNewGroupVos = weCommunityNewGroupMapper.selectWeCommunityNewGroupList(empleCodeName, createBy, beginTime, endTime); if (CollectionUtil.isNotEmpty(weCommunityNewGroupVos)) { List newGroupIdList = weCommunityNewGroupVos.stream().map(WeCommunityNewGroupVo::getNewGroupId).collect(Collectors.toList()); List useScopList = iWeEmpleCodeUseScopService.selectWeEmpleCodeUseScopListByIds(newGroupIdList); -- Gitee From 3e2cea679b7d40b41e450611e349ab9c2b4c4b5b Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Mon, 1 Mar 2021 15:10:21 +0800 Subject: [PATCH 33/67] fix --- .../main/java/com/linkwechat/common/constant/WeConstans.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java b/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java index 75f3a0232..01e5f2205 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java @@ -371,8 +371,8 @@ public class WeConstans { } - //public static final String WECOM_FINANCE_INDEX = "finance"; - public static final String WECOM_FINANCE_INDEX = "finance_new"; + public static final String WECOM_FINANCE_INDEX = "finance"; + //public static final String WECOM_FINANCE_INDEX = "finance_new"; public static final String WECOM_SENSITIVE_HIT_INDEX = "sensitive"; -- Gitee From d298422a7e463fa24da5420aefa50d106937e0e6 Mon Sep 17 00:00:00 2001 From: 18356073052 <274131322@qq.com> Date: Mon, 1 Mar 2021 16:09:05 +0800 Subject: [PATCH 34/67] =?UTF-8?q?=E6=96=B0=E5=AE=A2=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=8B=89=E7=BE=A4=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/wecom/WeCommunityNewGroupController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java index b37252baf..9eb48e19f 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java @@ -43,7 +43,7 @@ import java.util.zip.ZipOutputStream; */ @Api(description = "新客自动拉群 Controller") @Controller -@RequestMapping(value = "communityNewGroup") +@RequestMapping(value = "/wecom/communityNewGroup") public class WeCommunityNewGroupController extends BaseController { @Autowired -- Gitee From c898f2860af3b2ccf1ff8c3e5507ea67a6b448e4 Mon Sep 17 00:00:00 2001 From: 18356073052 <274131322@qq.com> Date: Mon, 1 Mar 2021 16:17:04 +0800 Subject: [PATCH 35/67] fix some bugs --- .../web/controller/wecom/WeCommunityNewGroupController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java index 9eb48e19f..b202407a9 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java @@ -42,7 +42,7 @@ import java.util.zip.ZipOutputStream; * @date 2021-02-19 */ @Api(description = "新客自动拉群 Controller") -@Controller +@RestController @RequestMapping(value = "/wecom/communityNewGroup") public class WeCommunityNewGroupController extends BaseController { -- Gitee From be494dda72a87619e3e432ddc1681a3f195fe13c Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Tue, 2 Mar 2021 00:14:17 +0800 Subject: [PATCH 36/67] fix --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e72007200..5ca9665a2 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ 3.4.0 4.0.0 4.1.49.Final - 2.2.5.RELEASE + 2.2.1.RELEASE -- Gitee From 13b5b58b8bbca0c4f00c33592ab46c53e4c50a70 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Tue, 2 Mar 2021 10:43:23 +0800 Subject: [PATCH 37/67] fix --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5ca9665a2..e72007200 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ 3.4.0 4.0.0 4.1.49.Final - 2.2.1.RELEASE + 2.2.5.RELEASE -- Gitee From a3ae04db0c7cf0228f6f22e09678f00b90aee436 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Tue, 2 Mar 2021 14:15:30 +0800 Subject: [PATCH 38/67] =?UTF-8?q?fix=E6=95=8F=E6=84=9F=E8=AF=8D=E5=91=BD?= =?UTF-8?q?=E4=B8=AD=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/elasticsearch/ElasticSearch.java | 27 +++++++++---- .../service/impl/WeSensitiveServiceImpl.java | 40 +++++++++++-------- 2 files changed, 43 insertions(+), 24 deletions(-) diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java index 391c94afa..bf6837196 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java @@ -14,6 +14,7 @@ import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.support.IndicesOptions; +import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; @@ -37,7 +38,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.function.Consumer; +import java.util.function.BiConsumer; /** * @author danmo @@ -216,14 +217,24 @@ public class ElasticSearch { * * @param idxName * @param list - * @param consumers + * @param consumer */ - public void insertBatchAsync(String idxName, List list, List>> consumers) { + public void insertBatchAsync(String idxName, List list, BiConsumer consumer, Object param) { BulkRequest request = new BulkRequest(); - list.parallelStream().forEach(item -> request.add(new IndexRequest(idxName, "_doc").id(item.getString("msgid")) - .source(item, XContentType.JSON))); + list.parallelStream().forEach(item -> request.add(new IndexRequest(idxName, "_doc").id(item.getId()) + .source(item.getData(), XContentType.JSON))); try { - restHighLevelClient.bulkAsync(request, RequestOptions.DEFAULT, getActionListener(list, consumers)); + restHighLevelClient.bulkAsync(request, RequestOptions.DEFAULT, getActionListener(consumer, list, param)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public void updateBatch(String idxName, List list) { + BulkRequest request = new BulkRequest(); + list.forEach(item -> request.add(new UpdateRequest(idxName, item.getId()).upsert(item.getData(), XContentType.JSON))); + try { + restHighLevelClient.bulk(request, RequestOptions.DEFAULT); } catch (Exception e) { throw new RuntimeException(e); } @@ -366,11 +377,11 @@ public class ElasticSearch { } } - public ActionListener getActionListener(List list, List>> consumers) { + public ActionListener getActionListener(BiConsumer consumer, List list, Object param) { return new ActionListener() { @Override public void onResponse(Object o) { - consumers.forEach(consumer -> consumer.accept(list)); + consumer.accept(list, param); } @Override diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java index 5b6c57901..9845e54ce 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java @@ -40,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -256,8 +257,23 @@ public class WeSensitiveServiceImpl implements IWeSensitiveService { private void addHitSensitiveList(List json, WeSensitive weSensitive) { elasticSearch.createIndex2(WeConstans.WECOM_SENSITIVE_HIT_INDEX, getSensitiveHitMapping()); - boolean sendMessage = false; - if (weSensitive.getAlertFlag().equals(1) && CollectionUtils.isNotEmpty(json)) { + //批量提交插入记录 + if (CollectionUtils.isNotEmpty(json)) { + List list = json.stream().filter(Objects::nonNull).map(j -> { + ElasticSearchEntity ese = new ElasticSearchEntity(); + j.put("status", "0"); + ese.setData(j); + ese.setId(j.getString("msgid")); + return ese; + }).collect(Collectors.toList()); + elasticSearch.insertBatchAsync(WeConstans.WECOM_SENSITIVE_HIT_INDEX, list, this::sendMessage, weSensitive); + } + } + + private void sendMessage(Object listObj, Object weSensitiveObj) { + WeSensitive weSensitive = (WeSensitive) weSensitiveObj; + List list = (List) listObj; + if (weSensitive.getAlertFlag().equals(1) && CollectionUtils.isNotEmpty(list)) { //发送消息通知给相应的审计人 WeCorpAccount weCorpAccount = weCorpAccountService.findValidWeCorpAccount(); String auditUserId = weSensitive.getAuditUserId(); @@ -269,21 +285,13 @@ public class WeSensitiveServiceImpl implements IWeSensitiveService { pushDto.setMsgtype(MessageType.TEXT.getMessageType()); pushDto.setText(textMessageDto); weMessagePushClient.sendMessageToUser(pushDto, weCorpAccount.getAgentId()); - sendMessage = true; - } - //批量提交插入记录 - if (CollectionUtils.isNotEmpty(json)) { - boolean finalSendMessage = sendMessage; - List list = json.stream().filter(Objects::nonNull).map(j -> { - ElasticSearchEntity ese = new ElasticSearchEntity(); - if (finalSendMessage) { - j.put("status", "1"); - } - ese.setData(j); - ese.setId(j.getString("msgid")); - return ese; + //批量更新 + list = list.stream().peek(entity -> { + Map map = entity.getData(); + map.put("status", "1"); + entity.setData(map); }).collect(Collectors.toList()); - elasticSearch.insertBatch(WeConstans.WECOM_SENSITIVE_HIT_INDEX, list); + elasticSearch.updateBatch(WeConstans.WECOM_SENSITIVE_HIT_INDEX, list); } } -- Gitee From 92fd39fa21d9c0523c918698ea3e2cfc47665eec Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Tue, 2 Mar 2021 14:29:55 +0800 Subject: [PATCH 39/67] fix bug --- .../core/elasticsearch/ElasticSearch.java | 26 +++++++++++++++++++ .../com/linkwechat/quartz/task/RyTask.java | 8 ++---- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java index bf6837196..f10259846 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java @@ -39,6 +39,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; import java.util.function.BiConsumer; +import java.util.function.Consumer; /** * @author danmo @@ -230,6 +231,17 @@ public class ElasticSearch { } } + public void insertBatchAsync(String idxName, List list, Consumer> consumer) { + BulkRequest request = new BulkRequest(); + list.parallelStream().forEach(item -> request.add(new IndexRequest(idxName, "_doc").id(item.getString("msgid")) + .source(item, XContentType.JSON))); + try { + restHighLevelClient.bulkAsync(request, RequestOptions.DEFAULT, getActionListener(consumer, list)); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + public void updateBatch(String idxName, List list) { BulkRequest request = new BulkRequest(); list.forEach(item -> request.add(new UpdateRequest(idxName, item.getId()).upsert(item.getData(), XContentType.JSON))); @@ -377,6 +389,20 @@ public class ElasticSearch { } } + public ActionListener getActionListener(Consumer consumer, List list) { + return new ActionListener() { + @Override + public void onResponse(Object o) { + consumer.accept(list); + } + + @Override + public void onFailure(Exception e) { + log.warn("work with es failed, exception={}", ExceptionUtils.getStackTrace(e)); + } + }; + } + public ActionListener getActionListener(BiConsumer consumer, List list, Object param) { return new ActionListener() { @Override diff --git a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/RyTask.java b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/RyTask.java index 1d20f365a..ce26ecfe7 100644 --- a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/RyTask.java +++ b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/RyTask.java @@ -3,7 +3,6 @@ package com.linkwechat.quartz.task; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; -import com.google.common.collect.Lists; import com.linkwechat.common.constant.WeConstans; import com.linkwechat.common.core.elasticsearch.ElasticSearch; import com.linkwechat.common.core.redis.RedisCache; @@ -27,7 +26,6 @@ import java.util.List; import java.util.Optional; import java.util.concurrent.Semaphore; import java.util.concurrent.atomic.AtomicLong; -import java.util.function.Consumer; /** * 定时任务调度测试 @@ -92,9 +90,7 @@ public class RyTask { List elasticSearchEntities = weChatContactMappingService.saveWeChatContactMapping(chatDataList); //获取敏感行为命中信息 weSensitiveActHitService.hitWeSensitiveAct(chatDataList); - List>> consumerList = Lists.newArrayList(); - consumerList.add(weSensitiveService::hitSensitive); - elasticSearch.insertBatchAsync(WeConstans.WECOM_FINANCE_INDEX, elasticSearchEntities, consumerList); + elasticSearch.insertBatchAsync(WeConstans.WECOM_FINANCE_INDEX, elasticSearchEntities, weSensitiveService::hitSensitive); } catch (Exception e) { log.error("消息处理异常:ex:{}", e); e.printStackTrace(); @@ -161,7 +157,7 @@ public class RyTask { semaphore.acquire(); if (s.getMessageInfo() != null && s.getMessageId() != null || (s.getMessageInfo().getPushType().equals(WeConstans.SEND_MESSAGE_CUSTOMER) - && CollectionUtils.isNotEmpty(s.getCustomersInfo())) ||(s.getMessageInfo().getPushType().equals(WeConstans.SEND_MESSAGE_GROUP) + && CollectionUtils.isNotEmpty(s.getCustomersInfo())) || (s.getMessageInfo().getPushType().equals(WeConstans.SEND_MESSAGE_GROUP) && CollectionUtils.isNotEmpty(s.getGroupsInfo()))) { weCustomerMessageService.sendMessgae(s.getMessageInfo(), s.getMessageId(), s.getCustomersInfo(), s.getGroupsInfo()); -- Gitee From fe99f4359bbf2ef9466fea55eaa01b737237e0ab Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Tue, 2 Mar 2021 22:39:02 +0800 Subject: [PATCH 40/67] =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WePageDateContraller.java | 4 ++- .../common/constant/WeConstans.java | 4 +-- .../quartz/task/GroupChatStatisticTask.java | 28 +++++++++++-------- .../quartz/task/UserBehaviorDataTak.java | 20 ++++++++----- 4 files changed, 35 insertions(+), 21 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WePageDateContraller.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WePageDateContraller.java index dfd77bc9b..497fc5734 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WePageDateContraller.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WePageDateContraller.java @@ -2,6 +2,7 @@ package com.linkwechat.web.controller.wecom; import com.linkwechat.common.core.domain.AjaxResult; import com.linkwechat.common.core.redis.RedisCache; +import com.linkwechat.wecom.domain.dto.WePageStaticDataDto; import com.linkwechat.wecom.service.IWeCorpAccountService; import com.linkwechat.wecom.service.IWeUserService; import io.swagger.annotations.Api; @@ -42,6 +43,7 @@ public class WePageDateContraller { @PreAuthorize("@ss.hasPermi('wecom:page:getCorpRealTimeData')") @GetMapping("/getCorpRealTimeData") public AjaxResult getCorpRealTimeData(){ - return AjaxResult.success(redisCache.getCacheList("getCorpRealTimeData")); + WePageStaticDataDto wePageStaticDataDto = redisCache.getCacheObject("getCorpRealTimeData"); + return AjaxResult.success(wePageStaticDataDto); } } diff --git a/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java b/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java index 01e5f2205..75f3a0232 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/constant/WeConstans.java @@ -371,8 +371,8 @@ public class WeConstans { } - public static final String WECOM_FINANCE_INDEX = "finance"; - //public static final String WECOM_FINANCE_INDEX = "finance_new"; + //public static final String WECOM_FINANCE_INDEX = "finance"; + public static final String WECOM_FINANCE_INDEX = "finance_new"; public static final String WECOM_SENSITIVE_HIT_INDEX = "sensitive"; diff --git a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java index dedc35198..faa18529c 100644 --- a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java +++ b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/GroupChatStatisticTask.java @@ -1,6 +1,7 @@ package com.linkwechat.quartz.task; import cn.hutool.core.collection.CollectionUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.linkwechat.common.utils.bean.BeanUtils; import com.linkwechat.wecom.client.WeCustomerClient; @@ -55,17 +56,22 @@ public class GroupChatStatisticTask { idList.add(weGroup.getOwner()); ownerFilter.setUserid_list(idList); query.setOwnerFilter(ownerFilter); - GroupChatStatisticDto groupChatStatistic = weCustomerClient.getGroupChatStatisticGroupByDay(query); - List items = groupChatStatistic.getItems(); - if(CollectionUtil.isNotEmpty(items)){ - items.forEach(groupchatStatisticData -> { - WeGroupStatistic weGroupStatistic = new WeGroupStatistic(); - GroupChatStatisticDto.StatisticData data = groupchatStatisticData.getData(); - BeanUtils.copyPropertiesignoreOther(data, weGroupStatistic); - weGroupStatistic.setChatId(weGroup.getChatId()); - weGroupStatistic.setStatTime(groupchatStatisticData.getStatTime()); - weGroupStatisticList.add(weGroupStatistic); - }); + try { + GroupChatStatisticDto groupChatStatistic = weCustomerClient.getGroupChatStatisticGroupByDay(query); + List items = groupChatStatistic.getItems(); + if(CollectionUtil.isNotEmpty(items)){ + items.forEach(groupchatStatisticData -> { + WeGroupStatistic weGroupStatistic = new WeGroupStatistic(); + GroupChatStatisticDto.StatisticData data = groupchatStatisticData.getData(); + BeanUtils.copyPropertiesignoreOther(data, weGroupStatistic); + weGroupStatistic.setChatId(weGroup.getChatId()); + weGroupStatistic.setStatTime(groupchatStatisticData.getStatTime()); + weGroupStatisticList.add(weGroupStatistic); + }); + } + } catch (Exception e) { + e.printStackTrace(); + log.error("群聊数据拉取失败: ownerFilter:【{}】,ex:【{}】", JSONObject.toJSONString(ownerFilter),e.getStackTrace()); } }); weGroupStatisticService.saveBatch(weGroupStatisticList); diff --git a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/UserBehaviorDataTak.java b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/UserBehaviorDataTak.java index 60012875d..b2d718490 100644 --- a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/UserBehaviorDataTak.java +++ b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/UserBehaviorDataTak.java @@ -2,6 +2,7 @@ package com.linkwechat.quartz.task; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.dtflys.forest.exceptions.ForestRuntimeException; import com.linkwechat.common.constant.WeConstans; import com.linkwechat.common.utils.bean.BeanUtils; import com.linkwechat.wecom.client.WeCustomerClient; @@ -65,13 +66,18 @@ public class UserBehaviorDataTak { List idList = new ArrayList<>(); idList.add(weUser.getUserId()); query.setUserid(idList); - UserBehaviorDataDto userBehaviorData = weCustomerClient.getUserBehaviorData(query); - List behaviorDataList = userBehaviorData.getBehaviorData(); - for (UserBehaviorDataDto.BehaviorData data : behaviorDataList) { - WeUserBehaviorData weUserBehaviorData = new WeUserBehaviorData(); - BeanUtils.copyPropertiesignoreOther(data, weUserBehaviorData); - weUserBehaviorData.setUserId(weUser.getUserId()); - dataList.add(weUserBehaviorData); + try { + UserBehaviorDataDto userBehaviorData = weCustomerClient.getUserBehaviorData(query); + List behaviorDataList = userBehaviorData.getBehaviorData(); + for (UserBehaviorDataDto.BehaviorData data : behaviorDataList) { + WeUserBehaviorData weUserBehaviorData = new WeUserBehaviorData(); + BeanUtils.copyPropertiesignoreOther(data, weUserBehaviorData); + weUserBehaviorData.setUserId(weUser.getUserId()); + dataList.add(weUserBehaviorData); + } + } catch (ForestRuntimeException e) { + e.printStackTrace(); + log.error("员工数据拉取失败: userId:【{}】,ex:【{}】",weUser.getUserId(),e.getStackTrace()); } }); weUserBehaviorDataService.saveBatch(dataList); -- Gitee From 514bfbe91cb22dfea039945cf6e39dc143c75767 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Tue, 2 Mar 2021 23:34:53 +0800 Subject: [PATCH 41/67] =?UTF-8?q?=E4=BC=9A=E8=AF=9D=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WeConversationArchiveServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java index c329a887b..d4eec3165 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java @@ -49,7 +49,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS int from = (pageNum - 1) * pageSize; builder.size(pageSize); builder.from(from); - builder.sort("msgtime", SortOrder.DESC); + builder.sort("msgtime", SortOrder.ASC); BoolQueryBuilder fromBuilder = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("roomid", "")) .must(QueryBuilders.matchQuery("from", query.getFromId())) .must(QueryBuilders.matchQuery("tolist.keyword", query.getReceiveId())); @@ -85,7 +85,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS int from = (pageNum - 1) * pageSize; builder.size(pageSize); builder.from(from); - builder.sort("msgtime", SortOrder.DESC); + builder.sort("msgtime", SortOrder.ASC); BoolQueryBuilder fromBuilder = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("roomid", query.getRoomId())) .must(QueryBuilders.matchQuery("from", query.getFromId())); @@ -118,7 +118,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS @Override public JSONObject getFinalChatContactInfo(String fromId, String receiveId) { SearchSourceBuilder builder = new SearchSourceBuilder(); - builder.sort("msgtime", SortOrder.DESC); + builder.sort("msgtime", SortOrder.ASC); builder.size(1); BoolQueryBuilder fromBuilder = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("roomid", "")) .must(QueryBuilders.matchQuery("from", fromId)) @@ -143,7 +143,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS @Override public JSONObject getFinalChatRoomContactInfo(String fromId, String roomId) { SearchSourceBuilder builder = new SearchSourceBuilder(); - builder.sort("msgtime", SortOrder.DESC); + builder.sort("msgtime", SortOrder.ASC); builder.size(1); BoolQueryBuilder fromBuilder = QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("roomid", roomId)) .must(QueryBuilders.matchQuery("from", fromId)); @@ -171,7 +171,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS int from = (pageNum - 1) * pageSize; builder.size(pageSize); builder.from(from); - builder.sort("msgtime", SortOrder.DESC); + builder.sort("msgtime", SortOrder.ASC); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); -- Gitee From c2fd3bc527eb7b40403332328e06b25a091bb2d9 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Tue, 2 Mar 2021 23:42:21 +0800 Subject: [PATCH 42/67] fix --- linkwe-admin/src/main/resources/application.yml | 1 + .../main/java/com/linkwechat/quartz/task/RyTask.java | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/linkwe-admin/src/main/resources/application.yml b/linkwe-admin/src/main/resources/application.yml index 2a05cc542..d85d5a0b7 100644 --- a/linkwe-admin/src/main/resources/application.yml +++ b/linkwe-admin/src/main/resources/application.yml @@ -167,6 +167,7 @@ forest: wecome: + chatKey: finance serverUrl: https://qyapi.weixin.qq.com/ weComePrefix: cgi-bin noAccessTokenUrl: diff --git a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/RyTask.java b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/RyTask.java index ce26ecfe7..a548c3817 100644 --- a/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/RyTask.java +++ b/linkwe-quartz/src/main/java/com/linkwechat/quartz/task/RyTask.java @@ -19,6 +19,7 @@ import org.elasticsearch.search.sort.SortBuilder; import org.elasticsearch.search.sort.SortBuilders; import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.IOException; @@ -53,6 +54,9 @@ public class RyTask { @Autowired private IWeCustomerMessageService weCustomerMessageService; + @Value("${wecome.chatKey}") + private String chartKey; + public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); @@ -70,7 +74,7 @@ public class RyTask { public void FinanceTask(String corpId, String secret) throws IOException { log.info("执行有参方法: params:{},{}", corpId, secret); //创建索引 - elasticSearch.createIndex2(WeConstans.WECOM_FINANCE_INDEX, elasticSearch.getFinanceMapping()); + elasticSearch.createIndex2(chartKey, elasticSearch.getFinanceMapping()); //从缓存中获取消息标识 Object seqObject = Optional.ofNullable(redisCache.getCacheObject(WeConstans.CONTACT_SEQ_KEY)).orElse(0L); @@ -90,7 +94,7 @@ public class RyTask { List elasticSearchEntities = weChatContactMappingService.saveWeChatContactMapping(chatDataList); //获取敏感行为命中信息 weSensitiveActHitService.hitWeSensitiveAct(chatDataList); - elasticSearch.insertBatchAsync(WeConstans.WECOM_FINANCE_INDEX, elasticSearchEntities, weSensitiveService::hitSensitive); + elasticSearch.insertBatchAsync(chartKey, elasticSearchEntities, weSensitiveService::hitSensitive); } catch (Exception e) { log.error("消息处理异常:ex:{}", e); e.printStackTrace(); @@ -118,7 +122,7 @@ public class RyTask { SortBuilder sortBuilderPrice = SortBuilders.fieldSort(WeConstans.CONTACT_SEQ_KEY).order(SortOrder.DESC); searchSourceBuilder.sort(sortBuilderPrice); searchSourceBuilder.size(1); - List searchResultList = elasticSearch.search(WeConstans.WECOM_FINANCE_INDEX, searchSourceBuilder, JSONObject.class); + List searchResultList = elasticSearch.search(chartKey, searchSourceBuilder, JSONObject.class); searchResultList.stream().findFirst().ifPresent(result -> { index.set(result.getLong(WeConstans.CONTACT_SEQ_KEY) + 1); }); -- Gitee From 67c91599e881188ab668d20da2c12df5f323abf0 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Wed, 3 Mar 2021 00:09:46 +0800 Subject: [PATCH 43/67] =?UTF-8?q?api=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeCommunityNewGroupController.java | 2 +- .../common/core/page/TableDataInfo.java | 10 ++++----- .../wecom/domain/WeEmpleCodeTag.java | 7 +++++++ .../wecom/domain/WeEmpleCodeUseScop.java | 9 ++++++++ .../wecom/domain/WeGroupCodeActual.java | 13 ++++++++++++ .../linkwechat/wecom/domain/WeMaterial.java | 10 +++++++++ .../domain/dto/WeCommunityNewGroupDto.java | 11 ++++++++++ .../domain/vo/WeCommunityNewGroupVo.java | 21 ++++++++++++++++--- 8 files changed, 74 insertions(+), 9 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java index b202407a9..bbf3c56bb 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java @@ -55,7 +55,7 @@ public class WeCommunityNewGroupController extends BaseController { @ApiOperation(value = "查询新客自动拉群列表", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:list')") @GetMapping("/list") - public TableDataInfo list(@RequestParam(value = "empleCodeName", required = false) String empleCodeName + public TableDataInfo> list(@RequestParam(value = "empleCodeName", required = false) String empleCodeName , @RequestParam(value = "createBy", required = false) String createBy , @RequestParam(value = "beginTime", required = false) String beginTime , @RequestParam(value = "endTime", required = false) String endTime) { diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/page/TableDataInfo.java b/linkwe-common/src/main/java/com/linkwechat/common/core/page/TableDataInfo.java index 853ecb551..d8b4196c9 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/page/TableDataInfo.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/page/TableDataInfo.java @@ -8,7 +8,7 @@ import java.util.List; * * @author ruoyi */ -public class TableDataInfo implements Serializable +public class TableDataInfo implements Serializable { private static final long serialVersionUID = 1L; @@ -16,7 +16,7 @@ public class TableDataInfo implements Serializable private long total; /** 列表数据 */ - private List rows; + private T rows; /** 消息状态码 */ private int code; @@ -37,7 +37,7 @@ public class TableDataInfo implements Serializable * @param list 列表数据 * @param total 总记录数 */ - public TableDataInfo(List list, int total) + public TableDataInfo(T list, int total) { this.rows = list; this.total = total; @@ -53,12 +53,12 @@ public class TableDataInfo implements Serializable this.total = total; } - public List getRows() + public T getRows() { return rows; } - public void setRows(List rows) + public void setRows(T rows) { this.rows = rows; } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeEmpleCodeTag.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeEmpleCodeTag.java index a69fd2b8d..2d2e22c9b 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeEmpleCodeTag.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeEmpleCodeTag.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.linkwechat.common.core.domain.BaseEntity; import com.linkwechat.common.utils.SnowFlakeUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -14,6 +16,7 @@ import lombok.Data; * @author ruoyi * @date 2020-10-04 */ +@ApiModel @Data @TableName("we_emple_code_tag") public class WeEmpleCodeTag @@ -25,15 +28,19 @@ public class WeEmpleCodeTag private Long id= SnowFlakeUtil.nextId(); /** 标签id */ + @ApiModelProperty("标签id") private String tagId; /** 员工活码id */ + @ApiModelProperty("员工活码id") private Long empleCodeId; /** 0:正常;2:删除; */ + @ApiModelProperty("0:正常;2:删除") private Integer delFlag=new Integer(0); /** 标签名 */ + @ApiModelProperty("标签名") private String tagName; diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeEmpleCodeUseScop.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeEmpleCodeUseScop.java index 1cf84b2b8..7a16f622c 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeEmpleCodeUseScop.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeEmpleCodeUseScop.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.linkwechat.common.core.domain.BaseEntity; import com.linkwechat.common.utils.SnowFlakeUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; @@ -16,6 +18,7 @@ import java.util.Date; * @author ruoyi * @date 2020-10-04 */ +@ApiModel @Data @TableName("we_emple_code_use_scop") public class WeEmpleCodeUseScop @@ -27,21 +30,27 @@ public class WeEmpleCodeUseScop private Long id = SnowFlakeUtil.nextId(); /** 员工活码id */ + @ApiModelProperty("员工活码id") private Long empleCodeId; /** 业务id类型1:组织机构id,2:成员id */ + @ApiModelProperty("业务id类型1:组织机构id,2:成员id") private Integer businessIdType; /** 活码类型下业务使用人的id */ + @ApiModelProperty("活码类型下业务使用人的id") private String businessId; /** 0:正常;2:删除; */ + @ApiModelProperty("0:正常;2:删除") private Integer delFlag=new Integer(0); /** 活码使用人员名称 */ + @ApiModelProperty("活码使用人员名称") private String businessName; /** 活码使用人员手机号 */ + @ApiModelProperty("活码使用人员手机号") @TableField(exist = false) private String mobile; diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupCodeActual.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupCodeActual.java index 88678a008..fc4aaa2ce 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupCodeActual.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeGroupCodeActual.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.linkwechat.common.utils.SnowFlakeUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -17,6 +19,7 @@ import javax.validation.constraints.NotNull; * @author ruoyi * @date 2020-10-07 */ +@ApiModel @Data @TableName("we_group_code_actual") public class WeGroupCodeActual @@ -29,37 +32,47 @@ public class WeGroupCodeActual /** 实际群码 */ @NotNull(message = "实际群活码称不能为空") + @ApiModelProperty("实际群码") private String actualGroupQrCode; /** 群名称 */ @NotNull(message = "群名称不能为空") + @ApiModelProperty("群名称") private String groupName; /** 有效期 */ @NotNull(message = "有效期不能为空") @JsonFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty("有效期") private Date effectTime; /** 扫码次数限制 */ @NotNull(message = "次数限制不能为空") + @ApiModelProperty("扫码次数限制") private Long scanCodeTimesLimit; /** 群活码id */ @NotNull(message = "群活码id不能为空") + @ApiModelProperty("群活码id") private Long groupCodeId; /** 客户群id */ + @ApiModelProperty("客户群id") private String chatId; /** 客户群名称 */ + @ApiModelProperty("客户群名称") private String chatGroupName; /** 扫码次数 */ + @ApiModelProperty("扫码次数") private Long scanCodeTimes; /** 0:正常使用;2:删除; */ + @ApiModelProperty("0:正常使用;2:删除;") private Long delFlag; /** 0:使用中 */ + @ApiModelProperty("0:使用中") private Long status; } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeMaterial.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeMaterial.java index 711b56e7c..fb6af3710 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeMaterial.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeMaterial.java @@ -2,6 +2,8 @@ package com.linkwechat.wecom.domain; import com.linkwechat.common.core.domain.BaseEntity; import com.linkwechat.common.utils.SnowFlakeUtil; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** @@ -9,6 +11,7 @@ import lombok.Data; * @author: KEWEN * @create: 2020-09-21 21:17 **/ +@ApiModel @Data public class WeMaterial extends BaseEntity { @@ -19,36 +22,43 @@ public class WeMaterial extends BaseEntity { /** * 分类id */ + @ApiModelProperty("分类id") private Long categoryId; /** * 本地资源文件地址 */ + @ApiModelProperty("本地资源文件地址") private String materialUrl; /** * 文本内容、图片文案 */ + @ApiModelProperty("文本内容、图片文案") private String content; /** * 图片名称 */ + @ApiModelProperty("图片名称") private String materialName; /** * 摘要 */ + @ApiModelProperty("摘要") private String digest; /** * 封面本地资源文件 */ + @ApiModelProperty("封面本地资源文件") private String coverUrl; /** * 音频时长 */ + @ApiModelProperty("音频时长") private String audioTime; } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java index 0236d6b3b..a98037492 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java @@ -3,6 +3,8 @@ package com.linkwechat.wecom.domain.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.linkwechat.wecom.domain.WeEmpleCodeTag; import com.linkwechat.wecom.domain.WeEmpleCodeUseScop; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotEmpty; @@ -14,48 +16,57 @@ import java.util.List; * @author kewen * @date 2021-02-19 */ +@ApiModel @Data public class WeCommunityNewGroupDto { /** * 活动场景 */ + @ApiModelProperty("活动场景") private String activityScene; /** * 欢迎语 */ + @ApiModelProperty("欢迎语") private String welcomeMsg; @NotEmpty(message = "员工信息不能为空") /** 使用员工 */ @TableField(exist = false) + @ApiModelProperty("使用员工") private List weEmpleCodeUseScops; /** * 扫码标签 */ @TableField(exist = false) + @ApiModelProperty("扫码标签") private List weEmpleCodeTags; /** * 群活码ID */ + @ApiModelProperty("群活码ID") private Long groupCodeId; /** * 客户添加时无需经过确认自动成为好友:1:是;0:否 */ + @ApiModelProperty("客户添加时无需经过确认自动成为好友:1:是;0:否") private Boolean isJoinConfirmFriends; /** * 二维码链接 */ + @ApiModelProperty("二维码链接") private String qrCode; /** * 素材的id */ + @ApiModelProperty("素材的id") private Long mediaId; } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeCommunityNewGroupVo.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeCommunityNewGroupVo.java index 96f266edc..fd5a23d19 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeCommunityNewGroupVo.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeCommunityNewGroupVo.java @@ -6,6 +6,7 @@ import com.linkwechat.wecom.domain.WeEmpleCodeTag; import com.linkwechat.wecom.domain.WeEmpleCodeUseScop; import com.linkwechat.wecom.domain.WeGroupCodeActual; import com.linkwechat.wecom.domain.WeMaterial; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -16,83 +17,97 @@ import java.util.List; /** * 社区运营 新客自动拉群 */ +@ApiModel @Data public class WeCommunityNewGroupVo { /** *主键ID */ + @ApiModelProperty("主键ID") private Long newGroupId; /** * 员工活码名称 */ + @ApiModelProperty("员工活码名称") private String empleCodeName; /** * 活动场景 */ + @ApiModelProperty("活动场景") private String activityScene; /** * 欢迎语 */ + @ApiModelProperty("欢迎语") private String welcomeMsg; /** * 新增联系方式的配置id */ + @ApiModelProperty("新增联系方式的配置id") private String configId; /** * 二维码链接 */ + @ApiModelProperty("二维码链接") private String qrCode; /** * 客户添加时无需经过确认自动成为好友:1:是;0:否 */ + @ApiModelProperty("客户添加时无需经过确认自动成为好友:1:是;0:否") private Boolean isJoinConfirmFriends; /** * 添加好友数 */ + @ApiModelProperty("添加好友数") private Integer joinFriendNums; @NotEmpty(message = "员工信息不能为空") /** 使用员工 */ @TableField(exist = false) + @ApiModelProperty("使用员工") private List weEmpleCodeUseScops; /** * 扫码标签 */ @TableField(exist = false) + @ApiModelProperty("扫码标签") private List weEmpleCodeTags; /** - * 扫码标签 + * 素材 */ + @ApiModelProperty("素材") @TableField(exist = false) private WeMaterial weMaterial; /** * 素材的id */ + @ApiModelProperty("素材的id") private Long mediaId; /** * 实际群聊 */ + @ApiModelProperty("实际群聊") private List weGroupUserScops; /** 创建者 */ - @ApiModelProperty(hidden = true) + @ApiModelProperty(value = "创建者",hidden = true) private String createBy; /** 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @ApiModelProperty(hidden = true) + @ApiModelProperty(value = "创建时间",hidden = true) private Date createTime=new Date(); } -- Gitee From 2e911fee081460088a1be57772dc0fd8f6aa0e63 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Wed, 3 Mar 2021 00:15:10 +0800 Subject: [PATCH 44/67] fix --- .../impl/WeConversationArchiveServiceImpl.java | 14 +++++++++----- .../wecom/service/impl/WeSensitiveServiceImpl.java | 6 +++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java index d4eec3165..8dd82739a 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java @@ -18,6 +18,7 @@ import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.Date; @@ -34,6 +35,9 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS @Autowired private ElasticSearch elasticSearch; + @Value("${wecome.chatKey}") + private String chartKey; + /** * 根据用户ID 获取对应内部联系人列表 * @@ -73,7 +77,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS boolQueryBuilder.filter(QueryBuilders.rangeQuery("msgtime").gte(beginTime).lte(endTime)); } builder.query(boolQueryBuilder); - return elasticSearch.searchPage(WeConstans.WECOM_FINANCE_INDEX, builder, pageNum, pageSize, JSONObject.class); + return elasticSearch.searchPage(chartKey, builder, pageNum, pageSize, JSONObject.class); } @Override @@ -111,7 +115,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS } builder.query(boolQueryBuilder); - return elasticSearch.searchPage(WeConstans.WECOM_FINANCE_INDEX, builder, pageNum, pageSize, JSONObject.class); + return elasticSearch.searchPage(chartKey, builder, pageNum, pageSize, JSONObject.class); } @@ -132,7 +136,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS .should(toLsitBuilder) .minimumShouldMatch(1); builder.query(boolQueryBuilder); - List resultList = elasticSearch.search(WeConstans.WECOM_FINANCE_INDEX, builder, JSONObject.class); + List resultList = elasticSearch.search(chartKey, builder, JSONObject.class); if (CollectionUtil.isNotEmpty(resultList)) { return resultList.get(0); } else { @@ -154,7 +158,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS .should(fromBuilder) .should(roomidBuilder); builder.query(boolQueryBuilder); - List resultList = elasticSearch.search(WeConstans.WECOM_FINANCE_INDEX, builder, JSONObject.class); + List resultList = elasticSearch.search(chartKey, builder, JSONObject.class); if (CollectionUtil.isNotEmpty(resultList)) { return resultList.get(0); } else { @@ -204,7 +208,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS boolQueryBuilder.filter(QueryBuilders.rangeQuery("msgtime").gte(beginTime).lte(endTime)); } builder.query(boolQueryBuilder); - PageInfo pageInfo = elasticSearch.searchPage(WeConstans.WECOM_FINANCE_INDEX, builder, pageNum, pageSize, JSONObject.class); + PageInfo pageInfo = elasticSearch.searchPage(chartKey, builder, pageNum, pageSize, JSONObject.class); return pageInfo; } } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java index 9845e54ce..8168615b4 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeSensitiveServiceImpl.java @@ -35,6 +35,7 @@ import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -71,6 +72,9 @@ public class WeSensitiveServiceImpl implements IWeSensitiveService { @Autowired private IWeCorpAccountService weCorpAccountService; + @Value("${wecome.chatKey}") + private String chartKey; + /** * 查询敏感词设置 * @@ -322,7 +326,7 @@ public class WeSensitiveServiceImpl implements IWeSensitiveService { userBuilder.minimumShouldMatch(1); BoolQueryBuilder searchBuilder = QueryBuilders.boolQuery().must(QueryBuilders.matchPhraseQuery("text.content", patternWord)).must(userBuilder); builder.query(searchBuilder); - List list = elasticSearch.search(WeConstans.WECOM_FINANCE_INDEX, builder, JSONObject.class); + List list = elasticSearch.search(chartKey, builder, JSONObject.class); list.parallelStream().forEach(j -> j.put("pattern_words", patternWord)); resultList.addAll(list); } -- Gitee From cd8b1363631c504480faa3e06cb2f6158049ec42 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Wed, 3 Mar 2021 00:43:44 +0800 Subject: [PATCH 45/67] fix --- .../wecom/service/impl/WeConversationArchiveServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java index 8dd82739a..b994dd68b 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeConversationArchiveServiceImpl.java @@ -178,7 +178,7 @@ public class WeConversationArchiveServiceImpl implements IWeConversationArchiveS builder.sort("msgtime", SortOrder.ASC); BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); - + boolQueryBuilder.must(QueryBuilders.termQuery("msgtype", "text")); //成员姓名查询 if(StringUtils.isNotEmpty(query.getUserName())){ boolQueryBuilder.must(QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("fromInfo.name",query.getUserName())) -- Gitee From 5f30d342418b8b22fd8c9cae1a4f7a0537f2cbd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B0=B4=E5=BA=93=E6=B5=AA=E5=AD=90?= <1539136324@qq.com> Date: Wed, 3 Mar 2021 18:25:42 +0800 Subject: [PATCH 46/67] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=94=BB=E5=83=8F?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=AE=A2=E6=88=B7=E5=9F=BA=E6=9C=AC=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E6=8E=A5=E5=8F=A3=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeCustomerPortraitController.java | 42 +++++++++++++++++++ .../wecom/domain/WeCustomerPortrait.java | 39 +++++++++++++++++ .../wecom/mapper/WeCustomerMapper.java | 14 +++++++ .../wecom/service/IWeCustomerService.java | 13 ++++++ .../service/impl/WeCustomerServiceImpl.java | 7 ++++ .../mapper/wecom/WeCustomerMapper.xml | 19 +++++++++ 6 files changed, 134 insertions(+) create mode 100644 linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java new file mode 100644 index 000000000..22c4fdfd5 --- /dev/null +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java @@ -0,0 +1,42 @@ +package com.linkwechat.web.controller.wecom; + +import com.linkwechat.common.core.controller.BaseController; +import com.linkwechat.common.core.domain.AjaxResult; +import com.linkwechat.wecom.service.IWeCustomerService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @description: 客户画像相关controller + * @author: HaoN + * @create: 2021-03-03 15:10 + **/ +@RestController +@RequestMapping("/wecom/portrait") +public class WeCustomerPortraitController extends BaseController { + + + @Autowired + private IWeCustomerService iWeCustomerService; + + + /** + * 根据客户id和当前企业员工id获取员工详细信息 + * @param externalUserid + * @param operUserid + * @return + */ + @GetMapping(value = "/findWeCustomerInfo") + public AjaxResult findWeCustomerInfo(String externalUserid, String operUserid){ + + + return AjaxResult.success( + iWeCustomerService.findCustomerByOperUseridAndCustomerId(externalUserid,operUserid) + ); + } + + + +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java new file mode 100644 index 000000000..3893e5164 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java @@ -0,0 +1,39 @@ +package com.linkwechat.wecom.domain; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @description: 客户画像实体VO + * @author: HaoN + * @create: 2021-03-03 11:49 + **/ +@Data +public class WeCustomerPortrait { + //客户昵称 + private String name; + //客户备注 + private String remark; + //备注客户手机号 + private String remarkMobiles; + //客户生日 + private Date birthday; + //邮箱 + private String email; + //地址 + private String address; + //qq + private String qq; + //职业 + private String position; + //公司 + private String remarkCorpName; + //描述 + private String description; + + //客户标签 + private List weTagGroupList; + +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java index b622d5b72..88df54693 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java @@ -4,6 +4,7 @@ import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.linkwechat.wecom.domain.WeCustomer; +import com.linkwechat.wecom.domain.WeCustomerPortrait; import com.linkwechat.wecom.domain.WeUser; import org.apache.ibatis.annotations.Param; @@ -77,4 +78,17 @@ public interface WeCustomerMapper extends BaseMapper * @return */ List getCustomerByTag(List ids); + + + /** + * 根据外部联系人ID和企业员工ID获取当前客户信息 + * @param externalUserid + * @param operUserid + * @return + */ + WeCustomerPortrait findCustomerByOperUseridAndCustomerId(@Param("externalUserid") String externalUserid,@Param("operUserid") String operUserid); + + + + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java index f02807f23..8512502d4 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java @@ -2,10 +2,12 @@ package com.linkwechat.wecom.service; import com.baomidou.mybatisplus.extension.service.IService; import com.linkwechat.wecom.domain.WeCustomer; +import com.linkwechat.wecom.domain.WeCustomerPortrait; import com.linkwechat.wecom.domain.WeUser; import com.linkwechat.wecom.domain.dto.WeWelcomeMsg; import com.linkwechat.wecom.domain.vo.WeLeaveUserInfoAllocateVo; import com.linkwechat.wecom.domain.vo.WeMakeCustomerTag; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -109,4 +111,15 @@ public interface IWeCustomerService extends IService * @return */ public List getCustomerByTag(List ids); + + + + /** + * 根据外部联系人ID和企业员工ID获取当前客户信息 + * @param externalUserid + * @param operUserid + * @return + */ + WeCustomerPortrait findCustomerByOperUseridAndCustomerId(@Param("externalUserid") String externalUserid, @Param("operUserid") String operUserid); + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java index db579e286..ef1302300 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java @@ -626,4 +626,11 @@ public class WeCustomerServiceImpl extends ServiceImpl + + + \ No newline at end of file -- Gitee From 17ebedbfac0a344bf178c80880894ec9dc47c996 Mon Sep 17 00:00:00 2001 From: "1539136324@qq.com" Date: Wed, 3 Mar 2021 23:44:55 +0800 Subject: [PATCH 47/67] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=94=BB=E5=83=8F=E8=B5=84=E6=96=99=E6=9B=B4=E6=96=B0=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeCustomerPortraitController.java | 24 +++++++++++++++---- .../wecom/domain/WeCustomerPortrait.java | 4 ++++ .../wecom/domain/WeFlowerCustomerRel.java | 19 +++++++++++++++ .../wecom/service/IWeCustomerService.java | 7 ++++++ .../service/impl/WeCustomerServiceImpl.java | 21 ++++++++++++++++ 5 files changed, 71 insertions(+), 4 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java index 22c4fdfd5..ffdacfdf7 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java @@ -2,11 +2,10 @@ package com.linkwechat.web.controller.wecom; import com.linkwechat.common.core.controller.BaseController; import com.linkwechat.common.core.domain.AjaxResult; +import com.linkwechat.wecom.domain.WeCustomerPortrait; import com.linkwechat.wecom.service.IWeCustomerService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * @description: 客户画像相关controller @@ -31,12 +30,29 @@ public class WeCustomerPortraitController extends BaseController { @GetMapping(value = "/findWeCustomerInfo") public AjaxResult findWeCustomerInfo(String externalUserid, String operUserid){ - return AjaxResult.success( iWeCustomerService.findCustomerByOperUseridAndCustomerId(externalUserid,operUserid) ); } + /** + * 客户画像资料更新 + * @param weCustomerPortrait + * @return + */ + @PostMapping(value = "/updateWeCustomerInfo") + public AjaxResult updateWeCustomerInfo(@RequestBody WeCustomerPortrait weCustomerPortrait){ + + + + + iWeCustomerService.updateWeCustomerPortrait(weCustomerPortrait); + + + return AjaxResult.success(); + } + + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java index 3893e5164..7f92fff33 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java @@ -12,6 +12,10 @@ import java.util.List; **/ @Data public class WeCustomerPortrait { + //外部联系人id + private String externalUserid; + //企业员工id + private String operUserid; //客户昵称 private String name; //客户备注 diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeFlowerCustomerRel.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeFlowerCustomerRel.java index b25110863..a22f4807b 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeFlowerCustomerRel.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeFlowerCustomerRel.java @@ -89,4 +89,23 @@ public class WeFlowerCustomerRel @TableField(exist = false) private String endTime; + + /** 备注 */ + private String remark; + + + /** 邮件 */ + private String email; + + + /** qq */ + private String qq; + + /**地址*/ + private String address; + + + + + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java index 8512502d4..64a4fb1d5 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java @@ -122,4 +122,11 @@ public interface IWeCustomerService extends IService */ WeCustomerPortrait findCustomerByOperUseridAndCustomerId(@Param("externalUserid") String externalUserid, @Param("operUserid") String operUserid); + + /** + * 跟新客户画像 + * @param weCustomerPortrait + */ + void updateWeCustomerPortrait(WeCustomerPortrait weCustomerPortrait); + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java index ef1302300..dd7651117 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java @@ -632,5 +632,26 @@ public class WeCustomerServiceImpl extends ServiceImpl() + .eq(WeFlowerCustomerRel::getExternalUserid,weCustomerPortrait.getExternalUserid()) + .eq(WeFlowerCustomerRel::getOperUserid,weCustomerPortrait.getOperUserid())); + + } + } -- Gitee From 18abb72424fa6cdba172654a0ba7b34b0d1fc7f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B0=B4=E5=BA=93=E6=B5=AA=E5=AD=90?= <1539136324@qq.com> Date: Thu, 4 Mar 2021 18:11:40 +0800 Subject: [PATCH 48/67] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=94=BB=E5=83=8F?= =?UTF-8?q?=EF=BC=8C=E5=AE=A2=E6=88=B7=E6=A0=87=E7=AD=BE=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeCategoryController.java | 10 ++++---- .../wecom/WeChatContactMappingController.java | 14 +++++------ .../wecom/WeCustomerPortraitController.java | 24 +++++++++++++++++++ .../wecom/domain/WeCustomerPortrait.java | 2 ++ .../wecom/domain/WeCustomerPortraitTag.java | 12 ++++++++++ .../wecom/mapper/WeTagGroupMapper.java | 12 ++++++++++ .../wecom/service/IWeCustomerService.java | 4 +--- .../wecom/service/IWeTagGroupService.java | 13 ++++++++-- .../service/impl/WeCustomerServiceImpl.java | 15 +++++++++++- .../service/impl/WeTagGroupServiceImpl.java | 5 ++++ .../mapper/wecom/WeCustomerMapper.xml | 4 +++- .../mapper/wecom/WeTagGroupMapper.xml | 14 +++++++++++ 12 files changed, 110 insertions(+), 19 deletions(-) create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortraitTag.java diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCategoryController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCategoryController.java index 211159464..f92071599 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCategoryController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCategoryController.java @@ -30,7 +30,7 @@ public class WeCategoryController extends BaseController { /** * 类目树 */ - @PreAuthorize("@ss.hasPermi('wechat:category:list')") +// @PreAuthorize("@ss.hasPermi('wechat:category:list')") @GetMapping("/list") @ApiOperation("类目树") public AjaxResult list(@RequestParam("mediaType") String mediaType) { @@ -40,7 +40,7 @@ public class WeCategoryController extends BaseController { /** * 通过id查询类目详细信息 */ - @PreAuthorize("@ss.hasPermi('wechat:category:query')") +// @PreAuthorize("@ss.hasPermi('wechat:category:query')") @GetMapping(value = "/{id}") @ApiOperation("通过id查询类目详细信息") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -50,7 +50,7 @@ public class WeCategoryController extends BaseController { /** * 添加类目 */ - @PreAuthorize("@ss.hasPermi('wechat:category:add')") +// @PreAuthorize("@ss.hasPermi('wechat:category:add')") @Log(title = "添加类目", businessType = BusinessType.INSERT) @PostMapping @ApiOperation("添加类目") @@ -61,7 +61,7 @@ public class WeCategoryController extends BaseController { /** * 更新目录 */ - @PreAuthorize("@ss.hasPermi('wechat:category:edit')") +// @PreAuthorize("@ss.hasPermi('wechat:category:edit')") @Log(title = "更新目录", businessType = BusinessType.UPDATE) @PutMapping @ApiOperation("更新目录") @@ -73,7 +73,7 @@ public class WeCategoryController extends BaseController { /** * 删除类目 */ - @PreAuthorize("@ss.hasPermi('wechat:category:remove')") +// @PreAuthorize("@ss.hasPermi('wechat:category:remove')") @Log(title = "删除类目", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") @ApiOperation("删除类目") diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeChatContactMappingController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeChatContactMappingController.java index 935e25381..f802b3824 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeChatContactMappingController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeChatContactMappingController.java @@ -39,7 +39,7 @@ public class WeChatContactMappingController extends BaseController /** * 查询聊天关系映射列表 */ - @PreAuthorize("@ss.hasPermi('chat:mapping:list')") +// @PreAuthorize("@ss.hasPermi('chat:mapping:list')") @GetMapping("/list") public TableDataInfo list(WeChatContactMapping weChatContactMapping) { @@ -51,7 +51,7 @@ public class WeChatContactMappingController extends BaseController /** * 按客户查询关系映射列表 */ - @PreAuthorize("@ss.hasPermi('chat:mapping:listByCustomer')") +// @PreAuthorize("@ss.hasPermi('chat:mapping:listByCustomer')") @GetMapping("/listByCustomer") public TableDataInfo listByCustomer() { @@ -63,7 +63,7 @@ public class WeChatContactMappingController extends BaseController /** * 导出聊天关系映射列表 */ - @PreAuthorize("@ss.hasPermi('chat:mapping:export')") +// @PreAuthorize("@ss.hasPermi('chat:mapping:export')") @Log(title = "聊天关系映射", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(WeChatContactMapping weChatContactMapping) @@ -76,7 +76,7 @@ public class WeChatContactMappingController extends BaseController /** * 获取聊天关系映射详细信息 */ - @PreAuthorize("@ss.hasPermi('chat:mapping:query')") +// @PreAuthorize("@ss.hasPermi('chat:mapping:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -86,7 +86,7 @@ public class WeChatContactMappingController extends BaseController /** * 新增聊天关系映射 */ - @PreAuthorize("@ss.hasPermi('chat:mapping:add')") +// @PreAuthorize("@ss.hasPermi('chat:mapping:add')") @Log(title = "聊天关系映射", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody WeChatContactMapping weChatContactMapping) @@ -97,7 +97,7 @@ public class WeChatContactMappingController extends BaseController /** * 修改聊天关系映射 */ - @PreAuthorize("@ss.hasPermi('chat:mapping:edit')") +// @PreAuthorize("@ss.hasPermi('chat:mapping:edit')") @Log(title = "聊天关系映射", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody WeChatContactMapping weChatContactMapping) @@ -108,7 +108,7 @@ public class WeChatContactMappingController extends BaseController /** * 删除聊天关系映射 */ - @PreAuthorize("@ss.hasPermi('chat:mapping:remove')") +// @PreAuthorize("@ss.hasPermi('chat:mapping:remove')") @Log(title = "聊天关系映射", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java index ffdacfdf7..a5f81c235 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java @@ -3,7 +3,9 @@ package com.linkwechat.web.controller.wecom; import com.linkwechat.common.core.controller.BaseController; import com.linkwechat.common.core.domain.AjaxResult; import com.linkwechat.wecom.domain.WeCustomerPortrait; +import com.linkwechat.wecom.domain.WeTagGroup; import com.linkwechat.wecom.service.IWeCustomerService; +import com.linkwechat.wecom.service.IWeTagGroupService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -21,6 +23,10 @@ public class WeCustomerPortraitController extends BaseController { private IWeCustomerService iWeCustomerService; + @Autowired + private IWeTagGroupService weTagGroupService; + + /** * 根据客户id和当前企业员工id获取员工详细信息 * @param externalUserid @@ -55,4 +61,22 @@ public class WeCustomerPortraitController extends BaseController { + /** + * 获取当前系统所有可用标签 + * @return + */ + @GetMapping(value = "/findAllTags") + public AjaxResult findAllTags(){ + + return AjaxResult.success( + weTagGroupService.selectWeTagGroupList( + WeTagGroup.builder() + .build() + ) + ); + + } + + + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java index 7f92fff33..46c0be116 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java @@ -16,6 +16,8 @@ public class WeCustomerPortrait { private String externalUserid; //企业员工id private String operUserid; + //客户与企业员工关系id + private String flowerCustomerRelId; //客户昵称 private String name; //客户备注 diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortraitTag.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortraitTag.java new file mode 100644 index 000000000..7b0aaea6a --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortraitTag.java @@ -0,0 +1,12 @@ +package com.linkwechat.wecom.domain; + +import lombok.Data; + +/** + * @description: 客户画像标签 + * @author: HaoN + * @create: 2021-03-04 12:31 + **/ +@Data +public class WeCustomerPortraitTag { +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTagGroupMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTagGroupMapper.java index 86919511e..7343c4876 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTagGroupMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeTagGroupMapper.java @@ -62,4 +62,16 @@ public interface WeTagGroupMapper extends BaseMapper * @return */ public int batchInsetWeTagGroup(@Param("weTagGroups") List weTagGroups); + + + /** + * 根据企业员工与添加客户关系id给客户打标签 + * @param flowerCustomerRelId + * @return + */ + public List findCustomerTagByFlowerCustomerRelId(@Param("flowerCustomerRelId") String flowerCustomerRelId); + + + + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java index 64a4fb1d5..0af5a9d1c 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java @@ -7,8 +7,6 @@ import com.linkwechat.wecom.domain.WeUser; import com.linkwechat.wecom.domain.dto.WeWelcomeMsg; import com.linkwechat.wecom.domain.vo.WeLeaveUserInfoAllocateVo; import com.linkwechat.wecom.domain.vo.WeMakeCustomerTag; -import org.apache.ibatis.annotations.Param; - import java.util.List; @@ -120,7 +118,7 @@ public interface IWeCustomerService extends IService * @param operUserid * @return */ - WeCustomerPortrait findCustomerByOperUseridAndCustomerId(@Param("externalUserid") String externalUserid, @Param("operUserid") String operUserid); + WeCustomerPortrait findCustomerByOperUseridAndCustomerId(String externalUserid,String operUserid); /** diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTagGroupService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTagGroupService.java index b0e29ea21..4828d2d85 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTagGroupService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeTagGroupService.java @@ -1,11 +1,11 @@ package com.linkwechat.wecom.service; -import java.util.List; - import com.baomidou.mybatisplus.extension.service.IService; import com.linkwechat.wecom.domain.WeTagGroup; import com.linkwechat.wecom.domain.dto.tag.WeCropGroupTagDto; +import java.util.List; + /** * 标签组Service接口 * @@ -69,4 +69,13 @@ public interface IWeTagGroupService extends IService void deleteTagGroup(String id); void updateTagGroup(String id); + + + + /** + * 根据企业员工与添加客户关系id给客户打标签 + * @param flowerCustomerRelId + * @return + */ + public List findCustomerTagByFlowerCustomerRelId(String flowerCustomerRelId); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java index dd7651117..88090b639 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java @@ -629,7 +629,20 @@ public class WeCustomerServiceImpl extends ServiceImpl findCustomerTagByFlowerCustomerRelId(String flowerCustomerRelId) { + return this.baseMapper.findCustomerTagByFlowerCustomerRelId(flowerCustomerRelId); + } + } diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml index f3365b3fa..67971c617 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml @@ -315,7 +315,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" wfcr.qq, wc.position, wfcr.remark_corp_name, - wfcr.description + wfcr.description, + wfcr.id as flowerCustomerRelId + FROM we_customer wc LEFT JOIN we_flower_customer_rel wfcr on wc.external_userid=wfcr.external_userid diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeTagGroupMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeTagGroupMapper.xml index a53d9f1b9..2385248ee 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeTagGroupMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeTagGroupMapper.xml @@ -101,5 +101,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + \ No newline at end of file -- Gitee From 924ba74320a1645991042b02776bbc0d8340aed7 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Thu, 4 Mar 2021 20:52:23 +0800 Subject: [PATCH 49/67] fix --- .../linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java index a98037492..235e02e9d 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/WeCommunityNewGroupDto.java @@ -8,6 +8,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.util.List; /** @@ -32,7 +33,7 @@ public class WeCommunityNewGroupDto { @ApiModelProperty("欢迎语") private String welcomeMsg; - @NotEmpty(message = "员工信息不能为空") + @NotNull(message = "员工信息不能为空") /** 使用员工 */ @TableField(exist = false) @ApiModelProperty("使用员工") -- Gitee From e2f6bc2b5513e020d3234385dad819f5ffc1bf04 Mon Sep 17 00:00:00 2001 From: "1539136324@qq.com" Date: Thu, 4 Mar 2021 23:53:36 +0800 Subject: [PATCH 50/67] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=94=BB=E5=83=8F=E6=A0=87=E7=AD=BE=E8=8E=B7=E5=8F=96=EF=BC=8C?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E6=9B=B4=E6=96=B0=EF=BC=9B=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=A4=BE=E4=BA=A4=E5=85=B3=E7=B3=BB=E7=9B=B8=E5=85=B3=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeCustomerPortraitController.java | 50 +++++++++++++++++++ .../wecom/domain/WeCustomerPortrait.java | 3 ++ .../wecom/domain/WeCustomerSocialConn.java | 16 ++++++ .../wecom/mapper/WeCustomerMapper.java | 8 +++ .../wecom/service/IWeCustomerService.java | 4 ++ .../service/impl/WeCustomerServiceImpl.java | 10 +++- .../mapper/wecom/WeCustomerMapper.xml | 29 +++++++++++ 7 files changed, 119 insertions(+), 1 deletion(-) create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerSocialConn.java diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java index a5f81c235..9fe3eec3d 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java @@ -3,12 +3,16 @@ package com.linkwechat.web.controller.wecom; import com.linkwechat.common.core.controller.BaseController; import com.linkwechat.common.core.domain.AjaxResult; import com.linkwechat.wecom.domain.WeCustomerPortrait; +import com.linkwechat.wecom.domain.WeFlowerCustomerTagRel; import com.linkwechat.wecom.domain.WeTagGroup; +import com.linkwechat.wecom.domain.vo.WeMakeCustomerTag; import com.linkwechat.wecom.service.IWeCustomerService; import com.linkwechat.wecom.service.IWeTagGroupService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * @description: 客户画像相关controller * @author: HaoN @@ -78,5 +82,51 @@ public class WeCustomerPortraitController extends BaseController { } + /** + * 更新客户画像标签 + * @param weMakeCustomerTag + * @return + */ + @PostMapping(value = "/updateWeCustomerPorTraitTag") + public AjaxResult updateWeCustomerPorTraitTag(@RequestBody WeMakeCustomerTag weMakeCustomerTag){ + + + + iWeCustomerService.makeLabel(weMakeCustomerTag); + + return AjaxResult.success(); + } + + + /** + * 查看客户添加的员工 + * @param externalUserid + * @return + */ + @GetMapping(value = "/findAddaddEmployes/{externalUserid}") + public AjaxResult findaddEmployes(@PathVariable String externalUserid){ + + + return AjaxResult.success(); + } + + + /** + * 获取用户添加的群 + * @param externalUserid + * @param operUserid + * @return + */ + @GetMapping(value = "/findAddGroupNum") + public AjaxResult findAddGroupNum(String externalUserid,String operUserid){ + + + return AjaxResult.success(); + } + + + + + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java index 46c0be116..316787b1a 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java @@ -42,4 +42,7 @@ public class WeCustomerPortrait { //客户标签 private List weTagGroupList; + //客户社交关系 + private WeCustomerSocialConn socialConn; + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerSocialConn.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerSocialConn.java new file mode 100644 index 000000000..b5a18c249 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerSocialConn.java @@ -0,0 +1,16 @@ +package com.linkwechat.wecom.domain; + +import lombok.Data; + +/** + * 客户社交关系 + */ +@Data +public class WeCustomerSocialConn { + /**添加员工数*/ + private Integer addEmployeNum; + /**添加群聊数*/ + private Integer addGroupNum; + /**共同群聊数*/ + private Integer commonGroupNum; +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java index 88df54693..1d7256f12 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java @@ -5,6 +5,7 @@ import java.util.List; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.linkwechat.wecom.domain.WeCustomer; import com.linkwechat.wecom.domain.WeCustomerPortrait; +import com.linkwechat.wecom.domain.WeCustomerSocialConn; import com.linkwechat.wecom.domain.WeUser; import org.apache.ibatis.annotations.Param; @@ -89,6 +90,13 @@ public interface WeCustomerMapper extends BaseMapper WeCustomerPortrait findCustomerByOperUseridAndCustomerId(@Param("externalUserid") String externalUserid,@Param("operUserid") String operUserid); + /** + * 统计客户社交关系 + * @param externalUserid 客户id + * @param operUserid 员工id + * @return + */ + WeCustomerSocialConn countSocialConn(@Param("externalUserid")String externalUserid,@Param("operUserid")String operUserid); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java index 0af5a9d1c..d2b87a288 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java @@ -127,4 +127,8 @@ public interface IWeCustomerService extends IService */ void updateWeCustomerPortrait(WeCustomerPortrait weCustomerPortrait); + + + + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java index 88090b639..281d8998a 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java @@ -8,7 +8,6 @@ import com.linkwechat.common.constant.WeConstans; import com.linkwechat.common.utils.SecurityUtils; import com.linkwechat.common.utils.SnowFlakeUtil; import com.linkwechat.common.utils.StringUtils; -import com.linkwechat.common.utils.Threads; import com.linkwechat.common.utils.bean.BeanUtils; import com.linkwechat.wecom.client.WeCropTagClient; import com.linkwechat.wecom.client.WeCustomerClient; @@ -639,6 +638,12 @@ public class WeCustomerServiceImpl extends ServiceImpl + + + \ No newline at end of file -- Gitee From af36b5417b9e490a6e33b39e69e4dfedbc3fe35e Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Fri, 5 Mar 2021 00:06:30 +0800 Subject: [PATCH 51/67] fix --- linkwe-common/src/main/java/com/tencent/wework/Finance.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-common/src/main/java/com/tencent/wework/Finance.java b/linkwe-common/src/main/java/com/tencent/wework/Finance.java index 2c74ce95d..935920bef 100644 --- a/linkwe-common/src/main/java/com/tencent/wework/Finance.java +++ b/linkwe-common/src/main/java/com/tencent/wework/Finance.java @@ -118,7 +118,7 @@ public class Finance { System.loadLibrary("libcurl"); System.loadLibrary("WeWorkFinanceSdk"); } else { - System.load("/var/jenkins_home/app/projects/libWeWorkFinanceSdk_Java.so"); + System.load("/data/jenkins_home/app/projects/libWeWorkFinanceSdk_Java.so"); } } -- Gitee From 60473f313d29a4295f645dc7aadd2a3c3b293f98 Mon Sep 17 00:00:00 2001 From: 18356073052 <274131322@qq.com> Date: Mon, 8 Mar 2021 15:45:25 +0800 Subject: [PATCH 52/67] fix some bugs --- .../wecom/service/impl/WeCommunityNewGroupServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java index 797b5b4dd..40dd47d5a 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCommunityNewGroupServiceImpl.java @@ -61,7 +61,7 @@ public class WeCommunityNewGroupServiceImpl extends ServiceImpl Date: Mon, 8 Mar 2021 18:05:48 +0800 Subject: [PATCH 53/67] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeTaskFissionController.java | 12 ++++++++++ .../query/WeTaskFissionStatisticQO.java | 16 +++++++++++++ .../domain/vo/WeTaskFissionDailyDataVO.java | 20 ++++++++++++++++ .../domain/vo/WeTaskFissionStatisticVO.java | 23 +++++++++++++++++++ 4 files changed, 71 insertions(+) create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WeTaskFissionStatisticQO.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionDailyDataVO.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionStatisticVO.java diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java index 83246a1c4..896d1bbb4 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeTaskFissionController.java @@ -13,6 +13,7 @@ import com.linkwechat.common.utils.poi.ExcelUtil; import com.linkwechat.wecom.domain.WeTaskFission; import com.linkwechat.wecom.domain.dto.WeChatUserDTO; import com.linkwechat.wecom.domain.dto.WeTaskFissionPosterDTO; +import com.linkwechat.wecom.domain.query.WeTaskFissionStatisticQO; import com.linkwechat.wecom.service.IWeTaskFissionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -52,6 +53,17 @@ public class WeTaskFissionController extends BaseController { return getDataTable(list); } + /** + * 查询统计信息 + */ + @ApiOperation(value = "查询统计信息", httpMethod = "GET") + @PreAuthorize("@ss.hasPermi('wecom:fission:stat')") + @GetMapping("/stat") + public AjaxResult statistics(WeTaskFissionStatisticQO weTaskFissionStatisticQO) { + //TODO 待完成 + return null; + } + /** * 导出任务宝列表 */ diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WeTaskFissionStatisticQO.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WeTaskFissionStatisticQO.java new file mode 100644 index 000000000..4e3c675fd --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/query/WeTaskFissionStatisticQO.java @@ -0,0 +1,16 @@ +package com.linkwechat.wecom.domain.query; + +import lombok.Data; + +/** + * @author leejoker <1056650571@qq.com> + * @version 1.0 + * @date 2021/3/8 17:55 + */ +@Data +public class WeTaskFissionStatisticQO { + private Boolean seven; + private Boolean thirty; + private String beginTime; + private String endTime; +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionDailyDataVO.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionDailyDataVO.java new file mode 100644 index 000000000..9ffd7e0c6 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionDailyDataVO.java @@ -0,0 +1,20 @@ +package com.linkwechat.wecom.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; + +/** + * @author leejoker <1056650571@qq.com> + * @version 1.0 + * @date 2021/3/8 10:24 + */ +@Data +public class WeTaskFissionDailyDataVO { + @JsonFormat(pattern = "yyyy-MM-dd") + private Date day; + private Integer increase; + private Integer attend; + private Integer complete; +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionStatisticVO.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionStatisticVO.java new file mode 100644 index 000000000..259b56e54 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/vo/WeTaskFissionStatisticVO.java @@ -0,0 +1,23 @@ +package com.linkwechat.wecom.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author leejoker <1056650571@qq.com> + * @version 1.0 + * @date 2021/3/8 10:20 + */ +@Data +public class WeTaskFissionStatisticVO { + private Long id; + private String taskName; + @JsonFormat(pattern = "yyyy-MM-dd") + private Date startTime; + @JsonFormat(pattern = "yyyy-MM-dd") + private Date endTime; + private List data; +} -- Gitee From 1ec8e7dd2b33f9752da9fb08dda510c33b332978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B0=B4=E5=BA=93=E6=B5=AA=E5=AD=90?= <1539136324@qq.com> Date: Mon, 8 Mar 2021 21:27:22 +0800 Subject: [PATCH 54/67] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=94=BB=E5=83=8F,=E6=B7=BB=E5=8A=A0=E4=BA=BA=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=8E=A5=E5=8F=A3=EF=BC=8C=E4=BB=A5=E5=8F=8A=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E7=BE=A4=E7=9A=84=E8=8E=B7=E5=8F=96=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeCustomerPortraitController.java | 22 ++++++++++++--- .../wecom/domain/WeCustomerAddGroup.java | 27 +++++++++++++++++++ .../wecom/domain/WeCustomerAddUser.java | 22 +++++++++++++++ .../wecom/mapper/WeGroupMapper.java | 3 +++ .../linkwechat/wecom/mapper/WeUserMapper.java | 9 +++++++ .../wecom/service/IWeGroupService.java | 3 +++ .../wecom/service/IWeUserService.java | 10 +++++++ .../service/impl/WeGroupServiceImpl.java | 15 ++++++----- .../wecom/service/impl/WeUserServiceImpl.java | 6 +++++ .../mapper/wecom/WeCustomerMapper.xml | 4 ++- .../resources/mapper/wecom/WeGroupMapper.xml | 17 ++++++++++++ .../resources/mapper/wecom/WeUserMapper.xml | 12 +++++++++ 12 files changed, 140 insertions(+), 10 deletions(-) create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerAddGroup.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerAddUser.java diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java index 9fe3eec3d..83eaaa6ce 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java @@ -7,7 +7,9 @@ import com.linkwechat.wecom.domain.WeFlowerCustomerTagRel; import com.linkwechat.wecom.domain.WeTagGroup; import com.linkwechat.wecom.domain.vo.WeMakeCustomerTag; import com.linkwechat.wecom.service.IWeCustomerService; +import com.linkwechat.wecom.service.IWeGroupService; import com.linkwechat.wecom.service.IWeTagGroupService; +import com.linkwechat.wecom.service.IWeUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -31,6 +33,14 @@ public class WeCustomerPortraitController extends BaseController { private IWeTagGroupService weTagGroupService; + @Autowired + private IWeUserService iWeUserService; + + + @Autowired + private IWeGroupService iWeGroupService; + + /** * 根据客户id和当前企业员工id获取员工详细信息 * @param externalUserid @@ -107,7 +117,9 @@ public class WeCustomerPortraitController extends BaseController { public AjaxResult findaddEmployes(@PathVariable String externalUserid){ - return AjaxResult.success(); + return AjaxResult.success( + iWeUserService.findWeUserByCutomerId(externalUserid) + ); } @@ -120,8 +132,9 @@ public class WeCustomerPortraitController extends BaseController { @GetMapping(value = "/findAddGroupNum") public AjaxResult findAddGroupNum(String externalUserid,String operUserid){ - - return AjaxResult.success(); + return AjaxResult.success( + iWeGroupService.findWeGroupByCustomer(operUserid,externalUserid) + ); } @@ -129,4 +142,7 @@ public class WeCustomerPortraitController extends BaseController { + + + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerAddGroup.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerAddGroup.java new file mode 100644 index 000000000..281e51730 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerAddGroup.java @@ -0,0 +1,27 @@ +package com.linkwechat.wecom.domain; + +import lombok.Data; + +import java.util.Date; + +/** + * @description: + * @author: HaoN + * @create: 2021-03-08 17:04 + **/ +@Data +public class WeCustomerAddGroup { + //群id + private String chatId; + //群名 + private String groupName; + //群主名 + private String ownerName; + //群成员数 + private Integer groupMemberNum; + //加入时间 + private Date joinTime; + + //是否共同群 0:不是共同群;1:是共同群 + private Integer commonGroup; +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerAddUser.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerAddUser.java new file mode 100644 index 000000000..010b98fbf --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerAddUser.java @@ -0,0 +1,22 @@ +package com.linkwechat.wecom.domain; + +import lombok.Data; + +import java.util.Date; + +/** + * @description: 客户添加人 + * @author: HaoN + * @create: 2021-03-08 15:47 + **/ +@Data +public class WeCustomerAddUser { + //员工名称 + private String userName; + //员工id + private String userId; + //员工头像 + private String headImageUrl; + //创建时间 + private Date createTime; +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupMapper.java index 39b0afa04..4453ab69f 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupMapper.java @@ -1,6 +1,7 @@ package com.linkwechat.wecom.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.linkwechat.wecom.domain.WeCustomerAddGroup; import com.linkwechat.wecom.domain.WeGroup; import org.apache.ibatis.annotations.Param; @@ -27,4 +28,6 @@ public interface WeGroupMapper extends BaseMapper { // int batchLogicDeleteByIds(@Param("ids") List ids); // // int batchInsetWeGroup(@Param("weGroups") List weGroups); + + List findWeGroupByCustomer(@Param("operUserid") String operUserid,@Param("externalUserid") String externalUserid); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserMapper.java index 49e1b4abe..d4fa04d8f 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeUserMapper.java @@ -1,6 +1,7 @@ package com.linkwechat.wecom.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.linkwechat.wecom.domain.WeCustomerAddUser; import com.linkwechat.wecom.domain.WeUser; import com.linkwechat.wecom.domain.vo.WeAllocateCustomersVo; import com.linkwechat.wecom.domain.vo.WeAllocateGroupsVo; @@ -97,4 +98,12 @@ public interface WeUserMapper extends BaseMapper * @return */ public List getAllocateGroups(WeAllocateGroupsVo weAllocateGroupsVo); + + + /** + * 根据客户id获取客户添加人 + * @param externalUserid + * @return + */ + List findWeUserByCutomerId(@Param("externalUserid") String externalUserid); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupService.java index a043b1462..88b747c96 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupService.java @@ -1,6 +1,7 @@ package com.linkwechat.wecom.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.linkwechat.wecom.domain.WeCustomerAddGroup; import com.linkwechat.wecom.domain.WeGroup; import com.linkwechat.wecom.domain.vo.WeLeaveUserInfoAllocateVo; @@ -26,4 +27,6 @@ public interface IWeGroupService extends IService { void updateWeGroup(String chatId); void deleteWeGroup(String chatId); + + List findWeGroupByCustomer(String operUserid,String externalUserid); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserService.java index 0ecbd8be7..c31b06b54 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeUserService.java @@ -2,10 +2,12 @@ package com.linkwechat.wecom.service; import com.baomidou.mybatisplus.extension.service.IService; import com.dtflys.forest.annotation.Query; +import com.linkwechat.wecom.domain.WeCustomerAddUser; import com.linkwechat.wecom.domain.WeUser; import com.linkwechat.wecom.domain.dto.WeUserInfoDto; import com.linkwechat.wecom.domain.dto.msgaudit.WeMsgAuditDto; import com.linkwechat.wecom.domain.vo.*; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -144,4 +146,12 @@ public interface IWeUserService extends IService * @return */ WeUserInfoVo getUserInfo(String code,String agentId); + + + /** + * 根据客户id获取客户添加人 + * @param externalUserid + * @return + */ + List findWeUserByCutomerId(String externalUserid); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java index 08f3071c2..c6e068828 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java @@ -9,6 +9,7 @@ import com.linkwechat.wecom.client.WeCustomerClient; import com.linkwechat.wecom.client.WeCustomerGroupClient; import com.linkwechat.wecom.client.WeUserClient; import com.linkwechat.wecom.domain.WeAllocateGroup; +import com.linkwechat.wecom.domain.WeCustomerAddGroup; import com.linkwechat.wecom.domain.WeGroup; import com.linkwechat.wecom.domain.WeGroupMember; import com.linkwechat.wecom.domain.dto.AllocateWeGroupDto; @@ -17,7 +18,9 @@ import com.linkwechat.wecom.domain.dto.customer.CustomerGroupList; import com.linkwechat.wecom.domain.dto.customer.CustomerGroupMember; import com.linkwechat.wecom.domain.vo.WeLeaveUserInfoAllocateVo; import com.linkwechat.wecom.mapper.WeGroupMapper; -import com.linkwechat.wecom.service.*; +import com.linkwechat.wecom.service.IWeAllocateGroupService; +import com.linkwechat.wecom.service.IWeGroupMemberService; +import com.linkwechat.wecom.service.IWeGroupService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; @@ -44,11 +47,6 @@ public class WeGroupServiceImpl extends ServiceImpl impl @Autowired private IWeGroupMemberService iWeGroupMemberService; - @Autowired - private IWeUserService weUserService; - - @Autowired - private IWeCustomerService weCustomerService; @Autowired @@ -332,4 +330,9 @@ public class WeGroupServiceImpl extends ServiceImpl impl iWeGroupMemberService.remove(new LambdaQueryWrapper().eq(WeGroupMember::getChatId,chatId)); } + @Override + public List findWeGroupByCustomer(String operUserid, String externalUserid) { + return this.baseMapper.findWeGroupByCustomer(operUserid,externalUserid); + } + } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java index b6fa638b7..b5cc4829f 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeUserServiceImpl.java @@ -8,6 +8,7 @@ import com.linkwechat.common.core.redis.RedisCache; import com.linkwechat.common.exception.wecom.WeComException; import com.linkwechat.wecom.client.WeMsgAuditClient; import com.linkwechat.wecom.client.WeUserClient; +import com.linkwechat.wecom.domain.WeCustomerAddUser; import com.linkwechat.wecom.domain.WeUser; import com.linkwechat.wecom.domain.dto.WeUserInfoDto; import com.linkwechat.wecom.domain.dto.msgaudit.WeMsgAuditDto; @@ -317,5 +318,10 @@ public class WeUserServiceImpl extends ServiceImpl implemen } + @Override + public List findWeUserByCutomerId(String externalUserid) { + return this.baseMapper.findWeUserByCutomerId(externalUserid); + } + } diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml index d8ba803d7..2beb2f3ae 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml @@ -350,7 +350,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) and user_id=#{operUserid} ) AS commonGroupNum FROM we_customer wc WHERE wc.external_userid=#{externalUserid} - + + + \ No newline at end of file diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeGroupMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeGroupMapper.xml index d334a1e55..5bbc87d3c 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeGroupMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeGroupMapper.xml @@ -43,4 +43,21 @@ + + + \ No newline at end of file diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeUserMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeUserMapper.xml index 145043d69..aaba59ca4 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeUserMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeUserMapper.xml @@ -266,6 +266,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + -- Gitee From a90b62199dec6f83e9ae30d6326ca69f9a7e7cfa Mon Sep 17 00:00:00 2001 From: "1539136324@qq.com" Date: Mon, 8 Mar 2021 23:23:27 +0800 Subject: [PATCH 55/67] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=94=BB=E5=83=8F=E8=BD=A8=E8=BF=B9=E7=9B=B8=E5=85=B3=E5=9F=BA?= =?UTF-8?q?=E7=A1=80=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeCustomerPortraitController.java | 33 ++++++++++++++++--- .../wecom/domain/WeCustomerTrajectory.java | 30 +++++++++++++++++ .../mapper/WeCustomerTrajectoryMapper.java | 9 +++++ .../service/IWeCustomerTrajectoryService.java | 8 +++++ .../impl/WeCustomerTrajectoryServiceImpl.java | 11 +++++++ .../wecom/WeCustomerTrajectoryMapper.xml | 9 +++++ 6 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerTrajectory.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerTrajectoryMapper.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerTrajectoryService.java create mode 100644 linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerTrajectoryServiceImpl.java create mode 100644 linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerTrajectoryMapper.xml diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java index 83eaaa6ce..7dc063ea3 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java @@ -1,15 +1,16 @@ package com.linkwechat.web.controller.wecom; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.linkwechat.common.core.controller.BaseController; import com.linkwechat.common.core.domain.AjaxResult; +import com.linkwechat.common.core.page.TableDataInfo; import com.linkwechat.wecom.domain.WeCustomerPortrait; +import com.linkwechat.wecom.domain.WeCustomerTrajectory; import com.linkwechat.wecom.domain.WeFlowerCustomerTagRel; import com.linkwechat.wecom.domain.WeTagGroup; import com.linkwechat.wecom.domain.vo.WeMakeCustomerTag; -import com.linkwechat.wecom.service.IWeCustomerService; -import com.linkwechat.wecom.service.IWeGroupService; -import com.linkwechat.wecom.service.IWeTagGroupService; -import com.linkwechat.wecom.service.IWeUserService; +import com.linkwechat.wecom.service.*; +import org.aspectj.weaver.loadtime.Aj; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -41,6 +42,11 @@ public class WeCustomerPortraitController extends BaseController { private IWeGroupService iWeGroupService; + + @Autowired + private IWeCustomerTrajectoryService iWeCustomerTrajectoryService; + + /** * 根据客户id和当前企业员工id获取员工详细信息 * @param externalUserid @@ -138,6 +144,25 @@ public class WeCustomerPortraitController extends BaseController { } + /** + * 获取轨迹信息 + * @param trajectoryType + * @return + */ + @GetMapping(value = "/findTrajectory") + public TableDataInfo findTrajectory(Integer trajectoryType){ + + startPage(); + + return getDataTable( + iWeCustomerTrajectoryService.list(new LambdaQueryWrapper() + .eq(WeCustomerTrajectory::getTrajectoryType,trajectoryType)) + ); + } + + + + diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerTrajectory.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerTrajectory.java new file mode 100644 index 000000000..476aaa72c --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerTrajectory.java @@ -0,0 +1,30 @@ +package com.linkwechat.wecom.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.sql.Time; +import java.util.Date; + +/** + * 活动轨迹相关 + */ +@Data +@TableName("we_customer_trajectory") +public class WeCustomerTrajectory { + @TableId + private Long id; + //轨迹类型(1:信息动态;2:社交动态;3:活动规则;4:待办动态) + private Integer trajectoryType; + //外部联系人id + private String externalUserid; + //文案内容 + private String content; + //处理日期 + private Date createDate; + //处理时间 + private Time createTime; + //0:正常;1:删除;2:完成 + private Integer status; +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerTrajectoryMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerTrajectoryMapper.java new file mode 100644 index 000000000..df13f2715 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerTrajectoryMapper.java @@ -0,0 +1,9 @@ +package com.linkwechat.wecom.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.linkwechat.wecom.domain.WeCustomerTrajectory; + +public interface WeCustomerTrajectoryMapper extends BaseMapper { + + +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerTrajectoryService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerTrajectoryService.java new file mode 100644 index 000000000..700bc0776 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerTrajectoryService.java @@ -0,0 +1,8 @@ +package com.linkwechat.wecom.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.linkwechat.wecom.domain.WeCustomerTrajectory; + +public interface IWeCustomerTrajectoryService extends IService { + +} diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerTrajectoryServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerTrajectoryServiceImpl.java new file mode 100644 index 000000000..e71773b76 --- /dev/null +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerTrajectoryServiceImpl.java @@ -0,0 +1,11 @@ +package com.linkwechat.wecom.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.linkwechat.wecom.domain.WeCustomerTrajectory; +import com.linkwechat.wecom.mapper.WeCustomerTrajectoryMapper; +import com.linkwechat.wecom.service.IWeCustomerTrajectoryService; +import org.springframework.stereotype.Service; + +@Service +public class WeCustomerTrajectoryServiceImpl extends ServiceImpl implements IWeCustomerTrajectoryService { +} diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerTrajectoryMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerTrajectoryMapper.xml new file mode 100644 index 000000000..f3613c0ed --- /dev/null +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerTrajectoryMapper.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file -- Gitee From 2c6bc4ca5d55ad790bad9a3038b9327c416cd86a Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Tue, 9 Mar 2021 01:15:23 +0800 Subject: [PATCH 56/67] =?UTF-8?q?es=E6=B7=BB=E5=8A=A0=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- linkwe-admin/src/main/resources/application.yml | 2 ++ .../common/config/ElasticSearchConfig.java | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/linkwe-admin/src/main/resources/application.yml b/linkwe-admin/src/main/resources/application.yml index d85d5a0b7..fc0eabdb5 100644 --- a/linkwe-admin/src/main/resources/application.yml +++ b/linkwe-admin/src/main/resources/application.yml @@ -150,6 +150,8 @@ xss: elasticsearch: schema: http address: ${ES_ADDRESS:localhost} + userName: "" + password: "" connectTimeout: 10000 socketTimeout: 10000 connectionRequestTimeout: 10000 diff --git a/linkwe-common/src/main/java/com/linkwechat/common/config/ElasticSearchConfig.java b/linkwe-common/src/main/java/com/linkwechat/common/config/ElasticSearchConfig.java index 61754cb57..69a7b5f5f 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/config/ElasticSearchConfig.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/config/ElasticSearchConfig.java @@ -1,6 +1,10 @@ package com.linkwechat.common.config; import org.apache.http.HttpHost; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.impl.client.BasicCredentialsProvider; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.client.RestHighLevelClient; @@ -30,6 +34,11 @@ public class ElasticSearchConfig { @Value("${elasticsearch.address}") private String address; + @Value("${elasticsearch.userName}") + private String userName; + + @Value("${elasticsearch.password}") + private String password; /** * 连接超时时间 */ @@ -70,6 +79,8 @@ public class ElasticSearchConfig { String port = addr.split(":")[1]; hostLists.add(new HttpHost(host, Integer.parseInt(port), schema)); } + final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); + credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(userName, password)); // 转换成 HttpHost 数组 HttpHost[] httpHost = hostLists.toArray(new HttpHost[]{}); // 构建连接对象 @@ -85,6 +96,7 @@ public class ElasticSearchConfig { builder.setHttpClientConfigCallback(httpClientBuilder -> { httpClientBuilder.setMaxConnTotal(maxConnectNum); httpClientBuilder.setMaxConnPerRoute(maxConnectPerRoute); + httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); return httpClientBuilder; }); return new RestHighLevelClient(builder); -- Gitee From 34bb0432a56cbc88ab8e5687da96157d82e48e2c Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Tue, 9 Mar 2021 12:41:18 +0800 Subject: [PATCH 57/67] =?UTF-8?q?es=E6=89=B9=E9=87=8F=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=88=97=E8=A1=A8=E9=9D=9E=E7=A9=BA?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/elasticsearch/ElasticSearch.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java index f10259846..7c9481648 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java @@ -32,6 +32,7 @@ import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.fetch.subphase.highlight.HighlightField; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; import java.io.IOException; import java.util.ArrayList; @@ -225,7 +226,9 @@ public class ElasticSearch { list.parallelStream().forEach(item -> request.add(new IndexRequest(idxName, "_doc").id(item.getId()) .source(item.getData(), XContentType.JSON))); try { - restHighLevelClient.bulkAsync(request, RequestOptions.DEFAULT, getActionListener(consumer, list, param)); + if (!CollectionUtils.isEmpty(list)) { + restHighLevelClient.bulkAsync(request, RequestOptions.DEFAULT, getActionListener(consumer, list, param)); + } } catch (Exception e) { throw new RuntimeException(e); } @@ -236,7 +239,9 @@ public class ElasticSearch { list.parallelStream().forEach(item -> request.add(new IndexRequest(idxName, "_doc").id(item.getString("msgid")) .source(item, XContentType.JSON))); try { - restHighLevelClient.bulkAsync(request, RequestOptions.DEFAULT, getActionListener(consumer, list)); + if (!CollectionUtils.isEmpty(list)) { + restHighLevelClient.bulkAsync(request, RequestOptions.DEFAULT, getActionListener(consumer, list)); + } } catch (Exception e) { throw new RuntimeException(e); } @@ -246,7 +251,9 @@ public class ElasticSearch { BulkRequest request = new BulkRequest(); list.forEach(item -> request.add(new UpdateRequest(idxName, item.getId()).upsert(item.getData(), XContentType.JSON))); try { - restHighLevelClient.bulk(request, RequestOptions.DEFAULT); + if (!CollectionUtils.isEmpty(list)) { + restHighLevelClient.bulk(request, RequestOptions.DEFAULT); + } } catch (Exception e) { throw new RuntimeException(e); } @@ -268,7 +275,9 @@ public class ElasticSearch { BulkRequest request = new BulkRequest(); idList.forEach(item -> request.add(new DeleteRequest(idxName, "_doc", item.toString()))); try { - restHighLevelClient.bulk(request, RequestOptions.DEFAULT); + if (!CollectionUtils.isEmpty(idList)) { + restHighLevelClient.bulk(request, RequestOptions.DEFAULT); + } } catch (Exception e) { throw new RuntimeException(e); } -- Gitee From 21c5cda417461d1c624eba4f1521ea92d5904171 Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Tue, 9 Mar 2021 12:42:38 +0800 Subject: [PATCH 58/67] =?UTF-8?q?es=E6=89=B9=E9=87=8F=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=88=97=E8=A1=A8=E9=9D=9E=E7=A9=BA?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../linkwechat/common/core/elasticsearch/ElasticSearch.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java index 7c9481648..9ef51acbd 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java @@ -208,7 +208,9 @@ public class ElasticSearch { list.forEach(item -> request.add(new IndexRequest(idxName, "_doc").id(item.getId()) .source(item.getData(), XContentType.JSON))); try { - restHighLevelClient.bulk(request, RequestOptions.DEFAULT); + if (!CollectionUtils.isEmpty(list)) { + restHighLevelClient.bulk(request, RequestOptions.DEFAULT); + } } catch (Exception e) { throw new RuntimeException(e); } -- Gitee From 8ecd7b2e5505f38287c01386ecdca64f5fbff7fb Mon Sep 17 00:00:00 2001 From: leejoker <1056650571@qq.com> Date: Tue, 9 Mar 2021 12:45:45 +0800 Subject: [PATCH 59/67] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/elasticsearch/ElasticSearch.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java index 9ef51acbd..0e278c3cd 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java @@ -208,7 +208,7 @@ public class ElasticSearch { list.forEach(item -> request.add(new IndexRequest(idxName, "_doc").id(item.getId()) .source(item.getData(), XContentType.JSON))); try { - if (!CollectionUtils.isEmpty(list)) { + if (!CollectionUtils.isEmpty(request.requests())) { restHighLevelClient.bulk(request, RequestOptions.DEFAULT); } } catch (Exception e) { @@ -228,7 +228,7 @@ public class ElasticSearch { list.parallelStream().forEach(item -> request.add(new IndexRequest(idxName, "_doc").id(item.getId()) .source(item.getData(), XContentType.JSON))); try { - if (!CollectionUtils.isEmpty(list)) { + if (!CollectionUtils.isEmpty(request.requests())) { restHighLevelClient.bulkAsync(request, RequestOptions.DEFAULT, getActionListener(consumer, list, param)); } } catch (Exception e) { @@ -241,7 +241,7 @@ public class ElasticSearch { list.parallelStream().forEach(item -> request.add(new IndexRequest(idxName, "_doc").id(item.getString("msgid")) .source(item, XContentType.JSON))); try { - if (!CollectionUtils.isEmpty(list)) { + if (!CollectionUtils.isEmpty(request.requests())) { restHighLevelClient.bulkAsync(request, RequestOptions.DEFAULT, getActionListener(consumer, list)); } } catch (Exception e) { @@ -253,7 +253,7 @@ public class ElasticSearch { BulkRequest request = new BulkRequest(); list.forEach(item -> request.add(new UpdateRequest(idxName, item.getId()).upsert(item.getData(), XContentType.JSON))); try { - if (!CollectionUtils.isEmpty(list)) { + if (!CollectionUtils.isEmpty(request.requests())) { restHighLevelClient.bulk(request, RequestOptions.DEFAULT); } } catch (Exception e) { @@ -277,7 +277,7 @@ public class ElasticSearch { BulkRequest request = new BulkRequest(); idList.forEach(item -> request.add(new DeleteRequest(idxName, "_doc", item.toString()))); try { - if (!CollectionUtils.isEmpty(idList)) { + if (!CollectionUtils.isEmpty(request.requests())) { restHighLevelClient.bulk(request, RequestOptions.DEFAULT); } } catch (Exception e) { -- Gitee From e91a9eece6d9c694c32737639fdf8bdae88a482b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B0=B4=E5=BA=93=E6=B5=AA=E5=AD=90?= <1539136324@qq.com> Date: Tue, 9 Mar 2021 17:59:54 +0800 Subject: [PATCH 60/67] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E8=BD=A8=E8=BF=B9?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeCommunityNewGroupController.java | 4 +- .../wecom/WeCustomerPortraitController.java | 53 +++++++++++++++++-- .../linkwechat/common/constant/Constants.java | 5 ++ .../wecom/domain/WeCustomerTrajectory.java | 10 +++- 4 files changed, 65 insertions(+), 7 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java index bbf3c56bb..7364a2e71 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java @@ -70,8 +70,8 @@ public class WeCommunityNewGroupController extends BaseController { @ApiOperation(value = "获取新客自动拉群详细信息", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:query')") @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("newGroupId") @ApiParam("主键ID") Long newGroupId) { - return AjaxResult.success(weCommunityNewGroupService.selectWeCommunityNewGroupById(newGroupId)); + public AjaxResult getInfo(@PathVariable("newGroupId") @ApiParam("主键ID") String newGroupId) { + return AjaxResult.success(weCommunityNewGroupService.selectWeCommunityNewGroupById(new Long(newGroupId))); } /** diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java index 7dc063ea3..ecef0e224 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java @@ -1,6 +1,7 @@ package com.linkwechat.web.controller.wecom; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.linkwechat.common.constant.Constants; import com.linkwechat.common.core.controller.BaseController; import com.linkwechat.common.core.domain.AjaxResult; import com.linkwechat.common.core.page.TableDataInfo; @@ -151,16 +152,62 @@ public class WeCustomerPortraitController extends BaseController { */ @GetMapping(value = "/findTrajectory") public TableDataInfo findTrajectory(Integer trajectoryType){ - startPage(); - return getDataTable( iWeCustomerTrajectoryService.list(new LambdaQueryWrapper() - .eq(WeCustomerTrajectory::getTrajectoryType,trajectoryType)) + .eq(WeCustomerTrajectory::getTrajectoryType,trajectoryType) + .ne(WeCustomerTrajectory::getStatus,Constants.DELETE_CODE)) ); } + /** + * 添加或编辑轨迹 + * @param trajectory + * @return + */ + @PostMapping(value = "/addOrEditWaitHandle") + public AjaxResult addOrEditWaitHandle(@RequestBody WeCustomerTrajectory trajectory){ + + + iWeCustomerTrajectoryService.saveOrUpdate(trajectory); + + return AjaxResult.success(); + } + + + /** + * 删除轨迹 + * @param trajectoryId + * @return + */ + @DeleteMapping(value = "/removeTrajectory/{trajectoryId}") + public AjaxResult removeTrajectory(@PathVariable String trajectoryId){ + iWeCustomerTrajectoryService.updateById(WeCustomerTrajectory.builder() + .id(trajectoryId) + .status(Constants.DELETE_CODE) + .build()); + return AjaxResult.success(); + } + + + /** + * 完成待办 + * @param trajectoryId + * @return + */ + @DeleteMapping(value = "/handleWait/{trajectoryId}") + public AjaxResult handleWait(@PathVariable String trajectoryId){ + iWeCustomerTrajectoryService.updateById(WeCustomerTrajectory.builder() + .id(trajectoryId) + .status(Constants.HANDLE_SUCCESS) + .build()); + return AjaxResult.success(); + } + + + + diff --git a/linkwe-common/src/main/java/com/linkwechat/common/constant/Constants.java b/linkwe-common/src/main/java/com/linkwechat/common/constant/Constants.java index 76911062c..ee3d6c954 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/constant/Constants.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/constant/Constants.java @@ -156,6 +156,11 @@ public class Constants + /**完成待办*/ + public static final String HANDLE_SUCCESS="1"; + + + diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerTrajectory.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerTrajectory.java index 476aaa72c..2b601c253 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerTrajectory.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerTrajectory.java @@ -2,7 +2,10 @@ package com.linkwechat.wecom.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import java.sql.Time; import java.util.Date; @@ -12,9 +15,12 @@ import java.util.Date; */ @Data @TableName("we_customer_trajectory") +@Builder +@AllArgsConstructor +@NoArgsConstructor public class WeCustomerTrajectory { @TableId - private Long id; + private String id; //轨迹类型(1:信息动态;2:社交动态;3:活动规则;4:待办动态) private Integer trajectoryType; //外部联系人id @@ -26,5 +32,5 @@ public class WeCustomerTrajectory { //处理时间 private Time createTime; //0:正常;1:删除;2:完成 - private Integer status; + private String status; } -- Gitee From 0d00455bbe4594d205fd6d25812f40977ba016f8 Mon Sep 17 00:00:00 2001 From: 18356073052 <274131322@qq.com> Date: Tue, 9 Mar 2021 19:25:37 +0800 Subject: [PATCH 61/67] fix some bugs --- .../web/controller/wecom/WeCommunityNewGroupController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java index 7364a2e71..135b81b8a 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCommunityNewGroupController.java @@ -69,7 +69,7 @@ public class WeCommunityNewGroupController extends BaseController { */ @ApiOperation(value = "获取新客自动拉群详细信息", httpMethod = "GET") @PreAuthorize("@ss.hasPermi('wecom:communityNewGroup:query')") - @GetMapping(value = "/{id}") + @GetMapping(value = "/{newGroupId}") public AjaxResult getInfo(@PathVariable("newGroupId") @ApiParam("主键ID") String newGroupId) { return AjaxResult.success(weCommunityNewGroupService.selectWeCommunityNewGroupById(new Long(newGroupId))); } -- Gitee From 1291ab4d6e2898a4914399fdd4852fbe04bb4b85 Mon Sep 17 00:00:00 2001 From: 18356073052 <274131322@qq.com> Date: Tue, 9 Mar 2021 22:57:25 +0800 Subject: [PATCH 62/67] add a upload file media type mp3 --- .../java/com/linkwechat/common/utils/file/MimeTypeUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-common/src/main/java/com/linkwechat/common/utils/file/MimeTypeUtils.java b/linkwe-common/src/main/java/com/linkwechat/common/utils/file/MimeTypeUtils.java index 9001088f2..34a7a985e 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/utils/file/MimeTypeUtils.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/utils/file/MimeTypeUtils.java @@ -32,7 +32,7 @@ public class MimeTypeUtils // 压缩文件 "rar", "zip", "gz", "bz2", // pdf - "pdf" ,"wav","amr","mp4"}; + "pdf" ,"wav","amr","mp4","mp3"}; public static String getExtension(String prefix) { -- Gitee From ca2500f8e7f1c5168f84c426a2dc21c19ad46910 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Tue, 9 Mar 2021 23:07:21 +0800 Subject: [PATCH 63/67] fix --- .../com/linkwechat/common/core/elasticsearch/ElasticSearch.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java index 0e278c3cd..c9dac0b52 100644 --- a/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java +++ b/linkwe-common/src/main/java/com/linkwechat/common/core/elasticsearch/ElasticSearch.java @@ -238,7 +238,7 @@ public class ElasticSearch { public void insertBatchAsync(String idxName, List list, Consumer> consumer) { BulkRequest request = new BulkRequest(); - list.parallelStream().forEach(item -> request.add(new IndexRequest(idxName, "_doc").id(item.getString("msgid")) + list.forEach(item -> request.add(new IndexRequest(idxName, "_doc").id(item.getString("msgid")) .source(item, XContentType.JSON))); try { if (!CollectionUtils.isEmpty(request.requests())) { -- Gitee From 4fafee951bbc05709d98618750e138b291af5711 Mon Sep 17 00:00:00 2001 From: "1539136324@qq.com" Date: Wed, 10 Mar 2021 00:24:16 +0800 Subject: [PATCH 64/67] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=94=BB=E5=83=8F=E6=8E=A5=E5=8F=A3=E7=9B=B8=E5=85=B3=EF=BC=8C?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E5=9F=BA=E6=9C=AC=E8=B5=84=E6=96=99=E8=8E=B7?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/WeCustomerPortraitController.java | 8 ++++---- .../linkwechat/framework/config/SecurityConfig.java | 2 ++ .../linkwechat/wecom/domain/WeCustomerPortrait.java | 2 +- .../com/linkwechat/wecom/mapper/WeCustomerMapper.java | 8 ++++---- .../linkwechat/wecom/service/IWeCustomerService.java | 4 ++-- .../wecom/service/impl/WeCustomerServiceImpl.java | 11 ++++++----- .../main/resources/mapper/wecom/WeCustomerMapper.xml | 8 ++++---- 7 files changed, 23 insertions(+), 20 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java index ecef0e224..b0edf8e77 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java @@ -49,16 +49,16 @@ public class WeCustomerPortraitController extends BaseController { /** - * 根据客户id和当前企业员工id获取员工详细信息 + * 根据客户id和当前企业员工id获取客户详细信息 * @param externalUserid - * @param operUserid + * @param userid * @return */ @GetMapping(value = "/findWeCustomerInfo") - public AjaxResult findWeCustomerInfo(String externalUserid, String operUserid){ + public AjaxResult findWeCustomerInfo(String externalUserid, String userid){ return AjaxResult.success( - iWeCustomerService.findCustomerByOperUseridAndCustomerId(externalUserid,operUserid) + iWeCustomerService.findCustomerByOperUseridAndCustomerId(externalUserid,userid) ); } diff --git a/linkwe-framework/src/main/java/com/linkwechat/framework/config/SecurityConfig.java b/linkwe-framework/src/main/java/com/linkwechat/framework/config/SecurityConfig.java index 0d4f33772..12a14cff8 100644 --- a/linkwe-framework/src/main/java/com/linkwechat/framework/config/SecurityConfig.java +++ b/linkwe-framework/src/main/java/com/linkwechat/framework/config/SecurityConfig.java @@ -126,6 +126,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter .antMatchers("/wecom/user/getUserInfo").anonymous() // .antMatchers("/common/uploadFile2Cos").anonymous() .antMatchers("/wecom/material/temporaryMaterialMediaId").anonymous() + .antMatchers("/wecom/portrait/**").anonymous() + // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated() .and() diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java index 316787b1a..d87e26ecc 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/WeCustomerPortrait.java @@ -15,7 +15,7 @@ public class WeCustomerPortrait { //外部联系人id private String externalUserid; //企业员工id - private String operUserid; + private String userId; //客户与企业员工关系id private String flowerCustomerRelId; //客户昵称 diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java index 1d7256f12..6bce0289c 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCustomerMapper.java @@ -84,19 +84,19 @@ public interface WeCustomerMapper extends BaseMapper /** * 根据外部联系人ID和企业员工ID获取当前客户信息 * @param externalUserid - * @param operUserid + * @param userid * @return */ - WeCustomerPortrait findCustomerByOperUseridAndCustomerId(@Param("externalUserid") String externalUserid,@Param("operUserid") String operUserid); + WeCustomerPortrait findCustomerByOperUseridAndCustomerId(@Param("externalUserid") String externalUserid,@Param("userid") String userid); /** * 统计客户社交关系 * @param externalUserid 客户id - * @param operUserid 员工id + * @param userid 员工id * @return */ - WeCustomerSocialConn countSocialConn(@Param("externalUserid")String externalUserid,@Param("operUserid")String operUserid); + WeCustomerSocialConn countSocialConn(@Param("externalUserid")String externalUserid,@Param("userid")String userid); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java index d2b87a288..f80cc58a3 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeCustomerService.java @@ -115,10 +115,10 @@ public interface IWeCustomerService extends IService /** * 根据外部联系人ID和企业员工ID获取当前客户信息 * @param externalUserid - * @param operUserid + * @param userid * @return */ - WeCustomerPortrait findCustomerByOperUseridAndCustomerId(String externalUserid,String operUserid); + WeCustomerPortrait findCustomerByOperUseridAndCustomerId(String externalUserid,String userid); /** diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java index 281d8998a..3168c12b1 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeCustomerServiceImpl.java @@ -627,9 +627,9 @@ public class WeCustomerServiceImpl extends ServiceImpl() .eq(WeFlowerCustomerRel::getExternalUserid,weCustomerPortrait.getExternalUserid()) - .eq(WeFlowerCustomerRel::getOperUserid,weCustomerPortrait.getOperUserid())); + .eq(WeFlowerCustomerRel::getUserId,weCustomerPortrait.getUserId())); } diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml index 2beb2f3ae..206375751 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeCustomerMapper.xml @@ -316,12 +316,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" wc.position, wfcr.remark_corp_name, wfcr.description, - wfcr.id as flowerCustomerRelId - + wfcr.id as flowerCustomerRelId, + wfcr.user_id FROM we_customer wc LEFT JOIN we_flower_customer_rel wfcr on wc.external_userid=wfcr.external_userid - WHERE wc.external_userid=#{externalUserid} and wfcr.oper_userid=#{operUserid} + WHERE wc.external_userid=#{externalUserid} and wfcr.user_id=#{userid} @@ -347,7 +347,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" chat_id FROM `we_group_member` where union_id=wc.external_userid - ) and user_id=#{operUserid} + ) and user_id=#{userid} ) AS commonGroupNum FROM we_customer wc WHERE wc.external_userid=#{externalUserid} -- Gitee From 539eabe2492fcf99b5cdb00b51d53482ab9959eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B0=B4=E5=BA=93=E6=B5=AA=E5=AD=90?= <1539136324@qq.com> Date: Wed, 10 Mar 2021 10:11:52 +0800 Subject: [PATCH 65/67] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=96=B0=E5=AE=A2=E8=87=AA=E5=8A=A8=E6=8B=89=E7=BE=A4=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java index 65b43fba0..8dc46fefc 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeCommunityNewGroupMapper.java @@ -37,7 +37,7 @@ public interface WeCommunityNewGroupMapper extends BaseMapper idList); + int batchRemoveWeCommunityNewGroupIds(@Param("ids") List idList); /** * 通过id查询新客自动拉群信息列表 -- Gitee From 45dbff0f39ce7ff740b038c477f8bdbc7ecfdda0 Mon Sep 17 00:00:00 2001 From: sunxiwang Date: Wed, 10 Mar 2021 15:12:40 +0800 Subject: [PATCH 66/67] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=BE=A4=E6=88=90?= =?UTF-8?q?=E5=91=98=E5=90=8C=E6=AD=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wecom/service/impl/WeGroupServiceImpl.java | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java index c6e068828..7466c8f80 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java @@ -204,20 +204,11 @@ public class WeGroupServiceImpl extends ServiceImpl impl this.saveOrUpdateBatch(weGroups); List weGroupMemberList = iWeGroupMemberService.list(new LambdaQueryWrapper().in(WeGroupMember::getChatId, weGroups.stream().map(WeGroup::getChatId).collect(Collectors.toList()))); - //存量去重 + if (CollectionUtil.isNotEmpty(weGroupMemberList)) { - List groupMemberList = weGroupMembers.stream().filter(e -> { - for (WeGroupMember weGroupMember : weGroupMemberList) { - if (e.getUserId().equals(weGroupMember.getUserId())) { - return false; - } - } - return true; - }).collect(Collectors.toList()); - iWeGroupMemberService.saveBatch(groupMemberList); - } else { - iWeGroupMemberService.saveBatch(weGroupMembers); + iWeGroupMemberService.removeByIds(weGroupMemberList.stream().map(WeGroupMember::getId).collect(Collectors.toList())); } + iWeGroupMemberService.saveBatch(weGroupMembers); } -- Gitee From 84e610221af58e9cd9eb4124e55b62b79332bf3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B0=B4=E5=BA=93=E6=B5=AA=E5=AD=90?= <1539136324@qq.com> Date: Wed, 10 Mar 2021 18:15:36 +0800 Subject: [PATCH 67/67] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=94=BB=E5=83=8F=E6=8E=A5=E5=8F=A3=E7=9B=B8=E5=85=B3bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/wecom/WeCustomerPortraitController.java | 6 +++--- .../java/com/linkwechat/wecom/mapper/WeGroupMapper.java | 2 +- .../java/com/linkwechat/wecom/service/IWeGroupService.java | 2 +- .../linkwechat/wecom/service/impl/WeGroupServiceImpl.java | 4 ++-- .../src/main/resources/mapper/wecom/WeGroupMapper.xml | 2 +- .../src/main/resources/mapper/wecom/WeUserMapper.xml | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java index b0edf8e77..6c422f5eb 100644 --- a/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java +++ b/linkwe-admin/src/main/java/com/linkwechat/web/controller/wecom/WeCustomerPortraitController.java @@ -133,14 +133,14 @@ public class WeCustomerPortraitController extends BaseController { /** * 获取用户添加的群 * @param externalUserid - * @param operUserid + * @param userId * @return */ @GetMapping(value = "/findAddGroupNum") - public AjaxResult findAddGroupNum(String externalUserid,String operUserid){ + public AjaxResult findAddGroupNum(String externalUserid,String userId){ return AjaxResult.success( - iWeGroupService.findWeGroupByCustomer(operUserid,externalUserid) + iWeGroupService.findWeGroupByCustomer(userId,externalUserid) ); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupMapper.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupMapper.java index 4453ab69f..49f6d3a8d 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupMapper.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/mapper/WeGroupMapper.java @@ -29,5 +29,5 @@ public interface WeGroupMapper extends BaseMapper { // // int batchInsetWeGroup(@Param("weGroups") List weGroups); - List findWeGroupByCustomer(@Param("operUserid") String operUserid,@Param("externalUserid") String externalUserid); + List findWeGroupByCustomer(@Param("userId") String userId,@Param("externalUserid") String externalUserid); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupService.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupService.java index 88b747c96..083eccaf2 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupService.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/IWeGroupService.java @@ -28,5 +28,5 @@ public interface IWeGroupService extends IService { void deleteWeGroup(String chatId); - List findWeGroupByCustomer(String operUserid,String externalUserid); + List findWeGroupByCustomer(String userId,String externalUserid); } diff --git a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java index 7466c8f80..f03cb8f81 100644 --- a/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java +++ b/linkwe-wecom/src/main/java/com/linkwechat/wecom/service/impl/WeGroupServiceImpl.java @@ -322,8 +322,8 @@ public class WeGroupServiceImpl extends ServiceImpl impl } @Override - public List findWeGroupByCustomer(String operUserid, String externalUserid) { - return this.baseMapper.findWeGroupByCustomer(operUserid,externalUserid); + public List findWeGroupByCustomer(String userId, String externalUserid) { + return this.baseMapper.findWeGroupByCustomer(userId,externalUserid); } } diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeGroupMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeGroupMapper.xml index 5bbc87d3c..0061227ed 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeGroupMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeGroupMapper.xml @@ -50,7 +50,7 @@ wu.user_name as ownerName, COUNT(wgm.id) as groupMemberNum, wgm.join_time, - (SELECT count(*) FROM we_group_member wgmr WHERE wgmr.chat_id=wg.chat_id and wgmr.user_id=#{operUserid}) as commonGroup + (SELECT count(*) FROM we_group_member wgmr WHERE wgmr.chat_id=wg.chat_id and wgmr.user_id=#{userId}) as commonGroup FROM `we_group` wg LEFT JOIN we_group_member wgm ON wgm.chat_id=wg.chat_id diff --git a/linkwe-wecom/src/main/resources/mapper/wecom/WeUserMapper.xml b/linkwe-wecom/src/main/resources/mapper/wecom/WeUserMapper.xml index aaba59ca4..a178406ff 100644 --- a/linkwe-wecom/src/main/resources/mapper/wecom/WeUserMapper.xml +++ b/linkwe-wecom/src/main/resources/mapper/wecom/WeUserMapper.xml @@ -274,7 +274,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" wfcr.create_time FROM `we_flower_customer_rel` wfcr - LEFT JOIN we_user wu ON wfcr.user_id = wu.user_id + INNER JOIN we_user wu ON wfcr.user_id = wu.user_id WHERE wfcr.external_userid=#{externalUserid} -- Gitee