dongbw 8 лет назад
Родитель
Сommit
10f92a8fe5

+ 87 - 1
donate-service/src/main/java/com/uas/service/donate/Impl/ProjectServiceImpl.java

@@ -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);
     }

+ 3 - 3
donate-service/src/main/java/com/uas/service/donate/WebAppConfiguration.java

@@ -47,8 +47,8 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter {
 
 	@Override
 	public void addViewControllers(ViewControllerRegistry registry) {
-/*		registry.addViewController("/").setViewName("index");*/
-	//	registry.addViewController("/index").setViewName("index");
+		registry.addViewController("/").setViewName("project");
+		registry.addViewController("/index").setViewName("index");
 		registry.addViewController("/console").setViewName("console");
 		registry.addViewController("/login/proxy").setViewName("proxyLogin");
 		registry.addViewController("/logout/proxy").setViewName("proxyLogout");
@@ -78,7 +78,7 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter {
 		registry.addViewController("/project").setViewName("project");
 		registry.addViewController("/activity").setViewName("activity");
 		registry.addViewController("/approval").setViewName("approval");
-		registry.addViewController("/person").setViewName("person");
+		registry.addViewController("/userCenter").setViewName("userCenter");
 		registry.addViewController("/userAgreement").setViewName("userAgreement");
 		registry.addViewController("/institutionsToIntroduce").setViewName("institutionsToIntroduce");
 		super.addViewControllers(registry);

+ 73 - 8
donate-service/src/main/java/com/uas/service/donate/controller/ProjectController.java

@@ -2,7 +2,11 @@ package com.uas.service.donate.controller;
 
 
 import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.web.bind.RequestState;
 import com.uas.service.donate.model.Project;
+import com.uas.service.donate.model.SearchFilter;
 import com.uas.service.donate.service.ProjectService;
 import com.uas.service.donate.util.FileUrl;
 import com.uas.service.donate.util.HttpUtils;
@@ -10,17 +14,11 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
-import javax.persistence.criteria.CriteriaBuilder;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -32,6 +30,54 @@ public class ProjectController {
     @Autowired
     private ProjectService projectService ;
 
+    /**
+     * 获取项目列表 (全部)
+     * @return
+     */
+    @RequestMapping(value = "/get", method = RequestMethod.GET)
+    @ResponseBody
+    public Page<Project> getAllProjects(PageParams params, String searchFilter){
+        PageInfo pageInfo = new PageInfo(params);
+        SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+        return projectService.getAllProjects(pageInfo, filter);
+    }
+
+    /**
+     * 获取项目列表 (筹备中)
+     * @return
+     */
+    @RequestMapping(value = "/get", params = RequestState.WAITING, method = RequestMethod.GET)
+    @ResponseBody
+    public Page<Project> getWaitingProjects(PageParams params, String searchFilter){
+        PageInfo pageInfo = new PageInfo(params);
+        SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+        return projectService.getWaitingProjects(pageInfo, filter);
+    }
+
+    /**
+     * 获取项目列表 (进行中)
+     * @return
+     */
+    @RequestMapping(value = "/get", params = RequestState.TODO, method = RequestMethod.GET)
+    @ResponseBody
+    public Page<Project> getTodoProjects(PageParams params, String searchFilter){
+        PageInfo pageInfo = new PageInfo(params);
+        SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+        return projectService.getTodoProjects(pageInfo, filter);
+    }
+
+    /**
+     * 获取项目列表 (已结束)
+     * @return
+     */
+    @RequestMapping(value = "/get", params = RequestState.END, method = RequestMethod.GET)
+    @ResponseBody
+    public Page<Project> getEndProjects(PageParams params, String searchFilter){
+        PageInfo pageInfo = new PageInfo(params);
+        SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+        return projectService.getEndProjects(pageInfo, filter);
+    }
+
     /**
      * 返回所有进行中和已结束的捐款项目,移动端不分页专用
      * @return
@@ -124,7 +170,7 @@ public class ProjectController {
      * @return
      */
     @ResponseBody
-    @RequestMapping("/detail")
+    @RequestMapping("/detail/{id}")
     public Project showDetail(@PathVariable("id") Long id) {
         return projectService.findOne(id);
     }
@@ -176,6 +222,25 @@ public class ProjectController {
         return project;
     }
 
+    /**
+     * 查询所有项目历史参加人数和筹款金额
+     * @return
+     */
+    @RequestMapping(value = "/sumDonation", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap getTotalDonation () {
+        return projectService.getTotalDonation();
+    }
 
 
+    /**
+     * 查询当前项目历史参加人数
+     * @param id
+     * @return
+     */
+    @RequestMapping(value = "/donation/{id}", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap getTotalDonation (@PathVariable("id") Long id) {
+        return projectService.getThisDonation(id);
+    }
 }

+ 96 - 0
donate-service/src/main/java/com/uas/service/donate/controller/ProjectListController.java

@@ -0,0 +1,96 @@
+package com.uas.service.donate.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.platform.core.model.PageInfo;
+import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.web.bind.RequestState;
+import com.uas.service.donate.model.Project;
+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.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@Controller
+@RequestMapping("/api/project")
+public class ProjectListController {
+
+    @Autowired
+    private ProjectService projectService ;
+
+    /**
+     * 获取项目列表 (全部)
+     * @return
+     */
+    @RequestMapping(method = RequestMethod.GET)
+    @ResponseBody
+    public Page<Project> getAllProjects(PageParams params, String searchFilter){
+        PageInfo pageInfo = new PageInfo(params);
+        SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+        return projectService.getAllProjects(pageInfo, filter);
+    }
+
+    /**
+     * 获取项目列表 (筹备中)
+     * @return
+     */
+    @RequestMapping(params = RequestState.WAITING, method = RequestMethod.GET)
+    @ResponseBody
+    public Page<Project> getWaitingProjects(PageParams params, String searchFilter){
+        PageInfo pageInfo = new PageInfo(params);
+        SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+        return projectService.getWaitingProjects(pageInfo, filter);
+    }
+
+    /**
+     * 获取项目列表 (进行中)
+     * @return
+     */
+    @RequestMapping(params = RequestState.TODO, method = RequestMethod.GET)
+    @ResponseBody
+    public Page<Project> getTodoProjects(PageParams params, String searchFilter){
+        PageInfo pageInfo = new PageInfo(params);
+        SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+        return projectService.getTodoProjects(pageInfo, filter);
+    }
+
+    /**
+     * 获取项目列表 (已结束)
+     * @return
+     */
+    @RequestMapping(params = RequestState.END, method = RequestMethod.GET)
+    @ResponseBody
+    public Page<Project> getEndProjects(PageParams params, String searchFilter){
+        PageInfo pageInfo = new PageInfo(params);
+        SearchFilter filter = JSONObject.parseObject(searchFilter, SearchFilter.class);
+        return projectService.getEndProjects(pageInfo, filter);
+    }
+
+    /**
+     * 查询所有项目历史参加人数和筹款金额
+     * @return
+     */
+    @RequestMapping(value = "/sumDonation", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap getTotalDonation () {
+        return projectService.getTotalDonation();
+    }
+
+
+    /**
+     * 查询当前项目历史参加人数
+     * @param id
+     * @return
+     */
+    @RequestMapping(value = "/donation/{id}", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap getTotalDonation (@PathVariable("id") Long id) {
+        return projectService.getThisDonation(id);
+    }
+}

+ 14 - 0
donate-service/src/main/java/com/uas/service/donate/dao/ProjectDao.java

@@ -51,4 +51,18 @@ public interface ProjectDao extends JpaRepository<Project,Long>,JpaSpecification
      */
     @Query("select distinct(p.area) from Project p")
     List<String> allArea();
+
+    /**
+     * 总历史参加人数
+     * @return
+     */
+    @Query("select count(i) from ProjectRecode i")
+    Integer findAllJoinedHistory();
+
+    /**
+     * 总历史捐款金额
+     * @return
+     */
+    @Query("select sum(p.totalAmount) from Project p where p.status = 1 and p.publish = 1")
+    Double findAllDonationHistory();
 }

+ 1 - 0
donate-service/src/main/java/com/uas/service/donate/dao/ProjectRecodeDao.java

@@ -40,4 +40,5 @@ public interface ProjectRecodeDao extends JpaRepository<ProjectRecode,Long>,JpaS
     @Query("select sum(amount) from ProjectRecode where proId=:proId")
     Double sumamount(@Param("proId")Long proId);
 
+    List<ProjectRecode> findByProId(Long proId);
 }

+ 4 - 2
donate-service/src/main/java/com/uas/service/donate/model/ActivityRecode.java

@@ -1,6 +1,8 @@
 package com.uas.service.donate.model;
 
 
+import org.hibernate.engine.internal.Cascade;
+
 import javax.persistence.*;
 import java.util.Date;
 
@@ -28,7 +30,7 @@ public class ActivityRecode {
     private Long uuid;
 
     /**
-     * 优软云账号
+     * 用户信息
      */
     @OneToOne(cascade = { CascadeType.REFRESH })
     @JoinColumn(name="ar_uuid", insertable = false, updatable = false)
@@ -62,7 +64,7 @@ public class ActivityRecode {
     /**
      * 活动参与记录关联参与的活动
      */
-    @OneToOne
+    @OneToOne(cascade = CascadeType.REFRESH)
     @JoinColumn(name = "activityId",insertable = false, updatable = false)
     private Activity activity;
 

+ 42 - 0
donate-service/src/main/java/com/uas/service/donate/model/Project.java

@@ -49,6 +49,12 @@ public class Project implements Serializable{
     @Column(name = "pro_area")
     private String area;
 
+    /**
+     * 具体分类
+     */
+    @Column(name = "pro_classify")
+    private String classify;
+
     /**
      * 项目所在省
      */
@@ -61,6 +67,11 @@ public class Project implements Serializable{
     @Column(name = "pro_city")
     private String city;
 
+    /**
+     * 项目所在区
+     */
+    @Column(name = "pro_district")
+    private String district;
 
     /**
      *筹款目标
@@ -155,6 +166,13 @@ public class Project implements Serializable{
     @Column(name = "pro_org_id")
     private Long orgId;
 
+    /**
+     * 机构信息
+     */
+    @OneToOne(cascade = CascadeType.REFRESH)
+    @JoinColumn(name = "pro_org_id", insertable = false, updatable = false)
+    private Org organization;
+
     /**
      * 所属机构名
      */
@@ -511,4 +529,28 @@ public class Project implements Serializable{
     public void setJoinAmount(Long joinAmount) {
         this.joinAmount = joinAmount;
     }
+
+    public Org getOrganization() {
+        return organization;
+    }
+
+    public void setOrganization(Org organization) {
+        this.organization = organization;
+    }
+
+    public String getClassify() {
+        return classify;
+    }
+
+    public void setClassify(String classify) {
+        this.classify = classify;
+    }
+
+    public String getDistrict() {
+        return district;
+    }
+
+    public void setDistrict(String district) {
+        this.district = district;
+    }
 }

+ 4 - 0
donate-service/src/main/java/com/uas/service/donate/model/ProjectEvolve.java

@@ -4,6 +4,10 @@ import javax.persistence.*;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
+/**
+ * 项目进展
+ */
+
 @Entity
 @Table(name = "donate$projectevolve")
 public class ProjectEvolve {

+ 1 - 0
donate-service/src/main/java/com/uas/service/donate/model/ProjectRecode.java

@@ -1,6 +1,7 @@
 package com.uas.service.donate.model;
 
 import javax.persistence.*;
+import java.util.Date;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 

+ 94 - 0
donate-service/src/main/java/com/uas/service/donate/model/SearchFilter.java

@@ -0,0 +1,94 @@
+package com.uas.service.donate.model;
+
+/**
+ * 单据查询搜索条件
+ *
+ */
+public class SearchFilter {
+
+	/**
+	 * 关键词
+	 */
+	private String keyword;
+
+	/**
+	 * 捐赠领域
+	 */
+	private Short area;
+	/**
+	 * 开始日期
+	 */
+	private Long fromDate;
+	/**
+	 * 结束日期
+	 */
+	private Long endDate;
+	/**
+	 * 开始交货日期
+	 */
+	private Long fromDelivery;
+	/**
+	 * 结束交货日期
+	 */
+	private Long endDelivery;
+	/**
+	 * 开始价格
+	 */
+	private Double fromPrice;
+	/**
+	 * 结束价格
+	 */
+	private Double endPrice;
+
+	
+	public String getKeyword() {
+		return keyword;
+	}
+	public void setKeyword(String keyword) {
+		this.keyword = keyword;
+	}
+	public Long getFromDate() {
+		return fromDate;
+	}
+	public void setFromDate(Long fromDate) {
+		this.fromDate = fromDate;
+	}
+	public Long getEndDate() {
+		return endDate;
+	}
+	public void setEndDate(Long endDate) {
+		this.endDate = endDate;
+	}
+	public Long getFromDelivery() {
+		return fromDelivery;
+	}
+	public void setFromDelivery(Long fromDelivery) {
+		this.fromDelivery = fromDelivery;
+	}
+	public Long getEndDelivery() {
+		return endDelivery;
+	}
+	public void setEndDelivery(Long endDelivery) {
+		this.endDelivery = endDelivery;
+	}
+	public Double getFromPrice() {
+		return fromPrice;
+	}
+	public void setFromPrice(Double fromPrice) {
+		this.fromPrice = fromPrice;
+	}
+	public Double getEndPrice() {
+		return endPrice;
+	}
+	public void setEndPrice(Double endPrice) {
+		this.endPrice = endPrice;
+	}
+
+	public Short getArea() {
+		return area;
+	}
+
+	public void setArea(Short area) {
+		this.area = area;
+	}
+}

+ 26 - 0
donate-service/src/main/java/com/uas/service/donate/model/SystemSession.java

@@ -0,0 +1,26 @@
+package com.uas.service.donate.model;
+
+
+/**
+ * 每次请求服务器时,用户信息存放在本次线程中
+ * 
+ * @author yingp
+ * 
+ */
+public class SystemSession {
+
+	private static ThreadLocal<User> local = new ThreadLocal<User>();
+
+	public static void setUser(User session) {
+		local.set(session);
+	}
+
+	public static User getUser() {
+		return local.get();
+	}
+	
+	public static void clear() {
+		local.set(null);
+	}
+
+}

+ 11 - 0
donate-service/src/main/java/com/uas/service/donate/model/User.java

@@ -23,6 +23,9 @@ public class User implements Serializable{
     @Column(name = "user_identity")
     private Integer identity;
 
+    @Column(name = "user_uu")
+    private Long userUU;
+
     public Long getId() {
         return id;
     }
@@ -54,4 +57,12 @@ public class User implements Serializable{
     public void setIdentity(Integer identity) {
         this.identity = identity;
     }
+
+    public Long getUserUU() {
+        return userUU;
+    }
+
+    public void setUserUU(Long userUU) {
+        this.userUU = userUU;
+    }
 }

+ 18 - 1
donate-service/src/main/java/com/uas/service/donate/service/ProjectService.java

@@ -1,10 +1,12 @@
 package com.uas.service.donate.service;
 
 
+import com.uas.platform.core.model.PageInfo;
 import com.uas.service.donate.model.Project;
+import com.uas.service.donate.model.SearchFilter;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
-import org.springframework.data.repository.query.Param;
+import org.springframework.ui.ModelMap;
 
 import java.util.List;
 
@@ -28,6 +30,21 @@ public interface ProjectService {
 
     Page<Project> findPageArea(String area,Pageable pageable);
 
+    /**
+     * 获取所有项目历史数据
+     * @return
+     */
+    ModelMap getTotalDonation();
+
+    Page<Project> getAllProjects(PageInfo pageInfo, SearchFilter filter);
+
+    Page<Project> getEndProjects(PageInfo pageInfo, SearchFilter filter);
+
+    Page<Project> getTodoProjects(PageInfo pageInfo, SearchFilter filter);
+
+    Page<Project> getWaitingProjects(PageInfo pageInfo, SearchFilter filter);
+
+    ModelMap getThisDonation(Long id);
     List<Project> findProjects();
 
     //查询项目方法

+ 1 - 1
donate-service/src/main/resources/spring/dubbo.xml

@@ -4,7 +4,7 @@
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
 	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
 
-    <dubbo:application name="b2b_consumer" />
+    <dubbo:application name="donate_service" />
 
     <dubbo:registry address="${zk.url}" check="false" />