|
|
@@ -6,10 +6,12 @@ import com.fs.common.exception.base.BaseException;
|
|
|
import com.fs.common.utils.DateUtils;
|
|
|
import com.fs.common.utils.PubFun;
|
|
|
import com.fs.company.domain.CompanyUser;
|
|
|
+import com.fs.company.domain.CompanyVoiceRoboticCallLogAddwx;
|
|
|
import com.fs.company.domain.CompanyVoiceRoboticWx;
|
|
|
import com.fs.company.domain.CompanyWxClient;
|
|
|
import com.fs.company.mapper.CompanyVoiceRoboticWxMapper;
|
|
|
import com.fs.company.mapper.CompanyWxClientMapper;
|
|
|
+import com.fs.company.service.ICompanyVoiceRoboticCallLogAddwxService;
|
|
|
import com.fs.company.service.ICompanyWxClientService;
|
|
|
import com.fs.company.vo.AddWxResultVo;
|
|
|
import com.fs.company.vo.CompanyWxClient4WorkFlowVO;
|
|
|
@@ -46,6 +48,7 @@ public class CompanyWxClientServiceImpl extends ServiceImpl<CompanyWxClientMappe
|
|
|
private final CompanyWxDialogServiceImpl companyWxDialogService;
|
|
|
private final CompanyWxUserMapper companyWxUserMapper;
|
|
|
private final CompanyVoiceRoboticWxMapper companyVoiceRoboticWxMapper;
|
|
|
+ private final ICompanyVoiceRoboticCallLogAddwxService companyVoiceRoboticCallLogAddwxService;
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -191,23 +194,23 @@ public class CompanyWxClientServiceImpl extends ServiceImpl<CompanyWxClientMappe
|
|
|
@Override
|
|
|
public void addWxResult(AddWxResultVo vo) {
|
|
|
CompanyWxClient companyWxClient = baseMapper.selectById(vo.getId());
|
|
|
- if(companyWxClient == null) throw new BaseException("未找到数据");
|
|
|
- companyWxClient.setIsAdd(2);
|
|
|
- companyWxClient.setAddTime(LocalDateTime.now());
|
|
|
- companyWxClient.setUpdateTime(new Date());
|
|
|
- baseMapper.updateById(companyWxClient);
|
|
|
+ if (companyWxClient == null) {
|
|
|
+ throw new BaseException("未找到数据");
|
|
|
+ }
|
|
|
+ markAddWxInProgress(vo.getId());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void addWxTrueResult(AddWxResultVo vo) {
|
|
|
CompanyWxClient companyWxClient = baseMapper.selectById(vo.getId());
|
|
|
- companyWxClient.setIsAdd(1);
|
|
|
- companyWxClient.setAddTime(LocalDateTime.now());
|
|
|
- baseMapper.updateById(companyWxClient);
|
|
|
+ if (companyWxClient == null) {
|
|
|
+ throw new BaseException("未找到数据");
|
|
|
+ }
|
|
|
+ markAddWxSuccess(vo.getId());
|
|
|
log.info("回调数据:{}", companyWxClient);
|
|
|
CompanyUser companyUser = baseMapper.selectCompanyByAccountId(companyWxClient.getRoboticWxId());
|
|
|
CompanyWxUser companyWx = companyWxUserMapper.selectCompanyWxUserByWeixinId(vo.getWxNo());
|
|
|
- if(companyWx == null){
|
|
|
+ if (companyWx == null) {
|
|
|
companyWx = new CompanyWxUser();
|
|
|
companyWx.setAccountId(vo.getAccountId());
|
|
|
companyWx.setCompanyId(companyUser.getCompanyId());
|
|
|
@@ -218,15 +221,94 @@ public class CompanyWxClientServiceImpl extends ServiceImpl<CompanyWxClientMappe
|
|
|
companyWx.setStatus(1);
|
|
|
companyWx.setCreateTime(new Date());
|
|
|
companyWxUserMapper.insertCompanyWxUser(companyWx);
|
|
|
- CompanyVoiceRoboticWx wx = companyVoiceRoboticWxMapper.selectById(companyWxClient.getRoboticWxId());
|
|
|
- wx.setAddNum(wx.getAddNum() + 1);
|
|
|
- companyVoiceRoboticWxMapper.updateById(wx);
|
|
|
- }else{
|
|
|
+ // add_num 已由 markAddWxSuccess 累加,此处不再重复 +1
|
|
|
+ } else {
|
|
|
companyWx.setNickName(vo.getWxName());
|
|
|
companyWxUserMapper.updateCompanyWxUser(companyWx);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void markAddWxInProgress(Long wxClientId) {
|
|
|
+ if (wxClientId == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ lambdaUpdate()
|
|
|
+ .eq(CompanyWxClient::getId, wxClientId)
|
|
|
+ .set(CompanyWxClient::getIsAdd, 2)
|
|
|
+ .set(CompanyWxClient::getAddTime, LocalDateTime.now())
|
|
|
+ .set(CompanyWxClient::getUpdateTime, new Date())
|
|
|
+ .update();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void markAddWxSuccess(Long wxClientId) {
|
|
|
+ if (wxClientId == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ CompanyWxClient existing = getById(wxClientId);
|
|
|
+ if (existing == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ boolean alreadySuccess = Integer.valueOf(1).equals(existing.getIsAdd());
|
|
|
+ lambdaUpdate()
|
|
|
+ .eq(CompanyWxClient::getId, wxClientId)
|
|
|
+ .set(CompanyWxClient::getIsAdd, 1)
|
|
|
+ .set(CompanyWxClient::getSuccessAddTime, LocalDateTime.now())
|
|
|
+ .set(CompanyWxClient::getUpdateTime, new Date())
|
|
|
+ .update();
|
|
|
+ syncAddWxCallLogStatus(wxClientId, 2);
|
|
|
+ if (!alreadySuccess) {
|
|
|
+ incrementRoboticWxAddNum(existing.getRoboticWxId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void incrementRoboticWxAddNum(Long roboticWxId) {
|
|
|
+ if (roboticWxId == null || companyVoiceRoboticWxMapper == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ CompanyVoiceRoboticWx wx = companyVoiceRoboticWxMapper.selectById(roboticWxId);
|
|
|
+ if (wx == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ int current = wx.getAddNum() == null ? 0 : wx.getAddNum();
|
|
|
+ wx.setAddNum(current + 1);
|
|
|
+ companyVoiceRoboticWxMapper.updateById(wx);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("累加加微添加数量失败 - roboticWxId: {}", roboticWxId, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void markAddWxFailed(Long wxClientId) {
|
|
|
+ if (wxClientId == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // HIS 表无 fail_add_time 字段,仅回写 is_add / update_time
|
|
|
+ lambdaUpdate()
|
|
|
+ .eq(CompanyWxClient::getId, wxClientId)
|
|
|
+ .set(CompanyWxClient::getIsAdd, 3)
|
|
|
+ .set(CompanyWxClient::getUpdateTime, new Date())
|
|
|
+ .update();
|
|
|
+ syncAddWxCallLogStatus(wxClientId, 3);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void syncAddWxCallLogStatus(Long wxClientId, int status) {
|
|
|
+ if (companyVoiceRoboticCallLogAddwxService == null || wxClientId == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ companyVoiceRoboticCallLogAddwxService.lambdaUpdate()
|
|
|
+ .eq(CompanyVoiceRoboticCallLogAddwx::getWxClientId, wxClientId)
|
|
|
+ .in(CompanyVoiceRoboticCallLogAddwx::getStatus, Arrays.asList(1, 2))
|
|
|
+ .set(CompanyVoiceRoboticCallLogAddwx::getStatus, status)
|
|
|
+ .update();
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("同步加微日志状态失败 - wxClientId: {}, status: {}", wxClientId, status, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<CompanyWxClient> getAddWxList(List<Long> accountIdList,Integer isWeCom) {
|
|
|
return baseMapper.getAddWxList(accountIdList,isWeCom);
|