2019.6.19著
今天也是充满希望的一天。
早上经理就给了我一个问题,商品售后换货,商家审核前后,用户能否取消售后单?
经过测试得到的逻辑是,用户生成售后换货单,商家没有审核时,可以取消售后单,商家审核通过了,售后单无法取消。这是正常逻辑。
接下来说一下我的心得,我们来缕一缕关于商品售后的逻辑。
正常流程是:
1.当商家未发货时,用户生成售后单,在这期间用户可以取消售后单
2.商家审核通过,用户无法取消售后单
3.这时用户需要确认收货之后,才能申请售后。
4.在用户申请售后之后,用户发货有一个定时任务,时间期效以内需发货,不然售后单自动取消
5.用户发货之后,商家没有确认收货时,用户无法取消售后
6.商家确认收货,并重新发货。
7.用户确认收货,完成售后操作。
分支状态:当商家发货之后,用户需确认收货才可申请售后。
今天下午有学了个在页面比较时间戳大小的方法,给大家分享分享:
//当前时间戳与主非部件失效时间对比
if(new Date(obj.mainEndTime).getTime() < new Date().getTime() && new Date(obj.notMainEndTime).getTime() < new Date().getTime()){
sReturn = "无效";
}else {
sReturn = "有效";
}
还有一个bug是在页面导入第三方订单,可以导入重复订单,经过查询发现有校验的方法。
RetDTO billDto = thirdpartyOrderBill4WebApi.getAll();
List<ThirdpartyOrderBillDTO> thirdpartyOrderBilList = JSON.parseArray(billDto.getRetData(),ThirdpartyOrderBillDTO.class);
if (thirdpartyOrderBilList != null && thirdpartyOrderBilList.size() > 0) {
Map<String,List<ThirdpartyOrderBillDTO>> thirdpartyOrderBilMap = thirdpartyOrderBilList.stream().collect(Collectors.groupingBy(ThirdpartyOrderBillDTO::getChannelOrderId));
List<ThirdpartyOrderBillDTO> flagList = thirdpartyOrderBilMap.get(thirdpartyOrderBill.getChannelOrderId());
if (flagList != null && flagList.size() >0) {
errorMassage +="第"+(i+1)+"行渠道订单号已经对过账;";
continue;
}
}
}
通过api.getAll()方法也可以查询出数据来。
总结:当然这只是我自己总结的,市面上的售后流程也特别多,各有特色吧。最合理的还是,货物在运输的路上不允许用户操作售后申请,以免出现货丢,钱退的情况。代码的写法其实因人所亦,但是最后的结果却是一样的,实现功能才是第一步。