远程服务调用,接受参数

一 远程服务调用接受参数

package pro.tjkj.zauth.client.service.impl;

import com.alibaba.fastjson.JSONObject;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.web.client.RestTemplate;
import pro.tjkj.zauth.client.config.PageSimple;
import pro.tjkj.zauth.client.config.ZAuthConfigurationProperties;
import pro.tjkj.zauth.client.dto.TreeDTO;
import pro.tjkj.zauth.client.dto.UserInfoDTO;
import pro.tjkj.zauth.client.entity.UserEntity;
import pro.tjkj.zauth.client.entity.UserGroupEntity;
import pro.tjkj.zauth.client.exception.RemoteException;
import pro.tjkj.zauth.client.service.UserAPIService;
import pro.tjkj.zauth.client.util.ZAuthContextUtil;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;

public class UserAPIServiceImpl implements UserAPIService {

    private final ZAuthConfigurationProperties zAuthConfigurationProperties;
    private final RestTemplate restTemplate;

    public UserAPIServiceImpl(ZAuthConfigurationProperties zAuthConfigurationProperties, RestTemplate restTemplate) {
        this.zAuthConfigurationProperties = zAuthConfigurationProperties;
        this.restTemplate = restTemplate;
    }

    @Override
    public UserEntity insertUser(UserInfoDTO userInfoDTO) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/user", HttpMethod.POST, new HttpEntity<UserEntity>(userInfoDTO, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return rep.getObject("data", UserEntity.class);
        }
        throw new RemoteException(rep.getString("msg"));
    }

    @Override
    public void deleteUser(Collection<Long> ids) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/user", HttpMethod.DELETE, new HttpEntity<Collection<Long>>(ids, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") != 200) {
            throw new RemoteException(rep.getString("msg"));
        }
    }

    @Override
    public UserEntity updateUser(UserInfoDTO userInfoDTO) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/user", HttpMethod.PUT, new HttpEntity<UserEntity>(userInfoDTO, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return rep.getObject("data", UserEntity.class);
        }
        throw new RemoteException(rep.getString("msg"));
    }

    @Override
    public UserEntity queryUserById(Long id) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/user/" + id, HttpMethod.GET, new HttpEntity<>(null, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return rep.getObject("data", UserEntity.class);
        }
        throw new RemoteException(rep.getString("msg"));
    }

    @Override
    public PageSimple<UserInfoDTO> queryUserByPage(Integer currentPage, Integer pageSize, String group, String value) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/user/?currentPage=" + currentPage + "&pageSize=" + pageSize + (group == null ? "" : "&group=" + group) + (value == null ? "" : "&value=" + value), HttpMethod.GET, new HttpEntity<>(null, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return rep.getObject("data", PageSimple.class);
        }
        throw new RemoteException(rep.getString("msg"));
    }

    @Override
    public void userRoleLink(Collection<Long> uids, Collection<Long> rids) {
        HashMap<String, Collection<Long>> value = new HashMap<>();
        value.put("roleIds", rids);
        value.put("userIds", uids);
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/user/userRole", HttpMethod.PUT, new HttpEntity<HashMap<String, Collection<Long>>>(value, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return;
        }
        throw new RemoteException(rep.getString("msg"));
    }

    @Override
    public void updateUserPassword(Long uid, String oldPwd, String newPwd) {
        HashMap<String, String> value = new HashMap<>();
        value.put("oPass", oldPwd);
        value.put("nPass", newPwd);
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/user/password/" + uid, HttpMethod.PUT, new HttpEntity<HashMap<String, String>>(value, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return;
        }
        throw new RemoteException(rep.getString("msg"));
    }

    @Override
    public UserGroupEntity insertUserGroup(UserGroupEntity userGroupEntity) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/userGroup", HttpMethod.POST, new HttpEntity<UserGroupEntity>(userGroupEntity, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return rep.getObject("data", UserGroupEntity.class);
        }
        throw new RemoteException(rep.getString("msg"));
    }

    @Override
    public void deleteUserGroup(Collection<Long> ugIds) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/userGroup", HttpMethod.DELETE, new HttpEntity<Collection<Long>>(ugIds, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") != 200) {
            throw new RemoteException(rep.getString("msg"));
        }
    }

    @Override
    public UserGroupEntity updateUserGroup(UserGroupEntity userGroupEntity) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/userGroup", HttpMethod.PUT, new HttpEntity<UserGroupEntity>(userGroupEntity, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return rep.getObject("data", UserGroupEntity.class);
        }
        throw new RemoteException(rep.getString("msg"));
    }

    @Override
    public PageSimple<UserGroupEntity> queryUserGroupByPage(Integer currentPage, Integer pageSize) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/userGroup/?currentPage=" + currentPage + "&pageSize=" + pageSize, HttpMethod.GET, new HttpEntity<>(null, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return rep.getObject("data", PageSimple.class);
        }
        throw new RemoteException(rep.getString("msg"));
    }

    @Override
    public UserGroupEntity queryUserGroupById(Long ugId) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/userGroup/" + ugId, HttpMethod.GET, new HttpEntity<>(null, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return rep.getObject("data", UserGroupEntity.class);
        }
        throw new RemoteException(rep.getString("msg"));
    }

    @Override
    public Collection<String> queryUserGroupTags(Long uid) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/userGroup/tag/" + (uid == null ? "" : "?uid=" + uid), HttpMethod.GET, new HttpEntity<>(null, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return rep.getObject("data", ArrayList.class);
        }
        throw new RemoteException(rep.getString("msg"));
    }

    @Override
    public Collection<TreeDTO> queryUserGroupTree(String tag) {
        JSONObject rep = restTemplate.exchange(zAuthConfigurationProperties.getServerUrl() + "/v1/userGroup/tree/" + (tag == null ? "" : "?tag=" + tag), HttpMethod.GET, new HttpEntity<>(null, ZAuthContextUtil.makeSign()), JSONObject.class).getBody();
        assert rep != null;
        if (rep.getInteger("code") == 200) {
            return rep.getObject("data", ArrayList.class);
        }
        throw new RemoteException(rep.getString("msg"));
    }
}

二 工具类

package pro.tjkj.zauth.client.util;

import cn.hutool.core.util.IdUtil;
import cn.hutool.crypto.SecureUtil;
import com.auth0.jwt.interfaces.DecodedJWT;
import org.springframework.http.HttpHeaders;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import pro.tjkj.zauth.client.config.ZAuthConfigurationProperties;
import pro.tjkj.zauth.client.util.jwt.JWTUtil;

import javax.servlet.http.HttpServletRequest;

public class ZAuthContextUtil {

    public static ZAuthConfigurationProperties zAuthConfigurationProperties;
    private final JWTUtil jwtUtil;

    public ZAuthContextUtil(JWTUtil jwtUtil, ZAuthConfigurationProperties zAuthConfigurationProperties) {
        this.jwtUtil = jwtUtil;
        ZAuthContextUtil.zAuthConfigurationProperties = zAuthConfigurationProperties;
    }

    public static HttpServletRequest getRequest() {
        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    }

    public static String getToken() {
        HttpServletRequest request = getRequest();
        return request.getHeader("token");
    }

    public static HttpHeaders makeSign() {
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add("appid", zAuthConfigurationProperties.getServerAppid());
        String random = IdUtil.fastSimpleUUID();
        httpHeaders.add("random", random);
        httpHeaders.add("sign", SecureUtil.md5(zAuthConfigurationProperties.getServerAppid() + random + zAuthConfigurationProperties.getServerAppSecret()));
        return httpHeaders;
    }

    public Long getUid() {
        return Long.valueOf(getJwt().getAudience().get(0));
    }

    public DecodedJWT getJwt() {
        return jwtUtil.verify(getToken());
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没伞的孩子努力奔跑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值