来自编程小趴菜的分享~~
希望对你有所帮助~~
你的小小的赞就是对我最大的鼓励~~
有不明白的地方可以私信解答~
注意:第二天的任务还是比较简单的,主要是一些bug的修复,这些bug主要原因是写sql语句的时候,缺少进行相应的判断引起的
策略:首先打开前端项目,使用F12抓包,看请求的路径是哪里,然后找到对应的代码位置进行修改
在serviceImpl实现的代码地方添加对应的逻辑判断
if (asignRecords >= rulePool.getMaxNunmber()) {
int num = 0;
if (rulePool.getMaxNunmber() - asignRecords <= 0) {
num = 0;
}
throw new CustomException("捞取失败!最大保有量(" + rulePool.getMaxNunmber() + "),剩余可以捞取" + (num) + "条线索");
}
完整代码:
/**
* 批量捞取
*
* @param clueIds 线索id
* @param userId 当前用户id
* @return
*/
@Override
public String gain(Long[] clueIds, Long userId) {
// 是否批量捞取
boolean isBatch = clueIds.length > 1 ? true : false;
TbRulePool rulePool = rulePoolService.selectTbRulePoolByType(TbRulePool.RuleType.CLUES.getValue());
// 统计当前分配人所有线索
int asignRecords = assignRecordMapper.countAssignCluesByUser(userId);
// rulePool.getMaxNunmber() 当前分配人的最大捞取量
if (asignRecords >= rulePool.getMaxNunmber()) {
int num = 0;
if (rulePool.getMaxNunmber() - asignRecords <= 0) {
num = 0;
}
throw new CustomException("捞取失败!最大保有量(" + rulePool.getMaxNunmber() + "),剩余可以捞取" + (num) + "条线索");
}
for (int i = 0; i < clueIds.length; i++) {
Long clueId = clueIds[i];
// 超过最大保有量
if (asignRecords + i >= rulePool.getMaxNunmber()) {
throw new CustomException("捞取失败!保有量达到上线,最多选择" + rulePool.getMaxNunmber() + "条线索");
}
// 最近捞取记录
TbAssignRecord assignRecord = assignRecordMapper.selectAssignRecordByAssignId(clueId,
TbAssignRecord.RecordType.CLUES.getValue());
if (assignRecord != null && assignRecord.getUserId().equals(userId)) {
Date repeatGetTime = JobUtils.getDate(rulePool.getRepeatGetTime().intValue(), rulePool.getRepeatType(),
assignRecord.getCreateTime());
// 捞取限制时间内,不让捞取
if (DateUtils.getNowDate().before(repeatGetTime)) {
// 批量捞取跳过
if (isBatch) {
continue;
} else {
throw new CustomException("捞取失败!需要在 " + DateUtils.dateTimeHm(repeatGetTime) + " 后捞取");
}
}
}
// 捞取后下次跟进时间,及状态重置
tbClueMapper.resetNextTimeAndStatus(clueId, TbClue.StatusType.UNFOLLOWED.getValue());
// 新建分配记录
TbAssignRecord tbAssignRecord = addNewRecord(clueId, userId);
Date endDate = HuiKeCrmDateUtils.getEndDateByRule(tbAssignRecord);
tbClueMapper.updateClueEndTimeById(clueId, endDate);
}
return "全部捞取成功";
}
查看代码可以发现,对应的SysUserMapper.xml文件中,没有对手机号搜索的判断,只需要加上就行
解决代码:
AND u.phonenumber = #{phonenumber}
完整代码:
其原理基本上同任务二,主要是xml文件的判断问题
解决代码:
and DATE_FORMAT(create_time,'%Y-%m-%d')
BETWEEN #{beginCreateTime} AND #{endCreateTime}
完整代码:
原理同上
解决代码:
and b.status = #{status}
完整代码:
在对应的xml文件中对这两个字段加上like查询
解决代码:
and clue.id like concat('%', #{id}, '%')
and clue.name like concat('%', #{name}, '%')
and clue.phone like concat('%', #{phone}, '%')
完整代码:
查询时对当前时间进行判断 ,在此提供一个简单方案,在查询结果返回前端时对其进行数据处理,过滤掉失效时间的活动
解决代码:
Date nowTime = new Date();
List collect = tbActivities
.stream().filter(item -> item.getEndTime()
.compareTo(nowTime) == 1).collect(Collectors.toList());
以上就是今天的任务啦,希望对你有所帮助~~