| | |
| | | import com.java110.dto.repair.RepairDto; |
| | | import com.java110.dto.repair.RepairSettingDto; |
| | | import com.java110.dto.repair.RepairUserDto; |
| | | import com.java110.dto.smallWeChat.SmallWeChatDto; |
| | | import com.java110.dto.smallWechatAttr.SmallWechatAttrDto; |
| | | import com.java110.dto.staffAppAuth.StaffAppAuthDto; |
| | | import com.java110.entity.order.Business; |
| | | import com.java110.entity.wechat.Content; |
| | | import com.java110.entity.wechat.Data; |
| | | import com.java110.entity.wechat.PropertyFeeTemplateMessage; |
| | | import com.java110.dto.wechat.SmallWeChatDto; |
| | | import com.java110.dto.wechat.SmallWechatAttrDto; |
| | | import com.java110.dto.user.StaffAppAuthDto; |
| | | import com.java110.dto.system.Business; |
| | | 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.community.IRepairInnerServiceSMO; |
| | | import com.java110.intf.community.IRepairSettingInnerServiceSMO; |
| | |
| | | import com.java110.intf.store.ISmallWechatAttrInnerServiceSMO; |
| | | import com.java110.intf.user.*; |
| | | import com.java110.job.adapt.DatabusAdaptImpl; |
| | | import com.java110.po.fee.PayFeePo; |
| | | import com.java110.job.msgNotify.MsgNotifyFactory; |
| | | import com.java110.po.owner.RepairUserPo; |
| | | import com.java110.utils.cache.MappingCache; |
| | | import com.java110.utils.cache.UrlCache; |
| | | 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.slf4j.Logger; |
| | | import com.java110.core.log.LoggerFactory; |
| | |
| | | |
| | | @Override |
| | | public void execute(Business business, List<Business> businesses) throws Exception { |
| | | JSONObject data = business.getData(); |
| | | JSONArray businessRepairUsers = new JSONArray(); |
| | | System.out.println("收到日志:>>>>>>>>>>>>>" + data.toJSONString()); |
| | | if (data.containsKey(RepairUserPo.class.getSimpleName())) { |
| | | Object bObj = data.get(RepairUserPo.class.getSimpleName()); |
| | | |
| | | if (bObj instanceof JSONObject) { |
| | | businessRepairUsers.add(bObj); |
| | | } else if (bObj instanceof List) { |
| | | businessRepairUsers = JSONArray.parseArray(JSONObject.toJSONString(bObj)); |
| | | } else { |
| | | businessRepairUsers = (JSONArray) bObj; |
| | | } |
| | | } else { |
| | | if (data instanceof JSONObject) { |
| | | businessRepairUsers.add(data); |
| | | } |
| | | } |
| | | //JSONObject businessOwnerCar = data.getJSONObject("businessOwnerCar"); |
| | | for (int bOwnerRepairIndex = 0; bOwnerRepairIndex < businessRepairUsers.size(); bOwnerRepairIndex++) { |
| | | JSONObject businessRepairUser = businessRepairUsers.getJSONObject(bOwnerRepairIndex); |
| | | doDealOwnerRepair(business, businessRepairUser); |
| | | } |
| | | } |
| | | |
| | | private void doDealOwnerRepair(Business business, JSONObject businessRepairUser) { |
| | | RepairUserDto repairUserDto = new RepairUserDto(); |
| | | repairUserDto.setbId(business.getbId()); |
| | | repairUserDto.setRuId(businessRepairUser.getString("ruId")); |
| | | repairUserDto.setStatusCd("0"); |
| | | List<RepairUserDto> repairUserDtos = repairUserInnerServiceSMO.queryRepairUsers(repairUserDto); |
| | | Assert.listOnlyOne(repairUserDtos, "当前用户没有需要处理订单"); |
| | |
| | | List<RepairSettingDto> repairSettingDtos = repairSettingInnerServiceSMO.queryRepairSettings(repairSettingDto); |
| | | Assert.listOnlyOne(repairSettingDtos, "信息错误"); |
| | | JSONObject paramIn = new JSONObject(); |
| | | if (state.equals("10003")) { //退单状态 |
| | | if (RepairUserDto.STATE_BACK.equals(state)) { //退单状态 |
| | | //退单人 |
| | | String staffName = repairUserDtos.get(0).getStaffName(); |
| | | //退单备注 |
| | |
| | | paramIn.put("returnContext", returnContext); |
| | | paramIn.put("preStaffId", preStaffId); |
| | | paramIn.put("preStaffName", preStaffName); |
| | | paramIn.put("repairName", repairUserDtos.get(0).getRepairName()); |
| | | sendReturnMessage(paramIn, communityDtos.get(0)); |
| | | } else if (state.equals("10002")) { //结单 |
| | | } else if (RepairUserDto.STATE_CLOSE.equals(state)) { //结单 |
| | | //获取用户id |
| | | String preStaffId = repairUserDtos.get(0).getPreStaffId(); |
| | | //获取维修师傅姓名 |
| | |
| | | String time = format.format(endTime); |
| | | //获取价格 |
| | | String price = ""; |
| | | for (Business bus : businesses) { |
| | | if (bus.getBusinessTypeCd().equals("600100030001")) { //保存费用信息 |
| | | JSONObject data = bus.getData(); |
| | | JSONArray jsonArray = data.getJSONArray("PayFeePo"); |
| | | JSONObject jsonObject = jsonArray.getJSONObject(0); |
| | | PayFeePo payFeePo = BeanConvertUtil.covertBean(jsonObject, PayFeePo.class); |
| | | price = payFeePo.getAmount(); |
| | | } |
| | | } |
| | | paramIn.put("repairName", repairName); |
| | | paramIn.put("repairObjName", repairObjName); |
| | | paramIn.put("context", context); |
| | |
| | | //获取报修用户id |
| | | String staffId = repairUserDtoList.get(0).getStaffId(); |
| | | paramIn.put("userId", staffId); |
| | | publishReturnMsg(paramIn, communityDtos.get(0)); |
| | | sendFinishRepairOwnerMsg(paramIn, communityDtos.get(0)); |
| | | if (!StringUtil.isEmpty(price)) { |
| | | paramIn.put("price", price); |
| | | paramIn.put("feeState", "未缴费"); |
| | |
| | | * @param communityDto |
| | | */ |
| | | private void sendReturnMessage(JSONObject paramIn, CommunityDto communityDto) { |
| | | //查询公众号配置 |
| | | SmallWeChatDto smallWeChatDto = new SmallWeChatDto(); |
| | | smallWeChatDto.setWeChatType("1100"); |
| | | smallWeChatDto.setObjType(SmallWeChatDto.OBJ_TYPE_COMMUNITY); |
| | | smallWeChatDto.setObjId(communityDto.getCommunityId()); |
| | | List<SmallWeChatDto> smallWeChatDtos = smallWeChatInnerServiceSMOImpl.querySmallWeChats(smallWeChatDto); |
| | | if (smallWeChatDto == null || smallWeChatDtos.size() <= 0) { |
| | | logger.info("未配置微信公众号信息,定时任务执行结束"); |
| | | return; |
| | | |
| | | JSONObject content = new JSONObject(); |
| | | content.put("repairTypeName", paramIn.getString("repairTypeName")); |
| | | if (communityDto.getName().equals(paramIn.getString("repairObjName"))) { |
| | | content.put("repairObjName", paramIn.getString("repairObjName")); |
| | | } else { |
| | | content.put("repairObjName", communityDto.getName() + paramIn.getString("repairObjName")); |
| | | } |
| | | SmallWeChatDto weChatDto = smallWeChatDtos.get(0); |
| | | SmallWechatAttrDto smallWechatAttrDto = new SmallWechatAttrDto(); |
| | | smallWechatAttrDto.setCommunityId(communityDto.getCommunityId()); |
| | | smallWechatAttrDto.setWechatId(weChatDto.getWeChatId()); |
| | | smallWechatAttrDto.setSpecCd(SmallWechatAttrDto.SPEC_CD_WECHAT_WORK_ORDER_REMIND_TEMPLATE); |
| | | List<SmallWechatAttrDto> 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; |
| | | //根据 userId 查询到openId |
| | | StaffAppAuthDto staffAppAuthDto = new StaffAppAuthDto(); |
| | | staffAppAuthDto.setStaffId(paramIn.getString("preStaffId")); |
| | | staffAppAuthDto.setAppType("WECHAT"); |
| | | List<StaffAppAuthDto> staffAppAuthDtos = staffAppAuthInnerServiceSMO.queryStaffAppAuths(staffAppAuthDto); |
| | | if (staffAppAuthDtos.size() > 0) { |
| | | 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(paramIn.getString("staffName") + "进行维修工单退单操作,请及时处理,信息如下:")); |
| | | data.setKeyword1(new Content(paramIn.getString("repairTypeName"))); |
| | | if (communityDto.getName().equals(paramIn.getString("repairObjName"))) { |
| | | data.setKeyword2(new Content(paramIn.getString("repairObjName"))); |
| | | } else { |
| | | data.setKeyword2(new Content(communityDto.getName() + paramIn.getString("repairObjName"))); |
| | | } |
| | | data.setKeyword3(new Content(paramIn.getString("context"))); |
| | | data.setRemark(new Content(paramIn.getString("returnContext"))); |
| | | templateMessage.setData(data); |
| | | //获取员工公众号地址 |
| | | String wechatUrl = MappingCache.getValue("STAFF_WECHAT_URL"); |
| | | templateMessage.setUrl(wechatUrl); |
| | | logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage)); |
| | | ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class); |
| | | logger.info("微信模板返回内容:{}", responseEntity); |
| | | } |
| | | content.put("repairName", paramIn.getString("repairName")); |
| | | String wechatUrl = MappingCache.getValue(MappingConstant.URL_DOMAIN, "STAFF_WECHAT_URL"); |
| | | content.put("url", wechatUrl); |
| | | |
| | | MsgNotifyFactory.sendReturnRepairMsg(communityDto.getCommunityId(), paramIn.getString("preStaffId"), content); |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param paramIn |
| | | * @param communityDto |
| | | */ |
| | | private void publishReturnMsg(JSONObject paramIn, CommunityDto communityDto) { |
| | | private void sendFinishRepairOwnerMsg(JSONObject paramIn, CommunityDto communityDto) { |
| | | //查询公众号配置 |
| | | SmallWeChatDto smallWeChatDto = new SmallWeChatDto(); |
| | | smallWeChatDto.setWeChatType("1100"); |
| | |
| | | logger.info("未配置微信公众号信息,定时任务执行结束"); |
| | | return; |
| | | } |
| | | SmallWeChatDto weChatDto = smallWeChatDtos.get(0); |
| | | SmallWechatAttrDto smallWechatAttrDto = new SmallWechatAttrDto(); |
| | | smallWechatAttrDto.setCommunityId(communityDto.getCommunityId()); |
| | | smallWechatAttrDto.setWechatId(weChatDto.getWeChatId()); |
| | | smallWechatAttrDto.setSpecCd(SmallWechatAttrDto.SPEC_CD_WECHAT_WORK_ORDER_END_TEMPLATE); |
| | | List<SmallWechatAttrDto> smallWechatAttrDtos = smallWechatAttrInnerServiceSMOImpl.querySmallWechatAttrs(smallWechatAttrDto); |
| | | if (smallWechatAttrDtos == null || smallWechatAttrDtos.size() <= 0) { |
| | | logger.info("未配置微信公众号消息模板"); |
| | | return; |
| | | |
| | | JSONObject content = new JSONObject(); |
| | | content.put("repairObjName", paramIn.getString("repairObjName")); |
| | | content.put("staffName", paramIn.getString("staffName")); |
| | | content.put("time", paramIn.getString("time")); |
| | | String wechatUrl = UrlCache.getOwnerUrl(); |
| | | if (!StringUtil.isEmpty(wechatUrl) && wechatUrl.contains("?")) { |
| | | wechatUrl += ("&wAppId=" + smallWeChatDtos.get(0).getAppId()); |
| | | } else { |
| | | wechatUrl += ("?wAppId=" + smallWeChatDtos.get(0).getAppId()); |
| | | } |
| | | String templateId = smallWechatAttrDtos.get(0).getValue(); |
| | | String accessToken = WechatFactory.getAccessToken(weChatDto.getAppId(), weChatDto.getAppSecret()); |
| | | if (StringUtil.isEmpty(accessToken)) { |
| | | logger.info("推送微信模板,获取accessToken失败:{}", accessToken); |
| | | return; |
| | | } |
| | | //获取用户id |
| | | String staffId = paramIn.getString("userId"); |
| | | if (!StringUtil.isEmpty(staffId)) { |
| | | OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto(); |
| | | ownerAppUserDto.setUserId(staffId); |
| | | ownerAppUserDto.setAppType("WECHAT"); |
| | | //查询绑定业主 |
| | | List<OwnerAppUserDto> ownerAppUserDtos = ownerAppUserInnerServiceSMO.queryOwnerAppUsers(ownerAppUserDto); |
| | | if (ownerAppUserDtos != null && ownerAppUserDtos.size() > 0) { |
| | | //获取openId |
| | | String openId = ownerAppUserDtos.get(0).getOpenId(); |
| | | String url = sendMsgUrl + accessToken; |
| | | Data data = new Data(); |
| | | PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage(); |
| | | templateMessage.setTemplate_id(templateId); |
| | | templateMessage.setTouser(openId); |
| | | data.setFirst(new Content("尊敬的" + paramIn.getString("repairName") + "先生/女士,您的报修问题,已经为您处理完毕。")); |
| | | if (communityDto.getName().equals(paramIn.getString("repairObjName"))) { |
| | | data.setKeyword1(new Content(paramIn.getString("repairObjName"))); |
| | | } else { |
| | | data.setKeyword1(new Content(communityDto.getName() + paramIn.getString("repairObjName"))); |
| | | } |
| | | data.setKeyword2(new Content(paramIn.getString("context"))); |
| | | data.setKeyword3(new Content(paramIn.getString("staffName"))); |
| | | data.setKeyword4(new Content(paramIn.getString("time"))); |
| | | data.setRemark(new Content("请点击查看详情,对我们的工作进行评价,以便提供更优质的服务,感谢您的配合和使用,祝您生活愉快,阖家欢乐!")); |
| | | templateMessage.setData(data); |
| | | //获取业主公众号地址 |
| | | String wechatUrl = MappingCache.getValue("OWNER_WECHAT_URL"); |
| | | templateMessage.setUrl(wechatUrl); |
| | | logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage)); |
| | | ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class); |
| | | logger.info("微信模板返回内容:{}", responseEntity); |
| | | } |
| | | } |
| | | content.put("url", wechatUrl); |
| | | |
| | | MsgNotifyFactory.sendFinishRepairOwnerMsg(communityDto.getCommunityId(), paramIn.getString("userId"), content); |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param communityDto |
| | | */ |
| | | private void sendMessage(JSONObject paramIn, CommunityDto communityDto) { |
| | | |
| | | //查询公众号配置 |
| | | SmallWeChatDto smallWeChatDto = new SmallWeChatDto(); |
| | | smallWeChatDto.setWeChatType("1100"); |
| | |
| | | logger.info("未配置微信公众号信息,定时任务执行结束"); |
| | | return; |
| | | } |
| | | SmallWeChatDto weChatDto = smallWeChatDtos.get(0); |
| | | SmallWechatAttrDto smallWechatAttrDto = new SmallWechatAttrDto(); |
| | | smallWechatAttrDto.setCommunityId(communityDto.getCommunityId()); |
| | | smallWechatAttrDto.setWechatId(weChatDto.getWeChatId()); |
| | | smallWechatAttrDto.setSpecCd(SmallWechatAttrDto.SPEC_CD_WECHAT_REPAIR_CHARGE_SCENE_TEMPLATE); |
| | | List<SmallWechatAttrDto> 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; |
| | | } |
| | | |
| | | //获取房屋所属业主 |
| | | OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto(); |
| | | ownerRoomRelDto.setRoomId(paramIn.getString("roomId")); |
| | |
| | | ownerAppUserDto.setMemberId(ownerId); |
| | | ownerAppUserDto.setAppType("WECHAT"); |
| | | List<OwnerAppUserDto> ownerAppUserDtos = ownerAppUserInnerServiceSMO.queryOwnerAppUsers(ownerAppUserDto); |
| | | if (ownerAppUserDtos != null && ownerAppUserDtos.size() > 0) { |
| | | //获取openId |
| | | String openId = ownerAppUserDtos.get(0).getOpenId(); |
| | | String url = sendMsgUrl + accessToken; |
| | | Data data = new Data(); |
| | | PropertyFeeTemplateMessage templateMessage = new PropertyFeeTemplateMessage(); |
| | | templateMessage.setTemplate_id(templateId); |
| | | templateMessage.setTouser(openId); |
| | | data.setFirst(new Content(paramIn.getString("roomName") + "缴费信息如下:")); |
| | | data.setKeyword1(new Content(paramIn.getString("roomName"))); |
| | | data.setKeyword2(new Content(paramIn.getString("repairName"))); |
| | | data.setKeyword3(new Content("维修费")); |
| | | data.setKeyword4(new Content(paramIn.getString("feeState"))); |
| | | data.setKeyword5(new Content(paramIn.getString("price") + "元")); |
| | | data.setRemark(new Content("请您及时缴费,感谢您的配合和使用,祝您生活愉快,阖家欢乐!")); |
| | | templateMessage.setData(data); |
| | | //获取业主公众号地址 |
| | | String wechatUrl = MappingCache.getValue("OWNER_WECHAT_URL"); |
| | | templateMessage.setUrl(wechatUrl); |
| | | logger.info("发送模板消息内容:{}", JSON.toJSONString(templateMessage)); |
| | | ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(url, JSON.toJSONString(templateMessage), String.class); |
| | | logger.info("微信模板返回内容:{}", responseEntity); |
| | | if (ownerAppUserDtos == null || ownerAppUserDtos.size() < 1) { |
| | | return; |
| | | } |
| | | JSONObject content = new JSONObject(); |
| | | content.put("feeTypeName", "维修费"); |
| | | content.put("payerObjName", paramIn.getString("roomName")); |
| | | content.put("billAmountOwed", paramIn.getString("price") + "元"); |
| | | content.put("date", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B)); |
| | | String wechatUrl = UrlCache.getOwnerUrl(); |
| | | if (!StringUtil.isEmpty(wechatUrl) && wechatUrl.contains("?")) { |
| | | wechatUrl += ("&wAppId=" + smallWeChatDtos.get(0).getAppId()); |
| | | } else { |
| | | wechatUrl += ("?wAppId=" + smallWeChatDtos.get(0).getAppId()); |
| | | } |
| | | content.put("url", wechatUrl); |
| | | MsgNotifyFactory.sendOweFeeMsg(communityDto.getCommunityId(), ownerAppUserDtos.get(0).getUserId(), content); |
| | | |
| | | } |
| | | } |