本文仅供自己日后查找所用。
首先我要做的是在设置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获得的成功链接是否为空,再保存。