소스 검색

app新增接口

dongbw 7 년 전
부모
커밋
f9f4c138f9

+ 45 - 3
donate-service/src/main/java/com/uas/service/donate/controller/AppController.java

@@ -9,6 +9,8 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 
@@ -40,6 +42,11 @@ public class AppController {
     @Autowired
     private UserService userService;
 
+    /**
+     * 默认排行行数
+     */
+    private static final Integer DEFAULT_RANK_NUMBER = 10;
+
     /**
      * 返回移动端首页轮播图
      */
@@ -47,14 +54,18 @@ public class AppController {
     @RequestMapping(value = "/appIndex",method = RequestMethod.GET)
     public ModelMap returnapp(@RequestParam(value = "useFor",defaultValue ="donate-app")String useFor){
         ModelMap modelMap=new ModelMap();
-        Double totality=projectRecodeService.totality();
+        Double totality = projectRecodeService.totality();
+        totality = new BigDecimal(totality).setScale(2, RoundingMode.UP).doubleValue();
         //存入捐款总数
         modelMap.put("totality",totality);
-        List<JSONObject> carouselList=carouselService.getCarousels(useFor);
+        Integer times = projectRecodeService.sumAllPersonTimes();
+        //存入捐款总人数
+        modelMap.put("totality",totality);
+        List<JSONObject> carouselList = carouselService.getCarousels(useFor);
         //存入首页轮播图
         modelMap.put("carouselList",carouselList);
         //查询项目中所有领域分类
-        List<String> allArea=projectService.allArea();
+        List<String> allArea = projectService.allArea();
         modelMap.put("allArea",allArea);
         return modelMap;
     }
@@ -164,4 +175,35 @@ public class AppController {
         return modelMap;
 
     }
+
+
+    /**
+     *  项目捐款排行
+     * @param id  项目id
+     * @param number 行数 不传默认10
+     * @return 项目捐款排行
+     */
+    @ResponseBody
+    @RequestMapping(value = "/rank",method = RequestMethod.GET)
+    public List<DonateRank> donateRank(Long id, Integer number) {
+        if (null == number) {
+            number = DEFAULT_RANK_NUMBER;
+        }
+        return projectRecodeService.donateRank(id, number);
+
+    }
+
+    /**
+     * 点击查看项目详情
+     * @param id 项目id
+     * @return 项目
+     */
+    @ResponseBody
+    @RequestMapping(value = "/project/detail",method = RequestMethod.GET)
+    public ModelMap showDetail(Long id) {
+        ModelMap map = new ModelMap();
+        Project project =  projectService.findOne(id);
+        map.put("project", project);
+        return map;
+    }
 }

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

@@ -1,5 +1,6 @@
 package com.uas.service.donate.dao;
 
+import com.uas.service.donate.model.DonateRank;
 import com.uas.service.donate.model.ProjectRecode;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
@@ -45,4 +46,11 @@ public interface ProjectRecodeDao extends JpaRepository<ProjectRecode,Long>,JpaS
     //查询某项目的捐款明细
     @Query("from ProjectRecode where proId=:proId")
     List<ProjectRecode> findProjectDetail(@Param("proId")Long proId);
+
+    /**
+     * 查询总捐款人次
+     * @return 总捐款人次
+     */
+    @Query("select count(1) from ProjectRecode where status = 2")
+    Integer sumAllPersonTimes();
 }

+ 74 - 0
donate-service/src/main/java/com/uas/service/donate/model/DonateRank.java

@@ -0,0 +1,74 @@
+package com.uas.service.donate.model;
+
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
+public class DonateRank {
+
+
+    /**
+     * 用户uu号
+     */
+    private Long userUU;
+
+    /**
+     * 用户名
+     */
+    private String name;
+
+    /**
+     * 用户手机号
+     */
+    private String tel;
+
+    /**
+     * 用户捐款额
+     */
+    private Double amount;
+
+    /**
+     * 用户排名
+     */
+    private Integer rank;
+
+    public Long getUserUU() {
+        return userUU;
+    }
+
+    public void setUserUU(Long userUU) {
+        this.userUU = userUU;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public Double getAmount() {
+        return new BigDecimal(amount).setScale(2, RoundingMode.UP).doubleValue();
+    }
+
+    public void setAmount(Double amount) {
+        this.amount = amount;
+    }
+
+    public Integer getRank() {
+        return rank;
+    }
+
+    public void setRank(Integer rank) {
+        this.rank = rank;
+    }
+}

+ 15 - 0
donate-service/src/main/java/com/uas/service/donate/service/ProjectRecodeService.java

@@ -1,5 +1,6 @@
 package com.uas.service.donate.service;
 
+import com.uas.service.donate.model.DonateRank;
 import com.uas.service.donate.model.ProjectRecode;
 
 import java.util.List;
@@ -79,4 +80,18 @@ public interface ProjectRecodeService {
 	 * @param projectRecode 项目捐款记录
 	 */
 	void updateActivityDonation(ProjectRecode projectRecode);
+
+	/**
+	 * 查询总捐款人次
+	 * @return 总捐款人次
+	 */
+    Integer sumAllPersonTimes();
+
+	/**
+	 * 获取捐款排名
+	 * @param id 项目id
+	 * @param number 行数
+	 * @return  捐款排名
+	 */
+	List<DonateRank> donateRank(Long id, Integer number);
 }

+ 46 - 0
donate-service/src/main/java/com/uas/service/donate/service/impl/ProjectRecordServiceImpl.java

@@ -5,6 +5,7 @@ import com.uas.service.donate.dao.ActivityDao;
 import com.uas.service.donate.dao.ProjectRecodeDao;
 import com.uas.service.donate.dao.UserDao;
 import com.uas.service.donate.model.Activity;
+import com.uas.service.donate.model.DonateRank;
 import com.uas.service.donate.model.ProjectRecode;
 import com.uas.service.donate.model.User;
 import com.uas.service.donate.service.OrgService;
@@ -12,6 +13,8 @@ import com.uas.service.donate.service.ProjectRecodeService;
 import com.uas.service.donate.service.ProjectService;
 import com.uas.service.donate.util.BigDecimalUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -34,6 +37,14 @@ public class ProjectRecordServiceImpl implements ProjectRecodeService {
     @Autowired
 	private ActivityDao activityDao;
 
+    @Autowired
+	private JdbcTemplate jdbcTemplate;
+
+	/**
+	 * 默认排行行数
+	 */
+	private static final Integer DEFAULT_RANK_NUMBER = 10;
+
     public List<ProjectRecode> findByuuid(Long uuid) {
         return projectRecodeDao.findByuuid(uuid);
     }
@@ -147,4 +158,39 @@ public class ProjectRecordServiceImpl implements ProjectRecodeService {
 			activityDao.save(act);
 		}
 	}
+
+	/**
+	 * 查询总捐款人次
+	 *
+	 * @return 总捐款人次
+	 */
+	@Override
+	public Integer sumAllPersonTimes() {
+		return projectRecodeDao.sumAllPersonTimes();
+	}
+
+	/**
+	 * 获取捐款排名
+	 *
+	 * @param id 项目id
+	 * @return 捐款排名
+	 */
+	@Override
+	public List<DonateRank> donateRank(Long id, Integer number) {
+		if (null == number) {
+			number = DEFAULT_RANK_NUMBER;
+		}
+		String sql = "select sum(pr_amount) as amount,pr_uuid as userUU,user_name as name, user_tel as tel from donate$projectrecode " +
+		" left join donate$user on pr_uuid = user_uu where pr_pro_id = " + id + " and pr_status = 2 group by pr_uuid order by sum(pr_amount) desc, convert(user_name using gbk) asc limit " + number;
+		List<DonateRank> ranks = jdbcTemplate.query(sql, new BeanPropertyRowMapper<DonateRank>(DonateRank.class));
+		for (int i = 0; i < ranks.size(); i++) {
+			ranks.get(i).setRank(i + 1);
+			if (i > 0 && ranks.get(i).getAmount().equals(ranks.get(i - 1).getAmount())) {
+				ranks.get(i).setRank(ranks.get(i - 1).getRank());
+			} else {
+				ranks.get(i).setRank(i + 1);
+			}
+		}
+		return ranks;
+	}
 }