Просмотр исходного кода

Merge branch 'master' of https://git.coding.net/aft/AFT

wubb лет назад: 8
Родитель
Сommit
a4389455e1
31 измененных файлов с 1924 добавлено и 334 удалено
  1. 13 0
      generatorConfig.xml
  2. 4 2
      src/main/java/com/goafanti/achievement/service/AchievementService.java
  3. 19 0
      src/main/java/com/goafanti/achievement/service/impl/AchievementServiceImpl.java
  4. 3 0
      src/main/java/com/goafanti/admin/controller/AdminNewsApiController.java
  5. 6 0
      src/main/java/com/goafanti/common/constant/AFTConstants.java
  6. 36 13
      src/main/java/com/goafanti/common/controller/WebpageController.java
  7. 4 0
      src/main/java/com/goafanti/common/dao/AchievementMapper.java
  8. 96 0
      src/main/java/com/goafanti/common/dao/CountryCodeMapper.java
  9. 2 0
      src/main/java/com/goafanti/common/dao/NewsMapper.java
  10. 4 1
      src/main/java/com/goafanti/common/dao/OrganizationIdentityMapper.java
  11. 4 0
      src/main/java/com/goafanti/common/dao/UserIdentityMapper.java
  12. 1 0
      src/main/java/com/goafanti/common/enums/NewsCacheKey.java
  13. 48 4
      src/main/java/com/goafanti/common/mapper/AchievementMapper.xml
  14. 271 0
      src/main/java/com/goafanti/common/mapper/CountryCodeMapper.xml
  15. 14 1
      src/main/java/com/goafanti/common/mapper/NewsMapperExt.xml
  16. 23 1
      src/main/java/com/goafanti/common/mapper/OrganizationIdentityMapper.xml
  17. 23 2
      src/main/java/com/goafanti/common/mapper/UserIdentityMapper.xml
  18. 135 0
      src/main/java/com/goafanti/common/model/CountryCode.java
  19. 572 0
      src/main/java/com/goafanti/common/model/CountryCodeExample.java
  20. 1 0
      src/main/java/com/goafanti/core/cache/serializer/FastJsonRedisSerializer.java
  21. 15 2
      src/main/java/com/goafanti/news/bo/NewsSummary.java
  22. 14 0
      src/main/java/com/goafanti/news/service/NewsService.java
  23. 123 0
      src/main/java/com/goafanti/portal/bo/InternationalListBo.java
  24. 3 0
      src/main/java/com/goafanti/user/service/OrganizationIdentityService.java
  25. 5 0
      src/main/java/com/goafanti/user/service/UserIdentityService.java
  26. 17 1
      src/main/java/com/goafanti/user/service/impl/OrganizationIdentityServiceImpl.java
  27. 19 0
      src/main/java/com/goafanti/user/service/impl/UserIdentityServiceImpl.java
  28. 77 0
      src/main/resources/props/config_local.properties
  29. 82 69
      src/main/webapp/WEB-INF/views/portal/index.html
  30. 255 212
      src/main/webapp/WEB-INF/views/portal/ipr/iso.html
  31. 35 26
      src/main/webapp/WEB-INF/views/portal/ipr/patentOperation.html

+ 13 - 0
generatorConfig.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
+<generatorConfiguration>
+  <classPathEntry location="E:/mysql-connector-java-5.1.40.jar" />
+  <context id="context1">	
+    <jdbcConnection connectionURL="jdbc:mysql://localhost:3306/aft" 
+    	driverClass="com.mysql.jdbc.Driver" password="123456" userId="root" />
+    <javaModelGenerator targetPackage="com.goafanti.common.model" targetProject="AFT" />
+    <sqlMapGenerator targetPackage="com.goafanti.common.mapper" targetProject="AFT" />
+    <javaClientGenerator targetPackage="com.goafanti.common.dao" targetProject="AFT" type="XMLMAPPER" />
+    <table schema="aft" tableName="country_code"/>
+  </context>
+</generatorConfiguration>

+ 4 - 2
src/main/java/com/goafanti/achievement/service/AchievementService.java

@@ -15,6 +15,7 @@ import com.goafanti.portal.bo.AchievementDetailBo;
 import com.goafanti.portal.bo.AchievementPortalDetailBo;
 import com.goafanti.portal.bo.AchievementPortalSimilarListBo;
 import com.goafanti.portal.bo.AchievementSearchListBo;
+import com.goafanti.portal.bo.InternationalListBo;
 
 public interface AchievementService {
 
@@ -67,6 +68,7 @@ public interface AchievementService {
 	List<AchievementPortalSimilarListBo> findByFieldA(Integer fieldA, String id, Integer type);
 
 	int updateByPrimaryKeySelective(Achievement a);
-
-
+	
+	/** 查询国际化技术 **/
+	List<InternationalListBo> selectInternationalAchievement(Integer internationalAchievementKey);
 }

+ 19 - 0
src/main/java/com/goafanti/achievement/service/impl/AchievementServiceImpl.java

@@ -11,8 +11,12 @@ import java.util.Map;
 import java.util.UUID;
 
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import com.goafanti.achievement.bo.AchievementImportBo;
@@ -49,6 +53,7 @@ import com.goafanti.common.model.Notice;
 import com.goafanti.common.model.OrganizationIdentity;
 import com.goafanti.common.model.UserIdentity;
 import com.goafanti.common.utils.DateUtils;
+import com.goafanti.common.utils.LoggerUtils;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
@@ -57,6 +62,7 @@ import com.goafanti.portal.bo.AchievementDetailBo;
 import com.goafanti.portal.bo.AchievementPortalDetailBo;
 import com.goafanti.portal.bo.AchievementPortalSimilarListBo;
 import com.goafanti.portal.bo.AchievementSearchListBo;
+import com.goafanti.portal.bo.InternationalListBo;
 
 @Service
 public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> implements AchievementService {
@@ -80,6 +86,8 @@ public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> im
 	@Autowired
 	private OrganizationIdentityMapper		organizationIdentityMapper;
 
+	private static final Logger logger = LoggerFactory.getLogger(AchievementServiceImpl.class);
+	
 	@SuppressWarnings("unchecked")
 	@Override
 	public Pagination<AchievementListBo> listUserOwnerAchievement(String username, String ownerName, String ownerId,
@@ -595,4 +603,15 @@ public class AchievementServiceImpl extends BaseMybatisDao<AchievementMapper> im
 		return achievementMapper.updateByPrimaryKey(a);
 	}
 
+
+	@Override
+	@Cacheable(value = "internationalAchievementList", key = "'internationalAchievementList:'+#internationalAchievementCacheKey")
+	public List<InternationalListBo> selectInternationalAchievement(Integer internationalAchievementCacheKey) {
+		return achievementMapper.selectInternationalAchievement();
+	}
+	
+	@CacheEvict(value = "internationalAchievementList", allEntries = true)
+	public void cleanInternationalAchievement() {
+		LoggerUtils.debug(logger, "清除国际化技术列表");
+	}
 }

+ 3 - 0
src/main/java/com/goafanti/admin/controller/AdminNewsApiController.java

@@ -168,11 +168,14 @@ public class AdminNewsApiController extends BaseApiController {
 			newsService.cleanList(); // 清除策源地页面新闻列表缓存
 		} else if (NewsCacheKey.NEWS_PORTAL_LIST_CACHE_KEY.getCode().equals(cacheKey)) {
 			newsService.cleanPortalList(); // 清除新闻列表页列表缓存
+		} else if (NewsCacheKey.NEWS_INDEX_LIST_CACHE_KEY.getCode().equals(cacheKey)){
+			newsService.cleanIndexNewsList(); //清除首页新闻缓存
 		} else {
 			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "缓存标记"));
 		}
 		return res;
 	}
+	
 
 	private Result disposeInputNews(Result res, InputNews news, String createTimeFormattedDate) {
 		if (StringUtils.isBlank(news.getTitle())) {

+ 6 - 0
src/main/java/com/goafanti/common/constant/AFTConstants.java

@@ -52,4 +52,10 @@ public class AFTConstants {
 	public static final Integer	LECTURE_DYNAMIC_LIST_CACHE_KEY	= 668;
 
 	public static final Integer	LECTURE_LIST_CACHE_KEY			= 669;
+	
+	public static final Integer INTERNATIONAL_ACHIEVEMENT_CACHE_KEY = 670;
+	
+	public static final Integer INTERNATIONAL_USER_CACHE_KEY    = 671;
+	
+	public static final Integer INTERNATIONAL_ORG_CACHE_KEY    = 672;
 }

+ 36 - 13
src/main/java/com/goafanti/common/controller/WebpageController.java

@@ -13,9 +13,15 @@ import org.springframework.web.servlet.ModelAndView;
 import com.goafanti.achievement.service.AchievementService;
 import com.goafanti.banners.enums.BannersType;
 import com.goafanti.banners.service.BannersService;
+import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.model.Banners;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.demand.service.DemandService;
+import com.goafanti.portal.bo.InternationalListBo;
+import com.goafanti.user.service.OrganizationIdentityService;
+import com.goafanti.user.service.UserIdentityService;
+import com.goafanti.news.enums.NewsType;
+import com.goafanti.news.service.NewsService;
 
 @Controller
 public class WebpageController extends BaseController {
@@ -29,6 +35,30 @@ public class WebpageController extends BaseController {
 	@Resource
 	private BannersService		bannersService;
 
+	@Resource
+	private UserIdentityService 	userIdentityService;
+	
+	@Resource
+	private OrganizationIdentityService organizationIdentityService;
+	
+	@Resource
+	private NewsService			newsService;
+
+	/**
+	 * 首页
+	 */
+	@RequestMapping(value = "/portal/index", method = RequestMethod.GET)
+	public ModelAndView portalIndex(HttpServletRequest request, ModelAndView modelview) {
+		modelview.setViewName("/portal/index");
+		List<Banners> banners = bannersService.findPortalBanners(BannersType.SHOU_YE.getKey());
+		if (!banners.isEmpty()) {
+			modelview.addObject("banner", banners.get(0));
+		}
+		modelview.addObject("zfwl", newsService.findIndexNewsList(0, NewsType.ZFWL.getCode(), 2));
+		modelview.addObject("jtdt", newsService.findIndexNewsList(0, NewsType.JTDT.getCode(), 4));
+		return modelview;
+	}
+
 	@RequestMapping(value = "/user/account/index", method = RequestMethod.GET)
 	public ModelAndView index(HttpServletRequest request, ModelAndView modelview) {
 		modelview.setViewName("/user/account/index");
@@ -275,6 +305,12 @@ public class WebpageController extends BaseController {
 	public ModelAndView portalInternationalInternationalIndex(HttpServletRequest request, ModelAndView modelview) {
 		modelview.setViewName("/portal/international/internationalIndex");
 		handleBanners(modelview, BannersType.GUO_JI_YE_WU);
+		List<InternationalListBo> listA = achievementService.selectInternationalAchievement(AFTConstants.INTERNATIONAL_ACHIEVEMENT_CACHE_KEY);
+		List<InternationalListBo> listB = userIdentityService.selectInternationalUser(AFTConstants.INTERNATIONAL_USER_CACHE_KEY);
+		List<InternationalListBo> listC = organizationIdentityService.selectInternationalOrganization(AFTConstants.INTERNATIONAL_ORG_CACHE_KEY);
+		modelview.addObject("achievementInternationalList", listA);
+		modelview.addObject("userInternationalList", listB);
+		modelview.addObject("orgInternationalList", listC);
 		return modelview;
 	}
 
@@ -299,19 +335,6 @@ public class WebpageController extends BaseController {
 	}
 
 	/**
-	 * 首页
-	 */
-	@RequestMapping(value = "/portal/index", method = RequestMethod.GET)
-	public ModelAndView portalIndex(HttpServletRequest request, ModelAndView modelview) {
-		modelview.setViewName("/portal/index");
-		List<Banners> banners = bannersService.findPortalBanners(BannersType.SHOU_YE.getKey());
-		if (!banners.isEmpty()) {
-			modelview.addObject("banner", banners.get(0));
-		}
-		return modelview;
-	}
-
-	/**
 	 * 金融圈
 	 */
 	@RequestMapping(value = "/portal/financial/financialIndex", method = RequestMethod.GET)

+ 4 - 0
src/main/java/com/goafanti/common/dao/AchievementMapper.java

@@ -10,6 +10,7 @@ import com.goafanti.common.model.Achievement;
 import com.goafanti.portal.bo.AchievementDetailBo;
 import com.goafanti.portal.bo.AchievementPortalDetailBo;
 import com.goafanti.portal.bo.AchievementPortalSimilarListBo;
+import com.goafanti.portal.bo.InternationalListBo;
 
 public interface AchievementMapper {
 	int deleteByPrimaryKey(String id);
@@ -49,4 +50,7 @@ public interface AchievementMapper {
 			@Param("id") String id);
 
 	int updateOwnerId(String id);
+	
+	/** 查询国际化技术 **/
+	List<InternationalListBo> selectInternationalAchievement();
 }

+ 96 - 0
src/main/java/com/goafanti/common/dao/CountryCodeMapper.java

@@ -0,0 +1,96 @@
+package com.goafanti.common.dao;
+
+import com.goafanti.common.model.CountryCode;
+import com.goafanti.common.model.CountryCodeExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface CountryCodeMapper {
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    long countByExample(CountryCodeExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    int deleteByExample(CountryCodeExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    int deleteByPrimaryKey(String countryNameEn);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    int insert(CountryCode record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    int insertSelective(CountryCode record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    List<CountryCode> selectByExample(CountryCodeExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    CountryCode selectByPrimaryKey(String countryNameEn);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    int updateByExampleSelective(@Param("record") CountryCode record, @Param("example") CountryCodeExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    int updateByExample(@Param("record") CountryCode record, @Param("example") CountryCodeExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    int updateByPrimaryKeySelective(CountryCode record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    int updateByPrimaryKey(CountryCode record);
+}

+ 2 - 0
src/main/java/com/goafanti/common/dao/NewsMapper.java

@@ -28,4 +28,6 @@ public interface NewsMapper {
 
 	List<NewsPortalList> findPortalList(Map<String, Object> params);
 
+	List<NewsSummary> findIndexNewsList(Map<String, Object> params);
+
 }

+ 4 - 1
src/main/java/com/goafanti/common/dao/OrganizationIdentityMapper.java

@@ -5,6 +5,7 @@ import java.util.List;
 import org.apache.ibatis.annotations.Param;
 
 import com.goafanti.common.model.OrganizationIdentity;
+import com.goafanti.portal.bo.InternationalListBo;
 import com.goafanti.user.bo.AuditorOrgIdentityDetailBo;
 import com.goafanti.user.bo.OrgBasicInfoBo;
 import com.goafanti.user.bo.OrgIdentityBo;
@@ -44,5 +45,7 @@ public interface OrganizationIdentityMapper {
 	List<OrgUnitNames> selectAchievementOrgOwner(@Param("aid")String aid, @Param("name")String name);
 
 	OrganizationIndentityUserBo selectOrgIdentityUserBoByUserId(@Param("uid")String uid, @Param("year")Integer year);
-
+	
+	/** 查询国际伙伴 **/
+	List<InternationalListBo> selectInternationalOrganization();
 }

+ 4 - 0
src/main/java/com/goafanti/common/dao/UserIdentityMapper.java

@@ -5,6 +5,7 @@ import java.util.List;
 import org.apache.ibatis.annotations.Param;
 
 import com.goafanti.common.model.UserIdentity;
+import com.goafanti.portal.bo.InternationalListBo;
 import com.goafanti.user.bo.AuditorUserIdentityDetailBo;
 import com.goafanti.user.bo.UserIdentityBo;
 import com.goafanti.user.bo.UserNames;
@@ -35,4 +36,7 @@ public interface UserIdentityMapper {
 	List<UserNames> selectManagerAchievementUserOwner(@Param("aid")String aid, @Param("name")String name);
 
 	List<UserNames> selectAchievementUserOwner(@Param("aid")String aid, @Param("name")String name);
+	
+	/** 查询国际专家 **/
+	List<InternationalListBo> selectInternationalUser();
 }

+ 1 - 0
src/main/java/com/goafanti/common/enums/NewsCacheKey.java

@@ -6,6 +6,7 @@ import java.util.Map;
 public enum NewsCacheKey {
 	NEWS_LIST_CACHE_KEY("news_list_cache_key", "策源地新闻列表缓存"),
 	NEWS_PORTAL_LIST_CACHE_KEY("news_portal_list_cache_key", "新闻列表页面缓存"),
+	NEWS_INDEX_LIST_CACHE_KEY("news_index_list_cache_key", "首页新闻列表缓存"),
 	
 	OTHER("", "未知参数");
 	

+ 48 - 4
src/main/java/com/goafanti/common/mapper/AchievementMapper.xml

@@ -54,6 +54,8 @@
     <result column="deleted_sign" jdbcType="INTEGER" property="deletedSign" />
     <result column="audit_status" jdbcType="INTEGER" property="auditStatus" />
     <result column="tech_broker_id" jdbcType="VARCHAR" property="techBrokerId" />
+    <result column="country_name_zh" jdbcType="VARCHAR" property="countryNameZh" />
+    <result column="international_flag" jdbcType="INTEGER" property="internationalFlag" />
   </resultMap>
   <sql id="Base_Column_List">
     id, serial_number, data_category, name, keyword, category, summary, introduction, 
@@ -63,7 +65,8 @@
     bargaining_mode, transfer_price, technical_scene, breakthrough, patent_case, awards, 
     team_des, parameter, tech_plan_url, business_plan_url, org_id, org_name, org_address, 
     org_email, org_contacts, org_contacts_mobile, contacts, manager_id, salesman_id, 
-    status, create_time, release_status, release_date, deleted_sign, audit_status, tech_broker_id
+    status, create_time, release_status, release_date, deleted_sign, audit_status, tech_broker_id,
+    country_name_zh,international_flag
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
     select 
@@ -92,7 +95,8 @@
       org_contacts, org_contacts_mobile, contacts, 
       manager_id, salesman_id, status, 
       create_time, release_status, release_date, 
-      deleted_sign, audit_status, tech_broker_id)
+      deleted_sign, audit_status, tech_broker_id,
+      country_name_zh,international_flag)
     values (#{id,jdbcType=VARCHAR}, #{serialNumber,jdbcType=INTEGER}, #{dataCategory,jdbcType=INTEGER}, 
       #{name,jdbcType=VARCHAR}, #{keyword,jdbcType=VARCHAR}, #{category,jdbcType=INTEGER}, 
       #{summary,jdbcType=VARCHAR}, #{introduction,jdbcType=VARCHAR}, #{technicalPictureUrl,jdbcType=VARCHAR}, 
@@ -109,7 +113,8 @@
       #{orgContacts,jdbcType=VARCHAR}, #{orgContactsMobile,jdbcType=VARCHAR}, #{contacts,jdbcType=INTEGER}, 
       #{managerId,jdbcType=VARCHAR}, #{salesmanId,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, 
       #{createTime,jdbcType=TIMESTAMP}, #{releaseStatus,jdbcType=INTEGER}, #{releaseDate,jdbcType=TIMESTAMP}, 
-      #{deletedSign,jdbcType=INTEGER}, #{auditStatus,jdbcType=INTEGER}, #{techBrokerId,jdbcType=VARCHAR})
+      #{deletedSign,jdbcType=INTEGER}, #{auditStatus,jdbcType=INTEGER}, #{techBrokerId,jdbcType=VARCHAR},
+      #{countryNameZh,jdbcType=VARCHAR}, #{internationalFlag,jdbcType=INTEGER})
   </insert>
   <insert id="insertSelective" parameterType="com.goafanti.common.model.Achievement">
     insert into achievement
@@ -270,6 +275,12 @@
       <if test="techBrokerId != null">
         tech_broker_id,
       </if>
+      <if test="countryNameZh != null">
+      	country_name_zh,
+      </if>
+      <if test="internationalFlag != null">
+      	international_flag,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -428,6 +439,12 @@
       <if test="techBrokerId != null">
         #{techBrokerId,jdbcType=VARCHAR},
       </if>
+      <if test="countryNameZh != null">
+      	#{countryNameZh,jdbcType=VARCHAR},
+      </if>
+       <if test="internationalFlag != null">
+      	#{internationalFlag,jdbcType=INTEGER},
+      </if>
     </trim>
   </insert>
   <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.Achievement">
@@ -586,6 +603,12 @@
       <if test="techBrokerId != null">
         tech_broker_id = #{techBrokerId,jdbcType=VARCHAR},
       </if>
+      <if test="countryNameZh != null">
+      	country_name_zh = #{countryNameZh,jdbcType=VARCHAR},
+      </if>
+       <if test="internationalFlag != null">
+      	international_flag = #{internationalFlag,jdbcType=INTEGER},
+      </if>
     </set>
     where id = #{id,jdbcType=VARCHAR}
   </update>
@@ -641,7 +664,9 @@
       release_date = #{releaseDate,jdbcType=TIMESTAMP},
       deleted_sign = #{deletedSign,jdbcType=INTEGER},
       audit_status = #{auditStatus,jdbcType=INTEGER},
-      tech_broker_id = #{techBrokerId,jdbcType=VARCHAR}
+      tech_broker_id = #{techBrokerId,jdbcType=VARCHAR},
+      country_name_zh = #{countryNameZh,jdbcType=VARCHAR},
+      international_flag = #{internationalFlag,jdbcType=INTEGER}
     where id = #{id,jdbcType=VARCHAR}
   </update>
   
@@ -1325,4 +1350,23 @@
   		set owner_id = null 
   	where id = #{id,jdbcType=VARCHAR}
   </update>
+  
+  <select id="selectInternationalAchievement" resultType="com.goafanti.portal.bo.InternationalListBo">
+  	select 
+  		a.id as id,
+  		a.name as techName,
+  		a.introduction,
+  		a.owner_name as ownerName,
+  		a.owner_type as ownerType,
+  		a.technical_picture_url as technicalPictureUrl,
+  		a.country_name_zh as countryNameZh
+  	from 
+  		achievement a 
+	where 
+		a.deleted_sign = 0 and a.data_category = 1 
+	<!-- and a.release_status = 1 and nternational_flag = 1 -->
+	order by 
+		a.release_date desc
+	limit 0,5
+  </select>
 </mapper>

+ 271 - 0
src/main/java/com/goafanti/common/mapper/CountryCodeMapper.xml

@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.goafanti.common.dao.CountryCodeMapper">
+  <resultMap id="BaseResultMap" type="com.goafanti.common.model.CountryCode">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    <id column="country_name_en" jdbcType="VARCHAR" property="countryNameEn" />
+    <result column="country_name_zh" jdbcType="VARCHAR" property="countryNameZh" />
+    <result column="region_code" jdbcType="CHAR" property="regionCode" />
+    <result column="tel_code" jdbcType="INTEGER" property="telCode" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    country_name_en, country_name_zh, region_code, tel_code
+  </sql>
+  <select id="selectByExample" parameterType="com.goafanti.common.model.CountryCodeExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from country_code
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    select 
+    <include refid="Base_Column_List" />
+    from country_code
+    where country_name_en = #{countryNameEn,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    delete from country_code
+    where country_name_en = #{countryNameEn,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.goafanti.common.model.CountryCodeExample">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    delete from country_code
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.goafanti.common.model.CountryCode">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    insert into country_code (country_name_en, country_name_zh, region_code, 
+      tel_code)
+    values (#{countryNameEn,jdbcType=VARCHAR}, #{countryNameZh,jdbcType=VARCHAR}, #{regionCode,jdbcType=CHAR}, 
+      #{telCode,jdbcType=INTEGER})
+  </insert>
+  <insert id="insertSelective" parameterType="com.goafanti.common.model.CountryCode">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    insert into country_code
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="countryNameEn != null">
+        country_name_en,
+      </if>
+      <if test="countryNameZh != null">
+        country_name_zh,
+      </if>
+      <if test="regionCode != null">
+        region_code,
+      </if>
+      <if test="telCode != null">
+        tel_code,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="countryNameEn != null">
+        #{countryNameEn,jdbcType=VARCHAR},
+      </if>
+      <if test="countryNameZh != null">
+        #{countryNameZh,jdbcType=VARCHAR},
+      </if>
+      <if test="regionCode != null">
+        #{regionCode,jdbcType=CHAR},
+      </if>
+      <if test="telCode != null">
+        #{telCode,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.goafanti.common.model.CountryCodeExample" resultType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    select count(*) from country_code
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    update country_code
+    <set>
+      <if test="record.countryNameEn != null">
+        country_name_en = #{record.countryNameEn,jdbcType=VARCHAR},
+      </if>
+      <if test="record.countryNameZh != null">
+        country_name_zh = #{record.countryNameZh,jdbcType=VARCHAR},
+      </if>
+      <if test="record.regionCode != null">
+        region_code = #{record.regionCode,jdbcType=CHAR},
+      </if>
+      <if test="record.telCode != null">
+        tel_code = #{record.telCode,jdbcType=INTEGER},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    update country_code
+    set country_name_en = #{record.countryNameEn,jdbcType=VARCHAR},
+      country_name_zh = #{record.countryNameZh,jdbcType=VARCHAR},
+      region_code = #{record.regionCode,jdbcType=CHAR},
+      tel_code = #{record.telCode,jdbcType=INTEGER}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.CountryCode">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    update country_code
+    <set>
+      <if test="countryNameZh != null">
+        country_name_zh = #{countryNameZh,jdbcType=VARCHAR},
+      </if>
+      <if test="regionCode != null">
+        region_code = #{regionCode,jdbcType=CHAR},
+      </if>
+      <if test="telCode != null">
+        tel_code = #{telCode,jdbcType=INTEGER},
+      </if>
+    </set>
+    where country_name_en = #{countryNameEn,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.goafanti.common.model.CountryCode">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Fri Jul 21 08:55:01 CST 2017.
+    -->
+    update country_code
+    set country_name_zh = #{countryNameZh,jdbcType=VARCHAR},
+      region_code = #{regionCode,jdbcType=CHAR},
+      tel_code = #{telCode,jdbcType=INTEGER}
+    where country_name_en = #{countryNameEn,jdbcType=VARCHAR}
+  </update>
+</mapper>

+ 14 - 1
src/main/java/com/goafanti/common/mapper/NewsMapperExt.xml

@@ -9,9 +9,10 @@
 		<result column="type" jdbcType="INTEGER" property="type" />
 		<result column="hot" jdbcType="INTEGER" property="hot" />
 		<result column="summary" jdbcType="VARCHAR" property="summary" />
+		<result column="source" jdbcType="VARCHAR" property="source" />
 	</resultMap>
 	<sql id="Summary_Column_List">
-		id, create_time, title, title_img, type, hot, summary
+		id, create_time, title, title_img, type, hot, summary, source
 	</sql>
 	<select id="findList" resultMap="SummaryResultMap">
 		select
@@ -25,6 +26,18 @@
 		limit #{pageNo,jdbcType=INTEGER}, #{pageSize,jdbcType=INTEGER}
 	</select>
 	
+	<select id="findIndexNewsList" resultMap="SummaryResultMap">
+		select
+		<include refid="Summary_Column_List" />
+		from news
+		where hot = 1 
+		<if test=" type != null">
+			and type = #{type,jdbcType=INTEGER}
+		</if>
+		order by create_time desc
+		limit #{pageNo,jdbcType=INTEGER}, #{pageSize,jdbcType=INTEGER}
+	</select>
+	
 	<select id="findNewsListByPage" parameterType="String" resultMap="BaseResultMap">
   	select
   		id,

+ 23 - 1
src/main/java/com/goafanti/common/mapper/OrganizationIdentityMapper.xml

@@ -1175,5 +1175,27 @@
 				AND oi.unit_name like CONCAT('%', #{name,jdbcType=VARCHAR}, '%')
 			</if>
   </select>
-
+  
+  <select id="selectInternationalOrganization" resultType="com.goafanti.portal.bo.InternationalListBo">
+	select
+		a.id,
+		b.unit_name as unitName,
+		c.logo_url as logoUrl,
+		c.country_name_zh as countryNameZh,
+		ifnull(d.achievement_count,0) as achievementCount
+	from
+		<![CDATA[ user ]]> a 
+		left join organization_identity b on
+			b.uid = a.id 
+		left join organization_info c on
+			c.uid = a.id 
+		left join achievement_demand_count d on
+			d.uid = a.id
+	where
+		a.type = 1
+		<!-- and b.audit_status = 1 and b.international_flag = 1 -->
+	order by 
+		b.registration_time desc
+	limit 0 ,4 
+  </select>
 </mapper>

+ 23 - 2
src/main/java/com/goafanti/common/mapper/UserIdentityMapper.xml

@@ -409,7 +409,7 @@
 			<if test="aid != null">
 				and u.aid = #{aid,jdbcType=VARCHAR}
 			</if>
-			
+		
  </select>
 	
  <select id="findSearchSubscriberListByPage" parameterType="String" resultType="com.goafanti.portal.bo.UserSubscriberListBo">
@@ -489,5 +489,26 @@
 				AND ui.username like CONCAT('%', #{name,jdbcType=VARCHAR}, '%')
 			</if>
 	 </select>
-  
+  	 <select id="selectInternationalUser" resultType="com.goafanti.portal.bo.InternationalListBo">
+		select 
+			a.id,
+			b.username as ownerName,
+			c.ability_label as abilityLabel,
+			d.person_portrait_url personPortraitUrl,
+			e.education
+		from user a 
+		left join user_identity b 
+			on a.id = b.uid
+		left join user_ability c 
+			on a.id = c.uid
+		left join user_info d 
+			on a.id = d.uid
+		left join user_edu e 
+			on a.id = e.uid
+		where 1=1
+		<!-- and b.international_flag and b.audit_status = 5 and b.expert = 1 -->
+		order by 
+			a.create_time desc 
+		limit 0,6	 
+	 </select>
 </mapper>

+ 135 - 0
src/main/java/com/goafanti/common/model/CountryCode.java

@@ -0,0 +1,135 @@
+package com.goafanti.common.model;
+
+public class CountryCode {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column country_code.country_name_en
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    private String countryNameEn;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column country_code.country_name_zh
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    private String countryNameZh;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column country_code.region_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    private String regionCode;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column country_code.tel_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    private Integer telCode;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column country_code.country_name_en
+     *
+     * @return the value of country_code.country_name_en
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public String getCountryNameEn() {
+        return countryNameEn;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column country_code.country_name_en
+     *
+     * @param countryNameEn the value for country_code.country_name_en
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public void setCountryNameEn(String countryNameEn) {
+        this.countryNameEn = countryNameEn;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column country_code.country_name_zh
+     *
+     * @return the value of country_code.country_name_zh
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public String getCountryNameZh() {
+        return countryNameZh;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column country_code.country_name_zh
+     *
+     * @param countryNameZh the value for country_code.country_name_zh
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public void setCountryNameZh(String countryNameZh) {
+        this.countryNameZh = countryNameZh;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column country_code.region_code
+     *
+     * @return the value of country_code.region_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public String getRegionCode() {
+        return regionCode;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column country_code.region_code
+     *
+     * @param regionCode the value for country_code.region_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public void setRegionCode(String regionCode) {
+        this.regionCode = regionCode;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column country_code.tel_code
+     *
+     * @return the value of country_code.tel_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public Integer getTelCode() {
+        return telCode;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column country_code.tel_code
+     *
+     * @param telCode the value for country_code.tel_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public void setTelCode(Integer telCode) {
+        this.telCode = telCode;
+    }
+}

+ 572 - 0
src/main/java/com/goafanti/common/model/CountryCodeExample.java

@@ -0,0 +1,572 @@
+package com.goafanti.common.model;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class CountryCodeExample {
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    protected String orderByClause;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    protected boolean distinct;
+
+    /**
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    protected List<Criteria> oredCriteria;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public CountryCodeExample() {
+        oredCriteria = new ArrayList<Criteria>();
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<Criterion>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andCountryNameEnIsNull() {
+            addCriterion("country_name_en is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnIsNotNull() {
+            addCriterion("country_name_en is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnEqualTo(String value) {
+            addCriterion("country_name_en =", value, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnNotEqualTo(String value) {
+            addCriterion("country_name_en <>", value, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnGreaterThan(String value) {
+            addCriterion("country_name_en >", value, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnGreaterThanOrEqualTo(String value) {
+            addCriterion("country_name_en >=", value, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnLessThan(String value) {
+            addCriterion("country_name_en <", value, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnLessThanOrEqualTo(String value) {
+            addCriterion("country_name_en <=", value, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnLike(String value) {
+            addCriterion("country_name_en like", value, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnNotLike(String value) {
+            addCriterion("country_name_en not like", value, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnIn(List<String> values) {
+            addCriterion("country_name_en in", values, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnNotIn(List<String> values) {
+            addCriterion("country_name_en not in", values, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnBetween(String value1, String value2) {
+            addCriterion("country_name_en between", value1, value2, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameEnNotBetween(String value1, String value2) {
+            addCriterion("country_name_en not between", value1, value2, "countryNameEn");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhIsNull() {
+            addCriterion("country_name_zh is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhIsNotNull() {
+            addCriterion("country_name_zh is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhEqualTo(String value) {
+            addCriterion("country_name_zh =", value, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhNotEqualTo(String value) {
+            addCriterion("country_name_zh <>", value, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhGreaterThan(String value) {
+            addCriterion("country_name_zh >", value, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhGreaterThanOrEqualTo(String value) {
+            addCriterion("country_name_zh >=", value, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhLessThan(String value) {
+            addCriterion("country_name_zh <", value, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhLessThanOrEqualTo(String value) {
+            addCriterion("country_name_zh <=", value, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhLike(String value) {
+            addCriterion("country_name_zh like", value, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhNotLike(String value) {
+            addCriterion("country_name_zh not like", value, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhIn(List<String> values) {
+            addCriterion("country_name_zh in", values, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhNotIn(List<String> values) {
+            addCriterion("country_name_zh not in", values, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhBetween(String value1, String value2) {
+            addCriterion("country_name_zh between", value1, value2, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andCountryNameZhNotBetween(String value1, String value2) {
+            addCriterion("country_name_zh not between", value1, value2, "countryNameZh");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeIsNull() {
+            addCriterion("region_code is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeIsNotNull() {
+            addCriterion("region_code is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeEqualTo(String value) {
+            addCriterion("region_code =", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeNotEqualTo(String value) {
+            addCriterion("region_code <>", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeGreaterThan(String value) {
+            addCriterion("region_code >", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeGreaterThanOrEqualTo(String value) {
+            addCriterion("region_code >=", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeLessThan(String value) {
+            addCriterion("region_code <", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeLessThanOrEqualTo(String value) {
+            addCriterion("region_code <=", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeLike(String value) {
+            addCriterion("region_code like", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeNotLike(String value) {
+            addCriterion("region_code not like", value, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeIn(List<String> values) {
+            addCriterion("region_code in", values, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeNotIn(List<String> values) {
+            addCriterion("region_code not in", values, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeBetween(String value1, String value2) {
+            addCriterion("region_code between", value1, value2, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andRegionCodeNotBetween(String value1, String value2) {
+            addCriterion("region_code not between", value1, value2, "regionCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeIsNull() {
+            addCriterion("tel_code is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeIsNotNull() {
+            addCriterion("tel_code is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeEqualTo(Integer value) {
+            addCriterion("tel_code =", value, "telCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeNotEqualTo(Integer value) {
+            addCriterion("tel_code <>", value, "telCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeGreaterThan(Integer value) {
+            addCriterion("tel_code >", value, "telCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeGreaterThanOrEqualTo(Integer value) {
+            addCriterion("tel_code >=", value, "telCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeLessThan(Integer value) {
+            addCriterion("tel_code <", value, "telCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeLessThanOrEqualTo(Integer value) {
+            addCriterion("tel_code <=", value, "telCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeIn(List<Integer> values) {
+            addCriterion("tel_code in", values, "telCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeNotIn(List<Integer> values) {
+            addCriterion("tel_code not in", values, "telCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeBetween(Integer value1, Integer value2) {
+            addCriterion("tel_code between", value1, value2, "telCode");
+            return (Criteria) this;
+        }
+
+        public Criteria andTelCodeNotBetween(Integer value1, Integer value2) {
+            addCriterion("tel_code not between", value1, value2, "telCode");
+            return (Criteria) this;
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table country_code
+     *
+     * @mbg.generated do_not_delete_during_merge Fri Jul 21 08:55:01 CST 2017
+     */
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+
+    /**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table country_code
+     *
+     * @mbg.generated Fri Jul 21 08:55:01 CST 2017
+     */
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 1 - 0
src/main/java/com/goafanti/core/cache/serializer/FastJsonRedisSerializer.java

@@ -22,6 +22,7 @@ public class FastJsonRedisSerializer implements RedisSerializer<Object> {
 		pc.addAccept("com.goafanti.lecture.bo.BigShotLectureListBo");
 		pc.addAccept("com.goafanti.news.bo.NewsPortalList");
 		pc.addAccept("com.goafanti.common.model.Activity");
+		pc.addAccept("com.goafanti.portal.bo.InternationalListBo");
 	}
 
 	@Override

+ 15 - 2
src/main/java/com/goafanti/news/bo/NewsSummary.java

@@ -44,6 +44,11 @@ public class NewsSummary {
 	 */
 	private String	summary;
 	
+	/**
+	 * 来源
+	 */
+	private String	source;
+
 	@JsonFormat(shape = Shape.STRING)
 	public Long getId() {
 		return id;
@@ -52,7 +57,7 @@ public class NewsSummary {
 	public void setId(Long id) {
 		this.id = id;
 	}
-	
+
 	public Date getCreateTime() {
 		return createTime;
 	}
@@ -100,7 +105,15 @@ public class NewsSummary {
 	public void setSummary(String summary) {
 		this.summary = summary;
 	}
-	
+
+	public String getSource() {
+		return source;
+	}
+
+	public void setSource(String source) {
+		this.source = source;
+	}
+
 	public String getCreateTimeFormattedDate() {
 		if (this.createTime == null) {
 			return null;

+ 14 - 0
src/main/java/com/goafanti/news/service/NewsService.java

@@ -32,6 +32,20 @@ public class NewsService extends BaseMybatisDao<NewsMapper> {
 	NewsMapper					newsMapper;
 
 	private static final Logger	logger	= LoggerFactory.getLogger(NewsService.class);
+	
+	@Cacheable(value = "IndexNewsListCache", key = "'NewsList:Page:'+#pageNo+'Type:'+#type+'Size:'+#pageSize")
+	public List<NewsSummary> findIndexNewsList(Integer pageNo, Integer type, Integer pageSize) {
+		Map<String, Object> params = new HashMap<String, Object>();
+		params.put("type", type);
+		params.put("pageSize", pageSize);
+		params.put("pageNo", pageNo);
+		return newsMapper.findIndexNewsList(params);
+	}
+
+	@CacheEvict(value = "IndexNewsListCache", allEntries = true)
+	public void cleanIndexNewsList() {
+		LoggerUtils.debug(logger, "清除首页新闻列表缓存");
+	}
 
 	@Cacheable(value = "NewsCache", key = "'News:'+#id")
 	public News selectById(Long id) {

+ 123 - 0
src/main/java/com/goafanti/portal/bo/InternationalListBo.java

@@ -0,0 +1,123 @@
+package com.goafanti.portal.bo;
+
+public class InternationalListBo {
+	private String			id;
+	
+	private String			techName;
+
+	private String			ownerName;
+	
+	private Integer			ownerType;
+	
+	private String			technicalPictureUrl;
+	
+	private String 			countryNameZh;
+
+	private String 			abilityLabel;
+	
+	private String			personPortraitUrl;
+	
+	private String			education;			
+	
+	private String 			unitName;
+	
+	private String			logoUrl;
+	
+	private String			achievementCount;
+	
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getTechName() {
+		return techName;
+	}
+
+	public void setTechName(String techName) {
+		this.techName = techName;
+	}
+
+	public String getOwnerName() {
+		return ownerName;
+	}
+
+	public void setOwnerName(String ownerName) {
+		this.ownerName = ownerName;
+	}
+
+	public Integer getOwnerType() {
+		return ownerType;
+	}
+
+	public void setOwnerType(Integer ownerType) {
+		this.ownerType = ownerType;
+	}
+
+	public String getTechnicalPictureUrl() {
+		return technicalPictureUrl;
+	}
+
+	public void setTechnicalPictureUrl(String technicalPictureUrl) {
+		this.technicalPictureUrl = technicalPictureUrl;
+	}
+
+	public String getCountryNameZh() {
+		return countryNameZh;
+	}
+
+	public void setCountryNameZh(String countryNameZh) {
+		this.countryNameZh = countryNameZh;
+	}
+
+	public String getAbilityLabel() {
+		return abilityLabel;
+	}
+
+	public void setAbilityLabel(String abilityLabel) {
+		this.abilityLabel = abilityLabel;
+	}
+
+	public String getPersonPortraitUrl() {
+		return personPortraitUrl;
+	}
+
+	public void setPersonPortraitUrl(String personPortraitUrl) {
+		this.personPortraitUrl = personPortraitUrl;
+	}
+
+	public String getEducation() {
+		return education;
+	}
+
+	public void setEducation(String education) {
+		this.education = education;
+	}
+
+	public String getUnitName() {
+		return unitName;
+	}
+
+	public void setUnitName(String unitName) {
+		this.unitName = unitName;
+	}
+
+	public String getLogoUrl() {
+		return logoUrl;
+	}
+
+	public void setLogoUrl(String logoUrl) {
+		this.logoUrl = logoUrl;
+	}
+
+	public String getAchievementCount() {
+		return achievementCount;
+	}
+
+	public void setAchievementCount(String achievementCount) {
+		this.achievementCount = achievementCount;
+	}
+}

+ 3 - 0
src/main/java/com/goafanti/user/service/OrganizationIdentityService.java

@@ -7,6 +7,7 @@ import com.goafanti.common.bo.Result;
 import com.goafanti.common.model.OrgHumanResource;
 import com.goafanti.common.model.OrganizationIdentity;
 import com.goafanti.core.mybatis.page.Pagination;
+import com.goafanti.portal.bo.InternationalListBo;
 import com.goafanti.portal.bo.OrgSubscriberListBo;
 import com.goafanti.user.bo.AuditorOrgIdentityDetailBo;
 import com.goafanti.user.bo.OrgBasicInfoBo;
@@ -55,4 +56,6 @@ public interface OrganizationIdentityService {
 	
 	OrganizationIndentityUserBo selectOrgIdentityUserBoByUserId(String userId);
 
+	/** 查询国际伙伴 **/
+	List<InternationalListBo> selectInternationalOrganization(Integer internationalOrgCacheKey);
 }

+ 5 - 0
src/main/java/com/goafanti/user/service/UserIdentityService.java

@@ -1,8 +1,11 @@
 package com.goafanti.user.service;
 
+import java.util.List;
+
 import com.goafanti.common.bo.Result;
 import com.goafanti.common.model.UserIdentity;
 import com.goafanti.core.mybatis.page.Pagination;
+import com.goafanti.portal.bo.InternationalListBo;
 import com.goafanti.portal.bo.UserSubscriberListBo;
 import com.goafanti.user.bo.AuditorUserIdentityDetailBo;
 import com.goafanti.user.bo.UserIdentityBo;
@@ -35,4 +38,6 @@ public interface UserIdentityService {
 
 	UserIdentityDetailAdminBo selectUserIdentityByUserIdAdmin(String uid);
 
+	/** 查询国际专家 **/
+	List<InternationalListBo> selectInternationalUser(Integer internationalUserCacheKey);
 }

+ 17 - 1
src/main/java/com/goafanti/user/service/impl/OrganizationIdentityServiceImpl.java

@@ -9,8 +9,12 @@ import java.util.TreeMap;
 import java.util.UUID;
 
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import com.goafanti.common.bo.Result;
@@ -32,9 +36,11 @@ import com.goafanti.common.model.OrgHumanResource;
 import com.goafanti.common.model.OrgRatepay;
 import com.goafanti.common.model.OrganizationIdentity;
 import com.goafanti.common.model.User;
+import com.goafanti.common.utils.LoggerUtils;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
+import com.goafanti.portal.bo.InternationalListBo;
 import com.goafanti.portal.bo.OrgSubscriberListBo;
 import com.goafanti.user.bo.AuditorOrgIdentityDetailBo;
 import com.goafanti.user.bo.OrgBasicInfoBo;
@@ -61,6 +67,7 @@ public class OrganizationIdentityServiceImpl extends BaseMybatisDao<Organization
 	@Autowired
 	private UserRoleMapper				userRoleMapper;
 
+	private static final Logger logger = LoggerFactory.getLogger(OrganizationIdentityServiceImpl.class);
 	@Override
 	public OrganizationIdentity insert(OrganizationIdentity organizationIdentity) {
 		organizationIdentityMapper.insert(organizationIdentity);
@@ -388,6 +395,15 @@ public class OrganizationIdentityServiceImpl extends BaseMybatisDao<Organization
 			organizationIdentityMapper.updateByPrimaryKeySelective(oi);
 		}
 	}
-	
 
+	@Override
+	@Cacheable(value = "internationalOrgList", key = "'internationalOrgList:'+#internationalOrgCacheKey")
+	public List<InternationalListBo> selectInternationalOrganization(Integer internationalOrgCacheKey) {
+		return organizationIdentityMapper.selectInternationalOrganization();
+	}
+	
+	@CacheEvict(value = "internationalOrgList" ,allEntries = true)
+	public void cleanInternationalOrg(){
+		LoggerUtils.debug(logger, "清除国际伙伴列表");
+	} 
 }

+ 19 - 0
src/main/java/com/goafanti/user/service/impl/UserIdentityServiceImpl.java

@@ -8,8 +8,12 @@ import java.util.Map;
 import java.util.UUID;
 
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
 import com.goafanti.common.bo.Result;
@@ -26,9 +30,11 @@ import com.goafanti.common.enums.UserLevel;
 import com.goafanti.common.model.Notice;
 import com.goafanti.common.model.User;
 import com.goafanti.common.model.UserIdentity;
+import com.goafanti.common.utils.LoggerUtils;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
+import com.goafanti.portal.bo.InternationalListBo;
 import com.goafanti.portal.bo.UserSubscriberListBo;
 import com.goafanti.user.bo.AuditorUserIdentityDetailBo;
 import com.goafanti.user.bo.UserIdentityBo;
@@ -46,6 +52,8 @@ public class UserIdentityServiceImpl extends BaseMybatisDao<UserIdentityMapper>
 	@Autowired
 	private NoticeMapper		noticeMapper;
 
+	private static final Logger logger = LoggerFactory.getLogger(UserIdentityServiceImpl.class);
+			
 	@Override
 	public UserIdentity selectUserIdentityByUserId(String uid) {
 		return userIdentityMapper.selectUserIdentityByUserId(uid);
@@ -273,4 +281,15 @@ public class UserIdentityServiceImpl extends BaseMybatisDao<UserIdentityMapper>
 		return bo;
 	}
 
+	@Override
+	@Cacheable(value = "internationalUserList", key = "'internationalUserList:'+#internationalUserCacheKey")
+	public List<InternationalListBo> selectInternationalUser(Integer internationalUserCacheKey) {
+		return userIdentityMapper.selectInternationalUser();
+	}
+	
+	@CacheEvict(value = "internationalUserList", allEntries = true)
+	public void cleanInternationalUser(){
+		LoggerUtils.debug(logger, "清除国际专家列表");
+	}
+
 }

+ 77 - 0
src/main/resources/props/config_local.properties

@@ -1,3 +1,80 @@
+#Driver
+jdbc.driverClassName=com.mysql.jdbc.Driver
+#\u6570\u636e\u5e93\u94fe\u63a5\uff0c
+jdbc.url=jdbc:mysql://127.0.0.1:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+#\u5e10\u53f7
+jdbc.username=root
+#\u5bc6\u7801
+jdbc.password=123456
+#\u68c0\u6d4b\u6570\u636e\u5e93\u94fe\u63a5\u662f\u5426\u6709\u6548\uff0c\u5fc5\u987b\u914d\u7f6e
+jdbc.validationQuery=SELECT 'x'
+#\u521d\u59cb\u8fde\u63a5\u6570
+jdbc.initialSize=3
+#\u6700\u5927\u8fde\u63a5\u6c60\u6570\u91cf
+jdbc.maxActive=20
+#\u53bb\u6389\uff0c\u914d\u7f6e\u6587\u4ef6\u5bf9\u5e94\u53bb\u6389
+#jdbc.maxIdle=20
+#\u914d\u7f6e0,\u5f53\u7ebf\u7a0b\u6c60\u6570\u91cf\u4e0d\u8db3\uff0c\u81ea\u52a8\u8865\u5145\u3002
+jdbc.minIdle=0
+#\u83b7\u53d6\u94fe\u63a5\u8d85\u65f6\u65f6\u95f4\u4e3a1\u5206\u949f\uff0c\u5355\u4f4d\u4e3a\u6beb\u79d2\u3002
+jdbc.maxWait=120000
+#\u83b7\u53d6\u94fe\u63a5\u7684\u65f6\u5019\uff0c\u4e0d\u6821\u9a8c\u662f\u5426\u53ef\u7528\uff0c\u5f00\u542f\u4f1a\u6709\u635f\u6027\u80fd\u3002
+jdbc.testOnBorrow=false
+#\u5f52\u8fd8\u94fe\u63a5\u5230\u8fde\u63a5\u6c60\u7684\u65f6\u5019\u6821\u9a8c\u94fe\u63a5\u662f\u5426\u53ef\u7528\u3002
+jdbc.testOnReturn=false
+#\u6b64\u9879\u914d\u7f6e\u4e3atrue\u5373\u53ef\uff0c\u4e0d\u5f71\u54cd\u6027\u80fd\uff0c\u5e76\u4e14\u4fdd\u8bc1\u5b89\u5168\u6027\u3002\u610f\u4e49\u4e3a\uff1a\u7533\u8bf7\u8fde\u63a5\u7684\u65f6\u5019\u68c0\u6d4b\uff0c\u5982\u679c\u7a7a\u95f2\u65f6\u95f4\u5927\u4e8etimeBetweenEvictionRunsMillis\uff0c\u6267\u884cvalidationQuery\u68c0\u6d4b\u8fde\u63a5\u662f\u5426\u6709\u6548\u3002
+jdbc.testWhileIdle=true
+#1.Destroy\u7ebf\u7a0b\u4f1a\u68c0\u6d4b\u8fde\u63a5\u7684\u95f4\u9694\u65f6\u95f4
+#2.testWhileIdle\u7684\u5224\u65ad\u4f9d\u636e
+jdbc.timeBetweenEvictionRunsMillis=60000
+#\u4e00\u4e2a\u94fe\u63a5\u751f\u5b58\u7684\u65f6\u95f4\uff08\u4e4b\u524d\u7684\u503c\uff1a25200000\uff0c\u8fd9\u4e2a\u65f6\u95f4\u6709\u70b9BT\uff0c\u8fd9\u4e2a\u7ed3\u679c\u4e0d\u77e5\u9053\u662f\u600e\u4e48\u6765\u7684\uff0c\u6362\u7b97\u540e\u7684\u7ed3\u679c\u662f\uff1a25200000/1000/60/60 = 7\u4e2a\u5c0f\u65f6\uff09
+jdbc.minEvictableIdleTimeMillis=300000
+#\u94fe\u63a5\u4f7f\u7528\u8d85\u8fc7\u65f6\u95f4\u9650\u5236\u662f\u5426\u56de\u6536
+jdbc.removeAbandoned=true
+#\u8d85\u8fc7\u65f6\u95f4\u9650\u5236\u65f6\u95f4\uff08\u5355\u4f4d\u79d2\uff09\uff0c\u76ee\u524d\u4e3a5\u5206\u949f\uff0c\u5982\u679c\u6709\u4e1a\u52a1\u5904\u7406\u65f6\u95f4\u8d85\u8fc75\u5206\u949f\uff0c\u53ef\u4ee5\u9002\u5f53\u8c03\u6574\u3002
+jdbc.removeAbandonedTimeout=300
+#\u94fe\u63a5\u56de\u6536\u7684\u65f6\u5019\u63a7\u5236\u53f0\u6253\u5370\u4fe1\u606f\uff0c\u6d4b\u8bd5\u73af\u5883\u53ef\u4ee5\u52a0\u4e0atrue\uff0c\u7ebf\u4e0a\u73af\u5883false\u3002\u4f1a\u5f71\u54cd\u6027\u80fd\u3002
+jdbc.logAbandoned=true
+#\u7edf\u8ba1\u76d1\u63a7
+jdbc.filters=stat
+
+logging.level.com.goafanti=DEBUG
+
+jedis.host=127.0.0.1
+jedis.port=6379
+jedis.timeout=5000
+jedis.password=aft123456
+
+pwd.hash_algorithm_name=md5
+pwd.hash_iterations=2
+
+session.timeout=12000000
+session.validate.timespan=18000000
+
+app.name=AFT
+
+static.host=//afts.hnzhiming.com/1.0.37
+
+upload.path=/Users/xiaolong/Sites/upload
+upload.private.path=/Users/xiaolong/Sites/doc
+
+accessKey=LTAIqTgQLLwz252Z
+accessSecret=ICGuiUnqzaar7urw4zecVcJrJ1MHg9
+
+avatar.host=//afts.hnzhiming.com
+
+aesSecretKey=aft1234567890123
+
+template.cacheable=false
+
+mobileCodeTemplate=SMS_37845022
+
+portal.host=//afts.hnzhiming.com/portal/1.0.5
+
+patentTemplate=SMS_72005286
+
+avatar.upload.host=//afts.hnzhiming.com/upload
+=======
 #Driver
 jdbc.driverClassName=com.mysql.jdbc.Driver
 #\u6570\u636e\u5e93\u94fe\u63a5\uff0c

Разница между файлами не показана из-за своего большого размера
+ 82 - 69
src/main/webapp/WEB-INF/views/portal/index.html


+ 255 - 212
src/main/webapp/WEB-INF/views/portal/ipr/iso.html

@@ -1,222 +1,265 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
 
 <head th:replace="common::header(~{::title},~{::link})">
-  <title>知识产权贯标</title>
-  <link th:href="${portalHost + '/vendors.css'}" rel="stylesheet">
-  <link th:href="${portalHost + '/ipr/iso.css'}" rel="stylesheet">
+<title>知识产权贯标</title>
+<link th:href="${portalHost + '/vendors.css'}" rel="stylesheet">
+<link th:href="${portalHost + '/ipr/iso.css'}" rel="stylesheet">
 </head>
 
 <body>
-  <header>
-    <div class="container">
-      <div class="lt">欢迎进入科技认知计算交易平台!</div>
-      <div class="rt">
-        <a href="/user/login.html" class="login">登录</a>
-        <a href="/user/signIn.html">注册</a>
-        <a href="#">导航</a>
-        <a href="#">关于我们</a>
-        <a href="#">联系我们</a>
-      </div>
-    </div>
-  </header>
-  <div class="header_nav_detail">
-    <div class="container ">
-      <div class="row clearfix">
-        <div class="col-md-3 logo">
-          <div th:replace="common::sublogo"></div>
-        </div>
-        <div class="col-md-9">
-          <div th:replace="common::subMenu('service', 'ipr')"></div>
-        </div>
-      </div>
-    </div>
-    <div class="secondary_navigation"></div>
-  </div>
+	<header>
+		<div th:replace="common::{topNav}">
+			<div class="container">
+				<div class="lt">欢迎进入科技认知计算交易平台!</div>
+				<div class="rt">
+					<a href="/user/login.html" class="login">登录</a> <a
+						href="/user/signIn.html">注册</a> <a href="#">导航</a> <a href="#">关于我们</a>
+					<a href="#">联系我们</a>
+				</div>
+			</div>
+		</div>
+	</header>
+	<div class="header_nav_detail">
+		<div class="container ">
+			<div class="row clearfix">
+				<div class="col-md-3 logo">
+					<div th:replace="common::sublogo"></div>
+				</div>
+				<div class="col-md-9">
+					<div th:replace="common::subMenu('service', 'ipr')"></div>
+				</div>
+			</div>
+		</div>
+		<div class="secondary_navigation"></div>
+	</div>
 
-  <div th:replace="common::banners"></div>
-  <div class="banner-item" th:if="${banners==null}">
-    <img th:src="${portalHost + '/img/ipr_service_iso_banner.jpg'}" alt="First slide">
-  </div>
-  <div id="content_head" class="container">
-    <ul class="nav_content">
-      <li><a th:href="${basePath + '/portal/ipr/service.html'}">知识产权服务</a></li>
-      <li><a th:href="${basePath + '/portal/ipr/apply.html'}">知识产权申请</a></li>
-      <li><a th:href="${basePath + '/portal/ipr/patentOperation.html'}">专利运营与布局</a></li>
-      <li class="active"><a th:href="${basePath + '/portal/ipr/iso.html'}">知识产权贯标</a></li>
-    </ul>
-  </div>
-  <div class="iso_introduce">
-    <div class="container">
-      <div class="title">
-        <h1>什么是知识产权贯标</h1>
-        <p>WHAT IS INTELLECTUAL PROPERTY ENFORCEMENT?</p> <span></span> </div>
-      <div class="iso_introduce_content">
-        <h2>知识产权对于企业来说:</h2>
-        <p>就是贯彻《企业知识产权管理规范》国家标准。企业知识产权管理规范的国家标准由国家知识产权局制订,经由国家质量监督检验检疫总局、国家标准化管理委员会批准颁布,于2013年3月1日起实施,标准号是GB/T29490-2013。</p>
-        <p>通常所说的贯标是指贯彻ISO9000质量管理体系标准、ISO14000环境管理体系标准和OHSAS18000职业健康安全管理体系规范,是运用过程方法和系统方法,持续改进工作的一种活动。</p>
-        <p>企业知识产权管理标准化示范创建工作(贯彻《企业知识产权管理规范》),也是贯标的一个类别,被称为知识产权贯标。</p>
-      </div>
-    </div>
-  </div>
-  <div class="iso_advantage">
-    <div class="container">
-      <div class="title">
-        <h1>知识产权贯标好处</h1>
-        <p>THE BENEFITS OF INTELLECTUAL PROPERTY RIGHTS</p> <span></span> </div>
-      <div class="iso_advantage_nav">
-        <ul id="isoAdvantageTab">
-          <li class="active"><a href="#advantageTab1" data-toggle="tab"><span>资金资助</span></a></li>
-          <li><a href="#advantageTab2" data-toggle="tab"><span>项目支持</span></a></li>
-          <li><a href="#advantageTab3" data-toggle="tab"><span>评优优先</span></a></li>
-          <li><a href="#advantageTab4" data-toggle="tab"><span>管理升级</span></a></li>
-          <li><a href="#advantageTab5" data-toggle="tab"><span>形象提升</span></a></li>
-          <li><a href="#advantageTab6" data-toggle="tab"><span>风险防范</span></a></li>
-        </ul>
-      </div>
-      <div id="isoAdvantageTabContent" class="content_list tab-content iso_advantage_content">
-        <div id="advantageTab1" class="tab-pane in active">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <!-- <h2>“企业知识产权管理规范”</h2> -->
-              <p>根据当地政府政策,最高可获得30万的政府资金资助</p>
-            </div>
-          </div> <span class="sp1 tab1_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="advantageTab2" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <!-- <h2>贯标有助于提升企业</h2> -->
-              <p>优先推荐申报各类政府项目支持</p>
-            </div>
-          </div> <span class="sp1 tab2_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="advantageTab3" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <!-- <h2>推动企业产生具备高附加值的</h2> -->
-              <p>优先推荐企业申报“国家级知识产权优势企业”</p>
-            </div>
-          </div> <span class="sp1 tab3_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="advantageTab4" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <!-- <h2>提升企业无形资产价值</h2> -->
-              <p>提高企业知识产权管理水平,提升核心竞争力</p>
-            </div>
-          </div> <span class="sp1 tab4_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="advantageTab5" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <!-- <h2>巩固企业市场地位</h2> -->
-              <p>通过国家验收,获得证书,大大提升企业形象</p>
-            </div>
-          </div> <span class="sp1 tab5_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="advantageTab6" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <!-- <h2>贯标验收合格后</h2> -->
-              <p>强化企业知识产权风险防范意识,优化管理机制,降低运营风险</p>
-            </div>
-          </div> <span class="sp1 tab6_span">                            <span class="sp2"></span> </span>
-        </div>
-      </div>
-    </div>
-  </div>
-  <div class="iso_process">
-    <div class="container">
-      <div class="title">
-        <h1>知识产权贯标流程</h1>
-        <p>INTELLECTUAL PROPERTY IMPLEMENTATION PROCESS</p> <span></span> </div>
-      <div class="iso_process_nav">
-        <ul id="isoProcessTab">
-          <li class="active"><a href="#processTab1" data-toggle="tab"><span>01</span></a></li>
-          <li><a href="#processTab2" data-toggle="tab"><span>02</span></a></li>
-          <li><a href="#processTab3" data-toggle="tab"><span>03</span></a></li>
-          <li><a href="#processTab4" data-toggle="tab"><span>04</span></a></li>
-          <li><a href="#processTab5" data-toggle="tab"><span>05</span></a></li>
-          <li><a href="#processTab6" data-toggle="tab"><span>06</span></a></li>
-          <li><a href="#processTab7" data-toggle="tab"><span>07</span></a></li>
-          <li><a href="#processTab8" data-toggle="tab"><span>08</span></a></li>
-        </ul>
-      </div>
-      <div id="isoProcessTabTabContent" class="content_list tab-content iso_process_content">
-        <div id="processTab1" class="tab-pane in active">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <h2>贯标启动:</h2>
-              <p>成立企业贯标工作小组,制定企业贯标工作计划,召开企业贯标启动大会,对主要参与部门、人员进行贯标相关培训。</p>
-            </div>
-          </div> <span class="sp1 tab1_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="processTab2" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <h2>调查诊断:</h2>
-              <p>调查企业基本信息、组织架构、相关制度,诊断企业知识产权管理现状。</p>
-            </div>
-          </div> <span class="sp1 tab2_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="processTab3" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <h2>体系构建:</h2>
-              <p>制定企业知识产权方针、目标,策划企业知识产权职能架构,构建企业知识产权管理体系。</p>
-            </div>
-          </div> <span class="sp1 tab3_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="processTab4" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <h2>手册编写:</h2>
-              <p>编写企业知识产权管理手册,编制企业知识产权管理制度、控制程序、记录表单。</p>
-            </div>
-          </div> <span class="sp1 tab4_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="processTab5" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <h2>发文宣贯:</h2>
-              <p>颁布企业知识产权管理手册、制度、程序、表单,开展企业知识产权宣贯培训,指导各个部门、人员正确理解和执行。</p>
-            </div>
-          </div> <span class="sp1 tab5_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="processTab6" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <h2>实施运行:</h2>
-              <p>运行企业知识产权管理体系,填写体系运行记录,定期进行体系运行监测。</p>
-            </div>
-          </div> <span class="sp1 tab6_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="processTab7" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <h2>内部审核:</h2>
-              <p>企业对其自身的知识产权管理体系进行审核,并对审核中的不合格项采取纠正和改进措施。</p>
-            </div>
-          </div> <span class="sp1 tab7_span">                            <span class="sp2"></span> </span>
-        </div>
-        <div id="processTab8" class="tab-pane">
-          <div class="content_info ">
-            <div class="zc_info_txt">
-              <h2>管理评审:</h2>
-              <p>企业最高管理者就企业知识产权管理体系的现状、适宜性、充分性和有效性以及方针和目标的贯彻落实情况进行评审。</p>
-            </div>
-          </div> <span class="sp1 tab8_span">                            <span class="sp2"></span> </span>
-        </div>
-      </div> <a href="#" class="iso_btn customer-service">我要服务</a> </div>
-  </div>
-  <footer>
-    <div th:replace="common::copyright"></div>
-  </footer>
-  <div th:replace="common::footer(~{::script})">
-    <script type="text/javascript" th:src="${portalHost + '/vendors.js'}"></script>
-    <script type="text/javascript" th:src="${portalHost + '/ipr/iso.js'}"></script>
-  </div>
+	<div th:replace="common::banners"></div>
+	<div class="banner-item" th:if="${banners==null}">
+		<img th:src="${portalHost + '/img/ipr_service_iso_banner.jpg'}"
+			alt="First slide">
+	</div>
+	<div id="content_head" class="container">
+		<ul class="nav_content">
+			<li><a th:href="${basePath + '/portal/ipr/service.html'}">知识产权服务</a></li>
+			<li><a th:href="${basePath + '/portal/ipr/apply.html'}">知识产权申请</a></li>
+			<li><a
+				th:href="${basePath + '/portal/ipr/patentOperation.html'}">专利运营与布局</a></li>
+			<li class="active"><a
+				th:href="${basePath + '/portal/ipr/iso.html'}">知识产权贯标</a></li>
+		</ul>
+	</div>
+	<div class="iso_introduce">
+		<div class="container">
+			<div class="title">
+				<h1>什么是知识产权贯标</h1>
+				<p>WHAT IS INTELLECTUAL PROPERTY ENFORCEMENT?</p>
+				<span></span>
+			</div>
+			<div class="iso_introduce_content">
+				<h2>知识产权对于企业来说:</h2>
+				<p>就是贯彻《企业知识产权管理规范》国家标准。企业知识产权管理规范的国家标准由国家知识产权局制订,经由国家质量监督检验检疫总局、国家标准化管理委员会批准颁布,于2013年3月1日起实施,标准号是GB/T29490-2013。</p>
+				<p>通常所说的贯标是指贯彻ISO9000质量管理体系标准、ISO14000环境管理体系标准和OHSAS18000职业健康安全管理体系规范,是运用过程方法和系统方法,持续改进工作的一种活动。</p>
+				<p>企业知识产权管理标准化示范创建工作(贯彻《企业知识产权管理规范》),也是贯标的一个类别,被称为知识产权贯标。</p>
+			</div>
+		</div>
+	</div>
+	<div class="iso_advantage">
+		<div class="container">
+			<div class="title">
+				<h1>知识产权贯标好处</h1>
+				<p>THE BENEFITS OF INTELLECTUAL PROPERTY RIGHTS</p>
+				<span></span>
+			</div>
+			<div class="iso_advantage_nav">
+				<ul id="isoAdvantageTab">
+					<li class="active"><a href="#advantageTab1" data-toggle="tab"><span>资金资助</span></a></li>
+					<li><a href="#advantageTab2" data-toggle="tab"><span>项目支持</span></a></li>
+					<li><a href="#advantageTab3" data-toggle="tab"><span>评优优先</span></a></li>
+					<li><a href="#advantageTab4" data-toggle="tab"><span>管理升级</span></a></li>
+					<li><a href="#advantageTab5" data-toggle="tab"><span>形象提升</span></a></li>
+					<li><a href="#advantageTab6" data-toggle="tab"><span>风险防范</span></a></li>
+				</ul>
+			</div>
+			<div id="isoAdvantageTabContent"
+				class="content_list tab-content iso_advantage_content">
+				<div id="advantageTab1" class="tab-pane in active">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<!-- <h2>“企业知识产权管理规范”</h2> -->
+							<p>根据当地政府政策,最高可获得30万的政府资金资助</p>
+						</div>
+					</div>
+					<span class="sp1 tab1_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="advantageTab2" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<!-- <h2>贯标有助于提升企业</h2> -->
+							<p>优先推荐申报各类政府项目支持</p>
+						</div>
+					</div>
+					<span class="sp1 tab2_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="advantageTab3" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<!-- <h2>推动企业产生具备高附加值的</h2> -->
+							<p>优先推荐企业申报“国家级知识产权优势企业”</p>
+						</div>
+					</div>
+					<span class="sp1 tab3_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="advantageTab4" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<!-- <h2>提升企业无形资产价值</h2> -->
+							<p>提高企业知识产权管理水平,提升核心竞争力</p>
+						</div>
+					</div>
+					<span class="sp1 tab4_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="advantageTab5" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<!-- <h2>巩固企业市场地位</h2> -->
+							<p>通过国家验收,获得证书,大大提升企业形象</p>
+						</div>
+					</div>
+					<span class="sp1 tab5_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="advantageTab6" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<!-- <h2>贯标验收合格后</h2> -->
+							<p>强化企业知识产权风险防范意识,优化管理机制,降低运营风险</p>
+						</div>
+					</div>
+					<span class="sp1 tab6_span"> <span class="sp2"></span>
+					</span>
+				</div>
+			</div>
+		</div>
+	</div>
+	<div class="iso_process">
+		<div class="container">
+			<div class="title">
+				<h1>知识产权贯标流程</h1>
+				<p>INTELLECTUAL PROPERTY IMPLEMENTATION PROCESS</p>
+				<span></span>
+			</div>
+			<div class="iso_process_nav">
+				<ul id="isoProcessTab">
+					<li class="active"><a href="#processTab1" data-toggle="tab"><span>01</span></a></li>
+					<li><a href="#processTab2" data-toggle="tab"><span>02</span></a></li>
+					<li><a href="#processTab3" data-toggle="tab"><span>03</span></a></li>
+					<li><a href="#processTab4" data-toggle="tab"><span>04</span></a></li>
+					<li><a href="#processTab5" data-toggle="tab"><span>05</span></a></li>
+					<li><a href="#processTab6" data-toggle="tab"><span>06</span></a></li>
+					<li><a href="#processTab7" data-toggle="tab"><span>07</span></a></li>
+					<li><a href="#processTab8" data-toggle="tab"><span>08</span></a></li>
+				</ul>
+			</div>
+			<div id="isoProcessTabTabContent"
+				class="content_list tab-content iso_process_content">
+				<div id="processTab1" class="tab-pane in active">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<h2>贯标启动:</h2>
+							<p>成立企业贯标工作小组,制定企业贯标工作计划,召开企业贯标启动大会,对主要参与部门、人员进行贯标相关培训。</p>
+						</div>
+					</div>
+					<span class="sp1 tab1_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="processTab2" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<h2>调查诊断:</h2>
+							<p>调查企业基本信息、组织架构、相关制度,诊断企业知识产权管理现状。</p>
+						</div>
+					</div>
+					<span class="sp1 tab2_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="processTab3" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<h2>体系构建:</h2>
+							<p>制定企业知识产权方针、目标,策划企业知识产权职能架构,构建企业知识产权管理体系。</p>
+						</div>
+					</div>
+					<span class="sp1 tab3_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="processTab4" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<h2>手册编写:</h2>
+							<p>编写企业知识产权管理手册,编制企业知识产权管理制度、控制程序、记录表单。</p>
+						</div>
+					</div>
+					<span class="sp1 tab4_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="processTab5" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<h2>发文宣贯:</h2>
+							<p>颁布企业知识产权管理手册、制度、程序、表单,开展企业知识产权宣贯培训,指导各个部门、人员正确理解和执行。</p>
+						</div>
+					</div>
+					<span class="sp1 tab5_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="processTab6" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<h2>实施运行:</h2>
+							<p>运行企业知识产权管理体系,填写体系运行记录,定期进行体系运行监测。</p>
+						</div>
+					</div>
+					<span class="sp1 tab6_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="processTab7" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<h2>内部审核:</h2>
+							<p>企业对其自身的知识产权管理体系进行审核,并对审核中的不合格项采取纠正和改进措施。</p>
+						</div>
+					</div>
+					<span class="sp1 tab7_span"> <span class="sp2"></span>
+					</span>
+				</div>
+				<div id="processTab8" class="tab-pane">
+					<div class="content_info ">
+						<div class="zc_info_txt">
+							<h2>管理评审:</h2>
+							<p>企业最高管理者就企业知识产权管理体系的现状、适宜性、充分性和有效性以及方针和目标的贯彻落实情况进行评审。</p>
+						</div>
+					</div>
+					<span class="sp1 tab8_span"> <span class="sp2"></span>
+					</span>
+				</div>
+			</div>
+			<a href="#" class="iso_btn customer-service">我要服务</a>
+		</div>
+	</div>
+	<footer>
+		<div th:replace="common::copyright"></div>
+	</footer>
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${portalHost + '/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost + '/ipr/iso.js'}"></script>
+	</div>
 </body>
 
 </html>

+ 35 - 26
src/main/webapp/WEB-INF/views/portal/ipr/patentOperation.html

@@ -1,22 +1,25 @@
 <!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<html xmlns="http://www.w3.org/1999/xhtml"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
 
 <head th:replace="common::header(~{::title},~{::link})">
-	<title>专利运营与布局</title>
-	<link th:href="${portalHost + '/vendors.css'}" rel="stylesheet">
-	<link th:href="${portalHost + '/ipr/patentOperation.css'}" rel="stylesheet">
+<title>专利运营与布局</title>
+<link th:href="${portalHost + '/vendors.css'}" rel="stylesheet">
+<link th:href="${portalHost + '/ipr/patentOperation.css'}"
+	rel="stylesheet">
 </head>
 
 <body>
 	<header>
-		<div class="container">
-			<div class="lt">欢迎进入科技认知计算交易平台!</div>
-			<div class="rt">
-				<a href="/user/login.html" class="login">登录</a>
-				<a href="/user/signIn.html">注册</a>
-				<a href="#">导航</a>
-				<a href="#">关于我们</a>
-				<a href="#">联系我们</a>
+		<div th:replace="common::{topNav}">
+			<div class="container">
+				<div class="lt">欢迎进入科技认知计算交易平台!</div>
+				<div class="rt">
+					<a href="/user/login.html" class="login">登录</a> <a
+						href="/user/signIn.html">注册</a> <a href="#">导航</a> <a href="#">关于我们</a>
+					<a href="#">联系我们</a>
+				</div>
 			</div>
 		</div>
 	</header>
@@ -44,25 +47,30 @@
 		<!-- 轮播(Carousel)项目 -->
 		<div class="carousel-inner">
 			<div class="item active">
-				<img th:src="${portalHost + '/img/ipr_service_banner_1.jpg'}" alt="First slide">
+				<img th:src="${portalHost + '/img/ipr_service_banner_1.jpg'}"
+					alt="First slide">
 			</div>
 			<div class="item">
-				<img th:src="${portalHost + '/img/ipr_service_banner_2.jpg'}" alt="Second slide">
+				<img th:src="${portalHost + '/img/ipr_service_banner_2.jpg'}"
+					alt="Second slide">
 			</div>
 			<div class="item">
-				<img th:src="${portalHost + '/img/ipr_service_banner_3.jpg'}" alt="Third slide">
+				<img th:src="${portalHost + '/img/ipr_service_banner_3.jpg'}"
+					alt="Third slide">
 			</div>
 		</div>
 		<!-- 轮播(Carousel)导航 -->
 		<a class="carousel-control left" href="#myCarousel" data-slide="prev"><span
-			class="glyphicon glyphicon-chevron-left"></span></a> <a class="carousel-control right" href="#myCarousel" data-slide="next"><span
+			class="glyphicon glyphicon-chevron-left"></span></a> <a
+			class="carousel-control right" href="#myCarousel" data-slide="next"><span
 			class="glyphicon glyphicon-chevron-right"></span></a>
 	</div>
 	<div id="content_head" class="container">
 		<ul class="nav_content">
 			<li><a th:href="${basePath + '/portal/ipr/service.html'}">知识产权服务</a></li>
 			<li><a th:href="${basePath + '/portal/ipr/apply.html'}">知识产权申请</a></li>
-			<li class="active"><a th:href="${basePath + '/portal/ipr/patentOperation.html'}">专利运营与布局</a></li>
+			<li class="active"><a
+				th:href="${basePath + '/portal/ipr/patentOperation.html'}">专利运营与布局</a></li>
 			<li><a th:href="${basePath + '/portal/ipr/iso.html'}">知识产权贯标</a></li>
 		</ul>
 	</div>
@@ -76,20 +84,20 @@
 			<div class="content_nav">
 				<ul id="myTab">
 					<li class="active"><a href="#tab1" data-toggle="tab"> <span>专利技术分析</span>
-					</a> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALBAMAAACEzBAKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAPUExURXy4/0dwTObx/6zS//D3/3zk8F4AAAACdFJOU38A3jSoAQAAAD5JREFUCNc9yIEJACAMA8GIC7Qz6ADiCJL9ZzJRsZDyHDIzih60Om7EbOVE7Ws4YpIiCEgRDCYYTDggAt/92AlDDjfH3KJAAAAAAElFTkSuQmCC"
-						/>
+					</a> <img
+						src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALBAMAAACEzBAKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAPUExURXy4/0dwTObx/6zS//D3/3zk8F4AAAACdFJOU38A3jSoAQAAAD5JREFUCNc9yIEJACAMA8GIC7Qz6ADiCJL9ZzJRsZDyHDIzih60Om7EbOVE7Ws4YpIiCEgRDCYYTDggAt/92AlDDjfH3KJAAAAAAElFTkSuQmCC" />
 					</li>
 					<li><a href="#tab2" data-toggle="tab"> <span>竞争对手专利分析</span>
-					</a> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALBAMAAACEzBAKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAPUExURXy4/0dwTObx/6zS//D3/3zk8F4AAAACdFJOU38A3jSoAQAAAD5JREFUCNc9yIEJACAMA8GIC7Qz6ADiCJL9ZzJRsZDyHDIzih60Om7EbOVE7Ws4YpIiCEgRDCYYTDggAt/92AlDDjfH3KJAAAAAAElFTkSuQmCC"
-						/>
+					</a> <img
+						src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALBAMAAACEzBAKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAPUExURXy4/0dwTObx/6zS//D3/3zk8F4AAAACdFJOU38A3jSoAQAAAD5JREFUCNc9yIEJACAMA8GIC7Qz6ADiCJL9ZzJRsZDyHDIzih60Om7EbOVE7Ws4YpIiCEgRDCYYTDggAt/92AlDDjfH3KJAAAAAAElFTkSuQmCC" />
 					</li>
 					<li><a href="#tab3" data-toggle="tab"> <span>行业专利信息分析专利挖掘与布局</span>
-					</a> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALBAMAAACEzBAKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAPUExURXy4/0dwTObx/6zS//D3/3zk8F4AAAACdFJOU38A3jSoAQAAAD5JREFUCNc9yIEJACAMA8GIC7Qz6ADiCJL9ZzJRsZDyHDIzih60Om7EbOVE7Ws4YpIiCEgRDCYYTDggAt/92AlDDjfH3KJAAAAAAElFTkSuQmCC"
-						/>
+					</a> <img
+						src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALBAMAAACEzBAKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAPUExURXy4/0dwTObx/6zS//D3/3zk8F4AAAACdFJOU38A3jSoAQAAAD5JREFUCNc9yIEJACAMA8GIC7Qz6ADiCJL9ZzJRsZDyHDIzih60Om7EbOVE7Ws4YpIiCEgRDCYYTDggAt/92AlDDjfH3KJAAAAAAElFTkSuQmCC" />
 					</li>
 					<li><a href="#tab4" data-toggle="tab"> <span>专利预警服务</span>
-					</a> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALBAMAAACEzBAKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAPUExURXy4/0dwTObx/6zS//D3/3zk8F4AAAACdFJOU38A3jSoAQAAAD5JREFUCNc9yIEJACAMA8GIC7Qz6ADiCJL9ZzJRsZDyHDIzih60Om7EbOVE7Ws4YpIiCEgRDCYYTDggAt/92AlDDjfH3KJAAAAAAElFTkSuQmCC"
-						/>
+					</a> <img
+						src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALBAMAAACEzBAKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAPUExURXy4/0dwTObx/6zS//D3/3zk8F4AAAACdFJOU38A3jSoAQAAAD5JREFUCNc9yIEJACAMA8GIC7Qz6ADiCJL9ZzJRsZDyHDIzih60Om7EbOVE7Ws4YpIiCEgRDCYYTDggAt/92AlDDjfH3KJAAAAAAElFTkSuQmCC" />
 					</li>
 					<!-- <li><a href="#tab5" data-toggle="tab"> <span>专利维权确权服务</span>
 					</a> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAALBAMAAACEzBAKAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAPUExURXy4/0dwTObx/6zS//D3/3zk8F4AAAACdFJOU38A3jSoAQAAAD5JREFUCNc9yIEJACAMA8GIC7Qz6ADiCJL9ZzJRsZDyHDIzih60Om7EbOVE7Ws4YpIiCEgRDCYYTDggAt/92AlDDjfH3KJAAAAAAElFTkSuQmCC" />
@@ -204,7 +212,8 @@
 	</footer>
 	<div th:replace="common::footer(~{::script})">
 		<script type="text/javascript" th:src="${portalHost + '/vendors.js'}"></script>
-		<script type="text/javascript" th:src="${portalHost + '/ipr/patentOperation.js'}"></script>
+		<script type="text/javascript"
+			th:src="${portalHost + '/ipr/patentOperation.js'}"></script>
 	</div>
 </body>