diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/constant/HeartNoticeConstant.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/constant/HeartNoticeConstant.java new file mode 100644 index 000000000..77eb60973 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/constant/HeartNoticeConstant.java @@ -0,0 +1,38 @@ +package com.elink.esua.epdc.constant; + +/** + * @Description 爱心互助模块发送消息常量 + * @Author yinzuomei + * @Date 2020/2/7 20:14 + */ +public interface HeartNoticeConstant { + /** + * 活动报名审核未通过 + */ + String NOTICE_SIGN_UP_NOT_PASSED = "您报名的活动【审核未通过】"; + + /** + * 活动报名审核通过 + */ + String NOTICE_SIGN_UP_PASSED = "您报名的活动【审核通过】"; + + /** + * 活动取消 + */ + String NOTICE_CANCEL_ACT = "您报名的活动【已经取消】"; + + /** + * 消息所属业务类型:activity活动 + */ + String NOTICE__BUSINESS_TYPE_ACTIVITY = "activity"; + + /** + * 我的消息类型:0审核通知 + */ + String NOTICE_TYPE_AUDIT_NOTICE = "0"; + + /** + * 我的消息类型:1互动通知 + */ + String NOTICE_TYPE_INTERACTIVE_NOTICE = "1"; +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserRelationDao.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserRelationDao.java index b9cfa10c1..a6fb4cad3 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserRelationDao.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserRelationDao.java @@ -107,4 +107,13 @@ public interface ActUserRelationDao extends BaseDao { * @Date 2020/2/6 0:10 **/ ActUserRelationEntity selectOneByUserIdAndActId(@Param("userId") String userId, @Param("actId") String actId); + + /** + * @param actId + * @return java.util.List + * @Author yinzuomei + * @Description 根据活动id查询所有已经报名的用户 + * @Date 2020/2/7 20:53 + **/ + List selectAllSignUpUsers(String actId); } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActInfoServiceImpl.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActInfoServiceImpl.java index 310b91ec8..2fb72330b 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActInfoServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActInfoServiceImpl.java @@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.elink.esua.epdc.activity.ActBannerDTO; import com.elink.esua.epdc.activity.ActInfoDTO; +import com.elink.esua.epdc.activity.ActUserRelationDTO; import com.elink.esua.epdc.activity.form.ActInfoAppFormDTO; import com.elink.esua.epdc.activity.form.ActInfoFormDTO; import com.elink.esua.epdc.activity.result.ActInfoAppResultDTO; @@ -40,7 +41,9 @@ import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; import com.elink.esua.epdc.constant.ActStateConstant; import com.elink.esua.epdc.constant.ActUserRelationStatusConstant; import com.elink.esua.epdc.constant.ActUserStatusConstant; +import com.elink.esua.epdc.constant.HeartNoticeConstant; import com.elink.esua.epdc.dto.ScheduleJobDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO; import com.elink.esua.epdc.modules.activity.dao.ActInfoDao; import com.elink.esua.epdc.modules.activity.dao.ActUserClockLogDao; import com.elink.esua.epdc.modules.activity.dao.ActUserRelationDao; @@ -51,6 +54,7 @@ import com.elink.esua.epdc.modules.activity.entity.ActUserRelationEntity; import com.elink.esua.epdc.modules.activity.redis.ActInfoRedis; import com.elink.esua.epdc.modules.activity.service.ActBannerService; import com.elink.esua.epdc.modules.activity.service.ActInfoService; +import com.elink.esua.epdc.modules.async.NewsTask; import com.elink.esua.epdc.modules.feign.JobFeignClient; import com.elink.esua.epdc.modules.feign.UserInfoFeignClient; import org.apache.commons.lang3.StringUtils; @@ -82,6 +86,8 @@ public class ActInfoServiceImpl extends BaseServiceImpl page(Map params) { @@ -183,15 +189,45 @@ public class ActInfoServiceImpl extends BaseServiceImpl userList = actUserRelationDao.selectAllSignUpUsers(actInfoEntity.getId()); + if (null == userList || userList.size() == 0) { + return; + } + List epdcInformationFormDTOList = new ArrayList<>(); + for (ActUserRelationDTO user : userList) { + EpdcInformationFormDTO informationFormDTO = new EpdcInformationFormDTO(); + informationFormDTO.setTitle(HeartNoticeConstant.NOTICE_CANCEL_ACT); + informationFormDTO.setUserId(user.getUserId()); + informationFormDTO.setType(HeartNoticeConstant.NOTICE_TYPE_INTERACTIVE_NOTICE); + informationFormDTO.setBusinessType(HeartNoticeConstant.NOTICE__BUSINESS_TYPE_ACTIVITY); + informationFormDTO.setBusinessId(actInfoEntity.getId()); + informationFormDTO.setContent(actInfoEntity.getCancelReason()); + informationFormDTO.setRelBusinessContent(actInfoEntity.getTitle()); + epdcInformationFormDTOList.add(informationFormDTO); + } + newsTask.insertBatchUserInformation(epdcInformationFormDTOList); + } + @Override @Transactional(rollbackFor = Exception.class) public void delete(String[] ids) { diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserRelationServiceImpl.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserRelationServiceImpl.java index 2c8aa8374..aa74b03a0 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserRelationServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserRelationServiceImpl.java @@ -38,8 +38,10 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.constant.ActStateConstant; import com.elink.esua.epdc.constant.ActUserPointsOperationTypeConstant; import com.elink.esua.epdc.constant.ActUserRelationStatusConstant; +import com.elink.esua.epdc.constant.HeartNoticeConstant; import com.elink.esua.epdc.dto.UserDTO; import com.elink.esua.epdc.dto.VolunteerInfoDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsFormDTO; import com.elink.esua.epdc.dto.logs.PointsLogsDTO; import com.elink.esua.epdc.modules.activity.dao.ActInfoDao; @@ -52,6 +54,7 @@ import com.elink.esua.epdc.modules.activity.service.ActInfoService; import com.elink.esua.epdc.modules.activity.service.ActUserLogService; import com.elink.esua.epdc.modules.activity.service.ActUserPointsLogService; import com.elink.esua.epdc.modules.activity.service.ActUserRelationService; +import com.elink.esua.epdc.modules.async.NewsTask; import com.elink.esua.epdc.modules.feign.PointsFeignClient; import com.elink.esua.epdc.modules.feign.UserInfoFeignClient; import org.apache.commons.lang3.StringUtils; @@ -94,6 +97,9 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -164,6 +170,8 @@ public class ActUserRelationServiceImpl extends BaseServiceImpl epdcInformationFormDTOList) { + newsFeignClient.saveInformationList(epdcInformationFormDTOList); + } +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/NewsFeignClient.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/NewsFeignClient.java new file mode 100644 index 000000000..662dc2192 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/NewsFeignClient.java @@ -0,0 +1,43 @@ +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.epdc.form.EpdcInformationFormDTO; +import com.elink.esua.epdc.modules.feign.fallback.NewsFeignClientFallback; +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; + +import java.util.List; + +/** + * 消息模块 + * + * @author work@yujt.net.cn + * @date 2019/9/18 15:37 + */ +@FeignClient(name = ServiceConstant.EPDC_NEWS_SERVER, fallback = NewsFeignClientFallback.class) +public interface NewsFeignClient { + + /** + * 给用户发消息 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author work@yujt.net.cn + * @date 2019/9/18 15:40 + */ + @PostMapping(value = "news/epdc-app/information/save", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) + Result saveInformation(@RequestBody EpdcInformationFormDTO formDto); + + /** + * @param epdcInformationFormDTOList + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author yinzuomei + * @Description 批量给用户发消息 + * @Date 2020/2/7 21:00 + **/ + @PostMapping(value = "news/epdc-app/information/saveList", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) + Result saveInformationList(List epdcInformationFormDTOList); +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/NewsFeignClientFallback.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/NewsFeignClientFallback.java new file mode 100644 index 000000000..9d91e8372 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/NewsFeignClientFallback.java @@ -0,0 +1,28 @@ +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.epdc.form.EpdcInformationFormDTO; +import com.elink.esua.epdc.modules.feign.NewsFeignClient; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author work@yujt.net.cn + * @date 2019/9/18 15:38 + */ +@Component +public class NewsFeignClientFallback implements NewsFeignClient { + + @Override + public Result saveInformation(EpdcInformationFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_NEWS_SERVER, "saveInformation", formDto); + } + + @Override + public Result saveInformationList(List epdcInformationFormDTOList) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_NEWS_SERVER, "saveInformationList", epdcInformationFormDTOList); + } +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserRelationDao.xml b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserRelationDao.xml index 14f4608eb..bd004480c 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserRelationDao.xml +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserRelationDao.xml @@ -255,4 +255,17 @@ and eaur.ACT_ID=#{actId} and eaur.USER_ID=#{userId} + + + diff --git a/esua-epdc/epdc-module/epdc-news/epdc-news-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcInformationFormDTO.java b/esua-epdc/epdc-module/epdc-news/epdc-news-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcInformationFormDTO.java index e6271d225..6bfd6b63e 100644 --- a/esua-epdc/epdc-module/epdc-news/epdc-news-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcInformationFormDTO.java +++ b/esua-epdc/epdc-module/epdc-news/epdc-news-client/src/main/java/com/elink/esua/epdc/dto/epdc/form/EpdcInformationFormDTO.java @@ -64,7 +64,7 @@ public class EpdcInformationFormDTO implements Serializable { * 消息所属业务类型:event事件审核;issueComment议题评论;issueReply议题评论回复;itemComment项目评论;itemReply项目评论回复; * issueApprove支持议题;itemApprove支持项目;issueCommentApprove议题评论支持;issueCommentOppose议题评论反对; * itemCommentApprove项目评论支持;itemCommentOppose项目评论反对;issue议题处理; - * item项目处理;groupInvited社群邀请等; volunteer志愿者审核 + * item项目处理;groupInvited社群邀请等; volunteer志愿者审核;activity爱心互助活动; */ @NotBlank(message = "消息所属业务类型不能为空") private String businessType; diff --git a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppInformationController.java b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppInformationController.java index ff65dd5cd..2e561ce91 100644 --- a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppInformationController.java +++ b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/controller/EpdcAppInformationController.java @@ -59,6 +59,19 @@ public class EpdcAppInformationController { return this.informationService.saveInformation(formDto); } + /** + * @param epdcInformationFormDTOList + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author yinzuomei + * @Description 批量发送消息 + * @Date 2020/2/7 21:04 + **/ + @PostMapping("saveList") + public Result saveInformation(@RequestBody List epdcInformationFormDTOList) { + ValidatorUtils.validateEntity(epdcInformationFormDTOList); + return this.informationService.saveInformationList(epdcInformationFormDTOList); + } + /** * 消息已读 * @@ -99,4 +112,4 @@ public class EpdcAppInformationController { public Result selectOneFristByUserId(@PathVariable("userId") String userId) { return informationService.selectOneFristByUserId(userId); } -} \ No newline at end of file +} diff --git a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/InformationService.java b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/InformationService.java index 889972dc5..76b296d18 100644 --- a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/InformationService.java +++ b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/InformationService.java @@ -137,4 +137,13 @@ public interface InformationService extends BaseService { * @date 2019/9/11 19:05 */ Result selectOneFristByUserId(String userId); -} \ No newline at end of file + + /** + * @param epdcInformationFormDTOList + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author yinzuomei 批量给用户发消息 + * @Description saveInformationList + * @Date 2020/2/7 21:04 + **/ + Result saveInformationList(List epdcInformationFormDTOList); +} diff --git a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/InformationServiceImpl.java b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/InformationServiceImpl.java index c9f7d5fe7..3f1d2309b 100644 --- a/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/InformationServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-news/epdc-news-server/src/main/java/com/elink/esua/epdc/service/impl/InformationServiceImpl.java @@ -20,11 +20,11 @@ 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.constant.NumConstant; import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum; 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.dao.InformationDao; import com.elink.esua.epdc.dto.InformationDTO; @@ -132,4 +132,14 @@ public class InformationServiceImpl extends BaseServiceImpl selectOneFristByUserId(String userId) { return new Result().ok(baseDao.selectOneFristByUserId(userId)); } -} \ No newline at end of file + + @Override + public Result saveInformationList(List epdcInformationFormDTOList) { + List entityList = ConvertUtils.sourceToTarget(epdcInformationFormDTOList, InformationEntity.class); + for (InformationEntity entity : entityList) { + entity.setReadFlag(YesOrNoEnum.NO.value()); + } + this.insertBatch(entityList); + return new Result(); + } +}