From 209666c00fe5c2fb3e3c10201b6fbc8055b6d859 Mon Sep 17 00:00:00 2001 From: liupopo Date: Sat, 18 Mar 2023 19:01:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/databases/tables_create.sql | 14 +- docs/xiugai/20230315/工作安排20230318.md | 6 + .../营销系统问题及修改20230318.docx | Bin 0 -> 104071 bytes .../oms/service/impl/OmsOrderServiceImpl.java | 42 +++- .../ums/controller/SysMessageTaskRest.java | 78 +++++++ .../ums/service/IUmsMemberService.java | 5 + .../ums/service/SysMessageTaskService.java | 10 + .../service/impl/SysMessageServiceImpl.java | 95 +++++++- .../service/impl/UmsMemberServiceImpl.java | 24 +- .../mallplus/unipush/UniPushService.java | 7 +- .../mallplus/ums/entity/SysMessageTask.java | 90 ++++++++ .../ums/mapper/SysMessageTaskMapper.java | 7 + .../unipush/mapper/PushCidsMapper.java | 2 + .../mallplus/apirest/SysMessageRest.java | 19 +- .../ums/service/ISysMessageService.java | 5 + .../service/impl/SysMessageServiceImpl.java | 19 ++ .../mallplus/unipush/PushCidsService.java | 19 +- .../src/api/ums/sysMessageTask.js | 83 +++++++ mallplusui-web-admin/src/router/index.js | 11 +- .../src/views/ums/member/index.vue | 20 +- .../src/views/ums/sysMessageTask/index.vue | 210 ++++++++++++++++++ 21 files changed, 714 insertions(+), 52 deletions(-) create mode 100644 docs/xiugai/20230315/工作安排20230318.md create mode 100644 docs/xiugai/20230315/营销系统问题及修改20230318.docx create mode 100644 mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/SysMessageTaskRest.java create mode 100644 mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/SysMessageTaskService.java create mode 100644 mallplus-mbg/src/main/java/com/zscat/mallplus/ums/entity/SysMessageTask.java create mode 100644 mallplus-mbg/src/main/java/com/zscat/mallplus/ums/mapper/SysMessageTaskMapper.java create mode 100644 mallplusui-web-admin/src/api/ums/sysMessageTask.js create mode 100644 mallplusui-web-admin/src/views/ums/sysMessageTask/index.vue diff --git a/docs/databases/tables_create.sql b/docs/databases/tables_create.sql index aee8aa8..0657c24 100644 --- a/docs/databases/tables_create.sql +++ b/docs/databases/tables_create.sql @@ -28,9 +28,13 @@ CREATE TABLE `push_cids` ( `getuiCid` varchar(100) NOT NULL COMMENT '个推的ClientID', `userPhone` varchar(100) DEFAULT NULL COMMENT '用户手机号', `userId` bigint(32) DEFAULT NULL COMMENT '用户ID', + `store_id` int(11) DEFAULT 1 COMMENT '用户ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; +ALTER TABLE mallplus1.push_cids ADD store_id INT DEFAULT 1 NULL; + + CREATE TABLE `sys_message_task` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, @@ -38,7 +42,13 @@ CREATE TABLE `sys_message_task` ( `code` varchar(60) DEFAULT '系统消息' COMMENT '消息编码', `params` varchar(5000) DEFAULT NULL COMMENT '参数', `content` text COMMENT '内容', - `sendtime` date NOT NULL COMMENT '发送时间', + `sendtime` datetime NOT NULL COMMENT '发送时间', `status` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '0未发送,1已发送', + `store_id` int(11) DEFAULT 1 COMMENT '用户ID', PRIMARY KEY (`id`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='定时消息'; \ No newline at end of file +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='定时消息'; + + + +INSERT INTO sys_permission (pid, name, value, icon, type, uri, status, create_time, sort) +VALUES (43, '定时消息', 'ums:UmsMember:read', 'product-list', 1, 'sysMessageTask', 1, now() , 0) \ No newline at end of file diff --git a/docs/xiugai/20230315/工作安排20230318.md b/docs/xiugai/20230315/工作安排20230318.md new file mode 100644 index 0000000..4f6dc61 --- /dev/null +++ b/docs/xiugai/20230315/工作安排20230318.md @@ -0,0 +1,6 @@ +1.优惠券的批量领取 +2.购买商品时如果有符合使用的优惠券,自动选取优惠券 +3.增加订单归集统计页面,对于商品待发货、已发货、已完成订单统计列表。 +(1)全部提货点的商品订单统计。 +(2)各个提货点的商品订单统计。 +(3)各个提货点对应到人的订单统计。 \ No newline at end of file diff --git a/docs/xiugai/20230315/营销系统问题及修改20230318.docx b/docs/xiugai/20230315/营销系统问题及修改20230318.docx new file mode 100644 index 0000000000000000000000000000000000000000..da792612e01c7b8b75e2507f234704bc59d44c6f GIT binary patch literal 104071 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≧F;Ylc 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 i private IOmsOrderOperateHistoryService orderOperateHistoryDao; @Resource private OmsOrderOperateHistoryMapper orderOperateHistoryMapper; + @Resource + private ISysMessageService messageService; @Override public int delivery(List deliveryParamList) { @@ -68,9 +72,24 @@ public class OmsOrderServiceImpl extends ServiceImpl i }).collect(Collectors.toList()); orderOperateHistoryDao.saveBatch(operateHistoryList); } + sendPushMsg(deliveryParamList); return count; } + private void sendPushMsg(List 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 i } - @Override public Object dayStatic(String date, Integer type) { List orders = orderMapper.listByDate(date, type); @@ -166,22 +184,22 @@ public class OmsOrderServiceImpl extends ServiceImpl i @Override public Object getOrderTimeData(Integer status) { BigDecimal nowOrderPay = new BigDecimal(0); //销售总额 - List orders =null; - Map memberMap =new HashMap<>(); - if (status==0){ + List orders = null; + Map memberMap = new HashMap<>(); + if (status == 0) { orders = orderMapper.selectList(new QueryWrapper()); - }else { - orders = orderMapper.selectList(new QueryWrapper().eq("status",status)); + } else { + orders = orderMapper.selectList(new QueryWrapper().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 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 i } @Override - public List listOrderGroupByStatus(Integer status){ + public List 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); } } diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/SysMessageTaskRest.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/SysMessageTaskRest.java new file mode 100644 index 0000000..a1c2576 --- /dev/null +++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/controller/SysMessageTaskRest.java @@ -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 qw = new QueryWrapper<>(); + qw.orderByDesc("sendtime"); + IPage page = sysMessageTaskService.page(new Page(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(); + } +} diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/IUmsMemberService.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/IUmsMemberService.java index 2d34d88..99da43c 100644 --- a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/IUmsMemberService.java +++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/IUmsMemberService.java @@ -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 { Map memberMonthStatic( String date); List listAll(); + + String fetchPhoneById(Integer userId); + + List listPhoneByIdList(List userIdList); } diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/SysMessageTaskService.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/SysMessageTaskService.java new file mode 100644 index 0000000..4dafcc9 --- /dev/null +++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/SysMessageTaskService.java @@ -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 { +} diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java index 2376693..b3f7240 100644 --- a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java +++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java @@ -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 memberList = memberService.listAll(); -// List 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 memberList = memberService.listAll(); +//// List 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 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 cids = listPushCidByPhone(phone); + uniPushService.sendPushAsync(sysMessage, cids); + } + } + + private List listPushCidByPhone(String phone) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("userPhone", phone); + List list = pushCidsMapper.selectList(qw); + List cids = new ArrayList<>(); + list.forEach(ent -> cids.add(ent.getGetuiCid())); + return cids; + } + + private List listPushCidByPhoneList(List phoneList) { + QueryWrapper qw = new QueryWrapper<>(); + qw.in("userPhone", phoneList); + List list = pushCidsMapper.selectList(qw); + List cids = new ArrayList<>(); + list.forEach(ent -> cids.add(ent.getGetuiCid())); + return cids; + } + + private List listPushCidAll() { + List list = pushCidsMapper.selectList(new QueryWrapper<>()); + List cids = new ArrayList<>(); + list.forEach(ent -> cids.add(ent.getGetuiCid())); + return cids; + } + + private void sendPushToList(SysMessage sysMessage, List userIdList) { + List phoneList = memberService.listPhoneByIdList(userIdList); + List cids = listPushCidByPhoneList(phoneList); + uniPushService.sendPushAsync(sysMessage, cids); + } + + private void sendPushToAll(SysMessage sysMessage) { + List cids = listPushCidAll(); + uniPushService.sendPushAsync(sysMessage, cids); + } } diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/UmsMemberServiceImpl.java b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/UmsMemberServiceImpl.java index 16703b1..882e507 100644 --- a/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/UmsMemberServiceImpl.java +++ b/mallplus-admin/src/main/java/com/zscat/mallplus/ums/service/impl/UmsMemberServiceImpl.java @@ -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 listAll() { return baseMapper.selectList(new QueryWrapper()); } + + @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 listPhoneByIdList(List userIdList) { + QueryWrapper qw = new QueryWrapper<>(); + qw.in("id", userIdList); + List memberList = baseMapper.selectList(qw); + List phoneList = new ArrayList<>(); + memberList.forEach(mem -> phoneList.add(mem.getUsername())); + return phoneList; + } + + } diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/unipush/UniPushService.java b/mallplus-admin/src/main/java/com/zscat/mallplus/unipush/UniPushService.java index 1207a87..0cf23b3 100644 --- a/mallplus-admin/src/main/java/com/zscat/mallplus/unipush/UniPushService.java +++ b/mallplus-admin/src/main/java/com/zscat/mallplus/unipush/UniPushService.java @@ -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 cids) { + ThreadUtil.execute(() -> sendPush(mess, cids)); + } + private void sendSingleMsg(PushMessage pushMessage, String cid, int index) { PushDTO pushDTO = new PushDTO(); pushDTO.setRequestId("" + System.currentTimeMillis() + index); @@ -235,7 +240,7 @@ public class UniPushService { Audience audience = new Audience(); audience.addCid(cid); pushDTO.setAudience(audience); - ApiResult>> apiResult = pushApi.pushToSingleByCid(pushDTO); + ApiResult>> apiResult = singlePushApi().pushToSingleByCid(pushDTO); if (apiResult.isSuccess()) { System.out.println(apiResult.getData()); } else { diff --git a/mallplus-mbg/src/main/java/com/zscat/mallplus/ums/entity/SysMessageTask.java b/mallplus-mbg/src/main/java/com/zscat/mallplus/ums/entity/SysMessageTask.java new file mode 100644 index 0000000..138721a --- /dev/null +++ b/mallplus-mbg/src/main/java/com/zscat/mallplus/ums/entity/SysMessageTask.java @@ -0,0 +1,90 @@ +package com.zscat.mallplus.ums.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +import java.io.Serializable; +import java.util.Date; + +@TableName("sys_message_task") +public class SysMessageTask implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + @TableField("user_id") + private Integer userId = 1; + /** + * 消息编码 + */ + private String code = "系统消息"; + /** + * 参数 + */ + private String params; + /** + * 内容 + */ + private String content; + private Date sendtime; + private int status = 0; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getParams() { + return params; + } + + public void setParams(String params) { + this.params = params; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Date getSendtime() { + return sendtime; + } + + public void setSendtime(Date sendtime) { + this.sendtime = sendtime; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } +} diff --git a/mallplus-mbg/src/main/java/com/zscat/mallplus/ums/mapper/SysMessageTaskMapper.java b/mallplus-mbg/src/main/java/com/zscat/mallplus/ums/mapper/SysMessageTaskMapper.java new file mode 100644 index 0000000..4cbc9ad --- /dev/null +++ b/mallplus-mbg/src/main/java/com/zscat/mallplus/ums/mapper/SysMessageTaskMapper.java @@ -0,0 +1,7 @@ +package com.zscat.mallplus.ums.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zscat.mallplus.ums.entity.SysMessageTask; + +public interface SysMessageTaskMapper extends BaseMapper { +} diff --git a/mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/mapper/PushCidsMapper.java b/mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/mapper/PushCidsMapper.java index dc13d74..374c603 100644 --- a/mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/mapper/PushCidsMapper.java +++ b/mallplus-mbg/src/main/java/com/zscat/mallplus/unipush/mapper/PushCidsMapper.java @@ -27,6 +27,7 @@ package com.zscat.mallplus.unipush.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zscat.mallplus.unipush.entity.PushCids; +import org.apache.ibatis.annotations.Mapper; /** * Project: mallplus
@@ -41,5 +42,6 @@ import com.zscat.mallplus.unipush.entity.PushCids; * @version 1.0 * @since 1.0 */ +@Mapper public interface PushCidsMapper extends BaseMapper { } diff --git a/mallplus-portal/src/main/java/com/zscat/mallplus/apirest/SysMessageRest.java b/mallplus-portal/src/main/java/com/zscat/mallplus/apirest/SysMessageRest.java index 44f29a3..de127b3 100644 --- a/mallplus-portal/src/main/java/com/zscat/mallplus/apirest/SysMessageRest.java +++ b/mallplus-portal/src/main/java/com/zscat/mallplus/apirest/SysMessageRest.java @@ -1,6 +1,7 @@ package com.zscat.mallplus.apirest; -import com.zscat.mallplus.oms.entity.OmsCartItem; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zscat.mallplus.ums.entity.SysMessage; import com.zscat.mallplus.ums.entity.UmsMember; import com.zscat.mallplus.ums.service.ISysMessageService; @@ -11,11 +12,8 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.math.BigDecimal; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; @RestController @Api(tags = "SysMessageRest", description = "系统消息") @@ -31,14 +29,17 @@ public class SysMessageRest { @ApiOperation("获取某个会员的消息列表") @RequestMapping(value = "/list", method = RequestMethod.GET) @ResponseBody - public Object list() { + public Object list( + @RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize, + @RequestParam(value = "pageNum", required = false, defaultValue = "1") Integer pageNum) { UmsMember umsMember = memberService.getNewCurrentMember(); - List list = new ArrayList<>(); + IPage page = new Page<>(pageNum, pageSize); if (umsMember != null && umsMember.getId() != null) { - list = messageService.listByUserId(umsMember.getId()); - return new CommonResult().success(list); + page = messageService.listPageByUserId(umsMember.getId(), page); + } else { + page = messageService.listPageOfSys(page); } - return new CommonResult().success(list); + return new CommonResult().success(page); } @ApiOperation("获取消息内容") diff --git a/mallplus-portal/src/main/java/com/zscat/mallplus/ums/service/ISysMessageService.java b/mallplus-portal/src/main/java/com/zscat/mallplus/ums/service/ISysMessageService.java index 2a53453..3a36f1e 100644 --- a/mallplus-portal/src/main/java/com/zscat/mallplus/ums/service/ISysMessageService.java +++ b/mallplus-portal/src/main/java/com/zscat/mallplus/ums/service/ISysMessageService.java @@ -1,5 +1,6 @@ package com.zscat.mallplus.ums.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.zscat.mallplus.ums.entity.SysMessage; @@ -18,4 +19,8 @@ public interface ISysMessageService extends IService { List listByUserId(Long userId); int updateStatus(SysMessage sysMessage); + + IPage listPageByUserId(Long id, IPage page); + + IPage listPageOfSys(IPage page); } diff --git a/mallplus-portal/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java b/mallplus-portal/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java index 708f9be..8a669e3 100644 --- a/mallplus-portal/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java +++ b/mallplus-portal/src/main/java/com/zscat/mallplus/ums/service/impl/SysMessageServiceImpl.java @@ -1,6 +1,7 @@ package com.zscat.mallplus.ums.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zscat.mallplus.ums.entity.SysMessage; import com.zscat.mallplus.ums.mapper.SysMessageMapper; @@ -34,4 +35,22 @@ public class SysMessageServiceImpl extends ServiceImpl listPageByUserId(Long userId, IPage page) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("store_id", 1); + qw.and(wrapper -> wrapper.eq("user_id", userId).or().eq("user_id", 1)); + qw.orderByDesc("ctime"); + return this.page(page, qw); + } + + @Override + public IPage listPageOfSys(IPage page) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("store_id", 1); + qw.eq("user_id", 1); + qw.orderByDesc("ctime"); + return this.page(page, qw); + } } diff --git a/mallplus-portal/src/main/java/com/zscat/mallplus/unipush/PushCidsService.java b/mallplus-portal/src/main/java/com/zscat/mallplus/unipush/PushCidsService.java index d8bf718..16d3eaf 100644 --- a/mallplus-portal/src/main/java/com/zscat/mallplus/unipush/PushCidsService.java +++ b/mallplus-portal/src/main/java/com/zscat/mallplus/unipush/PushCidsService.java @@ -94,9 +94,20 @@ public class PushCidsService extends ServiceImpl { public void unbindPhone(String cid) { if (StrUtil.isBlank(cid)) return; - UpdateWrapper uw = new UpdateWrapper<>(); - uw.set("userPhone", ""); - uw.eq("getuiCid", cid); - baseMapper.update(null, uw); + + PushCids pushCids = fetchByCid(cid); + if (pushCids != null) { + pushCids.setUserPhone(""); + baseMapper.updateById(pushCids); + } + } + + public PushCids fetchByCid(String cid) { + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("getuiCid", cid); + List list = baseMapper.selectList(qw); + if (list == null || list.isEmpty()) + return null; + return list.get(0); } } diff --git a/mallplusui-web-admin/src/api/ums/sysMessageTask.js b/mallplusui-web-admin/src/api/ums/sysMessageTask.js new file mode 100644 index 0000000..fb115fc --- /dev/null +++ b/mallplusui-web-admin/src/api/ums/sysMessageTask.js @@ -0,0 +1,83 @@ +import request from '@/utils/request' +export function fetchList(params) { + return request({ + url: '/ums/sysMessageTask/list', + method: 'get', + params: params + }) +} +export function createMessageTask(data) { + return request({ + url: '/ums/sysMessageTask/create', + method: 'post', + data: data + }) +} + +export function deleteMessageTask(id) { + return request({ + url: '/ums/sysMessageTask/delete/' + id, + method: 'get', + }) +} + + +export function updateShowStatus(data) { + return request({ + url: '/ums/sysMessageTask/update/showStatus', + method: 'post', + data: data + }) +} + +export function updateFactoryStatus(data) { + return request({ + url: '/ums/sysMessageTask/update/factoryStatus', + method: 'post', + data: data + }) +} + +export function getMember(id) { + return request({ + url: '/ums/sysMessageTask/' + id, + method: 'get', + }) +} + +export function updateMember(data) { + return request({ + url: '/ums/sysMessageTask/update', + method: 'post', + data: data + }) +} +export function updateMemberOrderInfo() { + return request({ + url: '/ums/sysMessageTask/updateMemberOrderInfo', + method: 'post' + }) +} + +export function fetchBlanceList(id) { + return request({ + url: '/ums/sysMessageTask/fetchBlanceList/' + id, + method: 'get', + }) +} + +export function handleEditBlance(data) { + return request({ + url: '/ums/sysMessageTask/handleEditBlance', + method: 'post', + data: data + }) +} + +export function handleEditIntegration(data) { + return request({ + url: '/ums/sysMessageTask/handleEditIntegration', + method: 'post', + data: data + }) +} diff --git a/mallplusui-web-admin/src/router/index.js b/mallplusui-web-admin/src/router/index.js index 876ceca..ce298b2 100644 --- a/mallplusui-web-admin/src/router/index.js +++ b/mallplusui-web-admin/src/router/index.js @@ -1140,8 +1140,15 @@ export const constantRouterMap = [{ icon: 'home' }, children: [ - - + { + path: 'sysMessageTask', + name: 'sysMessageTask', + component: () => import('@/views/ums/sysMessageTask/index'), + meta: { + title: '定时消息', + icon: 'product-list' + } + }, { path: 'member', name: 'member', diff --git a/mallplusui-web-admin/src/views/ums/member/index.vue b/mallplusui-web-admin/src/views/ums/member/index.vue index 325f5e4..8938171 100644 --- a/mallplusui-web-admin/src/views/ums/member/index.vue +++ b/mallplusui-web-admin/src/views/ums/member/index.vue @@ -211,12 +211,12 @@ 向账号为 {{msgOne.membername}} 的会员发送信息 - + @@ -234,12 +234,12 @@  向所选择的会员发送信息! - + @@ -257,12 +257,12 @@  向所有的会员发送信息! - + @@ -540,8 +540,8 @@ this.dialogVisibleMessSelect = false }, sendMessageToAll() { - this.msgOne.userId = null - this.msgOne.code = '云链助手' + this.msgOne.userId = 1 + this.msgOne.code = '系统消息' this.msgOne.params = '' this.msgOne.content = '' this.msgOne.membername = '' @@ -571,8 +571,8 @@ }, sendMessageToAllReset() { this.$refs['msgAllFrom'].resetFields(); - this.msgOne.userId = null - this.msgOne.code = '云链助手' + this.msgOne.userId = 1 + this.msgOne.code = '系统消息' this.msgOne.params = '' this.msgOne.content = '' this.msgOne.membername = '' diff --git a/mallplusui-web-admin/src/views/ums/sysMessageTask/index.vue b/mallplusui-web-admin/src/views/ums/sysMessageTask/index.vue new file mode 100644 index 0000000..c0cbfa6 --- /dev/null +++ b/mallplusui-web-admin/src/views/ums/sysMessageTask/index.vue @@ -0,0 +1,210 @@ + + +