Commit 7226c3f3 by guojuxing

资源组代码优化&放入session

parent a21bf2c1
package com.gic.auth.dto;
import java.io.Serializable;
/**
* 资源组-商品资源
* @ClassName:
* @Description: 

* @author guojuxing

* @date 2021/1/12 1:56 PM

*/
public class GoodsResourceDTO implements Serializable{
private static final long serialVersionUID = 1952598117730776461L;
/**
* 商品资源选择器ID
*/
private Long goodsResourceId;
/**
* 1:全部 (超管) 2:部分
*/
private Integer type;
public Long getGoodsResourceId() {
return goodsResourceId;
}
public GoodsResourceDTO setGoodsResourceId(Long goodsResourceId) {
this.goodsResourceId = goodsResourceId;
return this;
}
public Integer getType() {
return type;
}
public GoodsResourceDTO setType(Integer type) {
this.type = type;
return this;
}
}
......@@ -35,7 +35,7 @@ public class ResourceGroupDTO implements Serializable{
private Integer customUser;
/**
* 用户域配置,json格式 [{"type":1,"sort":1,"cu":"","cuSelectId":""}]
* 用户域配置,json格式 [{"type":1,"sort":1,"areaValue":"","cuSelectId":""}]
*/
private String customUserData;
......
package com.gic.auth.dto;
import java.io.Serializable;
/**
* 资源组数据,根据user_id查询
* @ClassName:
* @Description: 

* @author guojuxing

* @date 2021/1/12 9:56 AM

*/
public class ResourceGroupDataDTO implements Serializable{
private static final long serialVersionUID = -7512120223815225844L;
/**
* 用户域配置
*/
private CustomUserAreaDTO customUserAreaDTO;
/**
* 门店资源
*/
private StoreResourceDTO storeResourceDTO;
/**
* 商品资源
*/
private GoodsResourceDTO goodsResourceDTO;
public CustomUserAreaDTO getCustomUserAreaDTO() {
return customUserAreaDTO;
}
public ResourceGroupDataDTO setCustomUserAreaDTO(CustomUserAreaDTO customUserAreaDTO) {
this.customUserAreaDTO = customUserAreaDTO;
return this;
}
public StoreResourceDTO getStoreResourceDTO() {
return storeResourceDTO;
}
public ResourceGroupDataDTO setStoreResourceDTO(StoreResourceDTO storeResourceDTO) {
this.storeResourceDTO = storeResourceDTO;
return this;
}
public GoodsResourceDTO getGoodsResourceDTO() {
return goodsResourceDTO;
}
public ResourceGroupDataDTO setGoodsResourceDTO(GoodsResourceDTO goodsResourceDTO) {
this.goodsResourceDTO = goodsResourceDTO;
return this;
}
@Override
public String toString() {
return "ResourceGroupDataDTO{" +
"customUserAreaDTO=" + customUserAreaDTO +
", storeResourceDTO=" + storeResourceDTO +
", goodsResourceDTO=" + goodsResourceDTO +
'}';
}
}
......@@ -4,6 +4,7 @@ import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.auth.dto.CustomUserAreaDTO;
import com.gic.auth.dto.ResourceGroupDTO;
import com.gic.auth.dto.ResourceGroupDataDTO;
import com.gic.auth.dto.StoreResourceDTO;
/**
......@@ -54,6 +55,13 @@ public interface ResourceGroupApiService {
ServiceResponse<String> deleteResourceGroup(Integer resourceGroupId);
/**
* 根据资源组数据查询,用于登录时存入session
* @param userId
* @return
*/
ServiceResponse<ResourceGroupDataDTO> getResourceGroupByUserId(Integer userId);
/**
* 管理员的门店资源查询
* @param userId
* @return
......
package com.gic.auth.utils.resourcegroup;
import com.alibaba.fastjson.JSON;
import com.gic.auth.constant.ResourceHoldEnum;
import com.gic.auth.dto.CustomUserAreaDTO;
import com.gic.auth.dto.ResourceGroupCustomUserDTO;
import com.gic.auth.entity.TabSysResourceGroup;
import org.apache.commons.lang.StringUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 用户域配置
* @ClassName:
* @Description: 

* @author guojuxing

* @date 2021/1/12 2:16 PM

*/
public class CustomResourceData implements IResourceGroupData{
@Override
public <T> T getResourceData(TabSysResourceGroup resourceGroup) {
//组装用户域配置信息
List<ResourceGroupCustomUserDTO> customUserList = JSON.parseArray(resourceGroup.getCustomUserData(), ResourceGroupCustomUserDTO.class);
CustomUserAreaDTO result = new CustomUserAreaDTO()
.setType(ResourceHoldEnum.DART.getCode())
.setCustomUser(resourceGroup.getCustomUser())
.setWeimobOrderArea(resourceGroup.getWeimobOrderArea())
.setStoreOrderArea(resourceGroup.getStoreOrderArea())
.setCustomUserList(customUserList);
if (StringUtils.isNotBlank(resourceGroup.getSmsId())) {
result.setSmsId(Arrays.stream(resourceGroup.getSmsId()
.split(","))
.mapToLong(e -> Long.valueOf(e))
.boxed()
.collect(Collectors.toList()));
}
if (StringUtils.isNotBlank(resourceGroup.getWeimobStoreId())) {
result.setWeimobStoreId(Arrays.stream(resourceGroup.getWeimobStoreId().split(","))
.mapToLong(e -> Long.valueOf(e))
.boxed()
.collect(Collectors.toList()));
}
return (T) result;
}
@Override
public <T> T getResourceDataForAdmin() {
return (T) new CustomUserAreaDTO().setType(ResourceHoldEnum.ALL.getCode());
}
@Override
public <T> T getResourceDataWhenNoExist() {
return (T) new CustomUserAreaDTO().setType(ResourceHoldEnum.DART.getCode()).setCustomUser(0);
}
}
package com.gic.auth.utils.resourcegroup;
import com.gic.auth.constant.ResourceHoldEnum;
import com.gic.auth.dto.GoodsResourceDTO;
import com.gic.auth.entity.TabSysResourceGroup;
/**
* 资源组-商品资源
* @ClassName:
* @Description: 

* @author guojuxing

* @date 2021/1/12 2:29 PM

*/
public class GoodsResourceData implements IResourceGroupData{
@Override
public <T> T getResourceData(TabSysResourceGroup resourceGroup) {
return (T) new GoodsResourceDTO()
.setType(ResourceHoldEnum.DART.getCode())
.setGoodsResourceId(resourceGroup.getGoodsResourceId());
}
@Override
public <T> T getResourceDataForAdmin() {
return (T) new GoodsResourceDTO()
.setType(ResourceHoldEnum.ALL.getCode());
}
@Override
public <T> T getResourceDataWhenNoExist() {
return (T) new GoodsResourceDTO()
.setType(ResourceHoldEnum.DART.getCode()).setGoodsResourceId(null);
}
}
package com.gic.auth.utils.resourcegroup;
import com.gic.auth.entity.TabSysResourceGroup;
/**
* 资源组
* @ClassName:
* @Description: 

* @author guojuxing

* @date 2021/1/12 2:15 PM

*/
public interface IResourceGroupData {
/**
* 查询资源
* @param resourceGroup
* @param <T>
* @return
*/
<T> T getResourceData(TabSysResourceGroup resourceGroup);
/**
* 查询超管资源
* @param <T>
* @return
*/
<T> T getResourceDataForAdmin();
/**
* 查询资源-管理员不存在
* @param <T>
* @return
*/
<T> T getResourceDataWhenNoExist();
}
package com.gic.auth.utils.resourcegroup;
import com.gic.auth.dto.*;
import com.gic.auth.entity.TabSysResourceGroup;
import com.gic.auth.entity.TabSysUser;
import com.gic.auth.service.ResourceGroupService;
import com.gic.auth.service.UserResourceService;
import com.gic.auth.service.UserService;
import com.gic.auth.utils.ApplicationContextUtils;
import org.apache.commons.collections.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 资源组工具类
* @ClassName:
* @Description: 

* @author guojuxing

* @date 2021/1/12 2:31 PM

*/
public class ResourceGroupUtils {
private static Map<Integer, IResourceGroupData> map = new HashMap<>(8);
/**
* 用户域
*/
public static Integer CUSTOM_RESOURCE = 1;
/**
* 门店
*/
public static Integer STORE_RESOURCE = 2;
/**
* 商品
*/
public static Integer GOODS_RESOURCE = 3;
static {
map.put(1, new CustomResourceData());
map.put(2, new StoreResourceData());
map.put(3, new GoodsResourceData());
}
/**
* 查询资源组资源
* @param userId
* @param resourceGroupType 1:用户域 2:门店资源 3:商品
* @param <T>
* @return
*/
public static <T> T getResource(Integer userId, Integer resourceGroupType) {
UserService userService = ApplicationContextUtils.getBean("userService");
TabSysUser tabSysUser = userService.getUserById(userId);
if (tabSysUser == null) {
return map.get(resourceGroupType).getResourceDataWhenNoExist();
}
if (tabSysUser.getSuperAdmin() == 1) {
//超管
return map.get(resourceGroupType).getResourceDataForAdmin();
}
TabSysResourceGroup tabSysResourceGroup = getByUserId(userId);
if (tabSysResourceGroup == null) {
map.get(resourceGroupType).getResourceDataWhenNoExist();
}
return map.get(resourceGroupType).getResourceData(tabSysResourceGroup);
}
/**
* 查询全部资源
* @param userId
* @return
*/
public static ResourceGroupDataDTO getResource(Integer userId) {
CustomUserAreaDTO customUserAreaDTO = getResource(userId, CUSTOM_RESOURCE);
StoreResourceDTO storeResourceDTO = getResource(userId, STORE_RESOURCE);
GoodsResourceDTO goodsResourceDTO = getResource(userId, GOODS_RESOURCE);
return new ResourceGroupDataDTO()
.setCustomUserAreaDTO(customUserAreaDTO)
.setGoodsResourceDTO(goodsResourceDTO)
.setStoreResourceDTO(storeResourceDTO);
}
private static TabSysResourceGroup getByUserId(Integer userId) {
UserResourceService userResourceService = ApplicationContextUtils.getBean(UserResourceService.class);
ResourceGroupService resourceGroupService = ApplicationContextUtils.getBean("resourceGroupService");
List<UserResourceDTO> userResourceList = userResourceService.listUserResourceByUserId(userId);
if (CollectionUtils.isEmpty(userResourceList)) {
//查不到管理员的资源组数据,历史数据导致
return null;
}
//资源组单选
Integer resourceGroupId = userResourceList.get(0).getResourceId();
TabSysResourceGroup resourceGroup = resourceGroupService.getResourceGroup(resourceGroupId);
return resourceGroup;
}
}
package com.gic.auth.utils.resourcegroup;
import java.util.Collections;
import java.util.List;
import org.apache.commons.collections.CollectionUtils;
import com.gic.auth.constant.ResourceHoldEnum;
import com.gic.auth.dto.StoreResourceDTO;
import com.gic.auth.entity.TabSysResourceGroup;
import com.gic.auth.utils.ApplicationContextUtils;
import com.gic.store.service.StoreWidgetApiService;
/**
* 资源组-门店资源
* @ClassName:
* @Description: 

* @author guojuxing

* @date 2021/1/12 2:21 PM

*/
public class StoreResourceData implements IResourceGroupData{
@Override
public <T> T getResourceData(TabSysResourceGroup resourceGroup) {
StoreWidgetApiService storeWidgetApiService = ApplicationContextUtils.getBean("storeWidgetApiService");
Long storeResource = resourceGroup.getStoreResource();
StoreResourceDTO defaultResource = getResourceDataWhenNoExist();
if (storeResource == null) {
return (T) defaultResource;
}
List<Integer> result = storeWidgetApiService.listStoreIdByStoreWidgetId(resourceGroup.getEnterpriseId(), storeResource.intValue()).getResult();
if (CollectionUtils.isNotEmpty(result)) {
defaultResource.setStoreIdList(result);
}
return (T) defaultResource;
}
@Override
public <T> T getResourceDataForAdmin() {
// 是超管就返回所有
StoreResourceDTO superAdminResource = new StoreResourceDTO();
superAdminResource.setType(ResourceHoldEnum.ALL.getCode());
return (T) superAdminResource;
}
@Override
public <T> T getResourceDataWhenNoExist() {
StoreResourceDTO defaultResource = new StoreResourceDTO();
defaultResource.setType(ResourceHoldEnum.DART.getCode());
defaultResource.setStoreIdList(Collections.emptyList());
return (T) defaultResource;
}
}
......@@ -3,10 +3,7 @@ package com.gic.auth.web.controller;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.auth.constant.LoginUserTypeEnum;
import com.gic.auth.dto.MenuDTO;
import com.gic.auth.dto.ResourceDTO;
import com.gic.auth.dto.UserDTO;
import com.gic.auth.dto.UserResourceDTO;
import com.gic.auth.dto.*;
import com.gic.auth.service.*;
import com.gic.auth.web.vo.ChannelResourceVO;
import com.gic.commons.annotation.HeaderSignIgnore;
......@@ -14,10 +11,7 @@ import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.Md5Util;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.ano.IgnoreLogin;
import com.gic.enterprise.base.EnterpriseInfo;
import com.gic.enterprise.base.MenuInfo;
import com.gic.enterprise.base.UserInfo;
import com.gic.enterprise.base.UserResourceInfo;
import com.gic.enterprise.base.*;
import com.gic.enterprise.constant.EnterpriseStatusTypeEnum;
import com.gic.enterprise.constants.Constants;
import com.gic.enterprise.context.UserContext;
......@@ -278,6 +272,17 @@ public class LoginController {
detail.setUserResourceInfo(new UserResourceInfo());
if (resource.isSuccess() && resource.getResult() != null) {
//查询管理员的资源组信息
ServiceResponse<ResourceGroupDataDTO> response = resourceGroupApiService.getResourceGroupByUserId(userId);
if (resource.isSuccess()) {
ResourceGroupDataDTO resourceGroupDataDTO = response.getResult();
detail.setCustomUserInfo(EntityUtil.changeEntityNew(CustomUserInfo.class, resourceGroupDataDTO.getCustomUserAreaDTO()));
detail.setStoreResourceInfo(EntityUtil.changeEntityNew(StoreResourceInfo.class, resourceGroupDataDTO.getStoreResourceDTO()));
detail.setGoodsResourceInfo(EntityUtil.changeEntityNew(GoodsResourceInfo.class, resourceGroupDataDTO.getGoodsResourceDTO()));
} else {
detail.setCustomUserInfo(new CustomUserInfo());
detail.setGoodsResourceInfo(new GoodsResourceInfo());
detail.setStoreResourceInfo(new StoreResourceInfo());
}
//todo 暂时保留旧代码,防止环境报错,等前端同步,删除
ServiceResponse<ResourceDTO> serviceResource = this.resourceApiService
.getResource(resource.getResult().getResourceId());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment