| | |
| | | package com.java110.job.msgNotify.ali; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.aliyuncs.CommonRequest; |
| | | import com.aliyuncs.CommonResponse; |
| | | import com.aliyuncs.DefaultAcsClient; |
| | | import com.aliyuncs.IAcsClient; |
| | | import com.aliyuncs.exceptions.ClientException; |
| | | import com.aliyuncs.exceptions.ServerException; |
| | | import com.aliyuncs.http.MethodType; |
| | | import com.aliyuncs.profile.DefaultProfile; |
| | | import com.java110.core.factory.AliSendMessageFactory; |
| | | import com.java110.core.factory.CommunitySettingFactory; |
| | | import com.java110.core.factory.LogFactory; |
| | | import com.java110.core.log.LoggerFactory; |
| | | import com.java110.dto.owner.OwnerDto; |
| | | import com.java110.dto.user.StaffAppAuthDto; |
| | | import com.java110.dto.user.UserDto; |
| | | import com.java110.intf.user.IOwnerV1InnerServiceSMO; |
| | | import com.java110.intf.user.IStaffAppAuthInnerServiceSMO; |
| | | import com.java110.intf.user.IUserV1InnerServiceSMO; |
| | | import com.java110.job.msgNotify.IMsgNotify; |
| | | import com.java110.utils.cache.MappingCache; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.DateUtil; |
| | | import com.java110.utils.util.StringUtil; |
| | | import com.java110.vo.ResultVo; |
| | | import org.slf4j.Logger; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Service("aliMsgNotifyImpl") |
| | | public class AliMsgNotifyImpl implements IMsgNotify { |
| | | private final static Logger logger = LoggerFactory.getLogger(AliMsgNotifyImpl.class); |
| | | @Autowired |
| | | private IOwnerV1InnerServiceSMO ownerV1InnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl; |
| | | |
| | | @Override |
| | | public ResultVo sendApplyReturnFeeMsg(String communityId,String userId, JSONObject content) { |
| | | public ResultVo sendApplyReturnFeeMsg(String communityId, String userId, JSONObject content) { |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 发送欠费 账单信息 |
| | | * <p> |
| | | * 需要在阿里云 申请短信模板为 |
| | | * 尊敬的业主,您${house}的账单已生成,缴费金额:${mount}元,请及时缴费 |
| | | * |
| | | * @param communityId 小区 |
| | | * @param userId 用户 |
| | | * @param contents [{ |
| | | * "feeTypeName", |
| | | * "payerObjName", |
| | | * "billAmountOwed", |
| | | * "date", |
| | | * url |
| | | * }] |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ResultVo sendOweFeeMsg(String communityId, String userId, JSONObject content) { |
| | | return null; |
| | | public ResultVo sendOweFeeMsg(String communityId, String userId, String ownerId, List<JSONObject> contents) { |
| | | |
| | | |
| | | if (StringUtil.isEmpty(ownerId) || ownerId.startsWith("-")) { |
| | | throw new IllegalArgumentException("业主不存在,ownerId = " + ownerId); |
| | | } |
| | | |
| | | |
| | | OwnerDto ownerDto = new OwnerDto(); |
| | | ownerDto.setMemberId(ownerId); |
| | | ownerDto.setCommunityId(communityId); |
| | | List<OwnerDto> ownerDtos = ownerV1InnerServiceSMOImpl.queryOwners(ownerDto); |
| | | |
| | | Assert.listOnlyOne(ownerDtos, "业主不存在,ownerId = " + ownerId); |
| | | |
| | | String accessKeyId = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_KEY_ID"); |
| | | String accessSecret = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_SECRET"); |
| | | String region = CommunitySettingFactory.getValue(communityId, "ALI_REGION"); |
| | | String signName = CommunitySettingFactory.getValue(communityId, "ALI_SIGN_NAME"); |
| | | String templateCode = CommunitySettingFactory.getValue(communityId, "ALI_OWE_TEMPLATE_CODE"); |
| | | DefaultProfile profile = DefaultProfile.getProfile(region, |
| | | accessKeyId, |
| | | accessSecret); |
| | | IAcsClient client = new DefaultAcsClient(profile); |
| | | |
| | | CommonRequest request = new CommonRequest(); |
| | | request.setSysMethod(MethodType.POST); |
| | | request.setSysDomain("dysmsapi.aliyuncs.com"); |
| | | request.setSysVersion("2017-05-25"); |
| | | request.setSysAction("SendSms"); |
| | | request.putQueryParameter("RegionId", region); |
| | | request.putQueryParameter("PhoneNumbers", ownerDtos.get(0).getLink()); |
| | | request.putQueryParameter("SignName", signName); |
| | | request.putQueryParameter("TemplateCode", templateCode); |
| | | |
| | | BigDecimal oweFee = new BigDecimal(0); |
| | | |
| | | Date startDate = null; |
| | | Date endDate = null; |
| | | Date tmpStartDate = null; |
| | | Date tmpEndDate = null; |
| | | for (JSONObject content : contents) { |
| | | oweFee = oweFee.add(new BigDecimal(content.getDouble("billAmountOwed"))).setScale(2, BigDecimal.ROUND_HALF_UP); |
| | | tmpStartDate = DateUtil.getDateFromStringB(content.getString("date").split("~")[0]); |
| | | tmpEndDate = DateUtil.getDateFromStringB(content.getString("date").split("~")[1]); |
| | | if (startDate == null) { |
| | | startDate = tmpStartDate; |
| | | endDate = tmpEndDate; |
| | | continue; |
| | | } |
| | | if (startDate.getTime() > tmpStartDate.getTime()) { |
| | | startDate = tmpStartDate; |
| | | } |
| | | if (endDate.getTime() < tmpEndDate.getTime()) { |
| | | endDate = tmpEndDate; |
| | | } |
| | | } |
| | | |
| | | JSONObject param = new JSONObject(); |
| | | param.put("house", contents.get(0).getString("payerObjName")); |
| | | // param.put("feeType", content.getString("feeTypeName")); |
| | | param.put("date", DateUtil.getFormatTimeStringB(startDate)); |
| | | param.put("date2", DateUtil.getFormatTimeStringB(endDate)); |
| | | param.put("mount", oweFee.doubleValue()); |
| | | request.putQueryParameter("TemplateParam", param.toString()); |
| | | |
| | | String resParam = ""; |
| | | try { |
| | | CommonResponse response = client.getCommonResponse(request); |
| | | logger.debug("发送验证码信息:{}", response.getData()); |
| | | resParam = response.getData(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | resParam = e.getMessage(); |
| | | throw new IllegalArgumentException("短信催缴失败" + e.getMessage()); |
| | | } finally { |
| | | LogFactory.saveOutLog("SMS", param.toString(), new ResponseEntity(resParam, HttpStatus.OK)); |
| | | } |
| | | return new ResultVo(ResultVo.CODE_OK, "成功"); |
| | | } |
| | | |
| | | @Override |
| | | public ResultVo sendPayFeeMsg(String communityId, String userId, JSONObject content,String role) { |
| | | public ResultVo sendPayFeeMsg(String communityId, String userId, JSONObject content, String role) { |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 发送内容 尊敬的员工,您有一个报修单需要处理,单号为{repairId},请您及时处理 |
| | | * |
| | | * @param communityId 小区 |
| | | * @param userId 用户 |
| | | * @param content { |
| | | * repairId, |
| | | * repairTypeName, |
| | | * repairObjName, |
| | | * repairName, |
| | | * url |
| | | * } |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ResultVo sendAddOwnerRepairMsg(String communityId, String userId, JSONObject content) { |
| | | if (StringUtil.isEmpty(userId) || userId.startsWith("-")) { |
| | | throw new IllegalArgumentException("员工不存在,userId = " + userId); |
| | | } |
| | | |
| | | |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(userId); |
| | | List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto); |
| | | if (userDtos == null || userDtos.size() < 1) { |
| | | throw new IllegalArgumentException("员工不存在"); |
| | | } |
| | | |
| | | |
| | | String accessKeyId = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_KEY_ID"); |
| | | String accessSecret = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_SECRET"); |
| | | String region = CommunitySettingFactory.getValue(communityId, "ALI_REGION"); |
| | | String signName = CommunitySettingFactory.getValue(communityId, "ALI_SIGN_NAME"); |
| | | String templateCode = CommunitySettingFactory.getValue(communityId, "ALI_REPAIR_TEMPLATE_CODE"); |
| | | DefaultProfile profile = DefaultProfile.getProfile(region, |
| | | accessKeyId, |
| | | accessSecret); |
| | | IAcsClient client = new DefaultAcsClient(profile); |
| | | |
| | | CommonRequest request = new CommonRequest(); |
| | | request.setSysMethod(MethodType.POST); |
| | | request.setSysDomain("dysmsapi.aliyuncs.com"); |
| | | request.setSysVersion("2017-05-25"); |
| | | request.setSysAction("SendSms"); |
| | | request.putQueryParameter("RegionId", region); |
| | | request.putQueryParameter("PhoneNumbers", userDtos.get(0).getTel()); |
| | | request.putQueryParameter("SignName", signName); |
| | | request.putQueryParameter("TemplateCode", templateCode); |
| | | |
| | | |
| | | |
| | | JSONObject param = new JSONObject(); |
| | | param.put("repairId", content.getString("repairId")); |
| | | request.putQueryParameter("TemplateParam", param.toString()); |
| | | |
| | | String resParam = ""; |
| | | try { |
| | | CommonResponse response = client.getCommonResponse(request); |
| | | logger.debug("发送验证码信息:{}", response.getData()); |
| | | resParam = response.getData(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | resParam = e.getMessage(); |
| | | throw new IllegalArgumentException("短信工单失败" + e.getMessage()); |
| | | } finally { |
| | | LogFactory.saveOutLog("SMS", param.toString(), new ResponseEntity(resParam, HttpStatus.OK)); |
| | | } |
| | | return new ResultVo(ResultVo.CODE_OK, "成功"); |
| | | } |
| | | |
| | | /** |
| | | * 发送内容 尊敬的员工,您有一个报修单需要处理,单号为{repairId},请您及时处理 |
| | | * @param communityId 小区 |
| | | * @param userId 用户 |
| | | * @param content { |
| | | * repairId, |
| | | * repairName, |
| | | * tel, |
| | | * time, |
| | | * address |
| | | * } |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ResultVo sendDistributeRepairStaffMsg(String communityId, String userId, JSONObject content) { |
| | | |
| | | if (StringUtil.isEmpty(userId) || userId.startsWith("-")) { |
| | | throw new IllegalArgumentException("员工不存在,userId = " + userId); |
| | | } |
| | | |
| | | |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(userId); |
| | | List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto); |
| | | if (userDtos == null || userDtos.size() < 1) { |
| | | throw new IllegalArgumentException("员工不存在"); |
| | | } |
| | | |
| | | |
| | | String accessKeyId = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_KEY_ID"); |
| | | String accessSecret = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_SECRET"); |
| | | String region = CommunitySettingFactory.getValue(communityId, "ALI_REGION"); |
| | | String signName = CommunitySettingFactory.getValue(communityId, "ALI_SIGN_NAME"); |
| | | String templateCode = CommunitySettingFactory.getValue(communityId, "ALI_REPAIR_TEMPLATE_CODE"); |
| | | DefaultProfile profile = DefaultProfile.getProfile(region, |
| | | accessKeyId, |
| | | accessSecret); |
| | | IAcsClient client = new DefaultAcsClient(profile); |
| | | |
| | | CommonRequest request = new CommonRequest(); |
| | | request.setSysMethod(MethodType.POST); |
| | | request.setSysDomain("dysmsapi.aliyuncs.com"); |
| | | request.setSysVersion("2017-05-25"); |
| | | request.setSysAction("SendSms"); |
| | | request.putQueryParameter("RegionId", region); |
| | | request.putQueryParameter("PhoneNumbers", userDtos.get(0).getTel()); |
| | | request.putQueryParameter("SignName", signName); |
| | | request.putQueryParameter("TemplateCode", templateCode); |
| | | |
| | | JSONObject param = new JSONObject(); |
| | | param.put("repairId", content.getString("repairId")); |
| | | request.putQueryParameter("TemplateParam", param.toString()); |
| | | |
| | | String resParam = ""; |
| | | try { |
| | | CommonResponse response = client.getCommonResponse(request); |
| | | logger.debug("发送验证码信息:{}", response.getData()); |
| | | resParam = response.getData(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | resParam = e.getMessage(); |
| | | throw new IllegalArgumentException("短信工单失败" + e.getMessage()); |
| | | } finally { |
| | | LogFactory.saveOutLog("SMS", param.toString(), new ResponseEntity(resParam, HttpStatus.OK)); |
| | | } |
| | | return new ResultVo(ResultVo.CODE_OK, "成功"); |
| | | } |
| | | |
| | | @Override |
| | | public ResultVo sendDistributeRepairOwnerMsg(String communityId, String userId, JSONObject content) { |
| | | |
| | | return new ResultVo(ResultVo.CODE_OK,"成功"); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public ResultVo sendFinishRepairOwnerMsg(String communityId, String userId, JSONObject content) { |
| | | |
| | | return new ResultVo(ResultVo.CODE_OK,"成功"); |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * @param communityId 小区 |
| | | * @param userId 用户 |
| | | * @param content { |
| | | * repairTypeName, |
| | | * repairObjName, |
| | | * repairName, |
| | | * url |
| | | * } |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ResultVo sendReturnRepairMsg(String communityId, String userId, JSONObject content) { |
| | | if (StringUtil.isEmpty(userId) || userId.startsWith("-")) { |
| | | throw new IllegalArgumentException("员工不存在,userId = " + userId); |
| | | } |
| | | |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(userId); |
| | | List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto); |
| | | if (userDtos == null || userDtos.size() < 1) { |
| | | throw new IllegalArgumentException("员工不存在"); |
| | | } |
| | | |
| | | |
| | | String accessKeyId = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_KEY_ID"); |
| | | String accessSecret = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_SECRET"); |
| | | String region = CommunitySettingFactory.getValue(communityId, "ALI_REGION"); |
| | | String signName = CommunitySettingFactory.getValue(communityId, "ALI_SIGN_NAME"); |
| | | String templateCode = CommunitySettingFactory.getValue(communityId, "ALI_REPAIR_TEMPLATE_CODE"); |
| | | DefaultProfile profile = DefaultProfile.getProfile(region, |
| | | accessKeyId, |
| | | accessSecret); |
| | | IAcsClient client = new DefaultAcsClient(profile); |
| | | |
| | | CommonRequest request = new CommonRequest(); |
| | | request.setSysMethod(MethodType.POST); |
| | | request.setSysDomain("dysmsapi.aliyuncs.com"); |
| | | request.setSysVersion("2017-05-25"); |
| | | request.setSysAction("SendSms"); |
| | | request.putQueryParameter("RegionId", region); |
| | | request.putQueryParameter("PhoneNumbers", userDtos.get(0).getTel()); |
| | | request.putQueryParameter("SignName", signName); |
| | | request.putQueryParameter("TemplateCode", templateCode); |
| | | |
| | | |
| | | JSONObject param = new JSONObject(); |
| | | param.put("repairId", content.getString("repairId")); |
| | | request.putQueryParameter("TemplateParam", param.toString()); |
| | | |
| | | String resParam = ""; |
| | | try { |
| | | CommonResponse response = client.getCommonResponse(request); |
| | | logger.debug("发送验证码信息:{}", response.getData()); |
| | | resParam = response.getData(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | resParam = e.getMessage(); |
| | | throw new IllegalArgumentException("短信工单失败" + e.getMessage()); |
| | | } finally { |
| | | LogFactory.saveOutLog("SMS", param.toString(), new ResponseEntity(resParam, HttpStatus.OK)); |
| | | } |
| | | return new ResultVo(ResultVo.CODE_OK, "成功"); |
| | | } |
| | | |
| | | /** |
| | | * 待处理 |
| | | * @param communityId 小区 |
| | | * @param userId 用户 |
| | | * @param content { |
| | | * flowName, |
| | | * create_user_name, |
| | | * create_time, |
| | | * url |
| | | * } |
| | | * @return |
| | | */ |
| | | @Override |
| | | public ResultVo sendOaDistributeMsg(String communityId, String userId, JSONObject content) { |
| | | if (StringUtil.isEmpty(userId) || userId.startsWith("-")) { |
| | | throw new IllegalArgumentException("员工不存在,userId = " + userId); |
| | | } |
| | | |
| | | |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(userId); |
| | | List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto); |
| | | if (userDtos == null || userDtos.size() < 1) { |
| | | throw new IllegalArgumentException("员工不存在"); |
| | | } |
| | | |
| | | |
| | | String accessKeyId = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_KEY_ID"); |
| | | String accessSecret = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_SECRET"); |
| | | String region = CommunitySettingFactory.getValue(communityId, "ALI_REGION"); |
| | | String signName = CommunitySettingFactory.getValue(communityId, "ALI_SIGN_NAME"); |
| | | String templateCode = CommunitySettingFactory.getValue(communityId, "ALI_OA_UNDO_TEMPLATE_CODE"); |
| | | DefaultProfile profile = DefaultProfile.getProfile(region, |
| | | accessKeyId, |
| | | accessSecret); |
| | | IAcsClient client = new DefaultAcsClient(profile); |
| | | |
| | | CommonRequest request = new CommonRequest(); |
| | | request.setSysMethod(MethodType.POST); |
| | | request.setSysDomain("dysmsapi.aliyuncs.com"); |
| | | request.setSysVersion("2017-05-25"); |
| | | request.setSysAction("SendSms"); |
| | | request.putQueryParameter("RegionId", region); |
| | | request.putQueryParameter("PhoneNumbers", userDtos.get(0).getTel()); |
| | | request.putQueryParameter("SignName", signName); |
| | | request.putQueryParameter("TemplateCode", templateCode); |
| | | |
| | | |
| | | JSONObject param = new JSONObject(); |
| | | param.put("orderId", content.getString("orderId")); |
| | | request.putQueryParameter("TemplateParam", param.toString()); |
| | | |
| | | String resParam = ""; |
| | | try { |
| | | CommonResponse response = client.getCommonResponse(request); |
| | | logger.debug("发送验证码信息:{}", response.getData()); |
| | | resParam = response.getData(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | resParam = e.getMessage(); |
| | | throw new IllegalArgumentException("短信工单失败" + e.getMessage()); |
| | | } finally { |
| | | LogFactory.saveOutLog("SMS", param.toString(), new ResponseEntity(resParam, HttpStatus.OK)); |
| | | } |
| | | return new ResultVo(ResultVo.CODE_OK, "成功"); |
| | | } |
| | | |
| | | @Override |
| | | public ResultVo sendOaCreateStaffMsg(String communityId, String userId, JSONObject content) { |
| | | |
| | | if (StringUtil.isEmpty(userId) || userId.startsWith("-")) { |
| | | throw new IllegalArgumentException("员工不存在,userId = " + userId); |
| | | } |
| | | |
| | | |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserId(userId); |
| | | List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto); |
| | | if (userDtos == null || userDtos.size() < 1) { |
| | | throw new IllegalArgumentException("员工不存在"); |
| | | } |
| | | |
| | | |
| | | String accessKeyId = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_KEY_ID"); |
| | | String accessSecret = CommunitySettingFactory.getValue(communityId, "ALI_ACCESS_SECRET"); |
| | | String region = CommunitySettingFactory.getValue(communityId, "ALI_REGION"); |
| | | String signName = CommunitySettingFactory.getValue(communityId, "ALI_SIGN_NAME"); |
| | | String templateCode = CommunitySettingFactory.getValue(communityId, "ALI_OA_FINISH_TEMPLATE_CODE"); |
| | | DefaultProfile profile = DefaultProfile.getProfile(region, |
| | | accessKeyId, |
| | | accessSecret); |
| | | IAcsClient client = new DefaultAcsClient(profile); |
| | | |
| | | CommonRequest request = new CommonRequest(); |
| | | request.setSysMethod(MethodType.POST); |
| | | request.setSysDomain("dysmsapi.aliyuncs.com"); |
| | | request.setSysVersion("2017-05-25"); |
| | | request.setSysAction("SendSms"); |
| | | request.putQueryParameter("RegionId", region); |
| | | request.putQueryParameter("PhoneNumbers", userDtos.get(0).getTel()); |
| | | request.putQueryParameter("SignName", signName); |
| | | request.putQueryParameter("TemplateCode", templateCode); |
| | | |
| | | |
| | | JSONObject param = new JSONObject(); |
| | | param.put("orderId", content.getString("orderId")); |
| | | request.putQueryParameter("TemplateParam", param.toString()); |
| | | |
| | | String resParam = ""; |
| | | try { |
| | | CommonResponse response = client.getCommonResponse(request); |
| | | logger.debug("发送验证码信息:{}", response.getData()); |
| | | resParam = response.getData(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | resParam = e.getMessage(); |
| | | throw new IllegalArgumentException("短信工单失败" + e.getMessage()); |
| | | } finally { |
| | | LogFactory.saveOutLog("SMS", param.toString(), new ResponseEntity(resParam, HttpStatus.OK)); |
| | | } |
| | | return new ResultVo(ResultVo.CODE_OK, "成功"); |
| | | } |
| | | } |