|
|
@@ -1,15 +1,27 @@
|
|
|
package com.uas.service.donate.Impl;
|
|
|
|
|
|
|
|
|
+import com.uas.platform.core.model.PageInfo;
|
|
|
+import com.uas.platform.core.persistence.criteria.PredicateUtils;
|
|
|
import com.uas.service.donate.dao.ProjectDao;
|
|
|
+import com.uas.service.donate.dao.ProjectRecodeDao;
|
|
|
import com.uas.service.donate.model.Project;
|
|
|
import com.uas.service.donate.model.ProjectRecode;
|
|
|
+import com.uas.service.donate.model.SearchFilter;
|
|
|
import com.uas.service.donate.service.ProjectService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
+import org.springframework.data.jpa.domain.Specification;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
-
|
|
|
+import org.springframework.ui.ModelMap;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+
|
|
|
+import javax.persistence.criteria.CriteriaBuilder;
|
|
|
+import javax.persistence.criteria.CriteriaQuery;
|
|
|
+import javax.persistence.criteria.Predicate;
|
|
|
+import javax.persistence.criteria.Root;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
@@ -19,6 +31,9 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
@Autowired
|
|
|
private ProjectDao projectDao;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ProjectRecodeDao projectRecodeDao;
|
|
|
+
|
|
|
//获取所有审核通过,进行中或者已结束的捐款项目
|
|
|
public Page<Project> findAll(Pageable pageable){
|
|
|
|
|
|
@@ -52,6 +67,77 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
return projectDao.findArea(area);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取所有项目历史数据
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ModelMap getTotalDonation() {
|
|
|
+ ModelMap map = new ModelMap();
|
|
|
+ Integer joinedPersonHistory = projectDao.findAllJoinedHistory();
|
|
|
+ Double totalDonationsHistory = projectDao.findAllDonationHistory();
|
|
|
+ map.put("joinedPersonHistory", joinedPersonHistory);
|
|
|
+ map.put("totalDonationsHistory", totalDonationsHistory);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<Project> getAllProjects(final PageInfo pageInfo, final SearchFilter filter) {
|
|
|
+// if (StringUtils.hasText(filter.getKeyword())) {
|
|
|
+// String keyword = filter.getKeyword();
|
|
|
+// // name code proSummary orgName
|
|
|
+// pageInfo.expression(PredicateUtils.like("name", keyword, false));
|
|
|
+// pageInfo.expression(PredicateUtils.like("code", keyword, false));
|
|
|
+// pageInfo.expression(PredicateUtils.like("proSummary", keyword, false));
|
|
|
+// pageInfo.expression(PredicateUtils.like("orgName", keyword, false));
|
|
|
+// }
|
|
|
+ return projectDao.findAll(new Specification<Project>() {
|
|
|
+ public Predicate toPredicate(Root<Project> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
|
|
|
+ if (null != filter) {
|
|
|
+ String keyword = filter.getKeyword();
|
|
|
+ if (StringUtils.hasText(keyword)) {
|
|
|
+ pageInfo.expression(PredicateUtils.or(PredicateUtils.like("name", keyword, false),
|
|
|
+ PredicateUtils.like("code", keyword, false),
|
|
|
+ PredicateUtils.like("proSummary", keyword, false),
|
|
|
+ PredicateUtils.like("orgName", keyword, false)));
|
|
|
+ }
|
|
|
+ // 默认全部分类设置值为0
|
|
|
+ if (null != filter.getArea() && 0 != filter.getArea()) {
|
|
|
+ pageInfo.expression(PredicateUtils.eq("area", filter.getArea(), false));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ query.where(pageInfo.getPredicates(root, query, builder));
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }, pageInfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<Project> getEndProjects(final PageInfo pageInfo, final SearchFilter filter) {
|
|
|
+ pageInfo.expression(PredicateUtils.lt("endTime", new Date(), false));
|
|
|
+ return getAllProjects(pageInfo, filter);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<Project> getTodoProjects(final PageInfo pageInfo, final SearchFilter filter) {
|
|
|
+ pageInfo.expression(PredicateUtils.lte("startTime", new Date(), false));
|
|
|
+ pageInfo.expression(PredicateUtils.gte("endTime", new Date(), false));
|
|
|
+ return getAllProjects(pageInfo, filter);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<Project> getWaitingProjects(PageInfo pageInfo, SearchFilter filter) {
|
|
|
+ pageInfo.expression(PredicateUtils.gt("startTime", new Date(), false));
|
|
|
+ return getAllProjects(pageInfo, filter);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ModelMap getThisDonation(Long proId) {
|
|
|
+ List<ProjectRecode> recodes = projectRecodeDao.findByProId(proId);
|
|
|
+ return new ModelMap("joinedPersonHistory", recodes.size());
|
|
|
+ }
|
|
|
+
|
|
|
public Page<Project> findPageArea(String area,Pageable pageable){
|
|
|
return projectDao.findPageArea(area,pageable);
|
|
|
}
|