|
|
@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.util.RandomUtil;
|
|
|
-import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
@@ -15,6 +14,7 @@ import com.cyksj.config.corp.YHLXWxCorpConfig;
|
|
|
import com.cyksj.mapper.corp.CorpFollowMapper;
|
|
|
import com.cyksj.mapper.corp.kf.*;
|
|
|
import com.cyksj.mapper.manage.cms.CmsUserMapper;
|
|
|
+import com.cyksj.model.dto.CorpKfChangeFollowLogDto;
|
|
|
import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.kf.*;
|
|
|
import com.cyksj.model.request.corp.kf.CorpKfDutyReq;
|
|
|
@@ -189,101 +189,44 @@ public class CorpKfServiceImpl implements CorpKfService {
|
|
|
if (cmsUser != null) {
|
|
|
operator = cmsUser.getNickname();
|
|
|
}
|
|
|
-
|
|
|
- CorpKfFollowChangeRecord corpKfFollowChangeRecord = new CorpKfFollowChangeRecord();
|
|
|
- corpKfFollowChangeRecord.setOpenKfId(openKfId);
|
|
|
- corpKfFollowChangeRecord.setPreValue(Jsons.toJson(before));
|
|
|
- corpKfFollowChangeRecord.setBackValue(Jsons.toJson(after));
|
|
|
- corpKfFollowChangeRecord.setOperator(operator);
|
|
|
- StringBuilder changeStr = new StringBuilder();
|
|
|
- StringBuilder addChangeStr = new StringBuilder();
|
|
|
- StringBuilder subChangStr = new StringBuilder();
|
|
|
-
|
|
|
+ //客服关联
|
|
|
List<SysCorpFollowView> sysCorpFollowViews = beanSearcher.searchAll(SysCorpFollowView.class, MapUtils.builder().build());
|
|
|
Map<String, List<SysCorpFollowView>> followMap = sysCorpFollowViews.stream().collect(Collectors.groupingBy(SysCorpFollowView::getFollowId));
|
|
|
Map<Integer, List<CorpKfAccountFollow>> bfDutyWeekFollowMap = before.stream().collect(Collectors.groupingBy(CorpKfAccountFollow::getDutyWeek));
|
|
|
Map<Integer, List<CorpKfAccountFollow>> afDutyWeekFollowMap = after.stream().collect(Collectors.groupingBy(CorpKfAccountFollow::getDutyWeek));
|
|
|
|
|
|
- //增加
|
|
|
- if (after.size() > before.size()) {
|
|
|
- for (CorpKfAccountFollow af : after) {
|
|
|
- Integer dutyWeek = af.getDutyWeek();
|
|
|
- List<CorpKfAccountFollow> corpKfAccountFollows = bfDutyWeekFollowMap.get(dutyWeek);
|
|
|
- if (CollUtil.isEmpty(corpKfAccountFollows)) {
|
|
|
- changeStr.append(getDutyWeekName(dutyWeek));
|
|
|
- addChangeStr.append("增加");
|
|
|
- List<String> bfFollowIds = Jsons.parseList(af.getUserIdList(), String.class);
|
|
|
- for (int i1 = 0; i1 < bfFollowIds.size(); i1++) {
|
|
|
- String afUserId = bfFollowIds.get(i1);
|
|
|
- SysCorpFollowView sysCorpFollowView = followMap.get(afUserId).get(0);
|
|
|
- addChangeStr.append(String.format("%s(%s)", sysCorpFollowView.getName(), sysCorpFollowView.getFollowName()));
|
|
|
- if (i1 != bfFollowIds.size() - 1) {
|
|
|
- addChangeStr.append("、");
|
|
|
- }
|
|
|
- }
|
|
|
+ StringBuilder changeStr = new StringBuilder();
|
|
|
+ for (Integer dutyWeek : bfDutyWeekFollowMap.keySet()) {
|
|
|
+ List<CorpKfAccountFollow> bfFollow = bfDutyWeekFollowMap.get(dutyWeek);
|
|
|
+ List<CorpKfAccountFollow> afFollow = Optional.ofNullable(afDutyWeekFollowMap.get(dutyWeek)).orElse(new ArrayList<>());
|
|
|
+ CorpKfChangeFollowLogDto corpKfWeekChange = getCorpKfWeekChange(bfFollow, afFollow, dutyWeek, followMap);
|
|
|
+ if (corpKfWeekChange != null) {
|
|
|
+ if (changeStr.length() > 0) {
|
|
|
+ changeStr.append(";");
|
|
|
}
|
|
|
+ changeStr.append(corpKfWeekChange.toChangeString());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- for (int i = 0; i < before.size(); i++) {
|
|
|
- CorpKfAccountFollow bfCorpKfAccountFollow = before.get(i);
|
|
|
- Integer bfDutyWeek = bfCorpKfAccountFollow.getDutyWeek();
|
|
|
- List<CorpKfAccountFollow> afCorpKfAccountFollows = afDutyWeekFollowMap.get(bfDutyWeek);
|
|
|
- //删除
|
|
|
- if (CollUtil.isEmpty(afCorpKfAccountFollows)) {
|
|
|
- changeStr.append(getDutyWeekName(bfDutyWeek));
|
|
|
- subChangStr.append("移除");
|
|
|
- List<String> bfFollowIds = Jsons.parseList(bfCorpKfAccountFollow.getUserIdList(), String.class);
|
|
|
- for (int i1 = 0; i1 < bfFollowIds.size(); i1++) {
|
|
|
- String afUserId = bfFollowIds.get(i1);
|
|
|
- SysCorpFollowView sysCorpFollowView = followMap.get(afUserId).get(0);
|
|
|
- subChangStr.append(String.format("%s(%s)", sysCorpFollowView.getName(), sysCorpFollowView.getFollowName()));
|
|
|
- if (i1 != bfFollowIds.size() - 1) {
|
|
|
- subChangStr.append("、");
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- //变更
|
|
|
- String bfUserStr = bfCorpKfAccountFollow.getUserIdList();
|
|
|
- String afUserStr = afCorpKfAccountFollows.get(0).getUserIdList();
|
|
|
- if (StrUtil.equals(bfUserStr, afUserStr)) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- changeStr.append(getDutyWeekName(bfDutyWeek));
|
|
|
- List<String> bfUserIds = Jsons.parseList(bfUserStr, String.class);
|
|
|
- List<String> afUserIds = Jsons.parseList(afUserStr, String.class);
|
|
|
- for (String userId : bfUserIds) {
|
|
|
- if (!afUserIds.contains(userId)) {
|
|
|
- if (!subChangStr.toString().contains("移除")) {
|
|
|
- subChangStr.append("移除");
|
|
|
- }
|
|
|
- if (subChangStr.length() > 2) {
|
|
|
- subChangStr.append("、");
|
|
|
- }
|
|
|
- SysCorpFollowView sysCorpFollowView = followMap.get(userId).get(0);
|
|
|
- subChangStr.append(String.format("%s(%s)", sysCorpFollowView.getName(), sysCorpFollowView.getFollowName()));
|
|
|
- }
|
|
|
- }
|
|
|
- for (String afterUserId : afUserIds) {
|
|
|
- if (!bfUserIds.contains(afterUserId)) {
|
|
|
- if (!addChangeStr.toString().contains("增加")) {
|
|
|
- addChangeStr.append("增加");
|
|
|
- }
|
|
|
- if (addChangeStr.length() > 2) {
|
|
|
- addChangeStr.append("、");
|
|
|
- }
|
|
|
- SysCorpFollowView sysCorpFollowView = followMap.get(afterUserId).get(0);
|
|
|
- subChangStr.append(String.format("%s(%s)", sysCorpFollowView.getName(), sysCorpFollowView.getFollowName()));
|
|
|
- }
|
|
|
+ for (Integer dutyWeek : afDutyWeekFollowMap.keySet()) {
|
|
|
+ List<CorpKfAccountFollow> afFollow = afDutyWeekFollowMap.get(dutyWeek);
|
|
|
+ List<CorpKfAccountFollow> bfFollow = Optional.ofNullable(bfDutyWeekFollowMap.get(dutyWeek)).orElse(new ArrayList<>());
|
|
|
+ if (bfFollow.size() > 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ CorpKfChangeFollowLogDto corpKfWeekChange = getCorpKfWeekChange(bfFollow, afFollow, dutyWeek, followMap);
|
|
|
+ if (corpKfWeekChange != null) {
|
|
|
+ if (changeStr.length() > 0) {
|
|
|
+ changeStr.append(";");
|
|
|
}
|
|
|
+ changeStr.append(corpKfWeekChange.toChangeString());
|
|
|
}
|
|
|
}
|
|
|
- if (addChangeStr.length() > 0 || subChangStr.length() > 0) {
|
|
|
- changeStr.append(addChangeStr);
|
|
|
- if (addChangeStr.length() > 0 && subChangStr.length() > 0) {
|
|
|
- changeStr.append("-");
|
|
|
- }
|
|
|
- changeStr.append(subChangStr);
|
|
|
+ if (changeStr.length() > 0) {
|
|
|
+ CorpKfFollowChangeRecord corpKfFollowChangeRecord = new CorpKfFollowChangeRecord();
|
|
|
+ corpKfFollowChangeRecord.setOpenKfId(openKfId);
|
|
|
+ corpKfFollowChangeRecord.setPreValue(Jsons.toJson(before));
|
|
|
+ corpKfFollowChangeRecord.setBackValue(Jsons.toJson(after));
|
|
|
+ corpKfFollowChangeRecord.setOperator(operator);
|
|
|
corpKfFollowChangeRecord.setChangeStr(changeStr.toString());
|
|
|
corpKfFollowChangeRecordMapper.insert(corpKfFollowChangeRecord);
|
|
|
}
|
|
|
@@ -489,24 +432,46 @@ public class CorpKfServiceImpl implements CorpKfService {
|
|
|
return thisHourDutyFollows;
|
|
|
}
|
|
|
|
|
|
- public String getDutyWeekName(Integer week) {
|
|
|
- switch (week) {
|
|
|
- case 1:
|
|
|
- return "周日";
|
|
|
- case 2:
|
|
|
- return "周一";
|
|
|
- case 3:
|
|
|
- return "周二";
|
|
|
- case 4:
|
|
|
- return "周三";
|
|
|
- case 5:
|
|
|
- return "周四";
|
|
|
- case 6:
|
|
|
- return "周五";
|
|
|
- case 7:
|
|
|
- return "周六";
|
|
|
- default:
|
|
|
- return null;
|
|
|
+ public CorpKfChangeFollowLogDto getCorpKfWeekChange(List<CorpKfAccountFollow> bfFollow, List<CorpKfAccountFollow> afFollow, Integer dutyWeek, Map<String, List<SysCorpFollowView>> followMap) {
|
|
|
+ List<String> beforeSelect = new ArrayList<>();
|
|
|
+ List<String> afterSelect = new ArrayList<>();
|
|
|
+
|
|
|
+ Set<String> bfFollowSet = new HashSet<>();
|
|
|
+ bfFollow.forEach(bf -> {
|
|
|
+ try {
|
|
|
+ bfFollowSet.addAll(Jsons.parseList(bf.getUserIdList(), String.class));
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ Set<String> afFollowSet = new HashSet<>();
|
|
|
+ afFollow.forEach(af -> {
|
|
|
+ try {
|
|
|
+ afFollowSet.addAll(Jsons.parseList(af.getUserIdList(), String.class));
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //移除
|
|
|
+ for (String bfUserId : bfFollowSet) {
|
|
|
+ if (!afFollowSet.contains(bfUserId)) {
|
|
|
+ SysCorpFollowView sysCorpFollowView = followMap.get(bfUserId).get(0);
|
|
|
+ beforeSelect.add(String.format("%s(%s)", sysCorpFollowView.getName(), sysCorpFollowView.getFollowName()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //增加
|
|
|
+ for (String afUserId : afFollowSet) {
|
|
|
+ if (!bfFollowSet.contains(afUserId)) {
|
|
|
+ SysCorpFollowView sysCorpFollowView = followMap.get(afUserId).get(0);
|
|
|
+ afterSelect.add(String.format("%s(%s)", sysCorpFollowView.getName(), sysCorpFollowView.getFollowName()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (beforeSelect.size() > 0 || afterSelect.size() > 0) {
|
|
|
+ CorpKfChangeFollowLogDto corpKfChangeFollowLogDto = new CorpKfChangeFollowLogDto();
|
|
|
+ corpKfChangeFollowLogDto.setDutyWeek(dutyWeek);
|
|
|
+ corpKfChangeFollowLogDto.setBeforeSelect(beforeSelect);
|
|
|
+ corpKfChangeFollowLogDto.setAfterSelect(afterSelect);
|
|
|
+ return corpKfChangeFollowLogDto;
|
|
|
}
|
|
|
+ return null;
|
|
|
}
|
|
|
}
|