Kaynağa Gözat

Accept Merge Request #221 合并 : (master -> prod)

Merge Request: 合并
Created By: @albertshaw
Accepted By: @albertshaw
URL: https://coding.net/t/aft/p/AFT/git/merge/221
albertshaw 8 yıl önce
ebeveyn
işleme
7453cc0562
60 değiştirilmiş dosya ile 1284 ekleme ve 631 silme
  1. 20 0
      pom.xml
  2. 11 12
      schema/20170726-alert.sql
  3. 29 3
      src/main/java/com/goafanti/activityUser/controller/UserActivityUserApiController.java
  4. 2 4
      src/main/java/com/goafanti/activityUser/service/ActivityUserService.java
  5. 4 5
      src/main/java/com/goafanti/activityUser/service/impl/ActivityUserServiceImpl.java
  6. 8 9
      src/main/java/com/goafanti/admin/controller/AdminActivityUserApiController.java
  7. 12 8
      src/main/java/com/goafanti/admin/controller/AdminApiController.java
  8. 0 3
      src/main/java/com/goafanti/admin/controller/AdminCopyrightApiController.java
  9. 4 1
      src/main/java/com/goafanti/admin/controller/AdminUserCertifyApiController.java
  10. 11 1
      src/main/java/com/goafanti/admin/service/impl/AdminServiceImpl.java
  11. 39 0
      src/main/java/com/goafanti/app/controller/AppApiController.java
  12. 4 1
      src/main/java/com/goafanti/banners/controller/BannersApiController.java
  13. 1 0
      src/main/java/com/goafanti/banners/enums/BannersType.java
  14. 4 0
      src/main/java/com/goafanti/banners/service/BannersService.java
  15. 2 2
      src/main/java/com/goafanti/cognizance/service/impl/OrgAnnualReportServiceImpl.java
  16. 2 0
      src/main/java/com/goafanti/common/constant/ErrorConstants.java
  17. 23 37
      src/main/java/com/goafanti/common/controller/PortalController.java
  18. 5 0
      src/main/java/com/goafanti/common/controller/WebpageController.java
  19. 1 3
      src/main/java/com/goafanti/common/dao/ActivityUserMapper.java
  20. 4 0
      src/main/java/com/goafanti/common/dao/BannersMapper.java
  21. 8 1
      src/main/java/com/goafanti/common/mapper/AchievementMapper.xml
  22. 10 4
      src/main/java/com/goafanti/common/mapper/AchievementOrderMapper.xml
  23. 3 6
      src/main/java/com/goafanti/common/mapper/ActivityUserMapper.xml
  24. 42 42
      src/main/java/com/goafanti/common/mapper/AdminMapper.xml
  25. 7 0
      src/main/java/com/goafanti/common/mapper/BannersMapperExt.xml
  26. 11 14
      src/main/java/com/goafanti/common/mapper/DemandMapper.xml
  27. 15 9
      src/main/java/com/goafanti/common/mapper/DemandOrderMapper.xml
  28. 4 4
      src/main/java/com/goafanti/common/mapper/LectureMapper.xml
  29. 1 1
      src/main/java/com/goafanti/common/mapper/OrgAnnualReportMapper.xml
  30. 17 12
      src/main/java/com/goafanti/common/mapper/OrgCognizanceMapper.xml
  31. 1 1
      src/main/java/com/goafanti/common/mapper/OrganizationIdentityMapper.xml
  32. 1 0
      src/main/java/com/goafanti/common/mapper/UserIdentityMapper.xml
  33. 6 2
      src/main/java/com/goafanti/common/mapper/UserMapper.xml
  34. 124 130
      src/main/java/com/goafanti/common/model/User.java
  35. 2 2
      src/main/java/com/goafanti/contract/service/impl/ContractServiceImpl.java
  36. 10 0
      src/main/java/com/goafanti/demand/bo/OrgDemandOrderListBo.java
  37. 10 0
      src/main/java/com/goafanti/demand/bo/UserDemandOrderListBo.java
  38. 0 6
      src/main/java/com/goafanti/lecture/service/impl/LectureServiceImpl.java
  39. 10 1
      src/main/java/com/goafanti/news/controller/NewsController.java
  40. 7 8
      src/main/java/com/goafanti/patent/service/impl/PatentInfoServiceImpl.java
  41. 8 8
      src/main/java/com/goafanti/portal/controller/PortalOrderApiController.java
  42. 10 0
      src/main/java/com/goafanti/user/bo/AuditorOrgIdentityDetailBo.java
  43. 10 0
      src/main/java/com/goafanti/user/bo/AuditorUserIdentityDetailBo.java
  44. 26 22
      src/main/java/com/goafanti/user/controller/UserLoginController.java
  45. 21 21
      src/main/resources/props/config_dev.properties
  46. 4 81
      src/main/resources/props/config_local.properties
  47. 22 22
      src/main/resources/props/config_test.properties
  48. 54 52
      src/main/resources/props/error.properties
  49. 4 0
      src/main/resources/shiro_base_auth.ini
  50. 9 7
      src/main/webapp/WEB-INF/views/common.html
  51. 1 1
      src/main/webapp/WEB-INF/views/portal/activity/details.html
  52. 68 59
      src/main/webapp/WEB-INF/views/portal/international/internationalIndex.html
  53. 24 0
      src/main/webapp/WEB-INF/views/portal/news/newsDetailApp.html
  54. 1 1
      src/main/webapp/WEB-INF/views/portal/scienceTechnology/bigShot.html
  55. 96 5
      src/main/webapp/WEB-INF/views/portal/search/achievement.html
  56. 95 5
      src/main/webapp/WEB-INF/views/portal/search/demand.html
  57. 86 5
      src/main/webapp/WEB-INF/views/portal/search/subscriberOrg.html
  58. 93 5
      src/main/webapp/WEB-INF/views/portal/search/subscriberUser.html
  59. 24 5
      src/main/webapp/WEB-INF/views/portal/technologyTrading/index.html
  60. 153 0
      src/main/webapp/WEB-INF/views/user/msignIn.html

+ 20 - 0
pom.xml

@@ -418,4 +418,24 @@
 			</plugin>
 		</plugins>
 	</build>
+	
+	<repositories>
+		<repository>
+			<id>aliyun-repos</id>
+			<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</repository>
+	</repositories>
+
+	<pluginRepositories>
+		<pluginRepository>
+			<id>aliyun-plugin</id>
+			<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+			<snapshots>
+				<enabled>false</enabled>
+			</snapshots>
+		</pluginRepository>
+	</pluginRepositories>
 </project>

+ 11 - 12
schema/20170726-alert.sql

@@ -1,13 +1,12 @@
-alter table achievement add column international_flag int(1)  default 0 comment 'ÊÇ·ñ¹ú¼Ê»¯  0-·ñ  1-ÊÇ';
-alter table achievement add column country_name_zh varchar(32) default 'Öйú' comment '¹ú¼ÊÖÐÎÄÃû³Æ';
-alter table user_identity add column international_flag int(1)  default 0 comment 'ÊÇ·ñ¹ú¼Ê»¯  0-·ñ  1-ÊÇ';
-alter table organization_identity add column international_flag int(1) default 0 comment 'ÊÇ·ñ¹ú¼Ê»¯ 0-·ñ 1-ÊÇ';
-alter table organization_info add column country_name_zh varchar(32) default 'Öйú' comment '¹ú¼ÊÖÐÎÄÃû³Æ';
-
-CREATE TABLE `country_code` (
-  `country_name_en` varchar(32) NOT NULL COMMENT 'Ó¢ÎÄÈ«³Æ',
-  `country_name_zh` varchar(32) NOT NULL COMMENT 'ÖÐÎÄÈ«³Æ',
-  `region_code` char(8) NOT NULL COMMENT '¹ú¼ÊµØÇø±àÂë',
-  `tel_code` int(8) DEFAULT NULL COMMENT 'µç»°´úÂë',
-  PRIMARY KEY (`country_name_en`)
+alter table achievement add column international_flag int(1)  default 0 comment '是�国际化  0-�  1-是';
+alter table achievement add column country_name_zh varchar(32) default '中国' comment '国际中文�称';
+alter table user_identity add column international_flag int(1)  default 0 comment '是�国际化  0-�  1-是';
+alter table organization_identity add column international_flag int(1) default 0 comment '是�国际化 0-� 1-是';
+alter table organization_info add column country_name_zh varchar(32) default '中国' comment '国际中文�称';
+-- 创建国际编�表
+create table country_code(
+	country_name_en varchar(32) not null primary key comment '英文全称',
+	country_name_zh varchar(32) not null comment '中文全称',
+	region_code char(8) not null comment '国际地区编�',
+	tel_code  int(8) comment '电�代�'
 );

+ 29 - 3
src/main/java/com/goafanti/activityUser/controller/UserActivityUserApiController.java

@@ -18,23 +18,49 @@ import com.goafanti.core.shiro.token.TokenManager;
 public class UserActivityUserApiController extends BaseApiController {
 	@Resource
 	private ActivityUserService activityUserService;
-	
+
 	/**
 	 * 报名
 	 */
 	@RequestMapping(value = "/signUp", method = RequestMethod.POST)
-	public Result signUp(Long aid){
+	public Result signUp(Long aid) {
 		Result res = new Result();
 		if (null == aid) {
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "活动ID"));
 			return res;
 		}
 		ActivityUser au = activityUserService.selectByAidAndUid(aid, TokenManager.getUserId());
-		if (null == au){
+		if (null == au) {
 			activityUserService.save(aid);
 		} else {
 			activityUserService.update(au);
 		}
 		return res;
 	}
+
+	/**
+	 * 取消报名
+	 */
+	@RequestMapping(value = "/signOff", method = RequestMethod.POST)
+	public Result signOff(Long aid) {
+		Result res = new Result();
+		if (null == aid) {
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "活动ID"));
+			return res;
+		}
+		return res.data(activityUserService.batchDeleteByPrimaryKey(aid, TokenManager.getUserId()));
+	}
+
+	/**
+	 * 取消报名
+	 */
+	@RequestMapping(value = "/isSigned", method = RequestMethod.GET)
+	public Result isSigned(Long aid) {
+		Result res = new Result();
+		if (null == aid) {
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "", "活动ID"));
+			return res;
+		}
+		return res.data(activityUserService.selectByAidAndUid(aid, TokenManager.getUserId()) != null);
+	}
 }

+ 2 - 4
src/main/java/com/goafanti/activityUser/service/ActivityUserService.java

@@ -1,7 +1,5 @@
 package com.goafanti.activityUser.service;
 
-import java.util.List;
-
 import com.goafanti.activityUser.bo.ActivityUserListBo;
 import com.goafanti.common.model.ActivityUser;
 import com.goafanti.common.model.ActivityUserKey;
@@ -21,10 +19,10 @@ public interface ActivityUserService {
 	Pagination<ActivityUserListBo> listActivityOrg(String activityName, String mobile, String unitName, Integer number,
 			Integer pSize, Integer pNo);
 
-	int batchDeleteByPrimaryKey(List<String> asList);
-
 	ActivityUser selectByPrimaryKey(ActivityUserKey key);
 
 	ActivityUser selectByAidAndUid(Long aid, String userId);
 
+	int batchDeleteByPrimaryKey(Long aid, String uid);
+
 }

+ 4 - 5
src/main/java/com/goafanti/activityUser/service/impl/ActivityUserServiceImpl.java

@@ -2,7 +2,6 @@ package com.goafanti.activityUser.service.impl;
 
 import java.util.Calendar;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -100,16 +99,16 @@ public class ActivityUserServiceImpl extends BaseMybatisDao<ActivityUserMapper>
 		if (StringUtils.isNotBlank(username)) {
 			params.put("username", username);
 		}
-		
-		if (StringUtils.isNotBlank(unitName)){
+
+		if (StringUtils.isNotBlank(unitName)) {
 			params.put("unitName", unitName);
 		}
 		return params;
 	}
 
 	@Override
-	public int batchDeleteByPrimaryKey(List<String> id) {
-		return activityUserMapper.batchDeleteByPrimaryKey(id);
+	public int batchDeleteByPrimaryKey(Long aid, String uid) {
+		return activityUserMapper.batchDeleteByPrimaryKey(aid, uid);
 	}
 
 	@Override

+ 8 - 9
src/main/java/com/goafanti/admin/controller/AdminActivityUserApiController.java

@@ -1,12 +1,9 @@
 package com.goafanti.admin.controller;
 
-import java.util.Arrays;
-
 import javax.annotation.Resource;
 
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.goafanti.activityUser.service.ActivityUserService;
@@ -28,7 +25,8 @@ public class AdminActivityUserApiController extends BaseApiController {
 	public Result activityUserList(String activityName, String mobile, String username, Integer number, String pageSize,
 			String pageNo) {
 		Result res = new Result();
-		res.setData(activityUserService.listActivityUser(activityName, mobile, username, number, getPSize(pageSize), getPNo(pageNo)));
+		res.setData(activityUserService.listActivityUser(activityName, mobile, username, number, getPSize(pageSize),
+				getPNo(pageNo)));
 		return res;
 	}
 
@@ -39,20 +37,21 @@ public class AdminActivityUserApiController extends BaseApiController {
 	public Result activityOrgList(String activityName, String mobile, String unitName, Integer number, String pageSize,
 			String pageNo) {
 		Result res = new Result();
-		res.setData(activityUserService.listActivityOrg(activityName, mobile, unitName, number, getPSize(pageSize), getPNo(pageNo)));
+		res.setData(activityUserService.listActivityOrg(activityName, mobile, unitName, number, getPSize(pageSize),
+				getPNo(pageNo)));
 		return res;
 	}
-	
+
 	/**
 	 * 批量删除活动报名记录
 	 */
 	@RequestMapping(value = "/delete", method = RequestMethod.POST)
-	public Result delete(@RequestParam(name = "ids[]", required = false) String[] ids) {
+	public Result delete(String aid, String uid) {
 		Result res = new Result();
-		if (ids == null || ids.length < 1) {
+		if (StringUtils.isBlank(aid) || StringUtils.isBlank(uid) || !StringUtils.isNumeric(aid)) {
 			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", ""));
 		} else {
-			res.setData(activityUserService.batchDeleteByPrimaryKey(Arrays.asList(ids)));
+			res.setData(activityUserService.batchDeleteByPrimaryKey(Long.parseLong(aid), uid));
 		}
 		return res;
 	}

+ 12 - 8
src/main/java/com/goafanti/admin/controller/AdminApiController.java

@@ -652,6 +652,9 @@ public class AdminApiController extends CertifyApiController {
 
 		OrganizationIdentity oi = new OrganizationIdentity();
 		BeanUtils.copyProperties(orgIdentity, oi);
+		if (orgIdentity.getRegisteredCapital() != null) {
+			oi.setRegisteredCapital(new BigDecimal(orgIdentity.getRegisteredCapital()));
+		}
 		if (CertifySubmitType.SUBMIT.getCode().equals(saveSign)) {
 			User u = userService.selectByPrimaryKey(oi.getUid());
 			if (!UserLevel.GENERAL.getCode().equals(u.getLvl())) {
@@ -857,8 +860,8 @@ public class AdminApiController extends CertifyApiController {
 		if (StringUtils.isNumeric(pageNo)) {
 			pNo = Integer.parseInt(pageNo);
 		}
-		res.setData(orgStandardService.listOrgStandard(year, standardName, standardNumber, standardLevel, participateWay, pNo,
-				pSize, uid));
+		res.setData(orgStandardService.listOrgStandard(year, standardName, standardNumber, standardLevel,
+				participateWay, pNo, pSize, uid));
 		return res;
 	}
 
@@ -1045,8 +1048,8 @@ public class AdminApiController extends CertifyApiController {
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到用户", "用户"));
 			return res;
 		}
-		
-		if (null == orgIntellectualProperty.getCatagory()){
+
+		if (null == orgIntellectualProperty.getCatagory()) {
 			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到类别", "类别"));
 			return res;
 		}
@@ -2694,10 +2697,11 @@ public class AdminApiController extends CertifyApiController {
 			return res;
 		}
 
-		/*if (year - oc.getYear() != 0) {
-			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "高企ID及年份"));
-			return res;
-		}*/
+		/*
+		 * if (year - oc.getYear() != 0) {
+		 * res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "",
+		 * "高企ID及年份")); return res; }
+		 */
 
 		res.setData(handleCognizanceDetail(uid, cid, year));
 		return res;

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

@@ -158,9 +158,6 @@ public class AdminCopyrightApiController extends CertifyApiController {
 			ci.setStatus(CopyrightStatus.DELIVERD.getCode());
 		}
 
-		if (CopyrightStatus.SETTLEMENT.getCode() == ci.getStatus()) {
-			ci.setStatus(CopyrightStatus.AUTHORIZED.getCode());
-		}
 		cl.setCid(oci.getId());
 		cl.setOperator(TokenManager.getAdminId());
 		copyrightInfoService.updateByPrimaryKeySelective(ci, cl);

+ 4 - 1
src/main/java/com/goafanti/admin/controller/AdminUserCertifyApiController.java

@@ -1,5 +1,6 @@
 package com.goafanti.admin.controller;
 
+import java.math.BigDecimal;
 import java.util.Calendar;
 
 import javax.annotation.Resource;
@@ -224,7 +225,9 @@ public class AdminUserCertifyApiController extends CertifyApiController {
 
 		OrganizationIdentity oi = new OrganizationIdentity();
 		BeanUtils.copyProperties(orgIdentity, oi);
-
+		if (orgIdentity.getRegisteredCapital() != null) {
+			oi.setRegisteredCapital(new BigDecimal(orgIdentity.getRegisteredCapital()));
+		}
 		if (IdentityAuditStatus.UNCOMMITTED.getCode().equals(oi.getAuditStatus())) {
 			oi.setProcess(IdentityProcess.UNCOMMITTED.getCode());
 		} else if (IdentityAuditStatus.COMMITTED.getCode().equals(oi.getAuditStatus())

+ 11 - 1
src/main/java/com/goafanti/admin/service/impl/AdminServiceImpl.java

@@ -1,5 +1,6 @@
 package com.goafanti.admin.service.impl;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -72,12 +73,21 @@ public class AdminServiceImpl extends BaseMybatisDao<AdminMapper> implements Adm
 		if (pageSize == null || pageSize < 0 || pageSize > 10) {
 			pageSize = 10;
 		}
+		if (province != null) {
+			List<Integer> provinceList = new ArrayList<>();
+			provinceList.add(province);
+			params.put("provinceList", provinceList);
+		}
 		if (TokenManager.hasRole(AFTConstants.SUPERADMIN)) {
-			return (Pagination<AdminListBo>) findPage("findAdminListByPage", "findAdminCount", params, pageNo,
+			return (Pagination<AdminListBo>) findPage("findAreaAdminListByPage", "findAreaAdminCount", params, pageNo,
 					pageSize);
 		} else if (TokenManager.hasRole(AFTConstants.AREAADMIN)) {
 			List<Integer> provinceList = adminLocationMapper
 					.selectProvinceWhereCityIsNullByAdminId(TokenManager.getAdminId());
+			if (province != null && provinceList.contains(province)) {
+				provinceList = new ArrayList<>();
+				provinceList.add(province);
+			}
 			List<Integer> cityList = adminLocationMapper.selectCityByAdminId(TokenManager.getAdminId());
 			provinceList.addAll(cityList);
 			if (null != provinceList && provinceList.size() > 0) {

+ 39 - 0
src/main/java/com/goafanti/app/controller/AppApiController.java

@@ -0,0 +1,39 @@
+package com.goafanti.app.controller;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.Resource;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.goafanti.activity.service.ActivityService;
+import com.goafanti.banners.enums.BannersType;
+import com.goafanti.banners.service.BannersService;
+import com.goafanti.common.bo.Result;
+import com.goafanti.common.controller.BaseApiController;
+import com.goafanti.news.enums.NewsType;
+import com.goafanti.news.service.NewsService;
+
+@RestController
+@RequestMapping(path = "/api/portal/app", method = RequestMethod.GET)
+public class AppApiController extends BaseApiController {
+	@Resource
+	BannersService			bannersService;
+	@Resource
+	private ActivityService	activityService;
+	@Resource
+	NewsService				newsService;
+
+	@RequestMapping(value = "/index", method = RequestMethod.GET)
+	public Result index() {
+		Map<String, Object> result = new HashMap<>();
+		result.put("banners", bannersService.findPortalBanners(BannersType.APP.getKey()));
+		result.put("activities", activityService.findPortalList(0, 3, null));
+		result.put("policies", newsService.findNewsList(0, NewsType.GJZC.getCode(), 3));
+		result.put("news", newsService.findNewsList(0, NewsType.JTDT.getCode(), 5));
+		return res().data(result);
+	}
+}

+ 4 - 1
src/main/java/com/goafanti/banners/controller/BannersApiController.java

@@ -65,7 +65,10 @@ public class BannersApiController extends BaseApiController {
 		Assert.isTrue(StringUtils.isBlank(key) || BannersType.containsType(key), "广告图位置标示不正确。");
 		Integer pN = getPageNo(pageNo);
 		Integer pS = getPageSize(pageSize);
-		return res().data(bannersService.findBannersList(key, (pN - 1) * pS, pS));
+		Map<String, Object> result = new HashMap<>();
+		result.put("list", bannersService.findBannersList(key, (pN - 1) * pS, pS));
+		result.put("total", bannersService.findBannersListCount(key));
+		return res().data(result);
 	}
 
 	@RequestMapping(value = "/delete", method = RequestMethod.POST)

+ 1 - 0
src/main/java/com/goafanti/banners/enums/BannersType.java

@@ -24,6 +24,7 @@ public enum BannersType {
 	JI_SHU_PING_GU("JI_SHU_PING_GU", "技术评估广告图"),
 	CE_YUAN_DI("CE_YUAN_DI", "策源地广告图"),
 	CHUANG_YE_QUAN("CHUANG_YE_QUAN", "创业圈广告图"),
+	APP("APP", "APP首页广告图"),
 	JIN_RONG_QUAN("JIN_RONG_QUAN", "金融圈广告图");
 
 	private String							key;

+ 4 - 0
src/main/java/com/goafanti/banners/service/BannersService.java

@@ -39,6 +39,10 @@ public class BannersService extends BaseMybatisDao<BannersMapper> {
 	public List<Banners> findBannersList(String sign, Integer pageNo, Integer pageSize) {
 		return portalBanners(sign, pageNo, pageSize);
 	}
+	
+	public int findBannersListCount(String sign) {
+		return bannersMapper.findListCount(sign);
+	}
 
 	public List<Banners> previewPortalBanners(String key) {
 		return portalBanners(key, 0, 6);

+ 2 - 2
src/main/java/com/goafanti/cognizance/service/impl/OrgAnnualReportServiceImpl.java

@@ -109,8 +109,8 @@ public class OrgAnnualReportServiceImpl extends BaseMybatisDao<OrgAnnualReportMa
 			report.setSoftwareWorks(null == p.getSoftwareWorks() ? 0 : p.getSoftwareWorks());
 		}
 
-		BigDecimal t = orgAnnualReportMapper.selectAnnualReportTerritoryByYearAndUid(year, uid);
-		report.setTerritory(null == t ? new BigDecimal(0) : t);
+//		BigDecimal t = orgAnnualReportMapper.selectAnnualReportTerritoryByYearAndUid(year, uid);
+//		report.setTerritory(null == t ? new BigDecimal(0) : t);
 
 		AnnualReportMainBo m = orgAnnualReportMapper.selectAnnualReportMainBoByYearAndUid(year, uid);
 		if (null != m) {

+ 2 - 0
src/main/java/com/goafanti/common/constant/ErrorConstants.java

@@ -3,6 +3,8 @@ package com.goafanti.common.constant;
 public class ErrorConstants {
 
 	public static final String	NON_LOGIN							= "NON_LOGIN";
+	
+	public static final String	NO_CERTIFY							= "NO_CERTIFY";
 
 	public static final String	VCODE_ERROR							= "VCODE_ERROR";
 

+ 23 - 37
src/main/java/com/goafanti/common/controller/PortalController.java

@@ -1,5 +1,6 @@
 package com.goafanti.common.controller;
 
+import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
 
@@ -85,54 +86,36 @@ public class PortalController extends BaseController {
 				}
 			}
 			Integer industryCategoryA = demand.getIndustryCategoryA();
-			String industryCategory = "";
-			boolean a = Boolean.FALSE;
-			boolean b = Boolean.FALSE;
+			boolean hasCategoryA = false;
+			boolean hasCategoryB = false;
 			if (null != industryCategoryA) {
 				List<DemandPortalSimilarListBo> similarList = demandService.findByIndustryCategoryA(industryCategoryA,
 						demand.getId());
 				if (!similarList.isEmpty()) {
 					for (DemandPortalSimilarListBo s : similarList) {
-						a = Boolean.FALSE;
-						b = Boolean.FALSE;
-						industryCategory = "";
-						if (StringUtils.isNotBlank(s.getIndustryCategoryAS())) {
-							a = Boolean.TRUE;
-						}
-						if (StringUtils.isNotBlank(s.getIndustryCategoryBS())) {
-							b = Boolean.TRUE;
-						}
-						industryCategory += (a ? s.getIndustryCategoryAS() : "") + (a && b ? DELIMITER : "")
-								+ (b ? s.getIndustryCategoryBS() : "");
-						s.setIndustryCategory(industryCategory);
-						if (null != s.getBudgetCost()) {
+						hasCategoryA = StringUtils.isNotBlank(s.getIndustryCategoryAS());
+						hasCategoryB = StringUtils.isNotBlank(s.getIndustryCategoryBS());
+						s.setIndustryCategory((hasCategoryA ? s.getIndustryCategoryAS() : "")
+								+ (hasCategoryA && hasCategoryB ? DELIMITER : "")
+								+ (hasCategoryB ? s.getIndustryCategoryBS() : ""));
+						if (null != s.getBudgetCost() || s.getBudgetCost().compareTo(BigDecimal.ZERO) > 0) {
 							s.setBudgetCostS(s.getBudgetCost() + UNIT);
 						} else {
 							s.setBudgetCostS(PRICE_NEGOTIABLE);
 						}
 					}
-
 				}
 				mv.addObject("similarList", similarList);
-				a = Boolean.FALSE;
-				if (StringUtils.isNotBlank(demand.getIndustryCategoryAS())) {
-					a = Boolean.TRUE;
-				}
-			}
-			b = Boolean.FALSE;
-			if (StringUtils.isNotBlank(demand.getIndustryCategoryBS())) {
-				b = Boolean.TRUE;
+				hasCategoryA = StringUtils.isNotBlank(demand.getIndustryCategoryAS());
 			}
+			hasCategoryB = StringUtils.isNotBlank(demand.getIndustryCategoryBS());
 
-			industryCategory += (a ? demand.getIndustryCategoryAS() : "") + (a && b ? DELIMITER : "")
-					+ (b ? demand.getIndustryCategoryBS() : "");
-			demand.setIndustryCategory(industryCategory);
+			demand.setIndustryCategory((hasCategoryA ? demand.getIndustryCategoryAS() : "")
+					+ (hasCategoryA && hasCategoryB ? DELIMITER : "")
+					+ (hasCategoryB ? demand.getIndustryCategoryBS() : ""));
 
-			String location = "";
-			String province = demand.getProvince();
-			String city = demand.getCity();
-			location += (StringUtils.isBlank(province) ? "" : province) + (StringUtils.isBlank(city) ? "" : city);
-			demand.setLocation(location);
+			demand.setLocation((StringUtils.isBlank(demand.getProvince()) ? "" : demand.getProvince())
+					+ (StringUtils.isBlank(demand.getCity()) ? "" : demand.getCity()));
 		}
 		mv.setViewName("/portal/detail/demandDetail");
 		mv.addObject("demand", demand);
@@ -177,7 +160,7 @@ public class PortalController extends BaseController {
 								|| AchievementBargainingMode.NEGOTIABLE.getCode().equals(bo.getBargainingMode())) {
 							bo.setTransferPriceS(PRICE_NEGOTIABLE);
 						} else {
-							if (null != bo.getTransferPrice()) {
+							if (null != bo.getTransferPrice() && bo.getTransferPrice().compareTo(BigDecimal.ZERO) > 0) {
 								bo.setTransferPriceS(bo.getTransferPrice() + UNIT);
 							} else {
 								bo.setTransferPriceS(PRICE_NEGOTIABLE);
@@ -186,12 +169,15 @@ public class PortalController extends BaseController {
 						String ulocation = "";
 						String uprovince = bo.getUprovince();
 						String ucity = bo.getUcity();
-						ulocation += (StringUtils.isBlank(uprovince) ? "" : uprovince) + (StringUtils.isBlank(ucity) ? "" : ucity);
+						ulocation += (StringUtils.isBlank(uprovince) ? "" : uprovince)
+								+ (StringUtils.isBlank(ucity) ? "" : ucity);
 						String olocation = "";
 						String oprovince = bo.getOprovince();
 						String ocity = bo.getOcity();
-						olocation += (StringUtils.isBlank(oprovince) ? "" : oprovince) + (StringUtils.isBlank(ocity) ? "" : ocity);
-						bo.setLocation(StringUtils.isNotBlank(ulocation) ? ulocation : (StringUtils.isNotBlank(olocation) ? olocation : ""));
+						olocation += (StringUtils.isBlank(oprovince) ? "" : oprovince)
+								+ (StringUtils.isBlank(ocity) ? "" : ocity);
+						bo.setLocation(StringUtils.isNotBlank(ulocation) ? ulocation
+								: (StringUtils.isNotBlank(olocation) ? olocation : ""));
 					}
 				}
 				mv.addObject("similarList", similarList);

+ 5 - 0
src/main/java/com/goafanti/common/controller/WebpageController.java

@@ -105,6 +105,11 @@ public class WebpageController extends BaseController {
 		return "/user/signIn";
 	}
 
+	@RequestMapping(value = "/user/msignIn", method = RequestMethod.GET)
+	public String mSignin(HttpServletRequest request, ModelAndView modelview) {
+		return "/user/msignIn";
+	}
+	
 	@RequestMapping(value = "/user/certify", method = RequestMethod.GET)
 	public ModelAndView userCertify(HttpServletRequest request, ModelAndView modelview) {
 		modelview.setViewName("/user/certify");

+ 1 - 3
src/main/java/com/goafanti/common/dao/ActivityUserMapper.java

@@ -1,7 +1,5 @@
 package com.goafanti.common.dao;
 
-import java.util.List;
-
 import org.apache.ibatis.annotations.Param;
 
 import com.goafanti.common.model.ActivityUser;
@@ -22,7 +20,7 @@ public interface ActivityUserMapper {
 
 	ActivityUser selectByUid(String uid);
 
-	int batchDeleteByPrimaryKey(List<String> id);
+	int batchDeleteByPrimaryKey(@Param("aid")Long aid, @Param("uid")String uid);
 
 	ActivityUser selectByAidAndUid(@Param("aid")Long aid, @Param("uid")String uid);
 }

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

@@ -3,6 +3,8 @@ package com.goafanti.common.dao;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.ibatis.annotations.Param;
+
 import com.goafanti.common.model.Banners;
 
 public interface BannersMapper {
@@ -19,4 +21,6 @@ public interface BannersMapper {
     int updateByPrimaryKey(Banners record);
 
 	List<Banners> findList(Map<String, Object> params);
+
+	int findListCount(@Param(value = "sign") String sign);
 }

+ 8 - 1
src/main/java/com/goafanti/common/mapper/AchievementMapper.xml

@@ -682,6 +682,7 @@
   	where a.deleted_sign = 0 and a.owner_type = 0
   	<if test="ownerName != null">
   		and  a.owner_name like CONCAT('%',#{ownerName,jdbcType=VARCHAR},'%')
+  		and  (a.owner_id is null or a.owner_id = '')
   	</if>
   	<if test="username != null">
   		and  ui.username like CONCAT('%',#{username,jdbcType=VARCHAR},'%')
@@ -732,6 +733,7 @@
   	where deleted_sign = 0 and owner_type = 0
   	<if test="ownerName != null">
   		and  a.owner_name like CONCAT('%',#{ownerName,jdbcType=VARCHAR},'%')
+  		and  (a.owner_id is null or a.owner_id = '')
   	</if>
   	<if test="username != null">
   		and  ui.username like CONCAT('%',#{username,jdbcType=VARCHAR},'%')
@@ -785,6 +787,7 @@
   	where a.deleted_sign = 0 and a.owner_type = 1
   	<if test="ownerName != null">
   		and  a.owner_name like CONCAT('%',#{ownerName,jdbcType=VARCHAR},'%')
+  		and  (a.owner_id is null or a.owner_id = '')
   	</if>
   	<if test="unitName != null">
   		and  oi.unit_name like CONCAT('%',#{unitName,jdbcType=VARCHAR},'%')
@@ -832,9 +835,13 @@
   	select 
   		count(1)
   	from achievement a
+  	<if test="unitName != null">
+  	LEFT JOIN organization_identity oi on a.owner_id = oi.uid
+  	</if>
   	where a.deleted_sign = 0 and a.owner_type = 1
   	<if test="ownerName != null">
   		and  a.owner_name like CONCAT('%',#{ownerName,jdbcType=VARCHAR},'%')
+  		and  (a.owner_id is null or a.owner_id = '')
   	</if>
   	<if test="unitName != null">
   		and  oi.unit_name like CONCAT('%',#{unitName,jdbcType=VARCHAR},'%')
@@ -1012,7 +1019,7 @@
 		    a.create_time as createTime, a.release_status as releaseStatus, 
 		    a.release_date as releaseDate, a.audit_status as auditStatus, a.tech_broker_id as techBrokerId,
 		    oi.unit_name as iOwnerName, oi.postal_address as iOwnerPostalAddress, u.email as iOwnerEmail,
-		    oi.org_code as iOwnerIdNumber
+		    oi.org_code as iOwnerIdNumber, u.mobile as iOwnerMobile
     from achievement a
     left join organization_identity oi on a.owner_id = oi.uid
     left join user u on u.id = a.owner_id

+ 10 - 4
src/main/java/com/goafanti/common/mapper/AchievementOrderMapper.xml

@@ -250,7 +250,8 @@
   		and ao.uid = #{uid,jdbcType=VARCHAR}
   	</if>
   	<if test="username != null">
-  		and ui.username = #{username,jdbcType=VARCHAR}
+  		and (oi.unit_name = #{username,jdbcType=VARCHAR}
+  		or ui.username = #{username,jdbcType=VARCHAR})
   	</if>
   	order by ao.serial_number desc
   	<if test="page_sql!=null">
@@ -264,6 +265,7 @@
   	from achievement_order ao
   	left join achievement a on a.id = ao.achievement_id
   	left join user_identity ui on ui.uid = ao.uid
+  	left join organization_identity oi on oi.uid = ao.uid
   	where ao.deleted_sign = 0 
   	and   a.deleted_sign = 0 
   	and   a.owner_type= 0
@@ -277,7 +279,8 @@
   		and ao.uid = #{uid,jdbcType=VARCHAR}
   	</if>
   	<if test="username != null">
-  		and ui.username = #{username,jdbcType=VARCHAR}
+  		and (oi.unit_name = #{username,jdbcType=VARCHAR}
+  		or ui.username = #{username,jdbcType=VARCHAR})
   	</if>
   </select>
   
@@ -307,7 +310,8 @@
   		and ao.uid = #{uid,jdbcType=VARCHAR}
   	</if>
   	<if test="unitName != null">
-  		and oi.unit_name = #{unitName,jdbcType=VARCHAR}
+  		and (oi.unit_name = #{unitName,jdbcType=VARCHAR}
+  		or ui.username = #{unitName,jdbcType=VARCHAR})
   	</if>
   	order by ao.serial_number desc
   	<if test="page_sql!=null">
@@ -320,6 +324,7 @@
   		count(1)
   	from achievement_order ao
   	left join achievement a on a.id = ao.achievement_id
+  	left join user_identity ui on ui.uid = ao.uid
   	left join organization_identity oi on oi.uid = ao.uid
   	where ao.deleted_sign = 0 
   	and   a.deleted_sign = 0 
@@ -334,7 +339,8 @@
   		and ao.uid = #{uid,jdbcType=VARCHAR}
   	</if>
   	<if test="unitName != null">
-  		and oi.unit_name = #{unitName,jdbcType=VARCHAR}
+  		and (oi.unit_name = #{unitName,jdbcType=VARCHAR}
+  		or ui.username = #{unitName,jdbcType=VARCHAR})
   	</if>
   </select>
 </mapper>

+ 3 - 6
src/main/java/com/goafanti/common/mapper/ActivityUserMapper.xml

@@ -203,14 +203,11 @@
   	</if>
   </select>
   
-  <delete id="batchDeleteByPrimaryKey" parameterType="java.util.List">
+  <delete id="batchDeleteByPrimaryKey">
   	delete
   		from activity_user
-  	where id in
-  	<foreach item="item" index="index" collection="list" open="("
-			separator="," close=")">
-			#{item}
-	</foreach>
+  	where aid = #{aid,jdbcType=BIGINT}
+      and uid = #{uid,jdbcType=VARCHAR}
   </delete>
   
     <select id="selectByAidAndUid" resultMap="BaseResultMap" >

+ 42 - 42
src/main/java/com/goafanti/common/mapper/AdminMapper.xml

@@ -175,46 +175,6 @@
     where mobile = #{mobile,jdbcType=VARCHAR}
   </select> 
   
-  <select id= "findAdminListByPage" parameterType="java.lang.String" resultType="com.goafanti.admin.bo.AdminListBo" >
-  	select 
-   		 a.number, a.mobile, a.name, 
-   		 a.position, a.email, a.id,
-   		 a.create_time as createTime, GROUP_CONCAT(DISTINCT(al.province)) AS province,
-   		 aa.name as superior, a.superior_id as superiorId
-    from admin a 
-    left join admin_location al on a.id = al.admin_id
-    left join admin aa on aa.id = a.superior_id
-    where a.id <![CDATA[ <> ]]> '1'
-    <if test = "mobile != null"> 
-    	and a.mobile = #{mobile,jdbcType=VARCHAR}
-    </if>
-    <if test = "name != null"> 
-    	and a.name = #{name,jdbcType=VARCHAR}
-    </if>
-    <if test = "number != null">
-    	and a.number = #{number,jdbcType=INTEGER}
-    </if>
-    group by a.id  
-    order by a.number 
-    <if test="page_sql!=null">
-			${page_sql}
-	</if>
-  </select>
-  
-  <select id = "findAdminCount" parameterType="java.lang.String" resultType="java.lang.Integer">
-   select count(1) from admin
-     where id <![CDATA[ <> ]]> '1'
-    <if test = "mobile != null"> 
-    	and mobile = #{mobile,jdbcType=VARCHAR}
-    </if>
-     <if test = "name != null"> 
-    	and name = #{name,jdbcType=VARCHAR}
-    </if>
-    <if test = "number != null">
-    	and number = #{number,jdbcType=INTEGER}
-    </if>
-  </select>
-  
   <select id="selectRolesByPrimaryKey" parameterType="java.lang.String">
    select r.name, r.id, r.type
     from role r
@@ -350,7 +310,33 @@
 	</if>
    </select>
    
-    <select id= "findAreaAdminListByPage" parameterType="java.lang.String" resultType="com.goafanti.admin.bo.AdminListBo" >
+    <select id= "findAdminListByPage" parameterType="java.lang.String" resultType="com.goafanti.admin.bo.AdminListBo" >
+  	select 
+   		 a.number, a.mobile, a.name, 
+   		 a.position, a.email, a.id,
+   		 a.create_time as createTime, GROUP_CONCAT(DISTINCT(al.province)) AS province,
+   		 aa.name as superior, a.superior_id as superiorId
+    from admin a 
+    left join admin_location al on a.id = al.admin_id
+    left join admin aa on aa.id = a.superior_id
+    where a.id <![CDATA[ <> ]]> '1'
+    <if test = "mobile != null"> 
+    	and a.mobile = #{mobile,jdbcType=VARCHAR}
+    </if>
+    <if test = "name != null"> 
+    	and a.name = #{name,jdbcType=VARCHAR}
+    </if>
+    <if test = "number != null">
+    	and a.number = #{number,jdbcType=INTEGER}
+    </if>
+    group by a.id  
+    order by a.number 
+    <if test="page_sql!=null">
+			${page_sql}
+	</if>
+  </select>
+  
+  <select id= "findAreaAdminListByPage" parameterType="java.lang.String" resultType="com.goafanti.admin.bo.AdminListBo" >
   	select 
    		 a.number, a.mobile, a.name, 
    		 a.position, a.email, a.id,
@@ -376,7 +362,7 @@
 			#{plist}
 		</foreach>
 	</if>
-	<if test = "provinceList != null &amp;&amp; cityList != null">
+	<if test = "provinceList != null and cityList != null">
 	or 
 	</if>
 	<if test="cityList != null">
@@ -395,6 +381,20 @@
 	</if>
   </select>
   
+  <select id = "findAdminCount" parameterType="java.lang.String" resultType="java.lang.Integer">
+   select count(1) from admin
+     where id <![CDATA[ <> ]]> '1'
+    <if test = "mobile != null"> 
+    	and mobile = #{mobile,jdbcType=VARCHAR}
+    </if>
+     <if test = "name != null"> 
+    	and name = #{name,jdbcType=VARCHAR}
+    </if>
+    <if test = "number != null">
+    	and number = #{number,jdbcType=INTEGER}
+    </if>
+  </select>
+  
   <select id = "findAreaAdminCount" parameterType="java.lang.String" resultType="java.lang.Integer">
    select count(distinct(a.number))  
    from admin a 

+ 7 - 0
src/main/java/com/goafanti/common/mapper/BannersMapperExt.xml

@@ -13,4 +13,11 @@
 		limit #{pageNo,jdbcType=INTEGER}, #{pageSize,jdbcType=INTEGER}
 		</if>
 	</select>
+	<select id="findListCount" parameterType="java.lang.String" resultType="java.lang.Integer">
+		select count(1)
+		from banners where 1=1 
+		<if test="sign != null">
+			and sign = #{sign,jdbcType=VARCHAR}
+		</if>
+	</select>
 </mapper>

+ 11 - 14
src/main/java/com/goafanti/common/mapper/DemandMapper.xml

@@ -487,11 +487,7 @@
 	where d.deleted_sign = 0 and d.data_category = 0 
 	<if test="adminId != null">
 		and (u.mid = #{adminId,jdbcType=VARCHAR}
-	</if>
-	<if test="adminId != null">
 		or  d.principal_id = #{adminId,jdbcType=VARCHAR}
-	</if>
-	<if test="adminId != null">
 		or  d.tech_broker_id = #{adminId,jdbcType=VARCHAR}
 		)
 	</if>
@@ -515,6 +511,7 @@
 	</if>
 	<if test="employerName != null">
 		and  d.employer_name like CONCAT('%',#{employerName,jdbcType=VARCHAR},'%')
+		and  (d.employer_id is null or d.employer_id='')
 	</if>
 	<if test="infoSources != null">
 		and  d.info_sources = #{infoSources,jdbcType=INTEGER}
@@ -558,11 +555,7 @@
 	where d.deleted_sign = 0 and d.data_category = 0 
 	<if test="adminId != null">
 		and (u.mid = #{adminId,jdbcType=VARCHAR}
-	</if>
-	<if test="adminId != null">
 		or  d.principal_id = #{adminId,jdbcType=VARCHAR}
-	</if>
-	<if test="adminId != null">
 		or  d.tech_broker_id = #{adminId,jdbcType=VARCHAR}
 		)
 	</if>
@@ -586,6 +579,7 @@
 	</if>
 	<if test="employerName != null">
 		and  d.employer_name like CONCAT('%',#{employerName,jdbcType=VARCHAR},'%')
+		and  (d.employer_id is null or d.employer_id='')
 	</if>
 	<if test="infoSources != null">
 		and  d.info_sources = #{infoSources,jdbcType=INTEGER}
@@ -652,13 +646,14 @@
 		and  d.name like CONCAT('%',#{name,jdbcType=VARCHAR},'%')
 	</if>
 	<if test="keyword != null">
-		and  d.keyword like "%"#{keyword,jdbcType=VARCHAR}"%"
+		and  d.keyword like CONCAT('%',#{keyword,jdbcType=VARCHAR},'%')
 	</if>
 	<if test="unitName != null">
 		and  oi.unit_name like CONCAT('%',#{unitName,jdbcType=VARCHAR},'%')
 	</if>
 	<if test="employerName != null">
 		and  d.employer_name like CONCAT('%',#{employerName,jdbcType=VARCHAR},'%')
+		and  (d.employer_id is null or d.employer_id='')
 	</if>
 	<if test="infoSources != null">
 		and  d.info_sources = #{infoSources,jdbcType=INTEGER}
@@ -730,6 +725,7 @@
 	</if>
 	<if test="employerName != null">
 		and  d.employer_name like CONCAT('%',#{employerName,jdbcType=VARCHAR},'%')
+		and  (d.employer_id is null or d.employer_id='')
 	</if>
 	<if test="infoSources != null">
 		and  d.info_sources = #{infoSources,jdbcType=INTEGER}
@@ -770,7 +766,8 @@
   		d.fixed_scheme as fixedScheme, d.cost_escrow as costEscrow, d.employer_id as employerId,
   		info.postal_address as address, u.email as mailbox,  u.mobile as mobile, d.audit_status as auditStatus,
   		d.employer_address as employerAddress, d.employer_contacts_mobile as employerContactsMobile,
-  		d.employer_contacts_mailbox as employerContactsMailbox, d.employer_name as employerName
+  		d.employer_contacts_mailbox as employerContactsMailbox, d.employer_name as employerName,
+  		d.tech_broker_id as techBrokerId,  u.mobile as contactsName
   	from demand d 
   	left join user_identity ui on ui.uid = d.employer_id
   	left join user_info info on info.uid = d.employer_id
@@ -1091,7 +1088,7 @@
 		u.lvl as level
 	FROM
 		demand d
-	LEFT JOIN <![CDATA[ user ]]> u on u.id = d.employer_id
+	LEFT JOIN `user` u on u.id = d.employer_id
 	LEFT JOIN user_identity ui on ui.uid = d.employer_id
 	LEFT JOIN district_glossory dg ON dg.id = ui.province
 	LEFT JOIN district_glossory dgg ON dgg.id = ui.city
@@ -1108,8 +1105,8 @@
 		d.name,
 		d.keyword,
 		d.industry_category_a AS industryCategoryA,
-		fg.name AS industryCategoryB,
-		fgg.name AS industryCategoryC,
+		fg.name AS industryCategoryAS,
+		fgg.name AS industryCategoryBS,
 		d.budget_cost AS budgetCost,
 		d.problem_des AS problemDes,
 		dg.name AS province,
@@ -1119,7 +1116,7 @@
 		u.lvl as level
 	FROM
 		demand d
-	LEFT JOIN <![CDATA[ user ]]> u on u.id = d.employer_id
+	LEFT JOIN `user` u on u.id = d.employer_id
 	LEFT JOIN organization_identity oi on oi.uid = d.employer_id
 	LEFT JOIN district_glossory dg ON dg.id = oi.licence_province
 	LEFT JOIN district_glossory dgg ON dgg.id = oi.licence_city

+ 15 - 9
src/main/java/com/goafanti/common/mapper/DemandOrderMapper.xml

@@ -244,10 +244,11 @@
   		do.intention_money as intentionMoney, do.contract_money as contractMoney, do.commission,
   		do.service_money as serviceMoney, d.name, d.serial_number as demandSerialNumber,
   		d.deleted_sign as deletedSign, d.audit_status as auditStatus,
-  		do.uid, ui.username
+  		do.uid, ui.username, oi.unit_name as unitName
   	from demand_order do
   	left join demand d on d.id = do.demand_id
   	left join user_identity ui on ui.uid = do.uid
+  	left join organization_identity oi on oi.uid = do.uid
   	where do.deleted_sign = 0 
   	and   d.deleted_sign = 0 
   	and   d.data_category = 0
@@ -261,7 +262,8 @@
   		and d.uid = #{uid,jdbcType=VARCHAR}
   	</if>
   	<if test="username != null">
-  		and ui.username = #{username,jdbcType=VARCHAR}
+  		and (oi.unit_name = #{username,jdbcType=VARCHAR}
+  		or ui.username = #{username,jdbcType=VARCHAR})
   	</if>
   	order by do.serial_number desc
   	<if test="page_sql!=null">
@@ -275,6 +277,7 @@
   	from demand_order do
   	left join demand d on d.id = do.demand_id
   	left join user_identity ui on ui.uid = do.uid
+  	left join organization_identity oi on oi.uid = do.uid
   	where do.deleted_sign = 0 
   	and   d.deleted_sign = 0 
   	and   d.data_category = 0
@@ -288,7 +291,8 @@
   		and d.uid = #{uid,jdbcType=VARCHAR}
   	</if>
   	<if test="username != null">
-  		and ui.username = #{username,jdbcType=VARCHAR}
+  		and (oi.unit_name = #{username,jdbcType=VARCHAR}
+  		or ui.username = #{username,jdbcType=VARCHAR})
   	</if>
   </select>
   
@@ -300,10 +304,11 @@
   		do.intention_money as intentionMoney, do.contract_money as contractMoney, do.commission,
   		do.service_money as serviceMoney, d.name, d.serial_number as demandSerialNumber,
   		d.deleted_sign as deletedSign, d.audit_status as auditStatus,
-  		do.uid, oi.unit_name as unitName
+  		do.uid, oi.unit_name as unitName, ui.username
   	from demand_order do
   	left join demand d on d.id = do.demand_id
   	left join organization_identity oi on oi.uid = do.uid
+  	left join user_identity ui on ui.uid = do.uid
   	where do.deleted_sign = 0 
   	and   d.deleted_sign = 0 
   	and   d.data_category = 1
@@ -317,7 +322,8 @@
   		and d.uid = #{uid,jdbcType=VARCHAR}
   	</if>
   	<if test="unitName != null">
-  		and oi.unit_name = #{unitName,jdbcType=VARCHAR}
+  		and (oi.unit_name = #{unitName,jdbcType=VARCHAR}
+  		or ui.username = #{unitName,jdbcType=VARCHAR})
   	</if>
   	order by do.serial_number desc
   	<if test="page_sql!=null">
@@ -331,6 +337,7 @@
   	from demand_order do
   	left join demand d on d.id = do.demand_id
   	left join organization_identity oi on oi.uid = do.uid
+  	left join user_identity ui on ui.uid = do.uid
   	where do.deleted_sign = 0 
   	and   d.deleted_sign = 0 
   	and   d.data_category = 1
@@ -344,10 +351,9 @@
   		and d.uid = #{uid,jdbcType=VARCHAR}
   	</if>
     <if test="unitName != null">
-  		and oi.unit_name = #{unitName,jdbcType=VARCHAR}
+  		and (oi.unit_name = #{unitName,jdbcType=VARCHAR}
+  		or ui.username = #{unitName,jdbcType=VARCHAR})
   	</if>
   </select>
-  
-  
-  
+
 </mapper>

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

@@ -33,7 +33,7 @@
   <insert id="insert" parameterType="com.goafanti.common.model.Lecture" >
     insert into lecture (id, uid, lecture_time, 
       create_time, last_update_time, name, 
-      summary, deleted_sign, lecture_url, hot, dynamic, end_time)
+      summary, deleted_sign, lecture_url, hot, dynamic, end_time,lecturer)
     values (#{id,jdbcType=VARCHAR}, #{uid,jdbcType=VARCHAR}, #{lectureTime,jdbcType=TIMESTAMP}, 
       #{createTime,jdbcType=TIMESTAMP}, #{lastUpdateTime,jdbcType=TIMESTAMP}, #{name,jdbcType=VARCHAR}, 
       #{summary,jdbcType=VARCHAR}, #{deletedSign,jdbcType=INTEGER}, #{lectureUrl,jdbcType=VARCHAR},
@@ -79,7 +79,7 @@
         end_time,
       </if>
       <if test="lecturer != null" >
-        lecturer,
+        lecturer
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides="," >
@@ -120,7 +120,7 @@
         #{endTime,jdbcType=TIMESTAMP},
       </if>
       <if test="lecturer != null" >
-        #{lecturer,jdbcType=VARCHAR},
+        #{lecturer,jdbcType=VARCHAR}
       </if>
     </trim>
   </insert>
@@ -161,7 +161,7 @@
         end_time = #{endTime,jdbcType=TIMESTAMP},
       </if>
        <if test="lecturer != null" >
-        lecturer = #{lecturer,jdbcType=VARCHAR},
+        lecturer = #{lecturer,jdbcType=VARCHAR}
       </if>
     </set>
     where id = #{id,jdbcType=VARCHAR}

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

@@ -332,7 +332,7 @@
 			on u.id = o.uid  AND o.audit_status = 5  
 			LEFT JOIN org_human_resource h on h.uid = u.id  AND h.year = #{0} AND h.deleted_sign = 0
 			LEFT JOIN org_finance f on f.uid = u.id  AND f.year = #{0}  AND f.deleted_sign = 0
-			LEFT JOIN org_cognizance c on c.uid = u.id  AND c.year = #{0} AND c.deleted_sign = 0
+			LEFT JOIN org_cognizance c on c.uid = u.id  AND c.year <![CDATA[ <= ]]> #{0} AND c.year <![CDATA[ > ]]> (#{0} - 3) AND c.deleted_sign = 0
 			LEFT JOIN org_ratepay r on r.uid = u.id  AND r.year = #{0} AND r.deleted_sign = 0
 			LEFT JOIN
 			     (SELECT uid,(operating_income + non_operating_income - non_taxable_income) as totalRevenue

+ 17 - 12
src/main/java/com/goafanti/common/mapper/OrgCognizanceMapper.xml

@@ -409,18 +409,23 @@
   </select>
 	
   <select id="selectCognizanceResearchCostBoByUidAndYear"  resultType="com.goafanti.cognizance.bo.CognizanceResearchCostBo">
-		select m.uid, sum(m.cost1) as researchCost, sum(m.territory) as territory from(
-			select uid, (internal_labor_cost + internal_direct_cost + internal_depreciation_cost + internal_amortization_cost 
-			+ internal_design_cost + internal_equipment_cost + internal_other_cost +external_total_cost) as cost1, 
-			external_abroad_cost as territory
-			 from org_activity_cost 
-    where  (start_date >= (select  str_to_date(CONCAT(#{0}-3,'-01-01'), '%Y-%m-%d %H'))
-      and start_date <![CDATA[ < ]]> (select  str_to_date(CONCAT(#{0},'-01-01'), '%Y-%m-%d %H'))) 
-			or (end_date <![CDATA[ < ]]> (select  str_to_date(CONCAT(#{0},'-01-01'), '%Y-%m-%d %H'))   and 
-      end_date >= (select  str_to_date(CONCAT(#{0}-3,'-01-01'), '%Y-%m-%d %H')))
-      and deleted_sign = 0
-		) m where m.uid = #{1} GROUP BY m.uid
-
+  	SELECT 
+	    m.uid,
+	    SUM(m.cost1) AS researchCost,
+	    SUM(m.territory) AS territory
+	FROM
+	    (SELECT 
+	        uid,
+	            (internal_labor_cost + internal_direct_cost + internal_depreciation_cost + internal_amortization_cost + internal_design_cost + internal_equipment_cost + internal_other_cost + external_total_cost) AS cost1,
+	            external_abroad_cost AS territory
+	    FROM
+	        org_activity_cost
+	    WHERE
+	        year <![CDATA[ >= ]]> #{0}-3 and year <![CDATA[ < ]]> #{0}
+	            AND deleted_sign = 0) m
+	WHERE
+	    m.uid =  #{1}
+	GROUP BY m.uid
   </select>
 	
   <select id="selectCognizanceManageCostBoByUidAndYear"  resultType="com.goafanti.cognizance.bo.CognizanceManageCostBo">

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

@@ -1048,7 +1048,7 @@
 	
 	<select id="selectAuditorOrgIdentityDetailByUserId"  resultType="com.goafanti.user.bo.AuditorOrgIdentityDetailBo">
 		select  
-			 u.aid, u.mid,
+			 u.aid, u.mid, u.lvl,
 			 oi.id, oi.uid,  oi.aft_username as aftUsername,  oi.unit_name as unitName,  oi.identity_type as identityType,
 			 oi.first_contacts as firstContacts,  oi.first_mobile as firstMobile,  oi.second_contacts as secondContacts,
 			 oi.second_mobile as secondMobile,  oi.third_contacts as thirdContacts,  oi.third_mobile as thirdMobile,

+ 1 - 0
src/main/java/com/goafanti/common/mapper/UserIdentityMapper.xml

@@ -346,6 +346,7 @@
   	select 
   		u.aid, 
   		u.mid, 
+  		u.lvl,
   		ui.id, 
   		ui.uid, 
   		ui.username, 

+ 6 - 2
src/main/java/com/goafanti/common/mapper/UserMapper.xml

@@ -367,12 +367,14 @@
     	u.create_time as createTime, 
   	    u.number , 
   	    a.name as adminName, 
+  	    ma.name as managerName, 
   	    u.type,
   	    i.username, 
   	    i.audit_status as userAuditStatus,
   	    i.aft_username as aftUsername
     from user u  
     LEFT JOIN admin a on a.id = u.aid 
+    LEFT JOIN admin ma on ma.id = u.mid 
 	LEFT JOIN user_identity i on u.id = i.uid
     where u.type = 0
     <if test="aid != null">
@@ -447,12 +449,14 @@
     	u.create_time as createTime, 
   	    u.number , 
   	    a.name as adminName, 
+  	    ma.name as managerName, 
   	    u.type,
   	    i.unit_name as unitName, 
   	    i.audit_status as orgAuditStatus,
   	    i.aft_username as aftUsername
     from user u  
     LEFT JOIN admin a on a.id = u.aid 
+    LEFT JOIN admin ma on ma.id = u.mid 
 	LEFT JOIN organization_identity i on u.id = i.uid
     where u.type = 1
     <if test="aid != null">
@@ -759,7 +763,7 @@
 		info.personal_profile AS personalProfile,
 		u.lvl AS LEVEL,
 		ua.ability_label AS abilityLabel,
-		info.personal_profile AS personalProfile,
+		info.person_portrait_url AS personPortraitUrl,
 		info.life_photo_url AS lifePhotoUrl,
 		interest.id as interestId
 	FROM
@@ -783,7 +787,7 @@
 		u.lvl AS LEVEL,
 		ua.ability_label AS abilityLabel,
 		info.logo_url AS logoUrl,
-		info.company_introduction AS company_introduction,
+		info.company_introduction AS companyIntroduction,
 		info.publicity_picture_url AS publicityPictureUrl,
 		ot.search_area_category as field, 
 		interest.id as interestId

+ 124 - 130
src/main/java/com/goafanti/common/model/User.java

@@ -2,136 +2,133 @@ package com.goafanti.common.model;
 
 import java.util.Date;
 
-
+import com.alibaba.fastjson.annotation.JSONField;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 
+public class User extends BaseModel implements AftUser {
+	/**
+	 * 
+	 */
+	private static final long	serialVersionUID	= 1L;
 
+	private String				id;
 
-public class User extends BaseModel implements AftUser{
-    /**
-	 * 
+	/**
+	 * 用户注册手机号,作为登录依据
+	 */
+	private String				mobile;
+
+	/**
+	 * 密码,md5+salt
+	 */
+
+	private String				password;
+
+	/**
+	 * 用户昵称
+	 */
+	private String				nickname;
+
+	/**
+	 * 用户邮箱
+	 */
+	private String				email;
+
+	/**
+	 * 注册时间
+	 */
+	private Date				createTime;
+
+	/**
+	 * 用户编号
 	 */
-	private static final long serialVersionUID = 1L;
-
-	private String id;
-
-    /**
-    * 用户注册手机号,作为登录依据
-    */
-    private String mobile;
-
-    /**
-    * 密码,md5+salt
-    */
-    
-    private String password;
-
-    /**
-    * 用户昵称
-    */
-    private String nickname;
-
-    /**
-    * 用户邮箱
-    */
-    private String email;
-
-    /**
-    * 注册时间
-    */
-    private Date createTime;
-
-    /**
-    * 用户编号
-    */
-    private Long number;
-    
-    /**
-     * 用户等级
-     */
-    private Integer lvl;
-    
-    
-    /**
-    * 个人账号还是组织账号
-默认0为个人账号,1为组织账号
-    */
-    private Integer type;
-    
-    /**
-     * 管理员ID
-     */
-    private String aid;
-    
-    /**
-     * 客户经理ID
-     */
-    private String mid;
-    
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    public String getMobile() {
-        return mobile;
-    }
-
-    public void setMobile(String mobile) {
-        this.mobile = mobile;
-    }
-    @JsonIgnore
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public String getNickname() {
-        return nickname;
-    }
-
-    public void setNickname(String nickname) {
-        this.nickname = nickname;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public Long getNumber() {
-        return number;
-    }
-
-    public void setNumber(Long number) {
-        this.number = number;
-    }
-
-    public Integer getType() {
-        return type;
-    }
-
-    public void setType(Integer type) {
-        this.type = type;
-    }
+	private Long				number;
+
+	/**
+	 * 用户等级
+	 */
+	private Integer				lvl;
+
+	/**
+	 * 个人账号还是组织账号 默认0为个人账号,1为组织账号
+	 */
+	private Integer				type;
+
+	/**
+	 * 管理员ID
+	 */
+	private String				aid;
+
+	/**
+	 * 客户经理ID
+	 */
+	private String				mid;
+
+	public String getId() {
+		return id;
+	}
+
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	public String getMobile() {
+		return mobile;
+	}
+
+	public void setMobile(String mobile) {
+		this.mobile = mobile;
+	}
+
+	@JsonIgnore
+	@JSONField(serialize = false, deserialize = false)
+	public String getPassword() {
+		return password;
+	}
+
+	public void setPassword(String password) {
+		this.password = password;
+	}
+
+	public String getNickname() {
+		return nickname;
+	}
+
+	public void setNickname(String nickname) {
+		this.nickname = nickname;
+	}
+
+	public String getEmail() {
+		return email;
+	}
+
+	public void setEmail(String email) {
+		this.email = email;
+	}
+
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+
+	public Long getNumber() {
+		return number;
+	}
+
+	public void setNumber(Long number) {
+		this.number = number;
+	}
+
+	public Integer getType() {
+		return type;
+	}
+
+	public void setType(Integer type) {
+		this.type = type;
+	}
 
 	public Integer getLvl() {
 		return lvl;
@@ -140,7 +137,7 @@ public class User extends BaseModel implements AftUser{
 	public void setLvl(Integer lvl) {
 		this.lvl = lvl;
 	}
-    
+
 	@Override
 	public String getAid() {
 		return aid;
@@ -149,7 +146,7 @@ public class User extends BaseModel implements AftUser{
 	public void setAid(String aid) {
 		this.aid = aid;
 	}
-	
+
 	public String getMid() {
 		return mid;
 	}
@@ -158,7 +155,4 @@ public class User extends BaseModel implements AftUser{
 		this.mid = mid;
 	}
 
-    
-    
-    
 }

+ 2 - 2
src/main/java/com/goafanti/contract/service/impl/ContractServiceImpl.java

@@ -98,7 +98,7 @@ public class ContractServiceImpl extends BaseMybatisDao<ContractMapper> implemen
 		Date lEnd = null;
 		if (!StringUtils.isBlank(completeStartDate)) {
 			try {
-				lStart = DateUtils.parseDate(startDateFormattedDate, AFTConstants.YYYYMMDD);
+				lStart = DateUtils.parseDate(completeStartDate, AFTConstants.YYYYMMDD);
 			} catch (ParseException e) {
 			}
 		}
@@ -109,7 +109,7 @@ public class ContractServiceImpl extends BaseMybatisDao<ContractMapper> implemen
 
 		if (!StringUtils.isBlank(completeEndDate)) {
 			try {
-				lEnd = DateUtils.addDays(DateUtils.parseDate(endDateFormattedDate, AFTConstants.YYYYMMDD), 1);
+				lEnd = DateUtils.addDays(DateUtils.parseDate(completeEndDate, AFTConstants.YYYYMMDD), 1);
 			} catch (ParseException e) {
 			}
 		}

+ 10 - 0
src/main/java/com/goafanti/demand/bo/OrgDemandOrderListBo.java

@@ -4,6 +4,8 @@ public class OrgDemandOrderListBo extends DemandOrderListBo {
 	private String uid;
 	
 	private String unitName;
+	
+	private String username;
 
 	public String getUid() {
 		return uid;
@@ -20,6 +22,14 @@ public class OrgDemandOrderListBo extends DemandOrderListBo {
 	public void setUnitName(String unitName) {
 		this.unitName = unitName;
 	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
 	
 	
 

+ 10 - 0
src/main/java/com/goafanti/demand/bo/UserDemandOrderListBo.java

@@ -4,6 +4,8 @@ public class UserDemandOrderListBo extends DemandOrderListBo {
 	private String username;
 	
 	private String uid;
+	
+	private String unitName;
 
 	public String getUsername() {
 		return username;
@@ -20,6 +22,14 @@ public class UserDemandOrderListBo extends DemandOrderListBo {
 	public void setUid(String uid) {
 		this.uid = uid;
 	}
+
+	public String getUnitName() {
+		return unitName;
+	}
+
+	public void setUnitName(String unitName) {
+		this.unitName = unitName;
+	}
 	
 	
 

+ 0 - 6
src/main/java/com/goafanti/lecture/service/impl/LectureServiceImpl.java

@@ -171,10 +171,4 @@ public class LectureServiceImpl extends BaseMybatisDao<LectureMapper> implements
 		return lectureMapper.listDynamic();
 	}
 
-	
-
-	
-
-	
-
 }

+ 10 - 1
src/main/java/com/goafanti/news/controller/NewsController.java

@@ -54,10 +54,19 @@ public class NewsController extends BaseController {
 	 * 新闻详情
 	 */
 	@RequestMapping(value = "/portal/news/newsDetails", method = RequestMethod.GET)
-	public ModelAndView portalNewsNewsDetails(HttpServletRequest request, ModelAndView modelview, String noCache) {
+	public ModelAndView portalNewsNewsDetails(HttpServletRequest request, ModelAndView modelview) {
 		modelview.setViewName("/portal/news/newsDetails");
 		return modelview;
 	}
+	
+	/**
+	 * 新闻详情APP
+	 */
+	@RequestMapping(value = "/portal/news/newsDetailApp", method = RequestMethod.GET)
+	public ModelAndView portalNewsNewsDetailApp(HttpServletRequest request, ModelAndView modelview) {
+		modelview.setViewName("/portal/news/newsDetailApp");
+		return modelview;
+	}
 
 	/**
 	 * 新闻详情列表

+ 7 - 8
src/main/java/com/goafanti/patent/service/impl/PatentInfoServiceImpl.java

@@ -198,7 +198,7 @@ public class PatentInfoServiceImpl extends BaseMybatisDao<PatentInfoMapper> impl
 			params.put("office", office);
 		}
 
-		if (locationProvince != null ) {
+		if (locationProvince != null) {
 			params.put("locationProvince", locationProvince);
 		}
 
@@ -247,7 +247,7 @@ public class PatentInfoServiceImpl extends BaseMybatisDao<PatentInfoMapper> impl
 			params.put("principal", TokenManager.getAdminId());
 		}
 
-		if (locationProvince != null ) {
+		if (locationProvince != null) {
 			params.put("locationProvince", locationProvince);
 		}
 
@@ -255,7 +255,7 @@ public class PatentInfoServiceImpl extends BaseMybatisDao<PatentInfoMapper> impl
 			pageNo = 1;
 		}
 
-		if (pageSize == null || pageSize < 0 ) {
+		if (pageSize == null || pageSize < 0) {
 			pageSize = 10;
 		}
 		return (Pagination<PatentPendingBo>) findPage("findManagePendingPaymentListByPage",
@@ -289,7 +289,7 @@ public class PatentInfoServiceImpl extends BaseMybatisDao<PatentInfoMapper> impl
 			params.put("office", office);
 		}
 
-		if (locationProvince != null ) {
+		if (locationProvince != null) {
 			params.put("locationProvince", locationProvince);
 		}
 
@@ -435,6 +435,8 @@ public class PatentInfoServiceImpl extends BaseMybatisDao<PatentInfoMapper> impl
 						break;
 					}
 					o.setCatagory(i);
+					o.setAuthorizationDate(p.getAuthorizedDate());
+					o.setPropertyRightUrl(p.getPatentCertificateUrl());
 					orgIntellectualPropertyMapper.updateByPrimaryKeySelective(o);
 				}
 			}
@@ -610,7 +612,7 @@ public class PatentInfoServiceImpl extends BaseMybatisDao<PatentInfoMapper> impl
 		patentCostMapper.batchInsert(pc);
 		patentLogMapper.batchInsert(pl);
 	}
-	
+
 	@Override
 	public List<PatentAnnualFeeTaskBo> findAnnualFeeTaskBo() {
 		return patentInfoMapper.findAnnualFeeTaskBo();
@@ -640,7 +642,4 @@ public class PatentInfoServiceImpl extends BaseMybatisDao<PatentInfoMapper> impl
 		noticeMapper.insert(n);
 	}
 
-	
-
-
 }

+ 8 - 8
src/main/java/com/goafanti/portal/controller/PortalOrderApiController.java

@@ -133,7 +133,7 @@ public class PortalOrderApiController extends CertifyApiController {
 	@RequestMapping(value = "/orderAchievement", method = RequestMethod.POST)
 	public Result orderAchievement(@Valid InputAchievementOrder order, BindingResult bindingResult) {
 		Result res = new Result();
-		if(TokenManager.getToken() instanceof Admin){
+		if (TokenManager.getUserToken() == null) {
 			res.getError().add(buildError(ErrorConstants.NON_LOGIN));
 			return res;
 		}
@@ -159,14 +159,14 @@ public class PortalOrderApiController extends CertifyApiController {
 		}
 
 		Achievement a = achievementService.selectByPrimaryKey(achievementId);
-	
+
 		if (null == a || !AchievementAuditStatus.AUDITED.getCode().equals(a.getAuditStatus())
 				|| !AchievementReleaseStatus.RELEASED.getCode().equals(a.getReleaseStatus())
 				|| !DeleteStatus.UNDELETE.getCode().equals(a.getDeletedSign())) {
 			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技成果ID"));
 			return res;
 		}
-		if (TokenManager.getUserId().equals(a.getOwnerId())){
+		if (TokenManager.getUserId().equals(a.getOwnerId())) {
 			res.getError().add(buildError("", "无法购买本人发布科技成果!"));
 			return res;
 		}
@@ -260,7 +260,7 @@ public class PortalOrderApiController extends CertifyApiController {
 	@RequestMapping(value = "/orderDemand", method = RequestMethod.POST)
 	public Result orderDemand(@Valid InputDemandOrder inputDemandOrder, BindingResult bindingResult) {
 		Result res = new Result();
-		if(TokenManager.getToken() instanceof Admin){
+		if (TokenManager.getUserToken() == null) {
 			res.getError().add(buildError(ErrorConstants.NON_LOGIN));
 			return res;
 		}
@@ -276,9 +276,9 @@ public class PortalOrderApiController extends CertifyApiController {
 		}
 		List<DemandOrder> demandOrder = demandOrderService.selectDemandOrderByUidAndDemandId(TokenManager.getUserId(),
 				demandId);
-		if (!demandOrder.isEmpty()){
-			for (DemandOrder os : demandOrder){
-				if (!DemandOrderStatus.SHUTDOWN.getCode().equals(os.getStatus())){
+		if (!demandOrder.isEmpty()) {
+			for (DemandOrder os : demandOrder) {
+				if (!DemandOrderStatus.SHUTDOWN.getCode().equals(os.getStatus())) {
 					res.getError().add(buildError("", "当前科技需求已接单!"));
 					return res;
 				}
@@ -291,7 +291,7 @@ public class PortalOrderApiController extends CertifyApiController {
 			res.getError().add(buildError(ErrorConstants.PARAM_ERROR, "", "科技需求ID"));
 			return res;
 		}
-		if (TokenManager.getUserId().equals(d.getEmployerId())){
+		if (TokenManager.getUserId().equals(d.getEmployerId())) {
 			res.getError().add(buildError("", "无法对本人发布科技需求接单!"));
 			return res;
 		}

+ 10 - 0
src/main/java/com/goafanti/user/bo/AuditorOrgIdentityDetailBo.java

@@ -5,6 +5,8 @@ public class AuditorOrgIdentityDetailBo extends OrgIdentityDetailBo {
 
 	private String	mid;
 	
+	private Integer lvl;
+	
 	private String ratepayId;
 
 	public String getAid() {
@@ -30,6 +32,14 @@ public class AuditorOrgIdentityDetailBo extends OrgIdentityDetailBo {
 	public void setRatepayId(String ratepayId) {
 		this.ratepayId = ratepayId;
 	}
+
+	public Integer getLvl() {
+		return lvl;
+	}
+
+	public void setLvl(Integer lvl) {
+		this.lvl = lvl;
+	}
 	
 	
 

+ 10 - 0
src/main/java/com/goafanti/user/bo/AuditorUserIdentityDetailBo.java

@@ -7,6 +7,8 @@ public class AuditorUserIdentityDetailBo extends UserIdentity {
 
 	private String	mid;
 
+	private Integer	lvl;
+
 	public String getAid() {
 		return aid;
 	}
@@ -23,4 +25,12 @@ public class AuditorUserIdentityDetailBo extends UserIdentity {
 		this.mid = mid;
 	}
 
+	public Integer getLvl() {
+		return lvl;
+	}
+
+	public void setLvl(Integer lvl) {
+		this.lvl = lvl;
+	}
+
 }

+ 26 - 22
src/main/java/com/goafanti/user/controller/UserLoginController.java

@@ -4,6 +4,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.web.util.SavedRequest;
 import org.apache.shiro.web.util.WebUtils;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -13,6 +14,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.view.RedirectView;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.goafanti.common.bo.Result;
 import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.controller.BaseController;
@@ -23,13 +26,11 @@ import com.goafanti.common.utils.VerifyCodeUtils;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.user.service.UserService;
 
-
-
 @Controller
 public class UserLoginController extends BaseController {
 	@Resource
 	private UserService userService;
-	
+
 	@RequestMapping(value = "/login", method = RequestMethod.GET)
 	@ResponseBody
 	public Result login(HttpServletRequest request, Model model) {
@@ -37,7 +38,6 @@ public class UserLoginController extends BaseController {
 		TokenManager.logout();
 		return res;
 	}
-	
 
 	@RequestMapping(value = "/login", method = RequestMethod.POST)
 	public ModelAndView doLogin(User user, Boolean rememberMe, HttpServletRequest request, ModelAndView modelview) {
@@ -48,9 +48,10 @@ public class UserLoginController extends BaseController {
 		modelview.setView(rv);
 		return modelview;
 	}
-    
+
 	/**
 	 * 用户登录
+	 * 
 	 * @param user
 	 * @param remember
 	 * @param request
@@ -58,15 +59,21 @@ public class UserLoginController extends BaseController {
 	 */
 	@RequestMapping(value = "/signin", method = RequestMethod.POST)
 	@ResponseBody
-	public Result signin(User user,Boolean remember, HttpServletRequest request) {
+	public Result signin(User user, Boolean remember, HttpServletRequest request) {
 		Result res = new Result();
-		TokenManager.login(user, remember);
-		res.setData(WebUtils.getAndClearSavedRequest(request));
+		JSONObject jo = (JSONObject) JSON.toJSON(TokenManager.login(user, remember));
+		SavedRequest sr = WebUtils.getAndClearSavedRequest(request);
+		if (sr != null) {
+			jo.put("requestURI", sr.getRequestURI());
+			jo.put("queryString", sr.getQueryString());
+		}
+		res.setData(jo);
 		return res;
 	}
-	
+
 	/**
 	 * 管理端登录
+	 * 
 	 * @param user
 	 * @param remember
 	 * @param request
@@ -74,16 +81,15 @@ public class UserLoginController extends BaseController {
 	 */
 	@RequestMapping(value = "/managesignin", method = RequestMethod.POST)
 	@ResponseBody
-	public Result managesignin(Admin admin,Boolean remember, HttpServletRequest request) {
+	public Result managesignin(Admin admin, Boolean remember, HttpServletRequest request) {
 		Result res = new Result();
 		res.setData(TokenManager.manageLogin(admin, remember));
 		return res;
 	}
-	
-	
-	
+
 	/**
 	 * 忘记密码 使用手机号+手机验证码登录
+	 * 
 	 * @param mobile
 	 * @param mobileCode
 	 * @param type
@@ -91,22 +97,20 @@ public class UserLoginController extends BaseController {
 	 */
 	@RequestMapping(value = "/mobileSigin", method = RequestMethod.POST)
 	@ResponseBody
-	public Result mobileSignIn(User user,String mobileCode){
+	public Result mobileSignIn(User user, String mobileCode) {
 		Result res = new Result();
-		if(StringUtils.isBlank(user.getMobile())){
-			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"必须指定","手机号"));
+		if (StringUtils.isBlank(user.getMobile())) {
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定", "手机号"));
 			return res;
 		}
-		if(TimeUtils.checkOverTime("register")){
-			res.getError().add(buildError(ErrorConstants.MCODE_OVERTIME_ERROR,"手机验证码超时失效"));
+		if (TimeUtils.checkOverTime("register")) {
+			res.getError().add(buildError(ErrorConstants.MCODE_OVERTIME_ERROR, "手机验证码超时失效"));
 			return res;
 		}
-		if(!TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE).equals(mobileCode)){
-			res.getError().add(buildError(ErrorConstants.MCODE_ERROR,"手机验证码错误"));
+		if (!TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE).equals(mobileCode)) {
+			res.getError().add(buildError(ErrorConstants.MCODE_ERROR, "手机验证码错误"));
 			return res;
 		}
 		return res;
 	}
-	
-
 }

+ 21 - 21
src/main/resources/props/config_dev.properties

@@ -1,41 +1,41 @@
 #Driver
 jdbc.driverClassName=com.mysql.jdbc.Driver
-#\u6570\u636e\u5e93\u94fe\u63a5\uff0c
+#\u6570\u636E\u5E93\u94FE\u63A5\uFF0C
 jdbc.url=jdbc:mysql://123.57.207.214:3306/pro_aft_test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
-#\u5e10\u53f7
+#\u5E10\u53F7
 jdbc.username=xiaolong
-#\u5bc6\u7801
+#\u5BC6\u7801
 jdbc.password=!qaz2wsx
-#\u68c0\u6d4b\u6570\u636e\u5e93\u94fe\u63a5\u662f\u5426\u6709\u6548\uff0c\u5fc5\u987b\u914d\u7f6e
+#\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
+#\u521D\u59CB\u8FDE\u63A5\u6570
 jdbc.initialSize=3
-#\u6700\u5927\u8fde\u63a5\u6c60\u6570\u91cf
+#\u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
 jdbc.maxActive=20
-#\u53bb\u6389\uff0c\u914d\u7f6e\u6587\u4ef6\u5bf9\u5e94\u53bb\u6389
+#\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
+#\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
+#\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
+#\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
+#\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
+#\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
+#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
+#\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
+#\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
+#\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
+#\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
+#\u7EDF\u8BA1\u76D1\u63A7
 jdbc.filters=stat
 
 jedis.host=localhost
@@ -51,7 +51,7 @@ session.validate.timespan=18000000
 
 app.name=AFT
 
-static.host=//afts.hnzhiming.com/1.0.38
+static.host=//afts.hnzhiming.com/1.0.39
 
 upload.path=/data/wwwroot/aft/upload
 upload.private.path=/data/upload
@@ -67,7 +67,7 @@ template.cacheable=false
 
 mobileCodeTemplate=SMS_37845022
 
-portal.host=//afts.hnzhiming.com/portal/1.0.6
+portal.host=//afts.hnzhiming.com/portal/1.0.8
 
 patentTemplate=SMS_72005286
 

+ 4 - 81
src/main/resources/props/config_local.properties

@@ -53,7 +53,7 @@ session.validate.timespan=18000000
 
 app.name=AFT
 
-static.host=//afts.hnzhiming.com/1.0.37
+static.host=//aftts.hnzhiming.com/1.0.35
 
 upload.path=/Users/xiaolong/Sites/upload
 upload.private.path=/Users/xiaolong/Sites/doc
@@ -61,7 +61,7 @@ upload.private.path=/Users/xiaolong/Sites/doc
 accessKey=LTAIqTgQLLwz252Z
 accessSecret=ICGuiUnqzaar7urw4zecVcJrJ1MHg9
 
-avatar.host=//afts.hnzhiming.com
+avatar.host=//aftts.hnzhiming.com
 
 aesSecretKey=aft1234567890123
 
@@ -69,85 +69,8 @@ template.cacheable=false
 
 mobileCodeTemplate=SMS_37845022
 
-portal.host=//afts.hnzhiming.com/portal/1.0.5
+portal.host=//aftts.hnzhiming.com/portal/1.0.7
 
 patentTemplate=SMS_72005286
 
-avatar.upload.host=//afts.hnzhiming.com/upload
-=======
-#Driver
-jdbc.driverClassName=com.mysql.jdbc.Driver
-#\u6570\u636e\u5e93\u94fe\u63a5\uff0c
-jdbc.url=jdbc:mysql://127.0.0.1:3306/aft_dev?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=123456
-
-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.38
-
-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.6
-
-patentTemplate=SMS_72005286
-
-avatar.upload.host=//afts.hnzhiming.com/upload
+avatar.upload.host=//aftts.hnzhiming.com/upload

+ 22 - 22
src/main/resources/props/config_test.properties

@@ -1,41 +1,41 @@
 #Driver
 jdbc.driverClassName=com.mysql.jdbc.Driver
-#\u6570\u636e\u5e93\u94fe\u63a5\uff0c
+#\u6570\u636E\u5E93\u94FE\u63A5\uFF0C
 jdbc.url=jdbc:mysql://localhost:3306/aft_test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
-#\u5e10\u53f7
+#\u5E10\u53F7
 jdbc.username=xiaolong
-#\u5bc6\u7801
+#\u5BC6\u7801
 jdbc.password=Afanti@2017!
-#\u68c0\u6d4b\u6570\u636e\u5e93\u94fe\u63a5\u662f\u5426\u6709\u6548\uff0c\u5fc5\u987b\u914d\u7f6e
+#\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
+#\u521D\u59CB\u8FDE\u63A5\u6570
 jdbc.initialSize=3
-#\u6700\u5927\u8fde\u63a5\u6c60\u6570\u91cf
+#\u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
 jdbc.maxActive=20
-#\u53bb\u6389\uff0c\u914d\u7f6e\u6587\u4ef6\u5bf9\u5e94\u53bb\u6389
+#\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
+#\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
+#\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
+#\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
+#\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
+#\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
+#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
+#\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
+#\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
+#\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
+#\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
+#\u7EDF\u8BA1\u76D1\u63A7
 jdbc.filters=stat
 
 logging.level.com.goafanti=INFO
@@ -52,8 +52,8 @@ session.timeout=12000000
 session.validate.timespan=18000000
 
 app.name=AFT
-
-static.host=//aftts.hnzhiming.com/1.0.38
+
+static.host=//aftts.hnzhiming.com/1.0.39
 
 upload.path=/data/aft/public/upload
 upload.private.path=/data/aft/private/upload
@@ -69,7 +69,7 @@ template.cacheable=true
 
 mobileCodeTemplate=SMS_37845022
 
-portal.host=//aftts.hnzhiming.com/portal/1.0.6
+portal.host=//aftts.hnzhiming.com/portal/1.0.8
 
 patentTemplate=SMS_72005286
 

+ 54 - 52
src/main/resources/props/error.properties

@@ -1,92 +1,94 @@
-org.apache.shiro.authc.UnknownAccountException=\u8d26\u53f7\u6216\u5bc6\u7801\u4e0d\u5339\u914d\u3002
-org.apache.shiro.authc.IncorrectCredentialsException=\u8d26\u53f7\u6216\u5bc6\u7801\u4e0d\u5339\u914d\u3002
-org.apache.shiro.authc.LockedAccountException=\u8be5\u8d26\u53f7\u5df2\u51bb\u7ed3\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u3002
-org.apache.shiro.authc.DisabledAccountException=\u8be5\u8d26\u53f7\u5df2\u51bb\u7ed3\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u3002
-org.apache.shiro.authc.ExcessiveAttemptsException=\u5c1d\u8bd5\u6b21\u6570\u8fc7\u591a\uff0c\u8d26\u53f7\u6682\u65f6\u88ab\u9501\u5b9a\uff0c\u8bf7\u7a0d\u540e\u518d\u8bd5\u3002
-org.apache.shiro.session.ExpiredSessionException=\u767b\u5f55\u4fe1\u606f\u5df2\u8fc7\u671f\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55\u3002
-org.springframework.dao.DataIntegrityViolationException=\u670d\u52a1\u5668\u6253\u4e86\u4e2a\u76f9\u513f\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u6216\u7a0d\u540e\u518d\u8bd5\u3002
-org.springframework.jdbc.BadSqlGrammarException=\u6570\u636e\u5f02\u5e38\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458\u6216\u7a0d\u540e\u518d\u8bd5\u3002
-java.text.ParseException=\u53c2\u6570\u683c\u5f0f\u9519\u8bef\uff0c\u8bf7\u6838\u5bf9\u8f93\u5165\u6570\u636e\u540e\u518d\u8bd5\u3002
-java.lang.IllegalArgumentException=\u53c2\u6570\u683c\u5f0f\u9519\u8bef\uff0c\u8bf7\u6838\u5bf9\u8f93\u5165\u6570\u636e\u540e\u518d\u8bd5\u3002
-com.alibaba.fastjson.JSONException=\u53c2\u6570\u683c\u5f0f\u9519\u8bef\uff0c\u8bf7\u6838\u5bf9\u8f93\u5165\u6570\u636e\u540e\u518d\u8bd5\u3002
+org.apache.shiro.authc.UnknownAccountException=\u8D26\u53F7\u6216\u5BC6\u7801\u4E0D\u5339\u914D\u3002
+org.apache.shiro.authc.IncorrectCredentialsException=\u8D26\u53F7\u6216\u5BC6\u7801\u4E0D\u5339\u914D\u3002
+org.apache.shiro.authc.LockedAccountException=\u8BE5\u8D26\u53F7\u5DF2\u51BB\u7ED3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u3002
+org.apache.shiro.authc.DisabledAccountException=\u8BE5\u8D26\u53F7\u5DF2\u51BB\u7ED3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u3002
+org.apache.shiro.authc.ExcessiveAttemptsException=\u5C1D\u8BD5\u6B21\u6570\u8FC7\u591A\uFF0C\u8D26\u53F7\u6682\u65F6\u88AB\u9501\u5B9A\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002
+org.apache.shiro.session.ExpiredSessionException=\u767B\u5F55\u4FE1\u606F\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55\u3002
+org.springframework.dao.DataIntegrityViolationException=\u670D\u52A1\u5668\u6253\u4E86\u4E2A\u76F9\u513F\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6216\u7A0D\u540E\u518D\u8BD5\u3002
+org.springframework.jdbc.BadSqlGrammarException=\u6570\u636E\u5F02\u5E38\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6216\u7A0D\u540E\u518D\u8BD5\u3002
+java.text.ParseException=\u53C2\u6570\u683C\u5F0F\u9519\u8BEF\uFF0C\u8BF7\u6838\u5BF9\u8F93\u5165\u6570\u636E\u540E\u518D\u8BD5\u3002
+java.lang.IllegalArgumentException=\u53C2\u6570\u683C\u5F0F\u9519\u8BEF\uFF0C\u8BF7\u6838\u5BF9\u8F93\u5165\u6570\u636E\u540E\u518D\u8BD5\u3002
+com.alibaba.fastjson.JSONException=\u53C2\u6570\u683C\u5F0F\u9519\u8BEF\uFF0C\u8BF7\u6838\u5BF9\u8F93\u5165\u6570\u636E\u540E\u518D\u8BD5\u3002
 
 
-NON_LOGIN=\u7528\u6237\u672a\u767b\u5f55\u3002
+NON_LOGIN=\u7528\u6237\u672A\u767B\u5F55\u3002
 
-VCODE_ERROR=\u56fe\u5f62\u9a8c\u8bc1\u7801\u8f93\u5165\u9519\u8bef\uff01
+VCODE_ERROR=\u56FE\u5F62\u9A8C\u8BC1\u7801\u8F93\u5165\u9519\u8BEF\uFF01
 
-NO_AUTH_ERROR=\u672a\u6388\u6743\u6216\u6388\u6743\u8fc7\u671f\u3002
+NO_AUTH_ERROR=\u672A\u6388\u6743\u6216\u6388\u6743\u8FC7\u671F\u3002
 
-PARAM_ERROR={0}\u53c2\u6570\u9519\u8bef
+NO_CERTIFY=\u8BA4\u8BC1\u7528\u6237\u624D\u80FD\u4F7F\u7528\u8BE5\u529F\u80FD
 
-PARAM_INTEGER_ERROR={0}\u53c2\u6570\u5fc5\u987b\u4e3a\u6570\u5b57\u3002
+PARAM_ERROR={0}\u53C2\u6570\u9519\u8BEF
 
-PARAM_EMPTY_ERROR={0}\u5fc5\u987b\u6307\u5b9a\u3002
+PARAM_INTEGER_ERROR={0}\u53C2\u6570\u5FC5\u987B\u4E3A\u6570\u5B57\u3002
 
-PARAM_SIZE_ERROR={0}\u53c2\u6570\u957f\u5ea6\u4e0d\u6b63\u786e\uff0c\u5fc5\u987b\u5728{min}\u548c{max}\u4e4b\u95f4\u3002
+PARAM_EMPTY_ERROR={0}\u5FC5\u987B\u6307\u5B9A\u3002
 
-PARAM_PATTERN_ERROR={0}\u53c2\u6570\u683c\u5f0f\u987b\u6b63\u786e\u6307\u5b9a{1}\u3002
+PARAM_SIZE_ERROR={0}\u53C2\u6570\u957F\u5EA6\u4E0D\u6B63\u786E\uFF0C\u5FC5\u987B\u5728{min}\u548C{max}\u4E4B\u95F4\u3002
 
-EMAIL_SIZE_ERROR=\u90ae\u7bb1\u5730\u5740\u957f\u5ea6\u9519\u8bef\uff01
+PARAM_PATTERN_ERROR={0}\u53C2\u6570\u683C\u5F0F\u987B\u6B63\u786E\u6307\u5B9A{1}\u3002
 
-EMAIL_PATTERN_ERROR=\u90ae\u7bb1\u5730\u5740\u683c\u5f0f\u9519\u8bef\uff01
+EMAIL_SIZE_ERROR=\u90AE\u7BB1\u5730\u5740\u957F\u5EA6\u9519\u8BEF\uFF01
 
-MOBILE_SIZE_ERROR=\u624b\u673a\u53f7\u957f\u5ea6\u9519\u8bef\uff01
+EMAIL_PATTERN_ERROR=\u90AE\u7BB1\u5730\u5740\u683C\u5F0F\u9519\u8BEF\uFF01
 
-MOBILE_PATTERN_ERROR=\u624b\u673a\u53f7\u683c\u5f0f\u9519\u8bef\uff01
+MOBILE_SIZE_ERROR=\u624B\u673A\u53F7\u957F\u5EA6\u9519\u8BEF\uFF01
 
-DUNPLICATE_KAY_ERROR={0}\u5df2\u88ab\u4ed6\u4eba\u6ce8\u518c\uff01
+MOBILE_PATTERN_ERROR=\u624B\u673A\u53F7\u683C\u5F0F\u9519\u8BEF\uFF01
 
-DATA_EMPTY_ERROR=\u5f53\u524d{0}\u6ca1\u6709\u6570\u636e\u3002
+DUNPLICATE_KAY_ERROR={0}\u5DF2\u88AB\u4ED6\u4EBA\u6CE8\u518C\uFF01
 
-PWD_NOT_MATCH_ERROR=\u539f\u5bc6\u7801\u8f93\u5165\u4e0d\u5339\u914d\u3002
+DATA_EMPTY_ERROR=\u5F53\u524D{0}\u6CA1\u6709\u6570\u636E\u3002
 
-MCODE_ERROR=\u624b\u673a\u9a8c\u8bc1\u7801\u9519\u8bef\uff01
+PWD_NOT_MATCH_ERROR=\u539F\u5BC6\u7801\u8F93\u5165\u4E0D\u5339\u914D\u3002
 
-NON_CERTIFIED=\u672a\u901a\u8fc7\u5b9e\u540d\u8ba4\u8bc1\uff0c\u65e0\u6cd5\u64cd\u4f5c\uff01
+MCODE_ERROR=\u624B\u673A\u9A8C\u8BC1\u7801\u9519\u8BEF\uFF01
 
-FILE_NON_EXISTENT=\u6587\u4ef6\u4e0d\u5b58\u5728\uff01
+NON_CERTIFIED=\u672A\u901A\u8FC7\u5B9E\u540D\u8BA4\u8BC1\uFF0C\u65E0\u6CD5\u64CD\u4F5C\uFF01
 
-RECORD_CALLBACK=\u5f53\u524d\u8bb0\u5f55\u5df2\u9000\u5355\uff0c\u65e0\u6cd5\u4fee\u6539\uff01
+FILE_NON_EXISTENT=\u6587\u4EF6\u4E0D\u5B58\u5728\uFF01
 
-RECORD_SETTLEMENT=\u5f53\u524d\u8bb0\u5f55\u5df2\u7ed3\u6b3e\uff0c\u65e0\u6cd5\u4fee\u6539\uff01
+RECORD_CALLBACK=\u5F53\u524D\u8BB0\u5F55\u5DF2\u9000\u5355\uFF0C\u65E0\u6CD5\u4FEE\u6539\uFF01
 
-RECORD_REJECT=\u5f53\u524d\u7533\u8bf7\u672a\u901a\u8fc7\uff0c\u65e0\u6cd5\u4fee\u6539\uff0c\u8bf7\u91cd\u65b0\u7533\u8bf7\uff01
+RECORD_SETTLEMENT=\u5F53\u524D\u8BB0\u5F55\u5DF2\u7ED3\u6B3E\uFF0C\u65E0\u6CD5\u4FEE\u6539\uFF01
 
-CONTRACT_PATENT_CREATED=\u5f53\u524d\u5408\u540c\u4e13\u5229\u7533\u8bf7\u5df2\u521b\u5efa,\u65e0\u6cd5\u91cd\u590d\u521b\u5efa\uff01
+RECORD_REJECT=\u5F53\u524D\u7533\u8BF7\u672A\u901A\u8FC7\uFF0C\u65E0\u6CD5\u4FEE\u6539\uFF0C\u8BF7\u91CD\u65B0\u7533\u8BF7\uFF01
 
-CONTRACT_COPYRIGHT_CREATED=\u5f53\u524d\u5408\u540c\u8f6f\u8457\u7533\u8bf7\u5df2\u521b\u5efa,\u65e0\u6cd5\u91cd\u590d\u521b\u5efa\uff01
+CONTRACT_PATENT_CREATED=\u5F53\u524D\u5408\u540C\u4E13\u5229\u7533\u8BF7\u5DF2\u521B\u5EFA,\u65E0\u6CD5\u91CD\u590D\u521B\u5EFA\uFF01
 
-CONTRACT_TECHPROJECT_CREATED=\u5f53\u524d\u5408\u540c\u79d1\u6280\u9879\u76ee\u7533\u8bf7\u5df2\u521b\u5efa,\u65e0\u6cd5\u91cd\u590d\u521b\u5efa\uff01
+CONTRACT_COPYRIGHT_CREATED=\u5F53\u524D\u5408\u540C\u8F6F\u8457\u7533\u8BF7\u5DF2\u521B\u5EFA,\u65E0\u6CD5\u91CD\u590D\u521B\u5EFA\uFF01
 
-CONTRACT_COGNIZANCE_CREATED=\u5f53\u524d\u5408\u540c\u9ad8\u4f01\u8ba4\u5b9a\u7533\u8bf7\u5df2\u521b\u5efa,\u65e0\u6cd5\u91cd\u590d\u521b\u5efa\uff01
+CONTRACT_TECHPROJECT_CREATED=\u5F53\u524D\u5408\u540C\u79D1\u6280\u9879\u76EE\u7533\u8BF7\u5DF2\u521B\u5EFA,\u65E0\u6CD5\u91CD\u590D\u521B\u5EFA\uFF01
 
-EVALUATE_ID=\u8bc4\u4f30\u62a5\u544a\u627e\u4e0d\u5230\uff01
-EVALUATE_STEP=\u9519\u8bef\u7684\u8bc4\u4f30\u6b65\u9aa4\uff01
-EVALUATE_PARAM=\u8bc4\u4f30\u53c2\u6570\u9519\u8bef\uff01
+CONTRACT_COGNIZANCE_CREATED=\u5F53\u524D\u5408\u540C\u9AD8\u4F01\u8BA4\u5B9A\u7533\u8BF7\u5DF2\u521B\u5EFA,\u65E0\u6CD5\u91CD\u590D\u521B\u5EFA\uFF01
 
-CONTRACT_YEAR_SECTION=\u5f53\u524d\u7533\u8bf7\u5e74\u4efd\u5df2\u4e0e\u5176\u4ed6\u5408\u540c\u7533\u8bf7\u5e74\u4efd\u91cd\u53e0\uff0c\u65e0\u6cd5\u63d0\u4ea4\u65b0\u7533\u8bf7\uff01
+EVALUATE_ID=\u8BC4\u4F30\u62A5\u544A\u627E\u4E0D\u5230\uFF01
+EVALUATE_STEP=\u9519\u8BEF\u7684\u8BC4\u4F30\u6B65\u9AA4\uFF01
+EVALUATE_PARAM=\u8BC4\u4F30\u53C2\u6570\u9519\u8BEF\uFF01
 
-VCODE_EMPTY_ERROR=\u56fe\u50cf\u9a8c\u8bc1\u7801\u4e0d\u80fd\u4e3a\u7a7a\uff01
+CONTRACT_YEAR_SECTION=\u5F53\u524D\u7533\u8BF7\u5E74\u4EFD\u5DF2\u4E0E\u5176\u4ED6\u5408\u540C\u7533\u8BF7\u5E74\u4EFD\u91CD\u53E0\uFF0C\u65E0\u6CD5\u63D0\u4EA4\u65B0\u7533\u8BF7\uFF01
 
-MCODE_FREQUENCY_ERROR=\u624b\u673a\u9a8c\u8bc1\u7801\u53d1\u9001\u9891\u7e41\uff01
+VCODE_EMPTY_ERROR=\u56FE\u50CF\u9A8C\u8BC1\u7801\u4E0D\u80FD\u4E3A\u7A7A\uFF01
 
-NON_REGISTER=\u8be5\u7528\u6237\u672a\u6ce8\u518c\uff01
+MCODE_FREQUENCY_ERROR=\u624B\u673A\u9A8C\u8BC1\u7801\u53D1\u9001\u9891\u7E41\uFF01
 
-MCODE_EMPTY_ERROR=\u624b\u673a\u9a8c\u8bc1\u7801\u4e0d\u80fd\u4e3a\u7a7a\uff01
+NON_REGISTER=\u8BE5\u7528\u6237\u672A\u6CE8\u518C\uFF01
 
-MCODE_OVERTIME_ERROR=\u624b\u673a\u9a8c\u8bc1\u7801\u8d85\u65f6\u5931\u6548\uff01
+MCODE_EMPTY_ERROR=\u624B\u673A\u9A8C\u8BC1\u7801\u4E0D\u80FD\u4E3A\u7A7A\uFF01
 
-RESET_CODE_ERROR=\u9875\u9762\u5931\u6548,\u8bf7\u91cd\u65b0\u83b7\u53d6\u9a8c\u8bc1\u7801\uff01
+MCODE_OVERTIME_ERROR=\u624B\u673A\u9A8C\u8BC1\u7801\u8D85\u65F6\u5931\u6548\uFF01
 
-RESET_CODE_OVERTIME=\u9875\u9762\u8d85\u65f6\u5931\u6548,\u8bf7\u91cd\u65b0\u83b7\u53d6\u9a8c\u8bc1\u7801\uff01
+RESET_CODE_ERROR=\u9875\u9762\u5931\u6548,\u8BF7\u91CD\u65B0\u83B7\u53D6\u9A8C\u8BC1\u7801\uFF01
 
-IDENTITY_PAY_OVER_TIME=\u8d85\u8fc7\u6253\u6b3e\u65e5\u671f5\u65e5\uff0c\u65e0\u6cd5\u63d0\u4ea4\u786e\u8ba4\uff01
+RESET_CODE_OVERTIME=\u9875\u9762\u8D85\u65F6\u5931\u6548,\u8BF7\u91CD\u65B0\u83B7\u53D6\u9A8C\u8BC1\u7801\uFF01
 
-OVER_MAX_WRONG_COUNT=\u8f93\u5165\u9519\u8bef\u91d1\u989d\u6b21\u6570\u8fc7\u591a\uff01
+IDENTITY_PAY_OVER_TIME=\u8D85\u8FC7\u6253\u6B3E\u65E5\u671F5\u65E5\uFF0C\u65E0\u6CD5\u63D0\u4EA4\u786E\u8BA4\uFF01
 
-WRONG_MONEY=\u8f93\u5165\u6253\u6b3e\u91d1\u989d\u9519\u8bef\uff0c\u60a8\u8fd8\u6709{0}\u6b21\u673a\u4f1a\uff01
+OVER_MAX_WRONG_COUNT=\u8F93\u5165\u9519\u8BEF\u91D1\u989D\u6B21\u6570\u8FC7\u591A\uFF01
 
-M_CODE_ERROR=\u624b\u673a\u9a8c\u8bc1\u7801\u83b7\u53d6\u5f02\u5e38\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5\uff01
+WRONG_MONEY=\u8F93\u5165\u6253\u6B3E\u91D1\u989D\u9519\u8BEF\uFF0C\u60A8\u8FD8\u6709{0}\u6B21\u673A\u4F1A\uFF01
 
-MOBILE_SAME_ERROR=\u65b0\u624b\u673a\u53f7\u5fc5\u987b\u548c\u539f\u624b\u673a\u53f7\u4e0d\u540c\uff01
+M_CODE_ERROR=\u624B\u673A\u9A8C\u8BC1\u7801\u83B7\u53D6\u5F02\u5E38\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\uFF01
+
+MOBILE_SAME_ERROR=\u65B0\u624B\u673A\u53F7\u5FC5\u987B\u548C\u539F\u624B\u673A\u53F7\u4E0D\u540C\uFF01

+ 4 - 0
src/main/resources/shiro_base_auth.ini

@@ -6,6 +6,9 @@
 /user/subscriberDetail.html=anon
 /user/login.html=anon
 /user/login=anon
+/user/msignIn=anon
+/user/msignIn.html=anon
+/user/login=anon
 /user/signIn.html=anon
 /admin/login=anon
 /admin/login.html=anon
@@ -18,6 +21,7 @@
 /favicon.ico=anon
 /static/**=anon
 /portal/**=anon
+/api/portal/**=anon
 /api/admin/**=admin,permission
 /api/user/partner/**=anon
 /api/user/**=login

Dosya farkı çok büyük olduğundan ihmal edildi
+ 9 - 7
src/main/webapp/WEB-INF/views/common.html


+ 1 - 1
src/main/webapp/WEB-INF/views/portal/activity/details.html

@@ -87,7 +87,7 @@
 					</li>
 				</ul>
 				<div class="activity_apply">
-					<a href="#" class="apply customer-service">立即报名</a> 
+					<a href="#" id="signUp" class="apply customer-service">立即报名</a> 
 					<!-- <a href="#" class="recommend">邀请朋友报名</a> -->
 				</div>
 			</div>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 68 - 59
src/main/webapp/WEB-INF/views/portal/international/internationalIndex.html


+ 24 - 0
src/main/webapp/WEB-INF/views/portal/news/newsDetailApp.html

@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<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 + '/news/newsDetailApp.css'}" rel="stylesheet">
+</head>
+
+<body>
+	<div class="container newsDetails_content">
+		<div class="newsDetail_content">
+			<h4></h4>
+			<p class="from_info">来源:<span class="from_web"></span>时间:<span class="from_date"></span></p>
+			<div id="content_container">
+			</div>
+		</div>
+	</div>
+	<div th:replace="common::footer(~{::script})">
+		<script type="text/javascript" th:src="${portalHost + '/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost + '/news/newsDetailApp.js'}"></script>
+	</div>
+</body>
+</html>

+ 1 - 1
src/main/webapp/WEB-INF/views/portal/scienceTechnology/bigShot.html

@@ -113,7 +113,7 @@
 					<div class="lecture_content_info">
 						<h5 th:text="${lecture.name}" th:title="${lecture.name}"></h5>
 						<p class="mt20" th:text="${lecture.lectureTimeFormattedDate}" th:title="${lecture.lectureTimeFormattedDate}"></p>
-						<a href="#" class="customer-service" th:text="${lecture.lectureStatus} == 0 ? '报名中' : '已结束'">报名中</a>
+						<a href="javascript:;" th:class="${lecture.lectureStatus} == 0 ?'customer-service':'disable'" th:text="${lecture.lectureStatus} == 0 ? '报名中' : '已结束'">报名中</a>
 					</div>
 				</li>
 			</ul>

+ 96 - 5
src/main/webapp/WEB-INF/views/portal/search/achievement.html

@@ -3,14 +3,105 @@
 	xmlns:th="http://www.thymeleaf.org">
 <head th:replace="common::header(~{::title},~{::link})">
 	<title>科技成果搜索页面</title>
-	<link th:href="${staticHost+'/portal/search/achievement.css'}" rel="stylesheet">
+	<link th:href="${portalHost + '/vendors.css'}" rel="stylesheet">
+	<link th:href="${portalHost + '/search/achievement.css'}" rel="stylesheet">
 </head>
 <body>
-	<div id="root"></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('tech', 'tech')"></div>
+				</div>
+			</div>
+		</div>
+		<div class="secondary_navigation"></div>
+	</div>
+	<div class="wrap active">
+    <div class="portal-body">
+      <div class="portal-content">
+        <div class="search-criteria row">
+          <div class="search-title col-md-1"> <span>行业分类</span> </div>
+          <div class="search-select col-md-11">
+            <ul id="industryList" class="clearfix"></ul>
+          </div>
+        </div>
+        <div class="search-criteria row" id="industryChildrenBox">
+          <div class="search-title col-md-1"> <span>行业子分类</span> </div>
+          <div class="search-select col-md-11">
+            <ul id="industryChildrenList" class="clearfix">
+              <li value="999" class="active"><span>不限</span></li>
+            </ul>
+          </div>
+        </div>
+        <div class="search-criteria row">
+          <div class="search-title col-md-1"> <span>交易方式</span> </div>
+          <div class="search-select col-md-6">
+            <ul id="transferModeList" class="clearfix">
+              <li value="999" class="active"><span>不限</span></li>
+              <li value="0"><span>完全转让</span></li>
+              <li value="1"><span>许可转让</span></li>
+              <li value="2"><span>技术入股</span></li>
+              <li value="3"><span>5年独占许可转让</span></li>
+            </ul>
+          </div>
+          <div class="col-md-5">
+            <div class="nav-search"> <input id="searchInput" placeholder="请输入关键词" /> <button id="search" class="search_ico"></button> </div>
+          </div>
+        </div>
+        <ul class='detail_interest_sub clearfix' id="achievementList">
+          <li>
+            <div class="interest_list_title">
+              <p title='跨媒体计算理论与方法'>跨媒体计算理论与方法</p>
+            </div>
+            <div class="interest_list_name">
+              <p>浙江大学</p>
+              <div class="interest_list_confirm"> <span>身份已验证</span> <i class="certify"></i> </div>
+            </div>
+            <div class="detail_sub"> <span class="detail_sub_icon"> 								<i class="demand_ico_5"></i> 							</span> <span class="detail_sub_title">关键词: </span>              <span class="detail_sub_text">跨媒体,计算理论,方法</span> </div>
+            <div class="detail_sub"> <span class="detail_sub_icon">								<i class="demand_ico_2"></i>							</span> <span class="detail_sub_title">技术类型: </span>              <span class="detail_sub_text">项目</span> </div>
+            <div class="detail_sub"> <span class="detail_sub_icon">                            	<i class="demand_ico_1"></i>                            </span>              <span class="detail_sub_title">行业分类: </span> <span class="detail_sub_text">电子信息/其他电子信息</span> </div>
+            <div class="detail_sub">
+            <span class="detail_sub_icon">								<i class="demand_ico_3"></i>							</span> <span class="detail_sub_title">标价: </span>              <span class="money_text">价格面议</span> </div>
+            <div class="detail_sub"> <span class="detail_sub_icon">								<i class="achievement_ico_1"></i>							</span> <span class="detail_sub_title">交易方式: </span>              <span class="money_text">完全转让</span> </div>
+            <div class="detail_sub"> <span class="detail_sub_icon">								<i class="achievement_ico_2"></i>							</span> <span class="detail_sub_title">技术成熟度: </span>              <span class="detail_sub_score">								<span><i class="score_ioc" ></i></span> </span>
+            </div>
+          </li>
+        </ul>
+      </div>
+    </div>
+  </div>
+  <div class="container pagination_box">
+    <nav aria-label="Page navigation" class="clearfix">
+      <ul class="pagination">
+        <li class="pagePre"> <a href="#" aria-label="Previous">						<span aria-hidden="true">&laquo;</span>					</a> </li>
+        <li class="pageNumber active"><a href="#" value="1">1</a></li>
+        <li class="pageNext"> <a href="#" aria-label="Next">						<span aria-hidden="true">&raquo;</span>					</a> </li>
+      </ul> <span class="totalCount">共0条数据</span> </nav>
+  </div>
+	<footer>
+		<div th:replace="common::copyright"></div>
+	</footer>
 	<div th:replace="common::footer(~{::script})">
-		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
-		<script type="text/javascript" th:src="${staticHost+'/portal/search/achievement.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost + '/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost + '/search/achievement.js'}"></script>
 	</div>
 </body>
 </html>

+ 95 - 5
src/main/webapp/WEB-INF/views/portal/search/demand.html

@@ -3,14 +3,104 @@
 	xmlns:th="http://www.thymeleaf.org">
 <head th:replace="common::header(~{::title},~{::link})">
 	<title>科技需求搜索页面</title>
-	<link th:href="${staticHost+'/portal/search/demand.css'}" rel="stylesheet">
+	<link th:href="${portalHost + '/vendors.css'}" rel="stylesheet">
+	<link th:href="${portalHost + '/search/demand.css'}" rel="stylesheet">
 </head>
 <body>
-	<div id="root"></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('tech', 'demand')"></div>
+				</div>
+			</div>
+		</div>
+		<div class="secondary_navigation"></div>
+	</div>
+	<div class="wrap active">
+    <div class="portal-body">
+      <div class="portal-content">
+        <div class="search-criteria row">
+          <div class="search-title col-md-1"> <span>行业分类</span> </div>
+          <div class="search-select col-md-11">
+            <ul id="industryList" class="clearfix"></ul>
+          </div>
+        </div>
+        <div class="search-criteria row" id="industryChildrenBox">
+          <div class="search-title col-md-1"> <span>行业子分类</span> </div>
+          <div class="search-select col-md-11">
+            <ul id="industryChildrenList" class="clearfix">
+              <li value="999" class="active"><span>不限</span></li>
+            </ul>
+          </div>
+        </div>
+        <div class="search-criteria row">
+          <div class="search-title col-md-1"> <span>技术类型</span> </div>
+          <div class="search-select col-md-8">
+            <ul id="technologyModeList" class="clearfix">
+              <li value="999" class="active"><span>不限</span></li>
+              <li value="0"><span>技术购买型需求</span></li>
+              <li value="1"><span>技术设备类需求</span></li>
+              <li value="2"><span>技术方案型需求</span></li>
+              <li value="3"><span>技术攻关型需求</span></li>
+              <li value="4"><span>技术咨询型需求</span></li>
+              <li value="5"><span>技术人才型需求</span></li>
+            </ul>
+          </div>
+          <div class="col-md-3">
+            <div class="nav-search"> <input id="searchInput" placeholder="请输入关键词" /> <button id="search" class="search_ico"></button> </div>
+          </div>
+        </div>
+        <ul class='detail_interest_sub clearfix' id="demandList">
+          <li>
+            <div class="interest_list_title"> <i class="demand_sup"></i>
+              <p title="视频压缩、传输与移动支付技术">视频压缩、传输与移动支付技术</p>
+            </div>
+            <div class="interest_list_name">
+              <p>融达天下软件技术南通有限公司</p>
+              <div class="interest_list_confirm"> <span>身份未验证</span> <i class="uncertify}"></i> </div>
+            </div>
+            <div class="detail_sub"> <span class="detail_sub_icon">								<i class="demand_ico_5"></i>                            </span> <span class="detail_sub_title">关键词: </span>              <span class="detail_sub_text">计算机,信息技术,互联网</span> </div>
+            <div class="detail_sub"> <span class="detail_sub_icon">								<i class="demand_ico_2"></i>							</span> <span class="detail_sub_title">需求描述: </span>              <span title="描述信息" class="detail_sub_demandDes">描述信息</span> </div>
+            <div class="detail_sub"> <span class="detail_sub_icon">								<i class="demand_ico_3"></i>							</span> <span class="detail_sub_title">预算: </span>              <span class="money_text">价格面议</span> </div>
+            <div class="detail_sub"> <span class="detail_sub_icon">								<i class="demand_ico_4"></i>							</span> <span class="detail_sub_title">类型: </span>              <span class="detail_sub_text">技术咨询型需求</span> </div>
+            <div class="detail_sub"> <span class="detail_sub_icon">								<i class="demand_ico_1"></i>							</span> <span class="detail_sub_title">行业: </span>              <span class="detail_sub_text">电子信息/软件</span> </div>
+          </li>
+        </ul>
+      </div>
+    </div>
+  </div>
+  <div class="container pagination_box">
+    <nav aria-label="Page navigation" class="clearfix">
+      <ul class="pagination">
+        <li class="pagePre"> <a href="#" aria-label="Previous">						<span aria-hidden="true">&laquo;</span>					</a> </li>
+        <li class="pageNumber active"><a href="#" value="1">1</a></li>
+        <li class="pageNext"> <a href="#" aria-label="Next">						<span aria-hidden="true">&raquo;</span>					</a> </li>
+      </ul> <span class="totalCount">共0条数据</span> </nav>
+  </div>
+	<footer>
+		<div th:replace="common::copyright"></div>
+	</footer>
 	<div th:replace="common::footer(~{::script})">
-		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
-		<script type="text/javascript" th:src="${staticHost+'/portal/search/demand.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost + '/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost + '/search/demand.js'}"></script>
 	</div>
 </body>
 </html>

+ 86 - 5
src/main/webapp/WEB-INF/views/portal/search/subscriberOrg.html

@@ -3,14 +3,95 @@
 	xmlns:th="http://www.thymeleaf.org">
 <head th:replace="common::header(~{::title},~{::link})">
 	<title>伙伴搜索页面</title>
-	<link th:href="${staticHost+'/portal/search/subscriberOrg.css'}" rel="stylesheet">
+	<link th:href="${portalHost + '/vendors.css'}" rel="stylesheet">
+	<link th:href="${portalHost + '/search/subscriberOrg.css'}" rel="stylesheet">
 </head>
 <body>
-	<div id="root"></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('tech', 'company')"></div>
+				</div>
+			</div>
+		</div>
+		<div class="secondary_navigation"></div>
+	</div>
+	<div class="wrap active">
+	    <div class="portal-body">
+	      <div class="portal-content">
+	        <div class="search-criteria row">
+	          <div class="search-title col-md-2"> <span>行业分类</span> </div>
+	          <div class="search-select col-md-10">
+	            <ul id="industryList" class="clearfix"></ul>
+	          </div>
+	        </div>
+	        <div class="search-criteria row" id="industrySecondBox">
+	          <div class="search-title col-md-2"> <span>行业二级分类</span> </div>
+	          <div class="search-select col-md-10">
+	            <ul id="industrySecondList" class="clearfix">
+	              <li value="999" class="active"><span>不限</span></li>
+	            </ul>
+	          </div>
+	        </div>
+	        <div class="search-criteria row" id="industryThirdBox">
+	          <div class="search-title col-md-2"> <span>行业三级分类</span> </div>
+	          <div class="search-select col-md-10">
+	            <ul id="industryThirdList" class="clearfix">
+	              <li value="999" class="active"><span>不限</span></li>
+	            </ul>
+	          </div>
+	        </div>
+	        <div class="search-criteria row">
+	          <div class="search-title col-md-2"> <span>伙伴名称</span> </div>
+	          <div class="search-select col-md-3">
+	            <div class="nav-search"> <input id="searchInput" placeholder="请输入名称" /> <button id="search" class="search_ico"></button> </div>
+	          </div>
+	        </div>
+	        <ul class='detail_interest_sub clearfix' id="subscriberList">
+	          <li class="user-detail">
+	            <div class="logo"> <i class="user_portrait_img"></i> </div>
+	            <div class="name"> <span>Azeroth科技有限公司</span> </div>
+	            <div class="province"> <span class="letter_Spacing">地</span> <span>区: </span> <span class="text-address">长沙</span> </div>
+	            <div class="text">
+	              <span class="letter_Spacing">需</span> <span>求: </span> <span class="text-Number">123</span> <span class="text-unit"> 条</span>              </div>
+	            <div class="text"> <span>技术成果: </span> <span class="text-Number">456</span> <span class="text-unit"> 条</span> </div>
+	          </li>
+	        </ul>
+	      </div>
+	    </div>
+	  </div>
+	  <div class="container pagination_box">
+	    <nav aria-label="Page navigation" class="clearfix">
+	      <ul class="pagination">
+	        <li class="pagePre"> <a href="#" aria-label="Previous">						<span aria-hidden="true">&laquo;</span>					</a> </li>
+	        <li class="pageNumber active"><a href="#" value="1">1</a></li>
+	        <li class="pageNext"> <a href="#" aria-label="Next">						<span aria-hidden="true">&raquo;</span>					</a> </li>
+	      </ul> <span class="totalCount">共0条数据</span> </nav>
+	  </div>
+	<footer>
+		<div th:replace="common::copyright"></div>
+	</footer>
 	<div th:replace="common::footer(~{::script})">
-		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
-		<script type="text/javascript" th:src="${staticHost+'/portal/search/subscriberOrg.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost + '/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost + '/search/subscriberOrg.js'}"></script>
 	</div>
 </body>
 </html>

+ 93 - 5
src/main/webapp/WEB-INF/views/portal/search/subscriberUser.html

@@ -3,14 +3,102 @@
 	xmlns:th="http://www.thymeleaf.org">
 <head th:replace="common::header(~{::title},~{::link})">
 	<title>行家搜索页面</title>
-	<link th:href="${staticHost+'/portal/search/subscriberUser.css'}" rel="stylesheet">
+	<link th:href="${portalHost + '/vendors.css'}" rel="stylesheet">
+	<link th:href="${portalHost + '/search/subscriberUser.css'}" rel="stylesheet">
 </head>
 <body>
-	<div id="root"></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('tech', 'person')"></div>
+				</div>
+			</div>
+		</div>
+		<div class="secondary_navigation"></div>
+	</div>
+	<div class="wrap active">
+	    <div class="portal-body">
+	      <div class="portal-content">
+	        <div class="search-criteria row">
+	          <div class="search-title col-md-2"> <span>行业分类</span> </div>
+	          <div class="search-select col-md-10">
+	            <ul id="industryList" class="clearfix"></ul>
+	          </div>
+	        </div>
+	        <div class="search-criteria row" id="industrySecondBox">
+	          <div class="search-title col-md-2"> <span>行业二级分类</span> </div>
+	          <div class="search-select col-md-10">
+	            <ul id="industrySecondList" class="clearfix">
+	              <li value="999" class="active"><span>不限</span></li>
+	            </ul>
+	          </div>
+	        </div>
+	        <div class="search-criteria row" id="industryThirdBox">
+	          <div class="search-title col-md-2"> <span>行业三级分类</span> </div>
+	          <div class="search-select col-md-10">
+	            <ul id="industryThirdList" class="clearfix">
+	              <li value="999" class="active"><span>不限</span></li>
+	            </ul>
+	          </div>
+	        </div>
+	        <div class="search-criteria row">
+	          <div class="search-title col-md-2"> <span>行家名称</span> </div>
+	          <div class="search-select col-md-3">
+	            <div class="nav-search"> <input id="searchInput" placeholder="请输入名称" /> <button id="search" class="search_ico"></button> </div>
+	          </div>
+	        </div>
+	        <ul class='detail_interest_sub clearfix' id="subscriberList">
+	          <li class="org-detail clearfix">
+	            <div class="logo"> <i class="user_portrait_img"></i> </div>
+	            <div class="detail-right">
+	              <div class="name"> <span>柏连阳</span> </div>
+	              <div class="text"> <span>省医学会检验专业委员会</span> </div>
+	              <div class="text"> <span>省医学会检验专业委员会副主任委员</span> </div>
+	              <div class="text"> <span title="生物与新医药/医疗仪器、设备与医学专用软件/医学影像诊断技术">生物与新医药/医疗仪器、设备与医学专用软件/医学影像诊断技术</span> </div>
+	              <div class="detail-text">
+	                <div class="text"> <span class="letter_Spacing">需</span> <span>求: </span> <span class="text-Number">123</span> <span class="text-unit"> 条</span>                  </div>
+	                <div class="text"> <span>技术成果: </span> <span class="text-Number">456 </span> <span class="text-unit"> 条</span> </div>
+	                <div class="text">
+	                <span class="letter_Spacing">粉</span> <span>丝: </span> <span class="text-Number">789</span> <span class="text-unit"> 位</span>                  </div>
+	              </div>
+	            </div>
+	          </li>
+	        </ul>
+	      </div>
+	    </div>
+	  </div>
+	  <div class="container pagination_box">
+	    <nav aria-label="Page navigation" class="clearfix">
+	      <ul class="pagination">
+	        <li class="pagePre"> <a href="#" aria-label="Previous">						<span aria-hidden="true">&laquo;</span>					</a> </li>
+	        <li class="pageNumber active"><a href="#" value="1">1</a></li>
+	        <li class="pageNext"> <a href="#" aria-label="Next">						<span aria-hidden="true">&raquo;</span>					</a> </li>
+	      </ul> <span class="totalCount">共0条数据</span> </nav>
+	  </div>
+	<footer>
+		<div th:replace="common::copyright"></div>
+	</footer>
 	<div th:replace="common::footer(~{::script})">
-		<script type="text/javascript" th:src="${staticHost+'/vendors.js'}"></script>
-		<script type="text/javascript" th:src="${staticHost+'/portal/search/subscriberUser.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost + '/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost + '/search/subscriberUser.js'}"></script>
 	</div>
 </body>
 </html>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 24 - 5
src/main/webapp/WEB-INF/views/portal/technologyTrading/index.html


Dosya farkı çok büyük olduğundan ihmal edildi
+ 153 - 0
src/main/webapp/WEB-INF/views/user/msignIn.html