短信模板获取优秀代码的实现。
逻辑分析:
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){}的使用,根据不同的表名匹配不同的信息,简化提高代码质量。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/80427.html