|
@@ -7,8 +7,10 @@ import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.izouma.jiashanxia.config.Constants;
|
|
import com.izouma.jiashanxia.config.Constants;
|
|
|
import com.izouma.jiashanxia.domain.User;
|
|
import com.izouma.jiashanxia.domain.User;
|
|
|
|
|
+import com.izouma.jiashanxia.dto.EmployeeDTO;
|
|
|
import com.izouma.jiashanxia.dto.PageQuery;
|
|
import com.izouma.jiashanxia.dto.PageQuery;
|
|
|
import com.izouma.jiashanxia.dto.UserRegister;
|
|
import com.izouma.jiashanxia.dto.UserRegister;
|
|
|
|
|
+import com.izouma.jiashanxia.enums.AuthorityName;
|
|
|
import com.izouma.jiashanxia.exception.BusinessException;
|
|
import com.izouma.jiashanxia.exception.BusinessException;
|
|
|
import com.izouma.jiashanxia.repo.UserRepo;
|
|
import com.izouma.jiashanxia.repo.UserRepo;
|
|
|
import com.izouma.jiashanxia.security.Authority;
|
|
import com.izouma.jiashanxia.security.Authority;
|
|
@@ -31,10 +33,12 @@ import org.springframework.data.domain.Page;
|
|
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
+import javax.persistence.criteria.Predicate;
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@Service
|
|
@Service
|
|
|
@Slf4j
|
|
@Slf4j
|
|
@@ -208,4 +212,65 @@ public class UserService {
|
|
|
}
|
|
}
|
|
|
userRepo.save(user);
|
|
userRepo.save(user);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ 我的推广
|
|
|
|
|
+ */
|
|
|
|
|
+ public List<User> myPromotion(Long userId) {
|
|
|
|
|
+ User user = userRepo.findById(userId).orElseThrow(new BusinessException("无用户"));
|
|
|
|
|
+ List<User> users = new ArrayList<>();
|
|
|
|
|
+ // 如果是企业创始人,查出下级所有推广
|
|
|
|
|
+ if (user.getTeamFounder()) {
|
|
|
|
|
+ List<User> employees = userRepo.findAllByCompanyId(user.getCompanyId());
|
|
|
|
|
+ List<Long> collect = employees.stream().map(User::getId).collect(Collectors.toList());
|
|
|
|
|
+ users.addAll(userRepo.findAllByParentIn(collect));
|
|
|
|
|
+ }
|
|
|
|
|
+ users.addAll(userRepo.findAllByParent(userId));
|
|
|
|
|
+ return users;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ 我的推广
|
|
|
|
|
+ */
|
|
|
|
|
+ public Page<User> myPromotion(PageQuery pageQuery, Long userId) {
|
|
|
|
|
+ User user = userRepo.findById(userId).orElseThrow(new BusinessException("无用户"));
|
|
|
|
|
+
|
|
|
|
|
+ return userRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
|
|
|
|
|
+ List<Predicate> and = JpaUtils.toPredicates(pageQuery, User.class, root, criteriaQuery, criteriaBuilder);
|
|
|
|
|
+ if (user.getTeamFounder()) {
|
|
|
|
|
+ List<User> employees = userRepo.findAllByCompanyId(user.getCompanyId());
|
|
|
|
|
+ List<Long> collect = employees.stream().map(User::getId).collect(Collectors.toList());
|
|
|
|
|
+ and.add(root.get("parent").in(collect));
|
|
|
|
|
+ } else {
|
|
|
|
|
+ and.add(criteriaBuilder.equal(root.get("parent"), userId));
|
|
|
|
|
+ }
|
|
|
|
|
+ return criteriaBuilder.and(and.toArray(new Predicate[0]));
|
|
|
|
|
+ }), JpaUtils.toPageRequest(pageQuery));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /*
|
|
|
|
|
+ 我的员工
|
|
|
|
|
+ */
|
|
|
|
|
+ public Page<User> myEmployee(PageQuery pageQuery, User user) {
|
|
|
|
|
+// User user = userRepo.findById(id).orElseThrow(new BusinessException("无用户"));
|
|
|
|
|
+ Set<Authority> authorities = user.getAuthorities();
|
|
|
|
|
+ // 管理员返回所有
|
|
|
|
|
+ if (authorities.contains(Authority.get(AuthorityName.ROLE_ADMIN))) {
|
|
|
|
|
+ return userRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
|
|
|
|
|
+ List<Predicate> and = JpaUtils.toPredicates(pageQuery, User.class, root, criteriaQuery, criteriaBuilder);
|
|
|
|
|
+ and.add(root.get("companyId").isNotNull());
|
|
|
|
|
+ return criteriaBuilder.and(and.toArray(new Predicate[0]));
|
|
|
|
|
+ }), JpaUtils.toPageRequest(pageQuery));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (ObjectUtil.isNull(user.getCompanyId())) {
|
|
|
|
|
+ throw new BusinessException("无企业");
|
|
|
|
|
+ }
|
|
|
|
|
+ // 返回企业员工
|
|
|
|
|
+ return userRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
|
|
|
|
|
+ List<Predicate> and = JpaUtils.toPredicates(pageQuery, User.class, root, criteriaQuery, criteriaBuilder);
|
|
|
|
|
+ and.add(criteriaBuilder.equal(root.get("companyId"), user.getCompanyId()));
|
|
|
|
|
+ return criteriaBuilder.and(and.toArray(new Predicate[0]));
|
|
|
|
|
+ }), JpaUtils.toPageRequest(pageQuery));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|