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/pom.xml b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/pom.xml index 3d6d089ee..99594d0db 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/pom.xml @@ -72,6 +72,12 @@ 1.0.0 compile + + com.esua.epdc + epdc-news-client + 1.0.0 + compile + 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 95351d979..6ad274a6a 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 @@ -62,9 +62,9 @@ public class EpdcInformationFormDTO implements Serializable { /** * AppInformationBusinessEnum * 消息所属业务类型:event事件审核;issueComment议题评论;issueReply议题评论回复;itemComment项目评论;itemReply项目评论回复; - * issueApprove支持议题;itemApprove支持项目;issueCommentApprove议题评论支持;issueCommentOppose议题评论反对; - * itemCommentApprove项目评论支持;itemCommentOppose项目评论反对;issue议题处理; - * item项目处理;groupInvited社群邀请等; volunteerCheck志愿者审核 + * issueApprove支持议题;itemApprove支持项目;issueCommentApprove议题评论支持;issueCommentOppose议题评论反对; + * itemCommentApprove项目评论支持;itemCommentOppose项目评论反对;issue议题处理; + * item项目处理;groupInvited社群邀请等; volunteer志愿者审核;activity爱心互助活动;points积分商城 */ @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(); + } +} diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/constant/PointsNoticeConstant.java b/esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/constant/PointsNoticeConstant.java new file mode 100644 index 000000000..7ae4c0ce6 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-client/src/main/java/com/elink/esua/epdc/constant/PointsNoticeConstant.java @@ -0,0 +1,28 @@ +package com.elink.esua.epdc.constant; + +/** + * @Description 积分商城模块发送消息常量 + * @Author yinzuomei + * @Date 2020/2/7 20:14 + */ +public interface PointsNoticeConstant { + /** + * 减积分 + */ + String SUBTRACT_POINTS_NOTICE = "积分变更【扣减积分】-"; + + /** + * 加积分 + */ + String ADD_POINTS_NOTICE = "积分变更【增加积分】+"; + + /** + * 消息所属业务类型:points积分商城 + */ + String NOTICE__BUSINESS_TYPE_ACTIVITY = "points"; + + /** + * 我的消息类型:1互动通知 + */ + String NOTICE_TYPE_INTERACTIVE_NOTICE = "1"; +} diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/pom.xml b/esua-epdc/epdc-module/epdc-points/epdc-points-server/pom.xml index b50a3ddb2..1424dd42b 100644 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/pom.xml +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/pom.xml @@ -56,6 +56,12 @@ 1.0.0 compile + + com.esua.epdc + epdc-news-client + 1.0.0 + compile + diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java new file mode 100644 index 000000000..d0dddb513 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java @@ -0,0 +1,34 @@ +package com.elink.esua.epdc.modules.async; + +import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO; +import com.elink.esua.epdc.modules.feign.NewsFeignClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +/** + * 新闻通知消息模块 线程任务 + * + * @author yujintao + * @email yujintao@elink-cn.com + * @date 2019/9/10 10:02 + */ +@Component +public class NewsTask { + + @Autowired + private NewsFeignClient newsFeignClient; + + /** + * 给用户发送消息 + * + * @param informationDto + * @return void + * @author yujintao + * @date 2019/9/10 10:33 + */ + @Async + public void insertUserInformation(EpdcInformationFormDTO informationDto) { + newsFeignClient.saveInformation(informationDto); + } +} diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/feign/NewsFeignClient.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/feign/NewsFeignClient.java new file mode 100644 index 000000000..e780327c5 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/feign/NewsFeignClient.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.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; + +/** + * 消息模块 + * + * @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); +} diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/NewsFeignClientFallback.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/NewsFeignClientFallback.java new file mode 100644 index 000000000..0a2c9f20a --- /dev/null +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/NewsFeignClientFallback.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.epdc.form.EpdcInformationFormDTO; +import com.elink.esua.epdc.modules.feign.NewsFeignClient; +import org.springframework.stereotype.Component; + +/** + * @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); + } +} diff --git a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/service/impl/PointsLogsServiceImpl.java b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/service/impl/PointsLogsServiceImpl.java index fd451559f..74babf04d 100644 --- a/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/service/impl/PointsLogsServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-points/epdc-points-server/src/main/java/com/elink/esua/epdc/modules/logs/service/impl/PointsLogsServiceImpl.java @@ -24,14 +24,18 @@ 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.constant.PointsConstant; import com.elink.esua.epdc.commons.tools.enums.YesOrNoEnum; +import com.elink.esua.epdc.commons.tools.enums.pointsenum.PointsOperationEnum; import com.elink.esua.epdc.commons.tools.enums.pointsenum.PointsOperationModeEnum; 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.PointsNoticeConstant; import com.elink.esua.epdc.dto.UserDTO; +import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcUserPointsFormDTO; import com.elink.esua.epdc.dto.epdc.result.EpdcAdjustVolunteerPointsDTO; import com.elink.esua.epdc.dto.logs.PointsLogsDTO; +import com.elink.esua.epdc.modules.async.NewsTask; import com.elink.esua.epdc.modules.feign.UserFeignClient; import com.elink.esua.epdc.modules.logs.dao.PointsLogsDao; import com.elink.esua.epdc.modules.logs.entity.PointsLogsEntity; @@ -62,17 +66,20 @@ public class PointsLogsServiceImpl extends BaseServiceImpl page(Map params) { String volunteerId = (String) params.get("volunteerId"); - String behaviorCode=(String) params.get("behaviorCode"); + String behaviorCode = (String) params.get("behaviorCode"); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(StringUtils.isNotBlank(volunteerId), "VOLUNTEER_ID", volunteerId) - .eq(StringUtils.isNotBlank(behaviorCode),"BEHAVIOR_CODE",behaviorCode); + .eq(StringUtils.isNotBlank(behaviorCode), "BEHAVIOR_CODE", behaviorCode); IPage page = baseDao.selectPage( - getPage(params, FieldConstant.CREATED_TIME, false), - wrapper + getPage(params, FieldConstant.CREATED_TIME, false), + wrapper ); return getPageData(page, PointsLogsDTO.class); } @@ -157,6 +164,35 @@ public class PointsLogsServiceImpl extends BaseServiceImpl { **/ UserTagEntity selectByTagCode(String tagCode); - UserTagInfo selectByUserId(String userId); + /** + * @param userId + * @return java.util.List + * @Author yinzuomei + * @Description 根据用户id查询用户标签id用户标签编码 + * @Date 2020/2/7 14:17 + **/ + List selectByUserId(String userId); } diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserTagRelationDao.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserTagRelationDao.java index 6ddec02ae..e5a9ad8ac 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserTagRelationDao.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/dao/UserTagRelationDao.java @@ -20,6 +20,7 @@ package com.elink.esua.epdc.dao; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.entity.UserTagRelationEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * 用户标签关系表 @@ -39,5 +40,5 @@ public interface UserTagRelationDao extends BaseDao { * @author zy * @date 2019-12-16 */ - void deleteUserTagRelation(String userId); -} \ No newline at end of file + void deleteUserTagRelation(@Param("userId") String userId, @Param("tagCode") String tagCode); +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserTagRelationService.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserTagRelationService.java index 3c069a590..1d10769ff 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserTagRelationService.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/UserTagRelationService.java @@ -94,13 +94,12 @@ public interface UserTagRelationService extends BaseService { */ PageData page(Map params); - /** - * 自定义 志愿者表修改方法 - * @param dto - */ - void updateVolunteerInfo(VolunteerInfoDTO dto); - /** * 默认查询 * @@ -191,6 +185,15 @@ public interface VolunteerInfoService extends BaseService { **/ Result getVolunteerInfoDTOByUserId(String userId); + /** + * @param dto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author yinzuomei + * @Description 志愿者审批 + * @Date 2020/2/7 10:36 + **/ + Result volunteerInfoCheck(VolunteerInfoDTO dto); + /** * * 增加志愿者爱心时长 diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserTagRelationServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserTagRelationServiceImpl.java index 540016aa9..4626d9346 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserTagRelationServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/UserTagRelationServiceImpl.java @@ -17,14 +17,20 @@ package com.elink.esua.epdc.service.impl; +import cn.hutool.core.map.MapUtil; 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.page.PageData; +import com.elink.esua.epdc.commons.tools.redis.RedisKeys; +import com.elink.esua.epdc.commons.tools.redis.RedisUtils; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; -import com.elink.esua.epdc.commons.tools.constant.FieldConstant; +import com.elink.esua.epdc.dao.UserTagDao; import com.elink.esua.epdc.dao.UserTagRelationDao; +import com.elink.esua.epdc.dto.UserTagInfo; import com.elink.esua.epdc.dto.UserTagRelationDTO; +import com.elink.esua.epdc.entity.UserTagEntity; import com.elink.esua.epdc.entity.UserTagRelationEntity; import com.elink.esua.epdc.redis.UserTagRelationRedis; import com.elink.esua.epdc.service.UserTagRelationService; @@ -46,10 +52,12 @@ import java.util.Map; @Service public class UserTagRelationServiceImpl extends BaseServiceImpl implements UserTagRelationService { + @Autowired + private UserTagDao userTagDao; @Autowired private UserTagRelationRedis userTagRelationRedis; @Autowired - private UserTagRelationDao userTagRelationDao; + private RedisUtils redisUtils; @Override public PageData page(Map params) { @@ -104,17 +112,42 @@ public class UserTagRelationServiceImpl extends BaseServiceImpl userTagInfos = userTagDao.selectByUserId(userId); + String key = RedisKeys.getCpUserKey(userId); + Map map = redisUtils.hGetAll(key); + if (MapUtil.isEmpty(map)) { + return; + } + map.put("userTagInfos", userTagInfos); + redisUtils.hMSet(key, map); } -} \ No newline at end of file +} diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/VolunteerInfoServiceImpl.java b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/VolunteerInfoServiceImpl.java index 538f47d96..cca8d62c7 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/VolunteerInfoServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/java/com/elink/esua/epdc/service/impl/VolunteerInfoServiceImpl.java @@ -22,10 +22,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.elink.esua.epdc.async.NewsTask; 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.UserTagEnum; 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.VolunteerInfoConsant; +import com.elink.esua.epdc.constant.VolunteerInfoNoticeConstant; import com.elink.esua.epdc.dao.VolunteerInfoDao; import com.elink.esua.epdc.dto.ParentAndAllDeptDTO; import com.elink.esua.epdc.dto.UserTagDTO; @@ -38,7 +40,7 @@ import com.elink.esua.epdc.dto.epdc.result.EpdcGetVolunteerRankDTO; import com.elink.esua.epdc.entity.VolunteerInfoEntity; import com.elink.esua.epdc.feign.AdminFeignClient; import com.elink.esua.epdc.redis.VolunteerInfoRedis; -import com.elink.esua.epdc.service.UserService; +import com.elink.esua.epdc.service.UserTagRelationService; import com.elink.esua.epdc.service.VolunteerInfoService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -65,17 +67,18 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -123,31 +125,6 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpl list(Map params) { List entityList = baseDao.selectList(getWrapper(params)); @@ -318,6 +295,43 @@ public class VolunteerInfoServiceImpl extends BaseServiceImpl().ok(baseDao.selectOneVolunteerInfoDTO(userId)); } + /** + * @param dto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @Author yinzuomei + * @Description 志愿者审批 + * @Date 2020/2/7 10:37 + **/ + @Override + public Result volunteerInfoCheck(VolunteerInfoDTO dto) { + if (StringUtils.isBlank(dto.getAuditStatus())) { + return new Result().error("审核状态不能为空"); + } + VolunteerInfoDTO volunteerInfoDTO = this.get(dto.getId()); + volunteerInfoDTO.setAuditStatus(dto.getAuditStatus()); + volunteerInfoDTO.setFailureReason(dto.getFailureReason()); + if (NumConstant.TWO_STR.equals(volunteerInfoDTO.getAuditStatus())) { + if (StringUtils.isBlank(volunteerInfoDTO.getFailureReason())) { + return new Result().error("请填写原因"); + } + // 1、未通过审核时发送消息-用户可修改信息重新提交 + EpdcInformationFormDTO informationFormDTO = new EpdcInformationFormDTO(); + informationFormDTO.setUserId(volunteerInfoDTO.getUserId()); + informationFormDTO.setContent(dto.getFailureReason()); + informationFormDTO.setType(VolunteerInfoNoticeConstant.NOTICE_TYPE_AUDIT_NOTICE); + informationFormDTO.setBusinessType(VolunteerInfoNoticeConstant.NOTICE__BUSINESS_TYPE_VOLUNTEER); + informationFormDTO.setBusinessId(volunteerInfoDTO.getId()); + informationFormDTO.setTitle(VolunteerInfoNoticeConstant.NOTICE_CERTIFICATION_NOT_PASSED); + newsTask.insertUserInformation(informationFormDTO); + } else { + //2、审核通过-新增用户标签关系表(此方法里面实现了更新redis里的userTagInfos) + userTagRelationService.addUserTagRelation(volunteerInfoDTO.getUserId(), UserTagEnum.VOLUNTEER.value()); + } + //3、更新志愿者信息表 + this.update(volunteerInfoDTO); + return new Result(); + } + @Override @Transactional(rollbackFor = Exception.class) public Result modifyVolunteerKindnessTime(EpdcVolunteerKindnessTimeFormDTO formDto) { diff --git a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserTagRelationDao.xml b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserTagRelationDao.xml index 1e328b2eb..dcde4d493 100644 --- a/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserTagRelationDao.xml +++ b/esua-epdc/epdc-module/epdc-user/epdc-user-server/src/main/resources/mapper/UserTagRelationDao.xml @@ -15,8 +15,16 @@ - - UPDATE epdc_user_tag_relation - SET del_flag='1' WHERE USER_ID = #{userId} AND del_flag='0' + + UPDATE epdc_user_tag_relation r + SET r.del_flag='1' + WHERE r.del_flag='0' + AND r.USER_ID = #{userId} + and r.TAG_ID in( + select eut.id + from epdc_user_tag eut + where eut.DEL_FLAG='0' + and eut.TAG_CODE=#{tagCode} + ) - \ No newline at end of file +