From 975550374af6cc821bf1f73f12b52cfd140d2458 Mon Sep 17 00:00:00 2001 From: pikachu <1321288662@qq.com> Date: Fri, 18 Jun 2021 07:55:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BC=9A=E5=91=98=E7=AB=99?= =?UTF-8?q?=E5=86=85=E4=BF=A1=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/MemberMessageBuyerController.java | 6 +- .../listener/NoticeSendMessageListener.java | 150 ++++++++++++++---- .../member/serviceimpl/MemberServiceImpl.java | 6 +- .../entity/dos/MemberMessage.java | 5 +- .../modules/message/entity/dos/Message.java | 6 +- .../entity/enums/MessageSendClient.java | 27 ++++ .../entity/vos}/MemberMessageQueryVO.java | 11 +- .../mapper/MemberMessageMapper.java | 4 +- .../service/MemberMessageService.java | 17 +- .../message/service/StoreMessageService.java | 4 +- .../serviceimpl/MemberMessageServiceImpl.java | 19 ++- .../MemberMessageManagerController.java | 45 ++++++ 12 files changed, 249 insertions(+), 51 deletions(-) rename framework/src/main/java/cn/lili/modules/{member => message}/entity/dos/MemberMessage.java (89%) create mode 100644 framework/src/main/java/cn/lili/modules/message/entity/enums/MessageSendClient.java rename framework/src/main/java/cn/lili/modules/{member/entity/vo => message/entity/vos}/MemberMessageQueryVO.java (66%) rename framework/src/main/java/cn/lili/modules/{member => message}/mapper/MemberMessageMapper.java (69%) rename framework/src/main/java/cn/lili/modules/{member => message}/service/MemberMessageService.java (74%) rename framework/src/main/java/cn/lili/modules/{member => message}/serviceimpl/MemberMessageServiceImpl.java (78%) create mode 100644 manager-api/src/main/java/cn/lili/controller/member/MemberMessageManagerController.java diff --git a/buyer-api/src/main/java/cn/lili/controller/member/MemberMessageBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/member/MemberMessageBuyerController.java index 0460250c..1dae47d7 100644 --- a/buyer-api/src/main/java/cn/lili/controller/member/MemberMessageBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/member/MemberMessageBuyerController.java @@ -4,9 +4,9 @@ import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; import cn.lili.modules.message.entity.enums.MessageStatusEnum; -import cn.lili.modules.member.entity.dos.MemberMessage; -import cn.lili.modules.member.entity.vo.MemberMessageQueryVO; -import cn.lili.modules.member.service.MemberMessageService; +import cn.lili.modules.message.entity.dos.MemberMessage; +import cn.lili.modules.message.entity.vos.MemberMessageQueryVO; +import cn.lili.modules.message.service.MemberMessageService; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; diff --git a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java index f30d41e7..01433f64 100644 --- a/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/NoticeSendMessageListener.java @@ -1,18 +1,27 @@ package cn.lili.listener; import cn.hutool.json.JSONUtil; +import cn.lili.common.enums.SwitchEnum; import cn.lili.common.rocketmq.tags.OtherTagsEnum; import cn.lili.common.sms.SmsUtil; +import cn.lili.common.vo.PageVO; +import cn.lili.modules.member.entity.dos.Member; +import cn.lili.modules.member.entity.vo.MemberSearchVO; import cn.lili.modules.member.mapper.MemberMapper; +import cn.lili.modules.member.service.MemberService; +import cn.lili.modules.message.entity.dos.MemberMessage; import cn.lili.modules.message.entity.dos.Message; import cn.lili.modules.message.entity.dos.StoreMessage; import cn.lili.modules.message.entity.dto.SmsReachDTO; +import cn.lili.modules.message.entity.enums.MessageSendClient; import cn.lili.modules.message.entity.enums.MessageStatusEnum; import cn.lili.modules.message.entity.enums.RangeEnum; +import cn.lili.modules.message.service.MemberMessageService; import cn.lili.modules.message.service.StoreMessageService; import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.service.StoreService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.core.RocketMQListener; @@ -41,9 +50,15 @@ public class NoticeSendMessageListener implements RocketMQListener { //店铺消息 @Autowired private StoreMessageService storeMessageService; + //会员消息 + @Autowired + private MemberMessageService memberMessageService; //店铺 @Autowired private StoreService storeService; + //会员 + @Autowired + private MemberService memberService; @Override public void onMessage(MessageExt messageExt) { @@ -51,7 +66,6 @@ public class NoticeSendMessageListener implements RocketMQListener { case SMS: String smsJsonStr = new String(messageExt.getBody()); SmsReachDTO smsReachDTO = JSONUtil.toBean(smsJsonStr, SmsReachDTO.class); - //发送全部会员 if (smsReachDTO.getSmsRange().equals(RangeEnum.ALL.name())) { //获取所有会员的手机号 @@ -65,38 +79,118 @@ public class NoticeSendMessageListener implements RocketMQListener { //管理员发送站内信 case MESSAGE: Message message = JSONUtil.toBean(new String(messageExt.getBody()), Message.class); - List list = new ArrayList<>(); - //保存商家记录 - if (message.getMessageRange().equals("ALL")) { - List storeList = storeService.list(new QueryWrapper().eq("store_disable", "OPEN")); - storeList.forEach(item -> { - StoreMessage storeMessage = new StoreMessage(); - storeMessage.setMessageId(message.getId()); - storeMessage.setStoreName(item.getStoreName()); - storeMessage.setStoreId(item.getId()); - storeMessage.setStatus(MessageStatusEnum.UN_READY.name()); - storeMessage.setTitle(message.getTitle()); - storeMessage.setContent(message.getContent()); - list.add(storeMessage); - }); + // 管理端发送给商家的站内信 + if (message.getMessageClient().equals(MessageSendClient.STORE.name().toLowerCase())) { + saveStoreMessage(message); } else { - int i = 0; - for (String str : message.getUserIds()) { - StoreMessage storeMessage = new StoreMessage(); - storeMessage.setMessageId(message.getId()); - storeMessage.setStoreId(str); - storeMessage.setStoreName(message.getUserNames()[i]); - storeMessage.setStatus(MessageStatusEnum.UN_READY.name()); - storeMessage.setTitle(message.getTitle()); - storeMessage.setContent(message.getContent()); - list.add(storeMessage); - i++; - } + //管理员发送给会员的站内信 + saveMemberMessage(message); } - storeMessageService.save(list); break; default: break; } } + + /** + * 保存店铺消息 + * + * @param message 消息 + */ + private void saveStoreMessage(Message message) { + List list = new ArrayList<>(); + //发送全部商家情况 + if (message.getMessageRange().equals("ALL")) { + List storeList = storeService.list(new QueryWrapper().eq("store_disable", "OPEN")); + storeList.forEach(item -> { + StoreMessage storeMessage = new StoreMessage(); + storeMessage.setMessageId(message.getId()); + storeMessage.setStoreName(item.getStoreName()); + storeMessage.setStoreId(item.getId()); + storeMessage.setStatus(MessageStatusEnum.UN_READY.name()); + storeMessage.setTitle(message.getTitle()); + storeMessage.setContent(message.getContent()); + list.add(storeMessage); + }); + } else { + //发送给指定商家情况 + int i = 0; + for (String str : message.getUserIds()) { + StoreMessage storeMessage = new StoreMessage(); + storeMessage.setMessageId(message.getId()); + storeMessage.setStoreId(str); + storeMessage.setStoreName(message.getUserNames()[i]); + storeMessage.setStatus(MessageStatusEnum.UN_READY.name()); + storeMessage.setTitle(message.getTitle()); + storeMessage.setContent(message.getContent()); + list.add(storeMessage); + i++; + } + } + if (list.size() > 0) { + //执行保存 + storeMessageService.save(list); + } + } + + /** + * 保存会员消息 + * + * @param message 消息 + */ + private void saveMemberMessage(Message message) { + List list = new ArrayList<>(); + //如果是给所有会员发送消息 + if (message.getMessageRange().equals("ALL")) { + //查询所有会员总数,因为会员总数比较大 如果一次性查出来会占用数据库资源,所以要分页查询 + MemberSearchVO memberSearchVO = new MemberSearchVO(); + memberSearchVO.setDisabled(SwitchEnum.OPEN.name()); + Integer memberNum = memberService.getMemberNum(memberSearchVO); + //构建分页查询参数 + //100条查一次 + Integer pageSize = 200; + Integer pageCount = 0; + pageCount = memberNum / pageSize; + pageCount = memberNum % pageSize > 0 ? pageCount + 1 : pageCount; + for (int i = 1; i <= pageCount; i++) { + PageVO pageVO = new PageVO(); + pageVO.setPageSize(pageSize); + pageVO.setPageNumber(i); + IPage page = memberService.getMemberPage(memberSearchVO, pageVO); + //循环要保存的信息 + page.getRecords().forEach(item -> { + MemberMessage memberMessage = new MemberMessage(); + memberMessage.setContent(message.getContent()); + memberMessage.setTitle(message.getTitle()); + memberMessage.setMessageId(message.getId()); + memberMessage.setMemberId(item.getId()); + memberMessage.setMemberName(item.getUsername()); + memberMessage.setStatus(MessageStatusEnum.UN_READY.name()); + list.add(memberMessage); + }); + } + + } else { + //如果是给指定会员发送消息 + int i = 0; + for (String str : message.getUserIds()) { + MemberMessage memberMessage = new MemberMessage(); + memberMessage.setMessageId(message.getId()); + memberMessage.setMemberId(str); + memberMessage.setMemberName(message.getUserNames()[i]); + memberMessage.setStatus(MessageStatusEnum.UN_READY.name()); + memberMessage.setTitle(message.getTitle()); + memberMessage.setContent(message.getContent()); + list.add(memberMessage); + i++; + } + } + if (list.size() > 0) { + //执行保存 + memberMessageService.save(list); + } + + } + + } diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java index 2ca33490..59b3ad34 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java @@ -541,9 +541,9 @@ public class MemberServiceImpl extends ServiceImpl impleme queryWrapper.like(StringUtils.isNotBlank(memberSearchVO.getUsername()), "username", memberSearchVO.getUsername()); //按照电话号码查询 queryWrapper.like(StringUtils.isNotBlank(memberSearchVO.getMobile()), "mobile", memberSearchVO.getMobile()); - //按照电话号码查询 - queryWrapper.like(StringUtils.isNotBlank(memberSearchVO.getDisabled()), "disabled", memberSearchVO.getDisabled()); - queryWrapper.orderByDesc("create_time"); + //按照状态查询 + queryWrapper.eq(StringUtils.isNotBlank(memberSearchVO.getDisabled()), "disabled", + memberSearchVO.getDisabled().equals(SwitchEnum.OPEN.name()) ? 1 : 0); queryWrapper.orderByDesc("create_time"); return this.count(queryWrapper); } diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberMessage.java b/framework/src/main/java/cn/lili/modules/message/entity/dos/MemberMessage.java similarity index 89% rename from framework/src/main/java/cn/lili/modules/member/entity/dos/MemberMessage.java rename to framework/src/main/java/cn/lili/modules/message/entity/dos/MemberMessage.java index d0ce5fa6..f148ab05 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/dos/MemberMessage.java +++ b/framework/src/main/java/cn/lili/modules/message/entity/dos/MemberMessage.java @@ -1,4 +1,4 @@ -package cn.lili.modules.member.entity.dos; +package cn.lili.modules.message.entity.dos; import cn.lili.base.BaseEntity; import cn.lili.modules.message.entity.enums.MessageStatusEnum; @@ -37,6 +37,9 @@ public class MemberMessage extends BaseEntity { @ApiModelProperty(value = "消息内容") private String content; + @ApiModelProperty(value = "关联消息id") + private String messageId; + /** * @see MessageStatusEnum */ diff --git a/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java b/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java index 5be9f77f..34d0aacc 100644 --- a/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java +++ b/framework/src/main/java/cn/lili/modules/message/entity/dos/Message.java @@ -2,6 +2,7 @@ package cn.lili.modules.message.entity.dos; import cn.lili.base.BaseEntity; import cn.lili.modules.message.entity.enums.RangeEnum; +import cn.lili.modules.message.entity.enums.MessageSendClient; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; @@ -37,7 +38,10 @@ public class Message extends BaseEntity { @ApiModelProperty(value = "发送范围") private String messageRange; - @ApiModelProperty(value = "发送客户端 商家和会员") + /** + * @see MessageSendClient + */ + @ApiModelProperty(value = "发送客户端 商家或者会员") private String messageClient; @Transient diff --git a/framework/src/main/java/cn/lili/modules/message/entity/enums/MessageSendClient.java b/framework/src/main/java/cn/lili/modules/message/entity/enums/MessageSendClient.java new file mode 100644 index 00000000..f063535b --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/message/entity/enums/MessageSendClient.java @@ -0,0 +1,27 @@ +package cn.lili.modules.message.entity.enums; + +/** + * 消息发送客户端 + * + * @author pikachu + * @date 2020/12/8 9:46 + */ +public enum MessageSendClient { + + //全部用户 + MEMBER("会员"), + //指定用户 + STORE("店铺"); + + private final String description; + + MessageSendClient(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } + + +} diff --git a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberMessageQueryVO.java b/framework/src/main/java/cn/lili/modules/message/entity/vos/MemberMessageQueryVO.java similarity index 66% rename from framework/src/main/java/cn/lili/modules/member/entity/vo/MemberMessageQueryVO.java rename to framework/src/main/java/cn/lili/modules/message/entity/vos/MemberMessageQueryVO.java index 4264facf..1311d052 100644 --- a/framework/src/main/java/cn/lili/modules/member/entity/vo/MemberMessageQueryVO.java +++ b/framework/src/main/java/cn/lili/modules/message/entity/vos/MemberMessageQueryVO.java @@ -1,17 +1,19 @@ -package cn.lili.modules.member.entity.vo; +package cn.lili.modules.message.entity.vos; import cn.lili.modules.message.entity.enums.MessageStatusEnum; +import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** - * 会员消息查询 + * 会员接收消息查询vo * * @author Chopper - * @date 2020-02-25 14:10:16 + * @date 2020/12/2 17:50 */ @Data +@ApiModel(value = "会员接收消息查询vo") public class MemberMessageQueryVO { private static final long serialVersionUID = 1L; @@ -22,6 +24,9 @@ public class MemberMessageQueryVO { @ApiModelProperty(value = "状态") private String status; + @ApiModelProperty(value = "消息id") + private String messageId; + @ApiModelProperty(value = "消息标题") private String title; diff --git a/framework/src/main/java/cn/lili/modules/member/mapper/MemberMessageMapper.java b/framework/src/main/java/cn/lili/modules/message/mapper/MemberMessageMapper.java similarity index 69% rename from framework/src/main/java/cn/lili/modules/member/mapper/MemberMessageMapper.java rename to framework/src/main/java/cn/lili/modules/message/mapper/MemberMessageMapper.java index a727b6e2..72f4f373 100644 --- a/framework/src/main/java/cn/lili/modules/member/mapper/MemberMessageMapper.java +++ b/framework/src/main/java/cn/lili/modules/message/mapper/MemberMessageMapper.java @@ -1,7 +1,7 @@ -package cn.lili.modules.member.mapper; +package cn.lili.modules.message.mapper; -import cn.lili.modules.member.entity.dos.MemberMessage; +import cn.lili.modules.message.entity.dos.MemberMessage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; diff --git a/framework/src/main/java/cn/lili/modules/member/service/MemberMessageService.java b/framework/src/main/java/cn/lili/modules/message/service/MemberMessageService.java similarity index 74% rename from framework/src/main/java/cn/lili/modules/member/service/MemberMessageService.java rename to framework/src/main/java/cn/lili/modules/message/service/MemberMessageService.java index b271110f..70e4ef9d 100644 --- a/framework/src/main/java/cn/lili/modules/member/service/MemberMessageService.java +++ b/framework/src/main/java/cn/lili/modules/message/service/MemberMessageService.java @@ -1,11 +1,13 @@ -package cn.lili.modules.member.service; +package cn.lili.modules.message.service; import cn.lili.common.vo.PageVO; -import cn.lili.modules.member.entity.dos.MemberMessage; -import cn.lili.modules.member.entity.vo.MemberMessageQueryVO; +import cn.lili.modules.message.entity.dos.MemberMessage; +import cn.lili.modules.message.entity.vos.MemberMessageQueryVO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * 消息发送业务层 * @@ -41,4 +43,13 @@ public interface MemberMessageService extends IService { Boolean deleteMessage(String messageId); + /** + * 保存消息信息 + * + * @param messages 消息 + * @return + */ + boolean save(List messages); + + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/message/service/StoreMessageService.java b/framework/src/main/java/cn/lili/modules/message/service/StoreMessageService.java index ad700035..7b8aa737 100644 --- a/framework/src/main/java/cn/lili/modules/message/service/StoreMessageService.java +++ b/framework/src/main/java/cn/lili/modules/message/service/StoreMessageService.java @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** - * 消息发送业务层 + * 店铺接收消息业务层 * * @author Chopper * @date 2020/11/17 3:44 下午 @@ -34,7 +34,7 @@ public interface StoreMessageService extends IService { IPage getPage(StoreMessageQueryVO storeMessageQueryVO, PageVO pageVO); /** - * 保存消息信息 + * 保存店铺消息信息 * * @param messages 消息 * @return diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberMessageServiceImpl.java b/framework/src/main/java/cn/lili/modules/message/serviceimpl/MemberMessageServiceImpl.java similarity index 78% rename from framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberMessageServiceImpl.java rename to framework/src/main/java/cn/lili/modules/message/serviceimpl/MemberMessageServiceImpl.java index db131c08..835dcdf7 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberMessageServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/message/serviceimpl/MemberMessageServiceImpl.java @@ -1,19 +1,21 @@ -package cn.lili.modules.member.serviceimpl; +package cn.lili.modules.message.serviceimpl; import cn.lili.common.utils.PageUtil; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; -import cn.lili.modules.member.entity.dos.MemberMessage; -import cn.lili.modules.member.entity.vo.MemberMessageQueryVO; -import cn.lili.modules.member.mapper.MemberMessageMapper; -import cn.lili.modules.member.service.MemberMessageService; +import cn.lili.modules.message.entity.dos.MemberMessage; +import cn.lili.modules.message.mapper.MemberMessageMapper; +import cn.lili.modules.message.service.MemberMessageService; +import cn.lili.modules.message.entity.vos.MemberMessageQueryVO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** * 会员消息业务层实现 * @@ -28,6 +30,8 @@ public class MemberMessageServiceImpl extends ServiceImpl getPage(MemberMessageQueryVO memberMessageQueryVO, PageVO pageVO) { QueryWrapper queryWrapper = new QueryWrapper<>(); + //消息id + queryWrapper.like(StringUtils.isNotEmpty(memberMessageQueryVO.getMessageId()), "message_id", memberMessageQueryVO.getMessageId()); //消息标题 queryWrapper.like(StringUtils.isNotEmpty(memberMessageQueryVO.getTitle()), "title", memberMessageQueryVO.getTitle()); //会员id @@ -61,4 +65,9 @@ public class MemberMessageServiceImpl extends ServiceImpl messages) { + return saveBatch(messages); + } } \ No newline at end of file diff --git a/manager-api/src/main/java/cn/lili/controller/member/MemberMessageManagerController.java b/manager-api/src/main/java/cn/lili/controller/member/MemberMessageManagerController.java new file mode 100644 index 00000000..49b17813 --- /dev/null +++ b/manager-api/src/main/java/cn/lili/controller/member/MemberMessageManagerController.java @@ -0,0 +1,45 @@ +package cn.lili.controller.member; + +import cn.lili.common.enums.ResultUtil; +import cn.lili.common.vo.PageVO; +import cn.lili.common.vo.ResultMessage; +import cn.lili.modules.message.entity.dos.MemberMessage; +import cn.lili.modules.message.entity.dos.StoreMessage; +import cn.lili.modules.message.entity.vos.MemberMessageQueryVO; +import cn.lili.modules.message.entity.vos.StoreMessageQueryVO; +import cn.lili.modules.message.service.MemberMessageService; +import cn.lili.modules.message.service.StoreMessageService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 管理端,会员消息消息管理接口 + * + * @author pikachu + * @date: 2020/12/6 16:09 + */ +@Transactional +@RestController +@Api(tags = "管理端,会员消息消息管理接口") +@RequestMapping("/manager/message/member") +public class MemberMessageManagerController { + @Autowired + private MemberMessageService memberMessageService; + + + @GetMapping + @ApiOperation(value = "多条件分页获取") + public ResultMessage> getByCondition(MemberMessageQueryVO memberMessageQueryVO, + PageVO pageVo) { + IPage page = memberMessageService.getPage(memberMessageQueryVO, pageVo); + return ResultUtil.data(page); + } + +}