diff --git a/README.md b/README.md index 21504d68df60b82b60b7da341c4e504c3b6447e8..758e9a691af090024e270680a898cabbf49d4b69 100644 --- a/README.md +++ b/README.md @@ -24,3 +24,7 @@ state 0 待付款 1 待发货订单 2待收货订单 3待评价订单 4 交易 ```html 历史记录 shop_history表usrname字段由手机号变更为userid ``` +##### 2019/12/15 09:39 by yonyong +```html +订单表 shop_order表comment1字段用作付款时间 +``` diff --git a/src/main/java/com/hxtec/polaris/commons/constant/GlobalVar.java b/src/main/java/com/hxtec/polaris/commons/constant/GlobalVar.java index b778e8075f0fe9c75e0c6bcaf8f9413b024bfb48..9ac404ed4526cf88e3b34c4c53b695300e6b1cce 100644 --- a/src/main/java/com/hxtec/polaris/commons/constant/GlobalVar.java +++ b/src/main/java/com/hxtec/polaris/commons/constant/GlobalVar.java @@ -38,4 +38,21 @@ public final class GlobalVar { public final static String TOURIST = "tourist"; //历史记录保存条数 public final static int HISTORY_ROWS = 30; + + //订单状态管理 state 0 待付款 1 待发货订单 2待收货订单 3待评价订单 4 交易成功订单 5 已关闭订单 + //待付款 + public static final int ORDER_PAYING = 0; + //待发货 + public static final int ORDER_SHIPING = 1; + //待收货 + public static final int ORDER_RECIIVEING = 2; + //待评价 + public static final int ORDER_REPLYING = 3; + //交易成功 + public static final int ORDER_SUCCESS = 4; + //已关闭 + public static final int ORDER_CLOSED = 5; + + //延时收货时间 默认为3天 + public static final int DELAY_TIME = 3; } diff --git a/src/main/java/com/hxtec/polaris/commons/tasks/OrderCheckTask.java b/src/main/java/com/hxtec/polaris/commons/tasks/OrderCheckTask.java new file mode 100644 index 0000000000000000000000000000000000000000..d2110dbc6b0c572b6f723debb694ab258203fc78 --- /dev/null +++ b/src/main/java/com/hxtec/polaris/commons/tasks/OrderCheckTask.java @@ -0,0 +1,36 @@ +package com.hxtec.polaris.commons.tasks; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +/** + * @Describtion 订单相关的任务 + * @Author yonyong + * @Date 2019/12/16 15:23 + * @Version 1.0.0 + **/ +@Component +public class OrderCheckTask { + + private static final Logger logger = LoggerFactory.getLogger(OrderCheckTask.class); + + /** + * 订单自动完成 针对已确认收货的订单/待评价订单 每日0点执行 + */ + @Scheduled(cron = "0 0 0 * * ? ") + public void completeOrder(){ + logger.info("订单自动完成start"); + logger.info("订单自动完成end"); + } + + /** + * 订单自动确认已收货 + */ + @Scheduled(cron = "0 0 0 * * ? ") + public void confirmReceive(){ + logger.info("订单自动确认收货start"); + logger.info("订单自动确认收货end"); + } +} diff --git a/src/main/java/com/hxtec/polaris/controller/OrderController.java b/src/main/java/com/hxtec/polaris/controller/OrderController.java index b37fbdf9b5091da62d2566fa6e4274a95942b1ce..37c3863c5d0ef1d7564bea72e85cf6ee48990b29 100644 --- a/src/main/java/com/hxtec/polaris/controller/OrderController.java +++ b/src/main/java/com/hxtec/polaris/controller/OrderController.java @@ -2,6 +2,7 @@ package com.hxtec.polaris.controller; import com.hxtec.polaris.commons.api.vo.Result; import com.hxtec.polaris.entity.ShopAddress; +import com.hxtec.polaris.entity.ShopOrder; import com.hxtec.polaris.service.OrderService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; @@ -33,14 +34,14 @@ public class OrderController { @GetMapping("getOrder") public Object getOrder(Integer state, Integer pageNow, Integer rows){ return orderService.getOrder(state,pageNow,rows); } - @PostMapping("cancel") - public Object cancelOrder(){ - return null; + @PutMapping("cancelOrder") + public Object cancelOrder(ShopOrder shopOrder){ + return orderService.cancelOrder(shopOrder); } - @DeleteMapping("delete") - public Object deleteOrder(){ - return null; + @DeleteMapping("deleteOrder") + public Object deleteOrder(ShopOrder shopOrder){ + return orderService.deleteOrder(shopOrder); } @PostMapping("pay") @@ -53,6 +54,25 @@ public class OrderController { return null; } + /** + * 延时收货 + * @param shopOrder + * @return + */ + @PutMapping("extendedReceipt") + public Object extendedReceipt(ShopOrder shopOrder){ + return orderService.extendedReceipt(shopOrder); + } + + /** + * 确认收货 + * @param shopOrder + * @return + */ + @PutMapping("confirmReceipt") + public Object confirmReceipt(ShopOrder shopOrder){ + return orderService.confirmReceipt(shopOrder); + } @PostMapping("submitOrder") public Result submitOrder(@RequestBody ShopAddress shopAddress) { diff --git a/src/main/java/com/hxtec/polaris/mapper/ShopOrderMapper.java b/src/main/java/com/hxtec/polaris/mapper/ShopOrderMapper.java index 4155e22c16e7f131688ad553a958a4da64a759b0..0d2adbd0bd4ad0b5b9fed9d5579bf4d5e5d530ee 100644 --- a/src/main/java/com/hxtec/polaris/mapper/ShopOrderMapper.java +++ b/src/main/java/com/hxtec/polaris/mapper/ShopOrderMapper.java @@ -4,6 +4,7 @@ import com.hxtec.polaris.entity.ShopOrder; import org.apache.ibatis.annotations.Param; import tk.mybatis.mapper.MyMapper; +import java.util.Date; import java.util.List; import java.util.Map; @@ -36,4 +37,39 @@ public interface ShopOrderMapper extends MyMapper { List> getOrderItemsByOneOrder(@Param("uid") String userAccount,@Param("orderId") Integer orderId); Map getPriceByOrderId(@Param("oid") int oid,@Param("uid") String userid); + + /** + * 延时收货 + * @param id 订单id + * @param uid 用户id + * @param delayTime 延时时间 + * @param date 更新时间 + */ + void doExtendReceipt(@Param("oid") Integer id, @Param("uid") String uid, @Param("delayTime") int delayTime, @Param("updatetime") Date date); + + /** + * 确认收货 将state改为3 待评价状态 + * @param id 订单id + * @param s 用户id + * @param state 收货后的订单状态 3 + * @param date 更新时间 + */ + void doConfirmReceipt(@Param("oid") Integer id, @Param("uid") String s,@Param("state") int state,@Param("updatetime") Date date); + + /** + * 删除订单 将is_delete改为Y + * @param id 订单id + * @param uid 用户id + * @param date 更新时间 + */ + void doDeleteOrder(@Param("oid")Integer id, @Param("uid")String uid,@Param("updatetime")Date date); + + /** + * 确认收货 将state改为5 已关闭状态状态 + * @param id 订单id + * @param s 用户id + * @param state 收货后的订单状态 5 + * @param date 更新时间 + */ + void doCancelOrder(@Param("oid") Integer id, @Param("uid") String s,@Param("state") int state,@Param("updatetime") Date date); } \ No newline at end of file diff --git a/src/main/java/com/hxtec/polaris/service/OrderService.java b/src/main/java/com/hxtec/polaris/service/OrderService.java index 0d6d4051f304fc4cb7b0b062c9f1d244b20f42b5..88b09d97731c1a23e5ff2d35c81008c804f43e6a 100644 --- a/src/main/java/com/hxtec/polaris/service/OrderService.java +++ b/src/main/java/com/hxtec/polaris/service/OrderService.java @@ -31,5 +31,38 @@ public interface OrderService { Optional getOne(String orderId); + /** + * 根据订单号获取订单价格及除了商品其它所有的相关的信息 + * @param oid + * @return + */ Object getPrice(int oid); + + /** + * 延时收货 + * @param shopOrder + * @return + */ + Object extendedReceipt(ShopOrder shopOrder); + + /** + * 确认收货 + * @param shopOrder + * @return + */ + Object confirmReceipt(ShopOrder shopOrder); + + /** + * 删除订单 + * @param shopOrder + * @return + */ + Object deleteOrder(ShopOrder shopOrder); + + /** + * 取消订单 + * @param shopOrder + * @return + */ + Object cancelOrder(ShopOrder shopOrder); } diff --git a/src/main/java/com/hxtec/polaris/service/impl/OrderServiceImpl.java b/src/main/java/com/hxtec/polaris/service/impl/OrderServiceImpl.java index 5d869f109924d1432cf68fe3a6a081f421e5842f..f361f07801eb1a3158970d48333a95af4aa0f688 100644 --- a/src/main/java/com/hxtec/polaris/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/hxtec/polaris/service/impl/OrderServiceImpl.java @@ -2,6 +2,7 @@ package com.hxtec.polaris.service.impl; import com.hxtec.polaris.commons.api.vo.Result; import com.hxtec.polaris.commons.constant.Code; +import com.hxtec.polaris.commons.constant.GlobalVar; import com.hxtec.polaris.commons.constant.Log; import com.hxtec.polaris.commons.constant.Msg; import com.hxtec.polaris.commons.contants.CommonContants; @@ -48,6 +49,11 @@ public class OrderServiceImpl implements OrderService{ private final static String LOG_CLASS_NAME = "OrderServiceImpl"; private final static String LOG_METHOD_GET_ORDER = "getOrder"; + private final static String LOG_METHOD_GET_PRICE = "getPrice"; + private final static String LOG_METHOD_EXTEND_RECEIVE = "extendedReceipt"; + private final static String LOG_METHOD_CONFIRM_RECEIVE = "confirmReceipt"; + private final static String LOG_METHOD_DELETE_ORDER = "deleteOrder"; + private final static String LOG_METHOD_CANCEL_ORDER = "cancelOrder"; @Resource private ShopOrderItemMapper shopOrderItemMapper; @@ -178,11 +184,109 @@ public class OrderServiceImpl implements OrderService{ return Result.ok(orderMap); }catch (Exception e){ String params = "oid="+oid; - String LOG_MSG = MessageFormat.format(Log.PATTERN_LOG,Log.DELETE,LOG_CLASS_NAME,LOG_METHOD_GET_ORDER,params); + String LOG_MSG = MessageFormat.format(Log.PATTERN_LOG,Log.QUERY,LOG_CLASS_NAME,LOG_METHOD_GET_PRICE,params); + throw new MyException(Result.error(Code.FAIL_4601, Msg.COMMON_FAIL),LOG_MSG); + } + } + + @Override + public Object extendedReceipt(ShopOrder shopOrder) { + try{ + doExtendReceipt(shopOrder); + return Result.ok(); + }catch (Exception e){ + String params = "shopOrder="+shopOrder.toString(); + String LOG_MSG = MessageFormat.format(Log.PATTERN_LOG,Log.UPDATE,LOG_CLASS_NAME,LOG_METHOD_EXTEND_RECEIVE,params); throw new MyException(Result.error(Code.FAIL_4601, Msg.COMMON_FAIL),LOG_MSG); } } + @Override + public Object confirmReceipt(ShopOrder shopOrder) { + try{ + doConfirmReceipt(shopOrder); + return Result.ok(); + }catch (Exception e){ + String params = "shopOrder="+shopOrder.toString(); + String LOG_MSG = MessageFormat.format(Log.PATTERN_LOG,Log.UPDATE,LOG_CLASS_NAME,LOG_METHOD_CONFIRM_RECEIVE,params); + throw new MyException(Result.error(Code.FAIL_4601, Msg.COMMON_FAIL),LOG_MSG); + } + } + + @Override + public Object deleteOrder(ShopOrder shopOrder) { + try{ + doDeleteOrder(shopOrder); + return Result.ok(); + }catch (Exception e){ + String params = "shopOrder="+shopOrder.toString(); + String LOG_MSG = MessageFormat.format(Log.PATTERN_LOG,Log.DELETE,LOG_CLASS_NAME,LOG_METHOD_DELETE_ORDER,params); + throw new MyException(Result.error(Code.FAIL_4601, Msg.COMMON_FAIL),LOG_MSG); + } + } + + @Override + public Object cancelOrder(ShopOrder shopOrder) { + try{ + doCancelOrder(shopOrder); + return Result.ok(); + }catch (Exception e){ + String params = "shopOrder="+shopOrder.toString(); + String LOG_MSG = MessageFormat.format(Log.PATTERN_LOG,Log.UPDATE,LOG_CLASS_NAME,LOG_METHOD_CANCEL_ORDER,params); + throw new MyException(Result.error(Code.FAIL_4601, Msg.COMMON_FAIL),LOG_MSG); + } + } + + /** + * 执行订单取消 state设置为5 已关闭状态 + * @param shopOrder + */ + private void doCancelOrder(ShopOrder shopOrder) { + //只有待付款情况下才可以取消订单 + if (shopOrder.getState() == GlobalVar.ORDER_PAYING){ + //执行更新 + shopOrderMapper.doCancelOrder(shopOrder.getId(),String.valueOf(userService.getUserInfo().getId()),GlobalVar.ORDER_CLOSED,new Date()); + } + } + + /** + * 执行订单删除 isdeleted Y + * @param shopOrder + */ + private void doDeleteOrder(ShopOrder shopOrder) { + //只有订单状态为已关闭(5)、待评价(3)、交易完成(4)情况下才可以延时收货 + if (shopOrder.getState() == GlobalVar.ORDER_CLOSED + || shopOrder.getState() == GlobalVar.ORDER_REPLYING + || shopOrder.getState() == GlobalVar.ORDER_SUCCESS){ + //执行更新 + shopOrderMapper.doDeleteOrder(shopOrder.getId(),String.valueOf(userService.getUserInfo().getId()),new Date()); + } + } + + /** + * 执行确认收货 + * @param shopOrder + */ + private void doConfirmReceipt(ShopOrder shopOrder) { + //只有待收货情况下才可以确认收货 + if (shopOrder.getState() == GlobalVar.ORDER_RECIIVEING){ + //执行更新 + shopOrderMapper.doConfirmReceipt(shopOrder.getId(),String.valueOf(userService.getUserInfo().getId()),GlobalVar.ORDER_REPLYING,new Date()); + } + } + + /** + * 执行延时收货 + * @param shopOrder + */ + private void doExtendReceipt(ShopOrder shopOrder) { + //只有待收货情况下才可以延时收货 + if (shopOrder.getState() == GlobalVar.ORDER_RECIIVEING){ + //执行更新 + shopOrderMapper.doExtendReceipt(shopOrder.getId(),String.valueOf(userService.getUserInfo().getId()),GlobalVar.DELAY_TIME,new Date()); + } + } + private void saveOrder(ShopOrder shopOrder) { //订单表 shopOrderMapper.insertSelective(shopOrder); diff --git a/src/main/resources/mapper/ShopOrderMapper.xml b/src/main/resources/mapper/ShopOrderMapper.xml index f6bb2e2c3d219a3f6fa3fa6e1b3291a9007f18e2..eb87535df5cf2084f482533ecfe29ad685a900b3 100644 --- a/src/main/resources/mapper/ShopOrderMapper.xml +++ b/src/main/resources/mapper/ShopOrderMapper.xml @@ -37,6 +37,30 @@ * + + UPDATE shop_order + set auto_confirm_day = auto_confirm_day+#{delayTime},update_time=#{updatetime} + where id=#{oid} and member_id=#{uid} and auto_confirm_day = 7 and state = 2 and (isnull(is_delete) or is_delete!='Y') + + + + UPDATE shop_order + set state = #{state},update_time=#{updatetime} + where id=#{oid} and member_id=#{uid} and state = 2 and (isnull(is_delete) or is_delete!='Y') + + + + UPDATE shop_order + set state = #{state},update_time=#{updatetime} + where id=#{oid} and member_id=#{uid} and state = 0 and (isnull(is_delete) or is_delete!='Y') + + + + UPDATE shop_order + set is_delete='Y',update_time=#{updatetime} + where id=#{oid} and member_id=#{uid} and (state = 3 || state = 4 || state = 5) and (isnull(is_delete) or is_delete!='Y') + +