Browse Source

捐款完毕计入活动总善款;添加基本运算工具类。

dongbw 8 years ago
parent
commit
1421bfced7

+ 2 - 2
donate-service/src/main/java/com/uas/service/donate/SSOConfiguration.java

@@ -38,8 +38,8 @@ public class SSOConfiguration extends WebMvcConfigurerAdapter {
          * 拦截器配置
          */
         registry.addInterceptor(ssoInterceptor).addPathPatterns("/**").
-                excludePathPatterns("/WEB-INF/**","/**/static/**", "/sso/login/**", "/sso/logout/**", "/sso/register/**",
-                        "/", "/project/**", "/activity/**","/carousels/**", "/message/**",
+                excludePathPatterns("/WEB-INF/**", "/**/static/**", "/sso/login/**", "/sso/logout/**", "/sso/register/**",
+                        "/", "/project/**", "/activity/**", "/carousels/**", "/message/**",
                         "/org/**", "/projectconclude/**", "/projectevolve/**", "/projectfinance/**",
                         "/projectrecode/**", "/wxpay/**", "/alipay/**", "/mobile/**", "/index", "/activeCenter",
                         "/app/**", "/userAgreement");

+ 2 - 0
donate-service/src/main/java/com/uas/service/donate/controller/AlipayController.java

@@ -335,6 +335,8 @@ public class AlipayController {
                                                 user.setDonation((user.getDonation() != null ? user.getDonation() : 0) + projectRecode.getAmount());
                                                 userDao.save(user);
                                             }
+                                            // 交易完成,把捐款更新到关联的活动中
+                                            projectRecodeService.updateActivityDonation(projectRecode);
                                         }
 
                                         //交易支付成功 注:付款完成后,支付宝系统发送该交易状态通知

+ 5 - 1
donate-service/src/main/java/com/uas/service/donate/controller/UserController.java

@@ -35,9 +35,13 @@ public class UserController {
         return new ModelMap("userUU", userService.getUserByImId(imId));
     }
 
+    /**
+     * 获取用户历史数据
+     * @return 历史数据map
+     */
     @RequestMapping(value = "/getUserHistory", method = RequestMethod.GET)
     @ResponseBody
-    public ModelMap getUserHistory () {
+    public ModelMap getUserHistory() {
         ModelMap map = new ModelMap();
         map.put("joinedProjectNum", userService.getJoinedProjectNum());
         map.put("joinedActivityNum", userService.getJoinedActivityNum());

+ 2 - 0
donate-service/src/main/java/com/uas/service/donate/controller/WxpayController.java

@@ -484,6 +484,8 @@ public class WxpayController {
                                         user.setDonation((user.getDonation() != null ? user.getDonation() : 0) + projectRecode.getAmount());
                                         userDao.save(user);
                                     }
+                                    // 交易完成,把捐款更新到关联的活动中
+                                    projectRecodeService.updateActivityDonation(projectRecode);
                                 }
                                 projectRecode.setStatus(projectRecodePayStatus);
                                 logger.info("异步通知支付成功处理结束:商户订单状态:" + projectRecode.getStatus());

+ 32 - 58
donate-service/src/main/java/com/uas/service/donate/model/Activity.java

@@ -7,7 +7,6 @@ import com.uas.service.donate.util.CollectionUtils;
 
 import javax.persistence.*;
 import java.io.Serializable;
-import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Set;
@@ -17,16 +16,17 @@ import java.util.Set;
  */
 
 @Entity
-@Table(name="donate$activity")
+@Table(name= "donate$activity")
 public class Activity implements Serializable{
 
     private static final long serialVersionUID = 1L;
-    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
-
 
+    /**
+     * id
+     */
     @Id
     @GeneratedValue(strategy= GenerationType.IDENTITY)
-    @Column(name="act_id")
+    @Column(name= "act_id")
     private  Long id;
 
     /**
@@ -170,7 +170,7 @@ public class Activity implements Serializable{
      * 奖品
      * @return
      */
-    @OneToMany(mappedBy = "activity", cascade =  {CascadeType.REFRESH, CascadeType.PERSIST}, fetch = FetchType.EAGER)
+    @OneToMany(mappedBy = "activity", cascade =  {CascadeType.REFRESH}, fetch = FetchType.EAGER)
     @OrderBy("awardLevel")
     private Set<Award> awards;
 
@@ -186,15 +186,9 @@ public class Activity implements Serializable{
      * 已筹集善款
      * @return
      */
-    @Column(name="act_amount")
+    @Column(name = "act_amount")
     private Double amount;
 
-    /**
-     * 奖品总数
-     */
-    @Transient
-    private Integer awardAmount;
-
     /**
      * 活动所处阶段(前台显示)
      */
@@ -233,45 +227,40 @@ public class Activity implements Serializable{
         this.summary = summary;
     }
 
-    public String getStartTime() {
-        Date date=this.startTime;
-        return date!=null?sdf.format(this.startTime):null;
+    public Date getStartTime() {
+        return this.startTime;
     }
 
     public void setStartTime(Date startTime) {
         this.startTime = startTime;
     }
 
-    public String getEndTime() {
-        Date date=this.endTime;
-        return date!=null?sdf.format(this.endTime):null;
+    public Date getEndTime() {
+        return this.endTime;
     }
 
     public void setEndTime(Date endTime) {
         this.endTime = endTime;
     }
 
-    public String getLuckyTime() {
-        Date date=this.luckyTime;
-        return date!=null?sdf.format(this.luckyTime):null;
+    public Date getLuckyTime() {
+        return this.luckyTime;
     }
 
     public void setLuckyTime(Date luckyTime) {
         this.luckyTime = luckyTime;
     }
 
-    public String getReceiveStartTime() {
-        Date date=this.receiveStartTime;
-        return date!=null?sdf.format(this.receiveStartTime):null;
+    public Date getReceiveStartTime() {
+        return this.receiveStartTime;
     }
 
     public void setReceiveStartTime(Date receiveStartTime) {
         this.receiveStartTime = receiveStartTime;
     }
 
-    public String getReceiveEndTime() {
-        Date date=this.receiveEndTime;
-        return date!=null?sdf.format(this.receiveEndTime):null;
+    public Date getReceiveEndTime() {
+        return this.receiveEndTime;
     }
 
     public void setReceiveEndTime(Date receiveEndTime) {
@@ -286,9 +275,8 @@ public class Activity implements Serializable{
         this.person = person;
     }
 
-    public String getSubmitTime() {
-        Date date=this.submitTime;
-        return date!=null?sdf.format(this.submitTime):null;
+    public Date getSubmitTime() {
+        return this.submitTime;
     }
 
     public void setSubmitTime(Date submitTime) {
@@ -355,7 +343,7 @@ public class Activity implements Serializable{
         if (null != joinAmount) {
             return joinAmount;
         }
-        return (long) this.getActivityRecords().size();
+        return !CollectionUtils.isEmpty(this.getActivityRecords()) ? (long) this.getActivityRecords().size() : 0L;
     }
 
     public void setJoinAmount(Long joinAmount) {
@@ -370,20 +358,6 @@ public class Activity implements Serializable{
         this.userUU = userUU;
     }
 
-    public Integer getAwardAmount() {
-        Integer amount = 0;
-        if (!CollectionUtils.isEmpty(this.getAwards())) {
-            for (Award award : this.getAwards()) {
-                amount += award.getAmount();
-            }
-        }
-        return amount;
-    }
-
-    public void setAwardAmount(Integer awardAmount) {
-        this.awardAmount = awardAmount;
-    }
-
     @JsonIgnore
     @JSONField(serialize = false)
     public Set<ActivityRecode> getActivityRecords() {
@@ -469,18 +443,18 @@ public class Activity implements Serializable{
     }
 
     public Double getAmount() {
-        if (null != amount) {
-            return amount;
-        }
-        Double totalAmount = 0d;
-        if (!CollectionUtils.isEmpty(this.getProjects())) {
-            for (Project project : this.getProjects()) {
-                if (null != project.getTotalAmount()) {
-                    totalAmount += project.getTotalAmount();
-                }
-            }
-        }
-        return totalAmount;
+//        if (null != amount) {
+        return amount;
+//        }
+//        Double totalAmount = 0d;
+//        if (!CollectionUtils.isEmpty(this.getProjects())) {
+//            for (Project project : this.getProjects()) {
+//                if (null != project.getTotalAmount()) {
+//                    totalAmount += project.getTotalAmount();
+//                }
+//            }
+//        }
+//        return totalAmount;
     }
 
     public void setAmount(Double amount) {

+ 4 - 3
donate-service/src/main/java/com/uas/service/donate/model/Project.java

@@ -6,6 +6,7 @@ import java.io.Serializable;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.Set;
 
 /**
  * 项目实体
@@ -119,7 +120,7 @@ public class Project implements Serializable{
     /**
      * 发起人头像
      */
-    @Column(name="pro_person_logo")
+    @Column(name= "pro_person_logo")
     private String logo;
 
 
@@ -496,9 +497,9 @@ public class Project implements Serializable{
         end.set(Calendar.DAY_OF_MONTH, endTime.getDate());
         if (now.compareTo(start) >=0 && now.compareTo(end) <0) {
             return "进行中";
-        } else if(now.compareTo(start)<0){
+        } else if (now.compareTo(start) < 0){
             return "筹备中";
-        }else{
+        } else {
             return "已结束";
         }
     }

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

@@ -73,4 +73,10 @@ public interface ProjectRecodeService {
 	 * @return
 	 */
 	ProjectRecode findOne(Long id);
+
+	/**
+	 * 捐款支付成功,统计信息到活动表
+	 * @param projectRecode 项目捐款记录
+	 */
+	void updateActivityDonation(ProjectRecode projectRecode);
 }

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

@@ -1,16 +1,21 @@
 package com.uas.service.donate.service.impl;
 
 import com.uas.service.donate.core.support.SystemSession;
+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.Project;
 import com.uas.service.donate.model.ProjectRecode;
 import com.uas.service.donate.model.User;
 import com.uas.service.donate.service.OrgService;
 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.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Service
@@ -28,6 +33,9 @@ public class ProjectRecordServiceImpl implements ProjectRecodeService {
     @Autowired
     private UserDao userDao;
 
+    @Autowired
+	private ActivityDao activityDao;
+
     public List<ProjectRecode> findByuuid(Long uuid) {
         return projectRecodeDao.findByuuid(uuid);
     }
@@ -123,4 +131,22 @@ public class ProjectRecordServiceImpl implements ProjectRecodeService {
         return projectRecodeDao.findOne(id);
     }
 
+	/**
+	 * 捐款支付成功,统计信息到活动表
+	 *
+	 * @param projectRecode 项目捐款记录
+	 */
+	@Override
+	public void updateActivityDonation(ProjectRecode projectRecode) {
+		Activity activity = projectService.getJoinedActivity(projectRecode.getProId());
+		if (null != activity && null != activity.getId()) {
+			Activity act = activityDao.findOne(activity.getId());
+			Double amount = 0d;
+			if (null != act.getAmount()) {
+				amount = act.getAmount();
+			}
+			act.setAmount(BigDecimalUtils.add(amount, projectRecode.getAmount()));
+			activityDao.save(act);
+		}
+	}
 }

+ 65 - 0
donate-service/src/main/java/com/uas/service/donate/util/BigDecimalUtils.java

@@ -0,0 +1,65 @@
+package com.uas.service.donate.util;
+
+
+import java.math.BigDecimal;
+
+/**
+ * BigDecimal 基本运算
+ * Created by dongbw
+ * 17/12/28 11:39.
+ */
+public class BigDecimalUtils {
+
+    /**
+     * 加法
+     * @param v1 double数字
+     * @param v2 double数字
+     * @return
+     */
+    public static Double add(Double v1, Double v2) {
+        BigDecimal b1 = new BigDecimal(v1.toString());
+        BigDecimal b2 = new BigDecimal(v2.toString());
+        return b1.add(b2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+
+    /**
+     * 减法
+     * @param v1 double数字
+     * @param v2 double数字
+     * @return
+     */
+    public static Double substract(Double v1, Double v2) {
+        BigDecimal b1 = new BigDecimal(v1.toString());
+        BigDecimal b2 = new BigDecimal(v2.toString());
+        return b1.subtract(b2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+
+    /**
+     * 乘法
+     * @param v1 double数字
+     * @param v2 double数字
+     * @return
+     */
+    public static Double multiply(Double v1, Double v2) {
+        BigDecimal b1 = new BigDecimal(v1.toString());
+        BigDecimal b2 = new BigDecimal(v2.toString());
+        return b1.multiply(b2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+
+    /**
+     * 除法
+     * @param v1 double数字
+     * @param v2 double数字
+     * @return
+     */
+    public static Double divide(Double v1, Double v2) {
+        if (v2 == 0) {
+            //如果除数为0,抛出异常信息。
+            throw new IllegalArgumentException("除数不能为0");
+        }
+        BigDecimal b1 = new BigDecimal(v1.toString());
+        BigDecimal b2 = new BigDecimal(v2.toString());
+        return b1.divide(b2, 2).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+    }
+
+}

+ 1 - 1
donate-service/src/main/java/com/uas/service/donate/web/filter/AccessInterceptor.java

@@ -46,7 +46,7 @@ public class AccessInterceptor extends AbstractSSOInterceptor{
      */
     @Override
     protected void onAuthenticateSuccess(HttpServletRequest request, HttpServletResponse response) {
-        User user = (User)request.getSession().getAttribute("user");
+        User user = (User) request.getSession().getAttribute("user");
         if (user == null) {
             SSOToken token = SSOHelper.attrToken(request);
             user = getUserByToken(token);

+ 6 - 6
donate-service/src/main/webapp/resources/view/mobile/mobile_project_detail.html

@@ -820,9 +820,9 @@
                 </div>
                 <div class="bottom">
                     <div class="txt">{{project.organization.name}}</div>
-                    <div class="txt">项目联系人: <span>{{project.personName}}</span></div>
+                    <div class="txt">项目联系人: <span>{{project.personName || '无'}}</span></div>
                     <div class="txt">
-                        联系电话: <span>{{project.personTel}}</span>
+                        联系电话: <span>{{project.personTel || '无'}}</span>
                     </div>
                 </div>
             </div>
@@ -961,7 +961,7 @@
                         <p class="count">{{project.joinAmount}}</p>
                     </div>
                     <div class="intro-list">
-                        <span>筹款截止日期</span>
+                        <span>筹款时间</span>
                         <p class="time">{{project.startTime | date:'yyyy-MM-dd'}}<br/>至nbsp;{{project.endTime | date:'yyyy-MM-dd'}}</p>
                     </div>
                 </div>
@@ -1029,9 +1029,9 @@
                 <div class="body">
                     <ul id="choose-money" class="choose-money">
                         <li class="active" ng-click="setMoney(1)">1元</li>
-                        <li ng-click="setMoney(1)">50元</li>
-                        <li ng-click="setMoney(1)">100元</li>
-                        <li ng-click="setMoney(1)">200元</li>
+                        <li ng-click="setMoney(10)">10元</li>
+                        <li ng-click="setMoney(50)">50元</li>
+                        <li ng-click="setMoney(100)">100元</li>
                     </ul>
                     <div class="write"><input type="text" ng-model="donation" ng-focus="setMoney(0)" ng-change="inputMoney()" ng-pattern="/^\d{0,8}(\.\d{0,2})?$/" placeholder="自定义金额" class="form-control input-money" id=""/><em>元</em></div>
                     <div class="mode">