package com.doumee.service.business.impl.hksync; 
 | 
  
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
 | 
import com.doumee.biz.system.SystemDictDataBiz; 
 | 
import com.doumee.core.constants.ResponseStatus; 
 | 
import com.doumee.core.exception.BusinessException; 
 | 
import com.doumee.core.haikang.model.HKConstants; 
 | 
import com.doumee.core.haikang.model.param.BaseListPageResponse; 
 | 
import com.doumee.core.haikang.model.param.BaseResponse; 
 | 
import com.doumee.core.haikang.model.param.request.*; 
 | 
import com.doumee.core.haikang.model.param.respose.*; 
 | 
import com.doumee.core.haikang.service.HKService; 
 | 
import com.doumee.core.utils.Constants; 
 | 
import com.doumee.core.utils.DateUtil; 
 | 
import com.doumee.dao.business.dao.MemberMapper; 
 | 
import com.doumee.dao.business.model.Member; 
 | 
import com.doumee.dao.system.join.NoticesJoinMapper; 
 | 
import com.doumee.dao.system.model.Notices; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import java.net.URLEncoder; 
 | 
import java.util.*; 
 | 
  
 | 
/** 
 | 
 * 海康访客业务Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2023/11/30 15:33 
 | 
 */ 
 | 
@Service 
 | 
@Slf4j 
 | 
public class HkSyncNoticeServiceImpl extends HkSyncBaseServiceImpl { 
 | 
    @Autowired 
 | 
    private NoticesJoinMapper noticesJoinMapper; 
 | 
    @Autowired 
 | 
    private SystemDictDataBiz systemDictDataBiz; 
 | 
    @Autowired 
 | 
    private MemberMapper memberMapper; 
 | 
  
 | 
    @Override 
 | 
    public String syncHkNotices(String username){ 
 | 
        if(Constants.DEALING_HK_NOTICE_LIST){ 
 | 
            return   null; 
 | 
        } 
 | 
        Constants.DEALING_HK_NOTICE_LIST =true; 
 | 
        try { 
 | 
            List<String> users = new ArrayList<>(); 
 | 
            users.add(username); 
 | 
  
 | 
            List<Integer> userIds = new ArrayList<>(); 
 | 
            List<Member > userList = memberMapper.selectList(new QueryWrapper<Member>().lambda() 
 | 
                    .in(Member::getPhone,users) 
 | 
                    .eq(Member::getType,Constants.TWO) 
 | 
                    .eq(Member::getIsdeleted,Constants.ZERO)); 
 | 
            Member tu= getFromUserList(username,userList); 
 | 
            if(tu!=null){ 
 | 
                userIds.add(tu.getId()); 
 | 
            }else{ 
 | 
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,无效账号~"); 
 | 
            } 
 | 
            if(userIds.size()>0){ 
 | 
                //清空海康全部的代办数据 
 | 
                noticesJoinMapper.delete(new UpdateWrapper<Notices>().lambda() 
 | 
                        .eq(Notices::getType, Constants.noticesObjectType.hknotice) 
 | 
                        .in(Notices::getUserId, userIds)); 
 | 
            } 
 | 
            Date date = new Date(); 
 | 
            List<GetTodoListResponse> allHkList = new ArrayList<>(); 
 | 
            boolean hasNext = true; 
 | 
            int curTotal = 0; 
 | 
            int curPage = 1; 
 | 
            while (hasNext){ 
 | 
                //分页遍历循环查询所有门禁设备数据 
 | 
                GetTodoListRequest param = new GetTodoListRequest(); 
 | 
//                param.setComId("dfe");//接全部的代办 
 | 
                param.setUserId(username); 
 | 
                param.setStatus(1);//只查待处理的数据 
 | 
                param.setPageNo(curPage); 
 | 
                param.setLocaleType("zh_CN"); 
 | 
                param.setPageSize(100); 
 | 
                BaseResponse<BaseListPageResponse<GetTodoListResponse>>   response = HKService.getTodoListPage(param); 
 | 
                if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ 
 | 
                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~"); 
 | 
                } 
 | 
                BaseListPageResponse<GetTodoListResponse> r = response.getData(); 
 | 
                curTotal += 100; 
 | 
                if(curTotal >= r.getTotal()){ 
 | 
                    hasNext = false; 
 | 
                } 
 | 
                if(r.getList() == null || r.getList().size()==0){ 
 | 
                    hasNext =false; 
 | 
                }else{ 
 | 
                    allHkList.addAll(r.getList()); 
 | 
                } 
 | 
                curPage++; 
 | 
            } 
 | 
            if(allHkList!=null && allHkList.size()>0){ 
 | 
                String gotoUrl = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_WEBSITE_DOMAIN_URL).getCode(); 
 | 
                 List<Notices> list = new ArrayList<>(); 
 | 
                for(GetTodoListResponse data :allHkList){ 
 | 
                   Member u = getFromUserList(data.getUserId(),userList); 
 | 
                   if(u==null){ 
 | 
                       continue; 
 | 
                   } 
 | 
                    userIds.add(u.getId()); 
 | 
                    JSONObject param = new JSONObject(); 
 | 
                    param.put("componentId","dfe"); 
 | 
                    param.put("msgType","tlnc"); 
 | 
                    param.put("componentMenuId", data.getMenuCode()); 
 | 
                    JSONObject c = new JSONObject(); 
 | 
                    c.put("method","dealTlncMsg"); 
 | 
                    c.put("argument", data); 
 | 
                    param.put("callback",c); 
 | 
                    Notices notices = new Notices(); 
 | 
                    notices.setCreateDate(DateUtil.getISO8601DateByStr(data.getMsgCreateTimeIso())); 
 | 
                    notices.setUserId(u.getId()); 
 | 
                    notices.setStatus(Constants.ZERO); 
 | 
                    notices.setSendacopy(Constants.ZERO); 
 | 
                    //业务状态信息 0 =待处理;1=已同意/已处理;2=已拒绝/已退回;3=已转交;4=已撤销 
 | 
                    notices.setParam1(JSONObject.toJSONString(data)); 
 | 
                    notices.setParam2(Constants.ZERO+""); 
 | 
                    notices.setTitle(data.getMsgTitle()); 
 | 
                    if(notices.getCreateDate() == null){ 
 | 
                        notices.setCreateDate(date); 
 | 
                    } 
 | 
                    notices.setIsdeleted(Constants.ZERO); 
 | 
                    notices.setParam4(data.getMsgCreateTimeIso()); 
 | 
                    notices.setParam3(data.getMsgCreateTime()); 
 | 
                    notices.setParam5(JSONObject.toJSONString(param)); 
 | 
                    notices.setType(Constants.noticesObjectType.hknotice); 
 | 
//                  notices.setRemark(gotoUrl+"dps/web/wxAuth/loginV2?oaId=atwl&redirectId=index"); 
 | 
                    //https://atwl.ahzyssl.com/dps/web/wxAuth/loginV2?oaId=atwl&redirectUrl=encode(url) 
 | 
                    String domainUrl = gotoUrl + HKConstants.InterfacePath.wxAuthUrl[0]; 
 | 
                    notices.setRemark(domainUrl+ URLEncoder.encode("/"+StringUtils.defaultString(data.getSegmentId(),"") 
 | 
                            +StringUtils.defaultString(data.getH5Url(),""),"utf-8")); 
 | 
                    list.add(notices); 
 | 
                } 
 | 
                 if(list.size()>0){ 
 | 
                    noticesJoinMapper.insert(list);//批量插入记录 
 | 
                } 
 | 
            } 
 | 
        }catch (Exception e){ 
 | 
            e.printStackTrace(); 
 | 
        }finally { 
 | 
            Constants.DEALING_HK_NOTICE_LIST =false; 
 | 
        } 
 | 
        return  null; 
 | 
    } 
 | 
  
 | 
    private Member getFromUserList(String userId, List<Member> userList) { 
 | 
        if(userList!=null ){ 
 | 
            for(Member u :userList){ 
 | 
                if(StringUtils.equals(u.getPhone(),userId)){ 
 | 
                    return  u; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |