소스 검색

活动bug调整。

dongbw 8 년 전
부모
커밋
85d0017f4c

+ 2 - 5
donate-console/src/main/java/com/uas/console/donate/WebAppConfiguration.java

@@ -8,10 +8,7 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.http.MediaType;
 import org.springframework.http.converter.HttpMessageConverter;
 import org.springframework.http.converter.StringHttpMessageConverter;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+import org.springframework.web.servlet.config.annotation.*;
 import org.springframework.web.servlet.view.InternalResourceViewResolver;
 
 import java.nio.charset.Charset;
@@ -26,6 +23,7 @@ import java.util.List;
  */
 @Configuration
 @ComponentScan(basePackages = "com.uas.console.donate.controller")
+@EnableWebMvc
 public class WebAppConfiguration extends WebMvcConfigurerAdapter {
 
 	@Override
@@ -51,7 +49,6 @@ public class WebAppConfiguration extends WebMvcConfigurerAdapter {
 		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");
 		registry.addViewController("/logout/proxy").setViewName("proxyLogout");
 		registry.addViewController("/permissionsSettings").setViewName("permissionsSettings");

+ 11 - 0
donate-console/src/main/java/com/uas/console/donate/controller/ActivityController.java

@@ -1,6 +1,7 @@
 package com.uas.console.donate.controller;
 
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.uas.console.donate.model.*;
 import com.uas.console.donate.service.ActivityRecodeService;
@@ -320,4 +321,14 @@ public class ActivityController {
     public void deletePrizeImg(@RequestParam String path) {
         activityService.deletePrizeImg(path);
     }
+
+    /**
+     * 删除奖品时删除图片
+     */
+    @RequestMapping(value = "/delete/prizeImg/ByBatch", method = RequestMethod.DELETE)
+    @ResponseBody
+    public void deletePrizeImgByBatch(@RequestParam String path) {
+        List<String> paths = JSON.parseArray(path, String.class);
+        activityService.deletePrizeImgByBatch(paths);
+    }
 }

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

@@ -7,6 +7,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 @Controller
+@RequestMapping("/message")
 public class SmsController {
 
 

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

@@ -10,6 +10,7 @@ import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.Date;
+import java.util.List;
 
 @Repository
 public interface ActivityDao extends JpaRepository<Activity,Long>,JpaSpecificationExecutor<Activity> {
@@ -22,7 +23,7 @@ public interface ActivityDao extends JpaRepository<Activity,Long>,JpaSpecificati
 
     //取出个人还未发布的活动
     @Query("from Activity a where a.publish=1 and a.userUU = :userUU")
-    Activity findDraft(@Param("userUU") Long userUU);
+    List<Activity> findDraft(@Param("userUU") Long userUU);
 
     //搜索出所有还未开始的活动,活动开始时间小于当前时间
     @Query("from Activity a where NOW()<a.startTime and a.publish=2")

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

@@ -12,6 +12,7 @@ import org.springframework.data.repository.PagingAndSortingRepository;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 
+import java.math.BigInteger;
 import java.util.List;
 
 @Repository
@@ -73,5 +74,5 @@ public interface ProjectDao extends JpaRepository<Project,Long>,JpaSpecification
      * @return
      */
     @Query(value = "select p.pro_id from donate$project p where p.pro_id in (select distinct(pa.pro_id) from donate$activityproject pa)", nativeQuery = true)
-    List<Long> getProjectIdsRelated();
+    List<BigInteger> getProjectIdsRelated();
 }

+ 4 - 2
donate-console/src/main/java/com/uas/console/donate/model/Activity.java

@@ -171,7 +171,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;
 
@@ -367,7 +367,9 @@ public class Activity implements Serializable{
         Integer amount = 0;
         if (!CollectionUtils.isEmpty(this.getAwards())) {
             for (Award award : this.getAwards()) {
-                amount += award.getAmount();
+                if (null != award.getAmount()) {
+                    amount += award.getAmount();
+                }
             }
         }
         return amount;

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

@@ -59,4 +59,6 @@ public interface ActivityService {
     Attach uploadPrizeImg(MultipartFile file) throws Exception;
 
     void deletePrizeImg(String path);
+
+    void deletePrizeImgByBatch(List<String> paths);
 }

+ 54 - 16
donate-console/src/main/java/com/uas/console/donate/service/impl/ActivityServiceImpl.java

@@ -22,8 +22,10 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+import java.math.BigInteger;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -58,7 +60,7 @@ public class ActivityServiceImpl implements ActivityService{
     @Override
     public Activity show(){
         Long userUU = SystemSession.getUser().getUserUU();
-        return activityDao.findDraft(userUU);
+        return !CollectionUtils.isEmpty(activityDao.findDraft(userUU)) ? activityDao.findDraft(userUU).get(0) : null;
     }
     /**
      * 保存活动
@@ -79,19 +81,46 @@ public class ActivityServiceImpl implements ActivityService{
     }
 
     private Activity submitOrSave(Activity activity) {
-        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));
-//        Set<Award> awards = activity.getAwards();
-//        for (Award award : awards) {
-//            award.setActivity(activity);
-//        }
-        return activityDao.save(activity);
+        // 如果是已保存的
+        if (null != activity.getId()) {
+            Activity oldActivity = activityDao.findOne(activity.getId());
+            oldActivity.setSumconnect(activity.getProjects().size());
+            Date date=new Date();
+            //设置活动发布时间
+            activity.setSubmitTime(date);
+            //设置活动编号
+            activity.setCode(codesdf.format(date));
+            Set<Award> awards = new HashSet<>();
+            awardDao.delete(oldActivity.getAwards());
+            for (Award award : activity.getAwards()) {
+                award.setId(null);
+                award.setActivity(activity);
+                awards.add(award);
+            }
+            if (!CollectionUtils.isEmpty(awards)) {
+                awardDao.save(awards);
+            }
+            activity.setAwards(awards);
+            return activityDao.save(activity);
+        } else { // 未保存过得
+            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 act = activityDao.save(activity);
+            if (!CollectionUtils.isEmpty(activity.getAwards())) {
+                Set<Award> awards = new HashSet<>();
+                for (Award award : awards) {
+                    award.setActivity(act);
+                }
+                awardDao.save(awards);
+            }
+            return act;
+        }
     }
 
     public Activity up(Long id){
@@ -198,9 +227,11 @@ public class ActivityServiceImpl implements ActivityService{
     @Override
     public List<Project> getActivityRelatedProjects(final String keyword, final List<Long> proIds) {
         // 获取所有已被关联的项目id
-        List<Long> relatedIds = projectDao.getProjectIdsRelated();
+        List<BigInteger> relatedIds = projectDao.getProjectIdsRelated();
         if (!CollectionUtils.isEmpty(relatedIds)) {
-            proIds.addAll(relatedIds);
+            for (BigInteger id : relatedIds) {
+                proIds.add(id.longValue());
+            }
         }
         // 默认返回100条
         final PageInfo pageInfo = new PageInfo(1, 100);
@@ -248,4 +279,11 @@ public class ActivityServiceImpl implements ActivityService{
         }
     }
 
+    @Override
+    public void deletePrizeImgByBatch(List<String> paths) {
+        for (String path : paths) {
+            deletePrizeImg(path);
+        }
+    }
+
 }

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

@@ -20,7 +20,7 @@
     <link rel="stylesheet" href="static/lib/angular/toaster.css" />
     <link rel="stylesheet" href="static/css/base.css">
 </head>
-<body class="skin-blue sidebar-mini  pace-done">
+<body class="skin-blue sidebar-mini pace-done">
 <!--<div class="pace  pace-inactive">-->
     <!--<div class="pace-progress" data-progress-text="100%" data-progress="99" style="transform: translate3d(100%, 0px, 0px);">-->
         <!--<div class="pace-progress-inner"></div>-->
@@ -42,7 +42,7 @@
             <div class="navbar-custom-menu" style="padding-right: 2rem">
                 <ul class="nav navbar-nav">
                     <li class="dropdown user user-menu">
-                        <a href="#" class="dropdown-toggle">
+                        <a class="dropdown-toggle">
                             <span class="hidden-xs" ng-bind="userInfo.name"></span>
                             <i class="fa fa-user fa-lg"></i>
                             <!--<img src="static/images/avatar.jpg" class="user-image">-->

+ 25 - 3
donate-console/src/main/webapp/resources/js/index/app.js

@@ -1954,6 +1954,7 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
      */
     app.controller('ActivityListCtrl', ['$scope', '$rootScope', 'toaster', 'ngTableParams', 'BaseService', 'Activity', '$modal',
         function ($scope, $rootScope, toaster, ngTableParams, BaseService, Activity, $modal) {
+            BaseService.scrollBackToTop();
 
             var getActivityState = function (active) {
                 // 正在进行
@@ -2117,6 +2118,7 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
     app.controller('ActivityNewCtrl', ['$scope', 'BaseService', 'toaster', 'Activity', '$http', '$upload',
         function($scope, BaseService, toaster, Activity, $http, $upload) {
 
+        $scope.loading = true;
         $scope.activity = {
             awards:[],
             projects: []
@@ -2133,7 +2135,10 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
                     $scope.activity = data;
                     $scope.awards = data.awards;
                     $scope.selectedProjects = data.projects;
+                    $scope.actImgUrl = data.actImg;
+                    $scope.bannerUrl = data.banner;
                 }
+                $scope.loading = false;
             });
         };
         loadSavedActivity();
@@ -2179,12 +2184,11 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
         };
 
         // 删除某一奖品
+        $scope.deletePath = [];
         $scope.deleteAward = function($index) {
             var path = $scope.awards[$index].img;
             if (!angular.isUndefined(path)) {
-                Activity.deletePrizeImg({path: path}, {}, function(data) {
-
-                });
+                $scope.deletePath.push(path);
             }
             $scope.awards.splice($index, 1);
         };
@@ -2224,6 +2228,9 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
             angular.forEach($scope.projects, function(project, index) {
                 if (project.checked) {
                     project.checked = false;
+                    if (angular.isUndefined($scope.selectedProjects)) {
+                        $scope.selectedProjects = [];
+                    }
                     $scope.selectedProjects.push(project);
                     $scope.projects.splice(index, 1);
                 }
@@ -2265,12 +2272,24 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
             $scope.selectedProjects = angular.copy($scope.tempSelectedProjects);
         };
 
+        // 保存
+        $scope.saveSelected = function() {
+            $scope.tempProjects = angular.copy($scope.projects);
+            $scope.tempSelectedProjects = angular.copy($scope.selectedProjects);
+        };
+
         // 清空内容
         $scope.clearActivity = function() {
             $scope.activity = {
                 awards:[],
                 projects: []
             };
+            $scope.actImgUrl = null;
+            $scope.bannerUrl = null;
+            $scope.awards = [];
+            $scope.selectedProjects = [];
+            getProject();
+            BaseService.scrollBackToTop();
         };
 
         // 图片上传
@@ -2440,6 +2459,9 @@ define([ 'angularAMD', 'ui.router', 'ui-bootstrap', 'ngLocal', 'ngTable', 'file-
                 } else {
                     toaster.pop('success', '保存成功');
                 }
+                Activity.deletePrizeImgByBatch({path: $scope.deletePath}, {}, function(data) {
+
+                });
                 window.location.href='#/activity';
             }).error(function (data) {
                 $scope.loadingShow = false;

+ 5 - 0
donate-console/src/main/webapp/resources/js/index/services/Activity.js

@@ -69,6 +69,11 @@ define ([ 'ngResource' ], function() {
             deletePrizeImg: {
                 url: 'activity/delete/prizeImg',
                 method: 'DELETE'
+            },
+            // 删除奖品时,删除上传的图片 批量
+            deletePrizeImgByBatch: {
+                url: 'activity/delete/prizeImg/ByBatch',
+                method: 'DELETE'
             }
         });
     }]);

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

@@ -3,7 +3,7 @@
     <div class="right-header clearfix">
         <div class="fl"><span ng-bind="activity.name"></span>
             <!--<a href="" class="edit">编辑</a>-->
-            <a href="donate.ubtob.com/activity/{{activity.id}}">查看网页</a></div>
+            <a href="http://lj.ubtob.com/activity#/detail/{{activity.id}}" target="_blank">查看网页</a></div>
         <div class="fr close" ng-click="cancel()">&times;</div>
     </div>
     <div class="right-nav">
@@ -44,8 +44,7 @@
             <div class="list-header">
                 <span>活动介绍</span>
             </div>
-            <div class="list-body">
-                <p>{{activity.summary}}</p>
+            <div class="list-body" ng-bind-html="activity.summary">
                 <!--<p>1、活动介绍:基层团组织通过学校在校园内公布申请条件,学生及其监护人提出求助申请学校对申请学生进行家访,核实家庭经济状况后-->
                     <!--报县级团委审核,县级团委上报市级团委汇总;</p>-->
                 <!--<p>2、参加条件:确认市级团委汇总地区申请资料后报市青基会;</p>-->

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

@@ -611,6 +611,9 @@
     }
 
 </style>
+<!-- loading start -->
+<div class="loading in" ng-class="{'in': loading}"><i></i></div>
+<!-- loading end -->
 <div class="content-wrapper" style="min-height: 924px;; z-index: 50;">
     <section class="content-header clearfix">
         <h1>活动发起</h1>
@@ -719,14 +722,14 @@
                                 <div class="award-detail clearfix">
                                     <span class="fl">赠送方式</span>
                                     <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>
+                                        <option value="1">短信通知</option>
+                                        <option value="2">快递配送</option>
                                     </select>
                                     <!--<a class="edit-template fl" data-target="#redact" data-toggle="modal">编辑模板</a>-->
                                 </div>
                                 <div class="uploadImg">
                                     上传图片
-                                    <input type="file" ng-multiple="false" accept="image/*" id="award{{$index}}" ng-model="award.prizeImgs" ng-file-select ng-change="uploadPrizeImg(award, $index)" required>
+                                    <input type="file" ng-multiple="false" accept="image/*" id="award{{$index}}" ng-model="award.prizeImgs" ng-file-select ng-change="uploadPrizeImg(award, $index)">
                                 </div>
                                 <div ng-if="null != award.img" class="showImage">
                                     <img  src="{{award.img}}">
@@ -805,7 +808,7 @@
                 </div>
             </div>
             <div class="modal-footer footer text-right">
-                <a data-dismiss="modal">保存</a>
+                <a ng-click="saveSelected()" data-dismiss="modal">保存</a>
                 <a ng-click="cancelSelected()" data-dismiss="modal">取消</a>
             </div>
         </div>
@@ -821,24 +824,3 @@
         <img/>
     </div>
 </div>
-<script type="text/javascript">
-    $(document).ready(function() {
-        var btn = document.getElementsByClassName('dropdown-toggle');
-        console.log(btn.length);
-        for (var i = 0; i < btn.length; i++) {
-            console.log(btn);
-            var sib = btn[i].nextElementSibling;
-            var flag = true;
-            console.log(btn[i].nextElementSibling);
-            btn[i].onclick = function () {
-                if (flag) {
-                    sib.style.display = 'none';
-                    flag = false
-                } else {
-                    sib.style.display = 'block';
-                    flag = true
-                }
-            }
-        }
-    });
-</script>