From 7ecd2c9bb7b1a77fd2d55a59b2ce85c9ddb26ee7 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 13 Oct 2023 11:11:06 +0800 Subject: [PATCH] redbagprod --- src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java | 2 src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java | 12 ++++ src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java | 1 src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java | 23 +++++++ src/main/resources/mapper/modules/ChatUserMapper.xml | 8 ++ src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java | 17 +++++ src/main/java/cc/mrbird/febs/mall/entity/ChatGroup.java | 4 + src/main/java/cc/mrbird/febs/mall/vo/AdminChatUserVo.java | 4 + src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java | 4 + src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java | 31 ++++++++-- src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java | 5 + src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java | 12 ++++ src/main/resources/templates/febs/views/modules/chat/groupList.html | 27 +++++++++ src/main/java/cc/mrbird/febs/mall/vo/AdminGroupVo.java | 4 + 14 files changed, 148 insertions(+), 6 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java index b09877e..91d5fb6 100644 --- a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java +++ b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java @@ -48,4 +48,21 @@ } // === 添加机器人 end === + // === 自动发送 start === + @Bean + public DirectExchange imAutoSendExchange() { + return new DirectExchange(RabbitQueueEnum.IM_REDBAG_AUTO_SEND.getExchange()); + } + + @Bean + public Queue imAutoSendQueue() { + return new Queue(RabbitQueueEnum.IM_REDBAG_AUTO_SEND.getQueue()); + } + + @Bean + public Binding imAutoSendBind() { + return BindingBuilder.bind(imAutoSendQueue()).to(imAutoSendExchange()).with(RabbitQueueEnum.IM_REDBAG_AUTO_SEND.getRoute()); + } + // === 自动发送 end === + } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java index 6ab9073..373cc73 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java @@ -197,6 +197,29 @@ * @param id * @return */ + @GetMapping("openSwitchAutoSend/{id}") + @ControllerEndpoint(operation = "会员列表---开启", exceptionMessage = "操作失败") + public FebsResponse openSwitchAutoSend(@NotNull(message = "{required}") @PathVariable String id) { + return iAdminChatService.openSwitchAutoSend(id); + } + /** + * 使用机器人---关闭 + * + * @param id + * @return + */ + @GetMapping("closeSwitchAutoSend/{id}") + @ControllerEndpoint(operation = "会员列表---关闭", exceptionMessage = "操作失败") + public FebsResponse closeSwitchAutoSend(@NotNull(message = "{required}") @PathVariable String id) { + return iAdminChatService.closeSwitchAutoSend(id); + } + + /** + * 使用机器人---开启 + * + * @param id + * @return + */ @GetMapping("openSwitchUseRobot/{id}") @ControllerEndpoint(operation = "会员列表---开启", exceptionMessage = "操作失败") public FebsResponse openSwitchUseRobot(@NotNull(message = "{required}") @PathVariable String id) { diff --git a/src/main/java/cc/mrbird/febs/mall/entity/ChatGroup.java b/src/main/java/cc/mrbird/febs/mall/entity/ChatGroup.java index 82b7eff..71d6db9 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/ChatGroup.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/ChatGroup.java @@ -65,5 +65,9 @@ * 模式类型 1:简单模式-正常模式 2:困难模式 */ private Integer modelType; + /** + * 机器人是否自动发动红包 1:是 0:否 + */ + private Integer autoSend; } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java index 90e02ce..fe103b3 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java @@ -46,4 +46,6 @@ void updateIsRobotByGroupId(@Param("id")String id, @Param("useRobot")int i); AdminGroupInfoVo getGroupInfoById(@Param("id")long id); + + void updateAutoSendByGroupId(@Param("id")String id, @Param("autoSend")int i); } diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java index 34290df..511ceae 100644 --- a/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java +++ b/src/main/java/cc/mrbird/febs/mall/quartz/ProfitJob.java @@ -3,24 +3,30 @@ import cc.mrbird.febs.common.enumerates.AgentLevelEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.common.utils.MallUtils; +import cc.mrbird.febs.mall.entity.ChatGroup; import cc.mrbird.febs.mall.entity.MallMember; import cc.mrbird.febs.mall.entity.MallMoneyFlow; +import cc.mrbird.febs.mall.mapper.ChatGroupMapper; +import cc.mrbird.febs.mall.mapper.ChatUserMapper; import cc.mrbird.febs.mall.mapper.MallMemberMapper; import cc.mrbird.febs.mall.mapper.MallMoneyFlowMapper; import cc.mrbird.febs.mall.service.IApiMallMemberService; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IMemberProfitService; import cc.mrbird.febs.mall.service.impl.CommonService; +import cc.mrbird.febs.rabbit.producter.AgentProducer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Date; @@ -34,14 +40,27 @@ @Component public class ProfitJob { -// @Autowired -// private IMemberProfitService memberProfitService; + @Resource + private ChatUserMapper chatUserMapper; + + @Resource + private ChatGroupMapper chatGroupMapper; + + @Resource + private AgentProducer agentProducer; /** * 代理分红 */ -// @Scheduled(cron = "0 30 0 * * ?") -// public void profitJob() { -// memberProfitService.agentProfit(null); -// } + @Scheduled(cron = "0 0/1 * * * ? ") + public void profitJob() { + QueryWrapper<ChatGroup> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("auto_send", 1); + List<ChatGroup> chatGroups = chatGroupMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(chatGroups)){ + for(ChatGroup chatGroup : chatGroups){ + agentProducer.sendAutoSendMsg(chatGroup.getId()); + } + } + } } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java index 15e4b7f..9d264f2 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java @@ -49,4 +49,8 @@ FebsResponse closeModelType(String userId); FebsResponse updateRegisterMember(AdminRegisterMemberVo adminRegisterMemberVo); + + FebsResponse openSwitchAutoSend(String id); + + FebsResponse closeSwitchAutoSend(String id); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java index 9f8f4e4..24e01f2 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java @@ -252,4 +252,16 @@ agentProducer.sendAddRobotMsg(adminRegisterMemberVo.getInviteId()); return new FebsResponse().success(); } + + @Override + public FebsResponse openSwitchAutoSend(String id) { + this.baseMapper.updateAutoSendByGroupId(id,1); + return new FebsResponse().success(); + } + + @Override + public FebsResponse closeSwitchAutoSend(String id) { + this.baseMapper.updateAutoSendByGroupId(id,0); + return new FebsResponse().success(); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminChatUserVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminChatUserVo.java index 141dada..218b4ee 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminChatUserVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminChatUserVo.java @@ -47,4 +47,8 @@ * 是否是机器人 0:否 1:是 */ private Integer isRobot; + /** + * 模式类型 1:简单模式-正常模式 2:困难模式 + */ + private Integer modelType; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminGroupVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminGroupVo.java index cef953b..882a752 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminGroupVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminGroupVo.java @@ -38,4 +38,8 @@ * 模式类型 1:简单模式-正常模式 2:困难模式 */ private Integer modelType; + /** + * 机器人是否自动发动红包 1:是 0:否 + */ + private Integer autoSend; } diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java index 16b5e72..b9becc4 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java +++ b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java @@ -7,6 +7,11 @@ public class QueueConstants { /** + * 自动发送 + */ + public static final String QUEUE_IM_REDBAG_AUTO_SEND = "queue_im_redbag_auto_send"; + + /** * 添加机器人 */ public static final String QUEUE_IM_REDBAG_ADD_ROBOT = "queue_im_redbag_add_robot"; diff --git a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java index 67bbbfe..23a5073 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java +++ b/src/main/java/cc/mrbird/febs/rabbit/enumerates/RabbitQueueEnum.java @@ -6,6 +6,7 @@ @Getter public enum RabbitQueueEnum { + IM_REDBAG_AUTO_SEND("exchange_im_redbag_auto_send", "route_key_im_redbag_auto_send", QueueConstants.QUEUE_IM_REDBAG_AUTO_SEND), IM_REDBAG_GET_ADD_ROBOT("exchange_im_redbag_add_robot", "route_key_im_redbag_add_robot", QueueConstants.QUEUE_IM_REDBAG_ADD_ROBOT); private String exchange; diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java index fa8fc7c..3d5c6c0 100644 --- a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java +++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java @@ -58,4 +58,16 @@ correlationData); } + /** + * 自动发送 + */ + public void sendAutoSendMsg(Long groupId) { + log.info("自动发送:{}", groupId); + CorrelationData correlationData = new CorrelationData(IdUtil.simpleUUID()); + rabbitTemplate.convertAndSend(RabbitQueueEnum.IM_REDBAG_AUTO_SEND.getExchange(), + RabbitQueueEnum.IM_REDBAG_AUTO_SEND.getRoute(), + groupId, + correlationData); + } + } diff --git a/src/main/resources/mapper/modules/ChatUserMapper.xml b/src/main/resources/mapper/modules/ChatUserMapper.xml index cf2b4c5..f6aeff2 100644 --- a/src/main/resources/mapper/modules/ChatUserMapper.xml +++ b/src/main/resources/mapper/modules/ChatUserMapper.xml @@ -186,6 +186,7 @@ a.amount_min amountMin, a.amount_max amountMax, a.red_bag_cnt redBagCnt, + a.auto_send autoSend, b.phone phone, b.nick_name nickName, a.create_time createTime @@ -224,4 +225,11 @@ where id = #{id} </select> + <update id="updateAutoSendByGroupId"> + update chat_group + set + auto_send = #{autoSend} + where id = #{id} + </update> + </mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/chat/groupList.html b/src/main/resources/templates/febs/views/modules/chat/groupList.html index 39f11bd..401f55a 100644 --- a/src/main/resources/templates/febs/views/modules/chat/groupList.html +++ b/src/main/resources/templates/febs/views/modules/chat/groupList.html @@ -49,6 +49,13 @@ <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchUseRobot"> {{# } }} </script> +<script type="text/html" id="switchAutoSend"> + {{# if(d.autoSend === 1) { }} + <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchAutoSend"> + {{# } else { }} + <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchAutoSend"> + {{# } }} +</script> <script type="text/html" id="isModelType"> {{# if(d.modelType === 1) { }} <span>简单模式</span> @@ -131,6 +138,7 @@ {field: 'amountMax', title: '下限', minWidth: 100,align:'center'}, {field: 'redBagCnt', title: '红包个数', minWidth: 100,align:'center'}, {field: 'useRobot', title: '使用机器人', templet: '#switchUseRobot', minWidth: 80,align:'center'}, + {field: 'autoSend', title: '自动发红包', templet: '#switchAutoSend', minWidth: 180,align:'center'}, {templet:"#isModelType", title: '模式', minWidth: 150,align:'center'}, {field: 'createTime', title: '创建时间', minWidth: 180,align:'center'}, {title: '操作', @@ -140,6 +148,25 @@ ]] }); } + form.on('switch(switchAutoSend)', function (data) { + if (data.elem.checked) { + openSwitchAutoSend(data.value); + } else { + closeSwitchAutoSend(data.value); + } + }) + function openSwitchAutoSend(id) { + febs.get(ctx + 'admin/chat/openSwitchAutoSend/' + id, null, function () { + febs.alert.success('操作成功'); + $query.click(); + }); + } + function closeSwitchAutoSend(id) { + febs.get(ctx + 'admin/chat/closeSwitchAutoSend/' + id, null, function () { + febs.alert.success('操作成功'); + $query.click(); + }); + } form.on('switch(switchUseRobot)', function (data) { if (data.elem.checked) { openSwitchUseRobot(data.value); -- Gitblit v1.9.1