package com.java110.job.task.inspection; import com.alibaba.fastjson.JSON; import com.java110.core.factory.WechatFactory; import com.java110.dto.community.CommunityMemberDto; import com.java110.dto.privilege.BasePrivilegeDto; import com.java110.dto.community.CommunityDto; import com.java110.dto.wechat.SmallWeChatDto; import com.java110.dto.wechat.SmallWechatAttrDto; import com.java110.dto.user.StaffAppAuthDto; import com.java110.dto.task.TaskDto; import com.java110.dto.user.UserDto; import com.java110.dto.wechat.Content; import com.java110.dto.wechat.Data; import com.java110.dto.wechat.PropertyFeeTemplateMessage; import com.java110.intf.community.ICommunityInnerServiceSMO; import com.java110.intf.order.IPrivilegeInnerServiceSMO; import com.java110.intf.store.ISmallWeChatInnerServiceSMO; import com.java110.intf.store.ISmallWechatAttrInnerServiceSMO; import com.java110.intf.user.IStaffAppAuthInnerServiceSMO; import com.java110.job.quartz.TaskSystemQuartz; import com.java110.utils.cache.MappingCache; import com.java110.utils.constant.MappingConstant; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.DateUtil; import com.java110.utils.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import java.util.List; @Component public class PublishTodayFinishInspectionTaskReportTemplate extends TaskSystemQuartz { @Autowired private ISmallWeChatInnerServiceSMO smallWeChatInnerServiceSMOImpl; @Autowired private ICommunityInnerServiceSMO communityInnerServiceSMOImpl; @Autowired private ISmallWechatAttrInnerServiceSMO smallWechatAttrInnerServiceSMOImpl; @Autowired private IPrivilegeInnerServiceSMO privilegeInnerServiceSMO; @Autowired private IStaffAppAuthInnerServiceSMO staffAppAuthInnerServiceSMOImpl; @Autowired private RestTemplate outRestTemplate; //模板信息推送地址 private static String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="; @Override protected void process(TaskDto taskDto) throws Exception { logger.debug("开始执行微信模板信息推送" + taskDto.toString()); // 获取小区 List communityDtos = getAllCommunity(); for (CommunityDto communityDto : communityDtos) { try { publishInspectionTask(taskDto, communityDto); } catch (Exception e) { logger.error("推送消息失败", e); } } } /** * 巡检任务 * * @param taskDto * @param communityDto */ private void publishInspectionTask(TaskDto taskDto, CommunityDto communityDto) { SmallWeChatDto smallWeChatDto = new SmallWeChatDto(); smallWeChatDto.setWeChatType("1100"); smallWeChatDto.setObjType(SmallWeChatDto.OBJ_TYPE_COMMUNITY); smallWeChatDto.setObjId(communityDto.getCommunityId()); List smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto); if (smallWeChatDto == null || smallWeChatDtos.size() <= 0) { logger.error("未配置微信公众号信息,定时任务执行结束"); return; } SmallWeChatDto weChatDto = smallWeChatDtos.get(0); SmallWechatAttrDto smallWechatAttrDto = new SmallWechatAttrDto(); smallWechatAttrDto.setCommunityId(communityDto.getCommunityId()); smallWechatAttrDto.setWechatId(weChatDto.getWeChatId()); smallWechatAttrDto.setSpecCd(SmallWechatAttrDto.SPEC_CD_WECHAT_TEMPLATE); List smallWechatAttrDtos = smallWechatAttrInnerServiceSMOImpl.querySmallWechatAttrs(smallWechatAttrDto); if (smallWechatAttrDtos == null || smallWechatAttrDtos.size() <= 0) { logger.info("未配置微信公众号消息模板"); return; } String templateId = smallWechatAttrDtos.get(0).getValue(); String accessToken = WechatFactory.getAccessToken(weChatDto.getAppId(), weChatDto.getAppSecret()); if (StringUtil.isEmpty(accessToken)) { logger.info("推送微信模板,获取accessToken失败:{}", accessToken); return; } String url = sendMsgUrl + accessToken; CommunityMemberDto communityMemberDto = new CommunityMemberDto(); communityMemberDto.setCommunityId(communityDto.getCommunityId()); communityMemberDto.setAuditStatusCd(CommunityMemberDto.AUDIT_STATUS_NORMAL); communityMemberDto.setMemberTypeCd(CommunityMemberDto.MEMBER_TYPE_PROPERTY); List communityMemberDtos = communityInnerServiceSMOImpl.getCommunityMembers(communityMemberDto); Assert.listOnlyOne(communityMemberDtos, "小区没有物业公司"); BasePrivilegeDto basePrivilegeDto = new BasePrivilegeDto(); basePrivilegeDto.setResource("/todayInspectionNotifyStaff"); basePrivilegeDto.setStoreId(communityMemberDtos.get(0).getMemberId()); basePrivilegeDto.setCommunityId(communityDto.getCommunityId()); List userDtos = privilegeInnerServiceSMO.queryPrivilegeUsers(basePrivilegeDto); for (UserDto userDto : userDtos) { //根据 userId 查询到openId StaffAppAuthDto staffAppAuthDto = new StaffAppAuthDto(); staffAppAuthDto.setStaffId(userDto.getUserId()); staffAppAuthDto.setAppType("WECHAT"); List staffAppAuthDtos = staffAppAuthInnerServiceSMOImpl.queryStaffAppAuths(staffAppAuthDto); if (staffAppAuthDtos == null || staffAppAuthDtos.size() < 1) { continue; } String openId = staffAppAuthDtos.get(0).getOpenId(); Data data = new Data(); PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage(); templateMessage.setTemplate_id(templateId); templateMessage.setTouser(openId); data.setFirst(new Content("今日巡检情况:")); data.setKeyword1(new Content(communityDto.getName()+"今日巡检情况")); data.setKeyword2(new Content(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B))); data.setKeyword3(new Content("今日巡检情况已生成,请点击查看详情")); data.setRemark(new Content("感谢您的使用!")); templateMessage.setData(BeanConvertUtil.beanCovertJson(data)); //获取员工公众号地址 String wechatUrl = MappingCache.getValue(MappingConstant.URL_DOMAIN,"STAFF_WECHAT_URL"); if(wechatUrl.endsWith("/")){ wechatUrl += "#/pages/inspection/inspectionTodayReport"; }else{ wechatUrl += "/#/pages/inspection/inspectionTodayReport"; } templateMessage.setUrl(wechatUrl); logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage)); ResponseEntity responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class); logger.info("微信模板返回内容:{}", responseEntity); } } }