Browse Source

cms support show terminalUser auth info

guozhaoshun 6 years ago
parent
commit
191f3e890e

+ 49 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/controller/user/TerminalUserController.java

@@ -2,16 +2,27 @@ package cn.rankin.cmsweb.controller.user;
 
 import cn.rankin.cmsweb.assist.resolver.NeedUser;
 import cn.rankin.cmsweb.entity.UserDetails;
+import cn.rankin.cmsweb.service.product.ProductService;
 import cn.rankin.cmsweb.service.user.TerminalUserService;
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
+import cn.rankin.common.utils.util.ListUtil;
+import cn.rankin.data.api.product.vo.ProductVo;
 import cn.rankin.data.api.user.dto.TerminalUserDTO;
 import cn.rankin.data.api.user.dto.TerminalUserSearchDTO;
 import cn.rankin.common.utils.util.BeanUtil;
+import cn.rankin.data.api.user.vo.TerminalUserAuthVo;
 import cn.rankin.data.api.user.vo.TerminalUserVo;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
 @RestController
 @RequestMapping(value = "/user")
 public class TerminalUserController {
@@ -19,6 +30,9 @@ public class TerminalUserController {
     @Autowired
     private TerminalUserService terminalUserService;
 
+    @Autowired
+    private ProductService productService;
+
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     public APIResult<Page<TerminalUserVo>> search(@NeedUser UserDetails user, TerminalUserSearchDTO searchDTO) {
         if (!user.isPlatForm()) {
@@ -48,4 +62,39 @@ public class TerminalUserController {
     public APIResult<TerminalUserVo> getUser(@PathVariable("id") String id) {
         return terminalUserService.getUser(id);
     }
+
+    @RequestMapping(value = "/auth/list", method = RequestMethod.GET)
+    public APIResult<Page<TerminalUserAuthVo>> findAuthList(TerminalUserSearchDTO searchDTO) {
+        Page<TerminalUserAuthVo> authVoPage = terminalUserService.findAuthList(BeanUtil.convertToMap(searchDTO));
+
+        List<TerminalUserAuthVo> terminalUserAuthVos = authVoPage.getList();
+        setProductInfo(terminalUserAuthVos);
+
+        return APIResult.ok(authVoPage);
+    }
+
+    private void setProductInfo(List<TerminalUserAuthVo> terminalUserAuthVos) {
+        if(CollectionUtils.isEmpty(terminalUserAuthVos)){
+            return ;
+        }
+
+        List<ProductVo> productVos = productService.productList();
+        if(CollectionUtils.isEmpty(productVos)){
+            return ;
+        }
+
+        Map<String, ProductVo> productVoMap = ListUtil.convert(productVos, "pid", ProductVo.class);
+
+        terminalUserAuthVos.forEach(vo -> {
+            ProductVo productVo = productVoMap.get(vo.getPid());
+            if(null != productVo){
+                vo.setPCode(productVo.getCode());
+                vo.setPName(productVo.getName());
+            }else{
+                log.info("not found product by pid ,pid={}",vo.getPid());
+            }
+        });
+
+    }
+
 }

+ 3 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/product/ProductService.java

@@ -21,6 +21,9 @@ public interface ProductService {
     @RequestMapping(value = "/product", method = RequestMethod.GET)
     APIResult<Page<ProductVo>> search(@RequestParam Map<String, Object> searchDTO);
 
+    @RequestMapping(value = "/product/list", method = RequestMethod.GET)
+    List<ProductVo> productList();
+
     @RequestMapping(value = "/product/{id}", method = RequestMethod.GET)
     APIResult getProduct(@PathVariable("id") String id);
 

+ 3 - 0
rankin-cms-web/src/main/java/cn/rankin/cmsweb/service/user/TerminalUserService.java

@@ -3,6 +3,7 @@ package cn.rankin.cmsweb.service.user;
 import cn.rankin.common.utils.api.model.APIResult;
 import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.data.api.user.dto.TerminalUserDTO;
+import cn.rankin.data.api.user.vo.TerminalUserAuthVo;
 import cn.rankin.data.api.user.vo.TerminalUserVo;
 import org.springframework.cloud.netflix.feign.FeignClient;
 import org.springframework.web.bind.annotation.*;
@@ -37,4 +38,6 @@ public interface TerminalUserService {
     @RequestMapping(value = "/user/ids", method = RequestMethod.GET)
     APIResult<List<TerminalUserVo>> findByIds(@RequestParam("id") List<String> ids);
 
+    @RequestMapping(value = "/user/auth/list", method = RequestMethod.GET)
+    Page<TerminalUserAuthVo> findAuthList(@RequestParam Map<String,Object> searchDTO);
 }

+ 5 - 0
rankin-common-utils/src/main/java/cn/rankin/common/utils/util/HttpUtil.java

@@ -105,6 +105,11 @@ public class HttpUtil {
        return ignoreRequest.toArray(new RequestMatcher[ignoreRequest.size()]);
     }
 
+    /**
+     * 获取请求主机  真实IP
+     * @param request
+     * @return
+     */
     public static String getClientIp(HttpServletRequest request) {
         // 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址
         String ip = request.getHeader("X-Forwarded-For");

+ 42 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/user/vo/TerminalUserAuthVo.java

@@ -0,0 +1,42 @@
+package cn.rankin.data.api.user.vo;
+
+import cn.rankin.common.utils.enums.BaseStatusEnum;
+import lombok.Data;
+import lombok.ToString;
+
+import java.io.Serializable;
+
+@Data
+@ToString
+public class TerminalUserAuthVo implements Serializable {
+
+    private String id;
+
+    private String uid;
+
+    private String uCode;
+
+    private String gid;
+
+    private String pid;
+
+    private String pCode;
+
+    private String pName;
+
+    private String bizCode;
+
+    private Integer type;
+
+    private String title;
+
+    private BaseStatusEnum status;
+
+    private Long startTime;
+
+    private Long endTime;
+
+    private Long createTime;
+
+    private Long updateTime;
+}

+ 65 - 0
rankin-user-service/src/main/java/cn/rankin/userservice/controller/TerminalUserController.java

@@ -5,20 +5,26 @@ import cn.rankin.common.utils.api.page.Page;
 import cn.rankin.common.utils.enums.BaseOrderEnum;
 import cn.rankin.common.utils.enums.BaseStatusEnum;
 import cn.rankin.common.utils.util.HttpUtil;
+import cn.rankin.common.utils.util.ListUtil;
 import cn.rankin.common.utils.util.ProvinceUtil;
+import cn.rankin.data.api.auth.dto.AuthQueryDTO;
+import cn.rankin.data.api.auth.vo.AuthVo;
 import cn.rankin.data.api.user.dto.TerminalUserDTO;
 import cn.rankin.data.api.user.dto.TerminalUserSearchDTO;
 import cn.rankin.data.api.user.entity.Campus;
 import cn.rankin.data.api.user.entity.Merchant;
 import cn.rankin.data.api.user.entity.TerminalDevice;
 import cn.rankin.data.api.user.entity.TerminalUser;
+import cn.rankin.data.api.user.vo.TerminalUserAuthVo;
 import cn.rankin.userservice.code.UserServiceAPICode;
 import cn.rankin.userservice.dto.RemoteUser;
+import cn.rankin.userservice.proxy.RemoteAuthProxy;
 import cn.rankin.userservice.proxy.RemoteUserProxy;
 import cn.rankin.userservice.service.CampusService;
 import cn.rankin.userservice.service.MerchantService;
 import cn.rankin.userservice.service.TerminalDeviceService;
 import cn.rankin.userservice.service.TerminalUserService;
+import cn.rankin.userservice.utils.Converter;
 import cn.rankin.userservice.utils.StudentNumberUtil;
 import com.alibaba.fastjson.JSON;
 import lombok.extern.slf4j.Slf4j;
@@ -53,6 +59,9 @@ public class TerminalUserController {
     private RemoteUserProxy remoteUserProxy;
 
     @Autowired
+    private RemoteAuthProxy remoteAuthProxy;
+
+    @Autowired
     private TerminalDeviceService terminalDeviceService;
 
     @RequestMapping(value = "/list", method = RequestMethod.GET)
@@ -116,6 +125,62 @@ public class TerminalUserController {
         return APIResult.ok(terminalUserList);
     }
 
+    @RequestMapping(value = "/auth/list", method = RequestMethod.GET)
+    public Page<TerminalUserAuthVo> findAuthListByCondition(TerminalUserSearchDTO terminalUserSearchDTO) {
+        Page<TerminalUserAuthVo> pageResult = new Page<>();
+        List<TerminalUserAuthVo> terminalUserAuthVos = new ArrayList<>();
+
+        //终端用户鉴权查询条件
+        AuthQueryDTO authQueryDTO = new AuthQueryDTO();
+        authQueryDTO.setPageNo(terminalUserSearchDTO.getPageNo());
+        authQueryDTO.setPageSize(terminalUserSearchDTO.getPageSize());
+
+
+        TerminalUser terminalUser = new TerminalUser();
+        String code = terminalUserSearchDTO.getCode();
+        if (!StringUtils.isEmpty(code)) {
+            terminalUser.setCode("%" + code + "%");
+        }
+        LinkedHashMap<String, BaseOrderEnum> sort = new LinkedHashMap<>();
+        sort.put("gmtModified", BaseOrderEnum.DESC);
+
+        List<TerminalUser> terminalUserList = terminalUserService.find(terminalUser, sort);
+
+
+
+        if(CollectionUtils.isEmpty(terminalUserList)){
+            log.info("terminalUser list is empty!");
+            return pageResult;
+        }else if(terminalUserList.size() == 1){
+            //查询到唯一用户时,设置资源库查询条件 | 其他情况默认查询全部
+            TerminalUser user = terminalUserList.get(0);
+            authQueryDTO.setUid(user.getId());
+        }
+
+        Page<AuthVo> authPage = remoteAuthProxy.findAuthList(authQueryDTO);
+        List<AuthVo> authList = authPage.getList();
+        if(CollectionUtils.isEmpty(authList)){
+            log.info("authList is empty!");
+            return pageResult;
+        }
+
+        Map<String, TerminalUser> terminalUserMap = ListUtil.convert(terminalUserList, "id", TerminalUser.class);
+
+        authList.forEach(authVo -> {
+            TerminalUser termianlUser = terminalUserMap.get(authVo.getUid());
+            TerminalUserAuthVo vo = Converter.getTerminalUserAuthVo(termianlUser,authVo);
+            terminalUserAuthVos.add(vo);
+        });
+
+        //设置分页数据
+        pageResult.setTotalSize((int)authPage.getTotalSize());
+        pageResult.setList(terminalUserAuthVos);
+
+        return pageResult;
+    }
+
+
+
     @Transactional
     @RequestMapping(method = RequestMethod.POST)
     public APIResult<TerminalUser> create(HttpServletRequest request, @RequestBody @Valid TerminalUserDTO terminalUserDTO) {

+ 18 - 0
rankin-user-service/src/main/java/cn/rankin/userservice/proxy/RemoteAuthFeign.java

@@ -0,0 +1,18 @@
+package cn.rankin.userservice.proxy;
+
+import cn.rankin.common.utils.api.model.APIResult;
+import cn.rankin.common.utils.api.page.Page;
+import cn.rankin.data.api.auth.dto.AuthQueryDTO;
+import cn.rankin.data.api.auth.vo.AuthVo;
+import org.springframework.cloud.netflix.feign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+
+@FeignClient(name = "auth-remote", url = "${remote.auth.url}")
+//@FeignClient(name = "${iaas.auth.url}")
+public interface RemoteAuthFeign {
+
+    @RequestMapping(value = "/acenter/v1/auth/list/v2", method = RequestMethod.POST)
+    APIResult<Page<AuthVo>> findAuthList(AuthQueryDTO authQueryDTO);
+
+}

+ 23 - 0
rankin-user-service/src/main/java/cn/rankin/userservice/proxy/RemoteAuthProxy.java

@@ -0,0 +1,23 @@
+package cn.rankin.userservice.proxy;
+
+import cn.rankin.common.utils.api.model.APIResult;
+import cn.rankin.common.utils.api.page.Page;
+import cn.rankin.data.api.auth.dto.AuthQueryDTO;
+import cn.rankin.data.api.auth.vo.AuthVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class RemoteAuthProxy {
+
+    @Autowired
+    private RemoteAuthFeign remoteAuthFeign;
+
+    public Page<AuthVo> findAuthList(AuthQueryDTO authQueryDTO) {
+        APIResult<Page<AuthVo>> apiResult = remoteAuthFeign.findAuthList(authQueryDTO);
+        if(!apiResult.getSuccess()){
+            throw new RuntimeException("远程服务器错误");
+        }
+        return apiResult.getData();
+    }
+}

+ 31 - 0
rankin-user-service/src/main/java/cn/rankin/userservice/utils/Converter.java

@@ -0,0 +1,31 @@
+package cn.rankin.userservice.utils;
+
+import cn.rankin.data.api.auth.vo.AuthVo;
+import cn.rankin.data.api.user.entity.TerminalUser;
+import cn.rankin.data.api.user.vo.TerminalUserAuthVo;
+
+public class Converter {
+
+
+    public static TerminalUserAuthVo getTerminalUserAuthVo(TerminalUser termianlUser, AuthVo authVo) {
+        TerminalUserAuthVo vo = new TerminalUserAuthVo();
+
+        vo.setId(authVo.getId());
+        vo.setCreateTime(authVo.getCreateTime());
+        vo.setBizCode(authVo.getBizCode());
+        vo.setEndTime(authVo.getEndTime());
+        vo.setGid(authVo.getGid());
+        vo.setStartTime(authVo.getStartTime());
+        vo.setStatus(authVo.getStatus());
+        vo.setType(authVo.getType());
+        vo.setUpdateTime(authVo.getUpdateTime());
+        vo.setPid(authVo.getPid());
+        vo.setUid(authVo.getUid());
+
+        if(null != termianlUser){
+            vo.setUCode(termianlUser.getCode());
+        }
+
+        return vo;
+    }
+}