首页 > 代码库 > 记录处理异常

记录处理异常

本文仅供自己日后查找所用。

首先我要做的是在设置company的认证方式,认证方式可能多个,分为免费上网、微信认证、短信认证、密码认证。那么在CompanyAuthType实体中就会有多条记录。

先上代码:

public String editCom(Company model, String assets, String contextPath, String realPath) throws Exception{		Company company = (Company)companyDao.findById(model.getCompanyId());		if(null == company){			throw new SerialException();		}		//设置信息: 名字、电话号码、成功连接		company.setCompanyName(model.getCompanyName());		company.setMobile(model.getMobile());		company.setSuccessUrl(model.getSuccessUrl());		companyDao.update(company);		//先找到所认证方式,存在则删除		List<CompanyAuthType> catl = iCompanyAuthTypeDAO.findByProperties(new String[]{"company.companyId"}, new Object[]{model.getCompanyId()});		if(null != catl && !catl.isEmpty()){			//删除原有的认证方式记录			iCompanyAuthTypeDAO.deleteByProperties(new String[]{"company.companyId"}, new Object[]{model.getCompanyId()}, null);		}		//设置商家认证方式,一或多个		if(!StringUtils.isEmpty(model.getIds())){			iCompanyAuthTypeDAO.deleteByProperties(new String[]{"company.companyId"},new Object[]{model.getCompanyId()},null);						String[] ids = model.getIds().split(",");			for(String id:ids){				AuthType at = (AuthType)iAuthTypeDAO.findById(Long.valueOf(id));				if(null != at){					CompanyAuthType cat = new CompanyAuthType();					cat.setAuthType(at);					cat.setCompany(company);					iCompanyAuthTypeDAO.save(cat);				}			}					}		//通过CompanyId查找所有AP		List<Ap> lst = iApDAO.findByProperties(new String[]{"company.companyId"}, new Object[]{model.getCompanyId()});		if(null != lst && !lst.isEmpty()){			for(Ap ap:lst){				//修改所有AP登录成功链接				if(null != model.getSuccessUrl() && "" != model.getSuccessUrl()){					ap.setSuccessUrl(model.getSuccessUrl());				}				//修改AP认证方式				iApDAO.save(ap);			}		}
}

  上面是完整的action实现,本次记录主要是说明在实现action中遇到的问题和考虑不周的地方。

首先是判断前台传回的认证IDS串是否为空,如果不为空的话就删除原有的认证方式,然后就保存IDS的认证方式,首先找到authtype中的实体(通过IDS中id),通过CompanyId找到Company实体。最后new  CompanyAuthType,最用set方法和save方法保存记录。注意:在保存之前要判断认证实体和商家实体是否为空,在不为空的情况下保存。

然后还要修改商家下所有Ap的登录成功链接。在修改之前要判断通过model获得的成功链接是否为空,再保存。