|
@@ -0,0 +1,215 @@
|
|
|
+package cn.hanghui.outapi.platform.alipay.service.impl;
|
|
|
+
|
|
|
+import cn.hanghui.outapi.platform.alipay.entity.po.IotvspUserInfo;
|
|
|
+import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayGroupIdOpenApiRequest;
|
|
|
+import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayOperateRecordCreateOpenApiRequest;
|
|
|
+import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayOperateRecordCreateWithVidOpenApiRequest;
|
|
|
+import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayOperateRecordInfoWithVidApiRequest;
|
|
|
+import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayUserDeleteOpenApiRequest;
|
|
|
+import cn.hanghui.outapi.platform.alipay.entity.rest.request.AlipayUserStateOpenApiRequest;
|
|
|
+import cn.hanghui.outapi.platform.alipay.mapper.IotvspUserInfoMapper;
|
|
|
+import cn.hanghui.outapi.platform.alipay.service.AlipayOpenApiService;
|
|
|
+import cn.hanghui.outapi.platform.common.entity.rest.RestResult;
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.alipay.api.AlipayClient;
|
|
|
+import com.alipay.api.DefaultAlipayClient;
|
|
|
+import com.alipay.api.request.AlipayOpenIotvspGroupidQueryRequest;
|
|
|
+import com.alipay.api.request.AlipayOpenIotvspUserCreateRequest;
|
|
|
+import com.alipay.api.request.AlipayOpenIotvspUserDeleteRequest;
|
|
|
+import com.alipay.api.request.AlipayOpenIotvspUserstateQueryRequest;
|
|
|
+import com.alipay.api.request.AlipayOpenIotvspUserwithvidCreateRequest;
|
|
|
+import com.alipay.api.response.AlipayOpenIotvspGroupidQueryResponse;
|
|
|
+import com.alipay.api.response.AlipayOpenIotvspUserCreateResponse;
|
|
|
+import com.alipay.api.response.AlipayOpenIotvspUserDeleteResponse;
|
|
|
+import com.alipay.api.response.AlipayOpenIotvspUserstateQueryResponse;
|
|
|
+import com.alipay.api.response.AlipayOpenIotvspUserwithvidCreateResponse;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import io.jsonwebtoken.lang.Collections;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+
|
|
|
+ * @author shisl
|
|
|
+ * @package cn.hanghui.outapi.platform.alipay.service.impl
|
|
|
+ * @class AlipayOpenApiServiceImpl
|
|
|
+ * @date 2023/5/6 上午9:11
|
|
|
+ * @description
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+public class AlipayOpenApiServiceImpl implements AlipayOpenApiService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private AlipayClient alipayOpenApiClient;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private IotvspUserInfoMapper iotvspUserInfoMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public RestResult queryOrgGroupId(AlipayGroupIdOpenApiRequest openApiRequest) {
|
|
|
+ log.info("--->查询封闭场景的机构用户库id传递参数:{}", JSONObject.toJSONString(openApiRequest));
|
|
|
+ String groupId = null;
|
|
|
+ AlipayOpenIotvspGroupidQueryRequest request = new AlipayOpenIotvspGroupidQueryRequest();
|
|
|
+ request.setBizContent(JSON.toJSONString(openApiRequest));
|
|
|
+ try {
|
|
|
+ AlipayOpenIotvspGroupidQueryResponse response = alipayOpenApiClient.execute(request);
|
|
|
+ log.info("--->查询封闭场景的机构用户库id响应参数:{}", JSONObject.toJSONString(response));
|
|
|
+ if (Objects.nonNull(response) && response.isSuccess() && StringUtils.isNotBlank(response.getGroupId())) {
|
|
|
+ groupId = response.getGroupId();
|
|
|
+ } else {
|
|
|
+ return RestResult.error(new StringBuffer(response.getMsg()).append(" ").append(response.getSubMsg()).toString());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("query org group id error.", e);
|
|
|
+ return RestResult.error("查询封闭场景的机构平台异常,请联系管理员");
|
|
|
+
|
|
|
+ }
|
|
|
+ return RestResult.ok(groupId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public RestResult createOperateRecordWithVid(AlipayOperateRecordCreateWithVidOpenApiRequest openApiRequest) {
|
|
|
+ log.info("--->自定义vid录入机构用户信息获取操作流水id传递参数:{}", JSONObject.toJSONString(openApiRequest));
|
|
|
+
|
|
|
+ handleUserInfoList(openApiRequest);
|
|
|
+ if (Collections.isEmpty(openApiRequest.getUserInfoList())) {
|
|
|
+ return RestResult.error("用户都已存在");
|
|
|
+ }
|
|
|
+ String uniqueId = null;
|
|
|
+ AlipayOpenIotvspUserwithvidCreateRequest request = new AlipayOpenIotvspUserwithvidCreateRequest();
|
|
|
+ request.setBizContent(JSON.toJSONString(openApiRequest));
|
|
|
+ try {
|
|
|
+ AlipayOpenIotvspUserwithvidCreateResponse response = alipayOpenApiClient.execute(request);
|
|
|
+ log.info("--->自定义vid录入机构用户信息获取操作流水id响应参数:{}", JSONObject.toJSONString(openApiRequest));
|
|
|
+ if (Objects.nonNull(response) && response.isSuccess() && StringUtils.isNotBlank(response.getUniqueId())) {
|
|
|
+ uniqueId = response.getUniqueId();
|
|
|
+
|
|
|
+ opIotvspUserInfo(openApiRequest, uniqueId);
|
|
|
+ } else {
|
|
|
+ return RestResult.error(new StringBuffer(response.getMsg()).append(" ").append(response.getSubMsg()).toString());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("create operate record with vid error.", e);
|
|
|
+ return RestResult.error("自定义vid录入机构用户信息机构平台异常,请联系管理员");
|
|
|
+ }
|
|
|
+ return RestResult.ok(uniqueId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public RestResult deleteUser(AlipayUserDeleteOpenApiRequest openApiRequest) {
|
|
|
+ AlipayOpenIotvspUserDeleteRequest request = new AlipayOpenIotvspUserDeleteRequest();
|
|
|
+ request.setBizContent(JSON.toJSONString(openApiRequest));
|
|
|
+ try {
|
|
|
+ AlipayOpenIotvspUserDeleteResponse response = alipayOpenApiClient.execute(request);
|
|
|
+ if (Objects.nonNull(response) && response.isSuccess()) {
|
|
|
+
|
|
|
+ delIotvspUserInfo(openApiRequest);
|
|
|
+ return RestResult.ok(Boolean.TRUE);
|
|
|
+ } else {
|
|
|
+ return RestResult.error(new StringBuffer(response.getMsg()).append(" ").append(response.getSubMsg()).toString());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("create operate record error.", e);
|
|
|
+ return RestResult.error("自定义vid录入机构用户信息机构平台异常,请联系管理员");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public RestResult queryUserState(AlipayUserStateOpenApiRequest openApiRequest) {
|
|
|
+ AlipayOpenIotvspUserstateQueryRequest request = new AlipayOpenIotvspUserstateQueryRequest();
|
|
|
+ request.setBizContent(JSON.toJSONString(openApiRequest));
|
|
|
+ try {
|
|
|
+ AlipayOpenIotvspUserstateQueryResponse response = alipayOpenApiClient.execute(request);
|
|
|
+ if (Objects.nonNull(response) && response.isSuccess()) {
|
|
|
+ if ("1".equals(response.getState())) {
|
|
|
+ return RestResult.ok(Boolean.TRUE);
|
|
|
+ } else {
|
|
|
+ return RestResult.ok(Boolean.FALSE);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return RestResult.error(new StringBuffer(response.getMsg()).append(" ").append(response.getSubMsg()).toString());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("query user state error.", e);
|
|
|
+ return RestResult.error("查询机构用户在库结果机构平台异常,请联系管理员");
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void delIotvspUserInfo(AlipayUserDeleteOpenApiRequest openApiRequest) {
|
|
|
+ List<IotvspUserInfo> dbUserInfos = iotvspUserInfoMapper.selectList(Wrappers.lambdaQuery(IotvspUserInfo.class).eq(IotvspUserInfo::getOrgOutId, openApiRequest.getOrgOutId()).in(IotvspUserInfo::getVid, openApiRequest.getVidList()).eq(IotvspUserInfo::getIsDeleted, Boolean.FALSE));
|
|
|
+ if (Collections.isEmpty(dbUserInfos)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ dbUserInfos.stream().forEach(item -> {
|
|
|
+ item.setIsDeleted(Boolean.TRUE);
|
|
|
+ iotvspUserInfoMapper.updateById(item);
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void opIotvspUserInfo(AlipayOperateRecordCreateWithVidOpenApiRequest openApiRequest, String uniqueId) {
|
|
|
+ List<AlipayOperateRecordInfoWithVidApiRequest> filterUsers = new ArrayList<>();
|
|
|
+
|
|
|
+ List<AlipayOperateRecordInfoWithVidApiRequest> userInfoList = openApiRequest.getUserInfoList();
|
|
|
+ List<String> vids = userInfoList.stream().map(AlipayOperateRecordInfoWithVidApiRequest::getVid).collect(Collectors.toList());
|
|
|
+ List<IotvspUserInfo> dbUserInfos = iotvspUserInfoMapper.selectList(Wrappers.lambdaQuery(IotvspUserInfo.class).eq(IotvspUserInfo::getOrgOutId, openApiRequest.getOrgOutId()).in(IotvspUserInfo::getVid, vids).eq(IotvspUserInfo::getIsDeleted, Boolean.FALSE));
|
|
|
+ if (!Collections.isEmpty(dbUserInfos)) {
|
|
|
+ List<String> dbVids = dbUserInfos.stream().map(IotvspUserInfo::getVid).collect(Collectors.toList());
|
|
|
+ filterUsers = userInfoList.stream().filter(item -> !dbVids.contains(item.getVid())).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!Collections.isEmpty(filterUsers)) {
|
|
|
+ filterUsers.forEach(item -> {
|
|
|
+ addIotvspUserInfo(item, openApiRequest.getOrgOutId(), uniqueId);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void handleUserInfoList(AlipayOperateRecordCreateWithVidOpenApiRequest openApiRequest) {
|
|
|
+ List<AlipayOperateRecordInfoWithVidApiRequest> userInfoList = openApiRequest.getUserInfoList();
|
|
|
+ if (Collections.isEmpty(userInfoList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<String> vids = new ArrayList<>();
|
|
|
+ userInfoList.stream().forEach(item -> {
|
|
|
+ vids.add(item.getCertType() + item.getCertNo());
|
|
|
+ item.setVid(item.getCertType() + item.getCertNo());
|
|
|
+ });
|
|
|
+ List<IotvspUserInfo> userInfos = iotvspUserInfoMapper.selectList(Wrappers.lambdaQuery(IotvspUserInfo.class).eq(IotvspUserInfo::getOrgOutId, openApiRequest.getOrgOutId()).in(IotvspUserInfo::getVid, vids).eq(IotvspUserInfo::getIsDeleted, Boolean.FALSE));
|
|
|
+ if (Collections.isEmpty(userInfos)) {
|
|
|
+ openApiRequest.setUserInfoList(userInfoList);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<AlipayOperateRecordInfoWithVidApiRequest> filterVidUsers = new ArrayList<>();
|
|
|
+ List<String> dbVids = userInfos.stream().map(IotvspUserInfo::getVid).collect(Collectors.toList());
|
|
|
+ userInfoList.stream().forEach(item -> {
|
|
|
+ if (!dbVids.contains(item.getVid())) {
|
|
|
+ filterVidUsers.add(item);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ openApiRequest.setUserInfoList(filterVidUsers);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addIotvspUserInfo(AlipayOperateRecordInfoWithVidApiRequest item, String orgOutId, String uniqueId) {
|
|
|
+ IotvspUserInfo userInfo = BeanUtil.copyProperties(item, IotvspUserInfo.class);
|
|
|
+ userInfo.setOrgOutId(orgOutId);
|
|
|
+ userInfo.setUniqueId(uniqueId);
|
|
|
+ userInfo.setCreateTime(new Date());
|
|
|
+ userInfo.setUpdateTime(new Date());
|
|
|
+ userInfo.setVersion(1);
|
|
|
+ userInfo.setIsDeleted(Boolean.FALSE);
|
|
|
+ iotvspUserInfoMapper.insert(userInfo);
|
|
|
+ }
|
|
|
+}
|