短信模板优秀代码的实现。

短信模板获取优秀代码的实现。

逻辑分析:
1.我们通过将模板放入到数据库中:

[name]您好!优蓝网已成功帮您预约了[corpName]的面试,请于[interviewTime]赶到面试点:[interviewAddress],面试联系人:[receiverName][receiverMobile]。有任何问题请联系我,[userName][userMobile]。
在这里插入图片描述

2.将模板中准备替换掉的信息(比如:interviewAddress)的sql保存在另一个表中:

select CONCAT(CONCAT(CONCAT(a.name,b.name),c.name),demand.interview_address) as interviewAddress from corp_demand demand LEFT JOIN code_area a on a.code=demand.interview_province_code LEFT JOIN code_area b on b.code=demand.interview_city_code LEFT JOIN code_area c on c.code=demand.interview_dist_code where demand.id=
在这里插入图片描述
SELECT name as corpName from corp_base where id =
在这里插入图片描述

3.sql中具体需要用到的参数将体现在代码中,代码优秀的体现主要在这里,需要替换的通配符信息需要从不同的表中提取可以根据表名的不同进行不同的通配符信息匹配。

Controller层:

/***
	 * 通过code获取短信模版
	 * @param code
	 * @param resumeId
	 * @param demandId
	 * @param baseId
	 * @param timeId
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/getMessModeByCode", method = RequestMethod.POST)
	public SmsModel getMessModeByCode(@RequestParam(value = "code") String code,@RequestParam(value = "resumeId") Long resumeId,
			@RequestParam(value = "demandId") Long demandId,@RequestParam(value = "baseId") Long baseId
			,@RequestParam(value = "timeId") Long timeId) {
		ShiroUser user=(ShiroUser) SecurityUtils.getSubject().getPrincipal();
		return smsModelService.getMessModeByCode(resumeId, user.getId(), baseId, demandId, timeId, code, true);
	}

Service层实现:

@Override
	public SmsModel getMessModeByCode(Long resumeId, Long userId,Long baseId,
			Long demandId, Long timeId,String smsCode,boolean isInput) {
		Map<String, Object> searchParams=new HashMap<String, Object>();
		searchParams.put("isUse", 2);//可用的
		searchParams.put("code",smsCode);
		SmsModel messModel=smsModelDao.select(searchParams);
		if(messModel!=null){
			//替换通配符
			String content=messModel.getContent();
			//正则表达式获取通配符
			    Pattern p = Pattern.compile("(\\[[^\\]]*\\])");  
			    Matcher m = p.matcher(content);  
			    while(m.find()){ 
			      String code=m.group().substring(1, m.group().length()-1); 
			      String valueString=m.group().substring(0, m.group().length());//通配符
			      CodeDictionary dictionary=codeDictionaryDao.getByCode(code);
			      if(dictionary!=null){
			    	  Map map = new HashMap();
			    	 String sql= dictionary.getRemark();//得到Sql
			    	 if(sql.contains("sys")){
			    		 sql+=userId;
			    		 map.put("sql", sql);
				    	 List<Map> list = smsModelDao.executeSql(map);
				    	 if(list.size()>0){
				    	 Object OB=list.get(0);
				 	     JSONObject json=JSONObject.fromObject(OB);
				 	     if(json==null || json.isNullObject()||("").equals(((String)json.get(code)))){
				    		  content=content.replaceAll("\\"+valueString,isInput?"<input type='text'  placeholder='["+dictionary.getName()+ "]'/>":dictionary.getName());

				 	     }else{
				 	    	 content=content.replaceAll("\\"+valueString,(String) json.get(code));
				 	     }
				    	  messModel.setContent(content);
				    	 } else{
				    		  content=content.replaceAll("\\"+valueString,isInput?"<input type='text'  placeholder='["+dictionary.getName()+ "]'/>":dictionary.getName());
				    		  messModel.setContent(content);
				    	 }
				    	 
			    	 }else if(sql.contains("resume")){
			    		 sql+=resumeId;
			    		 map.put("sql", sql);
				    	 List<Map> list = smsModelDao.executeSql(map);
				    	 if(list.size()>0){
				    	 Object OB=list.get(0);
				 	     JSONObject json=JSONObject.fromObject(OB);
				 	    if(json==null ||json.isNullObject()||("").equals(((String)json.get(code)))){
				    		  content=content.replaceAll("\\"+valueString,isInput?"<input type='text'  placeholder='["+dictionary.getName()+ "]'/>":dictionary.getName());
				 	    }else{
				 	    	String name=(String) json.get(code);
					 	    content=content.replaceAll("\\"+valueString,name);
				 	     }
				 	    messModel.setContent(content);
				    	 }else{
				    		  content=content.replaceAll("\\"+valueString,isInput?"<input type='text'  placeholder='["+dictionary.getName()+ "]'/>":dictionary.getName());
				    		  messModel.setContent(content);
				    	 }
				    	 
			    	 }else if(sql.contains("project_scheduling")){
			    		 sql+=timeId;
			    		 map.put("sql", sql);
				    	 List<Map> list = smsModelDao.executeSql(map);
				    	 if(list.size()>0){
				    	 Object OB=list.get(0);
				 	     JSONObject json=JSONObject.fromObject(OB);
				 	    if(json==null||json.isNullObject()||("").equals(((String)json.get(code)))){
				    		  content=content.replaceAll("\\"+valueString,isInput?"<input type='text'  placeholder='["+dictionary.getName()+ "]'/>":dictionary.getName());
				 	    }else{
				 	    	 content=content.replaceAll("\\"+valueString,(String) json.get(code));
				 	    }
				    	 messModel.setContent(content);
				    	 }else{
				    		  content=content.replaceAll("\\"+valueString,isInput?"<input type='text'  placeholder='["+dictionary.getName()+ "]'/>":dictionary.getName());
				    		  messModel.setContent(content);
				    	 }
				    	 
				    	  
			    	 }else if(sql.contains("corp_demand") || sql.contains("project_base")){
			    		 sql+=demandId;
			    		 map.put("sql", sql);
				    	 List<Map> list = smsModelDao.executeSql(map);
				    	 if(list.size()>0){
				    		 Object OB=list.get(0);
					 	     JSONObject json=JSONObject.fromObject(OB);
					 	     if(json==null || json.isNullObject()||("").equals(((String)json.get(code)))){
					    		  content=content.replaceAll("\\"+valueString,isInput?"<input type='text'  placeholder='["+dictionary.getName()+ "]'/>":dictionary.getName());
					 	     }else{
					 	    	 content=content.replaceAll("\\"+valueString,(String) json.get(code)); 
					 	     }
					    	 messModel.setContent(content);
				    	 }else{
				    		  content=content.replaceAll("\\"+valueString,isInput?"<input type='text'  placeholder='["+dictionary.getName()+ "]'/>":dictionary.getName());
				    		  messModel.setContent(content);
				    	 }
				    	 
			    	 }else if(sql.contains("corp_base") || sql.contains("corp_profile")){
			    		 sql+=baseId;
			    		 map.put("sql", sql);
				    	 List<Map> list = smsModelDao.executeSql(map);
				    	 if(list.size()>0){
				    		 Object OB=list.get(0);
					 	     JSONObject json=JSONObject.fromObject(OB);
					 	     if(json==null ||json.isNullObject()||("").equals(((String)json.get(code)))){
					    		  content=content.replaceAll("\\"+valueString,isInput?"<input type='text'  placeholder='["+dictionary.getName()+ "]'/>":dictionary.getName());
					 	     }else{
					 	    	 content=content.replaceAll("\\"+valueString,(String) json.get(code));
					 	     }
				    	 }else{
				    		  content=content.replaceAll("\\"+valueString,isInput?"<input type='text'  placeholder='["+dictionary.getName()+ "]'/>":dictionary.getName());
				    	 }
				    	 messModel.setContent(content);
			    	 }
			    	 else{//自定义通配符
			    		String html= dictionary.getRemark();
			    		content=content.replaceAll("\\"+valueString,html);
				    	messModel.setContent(content);
			    	 }
			      }
			    }
		}
		return messModel; 
	}

sql:

<select id="executeSql" resultType="map">
     ${sql}
    </select>

通过while(true){}的使用,根据不同的表名匹配不同的信息,简化提高代码质量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值