|
|
@ -1,6 +1,7 @@
|
|
|
|
package com.baiye.modules.distribute.service.impl;
|
|
|
|
package com.baiye.modules.distribute.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
import cn.hutool.core.text.StrPool;
|
|
|
|
import cn.hutool.core.text.StrPool;
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
@ -12,6 +13,7 @@ import com.baiye.exception.BadRequestException;
|
|
|
|
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
|
|
|
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
|
|
|
import com.baiye.modules.distribute.converter.CustomConverter;
|
|
|
|
import com.baiye.modules.distribute.converter.CustomConverter;
|
|
|
|
import com.baiye.modules.distribute.dto.*;
|
|
|
|
import com.baiye.modules.distribute.dto.*;
|
|
|
|
|
|
|
|
import com.baiye.modules.distribute.entity.ClueEntity;
|
|
|
|
import com.baiye.modules.distribute.entity.CustomEntity;
|
|
|
|
import com.baiye.modules.distribute.entity.CustomEntity;
|
|
|
|
import com.baiye.modules.distribute.entity.CustomStoreEntity;
|
|
|
|
import com.baiye.modules.distribute.entity.CustomStoreEntity;
|
|
|
|
import com.baiye.modules.distribute.entity.StoreEntity;
|
|
|
|
import com.baiye.modules.distribute.entity.StoreEntity;
|
|
|
@ -183,6 +185,10 @@ public class CustomServiceImpl extends ExtendServiceImpl<CustomMapper, CustomEnt
|
|
|
|
if (ObjectUtil.isNotNull(customEntity) || customEntity.getEnrollStatus() != DefaultNumberConstants.TWO_NUMBER) {
|
|
|
|
if (ObjectUtil.isNotNull(customEntity) || customEntity.getEnrollStatus() != DefaultNumberConstants.TWO_NUMBER) {
|
|
|
|
String phone = AESUtils.encrypt(customEntity.getCustomNid(), securityProperties.getPasswordSecretKey());
|
|
|
|
String phone = AESUtils.encrypt(customEntity.getCustomNid(), securityProperties.getPasswordSecretKey());
|
|
|
|
Long companyId = customEntity.getCompanyId();
|
|
|
|
Long companyId = customEntity.getCompanyId();
|
|
|
|
|
|
|
|
List<ClueEntity> clueEntityList = clueService.findByCompanyIdAndNid(companyId, phone);
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(clueEntityList)) {
|
|
|
|
|
|
|
|
throw new BadRequestException("该资源已分发,请勿重复操作!");
|
|
|
|
|
|
|
|
}
|
|
|
|
if (status == 0) {
|
|
|
|
if (status == 0) {
|
|
|
|
Gson gson = new Gson();
|
|
|
|
Gson gson = new Gson();
|
|
|
|
AddressDTO address = new AddressDTO();
|
|
|
|
AddressDTO address = new AddressDTO();
|
|
|
@ -310,13 +316,47 @@ public class CustomServiceImpl extends ExtendServiceImpl<CustomMapper, CustomEnt
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
|
|
|
public Boolean recallFormById(Long id) {
|
|
|
|
|
|
|
|
// 偏移十分钟
|
|
|
|
|
|
|
|
CustomEntity custom = this.getById(id);
|
|
|
|
|
|
|
|
DateTime offsetMinute = DateUtil.offsetMinute(DateUtil.date(), -DefaultNumberConstants.TEN_NUMBER);
|
|
|
|
|
|
|
|
if (ObjectUtil.isNull(custom) ||
|
|
|
|
|
|
|
|
custom.getEnrollStatus() != DefaultNumberConstants.TWO_NUMBER ||
|
|
|
|
|
|
|
|
custom.getDistributeTime().before(offsetMinute)) {
|
|
|
|
|
|
|
|
throw new BadRequestException("已超出最大撤回时间!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 客户id查询线索
|
|
|
|
|
|
|
|
List<ClueVO> clueList = clueService.findCustomIdAndCreate(id, SecurityUtils.getCurrentUserId());
|
|
|
|
|
|
|
|
if (ObjectUtil.isNull(custom) || CollUtil.isEmpty(clueList)) {
|
|
|
|
|
|
|
|
throw new BadRequestException("该线索不存在或已分发!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
for (ClueVO vo : clueList) {
|
|
|
|
|
|
|
|
// 回退余额
|
|
|
|
|
|
|
|
Boolean result = sysUserService.addQuantity(vo.getAssignedBy());
|
|
|
|
|
|
|
|
if (result.equals(Boolean.TRUE)) {
|
|
|
|
|
|
|
|
// 删除线索
|
|
|
|
|
|
|
|
clueService.removeById(Long.parseLong(vo.getClueId()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 修改状态
|
|
|
|
|
|
|
|
// customStoreService.deleteByCustomId(id);
|
|
|
|
|
|
|
|
custom.setUpdateTime(LocalDateTime.now());
|
|
|
|
|
|
|
|
custom.setSalesmanUserId(Lists.newArrayList());
|
|
|
|
|
|
|
|
custom.setEnrollStatus(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
|
|
|
return SqlHelper.retBool(baseMapper.updateById(custom));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private CustomEntity getCustomEntity(CustomEntity entity, Long companyId, String username) {
|
|
|
|
private CustomEntity getCustomEntity(CustomEntity entity, Long companyId, String username) {
|
|
|
|
String code = LetterConst.D.concat(StrPool.DASHED.concat(DateUtil.format(DateUtil.date(), DateConst.YYYY_MM_DD)));
|
|
|
|
String code = LetterConst.D.concat(StrPool.DASHED.concat(DateUtil.format(DateUtil.date(), DateConst.YYYY_MM_DD)));
|
|
|
|
String maxCode = baseMapper.selectMaxBatchNoByCompanyId(code, companyId);
|
|
|
|
String maxCode = baseMapper.selectMaxBatchNoByCompanyId(code, companyId);
|
|
|
|
// 拼接编号
|
|
|
|
// 拼接编号
|
|
|
|
String newCode = StringUtils.isNotBlank(maxCode) ?
|
|
|
|
String newCode = StringUtils.isNotBlank(maxCode) ?
|
|
|
|
code.concat(SerialCode.getNum(Integer.parseInt
|
|
|
|
code.concat(SerialCode.getNum(Integer.parseInt
|
|
|
|
(maxCode.substring(10)))) : code.concat(LetterConst.ONE);
|
|
|
|
(maxCode.substring(DefaultNumberConstants.TEN_NUMBER)))) : code.concat(LetterConst.ONE);
|
|
|
|
entity.setBatchNo(newCode);
|
|
|
|
entity.setBatchNo(newCode);
|
|
|
|
entity.setCompanyId(companyId);
|
|
|
|
entity.setCompanyId(companyId);
|
|
|
|
entity.setEnterName(username);
|
|
|
|
entity.setEnterName(username);
|
|
|
@ -338,10 +378,13 @@ public class CustomServiceImpl extends ExtendServiceImpl<CustomMapper, CustomEnt
|
|
|
|
String detailAddress = customDTO.getDetailAddress();
|
|
|
|
String detailAddress = customDTO.getDetailAddress();
|
|
|
|
String radius = customDTO.getRadius();
|
|
|
|
String radius = customDTO.getRadius();
|
|
|
|
List<CustomStoreEntity> customStoreEntities = customDTO.getCustomStoreEntities();
|
|
|
|
List<CustomStoreEntity> customStoreEntities = customDTO.getCustomStoreEntities();
|
|
|
|
if (StringUtils.isBlank(economize) || StringUtils.isBlank(market)) throw new BadRequestException("省市不能为空");
|
|
|
|
if (StringUtils.isBlank(economize) || StringUtils.isBlank(market))
|
|
|
|
|
|
|
|
throw new BadRequestException("省市不能为空");
|
|
|
|
if (StringUtils.isBlank(detailAddress)) throw new BadRequestException("详细地址不能为空");
|
|
|
|
if (StringUtils.isBlank(detailAddress)) throw new BadRequestException("详细地址不能为空");
|
|
|
|
if (StringUtils.isBlank(radius)) throw new BadRequestException("半径不能为空");
|
|
|
|
if (StringUtils.isBlank(radius)) throw new BadRequestException("半径不能为空");
|
|
|
|
if (CollUtil.isEmpty(customStoreEntities)) throw new BadRequestException("门店信息不能为空");
|
|
|
|
if (CollUtil.isEmpty(customStoreEntities)) throw new BadRequestException("门店信息不能为空");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|