ApplyUserSpaceServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. package com.uas.sso.service.impl;
  2. import com.uas.sso.AccountConfig;
  3. import com.uas.sso.support.SystemSession;
  4. import com.uas.sso.util.StringUtil;
  5. import org.springframework.data.domain.Page;
  6. import com.uas.sso.core.Status;
  7. import com.uas.sso.dao.ApplyUserSpaceDao;
  8. import com.uas.sso.dao.UserDao;
  9. import com.uas.sso.dao.UserspaceDao;
  10. import com.uas.sso.entity.*;
  11. import com.uas.sso.exception.VisibleError;
  12. import com.uas.sso.service.AppService;
  13. import com.uas.sso.service.ApplyUserSpaceService;
  14. import com.uas.sso.service.UserService;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.data.domain.PageRequest;
  17. import org.springframework.data.domain.Pageable;
  18. import org.springframework.data.jpa.domain.Specification;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.util.CollectionUtils;
  21. import org.springframework.util.StringUtils;
  22. import javax.persistence.criteria.*;
  23. import java.sql.Timestamp;
  24. import java.util.*;
  25. /**
  26. * @author wangmh
  27. * @create 2018-01-12 16:19
  28. * @desc
  29. **/
  30. @Service
  31. public class ApplyUserSpaceServiceImpl implements ApplyUserSpaceService {
  32. @Autowired
  33. private ApplyUserSpaceDao applyUserSpaceDao;
  34. @Autowired
  35. private UserDao userDao;
  36. @Autowired
  37. private UserspaceDao userspaceDao;
  38. @Autowired
  39. private UserService userService;
  40. @Autowired
  41. private AppService appService;
  42. @Override
  43. public void applyBindUserSpace(Long userUU, Long spaceUU) {
  44. // 找到用户信息
  45. User user = userDao.findOne(userUU);
  46. if (user == null) {
  47. throw new VisibleError("手机号未注册");
  48. }
  49. // 找到企业信息
  50. Userspace userspace = userspaceDao.findOne(spaceUU);
  51. if (userspace == null) {
  52. throw new VisibleError("该企业未注册");
  53. }
  54. // 判断用户是否在该企业
  55. for (Userspace us : user.getUserSpaces()) {
  56. if (us.getSpaceUU().equals(userspace.getSpaceUU())) {
  57. throw new VisibleError("你已在该企业");
  58. }
  59. }
  60. // 判断是否已申请
  61. List<ApplyUserSpace> applyUserSpaces = applyUserSpaceDao.findByUserUUAndSpaceUUAndStatus(user.getUserUU(), userspace.getSpaceUU(), Status.UNAUDIT.getCode());
  62. if (!CollectionUtils.isEmpty(applyUserSpaces)) {
  63. throw new VisibleError("你已申请该企业,请耐心等待管理员审核");
  64. }
  65. // 添加绑定状态
  66. ApplyUserSpace applyUserSpace = new ApplyUserSpace(user, userspace);
  67. applyUserSpaceDao.save(applyUserSpace);
  68. }
  69. @Override
  70. public Page<ApplyUserSpace> findApplyAll(Integer pageNumber, Integer pageSize, final Long spaceUU) {
  71. Pageable pageable = PageInfo.pageRequest(new PageRequest(pageNumber, pageSize));
  72. Page<ApplyUserSpace> page = applyUserSpaceDao.findAll(new Specification<ApplyUserSpace>() {
  73. @Override
  74. public Predicate toPredicate(Root<ApplyUserSpace> root,
  75. CriteriaQuery<?> query, CriteriaBuilder cb) {
  76. List<Predicate> list = new ArrayList<>();
  77. list.add(cb.equal(root.get("spaceUU").as(Long.class), spaceUU));
  78. Predicate[] predicates = new Predicate[list.size()];
  79. predicates = list.toArray(predicates);
  80. return cb.and(predicates);
  81. }
  82. }, pageable);
  83. return new PageInfo<>(page.getContent(), pageable, page.getTotalElements());
  84. }
  85. @Override
  86. public Map<String, Integer> applyCount(Long spaceUU) {
  87. List<Map<String, Object>> list = applyUserSpaceDao.applyCountByStatus(spaceUU);
  88. Map<String, Integer> data = new HashMap<>(list.size());
  89. for (Map<String, Object> map : list) {
  90. data.put(String.valueOf(map.get("status")), Integer.valueOf(map.get("count").toString()));
  91. }
  92. return data;
  93. }
  94. @Override
  95. public Page<ApplyUserSpace> findUserApply(Integer pageNumber, Integer pageSize, final Long userUU) {
  96. Pageable pageable = PageInfo.pageRequest(new PageRequest(pageNumber, pageSize));
  97. Page<ApplyUserSpace> page = applyUserSpaceDao.findAll(new Specification<ApplyUserSpace>() {
  98. @Override
  99. public Predicate toPredicate(Root<ApplyUserSpace> root,
  100. CriteriaQuery<?> query, CriteriaBuilder cb) {
  101. List<Predicate> list = new ArrayList<>();
  102. list.add(cb.equal(root.get("userUU").as(String.class), userUU));
  103. Predicate[] predicates = new Predicate[list.size()];
  104. predicates = list.toArray(predicates);
  105. return cb.and(predicates);
  106. }
  107. }, pageable);
  108. return new PageInfo<>(page.getContent(), pageable, page.getTotalElements());
  109. }
  110. @Override
  111. public void agreeApply(Long userUU, Long id) {
  112. // 判断当前用户是否为管理员
  113. UserAccount loginUser = SystemSession.getUserAccount();
  114. Userspace userspace = userspaceDao.findOne(loginUser.getSpaceUU());
  115. if (loginUser.getSpaceUU().equals(userspace.getAdminUU())) {
  116. throw new VisibleError("不是管理员,不允许操作");
  117. }
  118. // 找到申请信息
  119. ApplyUserSpace applyUserSpace = applyUserSpaceDao.findOne(id);
  120. if (!userUU.equals(applyUserSpace.getUserUU()) || !loginUser.getSpaceUU().equals(applyUserSpace.getSpaceUU())) {
  121. // 简单的校验下参数
  122. throw new VisibleError("参数错误");
  123. }
  124. // 修改状态
  125. applyUserSpace.setStatus(Status.AGREE.getCode());
  126. applyUserSpace.setProcessTime(new Timestamp(System.currentTimeMillis()));
  127. applyUserSpaceDao.save(applyUserSpace);
  128. // 将用户添加到企业
  129. userService.bindUserspace(AccountConfig.ACCOUNT_CENTER, userUU, loginUser.getSpaceUU());
  130. }
  131. @Override
  132. public void disagreeApply(Long userUU, Long id) {
  133. // 判断当前用户是否为管理员
  134. UserAccount loginUser = SystemSession.getUserAccount();
  135. Userspace userspace = userspaceDao.findOne(loginUser.getSpaceUU());
  136. if (loginUser.getSpaceUU().equals(userspace.getAdminUU())) {
  137. throw new VisibleError("不是管理员,不允许操作");
  138. }
  139. // 找到申请信息
  140. ApplyUserSpace applyUserSpace = applyUserSpaceDao.findOne(id);
  141. if (!userUU.equals(applyUserSpace.getUserUU())) {
  142. // 简单的校验下参数
  143. throw new VisibleError("参数错误");
  144. }
  145. // 修改状态
  146. applyUserSpace.setStatus(Status.DISAGREE.getCode());
  147. applyUserSpace.setProcessTime(new Timestamp(System.currentTimeMillis()));
  148. applyUserSpaceDao.save(applyUserSpace);
  149. }
  150. @Override
  151. public Page<ApplyUserSpace> findApplyByUserUU(final Long userUU, int page, int size) {
  152. Pageable pageable = PageInfo.pageRequest(page, size);
  153. Page<ApplyUserSpace> pApply = applyUserSpaceDao.findAll(new Specification<ApplyUserSpace>() {
  154. @Override
  155. public Predicate toPredicate(Root<ApplyUserSpace> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
  156. List<Predicate> list = new ArrayList<>();
  157. list.add(cb.equal(root.join("user", JoinType.INNER).get("userUU").as(Long.class), userUU));
  158. Predicate[] predicates = new Predicate[list.size()];
  159. predicates = list.toArray(predicates);
  160. return cb.and(predicates);
  161. }
  162. }, pageable);
  163. return new PageInfo<>(pApply.getContent(), pageable, pApply.getTotalElements());
  164. }
  165. @Override
  166. public void auditApply(Long userUU, Long id, Integer status) {
  167. // 找到申请信息
  168. ApplyUserSpace applyUserSpace = applyUserSpaceDao.findOne(id);
  169. if (!userUU.equals(applyUserSpace.getUserUU())) {
  170. // 简单的校验下参数
  171. throw new VisibleError("参数错误");
  172. }
  173. // 修改状态
  174. applyUserSpace.setStatus(status);
  175. applyUserSpace.setProcessTime(new Timestamp(System.currentTimeMillis()));
  176. applyUserSpace = applyUserSpaceDao.save(applyUserSpace);
  177. if (status == Status.AGREE.getCode()) {
  178. // 将用户添加到企业
  179. userService.bindUserspace(AccountConfig.ACCOUNT_CENTER, userUU, applyUserSpace.getSpaceUU());
  180. }
  181. }
  182. @Override
  183. public Page<ApplyUserSpace> findApplyAllToMall(Integer pageNumber, Integer pageSize, final Long spaceUU, final Integer status, final String keyword) {
  184. Pageable pageable = PageInfo.pageRequest(new PageRequest(pageNumber, pageSize));
  185. Page<ApplyUserSpace> page = applyUserSpaceDao.findAll(new Specification<ApplyUserSpace>() {
  186. @Override
  187. public Predicate toPredicate(Root<ApplyUserSpace> root,
  188. CriteriaQuery<?> query, CriteriaBuilder cb) {
  189. List<Predicate> list = new ArrayList<>();
  190. list.add(cb.equal(root.get("spaceUU").as(Long.class), spaceUU));
  191. if (StringUtils.isEmpty(status)) {
  192. list.add(cb.equal(root.get("status").as(Integer.class), Status.UNAUDIT.getCode()));
  193. } else {
  194. list.add(cb.equal(root.get("status").as(Integer.class), status));
  195. }
  196. if (!StringUtils.isEmpty(keyword)) {
  197. Predicate predicate1 = cb.like(root.join("user", JoinType.INNER).get("vipName").as(String.class), "%" + keyword + "%");
  198. Predicate predicate2 = cb.like(root.join("user", JoinType.INNER).get("userUU").as(String.class), "%" + keyword + "%");
  199. Predicate predicate3 = cb.like(root.join("user", JoinType.INNER).get("mobile").as(String.class), "%" + keyword + "%");
  200. list.add(cb.or(predicate1, predicate2, predicate3));
  201. }
  202. Predicate[] predicates = new Predicate[list.size()];
  203. predicates = list.toArray(predicates);
  204. query.where(cb.and(predicates));
  205. return query.getRestriction();
  206. }
  207. }, pageable);
  208. return new PageInfo<>(page.getContent(), pageable, page.getTotalElements());
  209. }
  210. }