整体流程和涉及到的服务。
实现用户端实现核心部分代码:
@Override
public String remind(String orderNo, Long userId, String userName) {
MallOrder mallOrder = mallOrderMapper.selectByOrderNo(orderNo);
if (mallOrder != null) {
//验证是否是当前userId下的订单,否则报错
if (!userId.equals(mallOrder.getUserId())) {
return ServiceResultEnum.NO_PERMISSION_ERROR.getResult();
}
OrderRemind orderRemind = orderRemindMapper.selectByUserId(userId, mallOrder.getOrderId());
if(orderRemind!=null){
return ServiceResultEnum.ORDER_REMINDED.getResult();
}
orderRemind = new OrderRemind();
orderRemind.setOrderId(mallOrder.getOrderId());
orderRemind.setUserId(userId);
orderRemind.setUserName(userName);
orderRemind.setCreateTime(new Date());
orderRemind.setUpdateTime(new Date());
int flag = orderRemindMapper.insert(orderRemind);
if (flag > 0) {
//TODO: 给商家发站内信,商家登录后会给商家发送一条信息提示
return ServiceResultEnum.SUCCESS.getResult();
}
// TODO: 这里也可以改成消息队列,异步落库
}
return ServiceResultEnum.OPERATE_ERROR.getResult();
}
1、先校验订单是否存在
2、校验是否是当前用户的订单
3、校验是否已经提醒过商家
4、落库(可以直接落库,也可以使用消息队列异步落库)
5、给商家发站内信
商家端的实现:
商家收到站内信提示后,或商家进入用户提示栏,查看用户的提醒,然后去处理用户的提示,对该订单进行发货等处理。
于是一个电商项目的订单提醒功能就这么轻松的搞定了(todo部分代码大家可以自己去实现,我也会实现的,可以随时找我聊聊你是怎么实现的)。
电商项目正常流程都是能走通了,现在在不断完善代码和文档:
代码已上传到知识星球资料群,需要的自行下载。
欢迎大家加入我的知识性星球:java面试辅导