|
|
@@ -0,0 +1,135 @@
|
|
|
+package com.cyksj.service.sys.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.cyksj.common.constant.Constant;
|
|
|
+import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
+import com.cyksj.common.util.Jsons;
|
|
|
+import com.cyksj.mapper.SysCorpFollowMapper;
|
|
|
+import com.cyksj.mapper.SysCorpFollowRelateMapper;
|
|
|
+import com.cyksj.mapper.sys.SysConfigMapper;
|
|
|
+import com.cyksj.model.dto.YhServiceDto;
|
|
|
+import com.cyksj.model.entity.SysConfig;
|
|
|
+import com.cyksj.model.entity.SysCorpFollow;
|
|
|
+import com.cyksj.model.entity.SysCorpFollowRelate;
|
|
|
+import com.cyksj.model.request.sys.SysCorpFollowReq;
|
|
|
+import com.cyksj.service.sys.SysConfigChangeRecordService;
|
|
|
+import com.cyksj.service.sys.SysCorpFollowService;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 项目名: yhlxj
|
|
|
+ * 文件名: SysCorpFollowServiceImpl
|
|
|
+ * 创建者: JavaZou
|
|
|
+ * 创建时间:2024/6/12 11:58
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@RequiredArgsConstructor
|
|
|
+public class SysCorpFollowServiceImpl extends ServiceImpl<SysCorpFollowMapper, SysCorpFollow> implements SysCorpFollowService {
|
|
|
+ private final SysCorpFollowRelateMapper sysCorpFollowRelateMapper;
|
|
|
+
|
|
|
+ private final SysConfigMapper sysConfigMapper;
|
|
|
+
|
|
|
+ private final SysConfigChangeRecordService sysConfigChangeRecordService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Throwable.class)
|
|
|
+ public void saveOrUpdateFollow(SysCorpFollowReq req) throws Exception {
|
|
|
+ SysCorpFollow sysCorpFollow = new SysCorpFollow();
|
|
|
+ sysCorpFollow.setId(req.getMid());
|
|
|
+ sysCorpFollow.setName(req.getName());
|
|
|
+ this.saveOrUpdate(sysCorpFollow);
|
|
|
+
|
|
|
+ SysCorpFollowRelate sysCorpFollowRelate = new SysCorpFollowRelate();
|
|
|
+ sysCorpFollowRelate.setId(req.getSid());
|
|
|
+ sysCorpFollowRelate.setMid(sysCorpFollow.getId());
|
|
|
+ sysCorpFollowRelate.setFollowId(req.getFollowId());
|
|
|
+ sysCorpFollowRelate.setName(req.getFollowName());
|
|
|
+ sysCorpFollowRelate.setImg(req.getImg());
|
|
|
+ sysCorpFollowRelate.setStatus(req.getStatus());
|
|
|
+ if (sysCorpFollowRelate.getId() == null) {
|
|
|
+ sysCorpFollowRelateMapper.insert(sysCorpFollowRelate);
|
|
|
+ } else {
|
|
|
+ SysCorpFollowRelate db = sysCorpFollowRelateMapper.selectById(sysCorpFollowRelate.getId());
|
|
|
+ //更新获客。活码 企业客服
|
|
|
+ updateCorpFollowRelateConfig(sysCorpFollowRelate, db);
|
|
|
+ //更新客服图片
|
|
|
+ updateCorpFollowImg(sysCorpFollowRelate, req.getName());
|
|
|
+ sysCorpFollowRelateMapper.updateById(sysCorpFollowRelate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void delBySid(Long sid) throws Exception {
|
|
|
+ SysCorpFollowRelate sysCorpFollowRelate = sysCorpFollowRelateMapper.selectById(sid);
|
|
|
+ if (sysCorpFollowRelate == null || !sysCorpFollowRelate.getDeleted()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //是否已被选择
|
|
|
+ SysConfig sysConfig = sysConfigMapper.selectOne(Wrappers.lambdaQuery(SysConfig.class)
|
|
|
+ .eq(SysConfig::getSysKey, Constant.serviceKeys.get(0))
|
|
|
+ .last("limit 1"));
|
|
|
+ List<YhServiceDto> yhServiceDtos = Jsons.parseList(sysConfig.getSysValue(), YhServiceDto.class);
|
|
|
+
|
|
|
+ yhServiceDtos.stream().forEach(s -> {
|
|
|
+ List<YhServiceDto.CustomerServiceDto> select = s.getSelect();
|
|
|
+ select.forEach(e -> {
|
|
|
+ String followId = e.getFollowId();
|
|
|
+ if (StrUtil.equals(followId, sysCorpFollowRelate.getFollowId())) {
|
|
|
+ throw BusinessRuntimeException.getInstance("请先移除对应值班客服");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ sysCorpFollowRelate.setDeleted(false);
|
|
|
+ sysCorpFollowRelateMapper.updateById(sysCorpFollowRelate);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void updateCorpFollowRelateConfig(SysCorpFollowRelate sysCorpFollowRelate, SysCorpFollowRelate db) {
|
|
|
+ Long sid = sysCorpFollowRelate.getId();
|
|
|
+ if (!StrUtil.equals(db.getFollowId(), sysCorpFollowRelate.getFollowId())) {
|
|
|
+ //更新活码,获客
|
|
|
+ try {
|
|
|
+ sysConfigChangeRecordService.updateCorpFollowLinkConfig(List.of(Integer.parseInt(sid.toString())));
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新企业值班客服信息
|
|
|
+ */
|
|
|
+ private void updateCorpFollowImg(SysCorpFollowRelate sysCorpFollowRelate, String mName) throws Exception {
|
|
|
+ int sid = sysCorpFollowRelate.getId().intValue();
|
|
|
+ //更新活码,获客
|
|
|
+ SysConfig sysConfig = sysConfigMapper.selectOne(Wrappers.lambdaQuery(SysConfig.class)
|
|
|
+ .eq(SysConfig::getSysKey, Constant.serviceKeys.get(0))
|
|
|
+ .last("limit 1"));
|
|
|
+
|
|
|
+ List<YhServiceDto> yhServiceDtos = Jsons.parseList(sysConfig.getSysValue(), YhServiceDto.class);
|
|
|
+ AtomicBoolean isFlag = new AtomicBoolean(false);
|
|
|
+ yhServiceDtos.forEach(ys -> {
|
|
|
+ ys.getSelect().forEach(select -> {
|
|
|
+ if (select.getIndex().intValue() == sid) {
|
|
|
+ select.setFollowId(sysCorpFollowRelate.getFollowId());
|
|
|
+ select.setImg(sysCorpFollowRelate.getImg());
|
|
|
+ StringBuilder showName = new StringBuilder();
|
|
|
+ showName.append(mName).append("(").append(sysCorpFollowRelate.getName()).append(")");
|
|
|
+ select.setName(showName.toString());
|
|
|
+ if (!isFlag.get()) {
|
|
|
+ isFlag.set(true);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ if (isFlag.get()) {
|
|
|
+ sysConfigMapper.updateById(sysConfig);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|