消息推送

This commit is contained in:
liupopo
2023-03-18 19:01:48 +08:00
parent a1abdfe8a7
commit 209666c00f
21 changed files with 714 additions and 52 deletions

View File

@@ -13,8 +13,10 @@ import com.zscat.mallplus.oms.service.IOmsOrderService;
import com.zscat.mallplus.oms.vo.*;
import com.zscat.mallplus.pms.entity.PmsProduct;
import com.zscat.mallplus.pms.mapper.PmsProductMapper;
import com.zscat.mallplus.ums.entity.SysMessage;
import com.zscat.mallplus.ums.entity.UmsMember;
import com.zscat.mallplus.ums.mapper.UmsMemberMapper;
import com.zscat.mallplus.ums.service.ISysMessageService;
import com.zscat.mallplus.utils.ValidatorUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
@@ -48,6 +50,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
private IOmsOrderOperateHistoryService orderOperateHistoryDao;
@Resource
private OmsOrderOperateHistoryMapper orderOperateHistoryMapper;
@Resource
private ISysMessageService messageService;
@Override
public int delivery(List<OmsOrderDeliveryParam> deliveryParamList) {
@@ -68,9 +72,24 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
}).collect(Collectors.toList());
orderOperateHistoryDao.saveBatch(operateHistoryList);
}
sendPushMsg(deliveryParamList);
return count;
}
private void sendPushMsg(List<OmsOrderDeliveryParam> deliveryParamList) {
for (OmsOrderDeliveryParam param : deliveryParamList) {
OmsOrder omsOrder = baseMapper.selectById(param.getOrderId());
if (omsOrder != null && omsOrder.getMemberId() != null) {
SysMessage msg = new SysMessage();
msg.setUserId(omsOrder.getMemberId().intValue());
msg.setCode("交易物流");
msg.setParams("您购买的商品已发货");
msg.setContent("您在汇融云链购买的,订单号为:" + omsOrder.getOrderSn() + " 的商品已经发货请在7日内到取货点取货。");
messageService.sendToOne(msg);
}
}
}
@Override
public int singleDelivery(OmsOrderDeliveryParam deliveryParamList) {
OmsOrder order = new OmsOrder();
@@ -103,7 +122,6 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
}
@Override
public Object dayStatic(String date, Integer type) {
List<OmsOrder> orders = orderMapper.listByDate(date, type);
@@ -166,22 +184,22 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
@Override
public Object getOrderTimeData(Integer status) {
BigDecimal nowOrderPay = new BigDecimal(0); //销售总额
List<OmsOrder> orders =null;
Map<Long,Object> memberMap =new HashMap<>();
if (status==0){
List<OmsOrder> orders = null;
Map<Long, Object> memberMap = new HashMap<>();
if (status == 0) {
orders = orderMapper.selectList(new QueryWrapper<OmsOrder>());
}else {
orders = orderMapper.selectList(new QueryWrapper<OmsOrder>().eq("status",status));
} else {
orders = orderMapper.selectList(new QueryWrapper<OmsOrder>().eq("status", status));
}
for (OmsOrder order : orders) {
memberMap.put(order.getMemberId(),order.getId());
nowOrderPay = nowOrderPay.add(order.getPayAmount());
memberMap.put(order.getMemberId(), order.getId());
nowOrderPay = nowOrderPay.add(order.getPayAmount());
}
Map<String, Object> map = new HashMap();
map.put("orderCount", orders.size());
map.put("orderPay", nowOrderPay);
map.put("memberCount", memberMap.size());
// map.put("femallount", femallount);
// map.put("femallount", femallount);
return map;
}
@@ -269,12 +287,12 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
}
@Override
public List<OrderStstic> listOrderGroupByStatus(Integer status){
public List<OrderStstic> listOrderGroupByStatus(Integer status) {
return orderMapper.listOrderGroupByStatus(status);
}
@Override
public Map orderMonthStatic(String date, Integer status){
return orderMapper.orderMonthStatic(date,status);
public Map orderMonthStatic(String date, Integer status) {
return orderMapper.orderMonthStatic(date, status);
}
}

View File

@@ -0,0 +1,78 @@
package com.zscat.mallplus.ums.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zscat.mallplus.annotation.SysLog;
import com.zscat.mallplus.ums.entity.SysMessageTask;
import com.zscat.mallplus.ums.entity.UmsMember;
import com.zscat.mallplus.ums.service.IUmsMemberService;
import com.zscat.mallplus.ums.service.SysMessageTaskService;
import com.zscat.mallplus.util.StringUtils;
import com.zscat.mallplus.utils.CommonResult;
import com.zscat.mallplus.utils.ValidatorUtils;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.ILoggerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController("com.zscat.mallplus.ums.controller.SysMessageTaskRest")
@RequestMapping("/ums/sysMessageTask")
public class SysMessageTaskRest {
private static final Logger L = LoggerFactory.getLogger(SysMessageTaskRest.class);
@Resource
private SysMessageTaskService sysMessageTaskService;
@GetMapping(value = "/list")
public Object listByPage(
@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize
) {
try {
QueryWrapper<SysMessageTask> qw = new QueryWrapper<>();
qw.orderByDesc("sendtime");
IPage<SysMessageTask> page = sysMessageTaskService.page(new Page<SysMessageTask>(pageNum, pageSize), qw);
return new CommonResult().success(page);
} catch (Exception e) {
L.error("根据条件查询所有会员表列表:%s", e.getMessage(), e);
}
return new CommonResult().failed();
}
@PostMapping(value = "/create")
public Object saveTask(@RequestBody SysMessageTask entity) {
try {
entity.setId(null);
if (sysMessageTaskService.save(entity)) {
return new CommonResult().success();
}
} catch (Exception e) {
L.error("保存定时消息表:%s", e.getMessage(), e);
return new CommonResult().failed();
}
return new CommonResult().failed();
}
@GetMapping(value = "/delete/{id}")
public Object deleteUmsMember(@PathVariable Integer id) {
try {
System.out.println("KKKKKKKKK: "+id);
if (ValidatorUtils.empty(id)) {
return new CommonResult().paramFailed("定时消息表id");
}
if (sysMessageTaskService.removeById(id)) {
return new CommonResult().success();
}
} catch (Exception e) {
L.error("删除定时消息表:%s", e.getMessage(), e);
return new CommonResult().failed();
}
return new CommonResult().failed();
}
}

View File

@@ -1,6 +1,7 @@
package com.zscat.mallplus.ums.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zscat.mallplus.ums.entity.SysMessage;
import com.zscat.mallplus.ums.entity.UmsMember;
import org.apache.ibatis.annotations.Param;
@@ -22,4 +23,8 @@ public interface IUmsMemberService extends IService<UmsMember> {
Map memberMonthStatic( String date);
List<UmsMember> listAll();
String fetchPhoneById(Integer userId);
List<String> listPhoneByIdList(List<Integer> userIdList);
}

View File

@@ -0,0 +1,10 @@
package com.zscat.mallplus.ums.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zscat.mallplus.ums.entity.SysMessageTask;
import com.zscat.mallplus.ums.mapper.SysMessageTaskMapper;
import org.springframework.stereotype.Service;
@Service
public class SysMessageTaskService extends ServiceImpl<SysMessageTaskMapper, SysMessageTask> {
}

View File

@@ -1,5 +1,8 @@
package com.zscat.mallplus.ums.service.impl;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zscat.mallplus.ums.entity.SysMessage;
import com.zscat.mallplus.ums.entity.UmsMember;
@@ -7,9 +10,13 @@ import com.zscat.mallplus.ums.mapper.SysMessageMapper;
import com.zscat.mallplus.ums.service.ISysMessageService;
import com.zscat.mallplus.ums.service.IUmsMemberService;
import com.zscat.mallplus.ums.vo.SysMessageSendSelectVo;
import com.zscat.mallplus.unipush.UniPushService;
import com.zscat.mallplus.unipush.entity.PushCids;
import com.zscat.mallplus.unipush.mapper.PushCidsMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@@ -26,32 +33,47 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
@Autowired
private IUmsMemberService memberService;
@Resource
private PushCidsMapper pushCidsMapper;
@Resource
private UniPushService uniPushService;
@Override
public boolean sendToOne(SysMessage entity) {
entity.setId(null);
sendPushToOne(entity);
return this.save(entity);
}
@Override
public boolean sendToAll(SysMessage entity) {
List<UmsMember> memberList = memberService.listAll();
// List<SysMessage> messList = new ArrayList<>();
for (UmsMember member : memberList) {
// SysMessage
entity.setId(null);
Integer id = Math.toIntExact(member.getId());
entity.setUserId(id);
// messList.add(en)
this.save(entity);
}
sendPushToAll(entity);
// List<UmsMember> memberList = memberService.listAll();
//// List<SysMessage> messList = new ArrayList<>();
// for (UmsMember member : memberList) {
//// SysMessage
// entity.setId(null);
// Integer id = Math.toIntExact(member.getId());
// entity.setUserId(id);
//// messList.add(en)
// this.save(entity);
// }
entity.setId(null);
entity.setUserId(1);
this.save(entity);
return true;
}
@Override
public boolean sendToSelect(SysMessageSendSelectVo vo) {
SysMessage entity = vo.getSysMessage();
List<Integer> userIdList = vo.getUserIdList();
sendPushToList(entity, userIdList);
for (Integer memberId : userIdList) {
entity.setId(null);
entity.setUserId(memberId);
@@ -66,9 +88,60 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
entity.setId(null);
entity.setCode("交易物流");
entity.setParams("货物已发出");
entity.setContent("你的订单号码为:"+orderNo+" 的货物已经发出,请您留意物流信息!");
entity.setContent("你的订单号码为:" + orderNo + " 的货物已经发出,请您留意物流信息!");
entity.setUserId(userId);
this.save(entity);
return true;
}
private void sendPushToOne(SysMessage sysMessage) {
Integer userId = sysMessage.getUserId();
if (userId == null)
return;
if (userId.equals(1)) {
return;
}
String phone = memberService.fetchPhoneById(userId);
if (StrUtil.isNotBlank(phone)) {
List<String> cids = listPushCidByPhone(phone);
uniPushService.sendPushAsync(sysMessage, cids);
}
}
private List<String> listPushCidByPhone(String phone) {
QueryWrapper<PushCids> qw = new QueryWrapper<>();
qw.eq("userPhone", phone);
List<PushCids> list = pushCidsMapper.selectList(qw);
List<String> cids = new ArrayList<>();
list.forEach(ent -> cids.add(ent.getGetuiCid()));
return cids;
}
private List<String> listPushCidByPhoneList(List<String> phoneList) {
QueryWrapper<PushCids> qw = new QueryWrapper<>();
qw.in("userPhone", phoneList);
List<PushCids> list = pushCidsMapper.selectList(qw);
List<String> cids = new ArrayList<>();
list.forEach(ent -> cids.add(ent.getGetuiCid()));
return cids;
}
private List<String> listPushCidAll() {
List<PushCids> list = pushCidsMapper.selectList(new QueryWrapper<>());
List<String> cids = new ArrayList<>();
list.forEach(ent -> cids.add(ent.getGetuiCid()));
return cids;
}
private void sendPushToList(SysMessage sysMessage, List<Integer> userIdList) {
List<String> phoneList = memberService.listPhoneByIdList(userIdList);
List<String> cids = listPushCidByPhoneList(phoneList);
uniPushService.sendPushAsync(sysMessage, cids);
}
private void sendPushToAll(SysMessage sysMessage) {
List<String> cids = listPushCidAll();
uniPushService.sendPushAsync(sysMessage, cids);
}
}

View File

@@ -13,6 +13,7 @@ import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -55,7 +56,7 @@ public class UmsMemberServiceImpl extends ServiceImpl<UmsMemberMapper, UmsMember
}
@Override
public Map memberMonthStatic(@Param("date") String date){
public Map memberMonthStatic(@Param("date") String date) {
return memberMapper.memberMonthStatic(date);
}
@@ -63,4 +64,25 @@ public class UmsMemberServiceImpl extends ServiceImpl<UmsMemberMapper, UmsMember
public List<UmsMember> listAll() {
return baseMapper.selectList(new QueryWrapper<UmsMember>());
}
@Override
public String fetchPhoneById(Integer userId) {
UmsMember um = baseMapper.selectById(userId);
if (um == null)
return null;
String userPhone = um.getUsername();
return userPhone;
}
@Override
public List<String> listPhoneByIdList(List<Integer> userIdList) {
QueryWrapper<UmsMember> qw = new QueryWrapper<>();
qw.in("id", userIdList);
List<UmsMember> memberList = baseMapper.selectList(qw);
List<String> phoneList = new ArrayList<>();
memberList.forEach(mem -> phoneList.add(mem.getUsername()));
return phoneList;
}
}

View File

@@ -1,5 +1,6 @@
package com.zscat.mallplus.unipush;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.json.JSONUtil;
import com.getui.push.v2.sdk.ApiHelper;
import com.getui.push.v2.sdk.GtApiConfiguration;
@@ -228,6 +229,10 @@ public class UniPushService {
}
public void sendPushAsync(SysMessage mess, List<String> cids) {
ThreadUtil.execute(() -> sendPush(mess, cids));
}
private void sendSingleMsg(PushMessage pushMessage, String cid, int index) {
PushDTO<Audience> pushDTO = new PushDTO<Audience>();
pushDTO.setRequestId("" + System.currentTimeMillis() + index);
@@ -235,7 +240,7 @@ public class UniPushService {
Audience audience = new Audience();
audience.addCid(cid);
pushDTO.setAudience(audience);
ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);
ApiResult<Map<String, Map<String, String>>> apiResult = singlePushApi().pushToSingleByCid(pushDTO);
if (apiResult.isSuccess()) {
System.out.println(apiResult.getData());
} else {