package cn.com.lzt.appversion.service.impl; import cn.com.lzt.appversion.entity.AppVersionEntity; import cn.com.lzt.appversion.service.AppVersionServiceI; import cn.com.lzt.common.dao.RedisDao; import cn.com.lzt.common.service.TSysFileServiceI; import cn.com.lzt.common.util.CustomerConstant; import org.jeecgframework.core.common.service.impl.CommonServiceImpl; import org.jeecgframework.core.util.ApplicationContextUtil; import org.jeecgframework.core.util.MyClassLoader; import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.web.cgform.enhance.CgformEnhanceJavaInter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.Serializable; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; @Service("appVersionService") @Transactional public class AppVersionServiceImpl extends CommonServiceImpl implements AppVersionServiceI { @Autowired private TSysFileServiceI tSysFileService; @Autowired private RedisDao redisDao; public void delete(AppVersionEntity entity) throws Exception{ super.delete(entity); //执行删除操作增强业务 this.doDelBus(entity); //添加删除文件 tSysFileService.deleteByBusiId(entity.getId(), CustomerConstant.APPVERSION); //更新缓存中版本号 AppVersionEntity appVersionNew = this.findNewAppVersion(entity.getSystemFlag()); if(appVersionNew != null){ Map param = new HashMap(); param.put("versionCode", appVersionNew.getVersionCode()); param.put("systemFlag", appVersionNew.getSystemFlag()); param.put("updateFlag", appVersionNew.getUpdateFlag()); try { redisDao.save(CustomerConstant.APPVERSION_FLAG + appVersionNew.getSystemFlag(), param); } catch (Exception e) { e.printStackTrace(); } }else{ try { redisDao.delete(CustomerConstant.APPVERSION_FLAG + entity.getSystemFlag()); } catch (Exception e) { e.printStackTrace(); } } } public Serializable save(AppVersionEntity entity) throws Exception{ Serializable t = super.save(entity); //执行新增操作增强业务 this.doAddBus(entity); return t; } public Serializable save(AppVersionEntity entity, String tempBusiId) throws Exception{ Serializable t = super.save(entity); tSysFileService.updateBusiIdWithTempBusiId(tempBusiId, entity.getId()); //更新缓存中版本号 AppVersionEntity appVersionNew = this.findNewAppVersion(entity.getSystemFlag()); if(appVersionNew != null){ Map param = new HashMap(); param.put("versionCode", appVersionNew.getVersionCode()); param.put("systemFlag", appVersionNew.getSystemFlag()); param.put("updateFlag", appVersionNew.getUpdateFlag()); try { redisDao.save(CustomerConstant.APPVERSION_FLAG + appVersionNew.getSystemFlag(), param); } catch (Exception e) { e.printStackTrace(); } }else{ try { redisDao.delete(CustomerConstant.APPVERSION_FLAG + entity.getSystemFlag()); } catch (Exception e) { e.printStackTrace(); } } return t; } public Serializable saveAndUpdateRedis(AppVersionEntity entity, String tempBusiId) throws Exception{ Serializable t = super.save(entity); tSysFileService.updateBusiIdWithTempBusiId(tempBusiId, entity.getId()); //将最新版本号存入redis Map param = new HashMap(); param.put("versionCode", entity.getVersionCode()); param.put("systemFlag", entity.getSystemFlag()); param.put("updateFlag", entity.getUpdateFlag()); try { redisDao.save(CustomerConstant.APPVERSION_FLAG + entity.getSystemFlag(), param); } catch (Exception e) { e.printStackTrace(); } return t; } public void saveOrUpdate(AppVersionEntity entity) throws Exception{ super.saveOrUpdate(entity); //执行更新操作增强业务 this.doUpdateBus(entity); } public void saveOrUpdate(AppVersionEntity entity, String tempBusiId) throws Exception{ super.saveOrUpdate(entity); tSysFileService.updateBusiIdWithTempBusiId(tempBusiId, entity.getId()); //更新时需要更新版本号信息,将最新的版本号放入redis缓存 AppVersionEntity appVersion = this.findNewAppVersion(entity.getSystemFlag()); if(appVersion != null){ Map param = new HashMap(); param.put("versionCode", appVersion.getVersionCode()); param.put("systemFlag", appVersion.getSystemFlag()); param.put("updateFlag", appVersion.getUpdateFlag()); try { redisDao.save(CustomerConstant.APPVERSION_FLAG + appVersion.getSystemFlag(), param); } catch (Exception e) { e.printStackTrace(); } } } /** * 查询最新版本的app安装包信息 * * @return */ public AppVersionEntity findNewAppVersion(String systemFlag) { List versionInfoList = this.findHql( "FROM AppVersionEntity WHERE systemFlag=? ORDER BY createDate DESC", systemFlag); if(versionInfoList != null && versionInfoList.size() > 0 ){ return versionInfoList.get(0); } return null; } /** * 新增操作增强业务 * @param t * @return */ private void doAddBus(AppVersionEntity t) throws Exception{ //-----------------sql增强 start---------------------------- //-----------------sql增强 end------------------------------ //-----------------java增强 start--------------------------- //-----------------java增强 end----------------------------- } /** * 更新操作增强业务 * @param t * @return */ private void doUpdateBus(AppVersionEntity t) throws Exception{ //-----------------sql增强 start---------------------------- //-----------------sql增强 end------------------------------ //-----------------java增强 start--------------------------- //-----------------java增强 end----------------------------- } /** * 删除操作增强业务 * @param id * @return */ private void doDelBus(AppVersionEntity t) throws Exception{ //-----------------sql增强 start---------------------------- //-----------------sql增强 end------------------------------ //-----------------java增强 start--------------------------- //-----------------java增强 end----------------------------- } private Map populationMap(AppVersionEntity t){ Map map = new HashMap(); map.put("id", t.getId()); map.put("version_code", t.getVersionCode()); map.put("system_flag", t.getSystemFlag()); map.put("update_flag", t.getUpdateFlag()); map.put("remark", t.getRemark()); map.put("create_name", t.getCreateName()); map.put("create_by", t.getCreateBy()); map.put("create_date", t.getCreateDate()); map.put("update_name", t.getUpdateName()); map.put("update_by", t.getUpdateBy()); map.put("update_date", t.getUpdateDate()); return map; } /** * 替换sql中的变量 * @param sql * @param t * @return */ public String replaceVal(String sql,AppVersionEntity t){ sql = sql.replace("#{id}",String.valueOf(t.getId())); sql = sql.replace("#{version_code}",String.valueOf(t.getVersionCode())); sql = sql.replace("#{system_flag}",String.valueOf(t.getSystemFlag())); sql = sql.replace("#{update_flag}",String.valueOf(t.getUpdateFlag())); sql = sql.replace("#{remark}",String.valueOf(t.getRemark())); sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName())); sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy())); sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate())); sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName())); sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy())); sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate())); sql = sql.replace("#{UUID}",UUID.randomUUID().toString()); return sql; } /** * 执行JAVA增强 */ private void executeJavaExtend(String cgJavaType,String cgJavaValue,Map data) throws Exception { if(StringUtil.isNotEmpty(cgJavaValue)){ Object obj = null; try { if("class".equals(cgJavaType)){ //因新增时已经校验了实例化是否可以成功,所以这块就不需要再做一次判断 obj = MyClassLoader.getClassByScn(cgJavaValue).newInstance(); }else if("spring".equals(cgJavaType)){ obj = ApplicationContextUtil.getContext().getBean(cgJavaValue); } if(obj instanceof CgformEnhanceJavaInter){ CgformEnhanceJavaInter javaInter = (CgformEnhanceJavaInter) obj; javaInter.execute("t_bus_app_version",data); } } catch (Exception e) { e.printStackTrace(); throw new Exception("执行JAVA增强出现异常!"); } } } }