Pārlūkot izejas kodu

用户菜单以及用户功能

zdm 7 gadi atpakaļ
vecāks
revīzija
cad8251954
25 mainītis faili ar 915 papildinājumiem un 216 dzēšanām
  1. 18 0
      common/common-entity/src/main/java/META-INF/persistence.xml
  2. 0 1
      common/common-entity/src/main/java/com/yihu/jw/base/user/BaseEmployRoleDO.java
  3. 31 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseLoginRequestMapping.java
  4. 51 0
      common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseUserRequestMapping.java
  5. 17 0
      svr/svr-base/src/main/java/META-INF/persistence.xml
  6. 17 1
      svr/svr-base/src/main/java/com/yihu/jw/business/login/dao/BaseLoginAccountDao.java
  7. 75 0
      svr/svr-base/src/main/java/com/yihu/jw/business/login/service/BaseLoginAccountService.java
  8. 95 0
      svr/svr-base/src/main/java/com/yihu/jw/business/user/contorller/BaseMenuController.java
  9. 32 0
      svr/svr-base/src/main/java/com/yihu/jw/business/user/dao/BaseMenuDao.java
  10. 20 0
      svr/svr-base/src/main/java/com/yihu/jw/business/user/dao/BaseRoleMenuDao.java
  11. 2 2
      svr/svr-base/src/main/java/com/yihu/jw/business/user/dao/EmployDao.java
  12. 1 1
      svr/svr-base/src/main/java/com/yihu/jw/business/user/dao/EmployRoleDao.java
  13. 137 0
      svr/svr-base/src/main/java/com/yihu/jw/business/user/service/BaseMenuService.java
  14. 100 0
      svr/svr-base/src/main/java/com/yihu/jw/business/user/service/BaseRoleMenuService.java
  15. 10 0
      svr/svr-base/src/main/java/com/yihu/jw/business/user/service/EmployRoleService.java
  16. 0 16
      svr/svr-base/src/main/java/com/yihu/jw/cache/Cache.java
  17. 0 75
      svr/svr-base/src/main/java/com/yihu/jw/cache/MapCache.java
  18. 0 67
      svr/svr-base/src/main/java/com/yihu/jw/cache/RedisCache.java
  19. 0 25
      svr/svr-base/src/main/java/com/yihu/jw/cache/model/LoginCacheModel.java
  20. 0 25
      svr/svr-base/src/main/java/com/yihu/jw/cache/model/RoleCacheModel.java
  21. 14 1
      web-gateway/src/main/java/com/yihu/jw/commnon/base/user/BaseUserContants.java
  22. 147 0
      web-gateway/src/main/java/com/yihu/jw/controller/base/user/BaseMenuController.java
  23. 1 2
      web-gateway/src/main/java/com/yihu/jw/controller/base/user/EmployController.java
  24. 65 0
      web-gateway/src/main/java/com/yihu/jw/feign/base/user/BaseMenuFeign.java
  25. 82 0
      web-gateway/src/main/java/com/yihu/jw/feign/fallbackfactory/base/user/BaseMenuFeignFallbackFactory.java

+ 18 - 0
common/common-entity/src/main/java/META-INF/persistence.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name="NewPersistenceUnit">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>com.yihu.jw.base.user.BaseLoginAccountDO</class>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:mysql://172.19.103.77:3306/"/>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.username" value=""/>
            <property name="hibernate.connection.password" value=""/>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

+ 0 - 1
common/common-entity/src/main/java/com/yihu/jw/base/user/BaseEmployRoleDO.java

@ -4,7 +4,6 @@ import com.yihu.jw.IdEntity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**

+ 31 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseLoginRequestMapping.java

@ -0,0 +1,31 @@
package com.yihu.jw.rm.base;
public class BaseLoginRequestMapping {
    public static final String api_common = BaseRequestMapping.api_base_common + "/login";
    /**
     * 用户账号类型
     */
    public static class BaseLoginAccount {
        public static final String api_create = "/baseLoginAccount";
        public static final String api_update = "/baseLoginAccount";
        public static final String api_delete = "/baseLoginAccount/{ids}";
        public static final String api_getById = "/baseLoginAccount/{id}";
        public static final String api_getOne="/baseLoginAccount";
        public static final String message_success_create = "baseLoginAccount create success";
        public static final String message_success_update = "baseLoginAccount update success";
        public static final String message_success_find = "baseLoginAccount find success";
        public static final String message_success_delete = "baseLoginAccount delete success";
        public static final String message_fail_id_is_null = "id is null";
        public static final String message_fail_saasid_is_null = "saasId is null";
        public static final String message_fail_id_no_exist = "id no exist";
        public static final String message_fail_saasid_no_exist = "saasId no exist";
        public static final String message_fail_role_no_exist = "baseLoginAccount no exist";
        public static final String message_param_id_is_null = "baseLoginAccount id param cannot be null";
        public static final String message_param_saasid_is_null = "baseLoginAccount saasId param cannot be null";
    }
}

+ 51 - 0
common/common-request-mapping/src/main/java/com/yihu/jw/rm/base/BaseUserRequestMapping.java

@ -84,4 +84,55 @@ public class BaseUserRequestMapping {
        public static final String message_fail_employeeRole_no_exist = "employeeRole no exist";
    }
    /**
     * 基础菜单
     */
    public class BaseMenu {
        public static final String api_create = "/baseMenu";
        public static final String api_update = "/baseMenu";
        public static final String api_delete = "/baseMenu/{ids}";
        public static final String api_getOne = "/baseMenu/{id}";
        public static final String api_getchildren = "/baseMenu/{id}";
        public static final String api_getList="/baseMenu/list";
        public static final String api_getListNoPage="/baseMenu/listNoPage";
        public static final String message_success_create="baseMenu create success";
        public static final String message_success_update="update baseMenu success";
        public static final String message_success_delete="baseMenu delete success";
        public static final String message_success_find="baseMenu find success";
        public static final String message_fail_saasId_is_null = "saasId is null";
        public static final String message_fail_menuId_is_null = "menuId is null";
        public static final String message_fail_id_is_null = "id is null";
        public static final String message_fail_id_no_exist = "id no exist";
        public static final String message_fail_saasId_no_exist = "saasId no exist";
        public static final String message_param_saasid_is_null = "baseMenu saasId param cannot be null";
        public static final String message_param_parentId_is_null = "baseMenu parentId param cannot be null";
    }
    /**
     * 角色菜单
     */
    public class BaseRoleMenu {
        public static final String api_create = "/baseRoleMenu";
        public static final String api_update = "/baseRoleMenu";
        public static final String api_delete = "/baseRoleMenu/{ids}";
        public static final String api_getList="/baseRoleMenu/list";
        public static final String api_getListNoPage="/baseRoleMenu/listNoPage";
        public static final String message_success_create="baseRoleMenu create success";
        public static final String message_success_update="update baseRoleMenu success";
        public static final String message_success_delete="baseRoleMenu delete success";
        public static final String message_success_find="baseRoleMenu find success";
        public static final String message_fail_roleId_is_null = "roleId is null";
        public static final String message_fail_menuId_is_null = "menuId is null";
        public static final String message_fail_id_is_null = "id is null";
        public static final String message_fail_same_menuId = "same menuId";
        public static final String message_fail_baseRoleMenu_no_exist = "baseRoleMenu no exist";
    }
}

+ 17 - 0
svr/svr-base/src/main/java/META-INF/persistence.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    <persistence-unit name="NewPersistenceUnit">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <properties>
            <property name="hibernate.connection.url" value=""/>
            <property name="hibernate.connection.driver_class" value=""/>
            <property name="hibernate.connection.username" value=""/>
            <property name="hibernate.connection.password" value=""/>
            <property name="hibernate.archive.autodetection" value="class"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

+ 17 - 1
svr/svr-base/src/main/java/com/yihu/jw/business/login/dao/BaseLoginAccountDao.java

@ -2,10 +2,26 @@ package com.yihu.jw.business.login.dao;
import com.yihu.jw.base.login.BaseLoginAccountDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
/**
 * Created by chenweida on 2017/6/20.
 * Created by LiTaohong on 2017/12/05.
 * 账户表,识别用户类型,医生,行政人员等
 */
public interface BaseLoginAccountDao extends PagingAndSortingRepository<BaseLoginAccountDO, String>, JpaSpecificationExecutor<BaseLoginAccountDO> {
    /**
     * 删除用户账号
     * @param id
     */
    @Query("update BaseLoginAccountDO ba set ba.accountStatus = -1 where ba.id = ?1")
    void deleteAccount(String id);
    /**
     * 锁定用户账号
     * @param id
     */
    @Query("update BaseLoginAccountDO ba set ba.accountStatus = -2 where ba.id = ?1")
    void updateAccount(String id);
}

+ 75 - 0
svr/svr-base/src/main/java/com/yihu/jw/business/login/service/BaseLoginAccountService.java

@ -0,0 +1,75 @@
package com.yihu.jw.business.login.service;
import com.yihu.base.mysql.query.BaseJpaService;
import com.yihu.jw.base.login.BaseLoginAccountDO;
import com.yihu.jw.business.login.dao.BaseLoginAccountDao;
import com.yihu.jw.exception.ApiException;
import com.yihu.jw.exception.code.ExceptionCode;
import com.yihu.jw.rm.base.BaseUserRequestMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
/**
 * Created by LiTaohong on 2017/12/5.
 * 用户账户功能
 */
@Service
public class BaseLoginAccountService extends BaseJpaService<BaseLoginAccountDO,BaseLoginAccountDao> {
    @Autowired
    private BaseLoginAccountDao baseLoginAccountDao;
    /**
     * 创建账户
     * @param baseLoginAccountDO
     * @return
     */
    @Transactional
    public BaseLoginAccountDO createBaseLoginAccount(BaseLoginAccountDO baseLoginAccountDO){
        if (StringUtils.isEmpty(baseLoginAccountDO.getId())) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_id_is_null, ExceptionCode.common_error_params_code);
        }
        if (StringUtils.isEmpty(baseLoginAccountDO.getSaasId())) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_saasId_is_null, ExceptionCode.common_error_params_code);
        }
        return this.baseLoginAccountDao.save(baseLoginAccountDO);
    }
    /**
     * 修改账户
     * @param baseLoginAccountDO
     * @return
     */
    @Transactional
    public BaseLoginAccountDO updateBaseLoginAccount(BaseLoginAccountDO baseLoginAccountDO){
        return this.baseLoginAccountDao.save(baseLoginAccountDO);
    }
    /**
     * 锁定账户
     * @param id
     * @return
     */
    @Transactional
    public void lockBaseLoginAccount(String id){
         this.baseLoginAccountDao.updateAccount(id);
    }
    /**
     * 删除账户
     * @param id
     * @return
     */
    @Transactional
    public void deleteBaseLoginAccount(String id){
         this.baseLoginAccountDao.deleteAccount(id);
    }
}

+ 95 - 0
svr/svr-base/src/main/java/com/yihu/jw/business/user/contorller/BaseMenuController.java

@ -0,0 +1,95 @@
package com.yihu.jw.business.user.contorller;
import com.yihu.jw.base.user.BaseMenuDO;
import com.yihu.jw.base.user.BaseRoleDO;
import com.yihu.jw.business.user.service.BaseMenuService;
import com.yihu.jw.exception.ApiException;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.EnvelopRestController;
import com.yihu.jw.rm.base.BaseUserRequestMapping;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
/**
 * Created by LiTaohong on 2017/11/28.
 */
@RestController
@RequestMapping("/menu")
@Api(description = "基础菜单")
public class BaseMenuController extends EnvelopRestController {
    @Autowired
    private BaseMenuService baseMenuService;
    @PostMapping(value = BaseUserRequestMapping.BaseMenu.api_create, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "创建菜单", notes = "创建单个菜单")
    public Envelop createBaseMenu(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
        try{
            BaseMenuDO baseMenuDO = toEntity(jsonData,BaseMenuDO.class);
            return Envelop.getSuccess(BaseUserRequestMapping.BaseMenu.message_success_create,baseMenuService.createBaseMenu(baseMenuDO));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @PostMapping(value = BaseUserRequestMapping.BaseMenu.api_update, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "修改菜单", notes = "修改菜单")
    public Envelop updateBaseMenu(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
        try{
            BaseMenuDO baseMenuDO = toEntity(jsonData,BaseMenuDO.class);
            return Envelop.getSuccess(BaseUserRequestMapping.BaseMenu.message_success_update,baseMenuService.updateBaseMenuDO(baseMenuDO));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @PostMapping(value = BaseUserRequestMapping.BaseMenu.api_getOne, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询单个菜单", notes = "根据菜单id查询菜单信息")
    public Envelop getOneMenuById(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
        try{
            BaseMenuDO baseMenuDO = toEntity(jsonData,BaseMenuDO.class);
            return Envelop.getSuccess(BaseUserRequestMapping.BaseMenu.message_success_find,baseMenuService.findById(baseMenuDO.getId()));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @PostMapping(value = BaseUserRequestMapping.BaseMenu.api_getchildren, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询单个菜单的所有子菜单信息", notes = "根据平台和菜单名称查询菜单信息")
    public Envelop getChlidrenMenuList(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestParam String saasId,
                                       @ApiParam(name = "json_data", value = "", defaultValue = "") @RequestParam String parentId){
        try{
            return Envelop.getSuccess(BaseUserRequestMapping.BaseMenu.message_success_find,baseMenuService.getChlidrenMenuList(saasId,parentId));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @PostMapping(value = BaseUserRequestMapping.BaseMenu.api_getList, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "查询多个菜单", notes = "根据平台saasId查询所有菜单信息")
    public Envelop getMenuListBySaasId(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
        try{
            BaseMenuDO baseMenuDO = toEntity(jsonData,BaseMenuDO.class);
            return Envelop.getSuccess(BaseUserRequestMapping.BaseMenu.message_success_find,baseMenuService.findAllBySaasId(baseMenuDO.getSaasId()));
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
    @PostMapping(value = BaseUserRequestMapping.BaseMenu.api_delete, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "批量删除菜单", notes = "删除某一平台saasId下所有菜单信息")
    public Envelop deleteMenusBySaasId(@ApiParam(name = "json_data", value = "", defaultValue = "") @RequestBody String jsonData){
        try{
            BaseMenuDO baseMenuDO = toEntity(jsonData,BaseMenuDO.class);
            baseMenuService.deleteBaseMenusBySaasId(baseMenuDO.getSaasId());
            return Envelop.getSuccess(BaseUserRequestMapping.BaseMenu.message_success_delete);
        } catch (ApiException e){
            return Envelop.getError(e.getMessage(), e.getErrorCode());
        }
    }
}

+ 32 - 0
svr/svr-base/src/main/java/com/yihu/jw/business/user/dao/BaseMenuDao.java

@ -0,0 +1,32 @@
package com.yihu.jw.business.user.dao;
import com.yihu.jw.base.user.BaseMenuDO;
import com.yihu.jw.base.user.BaseMenuDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by LiTaohong on 2017/12/05.
 */
public interface BaseMenuDao extends PagingAndSortingRepository<BaseMenuDO, String>, JpaSpecificationExecutor<BaseMenuDO> {
    //角色与saasId为一对多关系
    @Query("from BaseMenuDO b where b.saasId = ?1")
    List<BaseMenuDO> findAllBySaasId(String saasId);
    @Query("from BaseMenuDO b where b.saasId = ?1 and b.name = ?2")
    BaseMenuDO findOneBySaasIdAndName(String saasId, String name);
    @Query("from BaseMenuDO b where b.name like %?1%")
    List<BaseMenuDO> findAllByName(String name);
    @Query("from BaseMenuDO b where b.saasId = 1? and b.parentId = ?2")
    List<BaseMenuDO> getChildrenMenuList(String saasId,String parentId);
}

+ 20 - 0
svr/svr-base/src/main/java/com/yihu/jw/business/user/dao/BaseRoleMenuDao.java

@ -0,0 +1,20 @@
package com.yihu.jw.business.user.dao;
import com.yihu.jw.base.user.BaseEmployRoleDO;
import com.yihu.jw.base.user.BaseRoleDO;
import com.yihu.jw.base.user.BaseRoleMenuDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
/**
 * Created by LiTaohong on 2017/11/28.
 */
public interface BaseRoleMenuDao extends PagingAndSortingRepository<BaseRoleMenuDO, String>, JpaSpecificationExecutor<BaseRoleMenuDO> {
    @Query("from BaseRoleMenuDO ba where ba.roleId = ?1")
    List<BaseRoleMenuDO> findRoleMenuListByRoleId(String employId);
}

+ 2 - 2
svr/svr-base/src/main/java/com/yihu/jw/business/user/dao/EmployDao.java

@ -16,9 +16,9 @@ import java.util.List;
 */
public interface EmployDao extends PagingAndSortingRepository<BaseEmployDO, String>, JpaSpecificationExecutor<BaseEmployDO> {
    @Query("from BaseEmployDO ba where ba.saasId = 1?")
    @Query("from BaseEmployDO ba where ba.saasId = ?1")
    List<BaseEmployDO> findAllBySaasId(String saasId);
    @Query("from BaseEmployDO ba where ba.name like 2? and ba.saasId = 1?")
    @Query("from BaseEmployDO ba where ba.name like ?1 and ba.saasId = ?2")
    List<BaseEmployDO> findAllByNameAndSaasId(String name,String saasId);
}

+ 1 - 1
svr/svr-base/src/main/java/com/yihu/jw/business/user/dao/EmployRoleDao.java

@ -13,6 +13,6 @@ import java.util.List;
 */
public interface EmployRoleDao extends PagingAndSortingRepository<BaseEmployRoleDO, String>, JpaSpecificationExecutor<BaseEmployRoleDO> {
    @Query("from BaseEmployRoleDO ba where ba.employId = 1?")
    @Query("from BaseEmployRoleDO ba where ba.employId = ?1")
    List<BaseEmployRoleDO> findRoleListByEmployId(String employId);
}

+ 137 - 0
svr/svr-base/src/main/java/com/yihu/jw/business/user/service/BaseMenuService.java

@ -0,0 +1,137 @@
package com.yihu.jw.business.user.service;
import com.yihu.base.mysql.query.BaseJpaService;
import com.yihu.jw.base.user.BaseMenuDO;
import com.yihu.jw.base.user.BaseMenuDO;
import com.yihu.jw.business.user.dao.BaseMenuDao;
import com.yihu.jw.exception.ApiException;
import com.yihu.jw.exception.code.ExceptionCode;
import com.yihu.jw.rm.base.BaseUserRequestMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.List;
/**
 * Created by LiTaohong on 2017/12/5.
 * 基础菜单功能
 */
@Service
public class BaseMenuService extends BaseJpaService<BaseMenuDO,BaseMenuDao>{
    @Autowired
    private BaseMenuDao baseMenuDao;
    /**
     * 创建菜单
     * @param baseMenuDO
     * @return
     */
    @Transactional
    public BaseMenuDO createBaseMenu(BaseMenuDO baseMenuDO){
        if (StringUtils.isEmpty(baseMenuDO.getId())) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_id_is_null, ExceptionCode.common_error_params_code);
        }
        if (StringUtils.isEmpty(baseMenuDO.getSaasId())) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_saasId_is_null, ExceptionCode.common_error_params_code);
        }
        return this.baseMenuDao.save(baseMenuDO);
    }
    /**
     * 更新菜单
     * @param baseMenuDO
     * @return
     */
    @Transactional
    public BaseMenuDO updateBaseMenuDO(BaseMenuDO baseMenuDO){
        if (StringUtils.isEmpty(baseMenuDO.getId())) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_id_is_null, ExceptionCode.common_error_params_code);
        }
        if (StringUtils.isEmpty(baseMenuDO.getSaasId())) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_saasId_is_null, ExceptionCode.common_error_params_code);
        }
        return this.baseMenuDao.save(baseMenuDO);
    }
    /**
     * 根据Id查询菜单
     * @param id
     * @return
     */
    public BaseMenuDO findById(String id){
        if (StringUtils.isEmpty(id)) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_id_is_null,ExceptionCode.common_error_params_code);
        }
        BaseMenuDO baseRoleDO = this.baseMenuDao.findOne(id);
        if (null == baseRoleDO) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_id_no_exist,ExceptionCode.common_error_params_code);
        }
        return baseRoleDO;
    }
    /**
     * 查询某要saasId平台下的所有菜单
     * @param saasId
     * @return
     */
    public List<BaseMenuDO> findAllBySaasId(String saasId){
        if (StringUtils.isEmpty(saasId)) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_saasId_is_null,ExceptionCode.common_error_params_code);
        }
        List<BaseMenuDO> list = this.baseMenuDao.findAllBySaasId(saasId);
        if (null == list || list.size() == 0) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_saasId_no_exist,ExceptionCode.common_error_params_code);
        }
        return list;
    }
    /**
     * 根据Id删除菜单
     * @param baseMenuDO
     */
    @Transactional
    public void deleteBaseMenu(BaseMenuDO baseMenuDO){
        if (StringUtils.isEmpty(baseMenuDO.getId())) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_id_is_null, ExceptionCode.common_error_params_code);
        }
        if (StringUtils.isEmpty(baseMenuDO.getSaasId())) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_saasId_is_null, ExceptionCode.common_error_params_code);
        }
        baseMenuDO.setStatus(-1);
        this.baseMenuDao.save(baseMenuDO);
    }
    /**
     * 删除某一saasId相关的所有菜单
     * @param saasId
     */
    @Transactional
    public void deleteBaseMenusBySaasId(String saasId){
        if (StringUtils.isEmpty(saasId)) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_fail_saasId_is_null, ExceptionCode.common_error_params_code);
        }
        List<BaseMenuDO> list = this.baseMenuDao.findAllBySaasId(saasId);
        for(BaseMenuDO baseMenuDO:list){
            baseMenuDO.setStatus(-1);
        }
        this.baseMenuDao.save(list);
    }
    /**
     * 获取某一平台下某一父级菜单的所有子菜单
     * @param saasId
     * @param parentId
     * @return
     */
    public List<BaseMenuDO> getChlidrenMenuList(String saasId,String parentId){
        if (StringUtils.isEmpty(saasId)) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_param_saasid_is_null, ExceptionCode.common_error_params_code);
        }
        if (StringUtils.isEmpty(parentId)) {
            throw new ApiException(BaseUserRequestMapping.BaseMenu.message_param_parentId_is_null, ExceptionCode.common_error_params_code);
        }
        return this.baseMenuDao.getChildrenMenuList(saasId,parentId);
    }
}

+ 100 - 0
svr/svr-base/src/main/java/com/yihu/jw/business/user/service/BaseRoleMenuService.java

@ -0,0 +1,100 @@
package com.yihu.jw.business.user.service;
import com.yihu.base.mysql.query.BaseJpaService;
import com.yihu.jw.base.user.BaseRoleMenuDO;
import com.yihu.jw.business.user.dao.BaseRoleMenuDao;
import com.yihu.jw.exception.ApiException;
import com.yihu.jw.exception.code.ExceptionCode;
import com.yihu.jw.rm.base.BaseUserRequestMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.List;
/**
 * Created by LiTaohong on 2017/12/05.
 * 基础角色菜单功能
 */
@Service
public class BaseRoleMenuService extends BaseJpaService<BaseRoleMenuDO,BaseRoleMenuDao> {
    @Autowired
    private BaseRoleMenuDao baseRoleMenuDao;
    /**
     * 新增角色菜单
     * @param baseEmployRoleDO
     * @return
     */
    @Transactional
    public BaseRoleMenuDO createBaseEmployRoleDO(BaseRoleMenuDO baseEmployRoleDO){
        if (StringUtils.isEmpty(baseEmployRoleDO.getRoleId())) {
            throw new ApiException(BaseUserRequestMapping.BaseEmployRole.message_fail_roleId_is_null, ExceptionCode.common_error_params_code);
        }
        return this.baseRoleMenuDao.save(baseEmployRoleDO);
    }
    /**
     * 批量新增角色菜单,一个角色拥有多个菜单的权限
     * @param list
     * @return
     */
    @Transactional
    public void createBatchBaseRoleMenuDO(List<BaseRoleMenuDO> list){
        this.baseRoleMenuDao.save(list);
    }
    /**
     * 修改角色菜单信息
     * @param baseRoleMenuDO
     * @return
     */
    @Transactional
    public BaseRoleMenuDO updateBaseEmployRoleDO(BaseRoleMenuDO baseRoleMenuDO){
        BaseRoleMenuDO OldbaseRoleMenuDO = this.baseRoleMenuDao.findOne(baseRoleMenuDO.getId());
        if(null == OldbaseRoleMenuDO){
            throw new ApiException(BaseUserRequestMapping.BaseRoleMenu.message_fail_baseRoleMenu_no_exist, ExceptionCode.common_error_params_code);
        }
        //菜单id一样,表示菜单没有变,则不修改
        if (baseRoleMenuDO.getMenuId().equals(OldbaseRoleMenuDO.getMenuId())) {
            throw new ApiException(BaseUserRequestMapping.BaseRoleMenu.message_fail_same_menuId, ExceptionCode.common_error_params_code);
        }
        return this.baseRoleMenuDao.save(baseRoleMenuDO);
    }
    /**
     * 查询某一角色的菜单列表(角色与菜单为一对多关系)
     * @param roleId
     * @return
     */
    public List<BaseRoleMenuDO> findAllByRoleId(String roleId){
        if (StringUtils.isEmpty(roleId)) {
            throw new ApiException(BaseUserRequestMapping.BaseRoleMenu.message_fail_roleId_is_null, ExceptionCode.common_error_params_code);
        }
        List<BaseRoleMenuDO> list = this.baseRoleMenuDao.findRoleMenuListByRoleId(roleId);
        if (null == list || list.size() == 0) {
            throw new ApiException(BaseUserRequestMapping.BaseRoleMenu.message_fail_baseRoleMenu_no_exist,ExceptionCode.common_error_params_code);
        }
        return list;
    }
    /**
     * 删除用户角色
     * @param id
     * @return
     */
    @Transactional
    public void deleteBaseRoleMenuDO(String id){
        try{
            this.baseRoleMenuDao.delete(id);
        }
        catch (ApiException e){
            throw new ApiException(BaseUserRequestMapping.BaseRoleMenu.message_fail_id_is_null,ExceptionCode.common_error_params_code);
        }
    }
}

+ 10 - 0
svr/svr-base/src/main/java/com/yihu/jw/business/user/service/EmployRoleService.java

@ -41,6 +41,16 @@ public class EmployRoleService extends BaseJpaService<BaseEmployRoleDO,EmployRol
        return this.employRoleDao.save(baseEmployRoleDO);
    }
    /**
     * 批量新增用户角色,一个用户可能有多个角色
     * @param list
     * @return
     */
    @Transactional
    public void createBatchBaseEmployRoleDO(List<BaseEmployRoleDO> list){
        this.employRoleDao.save(list);
    }
    /**
     * 修改用户角色
     * @param baseEmployRoleDO

+ 0 - 16
svr/svr-base/src/main/java/com/yihu/jw/cache/Cache.java

@ -1,16 +0,0 @@
package com.yihu.jw.cache;
import java.util.Set;
/**
 * Created by LiTaohong on 2017/12/04.
 */
public interface Cache {
    void setData(String module, String key, String value);
    String getData(String module, String key);
    Set<String> keys(String module, String pattern);
    void removeData(String module, String key) throws Exception;
}

+ 0 - 75
svr/svr-base/src/main/java/com/yihu/jw/cache/MapCache.java

@ -1,75 +0,0 @@
package com.yihu.jw.cache;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
/**
 * Created by LiTaohong on 2017/12/04.
 */
@Component
@Scope("singleton")
public class MapCache implements Cache {
    /**
     * 缓存的map,key是module value是对应model的缓存
     */
    private static Map<String, Map<String, String>> cacha = new HashMap<>();
    @Override
    public void setData(String module, String key, String value) {
        //获取map
        Map<String, String> map=cacha.get(module);
        if(map==null){
            map=new HashMap<>();
            cacha.put(module,map);
        }
        //放入缓存
        map.put(key,value);
    }
    @Override
    public String getData(String module, String key) {
        Map<String, String> map=cacha.get(module);
        if(map==null){
            return null;
        }
        return map.get(key);
    }
    /**
     * 通过正则,获取key值
     * @param module
     * @param pattern
     * @return
     */
    @Override
    public Set<String> keys(String module,String pattern) {
        Map<String, String> map=cacha.get(module);
        if(map==null){
            return null;
        }
        Set<String> keys = map.keySet();
        Set<String> newKeys = new HashSet<String>();
        for(String key:keys){
            if(Pattern.matches(pattern, key)){
                newKeys.add(key);
            }
        }
        return newKeys;
    }
    @Override
    public void removeData(String module, String key) throws Exception {
        Map<String, String> map=cacha.get(module);
        if(map==null){
            throw new Exception("this "+module+" does not exist cache");
        }
        map.remove(key);
    }
}

+ 0 - 67
svr/svr-base/src/main/java/com/yihu/jw/cache/RedisCache.java

@ -1,67 +0,0 @@
package com.yihu.jw.cache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.util.HashSet;
import java.util.Set;
/**
 * Created by LiTaohong on 2017/12/04.
 */
@Component
@Scope("singleton")
public class RedisCache implements Cache {
    private static String redis_pre = "svr-base";
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Override
    public void setData(String module, String key, String value) {
        //获取key
        String redisKey=getKey(module,key);
        //把数据放入redis中
        redisTemplate.opsForValue().set(redisKey,value);
    }
    @Override
    public String getData(String module, String key) {
        //获取key
        String redisKey=getKey(module,key);
        //从redis中获取数据
        return redisTemplate.opsForValue().get(redisKey);
    }
    @Override
    public Set<String> keys(String module,String pattern) {
        pattern = pattern.replaceAll("\\.", "");
        String redisKey = getKey(module,pattern);
        Set<String> redisKeys = redisTemplate.keys(redisKey);
        Set<String> keys = new HashSet<>();
        for(String key:redisKeys){
            key = key.substring(8+module.length());
            keys.add(key);
        }
        return keys;
    }
    @Override
    public void removeData(String module, String key) throws Exception {
        String redisKey = getKey(module, key);
        redisTemplate.delete(redisKey);//根据key删除缓存
    }
    /**
     * 获取redis中的key
     * @param module
     * @param key
     * @return
     */
    private String getKey(String module, String key) {
        return new StringBuffer(redis_pre+":"+module+":"+key).toString();
    }
}

+ 0 - 25
svr/svr-base/src/main/java/com/yihu/jw/cache/model/LoginCacheModel.java

@ -1,25 +0,0 @@
package com.yihu.jw.cache.model;
/**
 * Created by LiTaohong on 2017/12/04.
 */
public class LoginCacheModel {
    private String code;//用户code
    private String saasId;
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getSaasId() {
        return saasId;
    }
    public void setSaasId(String saasId) {
        this.saasId = saasId;
    }
}

+ 0 - 25
svr/svr-base/src/main/java/com/yihu/jw/cache/model/RoleCacheModel.java

@ -1,25 +0,0 @@
package com.yihu.jw.cache.model;
/**
 * Created by LiTaohong on 2017/12/04.
 */
public class RoleCacheModel {
    private String url;
    private String method;
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getMethod() {
        return method;
    }
    public void setMethod(String method) {
        this.method = method;
    }
}

+ 14 - 1
web-gateway/src/main/java/com/yihu/jw/commnon/base/user/BaseUserContants.java

@ -5,7 +5,8 @@ package com.yihu.jw.commnon.base.user;
public class BaseUserContants {
    public static final String api_common = "/bases";
    public static final String api_baseRole = api_common+"/baseRole";
    public static final String api_employee = api_common+"/employee";
    public static final String api_employ = api_common+"/employee";
    public static final String api_baseMenu= api_common+"/employee";
    //角色常量
    public static class BaseRole{
@ -29,4 +30,16 @@ public class BaseUserContants {
        public static final String api_getChildren="/children/{id}";
    }
    //菜单常量
    public static class BaseMenu{
        public static final String api_create="/";
        public static final String api_update="/";
        public static final String api_delete="/{id}";
        public static final String api_getById="/{id}";
        public static final String api_getListNoPage="/listNoPage";
        public static final String api_getList="/list";
        public static final String api_getChildren="/children/{id}";
    }
}

+ 147 - 0
web-gateway/src/main/java/com/yihu/jw/controller/base/user/BaseMenuController.java

@ -0,0 +1,147 @@
package com.yihu.jw.controller.base.user;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import com.yihu.jw.commnon.base.user.BaseUserContants;
import com.yihu.jw.exception.business.JiWeiException;
import com.yihu.jw.feign.base.user.BaseMenuFeign;
import com.yihu.jw.feign.base.user.BaseMenuFeign;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.EnvelopRestController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.commons.lang.StringUtils;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Created by LiTaohong on 2017/11/28.
 */
@RestController
@RequestMapping(BaseUserContants.api_baseMenu)
@Api(value = "基础菜单管理", description = "基础菜单管理")
public class BaseMenuController extends EnvelopRestController {
    @Autowired
    private BaseMenuFeign fegin;
    @Autowired
    private Tracer tracer;
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
            @HystrixProperty(name = "execution.timeout.enabled", value = "false") })
    @PostMapping(value = BaseUserContants.BaseMenu.api_create, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "创建菜单", notes = "创建菜单")
    public Envelop createBaseMenu(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws JiWeiException {
        return fegin.create(jsonData);
    }
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
            @HystrixProperty(name = "execution.timeout.enabled", value = "false") })
    @PutMapping(value = BaseUserContants.BaseMenu.api_update, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    @ApiOperation(value = "更新菜单", notes = "更新菜单")
    public Envelop updateBaseMenu(
            @ApiParam(name = "json_data", value = "", defaultValue = "")
            @RequestBody String jsonData) throws JiWeiException {
        return fegin.update(jsonData);
    }
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
            @HystrixProperty(name = "execution.timeout.enabled", value = "false") })
    @DeleteMapping(value = BaseUserContants.BaseMenu.api_delete)
    @ApiOperation(value = "删除菜单", notes = "删除菜单")
    public Envelop deleteBaseMenu(
            @ApiParam(name = "id", value = "uuid")
            @RequestParam(value = "id", required = true) String id
    ) throws JiWeiException {
        return fegin.delete(id);
    }
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
            @HystrixProperty(name = "execution.timeout.enabled", value = "false") })
    @GetMapping(value = BaseUserContants.BaseMenu.api_getById)
    @ApiOperation(value = "根据Id查找", notes = "根据uuid查找")
    public Envelop findById(
            @ApiParam(name = "id", value = "id")
            @PathVariable(value = "id", required = true) String id
    ) throws JiWeiException {
        return fegin.findById(id);
    }
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
            @HystrixProperty(name = "execution.timeout.enabled", value = "false") })
    @GetMapping(value = BaseUserContants.BaseMenu.api_getById)
    @ApiOperation(value = "根据Id查找", notes = "根据uuid查找")
    public Envelop getChildren(@ApiParam(name = "saasId", value = "saasId") @RequestParam(value = "saasId", required = true) String saasId,
                               @ApiParam(name = "parentId", value = "parentId") @RequestParam(value = "parentId", required = true) String parentId) throws JiWeiException {
        return fegin.getChildren(saasId,parentId);
    }
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
            @HystrixProperty(name = "execution.timeout.enabled", value = "false") })
    @RequestMapping(value = BaseUserContants.BaseMenu.api_getList, method = RequestMethod.GET)
    @ApiOperation(value = "获取功能列表(分页)")
    public Envelop getBaseMenus(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "id,name,saasId,createUser,remark")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档", defaultValue = "+name,+createTime")
            @RequestParam(value = "sorts", required = false) String sorts,
            @ApiParam(name = "size", value = "分页大小", defaultValue = "15")
            @RequestParam(value = "size", required = false) int size,
            @ApiParam(name = "page", value = "页码", defaultValue = "1")
            @RequestParam(value = "page", required = false) int page,
            HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        String filterStr = "";
        if(StringUtils.isNotBlank(filters)){
            JSONObject jsonResult = new JSONObject(filters);
            if(jsonResult.has("name")){
                filterStr+="name?"+jsonResult.get("name")+";";
            }
        }
        return fegin.getList(fields, filterStr, sorts, size, page);
    }
    @HystrixCommand(commandProperties = {
            @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "-1"),//超时时间
            @HystrixProperty(name = "execution.timeout.enabled", value = "false") })
    @GetMapping(value = BaseUserContants.BaseMenu.api_getListNoPage)
    @ApiOperation(value = "获取功能列表,不分页")
    public Envelop getListNoPage(
            @ApiParam(name = "fields", value = "返回的字段,为空返回全部字段", defaultValue = "id,name,saasId,createUser,remark")
            @RequestParam(value = "fields", required = false) String fields,
            @ApiParam(name = "filters", value = "过滤器,为空检索所有条件")
            @RequestParam(value = "filters", required = false) String filters,
            @ApiParam(name = "sorts", value = "排序,规则参见说明文档", defaultValue = "+name,+createTime")
            @RequestParam(value = "sorts", required = false) String sorts) throws Exception {
        String filterStr = "";
        if(StringUtils.isNotBlank(filters)){
            JSONObject jsonResult = new JSONObject(filters);
            if(jsonResult.has("saasId")){
                filterStr+="saasId="+jsonResult.get("saasId")+";";
            }
        }
        return fegin.getListNoPage(fields, filterStr, sorts);
    }
}

+ 1 - 2
web-gateway/src/main/java/com/yihu/jw/controller/base/user/EmployController.java

@ -4,7 +4,6 @@ import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
import com.yihu.jw.commnon.base.user.BaseUserContants;
import com.yihu.jw.exception.business.JiWeiException;
import com.yihu.jw.feign.base.user.BaseRoleFeign;
import com.yihu.jw.feign.base.user.EmployFeign;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.restmodel.common.EnvelopRestController;
@ -26,7 +25,7 @@ import javax.servlet.http.HttpServletResponse;
 */
@RestController
@RequestMapping(BaseUserContants.api_employee)
@RequestMapping(BaseUserContants.api_employ)
@Api(value = "用戶管理", description = "用戶管理")
public class EmployController extends EnvelopRestController {

+ 65 - 0
web-gateway/src/main/java/com/yihu/jw/feign/base/user/BaseMenuFeign.java

@ -0,0 +1,65 @@
package com.yihu.jw.feign.base.user;
import com.yihu.jw.exception.business.JiWeiException;
import com.yihu.jw.feign.fallbackfactory.base.user.BaseMenuFeignFallbackFactory;
import com.yihu.jw.restmodel.CommonContants;
import com.yihu.jw.restmodel.common.Envelop;
import com.yihu.jw.rm.base.BaseUserRequestMapping;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
/**
 * Created by LiTaohong on 2017/12/05.
 */
@FeignClient(
        name = CommonContants.svr_base // name值是eurika的实例名字
        ,fallbackFactory  = BaseMenuFeignFallbackFactory.class
)
public interface BaseMenuFeign {
    
    @RequestMapping(value = BaseUserRequestMapping.BaseMenu.api_create,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,method = RequestMethod.POST)
    Envelop create(@RequestBody String jsonData) throws JiWeiException;
    @RequestMapping(value =  BaseUserRequestMapping.BaseMenu.api_update,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,method = RequestMethod.PUT)
    Envelop update(@RequestBody String jsonData) throws JiWeiException;
    @RequestMapping(value =  BaseUserRequestMapping.BaseMenu.api_delete,method = RequestMethod.DELETE)
    Envelop delete(@PathVariable String id) throws JiWeiException;
    @GetMapping(value = BaseUserRequestMapping.BaseMenu.api_getOne)
    Envelop findById(@PathVariable(value = "id", required = true) String id) throws JiWeiException;
    @RequestMapping(value = BaseUserRequestMapping.BaseMenu.api_getList, method = RequestMethod.GET)
    Envelop getList(@RequestParam(value = "fields", required = false) String fields,
                    @RequestParam(value = "filters", required = false) String filters,
                    @RequestParam(value = "sorts", required = false) String sorts,
                    @RequestParam(value = "size", required = false) int size,
                    @RequestParam(value = "page", required = false) int page) throws JiWeiException;
    @GetMapping(value = BaseUserRequestMapping.BaseMenu.api_getListNoPage)
    Envelop getListNoPage(@RequestParam(value = "fields", required = false) String fields,
                          @RequestParam(value = "filters", required = false) String filters,
                          @RequestParam(value = "sorts", required = false) String sorts) throws JiWeiException;
    @GetMapping(value = BaseUserRequestMapping.BaseMenu.api_getchildren)
    Envelop getChildren(@RequestParam(value = "saasId", required = true) String saasId, @RequestParam(value = "parentId", required = true) String parentId) throws JiWeiException;
}

+ 82 - 0
web-gateway/src/main/java/com/yihu/jw/feign/fallbackfactory/base/user/BaseMenuFeignFallbackFactory.java

@ -0,0 +1,82 @@
package com.yihu.jw.feign.fallbackfactory.base.user;
import com.yihu.jw.exception.business.JiWeiException;
import com.yihu.jw.feign.base.user.BaseMenuFeign;
import com.yihu.jw.feign.base.user.BaseRoleFeign;
import com.yihu.jw.restmodel.common.Envelop;
import feign.hystrix.FallbackFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.Tracer;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
/**
 * Created by LiTaohong on 2017/11/28.
 */
public class BaseMenuFeignFallbackFactory implements FallbackFactory<BaseMenuFeign> {
    @Autowired
    private Tracer tracer;
    @Override
    public BaseMenuFeign create(Throwable e) {
        return new BaseMenuFeign() {
            @Override
            public Envelop create(@RequestBody String jsonData) throws JiWeiException {
                tracer.getCurrentSpan().logEvent("创建菜单失败:原因:"+e.getMessage());
                tracer.getCurrentSpan().logEvent("jsonData:"+jsonData);
                throw new JiWeiException(e);
            }
            @Override
            public Envelop update(@RequestBody String jsonData) throws JiWeiException {
                tracer.getCurrentSpan().logEvent("更新菜单失败:原因:"+e.getMessage());
                tracer.getCurrentSpan().logEvent("jsonData:"+jsonData);
                throw new JiWeiException(e);
            }
            @Override
            public Envelop delete(@PathVariable String id) throws JiWeiException {
                tracer.getCurrentSpan().logEvent("删除菜单失败:原因:"+e.getMessage());
                tracer.getCurrentSpan().logEvent("id:"+id);
                throw new JiWeiException(e);
            }
            @Override
            public Envelop findById(String id) throws JiWeiException {
                tracer.getCurrentSpan().logEvent("查找单个菜单失败:原因:"+e.getMessage());
                tracer.getCurrentSpan().logEvent("id:"+id);
                throw new JiWeiException(e);
            }
            @Override
            public Envelop getList(String fields, String filterStr, String sorts, int size, int page) throws JiWeiException {
                tracer.getCurrentSpan().logEvent("分页查找菜单失败:原因:"+e.getMessage());
                tracer.getCurrentSpan().logEvent("fields:" + fields);
                tracer.getCurrentSpan().logEvent("filters:" + filterStr);
                tracer.getCurrentSpan().logEvent("sorts:" + sorts);
                tracer.getCurrentSpan().logEvent("size:" + size);
                tracer.getCurrentSpan().logEvent("page:" + page);
                throw new JiWeiException(e);
            }
            @Override
            public Envelop getListNoPage(String fields, String filters, String sorts) throws JiWeiException {
                tracer.getCurrentSpan().logEvent("查找菜单列表失败:原因:"+e.getMessage());
                tracer.getCurrentSpan().logEvent("fields:" + fields);
                tracer.getCurrentSpan().logEvent("filters:" + filters);
                tracer.getCurrentSpan().logEvent("sorts:" + sorts);
                throw new JiWeiException(e);
            }
            @Override
            public Envelop getChildren(String saasId, String parentId) throws JiWeiException {
                tracer.getCurrentSpan().logEvent("查找子菜单列表失败:原因:"+e.getMessage());
                tracer.getCurrentSpan().logEvent("filters:" + saasId);
                tracer.getCurrentSpan().logEvent("sorts:" + parentId);
                throw new JiWeiException(e);
            }
        };
    }
}