Browse Source

Merge remote-tracking branch 'origin/dev_1118' into dev_1118

# Conflicts:
#	esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java
dev
尹作梅 6 years ago
parent
commit
5ca7f7cf99
  1. 24
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java
  2. 18
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java
  3. 18
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java
  4. 14
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java
  5. 35
      esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml
  6. 5
      esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml
  7. 115
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/IssueOverseeResultsTask.java
  8. 33
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java
  9. 20
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java
  10. 31
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/MessageFeignClient.java
  11. 10
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java
  12. 21
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/MessageFeignClientFallback.java
  13. 24
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java
  14. 9
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java
  15. 70
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java
  16. 16
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml
  17. 5
      esua-epdc/epdc-module/epdc-group/epdc-group-client/pom.xml
  18. 33
      esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/async/IssueOverseeResultsTask.java
  19. 31
      esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/MessageFeignClient.java
  20. 21
      esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/fallback/MessageFeignClientFallback.java
  21. 9
      esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/group/dao/GroupDao.java
  22. 37
      esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/group/service/impl/GroupServiceImpl.java
  23. 25
      esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/group/service/impl/UserGroupServiceImpl.java
  24. 9
      esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/resources/mapper/group/GroupDao.xml
  25. 64
      esua-epdc/epdc-module/epdc-message/epdc-message-client/src/main/java/com/elink/esua/epdc/constant/SysSmsTemplateConstant.java
  26. 117
      esua-epdc/epdc-module/epdc-message/epdc-message-client/src/main/java/com/elink/esua/epdc/dto/SmsLogDTO.java
  27. 102
      esua-epdc/epdc-module/epdc-message/epdc-message-client/src/main/java/com/elink/esua/epdc/dto/SmsTemplateDTO.java
  28. 30
      esua-epdc/epdc-module/epdc-message/epdc-message-client/src/main/java/com/elink/esua/epdc/dto/form/SmsNoticeFormDTO.java
  29. 42
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/controller/AppSmsTemplateController.java
  30. 95
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/controller/SmsLogController.java
  31. 95
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/controller/SmsTemplateController.java
  32. 42
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/dao/SmsLogDao.java
  33. 55
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/dao/SmsTemplateDao.java
  34. 85
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/entity/SmsLogEntity.java
  35. 68
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/entity/SmsTemplateEntity.java
  36. 77
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/excel/SmsLogExcel.java
  37. 68
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/excel/SmsTemplateExcel.java
  38. 47
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/redis/SmsLogRedis.java
  39. 47
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/redis/SmsTemplateRedis.java
  40. 102
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/service/SmsLogService.java
  41. 126
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/service/SmsTemplateService.java
  42. 116
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/service/impl/SmsLogServiceImpl.java
  43. 245
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/service/impl/SmsTemplateServiceImpl.java
  44. 12
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/sms/AbstractSmsService.java
  45. 42
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/sms/AliyunSmsService.java
  46. 32
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/sms/QcloudSmsService.java
  47. 63
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/resources/mapper/SmsLogDao.xml
  48. 37
      esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/resources/mapper/SmsTemplateDao.xml

24
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java

@ -322,4 +322,28 @@ public class SysUserController {
return new Result();
}
/**
* @Description: 根据部门id查询部门下的所有用户手机号
* @Param: [deptId]
* @return: com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<java.lang.String>>
* @Author: zy
* @Date: 2020-01-09
*/
@GetMapping("getUserPhoneByListDeptId")
public Result<List<String>> getUserPhoneByListDeptId(@RequestBody List<Long> deptId){
return sysUserService.getUserPhoneByListDeptId(deptId);
}
/**
* @Description: 根据议题网格ID查询拥有这个网格数据权限且是网格长的角色再根据角色查出所有用户手机号
* @Param: [deptId]
* @return: com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<java.lang.String>>
* @Author: zy
* @Date: 2020-01-09
*/
@GetMapping("getSysGridLeaderPhone/{deptId}")
public Result<List<String>> getSysGridLeaderPhone(@PathVariable("deptId") Long deptId){
return sysUserService.getSysGridLeaderPhone(deptId);
}
}

18
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java

@ -87,4 +87,22 @@ public interface SysUserDao extends BaseDao<SysUserEntity> {
* 退出登录
*/
void updateUserOpenId(@Param("userId") Long userId);
/**
* @Description: 根据部门id查询部门下的所有用户手机号
* @Param: [map]
* @return: java.util.List<java.lang.String>
* @Author: zy
* @Date: 2020-01-09
*/
List<String> getUserPhoneByListDeptId(Map<String, Object> deptId);
/**
* @Description: 根据议题网格ID查询拥有这个网格数据权限且是网格长的角色再根据角色查出所有用户手机号
* @Param: [deptId]
* @return: java.util.List<java.lang.String>
* @Author: zy
* @Date: 2020-01-09
*/
List<String> getSysGridLeaderPhone(Long deptId);
}

18
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java

@ -100,4 +100,22 @@ public interface SysUserService extends BaseService<SysUserEntity> {
* @return
*/
void updateUserOpenId(Long userId);
/**
* @Description: 根据部门id查询部门下的所有用户手机号
* @Param: [deptId]
* @return: com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<java.lang.String>>
* @Author: zy
* @Date: 2020-01-09
*/
Result<List<String>> getUserPhoneByListDeptId(List<Long> deptId);
/**
* @Description: 根据议题网格ID查询拥有这个网格数据权限且是网格长的角色再根据角色查出所有用户手机号
* @Param: [deptId]
* @return: com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<java.lang.String>>
* @Author: zy
* @Date: 2020-01-09
*/
Result<List<String>> getSysGridLeaderPhone(Long deptId);
}

14
esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java

@ -38,6 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -246,5 +247,18 @@ public class SysUserServiceImpl extends BaseServiceImpl<SysUserDao, SysUserEntit
baseDao.updateUserOpenId(userId);
}
@Override
public Result<List<String>> getUserPhoneByListDeptId(List<Long> deptId) {
Map<String,Object> map = new HashMap<>();
map.put("deptId",deptId);
List<String> list = baseDao.getUserPhoneByListDeptId(map);
return new Result<List<String>>().ok(list);
}
@Override
public Result<List<String>> getSysGridLeaderPhone(Long deptId) {
return new Result<List<String>>().ok(baseDao.getSysGridLeaderPhone(deptId));
}
}

35
esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml

@ -107,4 +107,39 @@
UPDATE sys_user SET open_id = '' WHERE id = #{userId} AND del_flag = 0
</update>
<!-- 根据部门id,查询部门下的所有用户手机号 -->
<select id="getUserPhoneByListDeptId" resultType="String">
SELECT
u.mobile mobile
FROM
sys_user u
where u.del_flag = 0
<if test="deptId != null">
AND u.dept_id in
<foreach collection="deptId" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
<!-- 根据议题网格ID查询拥有这个网格数据权限且是网格长的角色,再根据角色查出所有用户手机号 -->
<select id="getSysGridLeaderPhone" parameterType="Long" resultType="String">
SELECT
c.mobile
FROM
(
SELECT DISTINCT
u.id,
u.mobile
FROM
sys_role r
LEFT JOIN sys_role_user ru ON r.id = ru.role_id
LEFT JOIN sys_user u ON ru.user_id = u.id
WHERE
r.DEL_FLAG = 0
AND u.DEL_FLAG = 0
AND r.type_key = 'gridLeader'
AND r.dept_id = #{deptId}
) c
</select>
</mapper>

5
esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml

@ -39,6 +39,11 @@
<version>1.4.11.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.esua.epdc</groupId>
<artifactId>epdc-message-client</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>

115
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/IssueOverseeResultsTask.java

@ -0,0 +1,115 @@
package com.elink.esua.epdc.modules.async;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.SysSmsTemplateConstant;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.dto.item.form.ItemHandleSubmitFormDTO;
import com.elink.esua.epdc.enums.ItemHandleCategoryEnum;
import com.elink.esua.epdc.modules.feign.AdminFeignClient;
import com.elink.esua.epdc.modules.feign.MessageFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.List;
/**
*
* 议题审核结果 - 发送短信
*
* @Authorzy
* @Date2020/01/08 10:31
*/
@Component
public class IssueOverseeResultsTask {
@Autowired
private MessageFeignClient messageFeignClient;
@Autowired
private AdminFeignClient adminFeignClient;
/**
* 短信通知 关联人
*
* @param smsNoticeFormDTO
* @return void
* @author zy
* @Date2020/01/08 10:31
*/
@Async
public void sendSmsNotice(SmsNoticeFormDTO smsNoticeFormDTO) {
messageFeignClient.sendSmsNotice(smsNoticeFormDTO);
}
/**
* @Description: 根据部门id异步查询部门下的所有用户手机号
* @Description: 根据手机号进行短信推送
* @Param: [dto, deptId]
* @return: void
* @Author: zy
* @Date: 2020-01-09
*/
@Async
public void getUserPhoneByListDeptId(ItemHandleSubmitFormDTO dto, List<Long> deptId){
Result<List<String>> data = adminFeignClient.getUserPhoneByListDeptId(deptId);
if (data.success() && data.getData() != null && data.getData().size() > 0) {
this.projectSmsNotification(dto, data.getData());//向部门下的,所有人员发送短信
}
}
/**
* @Description: 根据议题网格ID 异步查询拥有这个网格数据权限且是网格长的角色再根据角色查出所有用户手机号
* @Description: 根据手机号进行短信推送
* @Param: [deptId]
* @return: void
* @Author: zy
* @Date: 2020-01-09
*/
@Async
public void getSysGridLeaderPhone(Long deptId){
Result<List<String>> data = adminFeignClient.getSysGridLeaderPhone(deptId);
if (data.success() && data.getData() != null && data.getData().size() > 0) {
this.issueSmsNotification(data.getData());//短信通知 所有有菜单权限的议题审核员
}
}
/**
* @Description: 工作端项目处理发送短信
* @Param: [dto]
* @Param: userId 用户手机号
* @return: void
* @Author: zy
* @Date: 2020-01-08
*/
public void projectSmsNotification(ItemHandleSubmitFormDTO dto, List<String> userMobiles){
// 审核操作发送短信
SmsNoticeFormDTO sms = new SmsNoticeFormDTO();
sms.setMobiles(userMobiles);
if (ItemHandleCategoryEnum.HANDLE_CLOSE.getValue() == dto.getHandleCategory()){
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_WORK_ITEM_CLOSED);// 关闭
}else if(ItemHandleCategoryEnum.HANDLE_CLOSING_CASE.getValue() == dto.getHandleCategory()){
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_WORK_ITEM_SETTLE);// 结案
}else if(ItemHandleCategoryEnum.HANDLE_CIRCULATION_ASSISTANCE.getValue() == dto.getHandleCategory()){
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_WORK_ITEM_WHISTLE);// 被吹哨
}else if(ItemHandleCategoryEnum.HANDLE_I_HANDLE.getValue() == dto.getHandleCategory()){
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_WORK_ITEM_WHISTLE_FEEDBACK);// 回应:吹哨反馈
}
this.sendSmsNotice(sms);
}
/**
* @Description: 工作端:议题议题发布短信通知 当前网格下的网格长
* @Param: [userMobiles] 手机号列表
* @return: void
* @Author: zy
* @Date: 2020-01-08
*/
private void issueSmsNotification(List<String> userMobiles){
// 审核操作发送短信
SmsNoticeFormDTO sms = new SmsNoticeFormDTO();
sms.setMobiles(userMobiles);
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_WORK_ISSUE_WAIT_REVIEW);//议题发布,状态为待审核
this.sendSmsNotice(sms);
}
}

33
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java

@ -31,6 +31,7 @@ import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.EventIssueItemState;
import com.elink.esua.epdc.constant.EventsNoticeConstant;
import com.elink.esua.epdc.constant.ImageConstant;
import com.elink.esua.epdc.constant.SysSmsTemplateConstant;
import com.elink.esua.epdc.constants.MenuCodeConstant;
import com.elink.esua.epdc.dto.MenuNoticeDTO;
import com.elink.esua.epdc.dto.SysDeptDTO;
@ -40,10 +41,12 @@ import com.elink.esua.epdc.dto.events.*;
import com.elink.esua.epdc.dto.events.form.EpdcEventSubmitFormDTO;
import com.elink.esua.epdc.dto.events.form.EpdcEventsReviewFormDTO;
import com.elink.esua.epdc.dto.events.result.EventAppDetailResultDTO;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.dto.issue.IssueDTO;
import com.elink.esua.epdc.dto.issue.form.IssuePendingResponseFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssuePendingResponseResultDTO;
import com.elink.esua.epdc.dto.issue.result.IssueStateStatisticsResultDTO;
import com.elink.esua.epdc.modules.async.IssueOverseeResultsTask;
import com.elink.esua.epdc.modules.async.NewsTask;
import com.elink.esua.epdc.modules.category.entity.CategoryEntity;
import com.elink.esua.epdc.modules.category.service.CategoryService;
@ -101,6 +104,9 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
@Autowired
private CategoryService categoryService;
@Autowired
private IssueOverseeResultsTask issueOverseeResultsTask;
@Override
public PageData<EpdcEventsDTO> listOfPendingReviewEvents(Map<String, Object> params) {
IPage<EpdcEventsDTO> page = getPage(params);
@ -150,6 +156,8 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
// 发送菜单消息-议题待回应
this.sendMenuNoticeOfEventRespond(entity.getGridId(), null);
//短信通知 所有有菜单权限的议题审核员
issueOverseeResultsTask.getSysGridLeaderPhone(dto.getGridId());
return entity;
}
@ -242,6 +250,11 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
newsTask.insertUserInformation(informationFormDTO);
// 发送菜单消息-议题待回应
this.sendMenuNoticeOfEventRespond(eventsEntity.getGridId(), null);
// 审核操作发送短信
List<String> list = new ArrayList<>();
list.add(eventsEntity.getMobile());
this.issueSmsNotification(dto, list);
return new Result();
}
@ -509,4 +522,24 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl<EpdcEventsDao, EpdcEv
return resultDto;
}
/**
* @Description: 议题待回应事件菜单 审核通过不通过短信通知 议题发起人
* @Param: [dto]
* @Param: [userMobiles] 手机号列表
* @return: void
* @Author: zy
* @Date: 2020-01-08
*/
private void issueSmsNotification(EpdcEventsReviewFormDTO dto, List<String> userMobiles){
// 审核操作发送短信
SmsNoticeFormDTO sms = new SmsNoticeFormDTO();
sms.setMobiles(userMobiles);
if (EventIssueItemState.EVENT_REVIEW_PASS == dto.getEventState()) { // 审核通过
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_RESIDENTS_ISSUE_PASSED);
}else {
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_RESIDENTS_ISSUE_NOT_PASS);
}
issueOverseeResultsTask.sendSmsNotice(sms);
}
}

20
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java

@ -7,6 +7,7 @@ import com.elink.esua.epdc.dto.DeptGridPlatformDTO;
import com.elink.esua.epdc.dto.SysDeptDTO;
import com.elink.esua.epdc.modules.feign.fallback.AdminFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@ -70,4 +71,23 @@ public interface AdminFeignClient {
@GetMapping("sys/deptgridplatform/selectByDeptId/{deptId}")
Result<DeptGridPlatformDTO> getDeptGridPlatformDTO(@PathVariable("deptId") String deptId);
/**
* @Description: 根据部门id查询部门下的所有用户手机号
* @Param: [deptId]
* @return: com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<java.lang.String>>
* @Author: zy
* @Date: 2020-01-09
*/
@GetMapping(value ="sys/user/getUserPhoneByListDeptId", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<List<String>> getUserPhoneByListDeptId(List<Long> deptId);
/**
* @Description: 根据议题网格ID查询拥有这个网格数据权限且是网格长的角色再根据角色查出所有用户手机号
* @Param: [deptId]
* @return: com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<java.lang.String>>
* @Author: zy
* @Date: 2020-01-09
*/
@GetMapping("sys/user/getSysGridLeaderPhone/{deptId}")
Result<List<String>> getSysGridLeaderPhone(@PathVariable("deptId") Long deptId);
}

31
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/MessageFeignClient.java

@ -0,0 +1,31 @@
package com.elink.esua.epdc.modules.feign;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.modules.feign.fallback.MessageFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 消息通知模块
*
* @author zy
* @Date2020/01/08 10:31
*/
@FeignClient(name = ServiceConstant.EPDC_MESSAGE_SERVER, fallback = MessageFeignClientFallback.class)
public interface MessageFeignClient {
/**
* 议题待回应事件 审核结果短信通知 议题发起人
*
* @param smsNoticeFormDTO
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zy
* @Date2020/01/08 10:31
*/
@PostMapping(value = "message/epdc-app/smstemplate/sendSmsNotice", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
Result sendSmsNotice(@RequestBody SmsNoticeFormDTO smsNoticeFormDTO);
}

10
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java

@ -44,4 +44,14 @@ public class AdminFeignClientFallback implements AdminFeignClient {
public Result<DeptGridPlatformDTO> getDeptGridPlatformDTO(String deptId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "selectByDeptId", deptId);
}
@Override
public Result<List<String>> getUserPhoneByListDeptId(List<Long> deptId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getUserPhoneByListDeptId", deptId);
}
@Override
public Result<List<String>> getSysGridLeaderPhone(@PathVariable("deptId") Long deptId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getSysGridLeaderPhone", deptId);
}
}

21
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/MessageFeignClientFallback.java

@ -0,0 +1,21 @@
package com.elink.esua.epdc.modules.feign.fallback;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.ModuleUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.modules.feign.MessageFeignClient;
import org.springframework.stereotype.Component;
/**
* @author zy
* @Date2020/01/08 10:31
*/
@Component
public class MessageFeignClientFallback implements MessageFeignClient {
@Override
public Result sendSmsNotice(SmsNoticeFormDTO smsNoticeFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_MESSAGE_SERVER, "sendSmsNotice", smsNoticeFormDTO);
}
}

24
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java

@ -32,15 +32,18 @@ import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.EventIssueItemState;
import com.elink.esua.epdc.constant.EventsNoticeConstant;
import com.elink.esua.epdc.constant.ImageConstant;
import com.elink.esua.epdc.constant.SysSmsTemplateConstant;
import com.elink.esua.epdc.constants.MenuCodeConstant;
import com.elink.esua.epdc.dto.MenuNoticeDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO;
import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO;
import com.elink.esua.epdc.dto.events.result.EventAppDetailResultDTO;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.dto.issue.*;
import com.elink.esua.epdc.dto.issue.form.*;
import com.elink.esua.epdc.dto.issue.result.*;
import com.elink.esua.epdc.dto.item.result.ItemHandleProgressResultDTO;
import com.elink.esua.epdc.modules.async.IssueOverseeResultsTask;
import com.elink.esua.epdc.modules.async.NewsTask;
import com.elink.esua.epdc.modules.comment.service.EventCommentService;
import com.elink.esua.epdc.modules.events.service.EpdcEventsService;
@ -100,6 +103,8 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
@Autowired
private ImgService imgService;
@Autowired
private IssueOverseeResultsTask issueOverseeResultsTask;
@Override
public PageData<IssueWaitHandleOrClosedDTO> listOfIssues(Map<String, Object> params) {
@ -250,6 +255,8 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
}
// 发送菜单消息-待处理项目
itemService.sendItemHandleMenuNotice(itemEntity.getGridId(), null);
//议题转项目-短信通知
this.issueSmsNotification(entity.getMobile());
}
}
// 发送消息
@ -471,4 +478,21 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
public List<IssueProgressResultDTO> listIssueProgress(String issueId) {
return baseDao.selectListIssueProgress(issueId);
}
/**
* @Description: 议题待处理事件 议题转项目结果短信通知 议题发起人
* @Param: [userId]
* @return: void
* @Author: zy
* @Date: 2020-01-08
*/
private void issueSmsNotification(String userMobiles){
List<String> list = new ArrayList<>();
list.add(userMobiles);
// 议题转项目 操作发送短信
SmsNoticeFormDTO sms = new SmsNoticeFormDTO();
sms.setMobiles(list);
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_RESIDENTS_ISSUE_CHANGE_ITEM);
issueOverseeResultsTask.sendSmsNotice(sms);
}
}

9
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java

@ -206,4 +206,13 @@ public interface ItemDao extends BaseDao<ItemEntity> {
*/
void deleteBatchItemHandleIds(@Param("ids") List<String> ids);
/**
* @Description: 根据项目id查询当前登录人所在部门以外的该项目关联的所有部门id
* @Param: [itemId] 项目id
* @Param: [deptId] 部门id
* @return: java.util.List<java.lang.Long>
* @Author: zy
* @Date: 2020-01-09
*/
List<Long> queryDeptIdList(String itemId, Long deptId);
}

70
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java

@ -34,10 +34,7 @@ import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.DateUtils;
import com.elink.esua.epdc.commons.tools.utils.GPSUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.EventIssueItemState;
import com.elink.esua.epdc.constant.EventsNoticeConstant;
import com.elink.esua.epdc.constant.ImageConstant;
import com.elink.esua.epdc.constant.ItemInformationConstant;
import com.elink.esua.epdc.constant.*;
import com.elink.esua.epdc.constants.MenuCodeConstant;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.DeptGridPlatformDTO;
@ -45,6 +42,7 @@ import com.elink.esua.epdc.dto.MenuNoticeDTO;
import com.elink.esua.epdc.dto.SysDeptDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO;
import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssueProgressResultDTO;
import com.elink.esua.epdc.dto.item.*;
import com.elink.esua.epdc.dto.item.form.*;
@ -61,6 +59,7 @@ import com.elink.esua.epdc.gird.shibei.dto.form.ImageFile;
import com.elink.esua.epdc.gird.shibei.dto.form.ReportFile;
import com.elink.esua.epdc.gird.shibei.dto.form.SendInputInfoFormDto;
import com.elink.esua.epdc.gird.shibei.util.XstreamUtil;
import com.elink.esua.epdc.modules.async.IssueOverseeResultsTask;
import com.elink.esua.epdc.modules.async.NewsTask;
import com.elink.esua.epdc.modules.events.dao.ImgDao;
import com.elink.esua.epdc.modules.events.entity.ImgEntity;
@ -148,6 +147,9 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
@Autowired
private GridPlatformHandleLogDao gridPlatformHandleLogDao;
@Autowired
private IssueOverseeResultsTask issueOverseeResultsTask;
@Override
public PageData<ItemDTO> page(Map<String, Object> params) {
IPage<ItemEntity> page = baseDao.selectPage(
@ -751,6 +753,15 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
if(dto.getHandleImages()!= null && dto.getHandleImages().size()>0){
imgService.saveImages(dto.getHandleImages(),handleProcessEntity.getId(), ImageConstant.TYPE_IMAGE_ITEM_HANDLE);
}
//居民端项目关闭、结案-短信通知
if (ItemHandleCategoryEnum.HANDLE_CLOSE.getValue() == dto.getHandleCategory() ||
ItemHandleCategoryEnum.HANDLE_CLOSING_CASE.getValue() == dto.getHandleCategory()){
List<String> list = new ArrayList<>();
list.add(entity.getMobile());
this.projectSmsNotification(dto,list);
}
//工作端 根据不同的处理方式,进行短信通知
this.workProjectHandle(dto);
} catch (Exception e) {
e.printStackTrace();
}
@ -1174,6 +1185,57 @@ public class ItemServiceImpl extends BaseServiceImpl<ItemDao, ItemEntity> implem
return new Result();
}
/**
* @Description: 工作端 根据项目的不同处理方式进行短信发放
* @Param: [dto]
* @return: void
* @Author: zy
* @Date: 2020-01-09
*/
private void workProjectHandle(ItemHandleSubmitFormDTO dto){
UserDetail user = SecurityUser.getUser(); //获取当前登录人信息
List<Long> deptId = new ArrayList<>();
if(ItemHandleCategoryEnum.HANDLE_CIRCULATION_ASSISTANCE.getValue() == dto.getHandleCategory()){
List<ItemCirculationDeptResultDTO> deptList = dto.getDeptResultDTOS();
for (int i =0; i < deptList.size(); i++) {
ItemCirculationDeptResultDTO indexDto = (ItemCirculationDeptResultDTO)deptList.get(i);
deptId.add(indexDto.getDeptId());
}
issueOverseeResultsTask.getUserPhoneByListDeptId(dto, deptId);//吹哨处理 向部门下的,所有人员发送短信
} else if(ItemHandleCategoryEnum.HANDLE_CLOSE.getValue() == dto.getHandleCategory() ||
ItemHandleCategoryEnum.HANDLE_CLOSING_CASE.getValue() == dto.getHandleCategory()){
deptId = baseDao.queryDeptIdList(dto.getId(),user.getDeptId());
if (deptId != null && deptId.size() > 0){
issueOverseeResultsTask.getUserPhoneByListDeptId(dto, deptId);//关闭/结案 当前项目的所有部门ID,下的人员发送短信,且不等于当前部门ID
}
} else if(ItemHandleCategoryEnum.HANDLE_I_HANDLE.getValue() == dto.getHandleCategory()){
if (!user.getTypeKey().equals(OrganizationTypeConstant.ORG_TYPE_GRID_PARTY)){//回应
deptId = baseDao.queryDeptIdList(dto.getId(),0L);
issueOverseeResultsTask.getUserPhoneByListDeptId(dto, deptId);//当前登录人不是网格, 做回应处理,查询当前项目下的所有部门id,做去重处理,向部门下的所有人员发送短信
}
}
}
/**
* @Description: 居民端项目处理发送短信
* @Param: [dto]
* @Param: userId 用户手机号
* @return: void
* @Author: zy
* @Date: 2020-01-08
*/
public void projectSmsNotification(ItemHandleSubmitFormDTO dto, List<String> userMobiles){
// 审核操作发送短信
SmsNoticeFormDTO sms = new SmsNoticeFormDTO();
sms.setMobiles(userMobiles);
if (ItemHandleCategoryEnum.HANDLE_CLOSE.getValue() == dto.getHandleCategory()) { // 关闭
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_RESIDENTS_ITEM_CLOSED);
}else if (ItemHandleCategoryEnum.HANDLE_CLOSING_CASE.getValue() == dto.getHandleCategory()){ //结案
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_RESIDENTS_ITEM_SETTLE);
}
issueOverseeResultsTask.sendSmsNotice(sms);
}
/**
* @param
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.util.List < com.elink.esua.epdc.dto.item.result.ItemHandleResultDTO>>

16
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml

@ -857,4 +857,20 @@
#{id}
</foreach>
</delete>
<select id="queryDeptIdList" resultType="Long">
SELECT
distinct d.DEPT_ID deptId
FROM
epdc_item_Dept d
WHERE
d.DEL_FLAG = 0
AND d.DEPT_ID != 0
<if test='deptId != 0 and deptId != null'>
AND d.DEPT_ID != #{deptId}
</if>
<if test='itemId != "" and itemId != null'>
AND d.ITEM_ID = #{itemId}
</if>
</select>
</mapper>

5
esua-epdc/epdc-module/epdc-group/epdc-group-client/pom.xml

@ -37,6 +37,11 @@
<artifactId>epdc-events-client</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.esua.epdc</groupId>
<artifactId>epdc-message-client</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>

33
esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/async/IssueOverseeResultsTask.java

@ -0,0 +1,33 @@
package com.elink.esua.epdc.modules.async;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.modules.feign.MessageFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
/**
*
* 议题审核结果 - 发送短信
*
* @Authorzy
* @Date2020/01/08 10:31
*/
@Component
public class IssueOverseeResultsTask {
@Autowired
private MessageFeignClient messageFeignClient;
/**
* 社群管理 建群通过不通过被邀请入群 短信通知
*
* @param smsNoticeFormDTO
* @return void
* @author zy
* @Date2020/01/08 10:31
*/
@Async
public void sendSmsNotice(SmsNoticeFormDTO smsNoticeFormDTO) {
messageFeignClient.sendSmsNotice(smsNoticeFormDTO);
}
}

31
esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/MessageFeignClient.java

@ -0,0 +1,31 @@
package com.elink.esua.epdc.modules.feign;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.modules.feign.fallback.MessageFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
* 消息通知模块
*
* @author zy
* @Date2020/01/08 10:31
*/
@FeignClient(name = ServiceConstant.EPDC_MESSAGE_SERVER, fallback = MessageFeignClientFallback.class)
public interface MessageFeignClient {
/**
* 社群管理 建群通过不通过被邀请入群 短信通知
*
* @param smsNoticeFormDTO
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author zy
* @Date2020/01/08 10:31
*/
@PostMapping(value = "message/epdc-app/smstemplate/sendSmsNotice", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
Result sendSmsNotice(@RequestBody SmsNoticeFormDTO smsNoticeFormDTO);
}

21
esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/feign/fallback/MessageFeignClientFallback.java

@ -0,0 +1,21 @@
package com.elink.esua.epdc.modules.feign.fallback;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.ModuleUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.modules.feign.MessageFeignClient;
import org.springframework.stereotype.Component;
/**
* @author zy
* @Date2020/01/08 10:31
*/
@Component
public class MessageFeignClientFallback implements MessageFeignClient {
@Override
public Result sendSmsNotice(SmsNoticeFormDTO smsNoticeFormDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_MESSAGE_SERVER, "sendSmsNotice", smsNoticeFormDTO);
}
}

9
esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/group/dao/GroupDao.java

@ -157,4 +157,13 @@ public interface GroupDao extends BaseDao<GroupEntity> {
* @Date 2019/12/19 13:08
**/
List<String> listPartyMemberGridId();
/**
* @Description: 根据社群id查询群主手机号
* @Param: [groupId]
* @return: java.lang.String
* @Author: zy
* @Date: 2020-01-08
*/
String queryGroupUserMOBILE(String groupId);
}

37
esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/group/service/impl/GroupServiceImpl.java

@ -26,16 +26,21 @@ import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.SysSmsTemplateConstant;
import com.elink.esua.epdc.dto.CompleteDeptDTO;
import com.elink.esua.epdc.dto.UserDTO;
import com.elink.esua.epdc.dto.constant.GroupConstant;
import com.elink.esua.epdc.dto.constant.GroupNoticeConstant;
import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO;
import com.elink.esua.epdc.dto.epdc.result.EpdcGridUserResultDTO;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.dto.group.*;
import com.elink.esua.epdc.dto.enums.GroupStateEnum;
import com.elink.esua.epdc.dto.enums.GroupUserStateEnum;
import com.elink.esua.epdc.dto.group.form.*;
import com.elink.esua.epdc.dto.group.result.*;
import com.elink.esua.epdc.enums.ItemHandleCategoryEnum;
import com.elink.esua.epdc.modules.async.IssueOverseeResultsTask;
import com.elink.esua.epdc.modules.async.NewsTask;
import com.elink.esua.epdc.modules.feign.UserFeignClient;
import com.elink.esua.epdc.modules.group.dao.GroupDao;
@ -76,6 +81,9 @@ public class GroupServiceImpl extends BaseServiceImpl<GroupDao, GroupEntity> imp
@Autowired
private UserFeignClient userFeignClient;
@Autowired
private IssueOverseeResultsTask issueOverseeResultsTask;
@Override
public PageData<GroupManagementDTO> page(Map<String, Object> params) {
IPage<GroupManagementDTO> page = getPage(params);
@ -183,6 +191,9 @@ public class GroupServiceImpl extends BaseServiceImpl<GroupDao, GroupEntity> imp
if (GroupStateEnum.GROUP_STATE_AUDIT_NOT_PASSED.getValue().equals(dto.getState())) {
sendNotice = true;
informationFormDTO.setTitle(GroupNoticeConstant.NOTICE_GROUP_NOT_PASSED);
// 社群审批不通过发送短信
this.groupManagementSmsNotification(dto,dto.getUserId());
}
// 社群审核通过
if (GroupStateEnum.GROUP_STATE_EXAMINATION_PASSED.getValue().equals(dto.getState())
@ -191,6 +202,9 @@ public class GroupServiceImpl extends BaseServiceImpl<GroupDao, GroupEntity> imp
informationFormDTO.setTitle(GroupNoticeConstant.NOTICE_GROUP_PASSED);
informationFormDTO.setBusinessType(GroupNoticeConstant.NOTICE_BUSINESS_TYPE_GROUP_PASSED);
informationFormDTO.setRelBusinessContent("快去加好友吧");
// 社群审批通过发送短信
this.groupManagementSmsNotification(dto,dto.getId());
}
// 解散
if (GroupStateEnum.GROUP_STATE_DISBANDED.getValue().equals(dto.getState())) {
@ -504,4 +518,27 @@ public class GroupServiceImpl extends BaseServiceImpl<GroupDao, GroupEntity> imp
}
return !StringUtils.isEmpty(formDto.getMobile());
}
/**
* @Description: 社群管理 建群通过不通过 短信通知
* @Param: [dto, userId]
* @return: void
* @Author: zy
* @Date: 2020-01-08
*/
private void groupManagementSmsNotification(GroupSettingStateDTO dto, String groupId){
//根据社区id,获取用户手机号
String mobile = baseDao.queryGroupUserMOBILE(groupId);
List<String> list = new ArrayList<>();
list.add(mobile);
// 审核操作发送短信
SmsNoticeFormDTO sms = new SmsNoticeFormDTO();
sms.setMobiles(list);
if (GroupStateEnum.GROUP_STATE_EXAMINATION_PASSED.getValue().equals(dto.getState())) { // 社群审核通过
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_RESIDENTS_GROUP_PASSED);
}else if (GroupStateEnum.GROUP_STATE_AUDIT_NOT_PASSED.getValue().equals(dto.getState())){ // 社群审核不通过
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_RESIDENTS_GROUP_NOT_PASS);
}
issueOverseeResultsTask.sendSmsNotice(sms);
}
}

25
esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/java/com.elink.esua.epdc/modules/group/service/impl/UserGroupServiceImpl.java

@ -25,17 +25,21 @@ import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.SysSmsTemplateConstant;
import com.elink.esua.epdc.dto.UserGridRelationDTO;
import com.elink.esua.epdc.dto.constant.GroupNoticeConstant;
import com.elink.esua.epdc.dto.enums.GroupStateEnum;
import com.elink.esua.epdc.dto.enums.GroupUserStateEnum;
import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcUserGroupInviteFormDTO;
import com.elink.esua.epdc.dto.epdc.result.EpdcUserGroupInviteResultDTO;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.dto.group.GroupDTO;
import com.elink.esua.epdc.dto.group.UserGroupDTO;
import com.elink.esua.epdc.dto.group.UserReviewDto;
import com.elink.esua.epdc.dto.group.form.*;
import com.elink.esua.epdc.dto.group.result.GroupUserListResultDTO;
import com.elink.esua.epdc.modules.async.IssueOverseeResultsTask;
import com.elink.esua.epdc.modules.async.NewsTask;
import com.elink.esua.epdc.modules.feign.UserFeignClient;
import com.elink.esua.epdc.modules.group.dao.UserGroupDao;
@ -70,6 +74,9 @@ public class UserGroupServiceImpl extends BaseServiceImpl<UserGroupDao, UserGrou
@Autowired
private NewsTask newsTask;
@Autowired
private IssueOverseeResultsTask issueOverseeResultsTask;
@Override
public PageData<UserGroupDTO> page(Map<String, Object> params) {
IPage<UserGroupDTO> page = getPage(params);
@ -156,6 +163,7 @@ public class UserGroupServiceImpl extends BaseServiceImpl<UserGroupDao, UserGrou
@Transactional(rollbackFor = Exception.class)
public Result saveGroupUsers(GroupAddUserFormDTO formDto) {
List<UserGroupEntity> userGroupEntities = new ArrayList<>(formDto.getMembers().size());
List<String> userMobiles = new ArrayList<>();
UserGroupEntity entity = null;
for (GroupUserFormDTO userDto:
formDto.getMembers()) {
@ -170,6 +178,7 @@ public class UserGroupServiceImpl extends BaseServiceImpl<UserGroupDao, UserGrou
entity.setState(GroupUserStateEnum.GROUP_USER_STATE_EXAMINATION_PASSED.getValue());
userGroupEntities.add(entity);
userMobiles.add(userDto.getMobile()); //汇聚本次被邀请入群, 人的手机号
}
if (insertBatch(userGroupEntities)) {
@ -189,6 +198,8 @@ public class UserGroupServiceImpl extends BaseServiceImpl<UserGroupDao, UserGrou
// 发送通知
newsTask.insertUserInformation(informationFormDTO);
}
//发送短信
this.invitePlusGroupSmsNotification(userMobiles);
return new Result();
}
@ -281,4 +292,18 @@ public class UserGroupServiceImpl extends BaseServiceImpl<UserGroupDao, UserGrou
return new Result();
}
/**
* @Description: 被邀请入群短信通知
* @Param: [userMobiles]
* @return: void
* @Author: zy
* @Date: 2020-01-08
*/
private void invitePlusGroupSmsNotification(List<String> userMobiles){
// 审核操作发送短信
SmsNoticeFormDTO sms = new SmsNoticeFormDTO();
sms.setMobiles(userMobiles);
sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_RESIDENTS_GROUP_INVITE_JOIN);
issueOverseeResultsTask.sendSmsNotice(sms);
}
}

9
esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/resources/mapper/group/GroupDao.xml

@ -275,4 +275,13 @@
where eg.DEL_FLAG='0'
and eg.GROUP_CATEGORY='0'
</select>
<!--根据社群id,查询群主手机号-->
<select id="queryGroupUserMOBILE" resultType="java.lang.String">
select MOBILE from
epdc_user_group
where GROUP_ID = #{groupId}
and LORD_FLAG = 1
and DEL_FLAG = 0
</select>
</mapper>

64
esua-epdc/epdc-module/epdc-message/epdc-message-client/src/main/java/com/elink/esua/epdc/constant/SysSmsTemplateConstant.java

@ -0,0 +1,64 @@
package com.elink.esua.epdc.constant;
/**
*
* 短信模板类型
*
* @Authorliuchuang
* @Date2020/1/7 11:27
*/
public interface SysSmsTemplateConstant {
/**
* 居民端-议题-审核通过
*/
String SMS_TEMPLATE_RESIDENTS_ISSUE_PASSED = "RESIDENTS_ISSUE_PASSED";
/**
* 居民端-议题-审核不通过
*/
String SMS_TEMPLATE_RESIDENTS_ISSUE_NOT_PASS = "RESIDENTS_ISSUE_NOT_PASS";
/**
* 居民端-议题-转成项目
*/
String SMS_TEMPLATE_RESIDENTS_ISSUE_CHANGE_ITEM = "RESIDENTS_ISSUE_CHANGE_ITEM";
/**
* 居民端-项目-结案
*/
String SMS_TEMPLATE_RESIDENTS_ITEM_SETTLE = "RESIDENTS_ITEM_SETTLE";
/**
* 居民端-项目-关闭
*/
String SMS_TEMPLATE_RESIDENTS_ITEM_CLOSED = "RESIDENTS_ITEM_CLOSED";
/**
* 居民端-邻里社群-社群审核通过
*/
String SMS_TEMPLATE_RESIDENTS_GROUP_PASSED = "RESIDENTS_GROUP_PASSED";
/**
* 居民端-邻里社群-社群审核不通过
*/
String SMS_TEMPLATE_RESIDENTS_GROUP_NOT_PASS = "RESIDENTS_GROUP_NOT_PASS";
/**
* 居民端-邻里社群-被邀请入群
*/
String SMS_TEMPLATE_RESIDENTS_GROUP_INVITE_JOIN = "RESIDENTS_GROUP_INVITE_JOIN";
/**
* 工作端-议题-待审核
*/
String SMS_TEMPLATE_WORK_ISSUE_WAIT_REVIEW = "WORK_ISSUE_WAIT_REVIEW";
/**
* 工作端-项目-被吹哨
*/
String SMS_TEMPLATE_WORK_ITEM_WHISTLE = "WORK_ITEM_WHISTLE";
/**
* 工作端-项目-吹哨反馈
*/
String SMS_TEMPLATE_WORK_ITEM_WHISTLE_FEEDBACK = "WORK_ITEM_WHISTLE_FEEDBACK";
/**
* 工作端-项目-关闭
*/
String SMS_TEMPLATE_WORK_ITEM_CLOSED = "WORK_ITEM_CLOSED";
/**
* 工作端-项目-结案
*/
String SMS_TEMPLATE_WORK_ITEM_SETTLE = "WORK_ITEM_SETTLE";
}

117
esua-epdc/epdc-module/epdc-message/epdc-message-client/src/main/java/com/elink/esua/epdc/dto/SmsLogDTO.java

@ -0,0 +1,117 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Data
public class SmsLogDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 短信模板表ID
*/
private String smsTemplateId;
/**
* 手机号
*/
private String mobile;
/**
* 参数1
*/
private String params1;
/**
* 参数2
*/
private String params2;
/**
* 参数3
*/
private String params3;
/**
* 参数4
*/
private String params4;
/**
* 发送状态 0失败 1成功
*/
private Integer status;
/**
* 平台类型1阿里云2腾讯云
*/
private Integer platform;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
/**
* 删除标记
*/
private String delFlag;
/**
* 模板类型名称
*/
private String templateTypeName;
}

102
esua-epdc/epdc-module/epdc-message/epdc-message-client/src/main/java/com/elink/esua/epdc/dto/SmsTemplateDTO.java

@ -0,0 +1,102 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Data
public class SmsTemplateDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 模板类型
*/
private String templateType;
/**
* 模板类型名称
*/
private String templateTypeName;
/**
* 短信签名
*/
private String signName;
/**
* 短信模板
*/
private String template;
/**
* 备注
*/
private String remark;
/**
* 启用标识0-1-
*/
private String enableFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
/**
* 删除标记
*/
private String delFlag;
}

30
esua-epdc/epdc-module/epdc-message/epdc-message-client/src/main/java/com/elink/esua/epdc/dto/form/SmsNoticeFormDTO.java

@ -0,0 +1,30 @@
package com.elink.esua.epdc.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
*
* 短信通知Form DTO
*
* @Authorliuchuang
* @Date2020/1/7 15:00
*/
@Data
public class SmsNoticeFormDTO implements Serializable {
private static final long serialVersionUID = 8320411108085513393L;
/**
* 短信模板类型
*/
@NotBlank(message = "短信模板类型不能为空")
private String smsTemplateType;
/**
* 手机号
*/
private List<String> mobiles;
}

42
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/controller/AppSmsTemplateController.java

@ -0,0 +1,42 @@
package com.elink.esua.epdc.controller;
import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.service.SmsTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
* 短信-消息通知服务
*
* @Authorliuchuang
* @Date2020/1/7 14:59
*/
@RestController
@RequestMapping(Constant.EPDC_APP + "smstemplate")
public class AppSmsTemplateController {
@Autowired
private SmsTemplateService smsTemplateService;
/**
*
* 发送短信通知
*
* @params [formDto]
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author liuchuang
* @since 2020/1/7 15:09
*/
@PostMapping("sendSmsNotice")
public Result sendSmsNotice(@RequestBody SmsNoticeFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
return smsTemplateService.sendSmsNotice(formDto);
}
}

95
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/controller/SmsLogController.java

@ -0,0 +1,95 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.controller;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ExcelUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.AssertUtils;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.dto.SmsLogDTO;
import com.elink.esua.epdc.excel.SmsLogExcel;
import com.elink.esua.epdc.service.SmsLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@RestController
@RequestMapping("smslog")
public class SmsLogController {
@Autowired
private SmsLogService smsLogService;
@GetMapping("page")
public Result<PageData<SmsLogDTO>> page(@RequestParam Map<String, Object> params){
//PageData<SmsLogDTO> page = smsLogService.page(params);
PageData<SmsLogDTO> page = smsLogService.getSmsLogPage(params);
return new Result<PageData<SmsLogDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<SmsLogDTO> get(@PathVariable("id") String id){
SmsLogDTO data = smsLogService.get(id);
return new Result<SmsLogDTO>().ok(data);
}
@PostMapping
public Result save(@RequestBody SmsLogDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
smsLogService.save(dto);
return new Result();
}
@PutMapping
public Result update(@RequestBody SmsLogDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
smsLogService.update(dto);
return new Result();
}
@DeleteMapping
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
smsLogService.delete(ids);
return new Result();
}
@GetMapping("export")
public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<SmsLogDTO> list = smsLogService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, SmsLogExcel.class);
}
}

95
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/controller/SmsTemplateController.java

@ -0,0 +1,95 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.controller;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ExcelUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.AssertUtils;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
import com.elink.esua.epdc.dto.SmsTemplateDTO;
import com.elink.esua.epdc.excel.SmsTemplateExcel;
import com.elink.esua.epdc.service.SmsTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@RestController
@RequestMapping("smstemplate")
public class SmsTemplateController {
@Autowired
private SmsTemplateService smsTemplateService;
@GetMapping("page")
public Result<PageData<SmsTemplateDTO>> page(@RequestParam Map<String, Object> params){
//PageData<SmsTemplateDTO> page = smsTemplateService.page(params);
PageData<SmsTemplateDTO> page = smsTemplateService.getSmsTemplatePage(params);
return new Result<PageData<SmsTemplateDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<SmsTemplateDTO> get(@PathVariable("id") String id){
SmsTemplateDTO data = smsTemplateService.get(id);
return new Result<SmsTemplateDTO>().ok(data);
}
@PostMapping
public Result save(@RequestBody SmsTemplateDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
smsTemplateService.save(dto);
return new Result();
}
@PutMapping
public Result update(@RequestBody SmsTemplateDTO dto){
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
smsTemplateService.update(dto);
return new Result();
}
@DeleteMapping
public Result delete(@RequestBody String[] ids){
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
smsTemplateService.delete(ids);
return new Result();
}
@GetMapping("export")
public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<SmsTemplateDTO> list = smsTemplateService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, SmsTemplateExcel.class);
}
}

42
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/dao/SmsLogDao.java

@ -0,0 +1,42 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.dao;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.dto.SmsLogDTO;
import com.elink.esua.epdc.entity.SmsLogEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Mapper
public interface SmsLogDao extends BaseDao<SmsLogEntity> {
/**
* 条件查询
* @param params
* @return
*/
List<SmsLogDTO> getPage(Map<String, Object> params);
}

55
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/dao/SmsTemplateDao.java

@ -0,0 +1,55 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.dao;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.dto.SmsTemplateDTO;
import com.elink.esua.epdc.entity.SmsTemplateEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Mapper
public interface SmsTemplateDao extends BaseDao<SmsTemplateEntity> {
/**
*
* 根据模板类型获取模板信息
*
* @params [smsTemplateType]
* @return com.elink.esua.epdc.dto.SmsTemplateDTO
* @author liuchuang
* @since 2020/1/7 16:52
*/
SmsTemplateDTO selectOneSmsTemplateInfoByType(String smsTemplateType);
/**
* 条件查询
* @param params
* @return
*/
List<SmsTemplateDTO> getPage(Map<String, Object> params);
}

85
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/entity/SmsLogEntity.java

@ -0,0 +1,85 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("epdc_sms_log")
public class SmsLogEntity extends BaseEpdcEntity {
private static final long serialVersionUID = 1L;
/**
* 短信模板表ID
*/
private String smsTemplateId;
/**
* 手机号
*/
private String mobile;
/**
* 参数1
*/
private String params1;
/**
* 参数2
*/
private String params2;
/**
* 参数3
*/
private String params3;
/**
* 参数4
*/
private String params4;
/**
* 发送状态 0失败 1成功
*/
private Integer status;
/**
* 平台类型1阿里云2腾讯云
*/
private Integer platform;
/**
* 模板类型名称
*/
@TableField(exist = false)
private String templateTypeName;
}

68
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/entity/SmsTemplateEntity.java

@ -0,0 +1,68 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("epdc_sms_template")
public class SmsTemplateEntity extends BaseEpdcEntity {
private static final long serialVersionUID = 1L;
/**
* 模板类型
*/
private String templateType;
/**
* 模板类型名称
*/
private String templateTypeName;
/**
* 短信签名
*/
private String signName;
/**
* 短信模板
*/
private String template;
/**
* 备注
*/
private String remark;
/**
* 启用标识0-1-
*/
private String enableFlag;
}

77
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/excel/SmsLogExcel.java

@ -0,0 +1,77 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.util.Date;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Data
public class SmsLogExcel {
@Excel(name = "主键")
private String id;
@Excel(name = "短信模板表ID")
private String smsTemplateId;
@Excel(name = "手机号")
private String mobile;
@Excel(name = "参数1")
private String params1;
@Excel(name = "参数2")
private String params2;
@Excel(name = "参数3")
private String params3;
@Excel(name = "参数4")
private String params4;
@Excel(name = "发送状态 0:失败 1:成功")
private String status;
@Excel(name = "乐观锁")
private Integer revision;
@Excel(name = "创建人")
private String createdBy;
@Excel(name = "创建时间")
private Date createdTime;
@Excel(name = "更新人")
private String updatedBy;
@Excel(name = "更新时间")
private Date updatedTime;
@Excel(name = "删除标记")
private String delFlag;
}

68
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/excel/SmsTemplateExcel.java

@ -0,0 +1,68 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.excel;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.util.Date;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Data
public class SmsTemplateExcel {
@Excel(name = "主键")
private String id;
@Excel(name = "参数编码")
private String paramCode;
@Excel(name = "参数名称")
private String paramName;
@Excel(name = "参数值")
private String paramValue;
@Excel(name = "备注")
private String remark;
@Excel(name = "乐观锁")
private Integer revision;
@Excel(name = "创建人")
private String createdBy;
@Excel(name = "创建时间")
private Date createdTime;
@Excel(name = "更新人")
private String updatedBy;
@Excel(name = "更新时间")
private Date updatedTime;
@Excel(name = "删除标记")
private String delFlag;
}

47
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/redis/SmsLogRedis.java

@ -0,0 +1,47 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.redis;
import com.elink.esua.epdc.commons.tools.redis.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Component
public class SmsLogRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
}
public void set(){
}
public String get(String id){
return null;
}
}

47
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/redis/SmsTemplateRedis.java

@ -0,0 +1,47 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.redis;
import com.elink.esua.epdc.commons.tools.redis.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Component
public class SmsTemplateRedis {
@Autowired
private RedisUtils redisUtils;
public void delete(Object[] ids) {
}
public void set(){
}
public String get(String id){
return null;
}
}

102
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/service/SmsLogService.java

@ -0,0 +1,102 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.service;
import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.dto.SmsLogDTO;
import com.elink.esua.epdc.entity.SmsLogEntity;
import java.util.List;
import java.util.Map;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
public interface SmsLogService extends BaseService<SmsLogEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<SmsLogDTO>
* @author generator
* @date 2020-01-07
*/
PageData<SmsLogDTO> page(Map<String, Object> params);
/**
* 分页条件查询
* @param params
* @return
*/
PageData<SmsLogDTO> getSmsLogPage(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<SmsLogDTO>
* @author generator
* @date 2020-01-07
*/
List<SmsLogDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return SmsLogDTO
* @author generator
* @date 2020-01-07
*/
SmsLogDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2020-01-07
*/
void save(SmsLogDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2020-01-07
*/
void update(SmsLogDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2020-01-07
*/
void delete(String[] ids);
}

126
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/service/SmsTemplateService.java

@ -0,0 +1,126 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.service;
import com.elink.esua.epdc.commons.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.SmsTemplateDTO;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.entity.SmsTemplateEntity;
import java.util.List;
import java.util.Map;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
public interface SmsTemplateService extends BaseService<SmsTemplateEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<SmsTemplateDTO>
* @author generator
* @date 2020-01-07
*/
PageData<SmsTemplateDTO> page(Map<String, Object> params);
/**
* 分页条件查询
* @param params
* @return
*/
PageData<SmsTemplateDTO> getSmsTemplatePage(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<SmsTemplateDTO>
* @author generator
* @date 2020-01-07
*/
List<SmsTemplateDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return SmsTemplateDTO
* @author generator
* @date 2020-01-07
*/
SmsTemplateDTO get(String id);
/**
* 默认保存
*
* @param dto
* @return void
* @author generator
* @date 2020-01-07
*/
void save(SmsTemplateDTO dto);
/**
* 默认更新
*
* @param dto
* @return void
* @author generator
* @date 2020-01-07
*/
void update(SmsTemplateDTO dto);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2020-01-07
*/
void delete(String[] ids);
/**
*
* 发送短信通知
*
* @params [formDto]
* @return com.elink.esua.epdc.commons.tools.utils.Result
* @author liuchuang
* @since 2020/1/7 15:11
*/
Result sendSmsNotice(SmsNoticeFormDTO formDto);
/**
*
* 根据模板类型获取模板信息
*
* @params [smsTemplateType]
* @return com.elink.esua.epdc.dto.SmsTemplateDTO
* @author liuchuang
* @since 2020/1/7 16:50
*/
SmsTemplateDTO getSmsTemplateInfoByType(String smsTemplateType);
}

116
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/service/impl/SmsLogServiceImpl.java

@ -0,0 +1,116 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.dao.SmsLogDao;
import com.elink.esua.epdc.dto.SmsLogDTO;
import com.elink.esua.epdc.entity.SmsLogEntity;
import com.elink.esua.epdc.redis.SmsLogRedis;
import com.elink.esua.epdc.service.SmsLogService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Service
public class SmsLogServiceImpl extends BaseServiceImpl<SmsLogDao, SmsLogEntity> implements SmsLogService {
@Autowired
private SmsLogRedis smsLogRedis;
@Override
public PageData<SmsLogDTO> page(Map<String, Object> params) {
IPage<SmsLogEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, SmsLogDTO.class);
}
/**
* 条件查询
* @param params
* @return
*/
@Override
public PageData<SmsLogDTO> getSmsLogPage(Map<String, Object> params) {
IPage<SmsLogDTO> page = getPage(params);
List<SmsLogDTO> list = baseDao.getPage(params);
return new PageData<>(list, page.getTotal());
}
@Override
public List<SmsLogDTO> list(Map<String, Object> params) {
List<SmsLogEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, SmsLogDTO.class);
}
private QueryWrapper<SmsLogEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<SmsLogEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public SmsLogDTO get(String id) {
SmsLogEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, SmsLogDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(SmsLogDTO dto) {
SmsLogEntity entity = ConvertUtils.sourceToTarget(dto, SmsLogEntity.class);
insert(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(SmsLogDTO dto) {
SmsLogEntity entity = ConvertUtils.sourceToTarget(dto, SmsLogEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}

245
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/service/impl/SmsTemplateServiceImpl.java

@ -0,0 +1,245 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dao.SmsTemplateDao;
import com.elink.esua.epdc.dto.SmsTemplateDTO;
import com.elink.esua.epdc.dto.SysSmsDTO;
import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO;
import com.elink.esua.epdc.entity.SmsLogEntity;
import com.elink.esua.epdc.entity.SmsTemplateEntity;
import com.elink.esua.epdc.exception.ModuleErrorCode;
import com.elink.esua.epdc.service.SmsLogService;
import com.elink.esua.epdc.service.SmsTemplateService;
import com.elink.esua.epdc.sms.AbstractSmsService;
import com.elink.esua.epdc.sms.SmsFactory;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
*
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2020-01-07
*/
@Service
public class SmsTemplateServiceImpl extends BaseServiceImpl<SmsTemplateDao, SmsTemplateEntity> implements SmsTemplateService {
@Autowired
private SmsLogService smsLogService;
@Override
public PageData<SmsTemplateDTO> page(Map<String, Object> params) {
IPage<SmsTemplateEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, SmsTemplateDTO.class);
}
/**
* 条件查询
* @param params
* @return
*/
@Override
public PageData<SmsTemplateDTO> getSmsTemplatePage(Map<String, Object> params) {
IPage<SmsTemplateDTO> page = getPage(params);
List<SmsTemplateDTO> list = baseDao.getPage(params);
return new PageData<>(list, page.getTotal());
}
@Override
public List<SmsTemplateDTO> list(Map<String, Object> params) {
List<SmsTemplateEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, SmsTemplateDTO.class);
}
private QueryWrapper<SmsTemplateEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<SmsTemplateEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public SmsTemplateDTO get(String id) {
SmsTemplateEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, SmsTemplateDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(SmsTemplateDTO dto) {
String templateType = dto.getTemplateType();
if (StringUtils.isNotBlank(templateType)) {
if (getTemplateType(dto) > 0) {
throw new RenException("您输入的模板类型已存在");
}
}
SmsTemplateEntity entity = ConvertUtils.sourceToTarget(dto, SmsTemplateEntity.class);
insert(entity);
}
/**
* 统计模板类型数量
* @param dto
* @return
*/
public Integer getTemplateType(SmsTemplateDTO dto) {
QueryWrapper<SmsTemplateEntity> wrapper = new QueryWrapper<>();
wrapper.eq("TEMPLATE_TYPE", dto.getTemplateType());
String id = dto.getId();
wrapper.ne(id != null, "id", dto.getId());
wrapper.eq("del_flag", "0");
return baseDao.selectCount(wrapper);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(SmsTemplateDTO dto) {
String templateType = dto.getTemplateType();
if (StringUtils.isNotBlank(templateType)) {
if (getTemplateType(dto) > 0) {
throw new RenException("您输入的模板类型已存在");
}
}
SmsTemplateEntity entity = ConvertUtils.sourceToTarget(dto, SmsTemplateEntity.class);
updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String[] ids) {
// 逻辑删除(@TableLogic 注解)
baseDao.deleteBatchIds(Arrays.asList(ids));
}
@Override
public SmsTemplateDTO getSmsTemplateInfoByType(String smsTemplateType) {
return baseDao.selectOneSmsTemplateInfoByType(smsTemplateType);
}
@Override
public Result sendSmsNotice(SmsNoticeFormDTO formDto) {
if (null == formDto.getMobiles() || formDto.getMobiles().size() <= 0) {
return new Result().error("手机号码不能为空");
}
// 获取短信模板信息
SmsTemplateDTO templateDto = this.getSmsTemplateInfoByType(formDto.getSmsTemplateType());
if (null == templateDto) {
return new Result().error("未查询到模板信息");
}
// 手机号处理
List<String> mobiles = this.mobileHandle(formDto.getMobiles());
// 发送短信通知
this.sendNotice(mobiles, templateDto);
return new Result();
}
/**
*
* 手机号处理
*
* @params [mobiles]
* @return java.util.List<java.lang.String>
* @author liuchuang
* @since 2020/1/7 15:44
*/
private List<String> mobileHandle(List<String> mobiles) {
List<String> returnList = new ArrayList<>();
int mobilesSize = mobiles.size();
if (mobilesSize > 1000) {
for (int i = 0; i < (mobilesSize / 1000 + 1); i++) {
List<String> temp;
if (mobiles.size() > 1000) {
temp = mobiles.subList(0, 1000);
} else if (mobiles.size() > 0) {
temp = mobiles.subList(0, mobiles.size());
} else {
break;
}
String tempStr = StringUtils.join(temp, ",");
returnList.add(tempStr);
mobiles.removeAll(temp);
}
} else {
String mobileStr = StringUtils.join(mobiles, ",");
returnList.add(mobileStr);
}
return returnList;
}
/**
*
* 发送短信通知
*
* @params [mobile, signName, template]
* @return void
* @author liuchuang
* @since 2020/1/7 17:04
*/
private void sendNotice(List<String> mobiles, SmsTemplateDTO templateDto) {
//短信服务
AbstractSmsService service = SmsFactory.build();
if (service == null) {
throw new RenException(ModuleErrorCode.SMS_CONFIG);
}
List<SmsLogEntity> smsLogEntities = new ArrayList<>(mobiles.size());
for (String mobile:
mobiles) {
//发送短信
SysSmsDTO sysSmsDto = service.sendSmsNotice(mobile, null, templateDto.getSignName(), templateDto.getTemplate());
SmsLogEntity entity = new SmsLogEntity();
entity.setSmsTemplateId(templateDto.getId());
entity.setMobile(mobile);
entity.setStatus(sysSmsDto.getStatus());
entity.setPlatform(sysSmsDto.getPlatform());
smsLogEntities.add(entity);
}
// 保存短信记录
smsLogService.insertBatch(smsLogEntities);
}
}

12
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/sms/AbstractSmsService.java

@ -8,6 +8,8 @@
package com.elink.esua.epdc.sms;
import com.elink.esua.epdc.dto.SysSmsDTO;
import java.util.LinkedHashMap;
/**
@ -37,4 +39,14 @@ public abstract class AbstractSmsService {
* @param template 短信模板
*/
public abstract void sendSms(String mobile, LinkedHashMap<String, String> params, String signName, String template);
/**
*
* 发送短信通知
* @param mobile 手机号
* @param params 参数
* @param signName 短信签名
* @param template 短信模板
*/
public abstract SysSmsDTO sendSmsNotice(String mobile, LinkedHashMap<String, String> params, String signName, String template);
}

42
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/sms/AliyunSmsService.java

@ -19,14 +19,12 @@ import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.dto.SysSmsDTO;
import com.elink.esua.epdc.exception.ModuleErrorCode;
import com.elink.esua.epdc.service.SysSmsService;
import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.utils.SpringContextUtils;
import com.elink.esua.epdc.enums.PlatformEnum;
import com.elink.esua.epdc.exception.ModuleErrorCode;
import com.elink.esua.epdc.service.SysSmsService;
import java.util.LinkedHashMap;
@ -111,4 +109,42 @@ public class AliyunSmsService extends AbstractSmsService {
throw new RenException(ModuleErrorCode.SEND_SMS_ERROR, response.getMessage());
}
}
@Override
public SysSmsDTO sendSmsNotice(String mobile, LinkedHashMap<String, String> params, String signName, String template) {
System.setProperty("sun.net.client.defaultConnectTimeout", "30000");
System.setProperty("sun.net.client.defaultReadTimeout", "30000");
//组装请求对象
SendSmsRequest request = new SendSmsRequest();
request.setMethod(MethodType.POST);
//待发送手机号,支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
//发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如"0085200000000"
request.setPhoneNumbers(mobile);
//短信签名-可在短信控制台中找到
request.setSignName(signName);
//短信模板-可在短信控制台中找到
request.setTemplateCode(template);
//参数
if(MapUtil.isNotEmpty(params)){
request.setTemplateParam(JSON.toJSONString(params));
}
SendSmsResponse response;
try {
IAcsClient acsClient = new DefaultAcsClient(profile);
response = acsClient.getAcsResponse(request);
} catch (ClientException e) {
throw new RenException(ModuleErrorCode.SEND_SMS_ERROR, e, "");
}
SysSmsDTO sysSmsDto = new SysSmsDTO();
sysSmsDto.setPlatform(PlatformEnum.ALIYUN.value());
sysSmsDto.setStatus(Constant.SUCCESS);
if(!Constant.OK.equalsIgnoreCase(response.getCode())){
sysSmsDto.setStatus(Constant.FAIL);
}
return sysSmsDto;
}
}

32
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/java/com/elink/esua/epdc/sms/QcloudSmsService.java

@ -10,16 +10,14 @@ package com.elink.esua.epdc.sms;
import cn.hutool.core.map.MapUtil;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.dto.SysSmsDTO;
import com.elink.esua.epdc.exception.ModuleErrorCode;
import com.elink.esua.epdc.service.SysSmsService;
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.utils.SpringContextUtils;
import com.elink.esua.epdc.enums.PlatformEnum;
import com.elink.esua.epdc.exception.ModuleErrorCode;
import com.elink.esua.epdc.service.SysSmsService;
import java.util.ArrayList;
import java.util.LinkedHashMap;
@ -70,4 +68,32 @@ public class QcloudSmsService extends AbstractSmsService {
throw new RenException(ModuleErrorCode.SEND_SMS_ERROR, result.errMsg);
}
}
@Override
public SysSmsDTO sendSmsNotice(String mobile, LinkedHashMap<String, String> params, String signName, String template) {
SmsSingleSender sender = new SmsSingleSender(config.getQcloudAppId(), config.getQcloudAppKey());
//短信参数
ArrayList<String> paramsList = new ArrayList<>();
if(MapUtil.isNotEmpty(params)){
for(String value : params.values()){
paramsList.add(value);
}
}
SmsSingleSenderResult result;
try {
result = sender.sendWithParam("86", mobile, Integer.parseInt(template), paramsList, signName, null, null);
} catch (Exception e) {
throw new RenException(ModuleErrorCode.SEND_SMS_ERROR, e, "");
}
SysSmsDTO sysSmsDto = new SysSmsDTO();
sysSmsDto.setPlatform(PlatformEnum.QCLOUD.value());
sysSmsDto.setStatus(Constant.SUCCESS);
if(result.result != 0){
sysSmsDto.setStatus(Constant.FAIL);
}
return sysSmsDto;
}
}

63
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/resources/mapper/SmsLogDao.xml

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.elink.esua.epdc.dao.SmsLogDao">
<resultMap type="com.elink.esua.epdc.entity.SmsLogEntity" id="smsLogMap">
<result property="id" column="ID"/>
<result property="smsTemplateId" column="SMS_TEMPLATE_ID"/>
<result property="mobile" column="MOBILE"/>
<result property="params1" column="PARAMS_1"/>
<result property="params2" column="PARAMS_2"/>
<result property="params3" column="PARAMS_3"/>
<result property="params4" column="PARAMS_4"/>
<result property="status" column="STATUS"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
<result property="delFlag" column="DEL_FLAG"/>
</resultMap>
<select id="getPage" resultType="com.elink.esua.epdc.dto.SmsLogDTO">
select
sl.ID,
sl.SMS_TEMPLATE_ID,
sl.MOBILE,
sl.PARAMS1,
sl.PARAMS2,
sl.PARAMS3,
sl.PARAMS4,
sl.STATUS,
sl.PLATFORM,
sl.REVISION,
sl.CREATED_BY,
sl.CREATED_TIME,
sl.UPDATED_BY,
sl.UPDATED_TIME,
sl.DEL_FLAG,
st.TEMPLATE_TYPE_NAME
from epdc_sms_log sl
left join epdc_sms_template st on sl.SMS_TEMPLATE_ID = st.ID
where sl.DEL_FLAG = '0' and st.DEL_FLAG = '0'
<if test="id != null and id != ''">
and sl.ID like '%' #{id} '%'
</if>
<if test="mobile != null and mobile != ''">
and sl.MOBILE like '%' #{mobile} '%'
</if>
<if test="status != null and status != ''">
and sl.STATUS = #{status}
</if>
<if test="platform != null and platform != ''">
and sl.PLATFORM = #{platform}
</if>
<if test="templateType != null and templateType != ''">
and st.TEMPLATE_TYPE = #{templateType}
</if>
order by sl.CREATED_TIME desc
</select>
</mapper>

37
esua-epdc/epdc-module/epdc-message/epdc-message-server/src/main/resources/mapper/SmsTemplateDao.xml

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.elink.esua.epdc.dao.SmsTemplateDao">
<select id="selectOneSmsTemplateInfoByType" resultType="com.elink.esua.epdc.dto.SmsTemplateDTO">
SELECT * FROM epdc_sms_template WHERE DEL_FLAG = '0' AND ENABLE_FLAG = '1' AND TEMPLATE_TYPE = #{smsTemplateType}
</select>
<select id="getPage" resultType="com.elink.esua.epdc.dto.SmsTemplateDTO">
select
sl.ID,
sl.TEMPLATE_TYPE,
sl.TEMPLATE_TYPE_NAME,
sl.SIGN_NAME,
sl.TEMPLATE,
sl.REMARK,
sl.ENABLE_FLAG,
sl.REVISION,
sl.CREATED_BY,
sl.CREATED_TIME,
sl.UPDATED_BY,
sl.UPDATED_TIME,
sl.DEL_FLAG
from epdc_sms_template sl
where sl.DEL_FLAG = '0'
<if test="id != null and id != ''">
and sl.ID like '%' #{id} '%'
</if>
<if test="templateTypeName != null and templateTypeName != ''">
and sl.TEMPLATE_TYPE_NAME like '%' #{templateTypeName} '%'
</if>
order by sl.CREATED_TIME desc
</select>
</mapper>
Loading…
Cancel
Save