日志逻辑修改,打日志

master
yqy 1 year ago
parent 8c3867a249
commit d49173a4c3

@ -0,0 +1,36 @@
package com.baiye.aspect;
import com.baiye.common.CommonLog;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
import java.util.Arrays;
/**
* @Author YQY
* @Date 2023/5/24
*/
@Component
@Aspect
@Slf4j
public class BadRequestExceptionAspect {
/**
*
*/
@Pointcut("execution(* com.baiye.exception.handler.GlobalExceptionHandler.badRequestException(..))")
public void badRequestExceptionPointcut() {
}
@Before("badRequestExceptionPointcut()")
public void bb(JoinPoint joinPoint) {
Object[] args = joinPoint.getArgs();
if (args.length > 0) {
String str = Arrays.toString(args);
int index = str.indexOf(':');
if (index != -1) CommonLog.error(str.substring(index + 1, str.length() - 1));
}
}
}

@ -0,0 +1,45 @@
package com.baiye.aspect;
import com.baiye.common.CommonLog;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.slf4j.MDC;
import org.springframework.stereotype.Component;
/**
* MDC
* @Author YQY
* @Date 2023/5/24
*/
@Component
@Aspect
public class ClearMDCAspect {
/**
* 线
*/
@Pointcut("@annotation(org.springframework.scheduling.annotation.Async)")
public void asyncPointcut() {
}
/**
*
*/
@Pointcut("@annotation(org.springframework.scheduling.annotation.Scheduled)")
public void scheduledPointcut() {
}
@AfterReturning("asyncPointcut() || scheduledPointcut()")
public void clearAspectMDCAfterReturning(JoinPoint joinPoint) {
MDC.clear();
}
@AfterThrowing(pointcut = "asyncPointcut() || scheduledPointcut()", throwing = "e")
public void clearAspectMDCAfterThrowing(JoinPoint joinPoint, Throwable e) {
CommonLog.error(e.getMessage());
MDC.clear();
}
}

@ -3,6 +3,7 @@ package com.baiye.aspect;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.baiye.annotation.Log;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.LogType;
import com.baiye.dto.LogReqDTO;
import com.baiye.feign.SystemClient;
@ -78,22 +79,24 @@ public class LogAspect {
/**
*
*/
@AfterThrowing(pointcut = "logPointcut()", throwing = "e")
public void logAfterThrowing(JoinPoint joinPoint, Throwable e) {
@AfterThrowing(value = "@annotation(controllerLog)", throwing = "e")
public void logAfterThrowing(JoinPoint joinPoint, Log controllerLog, Throwable e) {
try {
HttpServletRequest request = RequestHolder.getHttpServletRequest();
String ip = RequestUtils.getIp(request);
LogReqDTO logReqDTO = this.install(joinPoint, null, ip, e);
logReqDTO.setLogType(LogType.ERROR);
logReqDTO.setTime(System.currentTimeMillis() - currentTime.get());
logReqDTO.setBrowser(RequestUtils.getBrowser(request));
logReqDTO.setExceptionDetail(ThrowableUtil.getStackTrace(e).getBytes());
currentTime.remove();
systemClient.save(logReqDTO);
}catch (Exception exception){
log.error("LogAspect 异常通知error: {}",ThrowableUtil.getStackTrace(exception));
// 插入数据库的日志
if (controllerLog.isSaveMySQL()) {
LogReqDTO logReqDTO = this.install(joinPoint, null, ip, e);
logReqDTO.setLogType(LogType.ERROR);
logReqDTO.setTime(System.currentTimeMillis() - currentTime.get());
logReqDTO.setBrowser(RequestUtils.getBrowser(request));
logReqDTO.setExceptionDetail(ThrowableUtil.getStackTrace(e).getBytes());
currentTime.remove();
systemClient.save(logReqDTO);
}
} catch (Exception exception) {
log.error("异常通知内部错误");
}
}
@ -110,7 +113,7 @@ public class LogAspect {
String reqMethod = ServletUtil.getRequest().getMethod();
if (e == null){
if (e == null) {
MDC.put("userId", this.getUserId());
MDC.put("userName", this.getUsername());
MDC.put("reqIp", ip);
@ -118,7 +121,7 @@ public class LogAspect {
MDC.put("params", reqParams);
MDC.put("reqMethod", reqMethod);
MDC.put("reqUrl", Objects.requireNonNull(ServletUtil.getRequest()).getRequestURI());
if (controllerLog != null){
if (controllerLog != null) {
MDC.put("businessPartyType", controllerLog.BusinessPartyType());
logReqDTO.setDescription(controllerLog.value());
}
@ -140,7 +143,9 @@ public class LogAspect {
logReqDTO.setUsername(getUsername());
if (e == null) {
MDC.put("systemType", String.valueOf(DefaultNumberConstants.ONE_NUMBER));
log.info("{}", controllerLog.value());
MDC.remove("systemType");
}
return logReqDTO;
}

@ -2,6 +2,7 @@ package com.baiye.common;
import cn.hutool.core.util.IdUtil;
import com.baiye.config.LogInterceptorHandler;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.LogType;
import com.baiye.util.SecurityUtils;
import lombok.extern.slf4j.Slf4j;
@ -16,6 +17,7 @@ import org.slf4j.MDC;
public class CommonLog {
private static final String TRACE_ID = "traceId";
private static final String SYSTEM_TYPE = "systemType";
/**
* traceId
@ -115,6 +117,14 @@ public class CommonLog {
printType(message, userId, LogType.INFO);
}
/**
* userId ,traceId,traceId
*/
public static void infoUserTraceId(String message, Long userId, String traceId) {
updateTraceId(traceId);
printType(message, userId, LogType.INFO);
}
/**
*
*
@ -135,6 +145,7 @@ public class CommonLog {
log.info("{}", message);
break;
}
MDC.remove(SYSTEM_TYPE);
}
/**
@ -157,6 +168,9 @@ public class CommonLog {
long id = IdUtil.getSnowflake(9, 9).nextId();
MDC.put(TRACE_ID, id + "-0");
}
if (StringUtils.isBlank(MDC.get(SYSTEM_TYPE))){
MDC.put(SYSTEM_TYPE, String.valueOf(DefaultNumberConstants.ONE_NUMBER));
}
}
/**

@ -29,20 +29,20 @@ public class LogInterceptorHandler implements HandlerInterceptor {
} else {
MDC.put(TRACE_ID, traceId);
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView){
//防止内存泄露, 字段remove查看logback-spring.xml
MDC.remove("traceId");
MDC.remove("userId");
MDC.remove("userName");
MDC.remove("params");
MDC.remove("reqUrl");
MDC.remove("reqMethod");
MDC.remove("reqIp");
MDC.remove("businessPartyType");
// MDC.remove("traceId");
// MDC.remove("userId");
// MDC.remove("userName");
// MDC.remove("params");
// MDC.remove("reqUrl");
// MDC.remove("reqMethod");
// MDC.remove("reqIp");
// MDC.remove("businessPartyType");
MDC.clear();
}
}

@ -83,7 +83,9 @@
<!--接口请求人IP -->
"reqIp": "%X{reqIp}",
<!--业务方 -->
"businessPartyType": "%X{businessPartyType}"
"businessPartyType": "%X{businessPartyType}" ,
<!--系统日志类型 -->
"systemType": "%X{systemType}"
}
</pattern>
</pattern>

@ -1,8 +1,8 @@
package com.baiye.modules.platform.rest;
import com.baiye.annotation.Log;
import com.baiye.http.CommonResponse;
import com.baiye.model.dto.ActivationCodeQueryCriteria;
import com.baiye.model.dto.TaskQueryCriteria;
import com.baiye.modules.platform.service.ActivationCodeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@ -25,6 +25,7 @@ public class ActivationCodeController {
@ApiOperation("生成激活码")
@GetMapping("/generate")
@Log("生成激活码")
public CommonResponse<Object> generateActivationCode(@RequestParam("codeNum") int codeNum, @RequestParam("codeType") int codeType){
activationCodeService.generateActivationCode(codeNum, codeType);
return CommonResponse.createBySuccess();

@ -1,5 +1,6 @@
package com.baiye.modules.platform.rest;
import com.baiye.annotation.Log;
import com.baiye.http.CommonResponse;
import com.baiye.http.ResponseCode;
import com.baiye.modules.platform.domain.Debt;
@ -30,6 +31,7 @@ public class DebtFormController {
@ApiOperation("新建债务表单")
@PostMapping("/saveDebtForm")
@Log("新建债务表单")
public ResponseEntity<Object> saveTask(@Validated @RequestBody Debt debt){
debtFormService.saveDebtForm(debt);
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);

@ -1,5 +1,6 @@
package com.baiye.modules.platform.rest;
import com.baiye.annotation.Log;
import com.baiye.modules.platform.domain.Label;
import com.baiye.modules.platform.service.LabelService;
import com.baiye.modules.platform.service.dto.LabelQueryCriteria;
@ -33,6 +34,7 @@ public class LabelController {
@ApiOperation("导出数据")
@GetMapping(value = "/download")
@PreAuthorize("@el.check('label:list')")
@Log("导出数据")
public void download(HttpServletResponse response, LabelQueryCriteria criteria) throws IOException {
labelService.download(labelService.queryAll(criteria), response);
}
@ -57,6 +59,7 @@ public class LabelController {
@PostMapping
@ApiOperation("新增LabelController")
@PreAuthorize("@el.check('label:add')")
@Log("新增标签")
public ResponseEntity<Object> create(@Validated @RequestBody Label resources){
return new ResponseEntity<>(labelService.create(resources),HttpStatus.CREATED);
}
@ -64,6 +67,7 @@ public class LabelController {
@PutMapping
@ApiOperation("修改LabelController")
@PreAuthorize("@el.check('label:edit')")
@Log("修改标签")
public ResponseEntity<Object> update(@Validated @RequestBody Label resources){
labelService.update(resources);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
@ -72,6 +76,7 @@ public class LabelController {
@ApiOperation("删除LabelController")
@PreAuthorize("@el.check('label:del')")
@DeleteMapping
@Log("删除标签")
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
labelService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);

@ -1,5 +1,6 @@
package com.baiye.modules.platform.rest;
import com.baiye.annotation.Log;
import com.baiye.http.CommonResponse;
import com.baiye.modules.platform.domain.LabelOrganize;
import com.baiye.modules.platform.service.LabelOrganizeService;
@ -31,6 +32,7 @@ public class LabelOrganizeController {
@ApiOperation("新增标签组和标签")
@PostMapping("/add")
@Log("新增标签标签组")
public CommonResponse<Object> save(@Validated({AddGroup.class}) @RequestBody LabelOrganize labelOrganize) {
labelOrganizeService.save(labelOrganize);
return CommonResponse.createBySuccess();
@ -38,6 +40,7 @@ public class LabelOrganizeController {
@ApiOperation("修改标签组")
@PostMapping("/update")
@Log("修改标签组")
public CommonResponse<Object> update(@Validated({UpdateGroup.class}) @RequestBody LabelOrganize labelOrganize) {
labelOrganizeService.update(labelOrganize);
return CommonResponse.createBySuccess();
@ -45,6 +48,7 @@ public class LabelOrganizeController {
@ApiOperation("删除标签组")
@DeleteMapping("/del")
@Log("删除标签组")
public CommonResponse<Object> del(@RequestBody Set<Long> ids) {
labelOrganizeService.del(ids);
return CommonResponse.createBySuccess();

@ -1,5 +1,6 @@
package com.baiye.modules.platform.rest;
import com.baiye.annotation.Log;
import com.baiye.http.CommonResponse;
import com.baiye.http.ResponseCode;
import com.baiye.model.dto.OrganizeQueryCriteria;
@ -38,6 +39,7 @@ public class OrganizeController {
@ApiOperation("新增小组")
@PostMapping("/save")
@Log("新增小组")
public CommonResponse<Object> saveOrganize(@RequestBody @Valid ValidList<Organize> organizeList) {
organizeService.saveOrganize(organizeList);
return CommonResponse.createBySuccess();
@ -45,6 +47,7 @@ public class OrganizeController {
@ApiOperation("修改组")
@PostMapping("/update")
@Log("修改组")
public CommonResponse<Object> updateOrganize(@RequestBody Organize organize) {
organizeService.updateOrganize(organize);
return CommonResponse.createBySuccess();
@ -52,6 +55,7 @@ public class OrganizeController {
@ApiOperation("删除组")
@GetMapping("/del")
@Log("删除组")
public CommonResponse<Object> delOrganize(@RequestParam(value = "organizeId") Long organizeId, @RequestParam("replaceOrganizeId") Long replaceOrganizeId) {
organizeService.delOrganize(organizeId, replaceOrganizeId);
return CommonResponse.createBySuccess();
@ -59,6 +63,7 @@ public class OrganizeController {
@ApiOperation("添加组员")
@PostMapping("/addMember")
@Log("添加组员")
public CommonResponse<Object> addMember(@RequestBody @Valid ValidList<OrganizeUser> OrganizeUser) {
organizeService.addMember(OrganizeUser);
return CommonResponse.createBySuccess();
@ -66,6 +71,7 @@ public class OrganizeController {
@ApiOperation("删除组员")
@GetMapping("/delMember")
@Log("删除组员")
public CommonResponse<Object> delMember(@RequestParam("userId") Long userId,
@RequestParam(value = "replaceUserId", required = false) Long replaceUserId) {
organizeService.delMember(userId, replaceUserId);
@ -86,6 +92,7 @@ public class OrganizeController {
@ApiOperation("管理员分配任务")
@PostMapping("/saveOrganizeDistribution")
@Log("分配任务小组任务")
public ResponseEntity<Object> saveOrganizeDistribution(@Validated @RequestBody OrganizeSaveDTO organizeSaveDTO) {
return organizeService.saveOrganizeDistribution(organizeSaveDTO);
}
@ -128,6 +135,7 @@ public class OrganizeController {
@ApiOperation("组长分配任务")
@PostMapping("/saveMemberDistribution")
@Log("组任务分配")
public ResponseEntity<Object> saveMemberDistribution(@Validated @RequestBody OrganizeMemberDistributionDTO organizeMemberDistributionDTO) {
if (organizeMemberDistributionDTO != null) {
return organizeService.saveMemberDistribution(organizeMemberDistributionDTO);
@ -185,6 +193,7 @@ public class OrganizeController {
@PostMapping("/convert")
@ApiOperation("组成员变动")
@Log("组成员变动")
public CommonResponse<Object> convert(@Validated @RequestBody OrganizeConvertDTO organizeConvertDTO) {
organizeService.convert(organizeConvertDTO);
return CommonResponse.createBySuccess();

@ -1,5 +1,6 @@
package com.baiye.modules.platform.rest;
import com.baiye.annotation.Log;
import com.baiye.http.CommonResponse;
import com.baiye.modules.platform.domain.PayCombo;
import com.baiye.modules.platform.service.PayComboService;
@ -24,6 +25,7 @@ public class PayComboController {
@ApiOperation("新增模板")
@PostMapping("/add")
@Log("新增模板")
public CommonResponse<Object> add(@Validated({AddGroup.class}) @RequestBody PayCombo payCombo){
payComboService.addPayTemplate(payCombo);
return CommonResponse.createBySuccess();
@ -31,6 +33,7 @@ public class PayComboController {
@ApiOperation("更新模板")
@PostMapping("/update")
@Log("更新模板")
public CommonResponse<Object> update(@Validated({UpdateGroup.class}) @RequestBody PayCombo payCombo){
payComboService.updatePayTemplate(payCombo);
return CommonResponse.createBySuccess();

@ -1,5 +1,6 @@
package com.baiye.modules.platform.rest;
import com.baiye.annotation.Log;
import com.baiye.http.CommonResponse;
import com.baiye.modules.platform.domain.PayFatherTemplate;
import com.baiye.modules.platform.service.PayFatherTemplateService;
@ -27,6 +28,7 @@ public class PayFatherTemplateController {
@ApiOperation("新增模板")
@PostMapping("/add")
@Log("新增模板")
public CommonResponse<Object> add(@Validated({AddGroup.class}) @RequestBody PayFatherTemplate payFatherTemplate){
payFatherTemplateService.add(payFatherTemplate);
return CommonResponse.createBySuccess();
@ -34,6 +36,7 @@ public class PayFatherTemplateController {
@ApiOperation("更新模板状态")
@PostMapping("/update")
@Log("更新模板状态")
public CommonResponse<Object> update(@Validated({UpdateGroup.class}) @RequestBody PayFatherTemplate payFatherTemplate){
payFatherTemplateService.update(payFatherTemplate);
return CommonResponse.createBySuccess();
@ -41,6 +44,7 @@ public class PayFatherTemplateController {
@ApiOperation("删除模板")
@DeleteMapping("/del")
@Log("删除模板")
public CommonResponse<Object> del(@RequestBody Set<Long> ids) {
payFatherTemplateService.del(ids);
return CommonResponse.createBySuccess();
@ -60,6 +64,7 @@ public class PayFatherTemplateController {
@ApiOperation("替换模板列表")
@GetMapping("/replace")
@Log("替换模板列表")
public CommonResponse<Object> replace(@RequestParam("replaceId") Long replaceId,@RequestParam("templateId") Long templateId){
payFatherTemplateService.replace(replaceId, templateId);
return CommonResponse.createBySuccess();

@ -1,6 +1,7 @@
package com.baiye.modules.platform.rest;
import com.baiye.annotation.Inner;
import com.baiye.annotation.Log;
import com.baiye.http.CommonResponse;
import com.baiye.model.dto.DynamicTaskDistributionDTO;
import com.baiye.model.dto.TaskQueryCriteria;
@ -37,6 +38,7 @@ public class TaskController {
@Inner(value = false)
@ApiOperation("新建任务")
@PostMapping("/saveTask")
@Log("新建任务")
public CommonResponse<Object> saveTask(@RequestBody @Validated({AddGroup.class}) Task task) {
taskService.saveTask(task);
return CommonResponse.createBySuccess();
@ -87,6 +89,7 @@ public class TaskController {
@Inner(value = false)
@ApiOperation("修改任务信息")
@PostMapping("/update")
@Log("修改任务信息")
public CommonResponse<Object> updateTask(@RequestBody Task task) {
taskService.updateTask(task);
return CommonResponse.createBySuccess();
@ -94,6 +97,7 @@ public class TaskController {
@ApiOperation("未分配前删除任务-(删除任务)")
@GetMapping("/del")
@Log("未分配前删除任务")
public CommonResponse<Object> delTask(@RequestParam("taskId") Long taskId) {
taskService.delTask(taskId);
return CommonResponse.createBySuccess();
@ -115,6 +119,7 @@ public class TaskController {
@ApiOperation("新增动态任务(自动)分配比率")
@PostMapping("/addTaskDistribution")
@Log("新增动态任务分配比率")
public CommonResponse<Object> addTaskDistribution(@RequestBody @Validated DynamicTaskDistributionDTO dynamicTaskDistributionDTO) {
taskService.addTaskDistribution(dynamicTaskDistributionDTO);
return CommonResponse.createBySuccessMessage("操作成功");
@ -132,6 +137,7 @@ public class TaskController {
*/
@ApiOperation("新建dmp任务")
@PostMapping("/saveAdBackTask")
@Log("新建dmp任务")
public CommonResponse<Object> saveAdBackTask(@RequestBody @Validated TaskTagDto taskTagDto) {
return taskService.saveAdBackTask(taskTagDto);
}
@ -144,6 +150,7 @@ public class TaskController {
@ApiOperation("修改dmp任务信息")
@PostMapping("/updateDmpTask")
@Log("修改dmp任务信息")
public CommonResponse<Object> updateDmpTask(@RequestBody TaskTagDto taskTagDto) {
return taskService.updateDmpTask(taskTagDto);
}

@ -2,6 +2,7 @@ package com.baiye.modules.platform.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONArray;
import com.baiye.common.CommonLog;
import com.baiye.exception.BadRequestException;
import com.baiye.model.dto.ActivationCodeQueryCriteria;
import com.baiye.modules.platform.domain.ActivationRecord;
@ -55,16 +56,21 @@ public class ActivationCodeServiceImpl implements ActivationCodeService {
Company company = companyRepository.findByUserId(currentUserId);
Integer isActivation = company.getIsActivation();
// 未激活过,先进行注册
if (isActivation == 0) wechatSendMessageService.register(namePrefix, name, company.getId());
if (isActivation == 0){
CommonLog.infoNewTraceId("未曾激活,进行注册");
wechatSendMessageService.register(namePrefix, name, company.getId());
}
// 计费,默认季卡
double price = 300.00;
if (codeType == 2) price = 1080.00;
double totalPrice = company.getUserBalance() - (codeNum * price);
if (totalPrice < 0) throw new BadRequestException("余额不足");
// 生成激活码
CommonLog.infoNewTraceId("生成激活码");
JSONArray array = activationCodeRequestApi.getActivationCode(codeNum, codeType, name);
if (CollUtil.isNotEmpty(array)) {
// 扣费
CommonLog.info("生成激活码成功,开始扣费");
companyService.updateUserBalanceByCompanyId(totalPrice, company.getId());
// 插入激活码记录
List<ActivationRecord> list = new ArrayList<>();
@ -72,6 +78,7 @@ public class ActivationCodeServiceImpl implements ActivationCodeService {
ActivationRecord activationRecord = new ActivationRecord((String) obj, currentUserId, codeType);
list.add(activationRecord);
}
CommonLog.info("扣费成功,插入记录结束");
activationCodeRepository.saveAll(list);
}
}

@ -15,7 +15,6 @@ import com.baiye.util.QueryHelp;
import com.baiye.util.SecurityUtils;
import com.baiye.util.RequestUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
@ -26,7 +25,6 @@ import javax.transaction.Transactional;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor
public class LabelOrganizeServiceImpl implements LabelOrganizeService {

@ -3,6 +3,7 @@ package com.baiye.modules.platform.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baiye.common.CommonLog;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.RoleNumberConstants;
import com.baiye.exception.BadRequestException;
@ -30,7 +31,6 @@ import com.baiye.modules.telemarkting.service.ExtensionNumberService;
import com.baiye.util.*;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
@ -46,7 +46,6 @@ import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@Slf4j
public class OrganizeServiceImpl implements OrganizeService {
private final OrganizeRepository organizeRepository;
@ -78,12 +77,14 @@ public class OrganizeServiceImpl implements OrganizeService {
Set<Long> organizeUserIds = findOrganizeUserIds();
for (Organize organize : organizeList) {
if (organizeUserIds.contains(organize.getUserId())) {
CommonLog.error("用户已经分配到组");
throw new BadRequestException("用户已经分配到组");
}
organize.setCreateBy(SecurityUtils.getCurrentUserId());
Organize saveOrganize = organizeRepository.save(organize);
//添加分机号
if (organize.getCallMode() == 1) {
CommonLog.infoNewTraceId("添加分机号");
extensionNumberService.assignExtensionNum(saveOrganize.getId(), organize.getUserId());
}
// 添加小组成员信息
@ -91,11 +92,13 @@ public class OrganizeServiceImpl implements OrganizeService {
organizeUser.setOrganizeId(saveOrganize.getId());
Long roleId = Collections.min(roleService.findByUsersId(organize.getUserId()).stream().map(RoleSmallDto::getId).collect(Collectors.toList()));
if (!roleId.equals(RoleNumberConstants.MINUS_NINE_NUMBER)) {
CommonLog.error("指定组长不是组长角色");
throw new BadRequestException("指定组长必须是组长角色");
}
organizeUser.setUserId(organize.getUserId());
organizeUser.setIsLeader(true);
organizeUser.setCreateBy(SecurityUtils.getCurrentUserId());
CommonLog.infoNewTraceId("添加小组成员信息");
organizeUserRepository.save(organizeUser);
// 分配任务时创建组调用返回小组ID
saveUserId = saveOrganize.getId();
@ -116,15 +119,18 @@ public class OrganizeServiceImpl implements OrganizeService {
if (!organizeUser.getUserId().equals(organize.getUserId())) {
Long roleId = Collections.min(roleService.findByUsersId(organize.getUserId()).stream().map(RoleSmallDto::getId).collect(Collectors.toList()));
if (!roleId.equals(RoleNumberConstants.MINUS_NINE_NUMBER)) {
CommonLog.error("选择的组长不是组长角色用户");
throw new BadRequestException("请选择组长角色的用户");
}
// 替换组长-资源替换
CommonLog.infoNewTraceId("修改组长资源");
ResponseEntity<Object> response = sourceClueClient.updateMember(organizeUser.getUserId(), organize.getUserId());
if (response.getStatusCode().value() != 200) throw new BadRequestException("组长修改失败");
extensionUserRepository.updateByMember(organizeUser.getUserId(), organize.getUserId());
}
//添加(删除)分机号
if (organize.getCallMode() != null && !organize.getCallMode().equals(updateOrganize.getCallMode())) {
CommonLog.infoNewTraceId("操作分机号");
List<OrganizeUser> organizeList = organizeUserRepository.findByOrganizeId(organize.getId());
if (organize.getCallMode() == 1) {
organizeList.forEach(oe -> extensionNumberService.assignExtensionNum(oe.getOrganizeId(), oe.getUserId()));
@ -132,6 +138,7 @@ public class OrganizeServiceImpl implements OrganizeService {
extensionNumberService.unbindExtension(updateOrganize.getId());
}
}
CommonLog.infoNewTraceId("修改组信息");
if (organize.getOrganizeName() != null) {
updateOrganize.setOrganizeName(organize.getOrganizeName());
updateOrganize.setCallMode(organize.getCallMode());
@ -146,6 +153,7 @@ public class OrganizeServiceImpl implements OrganizeService {
organizeRepository.save(updateOrganize);
}
CommonLog.infoNewTraceId("修改组用户信息");
if (organize.getUserId() != null) {
// 修改所有组员的父ID(组长用户ID)
organizeUserRepository.updateUserId(organize.getId(), organize.getUserId());
@ -181,6 +189,7 @@ public class OrganizeServiceImpl implements OrganizeService {
Set<Long> organizeUserIds = findOrganizeUserIds();
OrganizeUser organizeUserByUserId = organizeUserRepository.findByUserId(currentUserId);
if (organizeUserByUserId == null) {
CommonLog.error("用户还未分配到组内");
throw new BadRequestException("用户未分配到组,请创建小组");
}
Long organizeId = organizeUserByUserId.getOrganizeId();
@ -211,8 +220,10 @@ public class OrganizeServiceImpl implements OrganizeService {
// 替换组员
organizeUserRepository.updateUser(userId, replaceUserId);
// 组员资源替换
CommonLog.info("替换组员资源");
sourceClueClient.updateMember(userId, replaceUserId);
} else {
CommonLog.info("重新分配资源");
// 删除组员
organizeUserRepository.deleteByUserId(userId);
// 不替换组员操作(直接删除),所属资源再次分配给所有组员
@ -261,6 +272,7 @@ public class OrganizeServiceImpl implements OrganizeService {
organizeUserAll.forEach(organizeUser -> userList.add(organizeUser.getUserId()));
organizeSaveDTO.getOrganizeList().forEach(o -> {
if (o.getId() == null && userList.contains(o.getUserId())) {
CommonLog.error("组长重复");
throw new BadRequestException("组长不能重复");
}
});
@ -294,6 +306,7 @@ public class OrganizeServiceImpl implements OrganizeService {
if (CollUtil.isNotEmpty(labelList)) {
task.setBaseLabel(labelList);
}
CommonLog.info("修改任务");
taskRepository.save(task);
// 分配任务引擎
DistributeDTO distributeDTO = new DistributeDTO();
@ -302,12 +315,14 @@ public class OrganizeServiceImpl implements OrganizeService {
List<DistributeResponseDTO> data;
distributeDTO.setWeights(weights);
distributeDTO.setIsWeight(true);
CommonLog.infoNewTraceId("调用分配引擎,查询分配线索");
CommonResponse<List<DistributeResponseDTO>> commonResponse = assignDataClient.dataDistribution(distributeDTO);
if (commonResponse.getStatus() == 1) {
throw new BadRequestException(commonResponse.getMsg());
}
data = commonResponse.getData();
// 线索更新
CommonLog.infoNewTraceId("线索更新");
if (data != null && data.size() > 0) {
int index = 0;
for (DistributeResponseDTO distributeResponseDTO : data) {
@ -499,12 +514,14 @@ public class OrganizeServiceImpl implements OrganizeService {
clueQueryCriteria.setOrganizeId(organizeId);
clueQueryCriteria.setUserIds(userIds);
clueQueryCriteria.setTaskId(taskId);
CommonLog.infoNewTraceId("调用服务,分配资源");
ResponseEntity<String> rse = sourceClueClient.queryOrganizeIdList(clueQueryCriteria);
if (rse.getBody() != null && !rse.getBody().equals("success")) {
UserDto user = userService.findById(Long.parseLong(rse.getBody()));
throw new BadRequestException(user.getNickName() + "比例过低,分配数量不能低于0");
}
//修改小组任务信息
CommonLog.infoNewTraceId("修改小组任务信息");
TaskOrganize updateTaskOrganize = taskOrganizeRepository.findByOrganizeIdAndTaskId(organizeId, taskId);
updateTaskOrganize.setTaskStatus(1);
updateTaskOrganize.setBeginTime(organizeMemberDistributionDTO.getBeginTime());
@ -779,8 +796,8 @@ public class OrganizeServiceImpl implements OrganizeService {
} else {
//2、替换人是组员
List<OrganizeUser> organizeUserList = organizeUserRepository.findByUserIdIn(ListUtil.of(userId, replaceUserId));
OrganizeUser userOrganizeUser = organizeUserList.get(DefaultNumberConstants.ONE_NUMBER);
OrganizeUser repOrganizeUser = organizeUserList.get(DefaultNumberConstants.ZERO_NUMBER);
OrganizeUser userOrganizeUser = organizeUserList.get(DefaultNumberConstants.ZERO_NUMBER);
OrganizeUser repOrganizeUser = organizeUserList.get(DefaultNumberConstants.ONE_NUMBER);
userOrganizeUser.setUserId(replaceUserId);
repOrganizeUser.setUserId(userId);
organizeUserRepository.saveAll(ListUtil.of(userOrganizeUser, repOrganizeUser));
@ -816,6 +833,7 @@ public class OrganizeServiceImpl implements OrganizeService {
}
}
// 分机号变动
CommonLog.infoNewTraceId("分机号变动");
extensionNumberService.extensionNumberConvert(userId, replaceUserId, organizeId);
// 资源所属组相互转换
Map<Long, Long> map = new HashMap<>();
@ -824,6 +842,7 @@ public class OrganizeServiceImpl implements OrganizeService {
OrganizeUser organizeUser = organizeUserRepository.findByUserId(replaceUserId);
map.put(replaceUserId, organizeUser.getOrganizeId());
}
CommonLog.infoNewTraceId("资源所属组相互转换");
ResponseEntity<Object> response = sourceClueClient.updateClueOrganize(map);
if (response.getStatusCode().value() != 200) throw new BadRequestException("修改失败");
}

@ -15,7 +15,6 @@ import com.baiye.util.PageUtil;
import com.baiye.util.QueryHelp;
import com.baiye.util.RequestUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
@ -34,7 +33,6 @@ import java.util.stream.Collectors;
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class PayFatherTemplateServiceImpl implements PayFatherTemplateService {
private final PayFatherTemplateRepository payFatherTemplateRepository;

@ -2,11 +2,11 @@ package com.baiye.modules.platform.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiye.common.CommonLog;
import com.baiye.constant.ClueTypeConstants;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.KeyFieldConstants;
@ -30,7 +30,6 @@ import com.baiye.util.QueryHelp;
import com.baiye.util.RedisUtils;
import com.baiye.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
@ -50,7 +49,6 @@ import java.util.stream.Collectors;
*/
@Service
@RequiredArgsConstructor
@Slf4j
public class TaskServiceImpl implements TaskService {
private final TaskRepository taskRepository;
@ -300,6 +298,11 @@ public class TaskServiceImpl implements TaskService {
@Override
public Set<Long> queryTaskId(TaskQueryCriteria taskQueryCriteria) {
Boolean isManager = SecurityUtils.getCurrentUser().getUser().getIsManager();
Long whichUserId = SecurityUtils.getCurrentUser().getUser().getWhichUserId();
if (isManager != null && !isManager && whichUserId != null){
taskQueryCriteria.setCreateBy(whichUserId);
}
List<TaskDto> taskDtoList = taskMapper.toDto(taskRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, taskQueryCriteria, criteriaBuilder)));
if (CollUtil.isNotEmpty(taskDtoList)) {
return taskDtoList.stream().map(TaskDto::getId).collect(Collectors.toSet());
@ -379,7 +382,6 @@ public class TaskServiceImpl implements TaskService {
@Transactional(rollbackOn = Exception.class)
public void updateTask(Task task) {
if (task.getId() != null) {
log.info("==================== task id {} date time {} ====================", task.getId(), DateUtil.date());
Task updateTask = taskRepository.findById(task.getId()).orElseGet(Task::new);
if (ObjectUtil.isNotNull(updateTask) && updateTask.getId() != null) {
if (task.getRemark() != null) {
@ -422,7 +424,7 @@ public class TaskServiceImpl implements TaskService {
@Override
public void sendMessage(String message, Long userId, String type) {
CommonLog.infoUser("websocket发送信息", userId);
Map<String, Object> map = new HashMap<>();
map.put("message", message);
map.put("type", type);

@ -44,7 +44,7 @@ public class LogElasticSearchEntity {
/** 请求ip */
// @Field(value = "host", type = FieldType.Text)
@Field(value = "host")
// @Field(value = "host")
private String reqIp;
/** 请求地址 */
@ -59,6 +59,8 @@ public class LogElasticSearchEntity {
private String userName;
private String systemType;
/** 创建日期 */
// @Field(value = "@timestamp",name = "@timestamp", type = FieldType.Date, format = DateFormat.custom,
// pattern = "uuuu-MM-dd'T'HH:mm:ss.SSSX")

@ -18,7 +18,7 @@ public class LogElasticSearchCriteria {
private String level;
private String host;
private String reqIp;
private String businessPartyType;
@ -26,5 +26,7 @@ public class LogElasticSearchCriteria {
private String userName;
private String systemType;
private List<Timestamp> createTime;
}

@ -40,6 +40,8 @@ public class LogElasticSearchDTO implements Serializable {
private String userName;
private String systemType;
/** 创建日期 */
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") //格式化后端传给前端展示的日期
// @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") //格式化前端传来的String类型的日期

@ -201,8 +201,8 @@ public class LogServiceImpl implements LogService {
if (StringUtils.isNotBlank(query.getLevel())) {
filter.must(QueryBuilders.termQuery("level", query.getLevel()));
}
if (StringUtils.isNotBlank(query.getHost())) {
filter.must(QueryBuilders.termQuery("host", query.getHost()));
if (StringUtils.isNotBlank(query.getReqIp())) {
filter.must(QueryBuilders.termQuery("reqIp", query.getReqIp()));
}
if (query.getUserId() != null) {
filter.must(QueryBuilders.termQuery("userId", query.getUserId()));
@ -213,6 +213,9 @@ public class LogServiceImpl implements LogService {
if (StringUtils.isNotBlank(query.getUserName())) {
filter.must(QueryBuilders.matchQuery("userName", query.getUserName()));
}
if (StringUtils.isNotBlank(query.getSystemType())) {
filter.must(QueryBuilders.termQuery("systemType", query.getSystemType()));
}
if (StringUtils.isNotBlank(query.getTraceId())) {
filter.must(QueryBuilders.matchPhrasePrefixQuery("traceId", query.getTraceId()));
sort = Sort.by(Sort.Direction.ASC, "@timestamp");

@ -8,6 +8,11 @@ spring:
database: 2
host: 127.0.0.1
timeout: 5000
elasticsearch:
rest:
uris: 127.0.0.1:9200
read-timeout: 30s
connection-timeout: 5s
datasource:
druid:
db-type: com.alibaba.druid.pool.DruidDataSource
@ -214,4 +219,4 @@ channel:
id: 11
logstash:
url: localhost:5044
url: 127.0.0.1:5044

@ -44,7 +44,7 @@ public class BaseTask implements Serializable {
@Column(name = "is_distribution")
private Integer isDistribution;
@ApiModelProperty(value = "此次任务是否加密线索手机号 0:不加密 1:加密")
@ApiModelProperty(value = "此次任务是否加密线索手机号 0:不加密 1:加密 2:随机字符串")
@Column(name = "encryption_type")
private Integer encryptionType;

@ -46,30 +46,35 @@ public class ClueController {
@ApiOperation("批量更新组信息,小组任务分配更新")
@PostMapping("/batchUpdateOrganize")
@Log("批量更新组信息,小组任务分配更新")
public ResponseEntity<Object> batchUpdateOrganize(@RequestBody DistributeResponseDTO distributeResponseDTO) {
return new ResponseEntity<>(clueService.batchUpdateOrganize(distributeResponseDTO), HttpStatus.OK);
}
@ApiOperation("修改资源组员关系")
@GetMapping("/updateMember")
@Log("修改资源组员关系")
public ResponseEntity<Object> updateMember(@RequestParam("userId") Long userId, @RequestParam(value = "replaceUserId") Long replaceUserId) {
return new ResponseEntity<>(clueService.updateMember(userId, replaceUserId), HttpStatus.OK);
}
@ApiOperation("修改组")
@GetMapping("/updateOrganize")
@Log("修改资源所属组")
public void updateOrganize(@RequestParam("organizeId") Long organizeId, @RequestParam("replaceOrganizeId") Long replaceOrganizeId) {
clueService.updateOrganize(organizeId, replaceOrganizeId);
}
@ApiOperation("(小组表单任务)组长分配组员资源")
@PostMapping("/queryOrganizeIdList")
@Log("(小组表单任务)组长分配组员资源")
public ResponseEntity<Object> leaderDistribute(@RequestBody ClueQueryCriteria clueQueryCriteria) {
return new ResponseEntity<>(clueService.leaderDistribute(clueQueryCriteria), HttpStatus.OK);
}
@ApiOperation("资源ID批量更新人员(动态任务分配)")
@PostMapping("/updateBatchMember")
@Log("资源ID批量更新人员(动态任务分配)")
public CommonResponse<Object> updateBatchMember(@RequestBody ClueQueryCriteria clueQueryCriteria) {
clueService.updateBatchMember(clueQueryCriteria);
return CommonResponse.createBySuccess();
@ -102,6 +107,7 @@ public class ClueController {
@ApiOperation("更新资源信息")
@PostMapping("/update")
@Inner(value = false)
@Log("更新资源信息")
public CommonResponse<Object> update(@Validated @RequestBody ClueMiddle clueMiddle) {
clueService.update(clueMiddle);
return CommonResponse.createBySuccess();
@ -127,6 +133,7 @@ public class ClueController {
@ApiOperation("删除人上传资源")
@DeleteMapping("/delIndividualClue")
@Log("删除人上传资源")
public CommonResponse<Object> delIndividualClue(@RequestBody Long clueId) {
clueService.delIndividualClue(clueId);
return CommonResponse.createBySuccess();
@ -134,12 +141,14 @@ public class ClueController {
@ApiOperation("删除所有关联数据")
@PostMapping("/delClueAll")
@Log("删除所有关联数据")
public ResponseEntity<Object> delClueAll(@RequestBody Set<Long> taskIds) {
return new ResponseEntity<>(clueService.delClueAll(taskIds), HttpStatus.OK);
}
@ApiOperation("删除用户所有关联数据")
@GetMapping("/delClueByUser")
@Log("删除用户所有关联数据")
public ResponseEntity<Map<Long, Integer>> delClueByUser(@RequestParam("userId") Long userId) {
return new ResponseEntity<>(clueService.delClueByUser(userId), HttpStatus.OK);
}
@ -152,6 +161,7 @@ public class ClueController {
@ApiOperation("撤回(动态任务)资源")
@PostMapping("/withdrawSource")
@Log("撤回(动态任务)资源")
public ResponseEntity<Object> withdrawSource(@RequestBody ClueQueryCriteria clueQueryCriteria) {
return new ResponseEntity<>(clueService.withdrawSource(clueQueryCriteria), HttpStatus.OK);
}
@ -187,6 +197,7 @@ public class ClueController {
@PostMapping("/dynamic/task")
@ApiOperation("表单上传动态任务")
@Log("表单上传动态任务")
public CommonResponse<Object> insertDynamicTask(@Validated @RequestBody DynamicTaskDto dynamicTaskDto) {
clueService.insertDynamicTask(dynamicTaskDto);
return CommonResponse.createBySuccess();

@ -1,5 +1,6 @@
package com.baiye.module.controller;
import com.baiye.annotation.Log;
import com.baiye.http.CommonResponse;
import com.baiye.module.service.ClueRecordService;
import com.baiye.module.service.dto.ClueRecordCriteria;
@ -30,6 +31,7 @@ public class ClueRecordController {
@ApiOperation("审核文件")
@PostMapping("/audit")
@Log("审核文件")
public CommonResponse<Object> auditFile(@RequestBody ClueRecordQueryCriteria clueRecordQueryCriteria){
clueRecordService.auditFile(clueRecordQueryCriteria);
return CommonResponse.createBySuccess();
@ -43,6 +45,7 @@ public class ClueRecordController {
@ApiOperation("导出资源记录")
@GetMapping("/queryRecordList/download")
@Log("导出资源记录")
public void exportRecordList(HttpServletResponse response, ClueRecordCriteria clueRecordCriteria) {
clueRecordService.exportRecordList(response, clueRecordCriteria);
}

@ -1,5 +1,6 @@
package com.baiye.module.controller;
import com.baiye.annotation.Log;
import com.baiye.http.CommonResponse;
import com.baiye.module.entity.ConductRecord;
import com.baiye.module.service.ConductRecordService;
@ -25,6 +26,7 @@ public class ConductRecordController {
@ApiOperation("新增记录")
@PostMapping("/saveRecord")
@Log("新增记录")
public CommonResponse<Object> saveRecord(@Validated({AddGroup.class}) @RequestBody ConductRecord conductRecord){
conductRecordService.saveRecord(conductRecord);
return CommonResponse.createBySuccess();
@ -32,6 +34,7 @@ public class ConductRecordController {
@ApiOperation("删除记录")
@GetMapping("/del")
@Log("删除记录")
public CommonResponse<Object> delRecord(@RequestParam(value = "id") Long id) {
conductRecordService.delRecord(id);
return CommonResponse.createBySuccess();

@ -1,5 +1,6 @@
package com.baiye.module.controller;
import com.baiye.annotation.Log;
import com.baiye.http.CommonResponse;
import com.baiye.http.ResponseCode;
import com.baiye.module.service.UploadFileService;
@ -33,13 +34,15 @@ public class UploadFileController {
*/
@ApiOperation("文件上传")
@PostMapping("/fileUpload")
@Log("文件上传")
public ResponseEntity<Object> singleFileUpload(@RequestParam("file") MultipartFile[] file,
@RequestParam(value = "uploadType") Integer uploadType,
@RequestParam(value = "taskId", required = false) Long taskId,
@RequestParam(value = "encryptionType", required = false) Integer encryptionType,
@RequestParam(value = "userId") Long userId) {
if (file.length > 0) {
return uploadFileService.singleFileUpload(file, uploadType, userId, taskId);
return uploadFileService.singleFileUpload(file, uploadType, userId, taskId, encryptionType);
}
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.EMPTY_ARGUMENT.getDesc()), HttpStatus.OK);
}
@ -51,6 +54,7 @@ public class UploadFileController {
*/
@ApiOperation("模板下载")
@GetMapping("/downLoadTemplate")
@Log("模板下载")
public ResponseEntity<Object> downLoadTemplate(@RequestParam("downLoadType") Integer downLoadType) {
switch (downLoadType) {
case 0:

@ -3,6 +3,7 @@ package com.baiye.module.listener;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baiye.common.CommonLog;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.FileConstant;
import com.baiye.module.entity.Clue;
@ -10,14 +11,12 @@ import com.baiye.module.listener.dto.BaseExcelListenerDto;
import com.baiye.module.listener.dto.DynamicTaskListenerDto;
import com.baiye.module.service.ClueService;
import com.baiye.util.DecryptPnoUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.List;
@Slf4j
public class DynamicTaskListener extends AnalysisEventListener<DynamicTaskListenerDto> {
public final List<DynamicTaskListenerDto> rows = new ArrayList<>();
@ -29,7 +28,7 @@ public class DynamicTaskListener extends AnalysisEventListener<DynamicTaskListen
private static ClueService clueService;
public DynamicTaskListener(ClueService clueService, BaseExcelListenerDto baseExcelListenerDto) {
log.info("==============开始导入动态任务表单:{}", Thread.currentThread().getName());
CommonLog.info("开始导入动态任务表单");
this.clueService = clueService;
this.baseExcelListenerDto = baseExcelListenerDto;
}

@ -4,6 +4,7 @@ import cn.hutool.core.codec.Base64;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baiye.common.CommonLog;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.FileConstant;
import com.baiye.module.entity.Clue;
@ -13,13 +14,11 @@ import com.baiye.module.service.ClueService;
import com.baiye.module.service.dto.SecretResponseBean;
import com.baiye.util.DecryptPnoUtil;
import com.google.common.base.Splitter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import java.util.ArrayList;
import java.util.List;
@Slf4j
public class TokerListener extends AnalysisEventListener<TokerListenerDto> {
public final List<TokerListenerDto> rows = new ArrayList<>();
@ -31,7 +30,7 @@ public class TokerListener extends AnalysisEventListener<TokerListenerDto> {
private static ClueService clueService;
public TokerListener(ClueService clueService, BaseExcelListenerDto baseExcelListenerDto) {
log.info("==============开始导入拓客动态任务表单:{}", Thread.currentThread().getName());
CommonLog.info("开始导入拓客动态任务表单");
this.clueService = clueService;
this.baseExcelListenerDto = baseExcelListenerDto;
}

@ -3,20 +3,19 @@ package com.baiye.module.listener;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baiye.common.CommonLog;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.FileConstant;
import com.baiye.module.entity.Clue;
import com.baiye.module.listener.dto.BaseExcelListenerDto;
import com.baiye.module.listener.dto.ZdyListenerDto;
import com.baiye.module.service.ClueService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.List;
@Slf4j
public class ZdyListener extends AnalysisEventListener<ZdyListenerDto> {
public final List<ZdyListenerDto> rows = new ArrayList<>();
@ -27,7 +26,7 @@ public class ZdyListener extends AnalysisEventListener<ZdyListenerDto> {
private static ClueService clueService;
public ZdyListener(ClueService clueService, BaseExcelListenerDto baseExcelListenerDto) {
log.info("==============开始导入自定义表单:{}", Thread.currentThread().getName());
CommonLog.info("开始导入自定义表单");
this.clueService = clueService;
this.baseExcelListenerDto = baseExcelListenerDto;
}

@ -24,10 +24,21 @@ public class BaseExcelListenerDto {
@ApiModelProperty(value = "文件名")
private String oneFileName;
@ApiModelProperty(value = "此次任务是否加密线索手机号 0:不加密 1:加密 2:随机字符串")
private Integer encryptionType;
public BaseExcelListenerDto( Long userId, Integer origin, Long taskId, String oneFileName) {
this.userId = userId;
this.origin = origin;
this.taskId = taskId;
this.oneFileName = oneFileName;
}
public BaseExcelListenerDto(Long clueRecordId, Long userId, Integer origin, Long taskId, String oneFileName) {
this.clueRecordId = clueRecordId;
this.userId = userId;
this.origin = origin;
this.taskId = taskId;
this.oneFileName = oneFileName;
}
}

@ -8,5 +8,5 @@ public interface UploadFileService {
/**
*
*/
ResponseEntity<Object> singleFileUpload(MultipartFile[] file, Integer uploadType, Long userId, Long taskId);
ResponseEntity<Object> singleFileUpload(MultipartFile[] file, Integer uploadType, Long userId, Long taskId, Integer taskEncryptionType);
}

@ -1,6 +1,7 @@
package com.baiye.module.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baiye.common.CommonLog;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.feign.UserClient;
import com.baiye.http.CommonResponse;
@ -96,7 +97,7 @@ public class ClueRecordServiceImpl implements ClueRecordService {
List<ClueRecord> clueRecords = clueRecordRepository.findByTaskIdAndIsPass(taskId, DefaultNumberConstants.ONE_NUMBER);
// 异步读取文件并更新任务
if (CollUtil.isNotEmpty(clueRecords)) {
fileAnalysisTask.runFileAnalysisTask(clueRecords, clueRecords.get(0).getOldFile(), false);
fileAnalysisTask.runFileAnalysisTask(clueRecords, clueRecords.get(0).getOldFile(), false, CommonLog.getTraceId(), null);
}
}
clueRecordRepository.updateIsPassByTaskIdIn(taskIdList, DefaultNumberConstants.ZERO_NUMBER);

@ -19,13 +19,11 @@ import com.baiye.module.entity.*;
import com.baiye.module.listener.dto.BaseExcelListenerDto;
import com.baiye.module.request.ReqOceanEngineApi;
import com.baiye.module.service.ClueService;
import com.baiye.module.service.CompanyService;
import com.baiye.module.service.dto.ClueRecordCriteria;
import com.baiye.task.ClueBackupsTask;
import com.baiye.util.*;
import com.google.common.collect.Lists;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Page;
@ -41,7 +39,6 @@ import java.util.*;
import java.util.stream.Collectors;
@Service
@Slf4j
@RequiredArgsConstructor
public class ClueServiceImpl implements ClueService {
@ -66,7 +63,6 @@ public class ClueServiceImpl implements ClueService {
private final AllCallInfoRepository allCallInfoRepository;
private final AssignDataClient assignDataClient;
private final CompanyService companyService;
private final TurnCrmLogRepository turnCrmLogRepository;
private final ReportTokerRepository reportTokerRepository;
private final ClueBackupsTask clueBackupsTask;
@ -210,6 +206,9 @@ public class ClueServiceImpl implements ClueService {
taskQueryCriteria.setCreateBy(clueQueryCriteria.getMemberId());
taskQueryCriteria.setBlurry(clueQueryCriteria.getTaskName());
Set<Long> taskIds = findTaskId(taskQueryCriteria);
if (CollUtil.isEmpty(taskIds)) {
return PageUtil.toPage(new ArrayList<>(), DefaultNumberConstants.ZERO_NUMBER);
}
clueQueryCriteria.setTaskIds(taskIds);
}
List<Long> userIds = organizeClient.findOrganizeIdByMember(clueQueryCriteria.getMemberId()).getBody();
@ -365,6 +364,7 @@ public class ClueServiceImpl implements ClueService {
* 线
*/
private void executeTalkClue(ClueMiddle clueMiddle) {
CommonLog.info("拓客线索修改");
ClueTalk clueTalk = clueTalkRepository.findById(clueMiddle.getClueId()).orElseGet(ClueTalk::new);
if (clueMiddle.getClueCallStatus() != null) {
clueTalk.setClueCallStatus(clueMiddle.getClueCallStatus());
@ -392,6 +392,7 @@ public class ClueServiceImpl implements ClueService {
*/
@Transactional(rollbackFor = Exception.class)
public void callbackOceanEngine(Long clueId, Integer stage) {
CommonLog.infoNewTraceId("飞鱼回传");
OceanEngineClueId oceanEngineClue = oceanEngineClueIdRepository.findOceanEngineClueIdByLocalClueId(clueId);
String oceanEngineClueId = oceanEngineClue.getOceanEngineClueId();
Long userId = oceanEngineClue.getUserId();
@ -401,7 +402,7 @@ public class ClueServiceImpl implements ClueService {
if (aBoolean) {
oceanEngineClue.setStatus(DefaultNumberConstants.ONE_NUMBER);
oceanEngineClueIdRepository.save(oceanEngineClue);
log.info("回传成功====");
CommonLog.info("飞鱼回传成功");
}
}
}
@ -462,6 +463,7 @@ public class ClueServiceImpl implements ClueService {
Long taskId = baseExcelListenerDto.getTaskId();
Long userId = baseExcelListenerDto.getUserId();
Integer origin = baseExcelListenerDto.getOrigin();
Integer encryptionType = baseExcelListenerDto.getEncryptionType();
Integer taskNum;
if (origin == DefaultNumberConstants.SIX_NUMBER) {
taskNum = clueTalkRepository.findTaskNum(taskId);
@ -489,6 +491,7 @@ public class ClueServiceImpl implements ClueService {
task.setTaskType(DefaultNumberConstants.ONE_NUMBER);
task.setIsForm(DefaultNumberConstants.FIVE_NUMBER);
}
if (encryptionType != null) task.setEncryptionType(encryptionType);
ResponseEntity<Object> response = taskClient.saveTask(task);
if (response.getStatusCode().value() != 200) throw new BadRequestException("创建任务失败");
}
@ -567,7 +570,7 @@ public class ClueServiceImpl implements ClueService {
public void delete(List<ClueDto> clueAll, Set<Long> clueIds) {
//1、备份数据
clueBackupsTask.clueBackups(clueAll);
clueBackupsTask.clueBackups(clueAll, SecurityUtils.getCurrentUserId(), CommonLog.getTraceId());
//2、删除资源数据
clueRepository.deleteAllByIdIn(clueIds);
//3、删除跟进记录
@ -608,7 +611,7 @@ public class ClueServiceImpl implements ClueService {
}
return findClueList(clueQueryCriteria, pageable);
} else {
log.info("========================用户id为空============================");
CommonLog.info("====用户id为空,刷新后重试");
throw new BadRequestException("刷新后重试");
}
}
@ -810,6 +813,7 @@ public class ClueServiceImpl implements ClueService {
*/
public void clueBackFlow(ClueTalk clueTalk) {
CommonLog.infoNewTraceId("线索回流crm");
if (clueTalk.getMemberStatus() == DefaultNumberConstants.FOUR_NUMBER) {
throw new BadRequestException("已经转为crm,请勿重复操作");
}
@ -896,7 +900,7 @@ public class ClueServiceImpl implements ClueService {
task.setCreateBy(createBy);
ResponseEntity<Object> response = taskClient.saveTask(task);
if (response.getStatusCode().value() != 200) {
log.error("回流失败的管理员id== {}", createBy);
CommonLog.error("回流失败的管理员id==" + createBy);
throw new BadRequestException("回流失败,请联系管理员");
}
}
@ -1032,7 +1036,7 @@ public class ClueServiceImpl implements ClueService {
private Map<String, Object> findClueList(ClueQueryCriteria clueQueryCriteria, Pageable pageable) {
// 任务名模糊搜索时,没搜到就返回空数据
if (clueQueryCriteria.getTaskName() != null && CollUtil.isEmpty(clueQueryCriteria.getTaskIds())) {
return PageUtil.toPage(DefaultNumberConstants.ZERO_NUMBER, DefaultNumberConstants.ZERO_NUMBER);
return PageUtil.toPage(new ArrayList<>(), DefaultNumberConstants.ZERO_NUMBER);
}
clueQueryCriteria.setIsAdmin(true);
List<ClueDto> clueList = this.findClue(clueQueryCriteria, pageable);
@ -1149,7 +1153,7 @@ public class ClueServiceImpl implements ClueService {
if (StringUtils.isNotBlank(phone)) {
Boolean checkPhone = MobileUtil.checkPhone(phone);
if (Boolean.FALSE.equals(checkPhone)) {
log.info("============== the exchange phone as {} =====================", phone);
CommonLog.info("==============the exchange phone as: " + phone);
continue;
}
Clue clue = new Clue();
@ -1164,7 +1168,7 @@ public class ClueServiceImpl implements ClueService {
clueNumber++;
}
}
log.info("================= save clue size as {} =================", responseList.size());
CommonLog.info("==============save clue size as: " + responseList.size());
return clueNumber;
}

@ -1,6 +1,7 @@
package com.baiye.module.service.impl;
import cn.hutool.core.util.IdUtil;
import com.baiye.common.CommonLog;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.exception.BadRequestException;
import com.baiye.feign.UserClient;
@ -50,7 +51,7 @@ public class UploadFileServiceImpl implements UploadFileService {
@Override
@SneakyThrows //处理异常try
@Transactional(rollbackFor = Exception.class)
public ResponseEntity<Object> singleFileUpload(MultipartFile[] files, Integer uploadType, Long userId, Long taskId) {
public ResponseEntity<Object> singleFileUpload(MultipartFile[] files, Integer uploadType, Long userId, Long taskId, Integer taskEncryptionType) {
List<ClueRecord> clueRecordList = new ArrayList<>();
String oneFileName = files[0].getOriginalFilename();
@ -83,7 +84,7 @@ public class UploadFileServiceImpl implements UploadFileService {
}
if (!flag) {
//异步读取文件并创建任务
fileAnalysisTask.runFileAnalysisTask(clueRecordList, oneFileName, isCreateTask);
fileAnalysisTask.runFileAnalysisTask(clueRecordList, oneFileName, isCreateTask, CommonLog.getTraceId(), taskEncryptionType);
}
return new ResponseEntity<>(CommonResponse.createBySuccess(ResponseCode.SUCCESS), HttpStatus.OK);
}

@ -2,6 +2,7 @@ package com.baiye.task;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.baiye.common.CommonLog;
import com.baiye.constant.FileConstant;
import com.baiye.model.dto.ClueDto;
import com.baiye.module.dao.ClueBackupsRepository;
@ -29,8 +30,9 @@ public class ClueBackupsTask {
@Transactional(rollbackFor = Exception.class)
@Async(value = "SendBigDataTaskExecutor")
public void clueBackups(List<ClueDto> clueAll) {
public void clueBackups(List<ClueDto> clueAll, Long userId, String traceId) {
if (CollUtil.isNotEmpty(clueAll)) {
CommonLog.infoUserTraceId("异步备份删除数据", userId, traceId);
List<ClueBackups> list = new ArrayList<>();
for (ClueDto clue : clueAll) {
ClueBackups clueBackups = new ClueBackups();

@ -2,6 +2,7 @@ package com.baiye.task;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.excel.EasyExcelFactory;
import com.baiye.common.CommonLog;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.FileConstant;
import com.baiye.feign.TaskClient;
@ -55,8 +56,9 @@ public class FileAnalysisTask {
*/
@Transactional(rollbackFor = Exception.class)
@Async(value = "SendBigDataTaskExecutor")
public void runFileAnalysisTask(List<ClueRecord> clueRecords, String oneFileName, Boolean isCreateTask) {
public void runFileAnalysisTask(List<ClueRecord> clueRecords, String oneFileName, Boolean isCreateTask, String traceId, Integer taskEncryptionType) {
if (CollUtil.isNotEmpty(clueRecords)) {
CommonLog.infoUserTraceId("异步上传文件", clueRecords.get(0).getCreateBy(), traceId);
List<Long> recordIds = clueRecords.stream().map(ClueRecord::getId).collect(Collectors.toList());
try {
for (ClueRecord clueRecord : clueRecords) {
@ -79,7 +81,7 @@ public class FileAnalysisTask {
// 修改文件记录上传状态
this.updateClueRecord(recordIds, DefaultNumberConstants.TWO_NUMBER);
} catch (Exception e) {
log.error("=========读取资源错误:,{}", e.getMessage());
CommonLog.error("读取资源错误" + e.getMessage());
taskClient.sendMessage("导入资源错误,请检查数据格式后重新导入", clueRecords.get(0).getCreateBy(), "source_error");
this.updateClueRecord(recordIds, DefaultNumberConstants.ONE_NUMBER);
}
@ -104,6 +106,7 @@ public class FileAnalysisTask {
Long userId = clueRecords.get(0).getCreateBy();
if (taskId != null && userId != null && StringUtils.isNotBlank(oneFileName)) {
BaseExcelListenerDto baseExcelListenerDto = new BaseExcelListenerDto(userId, uploadType, taskId, oneFileName);
baseExcelListenerDto.setEncryptionType(taskEncryptionType);
clueService.saveTask(baseExcelListenerDto);
}
taskClient.sendMessage("文件上传成功", clueRecords.get(0).getCreateBy(), "create");

@ -3,6 +3,7 @@ package com.baiye.task;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import com.baiye.common.CommonLog;
import com.baiye.module.dao.TurnCrmLogRepository;
import com.baiye.util.FileZipUtil;
import lombok.RequiredArgsConstructor;
@ -31,6 +32,7 @@ public class FileTask {
@Scheduled(cron = "0 0 3 * * ? ")
@Transactional(rollbackFor = Exception.class)
public void compress() throws Exception {
CommonLog.info("---开始压缩文件夹---");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
DateTime date = DateUtil.yesterday();
String path = URL + dateFormat.format(date);
@ -38,7 +40,6 @@ public class FileTask {
if (directory) {
FileZipUtil.zipFile(new File(path), "zip");
}
log.info("-----------------------------压缩文件夹开始时间{}-----------------------------", DateUtil.now());
}
/**
@ -47,6 +48,7 @@ public class FileTask {
@Scheduled(cron = "0 0 1 * * ? ")
@Transactional(rollbackFor = Exception.class)
public void emptyLog(){
CommonLog.info("---清空日志---");
turnCrmLogRepository.deleteAll();
}
}

@ -95,4 +95,4 @@ platform:
logstash:
url: localhost:5044
url: 127.0.0.1:5044

Loading…
Cancel
Save