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

Accept Merge Request #240 test to prod : (test -> prod)

Merge Request: test to prod
Created By: @albertshaw
Accepted By: @albertshaw
URL: https://coding.net/t/aft/p/AFT/git/merge/240
albertshaw лет назад: 8
Родитель
Сommit
96a8371c97
29 измененных файлов с 324 добавлено и 275 удалено
  1. 2 0
      schema/20170920-member-rank-unique.sql
  2. 34 32
      src/main/java/com/goafanti/common/constant/AFTConstants.java
  3. 1 1
      src/main/java/com/goafanti/common/controller/BaseController.java
  4. 38 59
      src/main/java/com/goafanti/common/controller/WebpageController.java
  5. 2 3
      src/main/java/com/goafanti/common/dao/MemberGradeMapper.java
  6. 5 0
      src/main/java/com/goafanti/common/dao/MemberOrderMapper.java
  7. 6 5
      src/main/java/com/goafanti/common/mapper/MemberGradeMapper.xml
  8. 14 0
      src/main/java/com/goafanti/common/mapper/MemberOrderMapperExt.xml
  9. 4 2
      src/main/java/com/goafanti/common/mapper/OrganizationInfoMapper.xml
  10. 26 0
      src/main/java/com/goafanti/common/task/ExpiredUserMemberTask.java
  11. 35 2
      src/main/java/com/goafanti/memberGrade/controller/MemberGradeFrontController.java
  12. 7 8
      src/main/java/com/goafanti/memberGrade/service/MemberGradeService.java
  13. 11 0
      src/main/java/com/goafanti/memberGrade/service/MemberOrderService.java
  14. 2 1
      src/main/java/com/goafanti/news/controller/NewsController.java
  15. 1 1
      src/main/java/com/goafanti/user/controller/UserApiController.java
  16. 23 12
      src/main/webapp/WEB-INF/views/common.html
  17. 1 1
      src/main/webapp/WEB-INF/views/portal/financial/index.html
  18. 8 5
      src/main/webapp/WEB-INF/views/portal/financial/investmentDetail.html
  19. 4 6
      src/main/webapp/WEB-INF/views/portal/financial/investmentInstitution.html
  20. 26 6
      src/main/webapp/WEB-INF/views/portal/index.html
  21. 1 1
      src/main/webapp/WEB-INF/views/portal/member.html
  22. 24 10
      src/main/webapp/WEB-INF/views/portal/service/propertyRight.html
  23. 6 1
      src/main/webapp/WEB-INF/views/portal/service/serviceIndex.html
  24. 1 1
      src/main/webapp/WEB-INF/views/portal/technologyTrading/achievement.html
  25. 8 9
      src/main/webapp/WEB-INF/views/portal/technologyTrading/achievementDetail.html
  26. 1 1
      src/main/webapp/WEB-INF/views/portal/technologyTrading/demand.html
  27. 1 9
      src/main/webapp/WEB-INF/views/portal/technologyTrading/demandDetail.html
  28. 6 94
      src/main/webapp/WEB-INF/views/portal/technologyTrading/index.html
  29. 26 5
      src/main/webapp/WEB-INF/views/user/subscriberDetail.html

+ 2 - 0
schema/20170920-member-rank-unique.sql

@@ -0,0 +1,2 @@
+ALTER TABLE `member_grade` 
+ADD UNIQUE INDEX `member_rank_UNIQUE` (`member_rank` ASC);

+ 34 - 32
src/main/java/com/goafanti/common/constant/AFTConstants.java

@@ -1,61 +1,63 @@
 package com.goafanti.common.constant;
 
 public class AFTConstants {
-	public static final String	YYYYMMDDHHMMSS					= "yyyy-MM-dd HH:mm:ss";
+	public static final String	YYYYMMDDHHMMSS						= "yyyy-MM-dd HH:mm:ss";
 
-	public static final String	YYYYMMDD						= "yyyy-MM-dd";
+	public static final String	YYYYMMDD							= "yyyy-MM-dd";
 
-	public static final String	YYYY							= "yyyy";
+	public static final String	YYYY								= "yyyy";
 
-	public static final String	MMDD							= "MM-dd";
+	public static final String	MMDD								= "MM-dd";
 
-	public static final String	INITIALPASSWORD					= "123456";				// 初始密码
+	public static final String	INITIALPASSWORD						= "123456";				// 初始密码
 
-	public static final String	SUPERADMIN						= "999999";				// 超级管理员
+	public static final String	SUPERADMIN							= "999999";				// 超级管理员
 
-	public static final String	AREAADMIN						= "99999";				// 地区管理员
+	public static final String	AREAADMIN							= "99999";				// 地区管理员
 
-	public static final String	AUDITORADMIN					= "9999";				// 审核员
+	public static final String	AUDITORADMIN						= "9999";				// 审核员
 
-	public static final String	MANAGERADMIN					= "4";					// 客户经理
+	public static final String	MANAGERADMIN						= "4";					// 客户经理
 
-	public static final String	SALESMANAGERADMIN				= "5";					// 营销经理
+	public static final String	SALESMANAGERADMIN					= "5";					// 营销经理
 
-	public static final String	SALESMANADMIN					= "6";					// 营销员
+	public static final String	SALESMANADMIN						= "6";					// 营销员
 
-	public static final String	TECHBROKER						= "7";					// 技术经纪人
+	public static final String	TECHBROKER							= "7";					// 技术经纪人
 
-	public static final String	PATENTINFO						= "专利申请管理";
+	public static final String	PATENTINFO							= "专利申请管理";
 
-	public static final String	COGNIZANCE						= "高企认定管理";
+	public static final String	COGNIZANCE							= "高企认定管理";
 
-	public static final String	COPYRIGHT						= "软著申请管理";
+	public static final String	COPYRIGHT							= "软著申请管理";
 
-	public static final String	TECHPROJECT						= "科技项目申报管理";
+	public static final String	TECHPROJECT							= "科技项目申报管理";
 
-	public static final int		KEYWORDLENTH					= 16;
+	public static final int		KEYWORDLENTH						= 16;
 
-	public static final int		IMPORTMAXLENTH					= 1000;					// 科技需求&科技成果批量导入最大数据量
+	public static final int		IMPORTMAXLENTH						= 1000;					// 科技需求&科技成果批量导入最大数据量
 
-	public static final int		PROVINCEMAXNUM					= 99;
+	public static final int		PROVINCEMAXNUM						= 99;
 
-	public static final int		CITYMAXNUM						= 999;
+	public static final int		CITYMAXNUM							= 999;
 
-	public static final Integer	ACHIEVEMENT_DEMAND_INIT_COUNT	= 0;
+	public static final Integer	ACHIEVEMENT_DEMAND_INIT_COUNT		= 0;
 
-	public static final Integer	ACHIEVEMENT_DEMAND_FIRST_COUNT	= 1;
+	public static final Integer	ACHIEVEMENT_DEMAND_FIRST_COUNT		= 1;
 
-	public static final Integer	BIG_SHOT_STAR_CACHE_KEY			= 666;
+	public static final Integer	BIG_SHOT_STAR_CACHE_KEY				= 666;
 
-	public static final Integer	BIG_SHOT_LECTURE_CACHE_KEY		= 667;
+	public static final Integer	BIG_SHOT_LECTURE_CACHE_KEY			= 667;
 
-	public static final Integer	LECTURE_DYNAMIC_LIST_CACHE_KEY	= 668;
+	public static final Integer	LECTURE_DYNAMIC_LIST_CACHE_KEY		= 668;
 
-	public static final Integer	LECTURE_LIST_CACHE_KEY			= 669;
-	
-	public static final Integer INTERNATIONAL_ACHIEVEMENT_CACHE_KEY = 670;
-	
-	public static final Integer INTERNATIONAL_USER_CACHE_KEY    = 671;
-	
-	public static final Integer INTERNATIONAL_ORG_CACHE_KEY    = 672;
+	public static final Integer	LECTURE_LIST_CACHE_KEY				= 669;
+
+	public static final Integer	INTERNATIONAL_ACHIEVEMENT_CACHE_KEY	= 670;
+
+	public static final Integer	INTERNATIONAL_USER_CACHE_KEY		= 671;
+
+	public static final Integer	INTERNATIONAL_ORG_CACHE_KEY			= 672;
+
+	public static final String	YES									= "1";
 }

+ 1 - 1
src/main/java/com/goafanti/common/controller/BaseController.java

@@ -118,10 +118,10 @@ public class BaseController {
 		model.addAttribute("shiro", SecurityUtils.getSubject());
 		model.addAttribute("isLogin", TokenManager.isLogin());
 		model.addAttribute("csrf", TokenManager.getCSRF());
+		model.addAttribute("isAdmin", false);
 		if (TokenManager.isLogin() && TokenManager.getToken() instanceof User) {
 			model.addAttribute("userData", TokenManager.getUserToken());
 			model.addAttribute("userName", TokenManager.getUserToken().getNickname());
-			model.addAttribute("isAdmin", false);
 		}
 
 		if (TokenManager.isLogin() && TokenManager.getToken() instanceof Admin) {

+ 38 - 59
src/main/java/com/goafanti/common/controller/WebpageController.java

@@ -35,28 +35,28 @@ import com.goafanti.news.service.NewsService;
 @Controller
 public class WebpageController extends BaseController {
 	@Resource
-	private UserService userService;
-	
+	private UserService					userService;
+
 	@Resource
-	private DistrictGlossoryService districtglossoryservice;
+	private DistrictGlossoryService		districtglossoryservice;
 
 	@Resource
-	private DemandService demandService;
+	private DemandService				demandService;
 
 	@Resource
-	private AchievementService achievementService;
+	private AchievementService			achievementService;
 
 	@Resource
-	private BannersService bannersService;
+	private BannersService				bannersService;
 
 	@Resource
-	private UserIdentityService userIdentityService;
+	private UserIdentityService			userIdentityService;
 
 	@Resource
-	private OrganizationIdentityService organizationIdentityService;
+	private OrganizationIdentityService	organizationIdentityService;
 
 	@Resource
-	private NewsService newsService;
+	private NewsService					newsService;
 
 	/**
 	 * 首页
@@ -145,14 +145,14 @@ public class WebpageController extends BaseController {
 	@RequestMapping(value = "/user/subscriberDetail", method = RequestMethod.GET)
 	public ModelAndView subscriberDetail(HttpServletRequest request, ModelAndView modelview, String uid, Integer type) {
 		ModelAndView mv = new ModelAndView();
-		UserPartnerDetailBo rePartnerDetail =new UserPartnerDetailBo();
+		UserPartnerDetailBo rePartnerDetail = new UserPartnerDetailBo();
 		/* 查询智者详细信息 */
 
 		if (UserType.PERSONAL.getCode().equals(type)) {
 			rePartnerDetail = userService.findUserPartnerDetail(uid);
 			if (null != rePartnerDetail) {
 				Integer province = rePartnerDetail.getProvince();
-				if(null!=province) {
+				if (null != province) {
 					rePartnerDetail.setProvinceS(districtglossoryservice.selectNameById(province));
 				}
 			}
@@ -160,7 +160,7 @@ public class WebpageController extends BaseController {
 			rePartnerDetail = (UserPartnerDetailBo) userService.findOrgPartnerDetail(uid);
 			if (null != rePartnerDetail) {
 				Integer province = rePartnerDetail.getProvince();
-				if(null!=province) {
+				if (null != province) {
 					rePartnerDetail.setProvinceS(districtglossoryservice.selectNameById(province));
 				}
 			}
@@ -184,7 +184,7 @@ public class WebpageController extends BaseController {
 				}
 			}
 		}
-		
+
 		/* 查询相关智者信息 */
 		List<UserPartnerDetailBo> userPartner = userService.findUserPartner();
 		List<UserPartnerDetailBo> reuserPartner = new ArrayList<UserPartnerDetailBo>();
@@ -198,16 +198,17 @@ public class WebpageController extends BaseController {
 		}
 		for (int i = 0; i < reuserPartner.size(); i++) {
 			String personalProfile = reuserPartner.get(i).getPersonalProfile();
-			if(null!= personalProfile&& ""!=personalProfile &&personalProfile.length()>40) {
-				personalProfile=personalProfile.substring(0, 40)+"... ...";
+			if (null != personalProfile && "" != personalProfile && personalProfile.length() > 40) {
+				personalProfile = personalProfile.substring(0, 40) + "... ...";
 				reuserPartner.get(i).setPersonalProfile(personalProfile);
 			}
 		}
-		
+
 		mv.setViewName("/user/subscriberDetail");
-		mv.addObject("rePartnerDetail",rePartnerDetail);
-		mv.addObject("reuserPartner",reuserPartner);
-		mv.addObject("partnerAchievementList",partnerAchievementList);
+		mv.addObject("rePartnerDetail", rePartnerDetail);
+		mv.addObject("reuserPartner", reuserPartner);
+		mv.addObject("partnerAchievementList", partnerAchievementList);
+		mv.addObject("uid", uid);
 		return mv;
 
 	};
@@ -492,29 +493,31 @@ public class WebpageController extends BaseController {
 		handleBanners(modelview, BannersType.FU_WU_HUI);
 		return modelview;
 	}
-	
+
 	/**
 	 * 知识产权
 	 * @param request
 	 * @param modelview
 	 * @return
 	 */
-	@RequestMapping(value = "/portal/service/propertyRight" , method = RequestMethod.GET)
-	public ModelAndView propertyRight(HttpServletRequest request, ModelAndView modelview){
+	@RequestMapping(value = "/portal/service/propertyRight", method = RequestMethod.GET)
+	public ModelAndView propertyRight(HttpServletRequest request, ModelAndView modelview) {
 		modelview.setViewName("/portal/service/propertyRight");
 		return modelview;
 	}
+
 	/**
 	 * 高企认定
 	 * @param request
 	 * @param modelview
 	 * @return
 	 */
-	@RequestMapping(value = "/portal/service/highTechCognizance" , method= RequestMethod.GET)
-	public ModelAndView highTechCognizance(HttpServletRequest request, ModelAndView modelview){
+	@RequestMapping(value = "/portal/service/highTechCognizance", method = RequestMethod.GET)
+	public ModelAndView highTechCognizance(HttpServletRequest request, ModelAndView modelview) {
 		modelview.setViewName("/portal/service/highTechCognizance");
 		return modelview;
 	}
+
 	/**
 	 * 技术交易
 	 */
@@ -533,37 +536,38 @@ public class WebpageController extends BaseController {
 	 * @param modelview
 	 * @return
 	 */
-	@RequestMapping(value="/portal/thinkTank/index",method = RequestMethod.GET)
-	public ModelAndView thinkTank(HttpServletRequest request, ModelAndView modelview){
+	@RequestMapping(value = "/portal/thinkTank/index", method = RequestMethod.GET)
+	public ModelAndView thinkTank(HttpServletRequest request, ModelAndView modelview) {
 		modelview.setViewName("/portal/thinkTank/index");
 		return modelview;
 	}
-	
+
 	/**
 	 * 政策列表
 	 * @return 
 	 */
 	@SuppressWarnings("unchecked")
-	@RequestMapping(value="/portal/thinkTank/policyList",method = RequestMethod.GET)
-	public ModelAndView policyList(ModelAndView modelview){
+	@RequestMapping(value = "/portal/thinkTank/policyList", method = RequestMethod.GET)
+	public ModelAndView policyList(ModelAndView modelview) {
 		modelview.setViewName("/portal/thinkTank/policyList");
-		List<NewsPortalList> newsList = (List<NewsPortalList>)newsService.portalNewsList(5, 1, null, null, null, null).getList();
+		List<NewsPortalList> newsList = (List<NewsPortalList>) newsService.portalNewsList(5, 1, null, null, null, null)
+				.getList();
 		modelview.addObject("newsList", newsList);
 		return modelview;
 	}
-	
+
 	/**
 	 * 会员介绍
 	 * @param request
 	 * @param modelview
 	 * @return
 	 */
-	@RequestMapping(value="/portal/member")
-	public ModelAndView member(HttpServletRequest request, ModelAndView modelview){
+	@RequestMapping(value = "/portal/member")
+	public ModelAndView member(HttpServletRequest request, ModelAndView modelview) {
 		modelview.setViewName("/portal/member");
 		return modelview;
 	}
-	
+
 	private void handleBanners(ModelAndView modelview, BannersType bannersType) {
 		List<Banners> banners = bannersService.findPortalBanners(bannersType.getKey());
 		if (!banners.isEmpty()) {
@@ -571,29 +575,4 @@ public class WebpageController extends BaseController {
 		}
 	}
 	
-	/**
-	 * 会员介绍
-	 * @param request
-	 * @param modelview
-	 * @param pageType (0:专利产品页,1:技术成果页面,2:技术需求页面)
-	 * @param keyWord
-	 *   
-	 * @return
-	 */
-	@RequestMapping(value="/portal/search/keyword" ,method = RequestMethod.GET)
-	private ModelAndView searchListByKeyword (HttpServletRequest request, ModelAndView modelview ,Integer pageType ,String keyWord) {
-		modelview.addObject("keyWord", keyWord);
-		System.out.println("进来没有");
-		/*if (null != pageType && pageType == 2) {
-			System.out.println("专利产品页面");
-			modelview.setViewName("/portal/technologyTrading/demand");
-		}else if (null != pageType && (pageType == 1 ||pageType==0)) {
-			System.out.println("技术成果页面");
-			modelview.setViewName("/portal/technologyTrading/achievement");
-		}else {
-			modelview.setViewName("/portal/technologyTrading/achievement");
-		}*/
-		/*modelview.setViewName("/portal/technologyTrading/achievement");*/
-		return new ModelAndView("/portal/technologyTrading/achievement","keyWord", keyWord);
-	}
 }

+ 2 - 3
src/main/java/com/goafanti/common/dao/MemberGradeMapper.java

@@ -30,7 +30,6 @@ public interface MemberGradeMapper {
 	int updateMemberOrder(Map<String, Object> map);
 
 	int delMemberOrder(Map<String, Object> map);
-
-	int updateUserLvl(Map<String, Object> map);
-
+	
+	String selectMemberBusiness(int memberRank);
 }

+ 5 - 0
src/main/java/com/goafanti/common/dao/MemberOrderMapper.java

@@ -1,5 +1,6 @@
 package com.goafanti.common.dao;
 
+import java.util.List;
 import java.util.Map;
 
 import com.goafanti.common.model.MemberOrder;
@@ -18,4 +19,8 @@ public interface MemberOrderMapper {
 	int updateByPrimaryKey(MemberOrder record);
 
 	int updateUserLvl(Map<String, Object> params);
+
+	int updateBatchUserLvl(Map<String, Object> params);
+
+	List<String> selectExpired();
 }

+ 6 - 5
src/main/java/com/goafanti/common/mapper/MemberGradeMapper.xml

@@ -128,6 +128,12 @@
 		member_order
 		WHERE  user_id=#{userId} and order_state &lt; 9
 	</select>
+	
+	<select id="selectMemberBusiness" parameterType="int"  resultType="java.lang.String">
+		SELECT business FROM
+		member_grade
+		WHERE  member_rank=#{memberRank}
+	</select>
 
 	<!-- 后台订单更改 -->
 	<update id="updateMemberOrder" parameterType="java.util.Map" >
@@ -149,9 +155,4 @@
 		<if test="uid!=null">AND user_id = #{uid}</if>
 	</update>
 
-	<!-- 更改用户会员等级 -->
-	<update id="updateUserLvl" parameterType="java.util.Map">
-		UPDATE user SET lvl=#{lvl}  WHERE id=#{userId}
-	</update>
-	
 </mapper>

+ 14 - 0
src/main/java/com/goafanti/common/mapper/MemberOrderMapperExt.xml

@@ -6,4 +6,18 @@
 		UPDATE user SET
 		lvl=#{lvl} WHERE id=#{userId}
 	</update>
+	
+	<update id="updateBatchUserLvl" parameterType="java.util.Map">
+	 	update user set lvl = #{lvl}
+	 	where id in 
+		<foreach item="item" collection="list" open="(" separator="," close=")">
+			#{item}
+		</foreach>
+	 </update>
+	
+	<select id="selectExpired" resultType="java.lang.String">
+		SELECT user_id FROM member_order 
+		where (order_state=1 or order_state=3) 
+		and valid_time &gt; CURDATE() and valid_time &lt; date_sub(CURDATE(),interval -1 day)  
+    </select>
 </mapper>

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

@@ -250,7 +250,8 @@
 		a.id = c.uid
 	where 
 	a.type = 1 and b.id is not null
-	and c.audit_status = 5 and a.type = 1 and b.identity_type = '企业' and b.company_type = 1
+	<!-- and c.audit_status = 5 --> 
+	and a.type = 1 and b.identity_type = '企业' and b.company_type = 1
 	<if test="provinceId != null and provinceId != ''">
 		and b.location_province = #{provinceId,jdbcType=VARCHAR}
 	</if>
@@ -279,7 +280,8 @@
 		a.id = c.uid
 	where 
 	a.type = 1 and b.id is not null
-	and c.audit_status = 5 and a.type = 1 and b.identity_type = '企业' and b.company_type = 1
+	<!-- and c.audit_status = 5  -->
+	and a.type = 1 and b.identity_type = '企业' and b.company_type = 1
 	<if test="provinceId != null and provinceId != ''">
 		and b.location_province = #{provinceId,jdbcType=VARCHAR}
 	</if>

+ 26 - 0
src/main/java/com/goafanti/common/task/ExpiredUserMemberTask.java

@@ -0,0 +1,26 @@
+package com.goafanti.common.task;
+
+import javax.annotation.Resource;
+
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import com.goafanti.common.utils.LoggerUtils;
+import com.goafanti.memberGrade.service.MemberOrderService;
+
+@Component
+public class ExpiredUserMemberTask {
+
+	@Resource
+	MemberOrderService memberOrderService;
+
+	/**
+	 * "0 0 1 * * ?" 每天1点触发一次
+	 */
+	@Scheduled(cron = "0 0 1 * * ?")
+	public void exprireRun() {
+		LoggerUtils.debug(getClass(), "开始检查会员到期");
+		memberOrderService.updateExpiredUser();
+	}
+
+}

+ 35 - 2
src/main/java/com/goafanti/memberGrade/controller/MemberGradeFrontController.java

@@ -5,19 +5,28 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import com.alibaba.fastjson.JSONObject;
 import com.goafanti.common.bo.Result;
+import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.controller.BaseApiController;
 import com.goafanti.common.enums.OrderState;
+import com.goafanti.common.enums.UserLevel;
 import com.goafanti.common.model.MemberOrder;
+import com.goafanti.common.model.User;
+import com.goafanti.common.model.UserIdentity;
 import com.goafanti.core.mybatis.JDBCIdGenerator;
 import com.goafanti.core.shiro.token.TokenManager;
+import com.goafanti.memberGrade.bo.BusinessType;
 import com.goafanti.memberGrade.service.MemberGradeService;
+import com.goafanti.user.service.UserIdentityService;
+import com.goafanti.user.service.UserService;
 
 /**
  * 会员 前台
@@ -31,6 +40,10 @@ public class MemberGradeFrontController extends BaseApiController {
 	@Autowired
 	private MemberGradeService	memberGradeService;
 	@Autowired
+	private UserService			userService;
+	@Autowired
+	private UserIdentityService	userIdentityService;
+	@Autowired
 	private JDBCIdGenerator		jDBCIdGenerator;
 
 	/**
@@ -66,6 +79,9 @@ public class MemberGradeFrontController extends BaseApiController {
 	 */
 	@RequestMapping(value = "/addBasicsMemberOrder", method = RequestMethod.POST)
 	public Result addBasicsMemberOrder(Integer menberType, String price, Integer validMonth) {
+		Assert.notNull(TokenManager.getUserToken(), "必须用户登录");
+		User u = userService.selectByPrimaryKey(TokenManager.getUserId());
+		Assert.isTrue(u.getLvl() == 1, "必须为实名认证用户,已经是会员的无需重复申请");
 		MemberOrder mo = new MemberOrder();
 		mo.setId(jDBCIdGenerator.generateId());
 		mo.setMenberType(menberType);
@@ -73,8 +89,7 @@ public class MemberGradeFrontController extends BaseApiController {
 		mo.setValidMonth(validMonth);
 		mo.setOrderState(OrderState.UNPAYED.getCode());
 		mo.setOrderTime(new Date());
-		Assert.notNull(TokenManager.getUserToken(), "必须用户登录");
-		mo.setUserId(TokenManager.getUserId());
+		mo.setUserId(u.getId());
 		return res().data(memberGradeService.addBasicsMemberOrder(mo));
 	}
 
@@ -88,4 +103,22 @@ public class MemberGradeFrontController extends BaseApiController {
 		return res().data(memberGradeService.delMemberOrder(id));
 	}
 
+	/**
+	 * 获取专家联系手机
+	 */
+	@RequestMapping(value = "/contact", method = RequestMethod.GET)
+	public Result contact(String uid) {
+		User u = userService.selectByPrimaryKey(TokenManager.getUserId());
+		Assert.isTrue(u != null && u.getLvl() > UserLevel.CERTIFIED.getCode(), "必须是登录实名用户");
+		Assert.hasText(uid, "找不到专家");
+		JSONObject business = memberGradeService.selectMemberBusiness(u.getLvl());
+		Assert.isTrue(AFTConstants.YES.equals(business.get(BusinessType.CHA_KAN_LIAN_XI.getKey())), "该会员不能查看专家联系方式");
+		UserIdentity ui = userIdentityService.selectUserIdentityByUserId(uid);
+		if (ui != null && StringUtils.isNotBlank(ui.getContactMobile())) {
+			return res().data(ui.getContactMobile());
+		}
+		User expert = userService.selectByPrimaryKey(uid);
+		Assert.notNull(expert, "找不到专家");
+		return res().data(expert.getMobile());
+	}
 }

+ 7 - 8
src/main/java/com/goafanti/memberGrade/service/MemberGradeService.java

@@ -7,8 +7,9 @@ import java.util.Map;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.goafanti.common.dao.MemberGradeMapper;
-import com.goafanti.common.enums.OrderState;
 import com.goafanti.common.model.MemberOrder;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.memberGrade.bo.MemberGrade;
@@ -58,13 +59,6 @@ public class MemberGradeService {
 		return memberGradeMapper.countMemberOrderWhere(map);
 	}
 
-	public void updateMemberOrder(Map<String, Object> map, Map<String, Object> umap) {
-		if (OrderState.getStatus((Integer) map.get("orderState")) == OrderState.PAYED) {
-			memberGradeMapper.updateUserLvl(umap);
-		}
-		memberGradeMapper.updateMemberOrder(map);
-	}
-
 	public int delMemberOrder(Long id) {
 		Map<String, Object> map = new HashMap<>();
 		map.put("id", id);
@@ -74,4 +68,9 @@ public class MemberGradeService {
 		return memberGradeMapper.delMemberOrder(map);
 	}
 
+	public JSONObject selectMemberBusiness(int memberRank) {
+		String b = memberGradeMapper.selectMemberBusiness(memberRank);
+		return b == null ? null : JSON.parseObject(b);
+	}
+
 }

+ 11 - 0
src/main/java/com/goafanti/memberGrade/service/MemberOrderService.java

@@ -1,6 +1,7 @@
 package com.goafanti.memberGrade.service;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,4 +29,14 @@ public class MemberOrderService {
 		}
 		return memberOrderMapper.updateByPrimaryKeySelective(mo);
 	}
+
+	public void updateExpiredUser() {
+		List<String> uids = memberOrderMapper.selectExpired();
+		if (!uids.isEmpty()) {
+			Map<String, Object> umap = new HashMap<>();
+			umap.put("lvl", 1);
+			umap.put("list", uids);
+			memberOrderMapper.updateBatchUserLvl(umap);
+		}
+	}
 }

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

@@ -117,7 +117,8 @@ public class NewsController extends BaseController {
 		News newsDetail = newsService.findNewsDetail(id);
 		Object news = newsList.getList().get(0);
 		SimpleDateFormat fmt = new SimpleDateFormat();
-		newsDetail.setCreateTimeS(newsDetail==null?"":fmt.format(newsDetail.getCreateTime()));
+		if(null!=newsDetail)
+		newsDetail.setCreateTimeS(fmt.format(newsDetail.getCreateTime()));
 		@SuppressWarnings("unchecked")
 		List<NewsPortalList> la = (List<NewsPortalList>) newsList.getList();
 		for (NewsPortalList n : la) {

+ 1 - 1
src/main/java/com/goafanti/user/controller/UserApiController.java

@@ -772,7 +772,7 @@ public class UserApiController extends BaseApiController {
 				res.getError().add(buildError(ErrorConstants.VCODE_EMPTY_ERROR));
 				return res;
 			}
-			if (!TokenManager.getSession().getAttribute(VerifyCodeUtils.V_CODE).equals(verificationCode)) {
+			if (!VerifyCodeUtils.verifyCode(verificationCode)) {
 				res.getError().add(buildError(ErrorConstants.VCODE_ERROR));
 				return res;
 			}

+ 23 - 12
src/main/webapp/WEB-INF/views/common.html

@@ -42,10 +42,10 @@
   						<a th:href="${basePath + '/portal/technologyTrading/index.html'}">技术交易</a>
   						<ol class="subnavigation">
   							<li>
-  								<a th:href="${basePath + '/portal/technologyTrading/achievement.html'}">专利交易</a>
+  								<a th:href="${basePath + '/portal/technologyTrading/achievement.html'}">专利产品</a>
   							</li>
   							<li>
-  								<a th:href="${basePath + '/portal/technologyTrading/achievement.html'}">成果交易</a>
+  								<a th:href="${basePath + '/portal/technologyTrading/achievement.html'}">技术成果</a>
   							</li>
   							<li>
   								<a th:href="${basePath + '/portal/technologyTrading/demand.html'}">技术需求</a>
@@ -125,15 +125,19 @@
 							<img th:src="${portalHost+'/img/dianhua.jpg'}" alt="" />
 							<p>合作电话:0731-85202685</p>
 							<p>400-8800-962八楼</p>
-						</div>
+						</div>		
 						<div class="cont_rightapp">
-							<img th:src="${portalHost+'/img/erweima_app.jpg'}" alt="" />
-							<p>安卓APP</p>
+							<img th:src="${portalHost+'/img/erweima_iphone.png'}" alt=""/>
+							<p>iPhone版</p>
 						</div>
-						<div class="cont_right">
-							<img th:src="${portalHost+'/img/erweima.jpg'}" alt="" />
-							<p>科德公众号</p>
+						<div class="cont_right android">
+							<img th:src="${portalHost+'/img/erweima_android.jpg'}" alt=""/>
+							<p>Android版</p>
 						</div>
+						<div class="cont_right">
+							<img th:src="${portalHost+'/img/erweima.jpg'}" alt=""/>
+							<p>微信公众号</p>
+						</div>	
 					</div>
 					<div class="text_bottom">
 						<p>友情链接</p>
@@ -162,13 +166,19 @@
 				</div>
 			</div>
 		</div>
-		<div class="pub_fix">
+		<div th:if="${!isAdmin}" class="pub_fix">
 			<span class="index_blur"></span>
 			<ul class="ret_top">
-				<li><a th:href="${basePath + '/portal/member'}"> <img
-						th:src="${portalHost+'/img/index_fix0.png'}" alt="" />
+				<li th:classappend="${!isLogin}? 'head_login'">
+					<a th:if="${!isLogin || userData.lvl == 1}" th:href="${isLogin?(basePath + '/portal/member') : 'javascript:;'}" >
+						<img th:src="${portalHost+'/img/index_fix0.png'}" alt="" />
 						<p>申请会员</p>
-				</a></li>
+					</a>
+					<a th:if="${isLogin && userData.lvl == 0}" th:href="${basePath + '/user/certify'}" >
+						<img th:src="${portalHost+'/img/index_fix0.png'}" alt="" />
+						<p>实名认证</p>
+					</a>
+				</li>
 				<li th:if="${!isLogin}"><a href=""> <img
 						th:src="${portalHost+'/img/index_fix1.png'}" alt="" />
 						<p>发布需求</p>
@@ -197,6 +207,7 @@
 			</ul>
 			<span class="index_orange"></span>
 		</div>
+		<div class="message"><span></span></div>
 	</th:block>
 	<th:block th:fragment="login">
 		<div class="login">

+ 1 - 1
src/main/webapp/WEB-INF/views/portal/financial/index.html

@@ -3,7 +3,7 @@
 	xmlns:th="http://www.thymeleaf.org"
 	xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
 <head th:replace="common::header(~{::title},~{::link})">
-<title>首页</title>
+<title>科技金融</title>
 <link th:href="${portalHost + '/vendors.css'}" rel="stylesheet">
 <link th:href="${portalHost + '/financialIndex.css'}" rel="stylesheet">
 </head>

+ 8 - 5
src/main/webapp/WEB-INF/views/portal/financial/investmentDetail.html

@@ -33,11 +33,9 @@
 	            <ul class="detail_toptitle">
 	            	<li><img th:src="${portalHost + '/img/detail_home.jpg'}" alt="" /></li>
 	            	<li>></li>
-	                <li><a href="#">科技金融  </a></li>
-	                <li>></li>               
-	                <li><a href="#">我要找资金   </a></li>
+	                <li><a th:href="${basePath + '/portal/financial/index.html'}">科技金融  </a></li>                
 	                <li>></li>
-	                <li><a href="#" >投资机构 </a></li>
+	                <li><a th:href="${basePath + '/portal/financial/investmentInstitution.html'}">投资机构 </a></li>
 	                <li>></li>
 	             	<li class="that" th:text="${bo.companyName}"></li>
 	            </ul>
@@ -76,7 +74,12 @@
         	<div class="detail_right">
         		<div class="institutions_top">
         			<div class="institutions_love">
-        				<img th:src="${portalHost + '/img/inverDetails_01.png'}" alt="" />
+						<p th:if="${bo.publicityPictureUrl != null and bo.publicityPictureUrl !=''}">
+        					<img th:src="${portalHost + bo.publicityPictureUrl}" alt="" />
+        				</p>
+        				<p th:if="${bo.publicityPictureUrl == null or bo.publicityPictureUrl ==''}">
+        					<img th:src="${avatarUploadHost + '/default/inverDatails.jpg'}" alt="" />
+        				</p>
         				<div class="love_text">
         					<p><img th:src="${portalHost + '/img/inverDatails_love.png'}" alt="" /><span> 12 </span> 收藏</p>
         					<p>线下约见<span> 32次</span></p>

+ 4 - 6
src/main/webapp/WEB-INF/views/portal/financial/investmentInstitution.html

@@ -13,11 +13,9 @@
 	<!--banner-->
   	<div class="carouselt">
 		<ul class="ct-img-big clear">
-			<li data-index=0 ><a href=""><img th:src="${portalHost + '/img/highTech_slide_1.jpg'}" alt=""/></a></li>
-			<li data-index=1 ><a href=""><img th:src="${portalHost + '/img/highTech_slide_2.jpg'}" alt=""/></a></li>
-			<li data-index=2 ><a href=""><img th:src="${portalHost + '/img/highTech_slide_3.jpg'}" alt=""/></a></li>
-			<li data-index=3 ><a href=""><img th:src="${portalHost + '/img/highTech_slide_4.jpg'}" alt=""/></a></li>
-			<li data-index=4 ><a href=""><img th:src="${portalHost + '/img/highTech_slide_5.jpg'}" alt=""/></a></li>
+			<li data-index=0 ><a href=""><img th:src="${portalHost + '/img/investmentDetail_banner01.jpg'}" alt=""/></a></li>
+			<li data-index=1 ><a href=""><img th:src="${portalHost + '/img/investmentDetail_banner01.jpg'}" alt=""/></a></li>
+			<li data-index=2 ><a href=""><img th:src="${portalHost + '/img/investmentDetail_banner01.jpg'}" alt=""/></a></li>
 		</ul>
 		<a class="btn btn-next" href="">
 			<img th:src="${portalHost + '/img/index_next.png'}" alt=""/>
@@ -33,7 +31,7 @@
 	            <ul class="detail_toptitle">
 	            	<li><img th:src="${portalHost + '/img/detail_home.jpg'}" alt="" /></li>
 	            	<li>></li>
-	                <li><a href="#">科技金融 </a></li>	                
+	                <li><a th:href="${basePath + '/portal/financial/index.html'}">科技金融  </a></li>                  
 	                <li>></li>
 	                <li class="that"><a href="#" >投资机构 </a></li>
 	            </ul>

+ 26 - 6
src/main/webapp/WEB-INF/views/portal/index.html

@@ -58,25 +58,25 @@
 		<div class="coupon rf">
 			<div class="coupon_cont lf">
 				<a href="tencent://Message/?Uin=2035994611&websiteName=q-zone.qq.com&Menu=yes">
-				<h2>科技服务1000元 代金券</h2>
+				<h2>注册即送代金券1000元,立即领取</h2>
 				<p>有限期至:2017-10-1</p>
 				</a>				
 			</div>
 			<div class="coupon_cont lf">
 				<a href="tencent://Message/?Uin=2035994611&websiteName=q-zone.qq.com&Menu=yes">
-				<h2>上线送大礼,做高新,软著免费(限一个)</h2>
+				<h2>做高新,送软著,立即领取</h2>
 				<p>有限期至:2017-10-1</p>
 				</a>						
 			</div>
 			<div class="coupon_cont lf">
 				<a href="tencent://Message/?Uin=2035994611&websiteName=q-zone.qq.com&Menu=yes">
-				<h2>专利申请,限时九折(前100个)</h2>
+				<h2>买专利,享九折,立即领取</h2>
 				<p>有限期至:2017-10-1</p>
 				</a>						
 			</div>
 			<div class="coupon_cont lf">
 				<a href="tencent://Message/?Uin=2035994611&websiteName=q-zone.qq.com&Menu=yes">
-				<h2>100元软著全包(限量100个)</h2>
+				<h2>百元做软著,限量领取</h2>
 				<p>有限期至:2017-10-1</p>
 				</a>								
 			</div>
@@ -152,7 +152,7 @@
 		</div>
 	</div>
 	<div id="policy">
-		<div class="captions">智政 <a th:href="${basePath + '/portal/thinkTank/policyList.html'}">MORE+</a></a></div>
+		<div class="captions">智政 <a th:href="${basePath + '/portal/thinkTank/policyList.html'}">MORE+</a></div>
 		<div class="pol_cont">
 			<div class="pol_left">
 				<img th:src="${portalHost+'/img/policy.jpg'}" alt=""/>
@@ -196,7 +196,7 @@
 	<div class="need_main">
 		<div id="need">
 			<div class="caption">精品需求</div>
-			<span class="more"><a href="#">MORE+</a></span>
+			<span class="more"><a th:href="${basePath + '/portal/technologyTrading/demand.html'}">MORE+</a></span>
 			<div class="carousel">
 				<span class="need_prev"><</span>
 				<div class="need_imgs">
@@ -205,30 +205,50 @@
 							<a th:href="${basePath + '/portal/technologyTrading/demandDetail?id=cdee3d8f-affe-45b0-9fd2-542cb2ed16fa&type=1'}">
 								<img th:src="${portalHost+'/img/need_img1.jpg'}" alt="" />	
 								<p>新型纳米涂料技术</p>
+								<div class="need_black">
+									<img th:src="${portalHost+'/img/search_txt.png'}" alt="" />
+									<p>详情</p>
+								</div>
 							</a>
 						</li>
 						<li>
 							<a th:href="${basePath + '/portal/technologyTrading/demandDetail?id=b17c5768-327d-4d90-8557-e4f21af050b0&type=1'}">
 								<img th:src="${portalHost+'/img/need_img2.jpg'}" alt="" />
 								<p>汽车空调的辅助制冷装置</p>
+								<div class="need_black">
+									<img th:src="${portalHost+'/img/search_txt.png'}" alt="" />
+									<p>详情</p>
+								</div>
 							</a>
 						</li>
 						<li>
 							<a th:href="${basePath + '/portal/technologyTrading/demandDetail?id=e6b9869a-15aa-437a-afdd-0c289acd8cbf&type=1'}">
 								<img th:src="${portalHost+'/img/need_img1.jpg'}" alt="" />
 								<p>高性能铅炭电池</p>
+								<div class="need_black">
+									<img th:src="${portalHost+'/img/search_txt.png'}" alt="" />
+									<p>详情</p>
+								</div>
 							</a>
 						</li>
 						<li>
 							<a th:href="${basePath + '/portal/technologyTrading/demandDetail?id=9b815c37-9748-4224-9770-07df8f35a6d9&type=1'}">
 								<img th:src="${portalHost+'/img/need_img2.jpg'}" alt="" />
 								<p>ABS板材改性工程塑料的配方及研究</p>
+								<div class="need_black">
+									<img th:src="${portalHost+'/img/search_txt.png'}" alt="" />
+									<p>详情</p>
+								</div>
 							</a>
 						</li>
 						<li>
 							<a th:href="${basePath + '/portal/technologyTrading/demandDetail?id=5335f8d9-0e4d-4263-8d99-8faf92de5f1d&type=1'}">
 								<img th:src="${portalHost+'/img/need_img3.jpg'}" alt="" />
 								<p>机械领域新型产品或技术</p>
+								<div class="need_black">
+									<img th:src="${portalHost+'/img/search_txt.png'}" alt="" />
+									<p>详情</p>
+								</div>
 							</a>
 						</li>
 					</ul>

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

@@ -64,7 +64,7 @@
 	<div class="msg"><span></span></div>
 	<div th:replace="common::footer(~{::script})">
 		<script type="text/javascript" th:src="${portalHost + '/vendors.js'}"></script>
-		<script type="text/javascript" th:src="${portalHost + '/service.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost + '/member.js'}"></script>
 	</div>
 </body>
 

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


+ 6 - 1
src/main/webapp/WEB-INF/views/portal/service/serviceIndex.html

@@ -36,6 +36,7 @@
 				<div class="serve_left">
 					<div>
 						<span>
+							<img th:src="${portalHost+'/img/tech_tyhs.png'}" alt=""/>
 							<img th:src="${portalHost+'/img/tech_ty.png'}" alt=""/>
 						</span>
 						<h3>专业诊断保障!</h3>
@@ -44,7 +45,9 @@
 					</div>
 					<div>
 						<span>
+						
 							<img th:src="${portalHost+'/img/tech_tr.png'}" alt=""/>
+							<img th:src="${portalHost+'/img/tech_trbs.png'}" alt=""/>
 						</span>
 						<h3>专业能力保障!</h3>
 						<p>专业优秀的服务团队,提供高效率、高质量的服务,加上系统的资料整理流程和模块,有效保证了高成功率。</p>
@@ -53,6 +56,7 @@
 					<div>
 						<span>
 							<img th:src="${portalHost+'/img/tech_th.png'}" alt=""/>
+							<img th:src="${portalHost+'/img/tech_tss.png'}" alt=""/>
 						</span>
 						<h3>专业跟踪服务!</h3>
 						<p>在规范的客户信息数据库基础上,对客户进行后期项目跟踪,进行后端信息资源对接,协助企业构建科技管理体系。
@@ -123,11 +127,12 @@
   					<a href="tencent://Message/?Uin=2035994611&websiteName=q-zone.qq.com&Menu=yes">了解政策</a>
   				</li>  				
   			</ul>
+  			<a href="tencent://Message/?Uin=2035994611&websiteName=q-zone.qq.com&Menu=yes">立即咨询</a>
   		</div>
   	</div>
   	<div class="customer">
   		<div class="customer_main container">
-  			<span class="that" id="office">公司</span>
+  			<span class="that" id="office">公司</span>
 			<span id="custom">大客户</span>
   		</div>
   		<hr />

+ 1 - 1
src/main/webapp/WEB-INF/views/portal/technologyTrading/achievement.html

@@ -2,7 +2,7 @@
 <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>
+	<title>科技交易</title>
 	<link th:href="${portalHost + '/vendors.css'}" rel="stylesheet">
 	<link th:href="${portalHost + '/technologyTrading/achievement.css'}" rel="stylesheet">
 </head>

+ 8 - 9
src/main/webapp/WEB-INF/views/portal/technologyTrading/achievementDetail.html

@@ -31,10 +31,15 @@
 			<div class="detail_center">
 				<div class="detail_centerimg" th:each="achievementdetail:${achievementdetail}">
 					<div>
-						<div th:if="${achievementdetail.technicalPictureUrl} == null " >
+						<div class="small_img">
+							<img th:src="${avatarUploadHost+ '/default/xuqiuimg_null.png'}" alt=""/>
+							<img th:src="${avatarUploadHost+ '/default/xuqiuimg_null.png'}" alt=""/>
+							<img th:src="${avatarUploadHost+ '/default/xuqiuimg_null.png'}" alt=""/>
+						</div>
+						<div th:if="${achievementdetail.technicalPictureUrl} == null " class="big_img">
 							<img th:src="${avatarUploadHost+ '/default/bigimg_null.png'}" alt=""/>
 						</div>
-						<div th:if="${achievementdetail.technicalPictureUrl} != null " >
+						<div th:if="${achievementdetail.technicalPictureUrl} != null " class=big_img>
 							<img th:src= "${avatarUploadHost+achievementdetail.technicalPictureUrl}"alt="" />
 						</div>
 					</div>
@@ -72,10 +77,6 @@
 				<div class="detail_centertext" th:each="achievementdetail:${achievementdetail}">
 					<div class="text_left">
 						<div>
-							<h5 class="left_p">拥有者:</h5>
-							<p th:text="${achievementdetail.ownerName}?${achievementdetail.ownerName}:未公开">未公开</p>
-						</div>
-						<div>
 							<h5 class="left_p">技术成熟度:</h5>
 							<p th:text="${achievementdetail.maturityS}?${achievementdetail.maturityS}:未知">未知</p>
 							
@@ -91,7 +92,7 @@
 					</div>
 					<div class="text_right">
 						<div>技术简介</div>
-						<p th:text="${achievementdetail.introduction}?${achievementdetail.introduction}:暂无相关简介"></p>
+						<p th:utext="${achievementdetail.introduction}?${achievementdetail.introduction}:暂无相关简介"></p>
 						
 					</div>
 				</div>
@@ -101,8 +102,6 @@
 				<div class="main_introduce" >
 					<ul>
 						<li th:each="reachievementlist:${reachievementlist}">
-						<!-- 	<img th:src="${avatarUploadHost+reachievementlist.technicalpictureurl}" alt="" /> -->
-							
 							<div th:if="${reachievementlist.technicalpictureurl} == null " >
 								<img th:src="${avatarUploadHost+ '/default/zhuanliimg_null.png'}" alt=""/>
 							</div>

+ 1 - 1
src/main/webapp/WEB-INF/views/portal/technologyTrading/demand.html

@@ -3,7 +3,7 @@
 	xmlns:th="http://www.thymeleaf.org"
 	xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
 <head th:replace="common::header(~{::title},~{::link})">
-<title>科技需求</title>
+<title>科技交易</title>
 <link th:href="${portalHost + '/vendors.css'}" rel="stylesheet">
 <link th:href="${portalHost + '/technologyTrading/demand.css'}" rel="stylesheet">
 </head>

+ 1 - 9
src/main/webapp/WEB-INF/views/portal/technologyTrading/demandDetail.html

@@ -43,14 +43,6 @@
 							<h5>名称:</h5>
 							<p th:text="${demand.name}?${demand.name}:暂无名称"></p>
 						</div>
-						<div>
-							<h5>联系人:</h5>
-							<p th:text="${demand.employerName}?${demand.employerName}:未公开"></p>
-						</div>
-						<div>
-							<h5>联系人地址:</h5>
-							<p th:text="${demand.employerAddress}?${demand.employerAddress}:未公开"></p>
-						</div>
 						<div class="inline_span">
 							<span>行业:</span>  <span th:text="${demand.industryCategoryAS}?${demand.industryCategoryAS}:暂无行业分类"></span>
 						</div>
@@ -85,7 +77,7 @@
 				<div class="detail_centertext">
 					<div class="text_right" th:each="demand:${demand}">
 						<div>问题描述</div>
-						<p th:text="${demand.problemDes}?${demand.problemDes}:Sorry还没有相关描述"></p>
+						<p th:utext="${demand.problemDes}?${demand.problemDes}:Sorry还没有相关描述"></p>
 					</div>
 				</div>
 			</div>

+ 6 - 94
src/main/webapp/WEB-INF/views/portal/technologyTrading/index.html

@@ -42,105 +42,17 @@
 				<div>
 					<div class="clear_line"></div>
 					<div class="technolo_text">
-						<div>
+						<div val='ed430858-bea1-45d9-88c7-626ce0efb63b' typ='1'>
 							<h5>风机过滤装置的进风过滤网板</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-7-4</a>
+							<a href="javascript:;">2017-09-20</a>
 						</div>
-						<div>
+						<div val='bc85fb3f-8bd3-4625-b53a-db8dff1be9ee' typ='1'>
 							<h5>免全站仪的塔基断面图测量方法和设备</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-3-21</a>
+							<a href="javascript:;">2017-09-20</a>
 						</div>
-						<div>
+						<div val='498ff064-0033-42ff-8dc0-6888cdb59512' typ='1'>
 							<h5>冷焰火喷发设备的电子控制装置</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-2-24</a>
-						</div>
-						<div>
-							<h5>低碳高硅硅锰合金的生产方法</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-3-6</a>
-						</div>
-						<div>
-							<h5>低钛高碳铬铁生产工艺</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-3-6</a>
-						</div>
-						<div>
-							<h5>防卡篦条溜筛</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-3-10</a>
-						</div>
-						<div>
-							<h5>无破碎提升机料斗</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-3-28</a>
-						</div>
-						<div>
-							<h5>无破碎提升机</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-3-28</a>
-						</div>
-						<div>
-							<h5>垄沟种全覆膜播种机</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-3-24</a>
-						</div>
-						<div>
-							<h5>对测风数据进行补缺修正的方法</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-4-1</a>
-						</div>
-						<div>
-							<h5>电信级节能保护系统及其实现方法</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-4-1</a>
-						</div>
-						<div>
-							<h5>高纯高硬度聚晶立方氮化硼块体材料及其制备方法</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-4-1</a>
-						</div>
-						<div>
-							<h5>混凝土屋面与金属板屋面的可变形衔接方法及可变形衔接结构</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-4-12</a>
-						</div>
-						<div>
-							<h5>混凝土栈桥楼面的可变形衔接方法及衔接结构</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-4-12</a>
-						</div>
-						<div>
-							<h5>用于检测喹啉不溶物的砂芯坩埚的处理方法</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-5-7</a>
-						</div>
-						<div>
-							<h5>坐标测量方法</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-5-5</a>
-						</div>
-						<div>
-							<h5>无毒环保型防腐防水抗渗耐磨的补强材料及其制备方法</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-7-31</a>
-						</div>
-						<div>
-							<h5>提高解吸电解金泥过滤速度的方法</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-8-8</a>
-						</div>
-						<div>
-							<h5>立式板材激光刻纹机</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-5-6</a>
-						</div>
-						<div>
-							<h5>钨钛合金的深冷处理方法</h5>
-							<p>发明</p>
-							<a href="javascript:;">2017-7-1</a>
+							<a href="javascript:;">2017-09-20</a>
 						</div>
 					</div>
 					<img th:src="${portalHost + '/img/technology_text.png'}" alt="" />

+ 26 - 5
src/main/webapp/WEB-INF/views/user/subscriberDetail.html

@@ -12,7 +12,7 @@
 		<div th:replace="common::nav('user','subscriberDetail')"></div>
 	</header>
 	<div class="banner">
-    	<img th:src="${portalHost + '/img/highTech_slide_1.jpg'}" alt=""/>
+    	<img th:src="${portalHost + '/img/thinkerDetail_banner01.jpg'}" alt=""/>
 	</div>
 	<div id="all_thinkerDetail">
 		<div class="thinkerdetail_top" th:each="rePartnerDetail:${rePartnerDetail}">
@@ -51,8 +51,13 @@
 				</div> 
 			</div>
 			<div class="detailcenter_right">
-				<div class="right_img">
-					<img th:src="${portalHost + '/img/thinker_detail2.jpg'}" alt="" />
+				<div class="right_img">				
+					<p th:if="${rePartnerDetail.personPortraitUrl != null and rePartnerDetail.personPortraitUrl !=''}">
+        					<img th:src="${avatarUploadHost + rePartnerDetail.personPortraitUrl}" alt="" />      					
+        			</p>
+        			<p th:if="${rePartnerDetail.personPortraitUrl == null or rePartnerDetail.personPortraitUrl ==''}">
+        					<img th:src="${avatarUploadHost + '/default/subscriberDetail.jpg'}" alt="" />
+        			</p>
 					<div>
 						线下约见 <span>32次</span>
 					</div> 
@@ -73,7 +78,7 @@
 					</div>
 					<div class="right_btn">
 						<div class="btn_right">在线咨询</div>
-						<div>线下约见</div>
+						<div id="consultBtn">线下约见</div>
 					</div>
 				</div>
 					<h3>相关智者</h3>
@@ -90,7 +95,23 @@
 			</div>
 		</div>
 	</div>
-
+	<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
+		<div class="modal-dialog" role="document">
+			<div class="modal-content">
+				<div class="modal-header">
+					<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
+					<h4 class="modal-title" id="myModalLabel">咨询订单提交</h4>
+				</div>
+				<div class="modal-body" id="modal-content">
+				</div>
+				<div class="modal-footer">
+					<input type="hidden" th:value="${uid}" id="userId"/>
+					<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
+					<button type="button" class="btn btn-primary" id="submitOrder">提交订单</button>
+				</div>
+			</div>
+		</div>
+	</div>
 	<footer>
 		<div th:replace="common::copyright"></div>
 		<div th:replace="common::login"></div>