jiangping
2024-07-16 1be9f9fdb13f7c5cdcf29494cb72ced35cd7af10
server/service/src/main/java/com/doumee/biz/zbom/impl/ZbomZhongTaiServiceImpl.java
@@ -1,9 +1,32 @@
package com.doumee.biz.zbom.impl;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.doumee.biz.zbom.ZbomZhongTaiService;
import com.doumee.biz.zbom.model.zhongtai.*;
import com.doumee.biz.zbom.model.zhongtai.response.*;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.HKTools;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.VisitAppointmentCancelRequest;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.HttpsUtil;
import com.doumee.dao.business.CrmInterfaceLogMapper;
import com.doumee.dao.business.InterfaceLogMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.model.CrmInterfaceLog;
import com.doumee.dao.business.model.InterfaceLog;
import com.doumee.dao.web.response.ZSZXCatalogResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 人员信息表Service实现
@@ -11,10 +34,408 @@
 * @date 2023/11/30 15:33
 */
@Service
@Slf4j
public class ZbomZhongTaiServiceImpl implements ZbomZhongTaiService {
    @Autowired
    private MemberMapper memberMapper;
    private InterfaceLogMapper interfaceLogMapper;
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    /**
     * 获取用户登陆token
     * @param param
     * @return
     */
   @Override
   public ZTUserGetTokenResponse getUserToken(ZTUserGetTokenRequest param){
       ZTBaseResponse<ZTUserGetTokenResponse> result = sendHttpRequest(
               ZTConstants.IntegerUrl.USER_GET_TOKEN_URL,
               ZTConstants.IntegerName.USER_GET_TOKEN_NAME,
               param.getToken(),
               param.getUserType(),
               JSONObject.toJSONString(param ),
               new TypeReference<ZTBaseResponse<ZTUserGetTokenResponse>>(){});
       if(result!=null){
           return result.getData();
       }
       return null;
   }
    /**
     * 获取用户登陆token
     * @return
     */
   @Override
   public ZSZXCatalogResponse getZSZXCatalogs(){
       ZSZXCatalogResponse response = new ZSZXCatalogResponse();
       ZTCatalogListRequest param = new ZTCatalogListRequest();
       param.setCatalogCode(ZTConstants.CatalogCode.ZHISHUO_ZHUANGXIU);
       List<ZTCatalogInfoResponse> cataList = getCatalogList(param);
        if(cataList!=null ){
            for(ZTCatalogInfoResponse data : cataList){
                if(StringUtils.equals(data.getCode(), ZTConstants.CatalogCode.JIADE_ID)){
                    response.setJdId(data);
                }else if(StringUtils.equals(data.getCode(), ZTConstants.CatalogCode.CHUFANGSHEJI)){
                    response.setCfsj(data);
                }else if(StringUtils.equals(data.getCode(), ZTConstants.CatalogCode.QW_SHEJI)){
                    response.setQwsj(data);
                }else if(StringUtils.equals(data.getCode(), ZTConstants.CatalogCode.SHOUNASHEJI)){
                    response.setSnsj(data);
                }
            }
        }
       return response;
   }
    /**
     * 用户信息同步
     * @param param
     * @return
     */
    @Override
    public ZTBaseResponse userUpdateInfo(ZTUserInfoUpdateRequest param){
        ZTBaseResponse<ZTUserGetTokenResponse> result = sendHttpRequest(
                ZTConstants.IntegerUrl.USER_UPDATE_URL,
                ZTConstants.IntegerName.USER_UPDATE_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<ZTUserGetTokenResponse>>(){});
//        if(result!=null){
//            return result.getData();
//        }
        return result;
    }
    /**
     * 注销用户
     * @param param
     * @return
     */
    @Override
    public boolean userLogout(ZTBaseRequst param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.USER_LOGOUT_URL,
                ZTConstants.IntegerName.USER_LOGOUT_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<Object>>(){});
        if(result!=null ){
            return true;
        }
        return false;
    }
    /**
     * 获取分类和分类下的标签
     * @param param
     * @return
     */
    @Override
    public  List<ZTCatalogInfoResponse> getCatalogList(ZTCatalogListRequest param){
       ZTBaseResponse<List<ZTCatalogInfoResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.CATALOG_LIST_URL,
                ZTConstants.IntegerName.CATALOG_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
        new TypeReference<ZTBaseResponse<List<ZTCatalogInfoResponse>>>(){});
        if(result!=null){
            return result.getData();
        }
        return null;
    }
    /**
     * 获取分类和分类下的标签
     * @param param
     * @return
     */
    @Override
    public      List<ZTTagInfoResponse> getTagList(ZTCatalogListRequest param){
        ZTBaseResponse<List<ZTTagInfoResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.TAG_LIST_URL,
                ZTConstants.IntegerName.TAG_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<List<ZTTagInfoResponse>>>(){});
        if(result!=null){
            return result.getData();
        }
        return null;
    }
    /**
     * 获取内容列表分页
     * @param param
     * @return
     */
    @Override
    public ZTBasePageResponse<ZTContentListResponse> pageContentList(ZTContentListRequest param){
        ZTBaseResponse<ZTBasePageResponse<ZTContentListResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.CONTENT_LIST_URL,
                ZTConstants.IntegerName.CONTENT_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<ZTBasePageResponse<ZTContentListResponse>>>(){});
        if(result!=null){
            return result.getData();
        }
        return null;
    }
    /**
     * 获取内容详情
     * @param param
     * @return
     */
    @Override
    public ZTContentInfoResponse getContentInfo(ZTContentInfoRequest param){
        ZTBaseResponse<ZTContentInfoResponse> result = sendHttpRequest(
                ZTConstants.IntegerUrl.CONTENT_INFO_URL+ param.getId(),
                ZTConstants.IntegerName.CONTENT_INFO_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<ZTContentInfoResponse>>(){});
        if(result!=null){
            return result.getData();
        }
        return  null;
    }
    /**
     * 内容收藏
     * @param param
     * @return
     */
    @Override
    public ZTBaseResponse collectDo(ZTActionDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.COLLECT_DO_URL,
                ZTConstants.IntegerName.COLLECT_DO_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<Object>>(){});
        return result;
    }
    /**
     * 内容喜欢
     * @param param
     * @return
     */
    @Override
    public  ZTBaseResponse likeDo(ZTActionBatchDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.LIKE_DO_URL,
                ZTConstants.IntegerName.LIKE_DO_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<Object>>(){});
        return result;
    }
    /**
     * 内容分享
     * @param param
     * @return
     */
    @Override
    public ZTBaseResponse shareDo(ZTActionDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.SHARE_DO_URL,
                ZTConstants.IntegerName.SHARE_DO_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<Object>>(){});
        return result;
    }
    /**
     * 内容浏览
     * @param param
     * @return
     */
    @Override
    public ZTBaseResponse viewDo(ZTActionDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.VIEW_DO_URL,
                ZTConstants.IntegerName.VIEW_DO_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<Object>>(){});
        return result;
    }
    /**
     * 用户绑定客户喜欢清单,可绑定多个内容
     * @param param
     * @return
     */
    @Override
    public boolean bindCustomerFavorites(ZTBindCusFavoriteDoRequest param){
        ZTBaseResponse result = sendHttpRequest(
                ZTConstants.IntegerUrl.BIND_CUSTOMER_FAVORITES_URL,
                ZTConstants.IntegerName.BIND_CUSTOMER_FAVORITES_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<Object>>(){});
        if(result!=null ){
            return true;
        }
        return false;
    }
    /**
     * 获取我的收藏列表分页
     * @param param
     * @return
     */
    @Override
    public ZTBasePageResponse<ZTCollectInfoResponse> pageCollectList(ZTContentListRequest param){
        ZTBaseResponse< ZTBasePageResponse<ZTCollectInfoResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.COLLECT_LIST_URL,
                ZTConstants.IntegerName.COLLECT_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<ZTBasePageResponse<ZTCollectInfoResponse>>>(){});
        if(result!=null){
            return result.getData();
        }
        return  null;
    }
    /**
     * 获取我的收藏列表分页
     * @param param
     * @return
     */
    @Override
    public  ZTBasePageResponse<ZTBehaviorInfoResponse> pageBehavoirList(ZTContentListRequest param){
        ZTBaseResponse< ZTBasePageResponse<ZTBehaviorInfoResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.BEHAVIOR_LIST_URL,
                ZTConstants.IntegerName.BEHAVIOR_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<ZTBasePageResponse<ZTBehaviorInfoResponse>>>(){});
        if(result!=null){
            return result.getData();
        }
        return  null;
    }
    /**
     * 获取客户喜欢
     * @param param
     * @return
     */
    @Override
    public ZTBasePageResponse<ZTCusFavoritesInfoResponse> pageCusFavoriteList(ZTContentListRequest param){
        ZTBaseResponse< ZTBasePageResponse<ZTCusFavoritesInfoResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.CUSTOMER_FAVORITES_LIST_URL,
                ZTConstants.IntegerName.CUSTOMER_FAVORITES_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<ZTBasePageResponse<ZTCusFavoritesInfoResponse>>>(){});
        if(result!=null){
            return result.getData();
        }
        return  null;
    }
    /**
     * 获取我的喜欢列表分页
     * @param param
     * @return
     */
    @Override
    public ZTBasePageResponse<ZTContentListResponse> pageLikeList(ZTContentListRequest param){
        ZTBaseResponse< ZTBasePageResponse<ZTContentListResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.LIKE_LIST_URL,
                ZTConstants.IntegerName.LIKE_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<ZTBasePageResponse<ZTContentListResponse>>>(){});
        if(result!=null){
            return result.getData();
        }
        return  null;
    }
    /**
     * 获取获取省市区集合
     * @param param
     * @return
     */
    @Override
    public List<ZTAreaInfoResponse> getAreaList(ZTAreaListRequest param){
       if(StringUtils.isBlank(param.getPid())){
           param.setPid(ZTConstants.DEFAULT_PID);//默认取全部省份
       }
        ZTBaseResponse<List<ZTAreaInfoResponse>> result = sendHttpRequest(
                ZTConstants.IntegerUrl.AREA_LIST_URL,
                ZTConstants.IntegerName.AREA_LIST_NAME,
                param.getToken(),
                param.getUserType(),
                JSONObject.toJSONString(param ),
                new TypeReference<ZTBaseResponse<List<ZTAreaInfoResponse>>>(){});
        if(result!=null){
            return result.getData();
        }
        return  null;
    }
    public   <T>   ZTBaseResponse<T> sendHttpRequest(String url,String name,String token,String userType,String param,TypeReference<ZTBaseResponse<T>> typeReference){
        log.info("【"+name+"】================开始===="+ JSONObject.toJSONString(param));
        String res = null;
        int success = 0;
        try {
            Map<String,String> headers = new HashMap<>();
            headers.put(ZTConstants.HEADER_TOKEN,token);
            headers.put(ZTConstants.HEADER_USERTYPE,userType);
            String index = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.ZBOM_ZHONGTAI_API_URL);
            res = HttpsUtil.postJsonWithHeaders(index+url,param,headers);
            ZTBaseResponse<T>  result = JSONObject.parseObject(res, typeReference.getType());
            logResult(result,name);
            if(Constants.equalsInteger(result.getCode(),ZTConstants.CODE_SUCCESS)){
                return  result;
            }else{
                success =1;
            }
        }catch (Exception e){
            success = 1;
            log.error("【"+name+"】================失败===="+ JSONObject.toJSONString(param));
        }finally {
            saveInterfaceLog(url,name,param,success,res);
        }
        return  null;
    }
    public  void  saveInterfaceLog(String url,String name,String  param,Integer success,String respone){
        if(interfaceLogMapper ==null){
            return;
        }
        InterfaceLog log = new InterfaceLog();
        log.setCreateDate(new Date());
        log.setUrl(url);
        log.setEditDate(log.getCreateDate());
        log.setPlat(Constants.ZERO);
        log.setName(name);
        log.setIsdeleted(Constants.ZERO);
        log.setRequest(param);
        log.setType(Constants.ONE);
        log.setSuccess(success);
        log.setRepose(respone);
        interfaceLogMapper.insert(log);
    }
    private static void logResult(ZTBaseResponse res,String name) {
        if(Constants.equalsInteger(res.getCode(),ZTConstants.CODE_SUCCESS)){
            log.info("【中台接口:"+name+"】================成功====\n"+res);
        }else{
            log.error("【中台接口:"+name+"】================失败====:\n"+ res);
        }
    }
}