dongbw пре 8 година
родитељ
комит
825c56d158
33 измењених фајлова са 380 додато и 204 уклоњено
  1. 5 3
      donate-console/src/main/java/com/uas/console/donate/Application.java
  2. 5 1
      donate-console/src/main/java/com/uas/console/donate/SSOConfiguration.java
  3. 1 0
      donate-console/src/main/java/com/uas/console/donate/WebAppConfiguration.java
  4. 39 6
      donate-console/src/main/java/com/uas/console/donate/controller/ActivityController.java
  5. 8 1
      donate-console/src/main/java/com/uas/console/donate/controller/SecurityController.java
  6. 11 1
      donate-console/src/main/java/com/uas/console/donate/controller/UserController.java
  7. 4 4
      donate-console/src/main/java/com/uas/console/donate/core/support/SystemSession.java
  8. 2 1
      donate-console/src/main/java/com/uas/console/donate/dao/AttachDao.java
  9. 46 25
      donate-console/src/main/java/com/uas/console/donate/model/Activity.java
  10. 3 3
      donate-console/src/main/java/com/uas/console/donate/model/Project.java
  11. 67 26
      donate-console/src/main/java/com/uas/console/donate/model/User.java
  12. 7 4
      donate-console/src/main/java/com/uas/console/donate/service/ActivityService.java
  13. 2 0
      donate-console/src/main/java/com/uas/console/donate/service/UserService.java
  14. 57 74
      donate-console/src/main/java/com/uas/console/donate/service/impl/ActivityServiceImpl.java
  15. 5 0
      donate-console/src/main/java/com/uas/console/donate/service/impl/UserServiceImpl.java
  16. 16 2
      donate-console/src/main/java/com/uas/console/donate/web/filter/SSOInterceptor.java
  17. 1 1
      donate-console/src/main/webapp/WEB-INF/views/charityCertification.html
  18. 2 2
      donate-console/src/main/webapp/WEB-INF/views/index.html
  19. 1 1
      donate-console/src/main/webapp/WEB-INF/views/launchProject.html
  20. 1 1
      donate-console/src/main/webapp/WEB-INF/views/publicOfferingCertification.html
  21. 50 26
      donate-console/src/main/webapp/resources/js/index/app.js
  22. 12 1
      donate-console/src/main/webapp/resources/js/index/services/Activity.js
  23. 0 0
      donate-console/src/main/webapp/resources/jsondata/city.json
  24. 6 6
      donate-console/src/main/webapp/resources/view/activity/activity_detail.html
  25. 6 6
      donate-console/src/main/webapp/resources/view/activity/activity_launch.html
  26. 1 1
      donate-console/src/main/webapp/resources/view/project/project_detail.html
  27. 16 2
      donate-console/src/main/webapp/resources/view/project/project_launch_1.html
  28. 1 1
      donate-console/src/main/webapp/resources/view/user/charityCertification.html
  29. 1 1
      donate-console/src/main/webapp/resources/view/user/publicOfferingCertification.html
  30. 1 1
      donate-service/src/main/resources/templates/index.ftl
  31. 0 0
      donate-service/src/main/webapp/resources/citydata/city.json
  32. 1 1
      donate-service/src/main/webapp/resources/view/activity/activity_list.html
  33. 2 2
      donate-service/src/main/webapp/resources/view/project/project_detail.html

+ 5 - 3
donate-console/src/main/java/com/uas/console/donate/Application.java

@@ -6,11 +6,13 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.event.ApplicationPreparedEvent;
 import org.springframework.context.ApplicationListener;
 import org.springframework.context.annotation.ImportResource;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 
-@SpringBootApplication
-@RestController
+@SpringBootApplication(scanBasePackages = "com.uas.console.donate")
 @ImportResource("classpath:spring/*.xml")
+@EnableTransactionManagement(proxyTargetClass = true)
+@EnableWebMvc
 public class Application {
 
     public static void main(String[] args){

+ 5 - 1
donate-console/src/main/java/com/uas/console/donate/SSOConfiguration.java

@@ -5,6 +5,8 @@ import com.uas.console.donate.profile.Dev;
 import com.uas.console.donate.profile.Prod;
 import com.uas.console.donate.profile.Test;
 import com.uas.console.donate.util.ContextUtils;
+import com.uas.console.donate.web.filter.SSOInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
@@ -21,13 +23,15 @@ import java.util.Properties;
 @Configuration
 public class SSOConfiguration extends WebMvcConfigurerAdapter {
 
+    @Autowired
+    private SSOInterceptor ssoInterceptor;
 
     @Override
     public void addInterceptors(InterceptorRegistry registry) {
         /**
          * 拦截器配置
          */
-//        registry.addInterceptor(new SSOInterceptor()).addPathPatterns("/**").
+        registry.addInterceptor(ssoInterceptor).addPathPatterns("/**").addPathPatterns("/user/**");
 //                excludePathPatterns("/WEB-INF/**","/**/static/**", "/login/**", "/logout/**");
     }
 

+ 1 - 0
donate-console/src/main/java/com/uas/console/donate/WebAppConfiguration.java

@@ -49,6 +49,7 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter {
 	public void addViewControllers(ViewControllerRegistry registry) {
 		registry.addViewController("/").setViewName("index");
 		registry.addViewController("/index").setViewName("index");
+		registry.addViewController("/userAgreement").setViewName("userAgreement");
 		registry.addViewController("/console").setViewName("console");
 		registry.addViewController("/fileUpload").setViewName("fileUpload");
 		registry.addViewController("/login/proxy").setViewName("proxyLogin");

+ 39 - 6
donate-console/src/main/java/com/uas/console/donate/controller/ActivityController.java

@@ -77,8 +77,18 @@ public class ActivityController {
      */
     @ResponseBody
     @RequestMapping("/save")
-    public Activity save(String jsonStr) throws IOException {
+    public Activity save(@RequestParam(required = false) MultipartFile actImg,
+                         @RequestParam(required = false) MultipartFile banner,
+                         @RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response) throws IOException {
         Activity activity = JSONObject.parseObject(jsonStr, Activity.class);
+        if(actImg!=null){
+            String file1=fileClient.upload(actImg.getBytes(),actImg.getSize(),"jpg",null);
+            activity.setActImg(file1);
+        }
+        if(banner!=null){
+            String file2=fileClient.upload(banner.getBytes(),banner.getSize(),"jpg",null);
+            activity.setBanner(file2);
+        }
         return activityService.save(activity);
     }
 
@@ -87,12 +97,18 @@ public class ActivityController {
      */
     @ResponseBody
     @RequestMapping("/submit")
-    public Activity submit(@RequestParam(required = false) MultipartFile logo,
-                           @RequestParam(required = false) MultipartFile pcImg,
-                           @RequestParam(required = false) MultipartFile mobileImg,
-                           @RequestParam (required = false) MultipartFile mobileListImg,
-                           @RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response){
+    public Activity submit(@RequestParam(required = false) MultipartFile actImg,
+                           @RequestParam(required = false) MultipartFile banner,
+                           @RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response) throws IOException {
         Activity activity = JSONObject.parseObject(jsonStr, Activity.class);
+        if(actImg!=null){
+            String file1=fileClient.upload(actImg.getBytes(),actImg.getSize(),"jpg",null);
+            activity.setActImg(file1);
+        }
+        if(banner!=null){
+            String file2=fileClient.upload(banner.getBytes(),banner.getSize(),"jpg",null);
+            activity.setBanner(file2);
+        }
         return activityService.submit(activity);
     }
 
@@ -293,4 +309,21 @@ public class ActivityController {
         return activityService.getActivityRelatedProjects(keyword, proIds);
     }
 
+    /**
+     * 上传奖品图片
+     */
+    @RequestMapping(value = "/upload/prizeImg", method = RequestMethod.POST)
+    @ResponseBody
+    public Attach uploadPrizeImg(MultipartFile file) throws Exception {
+        return activityService.uploadPrizeImg(file);
+    }
+
+    /**
+     * 删除奖品时删除图片
+     */
+    @RequestMapping(value = "/delete/prizeImg", method = RequestMethod.DELETE)
+    @ResponseBody
+    public void deletePrizeImg(@RequestParam String path) {
+        activityService.deletePrizeImg(path);
+    }
 }

+ 8 - 1
donate-console/src/main/java/com/uas/console/donate/controller/SecurityController.java

@@ -2,12 +2,15 @@ package com.uas.console.donate.controller;
 
 import com.uas.account.entity.UserView;
 import com.uas.console.donate.core.support.SystemSession;
+import com.uas.console.donate.model.User;
+import com.uas.console.donate.service.UserService;
 import com.uas.console.donate.util.FastjsonUtils;
 import com.uas.console.donate.web.CommonController;
 import com.uas.sso.AuthToken;
 import com.uas.sso.SSOConfig;
 import com.uas.sso.SSOHelper;
 import com.uas.sso.SSOToken;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -27,6 +30,9 @@ import java.io.IOException;
 @RestController
 public class SecurityController extends CommonController {
 
+    @Autowired
+    private UserService userService;
+
     /**
      * 账户信息、SSO配置
      *
@@ -116,7 +122,8 @@ public class SecurityController extends CommonController {
                 UserView user = getUserByToken(tk);
                 if (user != null) {
                     request.getSession().setAttribute("user", user);
-                    SystemSession.setUser(user);
+                    User u = userService.findOne(Long.valueOf(user.getDialectUID()));
+                    SystemSession.setUser(u);
                 }
                 // returnUrl有时候为null,然后生成URL的时候会出现undefined
                 return new ModelMap("returnUrl", returnUrl==null?"":returnUrl);

+ 11 - 1
donate-console/src/main/java/com/uas/console/donate/controller/UserController.java

@@ -2,16 +2,20 @@ package com.uas.console.donate.controller;
 
 import com.uas.console.donate.model.User;
 import com.uas.console.donate.service.UserService;
+import com.uas.console.donate.util.SystemSession;
+import com.uas.console.donate.web.CommonController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import java.util.List;
 
 @Controller
 @RequestMapping("/user")
-public class UserController {
+public class UserController extends CommonController{
 
     @Autowired
     private UserService userService;
@@ -21,4 +25,10 @@ public class UserController {
     public List<User> getUsers(){
         return userService.findAll();
     }
+
+    @RequestMapping(value = "/auth", method = RequestMethod.GET)
+    @ResponseBody
+    public ModelMap getUser() {
+        return success(SystemSession.getUser());
+    }
 }

+ 4 - 4
donate-console/src/main/java/com/uas/console/donate/core/support/SystemSession.java

@@ -1,6 +1,6 @@
 package com.uas.console.donate.core.support;
 
-import com.uas.account.entity.UserView;
+import com.uas.console.donate.model.User;
 
 /**
  * 每次请求服务器时,用户信息存放在本次线程中
@@ -10,13 +10,13 @@ import com.uas.account.entity.UserView;
  */
 public class SystemSession {
 
-	private static ThreadLocal<UserView> local = new ThreadLocal<UserView>();
+	private static ThreadLocal<User> local = new ThreadLocal<User>();
 
-	public static void setUser(UserView session) {
+	public static void setUser(User session) {
 		local.set(session);
 	}
 
-	public static UserView getUser() {
+	public static User getUser() {
 		return local.get();
 	}
 

+ 2 - 1
donate-console/src/main/java/com/uas/console/donate/dao/AttachDao.java

@@ -6,5 +6,6 @@ import org.springframework.stereotype.Repository;
 
 @Repository
 public interface AttachDao extends JpaRepository<Attach, Long> {
-	
+
+    Attach findByPath(String path);
 }

+ 46 - 25
donate-console/src/main/java/com/uas/console/donate/model/Activity.java

@@ -7,7 +7,6 @@ import javax.persistence.*;
 import java.io.Serializable;
 import java.text.SimpleDateFormat;
 import java.util.Date;
-import java.util.List;
 import java.util.Set;
 
 @Entity
@@ -15,7 +14,7 @@ import java.util.Set;
 public class Activity implements Serializable{
 
     private static final long serialVersionUID = 1L;
-    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm");
+    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 
 
     @Id
@@ -150,6 +149,13 @@ public class Activity implements Serializable{
     @Column(name = "act_img")
     private String actImg;
 
+    /**
+     * 活动背景
+     * @return
+     */
+    @Column(name = "act_banner")
+    private String banner;
+
     /**
      * 参与记录
      * @return
@@ -159,11 +165,21 @@ public class Activity implements Serializable{
     private Set<ActivityRecode> activityRecords;
 
 
-    @Transient
-    private  List<Award> awards;
+    /**
+     * 奖品
+     * @return
+     */
+    @OneToMany(mappedBy = "activity", cascade =  {CascadeType.REFRESH, CascadeType.PERSIST}, fetch = FetchType.EAGER)
+    @OrderBy("awardLevel")
+    private Set<Award> awards;
 
-    @Transient
-    private List<ProjectQualification> projectQualificationList;
+    /**
+     * 关联项目
+     * @return
+     */
+    @OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.REFRESH})
+    @JoinTable(name = "donate$activityproject", joinColumns = @JoinColumn(name = "act_id", referencedColumnName = "act_id"), inverseJoinColumns = @JoinColumn(name="pro_id", referencedColumnName = "pro_id"))
+    private Set<Project> projects;
 
     /**
      * 奖品总数
@@ -329,25 +345,6 @@ public class Activity implements Serializable{
         this.actImg = actImg;
     }
 
-
-
-    public List<Award> getAwards() {
-        return awards;
-    }
-
-    public void setAwards(List<Award> awards) {
-        this.awards = awards;
-    }
-
-
-    public List<ProjectQualification> getProjectQualificationList() {
-        return projectQualificationList;
-    }
-
-    public void setProjectQualificationList(List<ProjectQualification> projectQualificationList) {
-        this.projectQualificationList = projectQualificationList;
-    }
-
     public Integer getJoinedPerson() {
         return joinedPerson;
     }
@@ -385,4 +382,28 @@ public class Activity implements Serializable{
     public void setActivityRecords(Set<ActivityRecode> activityRecords) {
         this.activityRecords = activityRecords;
     }
+
+    public String getBanner() {
+        return banner;
+    }
+
+    public void setBanner(String banner) {
+        this.banner = banner;
+    }
+
+    public Set<Award> getAwards() {
+        return awards;
+    }
+
+    public void setAwards(Set<Award> awards) {
+        this.awards = awards;
+    }
+
+    public Set<Project> getProjects() {
+        return projects;
+    }
+
+    public void setProjects(Set<Project> projects) {
+        this.projects = projects;
+    }
 }

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

@@ -257,11 +257,11 @@ public class Project implements Serializable{
     private Long joinAmount;
 
     /**
-     * 是否已结束 (1已过期,0未过期)
+     * 是否已结束
      * @return
      */
     @Transient
-    private Short overdue;
+    private String overdue;
 
     public Long getId() {
         return id;
@@ -506,7 +506,7 @@ public class Project implements Serializable{
         }
     }
 
-    public void setOverdue(Short overdue) {
+    public void setOverdue(String overdue) {
         this.overdue = overdue;
     }
 

+ 67 - 26
donate-console/src/main/java/com/uas/console/donate/model/User.java

@@ -1,7 +1,10 @@
 package com.uas.console.donate.model;
 
+import com.uas.account.entity.UserView;
+
 import javax.persistence.*;
 import java.io.Serializable;
+import java.util.Set;
 
 @Entity
 @Table(name="donate$user")
@@ -13,7 +16,7 @@ public class User implements Serializable{
      * 用户uu号
      */
     @Id
-    @GeneratedValue(strategy= GenerationType.IDENTITY)
+//    @GeneratedValue(strategy= GenerationType.IDENTITY)
     @Column(name = "user_uu")
     private Long userUU;
 
@@ -23,26 +26,37 @@ public class User implements Serializable{
     @Column(name = "user_name")
     private String name;
 
-    /**
-     * 用户密码
-     */
-    @Column(name = "user_pwd")
-    private String pwd;
+//    /**
+//     * 用户密码
+//     */
+//    @Column(name = "user_pwd")
+//    private String pwd;
 
     /**
      * 用户手机号
      */
     @Column(name = "user_tel")
-    private Long tel;
+    private String tel;
+
+    @Column(name = "user_email")
+    private String userEmail;
 
     @Column(name = "user_identity")
     private Integer identity;
 
+//    /**
+//     * 用户在的公司
+//     */
+//    @Column(name = "user_company")
+//    private String company;
+
     /**
-     * 用户在的公司
+     * 所属机构
      */
-    @Column(name = "user_company")
-    private String company;
+    @ManyToMany(cascade = { CascadeType.REFRESH, CascadeType.REMOVE }, fetch = FetchType.EAGER)
+    @JoinTable(name = "donate$userorg", joinColumns = @JoinColumn(name = "user_uu", referencedColumnName = "user_uu"), inverseJoinColumns = @JoinColumn(name = "org_id", referencedColumnName = "org_id"))
+    @OrderBy("id")
+    private Set<Org> orgs;
 
     @Column(name = "user_imid")
     private Long userIMId;
@@ -53,6 +67,17 @@ public class User implements Serializable{
     @Column(name = "user_type")
     private String type;
 
+    public User() {
+
+    }
+
+    public User(UserView user) {
+        this.setUserUU(Long.valueOf(user.getDialectUID()));
+        this.setName(user.getName());
+        this.setTel(user.getUid());
+        this.setUserEmail(user.getSecondUID());
+    }
+
 
     public Long getUserUU() {
         return userUU;
@@ -70,19 +95,19 @@ public class User implements Serializable{
         this.name = name;
     }
 
-    public String getPwd() {
-        return pwd;
-    }
-
-    public void setPwd(String pwd) {
-        this.pwd = pwd;
-    }
+//    public String getPwd() {
+//        return pwd;
+//    }
+//
+//    public void setPwd(String pwd) {
+//        this.pwd = pwd;
+//    }
 
-    public Long getTel() {
+    public String getTel() {
         return tel;
     }
 
-    public void setTel(Long tel) {
+    public void setTel(String tel) {
         this.tel = tel;
     }
 
@@ -94,13 +119,13 @@ public class User implements Serializable{
         this.identity = identity;
     }
 
-    public String getCompany() {
-        return company;
-    }
-
-    public void setCompany(String company) {
-        this.company = company;
-    }
+//    public String getCompany() {
+//        return company;
+//    }
+//
+//    public void setCompany(String company) {
+//        this.company = company;
+//    }
 
     public Long getUserIMId() {
         return userIMId;
@@ -117,4 +142,20 @@ public class User implements Serializable{
     public void setType(String type) {
         this.type = type;
     }
+
+    public Set<Org> getOrgs() {
+        return orgs;
+    }
+
+    public void setOrgs(Set<Org> orgs) {
+        this.orgs = orgs;
+    }
+
+    public String getUserEmail() {
+        return userEmail;
+    }
+
+    public void setUserEmail(String userEmail) {
+        this.userEmail = userEmail;
+    }
 }

+ 7 - 4
donate-console/src/main/java/com/uas/console/donate/service/ActivityService.java

@@ -1,13 +1,11 @@
 package com.uas.console.donate.service;
 
-import com.uas.console.donate.model.Activity;
-import com.uas.console.donate.model.Project;
-import com.uas.console.donate.model.ProjectQualification;
-import com.uas.console.donate.model.SearchFilter;
+import com.uas.console.donate.model.*;
 import com.uas.platform.core.model.PageInfo;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.ui.ModelMap;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -58,4 +56,9 @@ public interface ActivityService {
 
 
     List<Project> getActivityRelatedProjects(String keyword, List<Long> proIds);
+
+//    Attach uploadPrizeImg(FileUpload fileUpload) throws Exception;
+    Attach uploadPrizeImg(MultipartFile file) throws Exception;
+
+    void deletePrizeImg(String path);
 }

+ 2 - 0
donate-console/src/main/java/com/uas/console/donate/service/UserService.java

@@ -6,4 +6,6 @@ import java.util.List;
 
 public interface UserService {
     List<User> findAll();
+
+    User findOne(Long uu);
 }

+ 57 - 74
donate-console/src/main/java/com/uas/console/donate/service/impl/ActivityServiceImpl.java

@@ -1,13 +1,12 @@
 package com.uas.console.donate.service.impl;
 
-import com.uas.console.donate.dao.ActivityDao;
-import com.uas.console.donate.dao.AwardDao;
-import com.uas.console.donate.dao.ProjectDao;
-import com.uas.console.donate.dao.ProjectQualificationDao;
+import com.uas.console.donate.dao.*;
 import com.uas.console.donate.model.*;
 import com.uas.console.donate.service.ActivityService;
+import com.uas.console.donate.service.AttachService;
 import com.uas.console.donate.util.CollectionUtils;
-import com.uas.console.donate.util.ObjectUtils;
+import com.uas.console.donate.util.SystemSession;
+import com.uas.dfs.service.FileClient;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.persistence.criteria.PredicateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,15 +16,16 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.ModelMap;
 import org.springframework.util.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Set;
 
 
 @Service
@@ -45,10 +45,20 @@ public class ActivityServiceImpl implements ActivityService{
     @Autowired
     private ProjectQualificationDao projectQualificationDao;
 
+    @Autowired
+    private AttachService attachService;
+
+    @Autowired
+    private AttachDao attachDao;
+
+    @Autowired
+    private FileClient fileClient;
+
 
     /**
      * 如果活动有草稿状态就取出草稿
      */
+    @Override
     public Activity show(){
         Long userUU = 10000L;
         if(activityDao.findDraft(userUU)!=null){
@@ -62,84 +72,33 @@ public class ActivityServiceImpl implements ActivityService{
      * @param activity
      * @return
      */
+    @Override
     public Activity save(Activity activity) {
-        Date date = new Date();
-        //如果是保存过的活动,则不需要重新生成编号
-        if(activity.getId()!=null){
-           // activity.setId(activity.getId());
-            //删除和该活动关联过的所有项目
-            projectQualificationDao.deletByActivityId(activity.getId());
-        }
-        activity.setSubmitTime(date);
-       // activity.setCode();
-        //设置成草稿状态
-        if(activity.getPublish()!=2){
-            activity.setPublish(1);
-        }
-        //设置活动展示优先级
-        activity.setPriority(1);
-
-        //存放不同奖品的list集合
-        List<Award> list=new ArrayList<Award>();
-
-        //设置奖品信息
-        List<Award> awardList = activity.getAwards();
-
-            for (Award award : awardList) {
-                //如果对象里的属性值不是全部为空
-                if(ObjectUtils.isNull(award)){
-                    System.out.print(award+"  ");
-                    award.setActivityId(activity.getId());
-                    list.add(award);
-                }
-            }
-            awardDao.save(list);
-
-        /**
-         * 重新设置该活动关联的项目
-         */
-        //存放多个有资格参与活动的项目的集合
-        List<ProjectQualification> list1=new ArrayList<ProjectQualification>();
-
-        //有资格参与该活动的项目,前台传入的是项目id号
-        List<ProjectQualification> projectQualificationList=activity.getProjectQualificationList();
-            for(ProjectQualification projectQualification:projectQualificationList){
-                //关联项目数
-                int count=0;
-                //由于前台可能传来一个空对象,所以要对对象属性做判空判断
-                if(ObjectUtils.isNull(projectQualification)){
-                    //给项目资格表设置活动id
-                    projectQualification.setActivityId(activity.getId());
-
-                    if(projectQualification.getProId()!=null){
-                        //通过项目id,获取项目名称
-                        Project project=projectDao.findOne(projectQualification.getProId());
-                        //给项目资格表里面设置项目的名称
-                        projectQualification.setName(project.getName());
-                        count++;
-                    }
-
-                    list1.add(projectQualification);
-                }
-                //给活动设置相关项目数
-                activity.setSumconnect(count);
-            }
-            projectQualificationDao.save(list1);
-
-        return  activityDao.saveAndFlush(activity);
+        activity.setPublish(1);
+        return submitOrSave(activity);
     }
 
+    @Override
     public Activity submit(Activity activity){
+        //设置成发布状态
+        activity.setPublish(2);
+        return submitOrSave(activity);
+    }
 
+    private Activity submitOrSave(Activity activity) {
+        //TODO 加入账户信息
+        activity.setUserUU(SystemSession.getUser().getUserUU());
+        activity.setPerson(SystemSession.getUser().getName());
+        activity.setSumconnect(activity.getProjects().size());
         Date date=new Date();
         //设置活动发布时间
         activity.setSubmitTime(date);
         //设置活动编号
         activity.setCode(codesdf.format(date));
-
-        //设置成发布状态
-        activity.setPublish(2);
-
+        Set<Award> awards = activity.getAwards();
+        for (Award award : awards) {
+            award.setActivity(activity);
+        }
         return activityDao.save(activity);
     }
 
@@ -274,4 +233,28 @@ public class ActivityServiceImpl implements ActivityService{
         }, pageInfo).getContent();
     }
 
+    @Override
+    public Attach uploadPrizeImg(MultipartFile file) throws Exception {
+        String path = fileClient.upload(file.getBytes(), file.getSize(), "jpg", null);
+        Attach attach = new Attach();
+        attach.setSize(file.getSize());
+        attach.setDescription("活动奖品图片");
+        attach.setName(file.getName());
+        attach.setPath(path);
+        return attachDao.save(attach);
+    }
+
+    @Override
+    public void deletePrizeImg(String path) {
+        try {
+            Attach attach = attachDao.findByPath(path);
+            if (null != attach) {
+                attachDao.delete(attach);
+            }
+            fileClient.delete(path);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
 }

+ 5 - 0
donate-console/src/main/java/com/uas/console/donate/service/impl/UserServiceImpl.java

@@ -17,4 +17,9 @@ public class UserServiceImpl implements UserService{
     public List<User> findAll(){
         return userDao.findAll();
     }
+
+    @Override
+    public User findOne(Long uu) {
+        return userDao.findOne(uu);
+    }
 }

+ 16 - 2
donate-console/src/main/java/com/uas/console/donate/web/filter/SSOInterceptor.java

@@ -2,10 +2,14 @@ package com.uas.console.donate.web.filter;
 
 import com.uas.account.entity.UserView;
 import com.uas.console.donate.core.support.SystemSession;
+import com.uas.console.donate.dao.UserDao;
+import com.uas.console.donate.model.User;
 import com.uas.console.donate.util.FastjsonUtils;
 import com.uas.sso.SSOHelper;
 import com.uas.sso.SSOToken;
 import com.uas.sso.web.spring.AbstractSSOInterceptor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
 
 import javax.servlet.http.HttpServletRequest;
@@ -14,8 +18,12 @@ import javax.servlet.http.HttpServletResponse;
 /**
  * 登录拦截
  */
+@Component
 public class SSOInterceptor extends AbstractSSOInterceptor {
 
+	@Autowired
+	private UserDao userDao;
+
 	@Override
 	protected boolean onAuthenticateFailed(HttpServletRequest request, HttpServletResponse response) {
 		return false;
@@ -29,11 +37,17 @@ public class SSOInterceptor extends AbstractSSOInterceptor {
 			user = getUserByToken(token);
 			if (user != null) {
 				request.getSession().setAttribute("user", user);
-                SystemSession.setUser(user);
+				User u = userDao.findOne(Long.valueOf(user.getDialectUID()));
+                SystemSession.setUser(u);
 			}
 		}
 		if (user != null) {
-			SystemSession.setUser(user);
+			User u = userDao.findOne(Long.valueOf(user.getDialectUID()));
+			if (null == u) {
+				u = new User(user);
+				u = userDao.save(u);
+			}
+			SystemSession.setUser(u);
 		}
 	}
 

+ 1 - 1
donate-console/src/main/webapp/WEB-INF/views/charityCertification.html

@@ -544,7 +544,7 @@
                                     </div>
                                     <div class="agree clearfix">
                                         <input type="checkbox" class="fl"/>
-                                        <div class="fl read"><span>我已经阅读并同意<a href="">《优软一元捐用户协议》</a></span></div>
+                                        <div class="fl read"><span>我已经阅读并同意<a href="http://lj.ubtob.com/userAgreement">《优软一元捐用户协议》</a></span></div>
                                     </div>
                                     <a href="charityCertification1" class="btn">确定,下一步</a>
                                 </div>

+ 2 - 2
donate-console/src/main/webapp/WEB-INF/views/index.html

@@ -101,8 +101,8 @@
                         <i class="fa fa-angle-left pull-right"></i>
                     </a>
                     <ul class="treeview-menu">
-                        <li id=""><a ui-sref="project">项目列表11</a></li>
-                        <li id=""><a ui-sref="launchProject1">发起项目11</a></li>
+                        <li id=""><a ui-sref="project">项目列表</a></li>
+                        <li id=""><a ui-sref="launchProject1">发起项目</a></li>
                         <!--<li id=""><a href="">捐款明细</a></li>-->
                         <li id=""><a ui-sref="projectFinance">项目财务披露</a></li>
                         <li id=""><a ui-sref="projectReport">项目报告填写</a></li>

+ 1 - 1
donate-console/src/main/webapp/WEB-INF/views/launchProject.html

@@ -716,7 +716,7 @@
                                     <div class="form-group clearfix text-left">
                                         <input type="checkbox" class="fl">
                                         <div class="agree">
-                                            <span>我已阅读并同意</span><a href="">《优软一元捐用户协议》</a>
+                                            <span>我已阅读并同意</span><a href="http://lj.ubtob.com/userAgreement">《优软一元捐用户协议》</a>
                                         </div>
                                     </div>
                                     <div class="text-left">

+ 1 - 1
donate-console/src/main/webapp/WEB-INF/views/publicOfferingCertification.html

@@ -587,7 +587,7 @@
                                     </div>
                                     <div class="agree clearfix">
                                         <input type="checkbox" class="fl"/>
-                                        <div class="fl read"><span>我已经阅读并同意<a href="">《优软一元捐用户协议》</a></span></div>
+                                        <div class="fl read"><span>我已经阅读并同意<a href="http://lj.ubtob.com/userAgreement">《优软一元捐用户协议》</a></span></div>
                                     </div>
                                     <a class="btn" href="publicOfferingCertification1">确定,下一步</a>
                                 </div>

+ 50 - 26
donate-console/src/main/webapp/resources/js/index/app.js

@@ -142,6 +142,11 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
         });
 	}]);
 
+    // html转义
+    var htmlEncode = function(sHtml) {
+        return sHtml.replace(/[<>&"]/g,function(c){return {'<':'&lt;','>':'&gt;','&':'&amp;','"':'&quot;'}[c];});
+    };
+
     /**
      * 项目列表
      */
@@ -293,11 +298,11 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
     app.controller('ProjectDetailCtrl', ['$scope', 'Project', 'toaster', '$modalInstance', 'BaseService', 'id', '$modal',
         function($scope, Project, toaster, $modalInstance, BaseService, id, $modal) {
 
-
         var loadData = function() {
             // 获取项目详情
             Project.getDetailById({id :id}, {}, function(data) {
                 $scope.project = data;
+                $scope.project.introduction = htmlEncode($scope.project.introduction);
             }, function() {
                 toaster.pop('error', '详情加载失败');
             });
@@ -1518,12 +1523,12 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
     /**
      * 活动发起
      */
-    app.controller('ActivityNewCtrl', ['$scope', 'BaseService', 'toaster', 'Activity', '$http',
-        function($scope, BaseService, toaster, Activity, $http) {
+    app.controller('ActivityNewCtrl', ['$scope', 'BaseService', 'toaster', 'Activity', '$http', '$upload',
+        function($scope, BaseService, toaster, Activity, $http, $upload) {
 
         $scope.activity = {
             awards:[],
-            projectQualificationList: []
+            projects: []
         };
         $scope.awards = [];
         $scope.projects = [];
@@ -1579,6 +1584,12 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
 
         // 删除某一奖品
         $scope.deleteAward = function($index) {
+            var path = $scope.awards[$index].img;
+            if (!angular.isUndefined(path)) {
+                Activity.deletePrizeImg({path: path}, {}, function(data) {
+
+                });
+            }
             $scope.awards.splice($index, 1);
         };
 
@@ -1666,32 +1677,45 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
         // 图片上传
         $scope.fileChanged = function(ele, value){
             if (value == 0) {
-                $scope.coverImg = ele.files[0];
+                $scope.actImg = ele.files[0];
             } else if (value == 1) {
                 $scope.banner = ele.files[0];
-            } else if (value == 2) {
-                $scope.award1 = ele.files[0];
-            } else if (value == 3) {
-                $scope.award2 = ele.files[0];
-            } else if (value == 4) {
-                $scope.award3 = ele.files[0];
-            } else if (value == 5) {
-                $scope.award4 = ele.files[0];
+            // } else if (value == 2) {
+            //     $scope.award1 = ele.files[0];
+            // } else if (value == 3) {
+            //     $scope.award2 = ele.files[0];
+            // } else if (value == 4) {
+            //     $scope.award3 = ele.files[0];
+            // } else if (value == 5) {
+            //     $scope.award4 = ele.files[0];
             }
             $scope.$apply();
         };
 
+        $scope.uploadPrizeImg = function(award, index) {
+            $scope.loading = true;
+            var files = award.prizeImgs, file = files && files.length > 0 ? files[0] : null;
+            console.log(file);
+            $upload.upload({
+                url: 'activity/upload/prizeImg',
+                method: 'POST',
+                file: file
+            }).success(function (data) {
+                $scope.awards[index].img = data.path;
+                $scope.loading = false;
+            }).error(function (data) {
+                $scope.loading = false;
+                // toaster.pop('error', '错误', data);
+            });
+        };
+
         // 保存 或 提交
         $scope.submit = function(type) {
-            var projectQualificationList = [];
+            var projectList = [];
             angular.forEach($scope.selectedProjects, function(project) {
-                var projectQualification = {};
-                projectQualification.activityId = $scope.activity.id;
-                projectQualification.proId = project.id;
-                projectQualification.name = project.name;
-                projectQualificationList.push(projectQualification);
+                projectList.push(project);
             });
-            $scope.activity.projectQualificationList = projectQualificationList;
+            $scope.activity.projects = projectList;
             $scope.activity.awards = $scope.awards;
             var url;
             if (type) {
@@ -1700,12 +1724,12 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
                 url = 'activity/save';
             }
             var data = new FormData();
-            data.append('coverImg', $scope.coverImg);
+            data.append('actImg', $scope.actImg);
             data.append('banner', $scope.banner);
-            data.append('award1', $scope.award1);
-            data.append('award2', $scope.award2);
-            data.append('award3', $scope.award3);
-            data.append('award4', $scope.award4);
+            // data.append('award1', $scope.award1);
+            // data.append('award2', $scope.award2);
+            // data.append('award3', $scope.award3);
+            // data.append('award4', $scope.award4);
             data.append('jsonStr', JSON.stringify($scope.activity));
             $http({
                 headers: {
@@ -1722,7 +1746,7 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
                 } else {
                     toaster.pop('success', '保存成功');
                 }
-                window.location.hash='#/';
+                window.location.href='#/activity';
             }).error(function (data) {
                 $scope.loadingShow = false;
                 toaster.pop('error', '出现错误,操作失败');

+ 12 - 1
donate-console/src/main/webapp/resources/js/index/services/Activity.js

@@ -41,7 +41,8 @@ define ([ 'ngResource' ], function() {
             // 获取相关项目
             getRelatedProject: {
                 url: 'activity/getRelatedProject',
-                method: 'GET'
+                method: 'GET',
+                isArray: true
             },
             // 开奖
             openAward : {
@@ -58,6 +59,16 @@ define ([ 'ngResource' ], function() {
                 url: 'activity/getActivityRelatedProjects',
                 method: 'GET',
                 isArray: true
+            },
+            // 奖品图片上传
+            uploadPrizeImg: {
+                url: 'activity/upload/prizeImg',
+                method: 'POST'
+            },
+            // 删除奖品时,删除上传的图片
+            deletePrizeImg: {
+                url: 'activity/delete/prizeImg',
+                method: 'DELETE'
             }
         });
     }]);

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
donate-console/src/main/webapp/resources/jsondata/city.json


+ 6 - 6
donate-console/src/main/webapp/resources/view/activity/activity_detail.html

@@ -7,7 +7,7 @@
         <div class="fr close" ng-click="cancel()">&times;</div>
     </div>
     <div class="right-nav">
-        <span class="active" style="margin-left: -379px;">活动信息</span>
+        <span class="active">活动信息</span>
         <span>奖品信息</span>
         <span>参与名单</span></div>
     <!--活动信息-->
@@ -16,11 +16,11 @@
             <div class="list-body clearfix">
                 <div class="msg-list fl">
                     <span class="fl">活动信息</span>
-                    <span class="fl long">{{project.startTime | date: 'yyyy-MM-dd HH:mm:ss'}}&nbsp;至&nbsp;{{project.endTime | date: 'yyyy-MM-dd HH:mm:ss'}}</span>
+                    <span class="fl long">{{activity.startTime | date: 'yyyy-MM-dd'}}&nbsp;至&nbsp;{{activity.endTime | date: 'yyyy-MM-dd'}}</span>
                 </div>
                 <div class="msg-list fl">
                     <span class="fl">兑奖时间</span>
-                    <span class="fl long">{{project.receiveStartTime | date: 'yyyy-MM-dd HH:mm:ss'}}&nbsp;至&nbsp;{{project.receiveEndTime | date: 'yyyy-MM-dd HH:mm:ss'}}</span>
+                    <span class="fl long">{{activity.receiveStartTime | date: 'yyyy-MM-dd'}}&nbsp;至&nbsp;{{activity.receiveEndTime | date: 'yyyy-MM-dd'}}</span>
                 </div>
                 <div class="msg-list fl">
                     <span class="fl">发布人</span>
@@ -28,11 +28,11 @@
                 </div>
                 <div class="msg-list fl">
                     <span class="fl">发布时间</span>
-                    <span class="fl" ng-bind="activity.submitTime | date:'yyyy-MM-dd HH:mm:ss'"></span>
+                    <span class="fl" ng-bind="activity.submitTime | date:'yyyy-MM-dd'"></span>
                 </div>
                 <div class="msg-list fl">
                     <span class="fl">已筹善款</span>
-                    <span class="fl">{{activity.amount | number : 2}}元</span>
+                    <span class="fl">{{activity.amount | number : 2 || 0}}元</span>
                 </div>
                 <div class="msg-list fl">
                     <span class="fl">参与人数</span>
@@ -104,7 +104,7 @@
         </div>
     </div>
     <!--参与名单-->
-    <div class="right-list" ng-if="active == 'done || active == 'todo'">
+    <div class="right-list" ng-if="active == 'done' || active == 'todo'">
         <div class="list-table table">
             <table>
                 <thead>

+ 6 - 6
donate-console/src/main/webapp/resources/view/activity/activity_launch.html

@@ -586,7 +586,7 @@
                         <label for="" class="control-label fl">Banner</label>
                         <div class="fl uploadImage">
                             <div><button>上传图片</button><span>(1140*140)</span></div>
-                            <input type="file" ng-multiple="false" onchange='angular.element(this).scope().fileChanged(this, 0)'>
+                            <input type="file" ng-multiple="false" onchange='angular.element(this).scope().fileChanged(this, 1)'>
                             <div class="img-show img-shows">
                                 <img src="static/images/active01.png" alt=""/>
                             </div>
@@ -597,7 +597,7 @@
                         <div class="prise fl">
                             <div class="prise-list" ng-repeat="award in awards">
                                 <div class="prise-detail">
-                                    <div class="award"> <input type="text" ng-model="award.name"></div>
+                                    <div class="award"> <input type="text" ng-model="award.awardName"></div>
                                     <span>{{$index + 1}}</span>
                                     <a ng-click="deleteAward($index)">删除</a>
                                 </div>
@@ -611,7 +611,7 @@
                                 </div>
                                 <div class="award-detail clearfix">
                                     <span class="fl">赠送方式</span>
-                                    <select name="" ng-model="award.way" class="form-control fl">
+                                    <select name="" ng-model="award.way" class="form-control fl" ng-init="award.way = 1">
                                         <option ng-value="'1'">短信通知</option>
                                         <option ng-value="'2'">快递配送</option>
                                     </select>
@@ -619,7 +619,7 @@
                                 </div>
                                 <div class="uploadImg">
                                     上传图片
-                                    <input type="file" ng-multiple="false" onchange='angular.element(this).scope().fileChanged(this, $index + 2)'>
+                                    <input type="file" ng-multiple="false" ng-model="award.prizeImgs" ng-file-select ng-change="uploadPrizeImg(award, $index)">
                                 </div>
                             </div>
                             <div class="add-price">
@@ -691,8 +691,8 @@
                 </div>
             </div>
             <div class="modal-footer footer text-right">
-                <a href="" data-dismiss="modal">保存</a>
-                <a href="" ng-click="cancelSelected()" data-dismiss="modal">取消</a>
+                <a data-dismiss="modal">保存</a>
+                <a ng-click="cancelSelected()" data-dismiss="modal">取消</a>
             </div>
         </div>
     </div>

+ 1 - 1
donate-console/src/main/webapp/resources/view/project/project_detail.html

@@ -83,7 +83,7 @@
                     <div class="project-intro fl">
                         <div class="project-txt fl">
                             <div class="project-intro">
-                                <p>{{project.introduction}}</p>
+                                <span>{{project.introduction}}</span>
                                 <!--<img src="static/images/active05.png" alt=""/>-->
                             </div>
                             <!--<div class="projectIntro">-->

+ 16 - 2
donate-console/src/main/webapp/resources/view/project/project_launch_1.html

@@ -502,6 +502,20 @@
         font-size: 16px;
         color: #1968f9;
     }
+
+    .form .text-left button {
+        margin-bottom: 60px;
+        display: inline-block;
+        width: 160px;
+        height: 34px;
+        font-size: 16px;
+        color: #fff;
+        text-align: center;
+        border-radius: 3px;
+        background: #ff7624;
+        border: none;
+        outline: none;
+    }
 </style>
 <div class="content-wrapper" style="min-height: 924px;; z-index: 50;">
     <!-- Main content -->
@@ -608,11 +622,11 @@
                                 <div class="form-group clearfix text-left">
                                     <input type="checkbox" ng-click="changeChecked()" ng-checked="checked" required class="fl">
                                     <div class="agree">
-                                        <span>我已阅读并同意《<a href="/userAgreement">优软一元捐用户协议</a>》</span>
+                                        <span>我已阅读并同意《<a href="http://lj.ubtob.com/userAgreement">优软一元捐用户协议</a>》</span>
                                     </div>
                                 </div>
                                 <div class="text-left">
-                                    <a ng-click="saveBaseInfo(project)" ng-disabled="baseInfoForm.$invalid || !checked" class="btn">保存,下一步</a>
+                                    <button ng-disabled="baseInfoForm.$invalid || !checked" ng-click="saveBaseInfo(project)" class="btn">保存,下一步</button>
                                 </div>
                             </form>
                         </div>

+ 1 - 1
donate-console/src/main/webapp/resources/view/user/charityCertification.html

@@ -409,7 +409,7 @@
                             </div>
                             <div class="agree clearfix">
                                 <input type="checkbox" class="fl"/>
-                                <div class="fl read"><span>我已经阅读并同意<a href="">《优软一元捐用户协议》</a></span></div>
+                                <div class="fl read"><span>我已经阅读并同意<a href="http://lj.ubtob.com/userAgreement">《优软一元捐用户协议》</a></span></div>
                             </div>
                             <a ui-sref="charityCertificationStep1" class="btn">确定,下一步</a>
                         </div>

+ 1 - 1
donate-console/src/main/webapp/resources/view/user/publicOfferingCertification.html

@@ -534,7 +534,7 @@
                             </div>
                             <div class="agree clearfix">
                                 <input type="checkbox" class="fl"/>
-                                <div class="fl read"><span>我已经阅读并同意<a href="">《优软一元捐用户协议》</a></span></div>
+                                <div class="fl read"><span>我已经阅读并同意<a href="http://lj.ubtob.com/userAgreement">《优软一元捐用户协议》</a></span></div>
                             </div>
                             <a ui-sref="publicOfferingCertificationStep1" class="btn">确定,下一步</a>
                         </div>

+ 1 - 1
donate-service/src/main/resources/templates/index.ftl

@@ -722,7 +722,7 @@
                         </a>
                     </div>
                     <div class="top-item">
-                        <a href="/personalCenter">
+                        <a href="/userCenter">
                             <img src="static/images/index/icon_2.png" alt=""/>
                             <p>消息中心</p>
                             <em class="red"></em>

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
donate-service/src/main/webapp/resources/citydata/city.json


+ 1 - 1
donate-service/src/main/webapp/resources/view/activity/activity_list.html

@@ -395,7 +395,7 @@
                         </a>
                     </div>
                     <div class="top-item">
-                        <a href="/message">
+                        <a href="/userCenter">
                             <img src="static/images/index/icon_2.png" alt="消息中心"/>
                             <p>消息中心</p>
                             <em class="red"></em>

+ 2 - 2
donate-service/src/main/webapp/resources/view/project/project_detail.html

@@ -731,7 +731,7 @@
                         <span>已筹款:<em ng-bind="project.totalAmount | number: 2"></em>元<span>({{percentage * 100 | number: 2}}%)</span></span>
                     </div>
                     <!--我要捐款-->
-                    <button class="button" data-toggle="modal" data-target="#layer">我要捐款</button>
+                    <button class="button" data-toggle="modal" data-target="#layer" ng-disabled="project.overdue == '已结束'">我要捐款</button>
                 </div>
             </div>
         </div>
@@ -769,7 +769,7 @@
                         <p>联系电话:<span ng-bind="project.personTel"></span></p>
                     </div>
                     <div class="button">
-                        <a data-toggle="modal" data-target="#layer">我要捐款</a>
+                        <a data-toggle="modal" data-target="#layer"  ng-disabled="project.overdue == '已结束'">我要捐款</a>
                     </div>
                 </div>
                 <div ng-include src="'static/view/project/project_detail_side.html'"></div>

Неке датотеке нису приказане због велике количине промена