短信推送任务
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
package com.czg.service.market.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.SmsPushEvent;
|
||||
|
||||
/**
|
||||
* 营销推送发送记录 映射层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
public interface SmsPushEventMapper extends BaseMapper<SmsPushEvent> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.czg.service.market.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.czg.market.entity.SmsPushEventUser;
|
||||
|
||||
/**
|
||||
* 营销推送任务 映射层。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
public interface SmsPushEventUserMapper extends BaseMapper<SmsPushEventUser> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
package com.czg.service.market.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.czg.BaseQueryParam;
|
||||
import com.czg.config.RabbitPublisher;
|
||||
import com.czg.exception.CzgException;
|
||||
import com.czg.market.dto.ShopCouponDTO;
|
||||
import com.czg.market.dto.SmsPushEventDTO;
|
||||
import com.czg.market.entity.ShopCoupon;
|
||||
import com.czg.market.entity.SmsPushEventUser;
|
||||
import com.czg.service.market.mapper.SmsPushEventUserMapper;
|
||||
import com.czg.utils.AssertUtil;
|
||||
import com.czg.utils.PageUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import com.mybatisflex.spring.service.impl.ServiceImpl;
|
||||
import com.czg.market.entity.SmsPushEvent;
|
||||
import com.czg.market.service.SmsPushEventService;
|
||||
import com.czg.service.market.mapper.SmsPushEventMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 营销推送发送记录 服务层实现。
|
||||
*
|
||||
* @author ww
|
||||
* @since 2025-10-14
|
||||
*/
|
||||
@Service
|
||||
public class SmsPushEventServiceImpl extends ServiceImpl<SmsPushEventMapper, SmsPushEvent> implements SmsPushEventService {
|
||||
|
||||
@Resource
|
||||
private SmsPushEventUserMapper eventUserMapper;
|
||||
@Resource
|
||||
private RabbitPublisher rabbitPublisher;
|
||||
|
||||
@Override
|
||||
public Page<SmsPushEventDTO> getPushEventPage(BaseQueryParam param, Long shopId, Long id) {
|
||||
QueryWrapper queryWrapper = new QueryWrapper();
|
||||
queryWrapper.eq(SmsPushEvent::getShopId, shopId)
|
||||
.eq(SmsPushEvent::getId, id)
|
||||
.eq(SmsPushEvent::getIsDel, 0)
|
||||
.orderBy(SmsPushEvent::getCreateTime).desc();
|
||||
Page<SmsPushEventDTO> page = pageAs(new Page<>(param.getPage(), param.getSize()), queryWrapper, SmsPushEventDTO.class);
|
||||
for (SmsPushEventDTO record : page.getRecords()) {
|
||||
if (record.getUserType() != 2) {
|
||||
continue;
|
||||
}
|
||||
SmsPushEventUser eventUser = eventUserMapper.selectOneByQuery(
|
||||
new QueryWrapper().eq(SmsPushEventUser::getEventId, record.getId())
|
||||
);
|
||||
record.setSmsPushEventUser(eventUser);
|
||||
}
|
||||
return page;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void addPushEvent(SmsPushEventDTO param) {
|
||||
AssertUtil.isNull(param.getUserType(), "请选择用户范围后进行推送");
|
||||
if (param.getUserType() == 2 && param.getSmsPushEventUser() == null) {
|
||||
throw new CzgException("范围推送时,必须指定用户范围");
|
||||
} else if (param.getUserType() == 3 && param.getUserId() == null) {
|
||||
throw new CzgException("指定推送时,必须指定用户");
|
||||
}
|
||||
AssertUtil.isNull(param.getPushEventId(), "请选择模板后进行推送");
|
||||
AssertUtil.isNull(param.getContent(), "消息内容不能为空");
|
||||
if (param.getSendType() == 2) {
|
||||
AssertUtil.isNull(param.getSendTime(), "定时发送时,必须指定发送时间");
|
||||
} else {
|
||||
param.setSendTime(LocalDateTime.now());
|
||||
}
|
||||
SmsPushEvent pushEvent = BeanUtil.toBean(param, SmsPushEvent.class);
|
||||
save(pushEvent);
|
||||
if (param.getUserType() == 2) {
|
||||
SmsPushEventUser eventUser = param.getSmsPushEventUser();
|
||||
eventUser.setShopId(param.getShopId());
|
||||
eventUser.setEventId(pushEvent.getId());
|
||||
eventUserMapper.insert(eventUser);
|
||||
}
|
||||
// 推送消息 进行 阿里模板申请
|
||||
rabbitPublisher.sendWechatTemplateMsg(pushEvent.getShopId() + "," + pushEvent.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 逻辑删除记录
|
||||
*/
|
||||
@Override
|
||||
public void deletePushEvent(Long id) {
|
||||
SmsPushEvent pushEvent = getById(id);
|
||||
AssertUtil.isNull(pushEvent, "记录不存在");
|
||||
pushEvent.setIsDel(1);
|
||||
updateById(pushEvent);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?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.czg.service.market.mapper.SmsPushEventMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?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.czg.service.market.mapper.SmsPushEventUserMapper">
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user