소스 검색

Merge branch 'feature-V2.0' of http://git.mooctest.com/crowd-2019/crowd-test-service-backend into feature-V2.0

xuxuan 5 년 전
부모
커밋
198b01c336
25개의 변경된 파일398개의 추가작업 그리고 180개의 파일을 삭제
  1. 19 0
      core/src/main/java/com/mooctest/crowd/domain/dao/PublicationsDao.java
  2. 18 0
      core/src/main/java/com/mooctest/crowd/domain/domainobject/Publications.java
  3. 42 0
      core/src/main/java/com/mooctest/crowd/domain/model/PublicationsPO.java
  4. 1 64
      core/src/main/java/com/mooctest/crowd/domain/model/TechnicalArticlesPO.java
  5. 12 0
      core/src/main/java/com/mooctest/crowd/domain/repository/IPublicationsRepo.java
  6. 1 5
      core/src/main/java/com/mooctest/crowd/domain/repository/ITechnicalArticlesRepo.java
  7. 49 0
      core/src/main/java/com/mooctest/crowd/domain/repository/PublicationsRepo.java
  8. 1 2
      site/src/main/java/com/mooctest/crowd/site/anticorruption/impl/data/UserCommon.java
  9. 0 1
      site/src/main/java/com/mooctest/crowd/site/command/RestPasswordCommand.java
  10. 177 0
      site/src/main/java/com/mooctest/crowd/site/configuration/ShiroConfiguration.java
  11. 3 3
      site/src/main/java/com/mooctest/crowd/site/controller/CaptchaController.java
  12. 0 0
      site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java
  13. 11 2
      site/src/main/java/com/mooctest/crowd/site/controller/TechnicalArticlesController.java
  14. 2 5
      site/src/main/java/com/mooctest/crowd/site/controller/UserController.java
  15. 3 1
      site/src/main/java/com/mooctest/crowd/site/data/dto/TechnicalArticlesDTO.java
  16. 33 0
      site/src/main/java/com/mooctest/crowd/site/data/vo/PublicationsVO.java
  17. 0 68
      site/src/main/java/com/mooctest/crowd/site/data/vo/TechnicalArticlesVO.java
  18. 0 2
      site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java
  19. 0 19
      site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java
  20. 4 2
      site/src/main/java/com/mooctest/crowd/site/service/CommonService.java
  21. 2 2
      site/src/main/java/com/mooctest/crowd/site/service/TechnicalArticlesService.java
  22. 0 0
      site/src/main/java/com/mooctest/crowd/site/service/UserService.java
  23. 5 2
      site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java
  24. 15 2
      site/src/main/java/com/mooctest/crowd/site/service/impl/TechnicalArticlesServiceImpl.java
  25. 0 0
      site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java

+ 19 - 0
core/src/main/java/com/mooctest/crowd/domain/dao/PublicationsDao.java

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.domain.dao;
+
+import com.mooctest.crowd.domain.model.PublicationsPO;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.PagingAndSortingRepository;
+import javax.transaction.Transactional;
+
+
+
+@Transactional
+public interface PublicationsDao extends PagingAndSortingRepository<PublicationsPO, Long> ,CrudRepository<PublicationsPO, Long>, JpaRepository<PublicationsPO, Long> ,JpaSpecificationExecutor<PublicationsPO>{
+
+    Page<PublicationsPO> findAll(Specification<PublicationsPO> spec, Pageable pageable);
+}

+ 18 - 0
core/src/main/java/com/mooctest/crowd/domain/domainobject/Publications.java

@@ -0,0 +1,18 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+@Data
+public class Publications {
+    private Long id;
+    private String title;
+    private String publicYear;
+    private String  conferenceJournal;
+    private String authorList;
+    private String longTitle;
+    private String author;
+    private Timestamp uploadedDate;
+    private String chineseBrief;
+}

+ 42 - 0
core/src/main/java/com/mooctest/crowd/domain/model/PublicationsPO.java

@@ -0,0 +1,42 @@
+package com.mooctest.crowd.domain.model;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.sql.Timestamp;
+
+
+@Data
+@Entity
+@Table(name = "publications")
+public class PublicationsPO {
+
+    @Id
+    @Column(name = "P_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "P_TITLE")
+    private String title;
+
+    @Column(name = "P_YEAR")
+    private String publicYear;
+
+    @Column(name = "P_CONFERENCE_JOURNAL")
+    private String  conferenceJournal;
+
+    @Column(name = "P_AUTHOR_LIST")
+    private String authorList;
+
+    @Column(name = "P_SEC_LANG_TITLE")
+    private String longTitle;
+
+    @Column(name = "P_CH_AUTHORS")
+    private String author;
+
+    @Column(name = "P_UPLOADED_DATE")
+    private Timestamp uploadedDate;
+
+    @Column(name="P_CHINESE_BRIEF")
+    private  String chineseBrief;
+}

+ 1 - 64
core/src/main/java/com/mooctest/crowd/domain/model/TechnicalArticlesPO.java

@@ -13,6 +13,7 @@ public class TechnicalArticlesPO {
 
     @Id
     @Column(name = "TA_ID")
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
 
     @Column(name = "TA_TITLE")
@@ -30,70 +31,6 @@ public class TechnicalArticlesPO {
     @Column(name = "TA_SOURCE")
     private String source;
 
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getPhotoUrl() {
-        return photoUrl;
-    }
-
-    public void setPhotoUrl(String photoUrl) {
-        this.photoUrl = photoUrl;
-    }
-
-    public String getArticlesUrl() {
-        return articlesUrl;
-    }
-
-    public void setArticlesUrl(String articlesUrl) {
-        this.articlesUrl = articlesUrl;
-    }
-
-    public String getAuthor() {
-        return author;
-    }
-
-    public void setAuthor(String author) {
-        this.author = author;
-    }
-
-    public String getSource() {
-        return source;
-    }
-
-    public void setSource(String source) {
-        this.source = source;
-    }
-
-    public int getReading() {
-        return reading;
-    }
-
-    public void setReading(int reading) {
-        this.reading = reading;
-    }
-
-    public Timestamp getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Timestamp createTime) {
-        this.createTime = createTime;
-    }
-
     @Column(name = "TA_READING")
     private int reading;
 

+ 12 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/IPublicationsRepo.java

@@ -0,0 +1,12 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.domainobject.Publications;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+
+
+public interface IPublicationsRepo {
+
+    Page<Publications> getPublications(Pageable pageable, String keyword);
+
+}

+ 1 - 5
core/src/main/java/com/mooctest/crowd/domain/repository/ITechnicalArticlesRepo.java

@@ -4,12 +4,8 @@ import com.mooctest.crowd.domain.domainobject.TechnicalArticles;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 
-import java.util.List;
 
-/**
- * @Author: xuexb
- * @Date: 2019.7.5 14:58
- */
+
 public interface ITechnicalArticlesRepo {
 
     Page<TechnicalArticles> getTechnicalArticles(Pageable pageable, String keyword);

+ 49 - 0
core/src/main/java/com/mooctest/crowd/domain/repository/PublicationsRepo.java

@@ -0,0 +1,49 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.dao.PublicationsDao;
+import com.mooctest.crowd.domain.domainobject.Publications;
+import com.mooctest.crowd.domain.model.PublicationsPO;
+import com.mooctest.crowd.domain.util.Converter;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.domain.Specifications;
+import org.springframework.stereotype.Component;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+@Slf4j
+@Component
+public class PublicationsRepo implements IPublicationsRepo{
+
+
+    @Autowired
+    private PublicationsDao publicationsDao;
+
+    @Override
+    public Page<Publications> getPublications(Pageable pageable, String keyword) {
+        Specifications<PublicationsPO> where =  Specifications.where(getPublicationsByIsNotDeleted(keyword));
+        return publicationsDao.findAll(where, pageable).map(PublicationsPO->Converter.convert(Publications.class, PublicationsPO));
+    }
+
+    private Specification<PublicationsPO> getPublicationsByIsNotDeleted(String keyword) {
+        return new Specification<PublicationsPO>() {
+            @Override
+            public Predicate toPredicate(Root<PublicationsPO> a, CriteriaQuery<?> q, CriteriaBuilder cb) {
+                Predicate predicate = cb.conjunction();
+                if(keyword != null) {
+                    predicate.getExpressions().add(
+                            cb.like(a.<String>get("longTitle"), "%" + StringUtils.trim(keyword) + "%")
+                    );
+                }
+                return predicate;
+            }
+        };
+    }
+}

+ 1 - 2
site/src/main/java/com/mooctest/crowd/site/anticorruption/impl/data/UserCommon.java

@@ -31,11 +31,10 @@ public class UserCommon extends UserInfo {
 
    private String unionid;
 
-   public UserCommon(RestPasswordCommand command){
+   public void obtainValue(RestPasswordCommand command){
       super.setId(command.getId());
       super.setPassword(command.getPassword());
       this.oldPassword = command.getOldPassword();
-      this.verifyCode = command.getVerifyCode();
       this.password2 = command.getPassword2();
    }
 

+ 0 - 1
site/src/main/java/com/mooctest/crowd/site/command/RestPasswordCommand.java

@@ -16,5 +16,4 @@ public class RestPasswordCommand {
     private String oldPassword;
     private String password;
     private String password2;
-    private String verifyCode;
 }

+ 177 - 0
site/src/main/java/com/mooctest/crowd/site/configuration/ShiroConfiguration.java

@@ -0,0 +1,177 @@
+package com.mooctest.crowd.site.configuration;
+
+import org.apache.shiro.cache.ehcache.EhCacheManager;
+import org.apache.shiro.spring.LifecycleBeanPostProcessor;
+import org.apache.shiro.web.session.mgt.DefaultWebSessionManager;
+import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.DependsOn;
+
+/**
+ * Shiro configuration
+ * Created by Liu on 2017/6/6.
+ */
+@Configuration
+public class ShiroConfiguration {
+    /**
+     * LifecycleBeanPostProcessor,这是个DestructionAwareBeanPostProcessor的子类,
+     * 负责org.apache.shiro.util.Initializable类型bean的生命周期的,初始化和销毁。
+     * 主要是AuthorizingRealm类的子类,以及EhCacheManager类。
+     */
+    @Bean(name = "lifecycleBeanPostProcessor")
+    public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
+        return new LifecycleBeanPostProcessor();
+    }
+
+    /**
+     * ShiroRealm,这是个自定义的认证类,继承自AuthorizingRealm,
+     * 负责用户的认证和权限的处理,可以参考JdbcRealm的实现。
+     */
+//    @ConditionalOnProperty(prefix = "featureSwitch", name = "client.loginByUserCenter", matchIfMissing = false)
+//    @Bean(name = "shiroRealm")
+//    @DependsOn("lifecycleBeanPostProcessor")
+//    public ShiroRealmAdapt2UserCenter shiroRealmAdapt2UserCenter() {
+//        // System.out.println("\nCreate ShiroRealm Adapt to UserCenter\n");
+//        ShiroRealmAdapt2UserCenter realm = new ShiroRealmAdapt2UserCenter();
+//        return realm;
+//    }
+//
+//    @Bean(name = "shiroRealm")
+//    @DependsOn("lifecycleBeanPostProcessor")
+//    public ShiroRealm shiroRealm() {
+//        // System.out.println("\nCreate ShiroRealm don't Adapt to UserCenter\n");
+//        ShiroRealm realm = new ShiroRealm();
+//        return realm;
+//    }
+
+    /**
+     * EhCacheManager,缓存管理,用户登陆成功后,把用户信息和权限信息缓存起来,
+     * 然后每次用户请求时,放入用户的session中,如果不设置这个bean,每个请求都会查询一次数据库。
+     */
+    @Bean(name = "ehCacheManager")
+    @DependsOn("lifecycleBeanPostProcessor")
+    public EhCacheManager ehCacheManager() {
+        return new EhCacheManager();
+    }
+
+    /**
+     * SecurityManager,权限管理,这个类组合了登陆,登出,权限,session的处理,是个比较重要的类。
+     */
+//    @Bean(name = "securityManager")
+//    public DefaultWebSecurityManager securityManager(AuthorizingRealm shiroRealm) {
+//        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
+//        securityManager.setRealm(shiroRealm);
+//        securityManager.setCacheManager(ehCacheManager());
+//        //securityManager.setSessionManager(defaultWebSessionManager());
+//
+//        return securityManager;
+//    }
+
+    /**
+     * ShiroFilterFactoryBean,是个factorybean,为了生成ShiroFilter。
+     * 它主要保持了三项数据,securityManager,filters,filterChainDefinitionManager。
+     */
+//    @Bean(name = "shiroFilter")
+//    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
+//        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
+//        shiroFilterFactoryBean.setSecurityManager(securityManager);
+//
+//        Map<String, Filter> filters = new LinkedHashMap<>();
+//        filters.put("authc", new MyAuthorizationFilter());
+//        shiroFilterFactoryBean.setFilters(filters);
+//
+//        Map<String, String> filterChainDefinitionManager = new LinkedHashMap<String, String>();
+//
+//        filterChainDefinitionManager.put("/api/cookie/set", "anon");
+//        filterChainDefinitionManager.put("/api/test/login", "anon");
+//        filterChainDefinitionManager.put("/api/test/register", "anon");
+//        filterChainDefinitionManager.put("/api/featureSwitch", "anon");
+//        filterChainDefinitionManager.put("/api/ossConfiguration","anon");
+//        filterChainDefinitionManager.put("/api/common/tag/**", "authc");
+//        filterChainDefinitionManager.put("/api/common/**", "anon");
+//        filterChainDefinitionManager.put("/api/mobileLogin", "anon");
+//        filterChainDefinitionManager.put("/api/case/nodeList", "anon");
+//        filterChainDefinitionManager.put("/api/exam/**/info","anon");
+//        filterChainDefinitionManager.put("/api/payEmail", "anon");
+//        filterChainDefinitionManager.put("/api/product/send", "anon");
+//
+//        filterChainDefinitionManager.put("/logout", "anon");
+//        filterChainDefinitionManager.put("/api/dev/**", "anon");
+//        filterChainDefinitionManager.put("/api/kibug/plugin/**", "anon");
+//        filterChainDefinitionManager.put("/api/wechat/**", "anon");
+//
+//        filterChainDefinitionManager.put("/api/pythonCommunity/exercise/**", "anon");
+//        filterChainDefinitionManager.put("/api/pythonCommunity/statistic/**", "authc");
+//        filterChainDefinitionManager.put("/api/support/**", "anon");
+//        filterChainDefinitionManager.put("/api/evaluation/**", "authc");
+//
+//        filterChainDefinitionManager.put("/api/onlinejudge/**","anon");
+//
+//        filterChainDefinitionManager.put("/api/codeVisualize/**", "anon");
+//
+//        filterChainDefinitionManager.put("/api/onlinejudge/u/**","authc");
+//        filterChainDefinitionManager.put("/api/sendGetHelpEmail", "anon");
+//        filterChainDefinitionManager.put("/**", "authc");
+//        filterChainDefinitionManager.put("/api/caseExport", "anon");
+//        filterChainDefinitionManager.put("/api/caseImport", "anon");
+//
+//        filterChainDefinitionManager.put("/api/contest/enterWithoutLogin/**", "anon");
+//
+//
+//
+//
+//        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionManager);
+//
+//        shiroFilterFactoryBean.setSuccessUrl("/");
+//        shiroFilterFactoryBean.setLoginUrl("/");
+//        shiroFilterFactoryBean.setUnauthorizedUrl("");
+//        return shiroFilterFactoryBean;
+//    }
+
+    /**
+     * DefaultAdvisorAutoProxyCreator,Spring的一个bean,由Advisor决定对哪些类的方法进行AOP代理。
+     */
+    @Bean
+    @ConditionalOnMissingBean
+    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
+        DefaultAdvisorAutoProxyCreator defaultAAP = new DefaultAdvisorAutoProxyCreator();
+        defaultAAP.setProxyTargetClass(true);
+        return defaultAAP;
+    }
+
+    /**
+     * AuthorizationAttributeSourceAdvisor,shiro里实现的Advisor类,
+     * 内部使用AopAllianceAnnotationsAuthorizingMethodInterceptor来拦截用以下注解的方法。
+     */
+//    @Bean
+//    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
+//        AuthorizationAttributeSourceAdvisor aASA = new AuthorizationAttributeSourceAdvisor();
+//        aASA.setSecurityManager(securityManager);
+//        return aASA;
+//    }
+
+//    @Bean(name = "sessionDao")
+//    public MySessionDao sessionDao() {
+//        MySessionDao sessionDao = new MySessionDao();
+//        sessionDao.setSessionIdGenerator(new JavaUuidSessionIdGenerator());
+////        sessionDao.setSessionIdGenerator(JavaUuidSessionIdGenerator);
+//        return sessionDao;
+//    }
+
+    @Bean(name = "sessionManager")
+    public DefaultWebSessionManager defaultWebSessionManager() {
+        DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
+        sessionManager.setCacheManager(ehCacheManager());
+        sessionManager.setGlobalSessionTimeout(1800000);//超时时间
+        sessionManager.setSessionValidationSchedulerEnabled(true);//定时清除无效的session
+        sessionManager.setSessionValidationInterval(1800000);//半个小时清理一次失效的session
+        sessionManager.setDeleteInvalidSessions(true);//删除无效的session
+//        sessionManager.setSessionDAO(sessionDao());
+        return sessionManager;
+    }
+
+}
+
+

+ 3 - 3
site/src/main/java/com/mooctest/crowd/site/controller/CaptchaController.java

@@ -2,8 +2,6 @@ package com.mooctest.crowd.site.controller;
 
 import com.google.code.kaptcha.impl.DefaultKaptcha;
 import com.mooctest.crowd.domain.util.EncryptionUtil;
-import org.apache.shiro.SecurityUtils;
-import org.apache.shiro.session.Session;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -13,6 +11,7 @@ import javax.imageio.ImageIO;
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
 import java.awt.image.BufferedImage;
 
 /**
@@ -42,7 +41,8 @@ public class CaptchaController extends BaseController {
         String capText = captchaProducer.createText();
 
         try {
-            Session session = SecurityUtils.getSubject().getSession();
+//            Session session = SecurityUtils.getSubject().getSession();
+            HttpSession session = request.getSession();
             String md5Captcha = EncryptionUtil.encryptMD5Hex(capText);
             session.setAttribute("captchaCode" , md5Captcha);
 

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/controller/CommonController.java


+ 11 - 2
site/src/main/java/com/mooctest/crowd/site/controller/TechnicalArticlesController.java

@@ -8,12 +8,15 @@ import com.mooctest.crowd.site.data.vo.SearchConditionVO;
 import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
 import com.mooctest.crowd.site.service.TechnicalArticlesService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -22,16 +25,22 @@ import java.util.List;
  */
 @RestController
 @RequestMapping("/api/technical")
-public class TechnicalArticlesController {
+public class TechnicalArticlesController extends BaseSearchController{
 
     @Autowired
     private TechnicalArticlesService technical;
 
     @RequestMapping(value = "/articles", method = RequestMethod.POST)
     public ResponseVO<TechnicalArticlesDTO> technicalarticles(@RequestBody SearchConditionVO searchConditionVO){
+        Map<String, String> extraCondition = searchConditionVO.getColumnFilters()==null? new HashMap<>() :super.getExtraCondition(searchConditionVO);
         Pageable pageable = this.getPageable(searchConditionVO);
         String keyword = searchConditionVO.getKeyword();
-        return new ResponseVO<>(ServerCode.SUCCESS, technical.getArticles(pageable, keyword));
+        return new ResponseVO<>(ServerCode.SUCCESS, technical.getArticles(pageable, keyword,extraCondition));
+    }
+
+    @Override
+    public Page<?> search(String searchCondition) {
+        return null;
     }
 
     Pageable getPageable(SearchConditionVO searchConditionVO){

+ 2 - 5
site/src/main/java/com/mooctest/crowd/site/controller/UserController.java

@@ -3,7 +3,6 @@ package com.mooctest.crowd.site.controller;
 import com.mooctest.crowd.domain.exception.*;
 import com.mooctest.crowd.site.annotation.LoginRequired;
 import com.mooctest.crowd.site.annotation.SysAdminRequired;
-import com.mooctest.crowd.site.anticorruption.impl.data.UserCommon;
 import com.mooctest.crowd.site.command.*;
 import com.mooctest.crowd.site.data.dto.UserDTO;
 import com.mooctest.crowd.site.data.response.ResponseVO;
@@ -79,10 +78,8 @@ public class UserController extends BaseController {
      * 修改密码
      */
     @RequestMapping(value = "/password/reset", method = RequestMethod.PUT)
-    public ResponseVO<UserCommon> resetPassword(@RequestBody RestPasswordCommand restPasswordCommand, BindingResult result) {
-        if (result.hasErrors())
-            throw new BadRequestException(result.getFieldError().getDefaultMessage());
-        return new ResponseVO<>(ServerCode.SUCCESS, userService.restPassword(restPasswordCommand));
+    public ResponseVO<Object> resetPassword(@RequestBody RestPasswordCommand restPasswordCommand, HttpServletRequest request) throws InvocationTargetException, IllegalAccessException {
+        return userService.restPassword(restPasswordCommand, request);
     }
 
     /**

+ 3 - 1
site/src/main/java/com/mooctest/crowd/site/data/dto/TechnicalArticlesDTO.java

@@ -1,11 +1,13 @@
 package com.mooctest.crowd.site.data.dto;
 
+import com.mooctest.crowd.site.data.vo.PublicationsVO;
 import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
 import lombok.Data;
 import org.springframework.data.domain.Page;
 
 @Data
 public class TechnicalArticlesDTO {
-    Page<TechnicalArticlesVO>  technicalArticlespage;
+    Page<TechnicalArticlesVO>  technicalArticlesPage;
+    Page<PublicationsVO>  publicationsPage;
     int count;
 }

+ 33 - 0
site/src/main/java/com/mooctest/crowd/site/data/vo/PublicationsVO.java

@@ -0,0 +1,33 @@
+package com.mooctest.crowd.site.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.Publications;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import java.sql.Timestamp;
+
+
+@Data
+@NoArgsConstructor
+public class PublicationsVO {
+    private Long id;
+    private String title;
+    private String publicYear;
+    private String  conferenceJournal;
+    private String authorList;
+    private String longTitle;
+    private String author;
+    private Timestamp uploadedDate;
+    private String chineseBrief;
+
+    public PublicationsVO(Publications publications){
+        this.id=publications.getId();
+        this.title=publications.getTitle();
+        this.publicYear=publications.getPublicYear();
+        this.conferenceJournal=publications.getConferenceJournal();
+        this.authorList=publications.getAuthorList();
+        this.longTitle=publications.getLongTitle();
+        this.author=publications.getAuthor();
+        this.uploadedDate=publications.getUploadedDate();
+        this.chineseBrief=publications.getChineseBrief();
+    }
+}

+ 0 - 68
site/src/main/java/com/mooctest/crowd/site/data/vo/TechnicalArticlesVO.java

@@ -21,77 +21,9 @@ public class TechnicalArticlesVO {
     private String author;
     private String source;
     private String time_interval;
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getPhotoUrl() {
-        return photoUrl;
-    }
-
-    public void setPhotoUrl(String photoUrl) {
-        this.photoUrl = photoUrl;
-    }
-
-    public String getArticlesUrl() {
-        return articlesUrl;
-    }
-
-    public void setArticlesUrl(String articlesUrl) {
-        this.articlesUrl = articlesUrl;
-    }
-
-    public String getAuthor() {
-        return author;
-    }
-
-    public void setAuthor(String author) {
-        this.author = author;
-    }
-
-    public String getSource() {
-        return source;
-    }
-
-    public void setSource(String source) {
-        this.source = source;
-    }
-
-    public int getReading() {
-        return reading;
-    }
-
-    public void setReading(int reading) {
-        this.reading = reading;
-    }
-
-    public Timestamp getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Timestamp createTime) {
-        this.createTime = createTime;
-    }
-
     private int reading;
     private Timestamp createTime;
 
-    public void setName(Iterable<TechnicalArticlesPO> technicalArticlesPO) {
-
-    }
 
     public TechnicalArticlesVO(TechnicalArticles project){
         this.id = project.getId();

+ 0 - 2
site/src/main/java/com/mooctest/crowd/site/mediator/ViewMediator.java

@@ -56,8 +56,6 @@ public interface ViewMediator {
 
     List<BaseAuthVO> renderAuthedList();
 
-    List<TechnicalArticlesVO> technicalArticles(Pageable pageable);
-
     // 项目模糊查询
     List<CrowdTestProjectVO>     findByNameLike(String name);
 

+ 0 - 19
site/src/main/java/com/mooctest/crowd/site/mediator/impl/WebMediatorImpl.java

@@ -692,25 +692,6 @@ public class WebMediatorImpl implements ViewMediator {
     }
 
     @Override
-    public List<TechnicalArticlesVO> technicalArticles(Pageable pageable) {
-        List<TechnicalArticlesVO> technicalArticlesVOList = new ArrayList<>();
-        technicalarticlesDao.findAll(pageable).forEach(technicalArticlesPO -> {
-            TechnicalArticlesVO technicalArticlesVO = new TechnicalArticlesVO();
-            technicalArticlesVO.setId(technicalArticlesPO.getId());
-            technicalArticlesVO.setName(technicalarticlesDao.findById(technicalArticlesPO.getId()).get().getName());
-            technicalArticlesVO.setPhotoUrl(technicalarticlesDao.findById(technicalArticlesPO.getId()).get().getPhotoUrl());
-            technicalArticlesVO.setArticlesUrl(technicalarticlesDao.findById(technicalArticlesPO.getId()).get().getArticlesUrl());
-            technicalArticlesVO.setAuthor(technicalarticlesDao.findById(technicalArticlesPO.getId()).get().getAuthor());
-            technicalArticlesVO.setSource(technicalarticlesDao.findById(technicalArticlesPO.getId()).get().getSource());
-            technicalArticlesVO.setReading(technicalarticlesDao.findById(technicalArticlesPO.getId()).get().getReading());
-            technicalArticlesVO.setCreateTime(technicalarticlesDao.findById(technicalArticlesPO.getId()).get().getCreateTime());
-            technicalArticlesVOList.add(technicalArticlesVO);
-        });
-        List<TechnicalArticlesVO> results = technicalArticlesVOList.stream().distinct().collect(Collectors.toList());
-        return results;
-    }
-
-    @Override
     public List<CrowdTestProjectVO> findByNameLike(String name) {
         List<CrowdTestProjectVO> authingList = new ArrayList<>();
         authingList.addAll(projectDao.findByNameLike("%"+name+"%").stream().map(crowdTestProjectPO -> {

+ 4 - 2
site/src/main/java/com/mooctest/crowd/site/service/CommonService.java

@@ -4,11 +4,13 @@ import com.mooctest.crowd.site.data.dto.IndexDTO;
 import com.mooctest.crowd.site.data.dto.IndexInfoDTO;
 import com.mooctest.crowd.site.data.dto.IndexPageDTO;
 import com.mooctest.crowd.site.data.dto.MyCrowdDTO;
-import com.mooctest.crowd.site.data.vo.*;
+import com.mooctest.crowd.site.data.vo.CrowdProjectVO;
+import com.mooctest.crowd.site.data.vo.CrowdTaskVO;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.Map;
 
 @Service
@@ -17,7 +19,7 @@ public interface CommonService {
 
     MyCrowdDTO getPersonCrowd(Long userId);
 
-    IndexInfoDTO getIndexInfos();
+    IndexInfoDTO getIndexInfos(HttpServletRequest request);
 
     IndexPageDTO getIndexPageInfo(Pageable pageable, Map<String, String> extraCondition, String keyword, int deletedStatus);
 

+ 2 - 2
site/src/main/java/com/mooctest/crowd/site/service/TechnicalArticlesService.java

@@ -5,7 +5,7 @@ import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
 import org.springframework.data.domain.Pageable;
 
 import java.util.List;
-
+import java.util.Map;
 
 
 /**
@@ -16,7 +16,7 @@ import java.util.List;
 
 public interface TechnicalArticlesService {
 
-    TechnicalArticlesDTO getArticles(Pageable pageable,String keyword);
+    TechnicalArticlesDTO getArticles(Pageable pageable,String keyword,Map<String, String> extraCondition);
 
     List<TechnicalArticlesVO> articlesRanking();
 

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/service/UserService.java


+ 5 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/CommonServiceImpl.java

@@ -17,6 +17,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.Map;
 
 @Service
@@ -48,8 +49,10 @@ public class CommonServiceImpl implements CommonService {
     }
 
     @Override
-    public IndexInfoDTO getIndexInfos() {
-        return viewMediator.renderIndexInfos();
+    public IndexInfoDTO getIndexInfos(HttpServletRequest request) {
+        IndexInfoDTO indexInfoDTO = viewMediator.renderIndexInfos();
+        request.getSession().setAttribute("indexInfo", indexInfoDTO);
+        return indexInfoDTO;
     }
 
     @Override

+ 15 - 2
site/src/main/java/com/mooctest/crowd/site/service/impl/TechnicalArticlesServiceImpl.java

@@ -1,8 +1,10 @@
 package com.mooctest.crowd.site.service.impl;
 
 
+import com.mooctest.crowd.domain.repository.PublicationsRepo;
 import com.mooctest.crowd.domain.repository.TechnicalArticlesRepo;
 import com.mooctest.crowd.site.data.dto.TechnicalArticlesDTO;
+import com.mooctest.crowd.site.data.vo.PublicationsVO;
 import com.mooctest.crowd.site.data.vo.TechnicalArticlesVO;
 import com.mooctest.crowd.site.mediator.ViewMediator;
 import com.mooctest.crowd.site.service.TechnicalArticlesService;
@@ -11,6 +13,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class TechnicalArticlesServiceImpl implements TechnicalArticlesService{
@@ -24,10 +27,20 @@ public class TechnicalArticlesServiceImpl implements TechnicalArticlesService{
     @Autowired
     private TechnicalArticlesRepo technicalArticlesRepo;
 
+    @Autowired
+    private PublicationsRepo publicationsRepo;
+
     @Override
-    public TechnicalArticlesDTO getArticles(Pageable pageable,String keyword) {
+    public TechnicalArticlesDTO getArticles(Pageable pageable,String keyword,Map<String, String> extraCondition) {
         TechnicalArticlesDTO  technicalArticlesDTO= new  TechnicalArticlesDTO();
-        technicalArticlesDTO.setTechnicalArticlespage(technicalArticlesRepo.getTechnicalArticles(pageable, keyword).map(technicalArticles -> new TechnicalArticlesVO(technicalArticles)));
+        for(String key:extraCondition.keySet()) {
+            String value = extraCondition.get(key);
+            if(value.equals("0")){
+                technicalArticlesDTO.setTechnicalArticlesPage(technicalArticlesRepo.getTechnicalArticles(pageable, keyword).map(technicalArticles -> new TechnicalArticlesVO(technicalArticles)));
+            }else if(value.equals("1")){
+                technicalArticlesDTO.setPublicationsPage(publicationsRepo.getPublications(pageable, keyword).map(publications -> new PublicationsVO(publications)));
+            }
+        }
         return technicalArticlesDTO;
     }
 

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
site/src/main/java/com/mooctest/crowd/site/service/impl/UserServiceImpl.java


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.