RestrictProjectServiceImpl.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. package com.goafanti.business.service.impl;
  2. import com.goafanti.business.bo.InputRestrictProject;
  3. import com.goafanti.business.bo.RestrictProjectPageList;
  4. import com.goafanti.business.service.RestrictProjectService;
  5. import com.goafanti.common.constant.AFTConstants;
  6. import com.goafanti.common.dao.RestrictProjectMapper;
  7. import com.goafanti.common.dao.UserBusinessMapper;
  8. import com.goafanti.common.dao.UserMapper;
  9. import com.goafanti.common.dao.UserTransferLogMapper;
  10. import com.goafanti.common.error.BusinessException;
  11. import com.goafanti.common.model.RestrictProject;
  12. import com.goafanti.common.model.User;
  13. import com.goafanti.common.model.UserBusiness;
  14. import com.goafanti.common.model.UserTransferLog;
  15. import com.goafanti.core.mybatis.BaseMybatisDao;
  16. import com.goafanti.core.mybatis.page.Pagination;
  17. import com.goafanti.core.shiro.token.TokenManager;
  18. import com.goafanti.customer.bo.BusinessListBo;
  19. import com.goafanti.customer.bo.FollowBusinessBo;
  20. import org.springframework.stereotype.Service;
  21. import javax.annotation.Resource;
  22. import java.text.SimpleDateFormat;
  23. import java.time.LocalDateTime;
  24. import java.time.temporal.ChronoUnit;
  25. import java.util.*;
  26. @Service
  27. public class RestrictProjectServiceImpl extends BaseMybatisDao<RestrictProjectMapper> implements RestrictProjectService {
  28. @Resource
  29. private RestrictProjectMapper restrictProjectMapper;
  30. @Resource
  31. private UserTransferLogMapper userTransferLogMapper;
  32. @Resource
  33. private UserBusinessMapper userBusinessMapper;
  34. @Resource
  35. private UserMapper userMapper;
  36. @Override
  37. public int add(InputRestrictProject in) {
  38. String aid = TokenManager.getAdminId();
  39. in.setAid(aid);
  40. in.setType(1);
  41. in.setLockTime(new Date());
  42. RestrictProject use = restrictProjectMapper.selectByPid(in);
  43. if (use != null && use.getType() != 0){
  44. throw new BusinessException("该项目已存在");
  45. }
  46. if(use ==null){
  47. restrictProjectMapper.insertSelective(in);
  48. }else if (use.getType() == 0){
  49. in.setId(use.getId());
  50. restrictProjectMapper.updateByPrimaryKeySelective(in);
  51. }
  52. UserBusiness ub=new UserBusiness();
  53. ub.setId(UUID.randomUUID().toString());
  54. ub.setAid(aid);
  55. ub.setUid(in.getUid());
  56. ub.setBusinessProjectId(in.getPid());
  57. ub.setCustomerStatus(in.getCustomerStatus());
  58. ub.setFollowSituation(in.getFollowSituation());
  59. ub.setRemarks("领取限定项目触发");
  60. userBusinessMapper.insertSelective(ub);
  61. addUserLog(in,0);
  62. return 1;
  63. }
  64. /**
  65. *
  66. * @param i 0=新增 1=移除
  67. */
  68. private void addUserLog(RestrictProject in, int i) {
  69. addUserLog(in,i,null);
  70. }
  71. @Override
  72. public Object list(InputRestrictProject in) {
  73. in.setAid(TokenManager.getAdminId());
  74. return restrictProjectMapper.selectByUidAndAid(in);
  75. }
  76. @Override
  77. public Object update(Integer id,Integer type,String takeAid) {
  78. Date date = new Date();
  79. RestrictProject in = new RestrictProject();
  80. RestrictProject use = restrictProjectMapper.selectByPrimaryKey(id);
  81. in.setId(id);
  82. if (type==0){
  83. in.setReleaseTime(date);
  84. in.setType(0);
  85. addUserLog(use,1);
  86. }else if (type==1){
  87. in.setLockTime(date);
  88. in.setAid(takeAid);
  89. in.setPid(use.getPid());
  90. in.setUid(use.getUid());
  91. addUserLog(use,2,takeAid);
  92. }
  93. return restrictProjectMapper.updateByPrimaryKeySelective(in);
  94. }
  95. @Override
  96. public Object pageList(InputRestrictProject in) {
  97. Map<String,Object> param = new HashMap<>();
  98. if (in.getUserName()!=null)param.put("userName",in.getUserName());
  99. if (in.getType()!=null)param.put("type",in.getType());
  100. if (in.getStartTime()!=null)param.put("startTime",in.getStartTime());
  101. if (in.getEndTime()!=null)param.put("endTime",in.getEndTime()+" 23:59:59");
  102. if (in.getProjectName()!=null)param.put("projectName",in.getProjectName());
  103. if (!TokenManager.hasRole(AFTConstants.SUPERADMIN)){
  104. param.put("aid",TokenManager.getAdminId());
  105. }
  106. Pagination<RestrictProjectPageList> page =
  107. (Pagination<RestrictProjectPageList>) findPage("RestrictProjectList", "RestrictProjectCount",
  108. param, in.getPageNo(), in.getPageSize());
  109. pushPageList((List<RestrictProjectPageList>)page.getList());
  110. return page;
  111. }
  112. @Override
  113. public Object getFollowDetails(String uid) {
  114. User user = userMapper.findUserAccountDetail(uid);
  115. FollowBusinessBo fbb = new FollowBusinessBo();
  116. SimpleDateFormat format = new SimpleDateFormat(AFTConstants.YYYYMMDDHHMMSS);
  117. fbb.setFollowTime(format.format(new Date()));
  118. fbb.setIdentifyName(user.getIdentifyName());
  119. fbb.setUid(uid);
  120. List<BusinessListBo> businessListBos = userBusinessMapper.selectBusinessByUAid(uid, TokenManager.getAdminId());
  121. fbb.setUserBusinessList(businessListBos);
  122. return fbb;
  123. }
  124. private void pushPageList(List<RestrictProjectPageList> list) {
  125. LocalDateTime now = LocalDateTime.now();
  126. now=now.withHour(0).withMinute(0).withSecond(0).withNano(0);
  127. for (RestrictProjectPageList e : list) {
  128. LocalDateTime lockTime = e.getLockTime().toInstant().atZone(java.time.ZoneId.systemDefault()).toLocalDateTime();
  129. lockTime=lockTime.withHour(0).withMinute(0).withSecond(0).withNano(0);
  130. if (e.getType()==1){
  131. LocalDateTime endTime = lockTime.plusDays(30);
  132. long between = ChronoUnit.DAYS.between(now, endTime);
  133. e.setPrivateDays(between>0?(int)between:0);
  134. }else if (e.getType()==2){
  135. LocalDateTime endTime = lockTime.plusDays(270);
  136. long between = ChronoUnit.DAYS.between(now, endTime);
  137. e.setSignDays(between>0?(int)between:0);
  138. }
  139. }
  140. }
  141. private void addUserLog(RestrictProject in, int i, String takeAid) {
  142. UserTransferLog log = new UserTransferLog();
  143. log.setUid(in.getUid());
  144. log.setPid(in.getPid());
  145. if (i == 0){
  146. log.setAid(in.getAid());
  147. log.setType(15);
  148. } else if (i == 1) {
  149. log.setAid(in.getAid());
  150. log.setType(16);
  151. }else if (i == 2) {
  152. log.setAid(TokenManager.getAdminId());
  153. log.setTakeAid(takeAid);
  154. log.setType(17);
  155. }
  156. userTransferLogMapper.insertSelective(log);
  157. }
  158. }