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 0000000..da79261 --- /dev/null +++ b/docs/xiugai/20230315/营销系统问题及修改20230318.docx @@ -0,0 +1,40 @@ + 管理后台,"商品管理"-"商品分类"页面。 + (已修改)列表中"导航栏"、"是否显示"、"是否首页显示"这些设置的作用是什么?如果没有用就先隐藏掉("是否显示"这个应该是控制是否在APP端显示该类别及其下级类别或该类别的商品)。 + (已修改)"设置"这一列中"转移商品"的作用?如果没有用先隐藏这个按钮。 + 新增二级分类,如果有同名的分类名称,数据会出错,需要加限定条件或修改增加保存的逻辑,不能出错。后台增加了类别,手机端是否可以实时看到新增或修改的分类。(经测试没发现增加类别出错的情况,增加同名的也可以正常显示。目前增加了限制,不允许有相同的类别名称) + 管理后台编辑商品后,在手机端查看该商品信息出错。(经测试未出现该问题,对之前出现该问题的数据进行分析,应该是最早录入的商品信息有附加的属性,现在的编辑页面简化了,造成属性值丢失出现的问题。目前新增商品不会再出现该问题) + (已修改)手机端优惠券金额显示不正确,应该是2位小数。 + + (已修改)使用优惠券支付时,付款金额显示不正确。 + + + (已修改)优惠券限领数量无效。限领2张,只能领取1张。 + (已修改)管理后台,新增优惠券。优惠券类型的选择和适用平台的选择都去掉,并且默认类型为"全场赠券",默认适用平台为"全平台"。 + (已修改)手机端注册问题较多,注册成功提示"该用户已经存在",已有手机号再次注册也可以成功。注册成功提示密码不正确无法登录等各种情况都有。这一部分需要详细、全面的认真进行一次测试,保证流程以及提示信息正确。 + (已修改)管理后台,"订单管理"-"发货列表"页面的作用不明确,先屏蔽掉。 + (已修改)管理后台,"运营管理"-"广告列表"页面,搜索功能无效,去掉列表中"广告位置"、"点击次数"、"生成订单"这些列。添加广告不选广告位置(默认设置为Android首页轮播) + (已修改)社区管理-社区列表页面,查询功能无效。取货点页面查询功能无效,取货点页面屏蔽"导出"、"导入"按钮。取货点页面列表的表名不正确。 + (已修改)APP端,已经过期的优惠券应该归到已失效里边。 + 手机端领取优惠券是否可以一键全部领取(该需求待讨论) + 待支付的订单取消后优惠券不回退。用户使用优惠券下单,未支付或支付失败的情况,该订单还有效,处于待支付状态,APP端可以继续完成支付操作。在待支付状态用户可以主动取消订单,或者超过支付等待时间(20分钟)订单自动失效,订单失效需要将未使用的优惠券回退。 + 系统增加退单流程。会员下单24小时内可退货,退货退款原路返回(退回支付宝或微信,需要调用支付宝或微信的退款接口)。24小时后,自动设置为已发货状态(待收货),不可以退货退款。在管理后台订单列表页面,"待发货"这一栏中,点击"订单发货"按钮,订单状态变为"待收货"状态,也不可以退货退款。 + 收货(提货)的流程和操作。在管理后台订单列表页面的"待收货"列表,增加"已收货"按钮,将订单状态改为交易完成。在APP端用户可以点击"收货"按钮,同样完成收货操作。后台记录收货时间以及是客户操作还是后台人员操作。 + 在订单列表,可以通过下单日期时间段、取货点、分类(订单状态)、用户信息等进行过滤查询,查询结果需要能够导出到Excel。导出字段包括:下单日期,手机号,用户名,商品名称,价格,数量,自提点,订单状态等。 + 增加订单归集统计页面,对于商品待发货、已发货、已完成订单统计列表。 + (1)全部提货点的商品订单统计。 + (2)各个提货点的商品订单统计。 + (3)各个提货点对应到人的订单统计。 + 后台管理,发货界面加一个批量发货(该需求待讨论) + 完整的购买、下单、收货流程 + 用户在APP端浏览商品,选择下单,生成订单(订单状态为待付款)。下单前惠农会员可以先领优惠券。 + 会员通过微信或支付宝付款成功(订单状态为待发货)。会员取消付款或订单超过20分钟未付款,订单设置为已关闭状态,优惠券退回。待发货24小时之内如果订单状态没改变(还没发货),用户可以取消订单,停止发货,款项原路退回,优惠券失效,订单为已关闭状态。 + 工作人员在后台待发货列表点击"发货",或者待发货状态超过24小时,订单状态改为"待收货",不可以再退货。后台发送消息通知:7日内到取货点取货。 + 订单在待收货状态,用户可以到取货点取货,工作人员根据手机号查询对应订单及货物交付给用户,用户可以在APP端点击"取货"完成取货操作或者工作人员在待收货列表点击"已取货"按钮状对应订单设置为已经取货状态,交易完成。在待收货列表,可以针对未取货的订单用户发送消息通知或电话联系。 + 消息通知,增加消息通知设置页面,设定日期时间、通知标题、通知内容。后台程序在设定的日期时间将通知内容发送给全部用户。现在的消息通知功能为系统发送信息到用户手机APP信息界面,用户在信息界面查看消息通知内容。 + +2023-03-18 +有两个确定的需求需要更新一下,其他的还要跟业务再讨论 +1.优惠券的批量领取 +2.购买商品时如果有符合使用的优惠券,自动选取优惠券 + + diff --git a/mallplus-admin/src/main/java/com/zscat/mallplus/oms/service/impl/OmsOrderServiceImpl.java b/mallplus-admin/src/main/java/com/zscat/mallplus/oms/service/impl/OmsOrderServiceImpl.java index 3440d56..2234ffa 100644 --- a/mallplus-admin/src/main/java/com/zscat/mallplus/oms/service/impl/OmsOrderServiceImpl.java +++ b/mallplus-admin/src/main/java/com/zscat/mallplus/oms/service/impl/OmsOrderServiceImpl.java @@ -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 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 @@ + + +