소스 검색

丰富功能,更改为新的dao访问方式

周浩 9 년 전
부모
커밋
0187f03e16

+ 7 - 10
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/AbstractServiceImpl.java

@@ -1,7 +1,6 @@
 package org.hsweb.web.service.impl;
 
-import org.hsweb.web.bean.common.PagerResult;
-import org.hsweb.web.bean.common.QueryParam;
+import org.hsweb.web.bean.common.*;
 import org.hsweb.web.bean.po.GenericPo;
 import org.hsweb.web.bean.valid.ValidResults;
 import org.hsweb.web.dao.GenericMapper;
@@ -16,6 +15,7 @@ import java.util.List;
 /**
  * Created by 浩 on 2016-01-22 0022.
  */
+@Transactional(rollbackFor = Throwable.class)
 public abstract class AbstractServiceImpl<Po, PK> implements GenericService<Po, PK> {
     protected Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -25,6 +25,7 @@ public abstract class AbstractServiceImpl<Po, PK> implements GenericService<Po,
     @Transactional(readOnly = true)
     public PagerResult<Po> selectPager(QueryParam param) throws Exception {
         PagerResult<Po> pagerResult = new PagerResult<>();
+        param.setPaging(false);
         int total = getMapper().total(param);
         pagerResult.setTotal(total);
         //根据实际记录数量重新指定分页参数
@@ -34,9 +35,8 @@ public abstract class AbstractServiceImpl<Po, PK> implements GenericService<Po,
     }
 
     @Override
-    @Transactional(rollbackFor = Throwable.class)
     public PK insert(Po data) throws Exception {
-        getMapper().insert(data);
+        getMapper().insert(new InsertParam<>(data));
         if (data instanceof GenericPo) {
             return (PK) ((GenericPo) data).getU_id();
         }
@@ -44,23 +44,20 @@ public abstract class AbstractServiceImpl<Po, PK> implements GenericService<Po,
     }
 
     @Override
-    @Transactional(rollbackFor = Throwable.class)
     public int delete(PK pk) throws Exception {
-        return getMapper().delete(pk);
+        return getMapper().delete(new DeleteParam().where("primaryKey", pk));
     }
 
     @Override
-    @Transactional(rollbackFor = Throwable.class)
     public int update(Po data) throws Exception {
-        return getMapper().update(data);
+        return getMapper().update(new UpdateParam<>(data));
     }
 
     @Override
-    @Transactional(rollbackFor = Throwable.class)
     public int update(List<Po> data) throws Exception {
         int i = 0;
         for (Po po : data) {
-            i += getMapper().update(po);
+            i += getMapper().update(new UpdateParam<>(po));
         }
         return i;
     }

+ 7 - 0
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/config/ConfigServiceImpl.java

@@ -7,6 +7,7 @@ import org.hsweb.web.service.impl.AbstractServiceImpl;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
 import org.webbuilder.utils.common.StringUtils;
 
 import javax.annotation.Resource;
@@ -162,4 +163,10 @@ public class ConfigServiceImpl extends AbstractServiceImpl<Config, String> imple
     }
 
 
+    @Override
+    public String insert(Config data) throws Exception {
+        Config old = this.selectByPk(data.getU_id());
+        Assert.isNull(old, "配置已存在,请勿重复添加!");
+        return super.insert(data);
+    }
 }

+ 92 - 0
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/DynamicFormServiceImpl.java

@@ -0,0 +1,92 @@
+package org.hsweb.web.service.impl.form;
+
+import org.hsweb.web.bean.common.PagerResult;
+import org.hsweb.web.bean.common.QueryParam;
+import org.hsweb.web.bean.po.form.Form;
+import org.hsweb.web.service.form.DynamicFormService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+/**
+ * Created by zhouhao on 16-4-14.
+ */
+@Service("dynamicFormService")
+public class DynamicFormServiceImpl implements DynamicFormService {
+    private ReadWriteLock lock = new ReentrantReadWriteLock();
+
+    @Override
+    public void deploy(Form form) throws Exception {
+        Lock writeLock = lock.writeLock();
+        try {
+            writeLock.lock();
+            System.out.println("初始化");
+            Thread.sleep(3000);
+            System.out.println("初始化完成");
+        } finally {
+            writeLock.unlock();
+        }
+    }
+
+    @Override
+    public void unDeploy(Form form) throws Exception {
+        Lock writeLock = lock.writeLock();
+        try {
+            writeLock.lock();
+            System.out.println("初始化");
+            Thread.sleep(3000);
+            System.out.println("初始化完成");
+        } finally {
+            writeLock.unlock();
+        }
+    }
+
+    @Override
+    public <T> PagerResult<T> selectPager(String name, QueryParam param) throws Exception {
+        Lock readLock = lock.readLock();
+        try {
+            readLock.lock();
+            System.out.println("执行");
+            Thread.sleep(1000);
+        } finally {
+            readLock.unlock();
+        }
+        return null;
+    }
+
+    @Override
+    public <T> List<T> select(String name, QueryParam param) throws Exception {
+        return null;
+    }
+
+    @Override
+    public int total(String name, QueryParam param) throws Exception {
+        return 0;
+    }
+
+    @Override
+    public int insert(String name, Map<String, Object> data) throws Exception {
+        return 0;
+    }
+
+    @Override
+    public int delete(String name, Map<String, Object> data) throws Exception {
+        return 0;
+    }
+
+    @Override
+    public int update(String name, Map<String, Object> data) throws Exception {
+        return 0;
+    }
+
+    @Override
+    public <T> T selectByPk(String name, Object pk) throws Exception {
+        return null;
+    }
+
+
+}

+ 64 - 7
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/form/FormServiceImpl.java

@@ -1,17 +1,23 @@
 package org.hsweb.web.service.impl.form;
 
+import org.hsweb.web.bean.common.QueryParam;
+import org.hsweb.web.bean.common.UpdateParam;
 import org.hsweb.web.bean.po.form.Form;
 import org.hsweb.web.dao.GenericMapper;
 import org.hsweb.web.dao.form.FormMapper;
 import org.hsweb.web.exception.BusinessException;
+import org.hsweb.web.service.form.DynamicFormService;
 import org.hsweb.web.service.form.FormService;
 import org.hsweb.web.service.impl.AbstractServiceImpl;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.Assert;
 
 import javax.annotation.Resource;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 自定义表单服务类
@@ -30,18 +36,26 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
         return formMapper;
     }
 
+    @Resource
+    protected DynamicFormService dynamicFormService;
+
     @Override
     @Cacheable(value = CACHE_KEY, key = "#id")
     public Form selectByPk(String id) throws Exception {
         return super.selectByPk(id);
     }
 
+    @Override
+    public String createNewVersion(String oldVersionId) throws Exception {
+        return null;
+    }
+
     @Override
     public String insert(Form data) throws Exception {
-        Form old = this.selectByPk(data.getU_id());
-        if (old != null)
-            throw new BusinessException("该表单已存在!");
+        List<Form> old = this.select(new QueryParam().where("name", data.getName()));
+        Assert.notEmpty(old, "表单 [" + data.getName() + "] 已存在!");
         data.setCreate_date(new Date());
+        data.setVersion(1);
         super.insert(data);
         return data.getU_id();
     }
@@ -50,16 +64,59 @@ public class FormServiceImpl extends AbstractServiceImpl<Form, String> implement
     @CacheEvict(value = CACHE_KEY, key = "#data.u_id")
     public int update(Form data) throws Exception {
         Form old = this.selectByPk(data.getU_id());
-        if (old == null)
-            throw new BusinessException("该表单不存在!");
+        Assert.isNull(old, "表单不存在!");
         data.setUpdate_date(new Date());
         return super.update(data);
     }
 
     @Override
-    public int delete(String s) throws Exception {
-        throw new BusinessException("此服务已关闭!");
+    @CacheEvict(value = CACHE_KEY, key = "#id")
+    public int delete(String id) throws Exception {
+        Form old = this.selectByPk(id);
+        Assert.isNull(old, "表单不存在!");
+        Assert.isTrue(old.isUsing(), "表单正在使用,无法删除!");
+        return super.delete(id);
     }
 
+    @Override
+    @Transactional(readOnly = true)
+    public List<Form> selectLatestList(QueryParam param) throws Exception {
+        return formMapper.selectLatestList(param);
+    }
 
+    @Override
+    @Transactional(readOnly = true)
+    public int countLatestList(QueryParam param) throws Exception {
+        return formMapper.countLatestList(param);
+    }
+
+    @Override
+    public void deploy(String formId) throws Exception {
+        Form old = this.selectByPk(formId);
+        Assert.isNull(old, "表单不存在");
+        //先卸载正在使用的表单
+        Form using = getMapper().selectUsing(old.getName());
+        if (using != null) {
+            this.unDeploy(using.getU_id());
+        }
+        //开始发布
+        old.setUsing(true);
+        dynamicFormService.deploy(old);
+    }
+
+    @Override
+    public void unDeploy(String formId) throws Exception {
+        Form old = this.selectByPk(formId);
+        Assert.isNull(old, "表单不存在");
+        dynamicFormService.unDeploy(old);
+        old.setUsing(false);
+        UpdateParam param = new UpdateParam<>(old);
+        param.includes("using").where("u_id", old.getU_id());
+        getMapper().update(param);
+    }
+
+    @Override
+    public String createHtml(String formId) throws Exception {
+        return null;
+    }
 }

+ 3 - 2
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/role/RoleServiceImpl.java

@@ -1,5 +1,6 @@
 package org.hsweb.web.service.impl.role;
 
+import org.hsweb.web.bean.common.InsertParam;
 import org.hsweb.web.bean.po.role.Role;
 import org.hsweb.web.bean.po.role.RoleModule;
 import org.hsweb.web.dao.role.RoleMapper;
@@ -44,7 +45,7 @@ public class RoleServiceImpl extends AbstractServiceImpl<Role, String> implement
             for (RoleModule module : roleModule) {
                 module.setU_id(RandomUtil.randomChar(6));
                 module.setRole_id(data.getU_id());
-                roleModuleMapper.insert(module);
+                roleModuleMapper.insert(new InsertParam<>(module));
             }
         }
         return id;
@@ -61,7 +62,7 @@ public class RoleServiceImpl extends AbstractServiceImpl<Role, String> implement
             for (RoleModule module : roleModule) {
                 module.setU_id(RandomUtil.randomChar(6));
                 module.setRole_id(data.getU_id());
-                roleModuleMapper.insert(module);
+                roleModuleMapper.insert(new InsertParam<>(module));
             }
         }
         return l;

+ 10 - 7
hsweb-web-service-impl-common/src/main/java/org/hsweb/web/service/impl/user/UserServiceImpl.java

@@ -1,6 +1,8 @@
 package org.hsweb.web.service.impl.user;
 
+import org.hsweb.web.bean.common.InsertParam;
 import org.hsweb.web.bean.common.QueryParam;
+import org.hsweb.web.bean.common.UpdateParam;
 import org.hsweb.web.bean.po.module.Module;
 import org.hsweb.web.bean.po.role.UserRole;
 import org.hsweb.web.bean.po.user.User;
@@ -12,6 +14,7 @@ import org.hsweb.web.service.module.ModuleService;
 import org.hsweb.web.service.user.UserService;
 import org.hsweb.web.utils.RandomUtil;
 import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
 import org.webbuilder.utils.common.MD5;
 
 import javax.annotation.Resource;
@@ -46,20 +49,20 @@ public class UserServiceImpl extends AbstractServiceImpl<User, String> implement
     @Override
     public String insert(User data) throws Exception {
         tryValidPo(data);
-        if (selectByUserName(data.getUsername()) != null) {
-            throw new BusinessException("用户名已存在!");
-        }
+        Assert.isNull(selectByUserName(data.getUsername()), "用户已存在!");
+
         data.setU_id(RandomUtil.randomChar(6));
         data.setCreate_date(new Date());
         data.setUpdate_date(new Date());
         data.setPassword(MD5.encode(data.getPassword()));
-        String id = userMapper.insert(data);
+        userMapper.insert(new InsertParam<>(data));
+        String id = data.getU_id();
         //添加角色关联
         if (data.getUserRoles().size() != 0) {
             for (UserRole userRole : data.getUserRoles()) {
                 userRole.setU_id(RandomUtil.randomChar());
                 userRole.setUser_id(data.getU_id());
-                userRoleMapper.insert(userRole);
+                userRoleMapper.insert(new InsertParam<>(userRole));
             }
         }
         return id;
@@ -77,14 +80,14 @@ public class UserServiceImpl extends AbstractServiceImpl<User, String> implement
             data.setPassword(MD5.encode(data.getPassword()));
             userMapper.updatePassword(data);
         }
-        int i = userMapper.update(data);
+        int i = userMapper.update(new UpdateParam<>(data));
         if (data.getUserRoles().size() != 0) {
             //删除所有
             userRoleMapper.deleteByUserId(data.getU_id());
             for (UserRole userRole : data.getUserRoles()) {
                 userRole.setU_id(RandomUtil.randomChar());
                 userRole.setUser_id(data.getU_id());
-                userRoleMapper.insert(userRole);
+                userRoleMapper.insert(new InsertParam<>(userRole));
             }
         }
         return i;