商品下单
This commit is contained in:
		@@ -5,7 +5,7 @@ import java.util.Optional;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public enum OrderStatus {
 | 
					public enum OrderStatus {
 | 
				
			||||||
    PENDING("Pending", "等待确认"),
 | 
					    PENDING("Pending", "等待确认"),
 | 
				
			||||||
    PROCESSING("Processing", "已支付,正在处理"),
 | 
					    PROCESSING("Processing", "已支付,等待发货中"),
 | 
				
			||||||
    SHIPPED("Shipped", "已发货,等待确认收货"),
 | 
					    SHIPPED("Shipped", "已发货,等待确认收货"),
 | 
				
			||||||
    DELIVERED("Delivered", "已送达"),
 | 
					    DELIVERED("Delivered", "已送达"),
 | 
				
			||||||
    CANCELLED("Cancelled", "已取消");
 | 
					    CANCELLED("Cancelled", "已取消");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -92,8 +92,8 @@ public class OrderController {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            OrderVO orderVO = orderService.getOrderById(orderId);
 | 
					            Order order = orderService.getOrderById(orderId);
 | 
				
			||||||
            if (orderVO == null) {
 | 
					            if (order == null) {
 | 
				
			||||||
                return Res.error("订单不存在");
 | 
					                return Res.error("订单不存在");
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            List<OrderDetailVO> orderDetailVOList = orderService.getOrderDetailById(orderId);
 | 
					            List<OrderDetailVO> orderDetailVOList = orderService.getOrderDetailById(orderId);
 | 
				
			||||||
@@ -105,7 +105,7 @@ public class OrderController {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            List<GoodVO> goodVOList = goodsService.listByIds(goodIdList);
 | 
					            List<GoodVO> goodVOList = goodsService.listByIds(goodIdList);
 | 
				
			||||||
            HashMap<String, Object> resultMap = new HashMap<>();
 | 
					            HashMap<String, Object> resultMap = new HashMap<>();
 | 
				
			||||||
            resultMap.put("order", orderVO);
 | 
					            resultMap.put("order", OrderVO.convertFrom(order));
 | 
				
			||||||
            resultMap.put("orderItem", orderDetailVOList);
 | 
					            resultMap.put("orderItem", orderDetailVOList);
 | 
				
			||||||
            resultMap.put("goods", goodVOList);
 | 
					            resultMap.put("goods", goodVOList);
 | 
				
			||||||
            return Res.success(resultMap);
 | 
					            return Res.success(resultMap);
 | 
				
			||||||
@@ -149,4 +149,40 @@ public class OrderController {
 | 
				
			|||||||
        map.put("orders", orderVOS);
 | 
					        map.put("orders", orderVOS);
 | 
				
			||||||
        return Res.success(map);
 | 
					        return Res.success(map);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @PostMapping("/miniprogram/payOrder")
 | 
				
			||||||
 | 
					    @ResponseBody
 | 
				
			||||||
 | 
					    public Res payOrder(@RequestBody JSONObject params) {
 | 
				
			||||||
 | 
					        Long orderId = params.getLong("orderId");
 | 
				
			||||||
 | 
					        if (orderId == null) {
 | 
				
			||||||
 | 
					            return Res.error("参数错误");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 查询订单详情
 | 
				
			||||||
 | 
					        Order order = orderService.getOrderById(orderId);
 | 
				
			||||||
 | 
					        if (order == null) {
 | 
				
			||||||
 | 
					            return Res.error("订单不存在");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        //判断是否可以支付
 | 
				
			||||||
 | 
					        OrderStatus orderStatus = OrderStatus.get(order.getOrderStatus());
 | 
				
			||||||
 | 
					        if (orderStatus != OrderStatus.PENDING) {
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        switch (orderStatus) {
 | 
				
			||||||
 | 
					            case PENDING:
 | 
				
			||||||
 | 
					                // 可以支付
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case PROCESSING:
 | 
				
			||||||
 | 
					                return Res.error("订单已支付,无需重复支付");
 | 
				
			||||||
 | 
					            case CANCELLED:
 | 
				
			||||||
 | 
					                return Res.error("订单已取消,无需重复支付");
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                return Res.error("当前订单状态无法支付");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 更新支付信息
 | 
				
			||||||
 | 
					        Boolean success = orderService.updateOrderStatus(orderId, OrderStatus.PROCESSING);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return Res.success(success ? "支付成功" : "支付失败");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,8 +53,14 @@ public interface OrderDao {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    int batchInsertOrderDetail(List<OrderDetail> details);
 | 
					    int batchInsertOrderDetail(List<OrderDetail> details);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 更新订单状态
 | 
					    /**
 | 
				
			||||||
    int updateOrderStatus(@Param("orderId") Integer orderId, @Param("status") String status);
 | 
					     * 更新订单状态
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param orderId
 | 
				
			||||||
 | 
					     * @param status
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    int updateOrderStatus(@Param("orderId") Long orderId, @Param("orderStatus") String orderStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // 根据订单 ID 删除订单信息及订单详情信息
 | 
					    // 根据订单 ID 删除订单信息及订单详情信息
 | 
				
			||||||
    int deleteOrderById(Long orderId);
 | 
					    int deleteOrderById(Long orderId);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,6 @@ import com.cxyxiaomo.epp.common.pojo.Order;
 | 
				
			|||||||
import com.cxyxiaomo.epp.common.pojo.OrderDetail;
 | 
					import com.cxyxiaomo.epp.common.pojo.OrderDetail;
 | 
				
			||||||
import com.cxyxiaomo.epp.common.utils.SnowflakeManager;
 | 
					import com.cxyxiaomo.epp.common.utils.SnowflakeManager;
 | 
				
			||||||
import com.cxyxiaomo.epp.common.vo.OrderDetailVO;
 | 
					import com.cxyxiaomo.epp.common.vo.OrderDetailVO;
 | 
				
			||||||
import com.cxyxiaomo.epp.common.vo.OrderVO;
 | 
					 | 
				
			||||||
import com.cxyxiaomo.epp.shop.dao.GoodsDao;
 | 
					import com.cxyxiaomo.epp.shop.dao.GoodsDao;
 | 
				
			||||||
import com.cxyxiaomo.epp.shop.dao.OrderDao;
 | 
					import com.cxyxiaomo.epp.shop.dao.OrderDao;
 | 
				
			||||||
import org.springframework.stereotype.Service;
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
@@ -89,13 +88,12 @@ public class OrderService {
 | 
				
			|||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param orderId
 | 
					     * @param orderId
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public OrderVO getOrderById(Long orderId) {
 | 
					    public Order getOrderById(Long orderId) {
 | 
				
			||||||
        Order order = orderDao.getOrderById(orderId);
 | 
					        Order order = orderDao.getOrderById(orderId);
 | 
				
			||||||
        if (order == null) {
 | 
					        if (order == null) {
 | 
				
			||||||
            return null;
 | 
					            return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        OrderVO orderVO = OrderVO.convertFrom(order);
 | 
					        return order;
 | 
				
			||||||
        return orderVO;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -122,4 +120,16 @@ public class OrderService {
 | 
				
			|||||||
        List<Order> orders = orderDao.listOrderByUserId(userId, orderStatus);
 | 
					        List<Order> orders = orderDao.listOrderByUserId(userId, orderStatus);
 | 
				
			||||||
        return orders;
 | 
					        return orders;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 更新订单状态
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param orderId
 | 
				
			||||||
 | 
					     * @param orderStatus
 | 
				
			||||||
 | 
					     * @return
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public Boolean updateOrderStatus(Long orderId, OrderStatus orderStatus) {
 | 
				
			||||||
 | 
					        int affectRows = orderDao.updateOrderStatus(orderId, orderStatus.getValue());
 | 
				
			||||||
 | 
					        return affectRows > 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,12 +47,13 @@
 | 
				
			|||||||
    <insert id="insertOrder" parameterType="com.cxyxiaomo.epp.common.pojo.Order" useGeneratedKeys="true"
 | 
					    <insert id="insertOrder" parameterType="com.cxyxiaomo.epp.common.pojo.Order" useGeneratedKeys="true"
 | 
				
			||||||
            keyProperty="orderId">
 | 
					            keyProperty="orderId">
 | 
				
			||||||
        INSERT INTO `order` (id, user_id, order_date, order_status, order_price)
 | 
					        INSERT INTO `order` (id, user_id, order_date, order_status, order_price)
 | 
				
			||||||
        VALUES (#{id}, #{userId}, #{orderDate,javaType=java.time.LocalDateTime,jdbcType=TIMESTAMP}, #{orderStatus}, #{orderPrice})
 | 
					        VALUES (#{id}, #{userId}, #{orderDate,javaType=java.time.LocalDateTime,jdbcType=TIMESTAMP}, #{orderStatus},
 | 
				
			||||||
 | 
					                #{orderPrice})
 | 
				
			||||||
    </insert>
 | 
					    </insert>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- 批量插入订单详情 -->
 | 
					    <!-- 批量插入订单详情 -->
 | 
				
			||||||
    <insert id="batchInsertOrderDetail" parameterType="java.util.List">
 | 
					    <insert id="batchInsertOrderDetail" parameterType="java.util.List">
 | 
				
			||||||
        INSERT INTO order_detail (order_id, good_id, good_count, unit_price)
 | 
					        INSERT INTO `order_detail` (order_id, good_id, good_count, unit_price)
 | 
				
			||||||
        VALUES
 | 
					        VALUES
 | 
				
			||||||
        <if test="list != null and list.size() > 0">
 | 
					        <if test="list != null and list.size() > 0">
 | 
				
			||||||
            <foreach collection="list" item="detail" separator=",">
 | 
					            <foreach collection="list" item="detail" separator=",">
 | 
				
			||||||
@@ -65,18 +66,19 @@
 | 
				
			|||||||
    </insert>
 | 
					    </insert>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <update id="updateOrderStatus" parameterType="com.cxyxiaomo.epp.common.pojo.Order">
 | 
					    <update id="updateOrderStatus" parameterType="com.cxyxiaomo.epp.common.pojo.Order">
 | 
				
			||||||
        UPDATE order
 | 
					        UPDATE `order`
 | 
				
			||||||
        SET order_status=#{orderStatus}
 | 
					        SET order_status = #{orderStatus}
 | 
				
			||||||
        WHERE order_id = #{orderId}
 | 
					        WHERE id = #{orderId} LIMIT 1
 | 
				
			||||||
    </update>
 | 
					    </update>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <!-- 根据订单 ID 删除订单信息及订单详情信息 -->
 | 
					    <!-- 根据订单 ID 删除订单信息及订单详情信息 -->
 | 
				
			||||||
    <delete id="deleteOrderById" parameterType="java.lang.Integer">
 | 
					    <delete id="deleteOrderById" parameterType="java.lang.Integer">
 | 
				
			||||||
        DELETE
 | 
					        DELETE
 | 
				
			||||||
        FROM order
 | 
					        FROM `order`
 | 
				
			||||||
        WHERE order_id = #{orderId};
 | 
					        WHERE id = #{orderId};
 | 
				
			||||||
        DELETE
 | 
					        -- 级联删除,无需手动删除订单详情
 | 
				
			||||||
        FROM goods_order_details
 | 
					--         DELETE
 | 
				
			||||||
        WHERE order_id = #{orderId};
 | 
					--         FROM goods_order_details
 | 
				
			||||||
 | 
					--         WHERE order_id = #{orderId};
 | 
				
			||||||
    </delete>
 | 
					    </delete>
 | 
				
			||||||
</mapper>
 | 
					</mapper>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -470,6 +470,43 @@
 | 
				
			|||||||
						}
 | 
											}
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					"response": []
 | 
										"response": []
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										"name": "[微服务] 小程序端支付订单",
 | 
				
			||||||
 | 
										"request": {
 | 
				
			||||||
 | 
											"method": "POST",
 | 
				
			||||||
 | 
											"header": [],
 | 
				
			||||||
 | 
											"body": {
 | 
				
			||||||
 | 
												"mode": "raw",
 | 
				
			||||||
 | 
												"raw": "{\r\n    \"userId\": 1,\r\n    \"orderList\": [\r\n        {\r\n            \"goodId\": 2,\r\n            \"count\": 3\r\n        },\r\n        {\r\n            \"goodId\": 3,\r\n            \"count\": 1\r\n        }\r\n    ]\r\n}",
 | 
				
			||||||
 | 
												"options": {
 | 
				
			||||||
 | 
													"raw": {
 | 
				
			||||||
 | 
														"language": "json"
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											},
 | 
				
			||||||
 | 
											"url": {
 | 
				
			||||||
 | 
												"raw": "http://localhost:8003/shop/order/miniprogram/payOrder?orderId=1749496012575215624",
 | 
				
			||||||
 | 
												"protocol": "http",
 | 
				
			||||||
 | 
												"host": [
 | 
				
			||||||
 | 
													"localhost"
 | 
				
			||||||
 | 
												],
 | 
				
			||||||
 | 
												"port": "8003",
 | 
				
			||||||
 | 
												"path": [
 | 
				
			||||||
 | 
													"shop",
 | 
				
			||||||
 | 
													"order",
 | 
				
			||||||
 | 
													"miniprogram",
 | 
				
			||||||
 | 
													"payOrder"
 | 
				
			||||||
 | 
												],
 | 
				
			||||||
 | 
												"query": [
 | 
				
			||||||
 | 
													{
 | 
				
			||||||
 | 
														"key": "orderId",
 | 
				
			||||||
 | 
														"value": "1749496012575215624"
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												]
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										"response": []
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			]
 | 
								]
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// pages/shop/myOrder.js
 | 
					// pages/shop/myOrder.js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const goodService = require("../../services/good")
 | 
					 | 
				
			||||||
const orderService = require("../../services/order")
 | 
					const orderService = require("../../services/order")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Page({
 | 
					Page({
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -112,10 +112,23 @@ Page({
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (res.confirm) {
 | 
					        if (res.confirm) {
 | 
				
			||||||
          wx.showToast({
 | 
					          (async () => {
 | 
				
			||||||
            title: '支付成功',
 | 
					            let payResult = await orderService.payOrder(this.data.orderId)
 | 
				
			||||||
            icon: 'success',
 | 
					            console.log("payResult", payResult)
 | 
				
			||||||
          })
 | 
					            wx.showModal({
 | 
				
			||||||
 | 
					              title: '支付结果',
 | 
				
			||||||
 | 
					              content: payResult,
 | 
				
			||||||
 | 
					              showCancel: false,
 | 
				
			||||||
 | 
					              complete: (res) => {
 | 
				
			||||||
 | 
					                wx.navigateBack({
 | 
				
			||||||
 | 
					                  delta: getCurrentPages().length - 1
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                wx.navigateTo({
 | 
				
			||||||
 | 
					                  url: "/pages/shop/orderDetail?orderId=" + this.data.orderId,
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					          })();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,3 +39,14 @@ export function listUserOrder(filter) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 订单支付 */
 | 
				
			||||||
 | 
					export function payOrder(orderId) {
 | 
				
			||||||
 | 
					  return send_request({
 | 
				
			||||||
 | 
					    url: '/shop/order/miniprogram/payOrder',
 | 
				
			||||||
 | 
					    method: "POST",
 | 
				
			||||||
 | 
					    data: {
 | 
				
			||||||
 | 
					      "orderId": orderId,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user