Merge remote-tracking branch 'origin/master'

# Conflicts:
#	ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java
master
bynt 2 years ago
commit 46f2b975b8

@ -0,0 +1,51 @@
package com.baiye.config;
import com.wf.captcha.base.Captcha;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
/**
* {@link ArithmeticCaptchaRewrite}
*/
public abstract class ArithmeticCaptchaAbstractRewrite extends Captcha {
private String arithmeticString;
public ArithmeticCaptchaAbstractRewrite() {
this.setLen(2);
}
protected char[] alphas() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < this.len; ++i) {
sb.append(num(10));
if (i < this.len - 1) {
sb.append("+");
}
}
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
try {
this.chars = String.valueOf(engine.eval(sb.toString().replaceAll("x", "*")));
} catch (ScriptException var5) {
var5.printStackTrace();
}
sb.append("=?");
this.arithmeticString = sb.toString();
return this.chars.toCharArray();
}
public String getArithmeticString() {
this.checkAlpha();
return this.arithmeticString;
}
public void setArithmeticString(String arithmeticString) {
this.arithmeticString = arithmeticString;
}
}

@ -0,0 +1,82 @@
package com.baiye.config;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.ImageIO;
/**
* {@link ArithmeticCaptchaAbstractRewrite}
*/
public class ArithmeticCaptchaRewrite extends ArithmeticCaptchaAbstractRewrite {
public ArithmeticCaptchaRewrite() {
}
public ArithmeticCaptchaRewrite(int width, int height) {
this();
this.setWidth(width);
this.setHeight(height);
}
public ArithmeticCaptchaRewrite(int width, int height, int len) {
this(width, height);
this.setLen(len);
}
public ArithmeticCaptchaRewrite(int width, int height, int len, Font font) {
this(width, height, len);
this.setFont(font);
}
public boolean out(OutputStream out) {
this.checkAlpha();
return this.graphicsImage(this.getArithmeticString().toCharArray(), out);
}
public String toBase64() {
return this.toBase64("data:image/png;base64,");
}
private boolean graphicsImage(char[] strs, OutputStream out) {
try {
BufferedImage bi = new BufferedImage(this.width, this.height, 1);
Graphics2D g2d = (Graphics2D)bi.getGraphics();
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, this.width, this.height);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
this.drawOval(2, g2d);
g2d.setFont(this.getFont());
FontMetrics fontMetrics = g2d.getFontMetrics();
int fW = this.width / strs.length;
int fSp = (fW - (int)fontMetrics.getStringBounds("8", g2d).getWidth()) / 2;
for(int i = 0; i < strs.length; ++i) {
g2d.setColor(this.color());
int fY = this.height - (this.height - (int)fontMetrics.getStringBounds(String.valueOf(strs[i]), g2d).getHeight() >> 1);
g2d.drawString(String.valueOf(strs[i]), i * fW + fSp + 3, fY - 3);
}
g2d.dispose();
ImageIO.write(bi, "png", out);
out.flush();
boolean var20 = true;
return var20;
} catch (IOException var18) {
var18.printStackTrace();
} finally {
try {
out.close();
} catch (IOException var17) {
var17.printStackTrace();
}
}
return false;
}
}

@ -48,7 +48,8 @@ public class KaptchaTextCreator {
switch (captchaConfig.getCodeType()) { switch (captchaConfig.getCodeType()) {
case arithmetic: case arithmetic:
// 算术类型 https://gitee.com/whvse/EasyCaptcha // 算术类型 https://gitee.com/whvse/EasyCaptcha
captcha = new ArithmeticCaptcha(captchaConfig.getWidth(), captchaConfig.getHeight()); //captcha = new ArithmeticCaptcha(captchaConfig.getWidth(), captchaConfig.getHeight());
captcha = new ArithmeticCaptchaRewrite(captchaConfig.getWidth(), captchaConfig.getHeight());
// 几位数运算,默认是两位 // 几位数运算,默认是两位
captcha.setLen(captchaConfig.getLength()); captcha.setLen(captchaConfig.getLength());
break; break;

@ -1,9 +1,7 @@
package com.baiye.modules.platform.rest; package com.baiye.modules.platform.rest;
import com.baiye.annotation.Inner;
import com.baiye.http.CommonResponse; import com.baiye.http.CommonResponse;
import com.baiye.http.ResponseCode; import com.baiye.http.ResponseCode;
import com.baiye.model.dto.ClueDto;
import com.baiye.model.dto.OrganizeQueryCriteria; import com.baiye.model.dto.OrganizeQueryCriteria;
import com.baiye.modules.platform.domain.Organize; import com.baiye.modules.platform.domain.Organize;
import com.baiye.modules.platform.domain.OrganizeUser; import com.baiye.modules.platform.domain.OrganizeUser;

@ -133,6 +133,7 @@ public interface OrganizeService {
Map<Long, String> findNameById(Set<Long> organizeIds); Map<Long, String> findNameById(Set<Long> organizeIds);
Map<Long, Map<String, Object>> findMemberIdByOrganizeIds(List<Long> organizeIds); Map<Long, Map<String, Object>> findMemberIdByOrganizeIds(List<Long> organizeIds);
/** /**
* idid() * idid()
*/ */

@ -551,7 +551,6 @@ public class OrganizeServiceImpl implements OrganizeService {
// 判断角色,管理员只查组长角色的用户 // 判断角色,管理员只查组长角色的用户
if (roleId.equals(RoleNumberConstants.MINUS_EIGHT_NUMBER) || roleId.equals(RoleNumberConstants.MINUS_TEN_NUMBER)) { if (roleId.equals(RoleNumberConstants.MINUS_EIGHT_NUMBER) || roleId.equals(RoleNumberConstants.MINUS_TEN_NUMBER)) {
roles.add(RoleNumberConstants.MINUS_NINE_NUMBER); roles.add(RoleNumberConstants.MINUS_NINE_NUMBER);
roles.add(RoleNumberConstants.MINUS_TEN_NUMBER);
} else { } else {
roles.add(RoleNumberConstants.MINUS_FIVE_NUMBER); roles.add(RoleNumberConstants.MINUS_FIVE_NUMBER);
} }

@ -5,7 +5,6 @@ import com.baiye.modules.report.entity.dto.StatisticalReportDTO;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author wujingtao * @author wujingtao
@ -15,25 +14,17 @@ public interface QueryReportService {
/** /**
* *
*
* @return
*/ */
CommonResponse<Object> getReportByAll(); CommonResponse<Object> getReportByAll();
/** /**
* *
*
* @param s
* @return
*/ */
CommonResponse<Object> getReportByTask(StatisticalReportDTO s); CommonResponse<Object> getReportByTask(StatisticalReportDTO s);
/** /**
* *
*
* @param response
* @param s
*/ */
void downloadTaskReport(HttpServletResponse response, StatisticalReportDTO s); void downloadTaskReport(HttpServletResponse response, StatisticalReportDTO s);
@ -41,79 +32,41 @@ public interface QueryReportService {
/** /**
* *
*
* @param s
* @return
*/ */
CommonResponse<Object> getReportByOrganize(StatisticalReportDTO s); CommonResponse<Object> getReportByOrganize(StatisticalReportDTO s);
/** /**
* *
*
* @param response
* @param s
*/ */
void downloadOrganizeReport(HttpServletResponse response, StatisticalReportDTO s); void downloadOrganizeReport(HttpServletResponse response, StatisticalReportDTO s);
/** /**
* *
*
* @param beginTime
* @param endTime
* @param memberId
* @return
*/ */
CommonResponse<Object> getMemberReport(String beginTime, String endTime, Long memberId); CommonResponse<Object> getMemberReport(String beginTime, String endTime, Long memberId);
/** /**
* *
*
* @param memberId
* @return
*/ */
CommonResponse<Object> getMemberReportByMonth(Long memberId); CommonResponse<Object> getMemberReportByMonth(Long memberId);
/** /**
* *
*
* @param response
* @param beginTime
* @param endTime
* @param memberId
* @return
*/ */
void downloadMemberReport(HttpServletResponse response, String beginTime, String endTime, Long memberId); void downloadMemberReport(HttpServletResponse response, String beginTime, String endTime, Long memberId);
/** /**
* 线 * 线
*
* @param clueIds
* @return
*/ */
CommonResponse<List<Long>> getTurnOnIds(List<Long> clueIds); CommonResponse<List<Long>> getTurnOnIds(List<Long> clueIds);
/** /**
* 线 * 线
*
* @param clueId
* @return
*/ */
CommonResponse<Object> getCallRecordDetails(Long clueId); CommonResponse<Object> getCallRecordDetails(Long clueId);
/** /**
* 线 * 线
*
* @param response
* @param clueId
*/ */
void downloadCallRecordDetails(HttpServletResponse response, Long clueId); void downloadCallRecordDetails(HttpServletResponse response, Long clueId);
Map<Long, Map<String, Object>> findMemberIdByOrganizeIds(List<Long> organizeIds);
/**
*
*
* @param companyId
*/
void deleteReport(Long companyId);
} }

@ -3,7 +3,6 @@ package com.baiye.modules.report.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
@ -17,7 +16,6 @@ import com.baiye.http.CommonResponse;
import com.baiye.model.enums.ClueStageEnum; import com.baiye.model.enums.ClueStageEnum;
import com.baiye.model.enums.ResponseCode; import com.baiye.model.enums.ResponseCode;
import com.baiye.model.vo.ResSourceLabel; import com.baiye.model.vo.ResSourceLabel;
import com.baiye.modules.platform.repository.OrganizeUserRepository;
import com.baiye.modules.report.dao.TaskReportRepository; import com.baiye.modules.report.dao.TaskReportRepository;
import com.baiye.modules.report.dao.UserReportRepository; import com.baiye.modules.report.dao.UserReportRepository;
import com.baiye.modules.report.entity.TaskReport; import com.baiye.modules.report.entity.TaskReport;
@ -31,7 +29,6 @@ import com.baiye.modules.platform.domain.Clue;
import com.baiye.modules.platform.domain.Organize; import com.baiye.modules.platform.domain.Organize;
import com.baiye.modules.platform.domain.Task; import com.baiye.modules.platform.domain.Task;
import com.baiye.modules.system.domain.User; import com.baiye.modules.system.domain.User;
import com.baiye.modules.platform.domain.OrganizeUser;
import com.baiye.modules.platform.repository.OrganizeRepository; import com.baiye.modules.platform.repository.OrganizeRepository;
import com.baiye.modules.platform.repository.TaskRepository; import com.baiye.modules.platform.repository.TaskRepository;
import com.baiye.modules.system.repository.UserRepository; import com.baiye.modules.system.repository.UserRepository;
@ -50,7 +47,6 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.*; import java.util.*;
@ -69,7 +65,6 @@ public class QueryReportServiceImpl implements QueryReportService {
private final TaskRepository taskRepository; private final TaskRepository taskRepository;
private final AllCallInfoRepository allCallInfoRepository; private final AllCallInfoRepository allCallInfoRepository;
private final OrganizeUserRepository organizeUserRepository;
private final TaskReportRepository taskReportRepository; private final TaskReportRepository taskReportRepository;
private final OrganizeRepository organizeRepository; private final OrganizeRepository organizeRepository;
private final UserReportRepository userReportRepository; private final UserReportRepository userReportRepository;
@ -905,29 +900,4 @@ public class QueryReportServiceImpl implements QueryReportService {
public User getMember(Long id) { public User getMember(Long id) {
return userRepository.findUserById(id); return userRepository.findUserById(id);
} }
@Override
public Map<Long, Map<String, Object>> findMemberIdByOrganizeIds(List<Long> organizeIds) {
List<Organize> byIdIn = organizeRepository.findByIdIn(organizeIds);
List<OrganizeUser> userIdByOrganizeId = organizeUserRepository.findUserIdByOrganizeId(organizeIds);
HashMap<Long, List<OrganizeUser>> mapByOrganize = new HashMap<>(userIdByOrganizeId.stream().collect(Collectors.groupingBy(OrganizeUser::getOrganizeId, Collectors.toList())));
Map<Long, Map<String, Object>> map = new HashMap<>();
for (Organize organize : byIdIn) {
Map<String, Object> mapUser = new HashMap<>();
mapUser.put("name", organize.getOrganizeName());
List<OrganizeUser> organizeUsers = mapByOrganize.get(organize.getId());
List<Long> collect = organizeUsers.stream().map(OrganizeUser::getUserId).collect(Collectors.toList());
mapUser.put("memberIds", collect);
map.put(organize.getId(), mapUser);
}
return map;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteReport(Long companyId) {
taskReportRepository.deleteByCompanyId(companyId);
userReportRepository.deleteByCompanyId(companyId);
}
} }

@ -22,6 +22,7 @@ import com.baiye.constant.AdPlatFormConstants;
import com.baiye.constant.DefaultNumberConstants; import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.RoleNumberConstants; import com.baiye.constant.RoleNumberConstants;
import com.baiye.exception.BadRequestException; import com.baiye.exception.BadRequestException;
import com.baiye.model.dto.DelUserDTO;
import com.baiye.model.dto.RoleSmallDto; import com.baiye.model.dto.RoleSmallDto;
import com.baiye.model.dto.UserDto; import com.baiye.model.dto.UserDto;
import com.baiye.model.dto.UserFavorOfExcel; import com.baiye.model.dto.UserFavorOfExcel;
@ -176,19 +177,17 @@ public class UserController {
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@ApiOperation("删除用户") @ApiOperation("删除用户")
@DeleteMapping @DeleteMapping
@PreAuthorize("@el.check('user:del')") @PreAuthorize("@el.check('user:del')")
public ResponseEntity<Object> delete(@RequestBody Set<Long> ids) { public ResponseEntity<Object> delete(@Validated @RequestBody DelUserDTO delUserDTO) {
for (Long id : ids) { Long userId = delUserDTO.getUserId();
Integer currentLevel = Collections.min(roleService.findByUsersId(SecurityUtils.getCurrentUserId()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); Integer currentLevel = Collections.min(roleService.findByUsersId(SecurityUtils.getCurrentUserId()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList()));
Integer optLevel = Collections.min(roleService.findByUsersId(id).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); Integer optLevel = Collections.min(roleService.findByUsersId(userId).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList()));
if (currentLevel > optLevel) { if (currentLevel > optLevel) {
throw new BadRequestException("角色权限不足,不能删除:" + userService.findById(id).getUsername()); throw new BadRequestException("角色权限不足,不能删除:" + userService.findById(userId).getUsername());
}
} }
userService.delete(ids); userService.delete(delUserDTO);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }

@ -16,6 +16,7 @@
package com.baiye.modules.system.service; package com.baiye.modules.system.service;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import com.baiye.model.dto.DelUserDTO;
import com.baiye.model.dto.UserDto; import com.baiye.model.dto.UserDto;
import com.baiye.model.dto.UserFavorOfExcel; import com.baiye.model.dto.UserFavorOfExcel;
import com.baiye.modules.system.domain.User; import com.baiye.modules.system.domain.User;
@ -66,9 +67,9 @@ public interface UserService {
/** /**
* *
* *
* @param ids / * @param delUserDTO /
*/ */
void delete(Set<Long> ids); void delete(DelUserDTO delUserDTO);
/** /**
* *

@ -37,6 +37,11 @@ import com.baiye.model.enums.ResponseCode;
import com.baiye.modules.platform.domain.*; import com.baiye.modules.platform.domain.*;
import com.baiye.modules.platform.repository.*; import com.baiye.modules.platform.repository.*;
import com.baiye.modules.platform.service.*; import com.baiye.modules.platform.service.*;
import com.baiye.modules.platform.service.dto.*;
import com.baiye.modules.report.dao.TaskReportRepository;
import com.baiye.modules.report.dao.UserReportRepository;
import com.baiye.modules.report.service.QueryReportService;
import com.baiye.modules.system.mapstruct.UserMapper;
import com.baiye.modules.platform.service.dto.BuyComboDTO; import com.baiye.modules.platform.service.dto.BuyComboDTO;
import com.baiye.modules.platform.service.dto.CompanyDto; import com.baiye.modules.platform.service.dto.CompanyDto;
import com.baiye.modules.platform.service.dto.CreateUserDTO; import com.baiye.modules.platform.service.dto.CreateUserDTO;
@ -55,11 +60,13 @@ import com.google.common.collect.Sets;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.cache.Cache;
import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -120,12 +127,13 @@ public class UserServiceImpl implements UserService {
private final TaskOrganizeRepository taskOrganizeRepository; private final TaskOrganizeRepository taskOrganizeRepository;
private final TaskUserDistributionRepository taskUserDistributionRepository; private final TaskUserDistributionRepository taskUserDistributionRepository;
private final TaskReportRepository taskReportRepository;
private final UserReportRepository userReportRepository;
private final ExtensionNumberService extensionNumberService; private final ExtensionNumberService extensionNumberService;
// private final QueryReportService queryReportService;
private final TaskImeiService taskImeiService; private final TaskImeiService taskImeiService;
private final TaskTagRepository taskTagRepository; private final TaskTagRepository taskTagRepository;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean fileCreateUser(List<UserFavorOfExcel> excels, Long companyId, UserDto userDto) { public Boolean fileCreateUser(List<UserFavorOfExcel> excels, Long companyId, UserDto userDto) {
@ -536,10 +544,8 @@ public class UserServiceImpl implements UserService {
delCaches(user.getId(), user.getUsername()); delCaches(user.getId(), user.getUsername());
} }
@Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete(Set<Long> ids) { public void delete2(Set<Long> ids) {
for (Long id : ids) { for (Long id : ids) {
// 清理缓存 // 清理缓存
UserDto user = findById(id); UserDto user = findById(id);
@ -553,11 +559,9 @@ public class UserServiceImpl implements UserService {
userRepository.deleteAllByIdIn(ids); userRepository.deleteAllByIdIn(ids);
} }
/** @Override
* TODO
*/
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void delete2(DelUserDTO delUserDTO) { public void delete(DelUserDTO delUserDTO) {
Long userId = delUserDTO.getUserId(); Long userId = delUserDTO.getUserId();
Long replaceUserId = delUserDTO.getReplaceUserId(); Long replaceUserId = delUserDTO.getReplaceUserId();
UserDto user = findById(userId); UserDto user = findById(userId);
@ -602,7 +606,8 @@ public class UserServiceImpl implements UserService {
//11、删除分机号 //11、删除分机号
extensionNumberService.deleteExtensionNumberByCompany(user.getCompanyId()); extensionNumberService.deleteExtensionNumberByCompany(user.getCompanyId());
//12、删除统计信息 //12、删除统计信息
//.deleteReport(user.getCompanyId()); taskReportRepository.deleteByCompanyId(user.getCompanyId());
userReportRepository.deleteByCompanyId(user.getCompanyId());
//13.删除imei和tag //13.删除imei和tag
taskImeiService.deleteTaskImei(taskIds); taskImeiService.deleteTaskImei(taskIds);
taskTagRepository.deleteByTaskIds(taskIds); taskTagRepository.deleteByTaskIds(taskIds);
@ -610,7 +615,7 @@ public class UserServiceImpl implements UserService {
} else if (roleIds.contains(RoleNumberConstants.MINUS_NINE_NUMBER)) { } else if (roleIds.contains(RoleNumberConstants.MINUS_NINE_NUMBER)) {
// 二: 删除或者替换组长 // 二: 删除或者替换组长
if (replaceUserId == null) throw new BadRequestException("请选择替换组长"); if (replaceUserId == null) throw new BadRequestException("请选择替换组长");
if (CollUtil.isNotEmpty(replaceRoleIds) && !roleIds.contains(RoleNumberConstants.MINUS_NINE_NUMBER)) if (CollUtil.isNotEmpty(replaceRoleIds) && !replaceRoleIds.contains(RoleNumberConstants.MINUS_NINE_NUMBER))
throw new BadRequestException("请选择组长角色的用户"); throw new BadRequestException("请选择组长角色的用户");
organizeUserRepository.updateUser(userId, replaceUserId); organizeUserRepository.updateUser(userId, replaceUserId);
organizeUserRepository.updateCreateBy(replaceUserId, userId); organizeUserRepository.updateCreateBy(replaceUserId, userId);
@ -618,7 +623,11 @@ public class UserServiceImpl implements UserService {
} else if (roleIds.contains(RoleNumberConstants.MINUS_FIVE_NUMBER)) { } else if (roleIds.contains(RoleNumberConstants.MINUS_FIVE_NUMBER)) {
// 三: 删除或者替换业务员 // 三: 删除或者替换业务员
if (replaceUserId == null) organizeUserRepository.deleteByUserId(userId); if (replaceUserId == null) organizeUserRepository.deleteByUserId(userId);
else organizeUserRepository.updateUser(userId, replaceUserId); else {
if (replaceRoleIds.contains(RoleNumberConstants.MINUS_NINE_NUMBER))
organizeUserRepository.deleteByUserId(userId);
else organizeUserRepository.updateUser(userId, replaceUserId);
}
this.sourceDel(userId, replaceUserId); this.sourceDel(userId, replaceUserId);
} }
//分机号 //分机号

@ -62,6 +62,6 @@ public interface ExtensionNumberRepository extends JpaRepository<ExtensionNumber
int deleteByCompanyId(Long companyId); int deleteByCompanyId(Long companyId);
@Modifying @Modifying
@Query(value = "update tb_extension_number c set c.status =?1 where c.number = (select number from tb_extension_user where member_id =?2", nativeQuery = true) @Query(value = "update tb_extension_number c set c.status =?1 where c.number in (select teu.number from tb_extension_user teu where teu.member_id =?2)", nativeQuery = true)
int updateExtensionNumber(Integer status, Long userId); int updateExtensionNumber(Integer status, Long userId);
} }

@ -53,6 +53,6 @@ public interface ExtensionUserRepository extends JpaRepository<ExtensionUser, Lo
* @param companyId * @param companyId
*/ */
@Modifying @Modifying
@Query(value = "delete from tb_extension_user where number in (select number from tb_extension_number where company_id = ?1)", nativeQuery = true) @Query(value = "delete from tb_extension_user eu where eu.number in (select ten.number from tb_extension_number ten where ten.company_id = ?1)", nativeQuery = true)
void deleteByCompanyId(Long companyId); void deleteByCompanyId(Long companyId);
} }

@ -176,11 +176,9 @@ public class ExtensionNumberServiceImpl implements ExtensionNumberService {
extensionNumberRepository.updateExtensionNumber(0, userId); extensionNumberRepository.updateExtensionNumber(0, userId);
extensionUserRepository.deleteByMemberId(userId); extensionUserRepository.deleteByMemberId(userId);
} else { } else {
int i = extensionUserRepository.deleteByMemberId(replaceUserId);
if (i > 0) extensionNumberRepository.updateExtensionNumber(0, replaceUserId);
extensionUserRepository.updateByNumber(userId, replaceUserId); extensionUserRepository.updateByNumber(userId, replaceUserId);
int i = extensionNumberRepository.updateExtensionNumber(0, replaceUserId);
if (i > 0) {
extensionUserRepository.deleteByMemberId(replaceUserId);
}
} }
} }
} }

@ -3,10 +3,14 @@ package com.baiye.model.dto;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Set;
@Data @Data
public class DelUserDTO { public class DelUserDTO {
@ApiModelProperty("删除的用户ID") @ApiModelProperty("删除的用户ID")
@NotNull(message = "删除用户ID不能尅空")
private Long userId; private Long userId;
@ApiModelProperty("替换人用户ID") @ApiModelProperty("替换人用户ID")

@ -142,8 +142,8 @@ public interface ClueMiddleRepository extends JpaRepository<ClueMiddle, Long>, J
/** /**
* *
*/ */
@Query(value = "SELECT task_id,count(*) FROM `tb_clue_middle` where task_id in ?1 GROUP BY task_id", nativeQuery = true) @Query(value = "SELECT task_id as taskId,count(*) as num FROM `tb_clue_middle` where task_id in ?1 GROUP BY task_id", nativeQuery = true)
Map<Long,Integer> findTaskIdCount(Set<Long> taskIds); List<Map<String,Object>> findTaskIdCount(Set<Long> taskIds);
@Query(value = " select * from tb_clue_middle where (clue_stage_time between ?2 and ?3) and task_id in ?1 and (coalesce (?4,null) is null or clue_stage =?4)", nativeQuery = true) @Query(value = " select * from tb_clue_middle where (clue_stage_time between ?2 and ?3) and task_id in ?1 and (coalesce (?4,null) is null or clue_stage =?4)", nativeQuery = true)

@ -33,6 +33,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigInteger;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -530,7 +531,14 @@ public class ClueServiceImpl implements ClueService {
clueMiddleRepository.deleteByMemberId(userId); clueMiddleRepository.deleteByMemberId(userId);
//3、删除拓客或者DMP资源数据 //3、删除拓客或者DMP资源数据
clueTalkRepository.deleteByMemberId(userId); clueTalkRepository.deleteByMemberId(userId);
return clueMiddleRepository.findTaskIdCount(taskIds); List<Map<String,Object>> mapList = clueMiddleRepository.findTaskIdCount(taskIds);
Map<Long, Integer> taskCount = new HashMap<>();
for (Map<String, Object> map : mapList) {
BigInteger taskId = (BigInteger)map.get("taskId");
BigInteger num = (BigInteger)map.get("num");
taskCount.put(taskId.longValue(), num.intValue());
}
return taskCount;
} }
public void delete(List<ClueDto> clueAll, Set<Long> clueIds) { public void delete(List<ClueDto> clueAll, Set<Long> clueIds) {

@ -257,8 +257,8 @@ public class ReportCrmServiceImpl implements ReportCrmService {
Double turnoverAmount = 0.00; Double turnoverAmount = 0.00;
Double actualAmount = 0.00; Double actualAmount = 0.00;
for (TurnoverRecord turnoverRecord : turnoverRecords) { for (TurnoverRecord turnoverRecord : turnoverRecords) {
NumberUtil.add(turnoverAmount, turnoverRecord.getTurnoverAmount()); turnoverAmount = NumberUtil.add(turnoverAmount, turnoverRecord.getTurnoverAmount());
NumberUtil.add(actualAmount, turnoverRecord.getActualAmount()); actualAmount = NumberUtil.add(actualAmount, turnoverRecord.getActualAmount());
} }
UploadCrmTurnoverDTO uploadCrmTurnoverDTO = new UploadCrmTurnoverDTO(); UploadCrmTurnoverDTO uploadCrmTurnoverDTO = new UploadCrmTurnoverDTO();
uploadCrmTurnoverDTO.setMemberName(memberName); uploadCrmTurnoverDTO.setMemberName(memberName);

@ -1,10 +1,10 @@
package com.baiye.task; package com.baiye.task;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.FileConstant; import com.baiye.constant.FileConstant;
import com.baiye.model.dto.ClueDto; import com.baiye.model.dto.ClueDto;
import com.baiye.module.dao.ClueBackupsRepository; import com.baiye.module.dao.ClueBackupsRepository;
import com.baiye.module.entity.Clue;
import com.baiye.module.entity.ClueBackups; import com.baiye.module.entity.ClueBackups;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* *
@ -34,6 +35,11 @@ public class ClueBackupsTask {
for (ClueDto clue : clueAll) { for (ClueDto clue : clueAll) {
ClueBackups clueBackups = new ClueBackups(); ClueBackups clueBackups = new ClueBackups();
BeanUtils.copyProperties(clue, clueBackups,"createTime"); BeanUtils.copyProperties(clue, clueBackups,"createTime");
Object sourceLabel = clue.getSourceLabel();
if (!Objects.isNull(sourceLabel)){
List<String> label = JSONUtil.toList(JSONUtil.parseArray(sourceLabel), String.class);
clueBackups.setSourceLabel(label);
}
list.add(clueBackups); list.add(clueBackups);
if (list.size() >= FileConstant.ONE_THOUSAND_NUMBER){ if (list.size() >= FileConstant.ONE_THOUSAND_NUMBER){
clueBackupsRepository.saveAll(list); clueBackupsRepository.saveAll(list);

@ -66,7 +66,7 @@ storage:
de_symbol: / de_symbol: /
download-template: http://8.130.96.163:8001/source/download/1/custom.xlsx download-template: http://8.130.96.163:8001/source/download/1/custom.xlsx
download-template-move: http://8.130.96.163:8001/source/download/1/dynamictemplate.xlsx download-template-move: http://8.130.96.163:8001/source/download/1/dynamictemplate.xlsx
download-template-toker: /usr/local/webapp/ad-platform/ad-platform-source/toker.xlsx download-template-toker: http://8.130.96.163:8001/source/download/1/toker.xlsx
download-auditing-file: http://8.130.96.163:8001/source/auditingFiles/ download-auditing-file: http://8.130.96.163:8001/source/auditingFiles/
private-key: /usr/local/webapp/platform/source/template/privatekey private-key: /usr/local/webapp/platform/source/template/privatekey

Loading…
Cancel
Save