栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

order-service服务 (3)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

order-service服务 (3)

1、pom.xml
    
        common-service
        com.southwind
        0.0.1-SNAPSHOT
    
 
        
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
            2.2.2.RELEASE
        

        
        
            org.apache.rocketmq
            rocketmq-spring-boot-starter
            2.1.0
        
        
            org.apache.rocketmq
            rocketmq-client
            4.7.0
        

        
        
            com.southwind
            common-service
            0.0.1-SNAPSHOT
        

        
        
            com.southwind
            repository-service
            0.0.1-SNAPSHOT
        
    

2、application.yml
server:
  port: 8082
  
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/uushop
    username: root
    password: 123456
    
  application:
    name: order-service
    
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: com/southwind/mapper/xml
      private String productName;

      
      private BigDecimal productPrice;

      
      private Integer productQuantity;

      
      private String productIcon;

      
        @TableField(fill = FieldFill.INSERT)
      private LocalDateTime createTime;

      
        @TableField(fill = FieldFill.INSERT_UPDATE)
      private LocalDateTime updateTime;


}

OrderMaster

@Data
  @EqualsAndHashCode(callSuper = false)
    public class OrderMaster implements Serializable {

    private static final long serialVersionUID=1L;

    @TableId(type = IdType.ASSIGN_UUID)
      private String orderId;

      
      private String buyerName;

      
      private String buyerPhone;

      
      private String buyerAddress;

      
      private Integer buyerOpenid;

      
      private BigDecimal orderAmount;

      
      private Integer orderStatus;

      
      private Integer payStatus;

      
        @TableField(fill = FieldFill.INSERT)
      private LocalDateTime createTime;

      
        @TableField(fill = FieldFill.INSERT_UPDATE)
      private LocalDateTime updateTime;


}

买家端 1、创建订单:前端把数据传过来

form–>OrderForm (接收前端传过来的数据)
基于注解校验

@Data
public class OrderForm {
    @NotEmpty(message = "买家姓名不能为空")
    private String name;
    @NotEmpty(message = "买家电话不能为空")
    private String phone;
    @NotEmpty(message = "收货地址不能为空")
    private String address;
    //ID---NotNull
    @NotNull(message = "买家ID不能为空")
    private Integer id;
    @NotEmpty(message = "商品信息不能空")
    private List items;
}

ProductForm

@Data
public class ProductForm {
    private Integer productId;
    private Integer productQuantity;
}

controller 层

@RestController
@RequestMapping("/buyer/order")
public class BuyerOrderController {

    @Autowired
    private OrderMasterService orderMasterService;

  //@RequestBody 接收前端传过来的数据
    @PostMapping("/create")
    public ResultVO create(@Valid @RequestBody OrderForm orderForm, BindingResult bindingResult){
        if(bindingResult.hasErrors()){
            throw new ShopException(ResponseEnum.ORDER_CREATE_ERROR.getMsg());
        }
        String orderId = this.orderMasterService.create(orderForm);
        if(orderId!=null) {
            Map map = new HashMap<>();
            map.put("orderId",orderId);
            return ResultVOUtil.success(map);
        }
        return ResultVOUtil.fail(null);
    }
}

service

public interface OrderMasterService extends IService {
   //创建订单
    public String create(OrderForm orderForm);
}

service–>Impl

@Service
public class OrderMasterServiceImpl extends ServiceImpl implements OrderMasterService {

    @Autowired
    private OrderMasterMapper orderMasterMapper;

    @Autowired
    private OrderDetailMapper orderDetailMapper;

    @Autowired
    private ProductFeign productFeign;

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    //添加到数据库(orderForm-->给orderMaster)
    @Override
    public String create(OrderForm orderForm) {
            //实体类
        OrderMaster orderMaster = new OrderMaster();
        orderMaster.setBuyerName(orderForm.getName());
        orderMaster.setBuyerPhone(orderForm.getPhone());
        orderMaster.setBuyerAddress(orderForm.getAddress());
        orderMaster.setBuyerOpenid(orderForm.getId());
            //0:数据库中的状态
        orderMaster.setOrderStatus(0);
        orderMaster.setPayStatus(0);
        //计算订单总价()
          // order 调用 pro单价*数量dunct(feign)List items = orderForm.getItems();
            //amount 计算总价
        BigDecimal amount = new BigDecimal(0);
        for (ProductForm item : items) {
            Integer productId = item.getProductId();
            //feign 调用
            BigDecimal pr000ice = this.productFeign.findPriceById(productId);
            // 单价*数量
            BigDecimal multiply = price.multiply(new BigDecimal(item.getProductQuantity()));
            amount = amount.add(multiply);
        }
        //总价
        orderMaster.setOrderAmount(amount);

        //从表--存储订单详情
        int insert = this.orderMasterMapper.insert(orderMaster);
        items = orderForm.getItems();
        for (ProductForm item : items) {
            //存储订单详情
            OrderDetail orderDetail = new OrderDetail();
            orderDetail.setProductQuantity(item.getProductQuantity());
            //feign 调用
            ProductInfo productInfo = this.productFeign.findById(item.getProductId());
            orderDetail.setProductIcon(productInfo.getProductIcon());
            orderDetail.setProductPrice(productInfo.getProductPrice());
            orderDetail.setProductName(productInfo.getProductName());
            orderDetail.setProductId(productInfo.getProductId());
            orderDetail.setOrderId(orderMaster.getOrderId());
            this.orderDetailMapper.insert(orderDetail);
        }
        //存入MQ
        this.rocketMQTemplate.convertAndSend("myTop","有新的订单");
        return orderMaster.getOrderId();
    }
    
}

Feign 接口调用 :计算订单总价(单价*数量)
【order-service 调用 produnct-service(单价)】

Feign—》ProductFeign

@FeignClient("product-service")
public interface ProductFeign {
      //product-service
    @GetMapping("/buyer/product/findPriceById/{id}")
    public BigDecimal findPriceById(@PathVariable("id")Integer id);
    
    @GetMapping("/buyer/product/findById/{id}")
    public ProductInfo findById(@PathVariable("id")Integer id);
}

注入到service层
启动类加:@EnableFeignClients

productInfo 实体类

@Data
@EqualsAndHashCode(callSuper = false)
public class ProductInfo implements Serializable {

    private static final long serialVersionUID=1L;

    @TableId(value = "product_id", type = IdType.AUTO)
    private Integer productId;

    
    private String productName;

    
    private BigDecimal productPrice;

    
    private Integer productStock;

    
    private String productDescription;

    
    private String productIcon;

    
    private Integer categoryType;

    
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    
    private Integer productStatus;


}

2、 通过Id查询订单列表(分页)

controller

@RestController
@RequestMapping("/buyer/order")
public class BuyerOrderController {

    @Autowired
    private OrderMasterService orderMasterService;
    
    @GetMapping("/list/{buyerId}/{page}/{size}")
    public ResultVO list(
            @PathVariable("buyerId") Integer buyerId,
            @PathVariable("page") Integer page,
            @PathVariable("size") Integer size
    ){
        //分页——page(mybatis 提供)
        Page page1 = new Page<>(page, size);
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("buyer_openid", buyerId);
        Page page2 = this.orderMasterService.page(page1, queryWrapper);
        // page2.getRecords()数据
        return ResultVOUtil.success(page2.getRecords());
    }
  }  
3、 查询订单详情

vo

@Data
public class OrderMasterVO {
    private String orderId;
    private String buyerName;
    private String buyerPhone;
    private String buyerAddress;
    private Integer buyerOpenid;
    private BigDecimal orderAmount;
    private Integer orderStatus;
    private Integer payStatus;
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
    private List orderDetailList;
}

@Data
public class OrderDetailVO {
    private String detailId;
    private String orderId;
    private Integer productId;
    private String productName;
    private BigDecimal productPrice;
    private Integer productQuantity;
    private String productIcon;
}

controller

@RestController
@RequestMapping("/buyer/order")
public class BuyerOrderController {

    @Autowired
    private OrderMasterService orderMasterService;
    @Autowired
    private OrderDetailService orderDetailService;

    @GetMapping("/detail/{buyerId}/{orderId}")
    public ResultVO detail(
            @PathVariable("buyerId") Integer buyerId,
            @PathVariable("orderId") String orderId
    ){
        //条件查询  QueryWrapper
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("buyer_openid", buyerId);
        queryWrapper.eq("order_id", orderId);
        OrderMaster one = this.orderMasterService.getOne(queryWrapper);
        //封装成 OrderMasterVO
        OrderMasterVO orderMasterVO = new OrderMasterVO();
        // one中的数据复制到 OrderMasterVO
        BeanUtils.copyProperties(one, orderMasterVO);
        
        //条件查询  OrderDetail
        QueryWrapper queryWrapper1 = new QueryWrapper<>();
        queryWrapper1.eq("order_id", orderId);
        List list = this.orderDetailService.list(queryWrapper1);
        List orderDetailVOList = new ArrayList<>();
        for (OrderDetail orderDetail : list) {
            OrderDetailVO orderDetailVO = new OrderDetailVO();
            BeanUtils.copyProperties(orderDetail, orderDetailVO);
            orderDetailVOList.add(orderDetailVO);
        }
        orderMasterVO.setOrderDetailList(orderDetailVOList);
        return ResultVOUtil.success(orderMasterVO);
    }
4 、取消订单

controller

@RestController
@RequestMapping("/buyer/order")
public class BuyerOrderController {
    @Autowired
    private OrderMasterMapper orderMasterMapper;
    
    @PutMapping("/cancel/{buyerId}/{orderId}")
    public ResultVO cancel(
            @PathVariable("buyerId") Integer buyerId,
            @PathVariable("orderId") String orderId
    ){
        Boolean cancel = this.orderMasterMapper.cancel(buyerId, orderId);
        if(cancel) return ResultVOUtil.success(null);
        return ResultVOUtil.fail(null);
    }

mapper 接口

public interface OrderMasterMapper extends BaseMapper {
    public Boolean cancel(Integer buyerId,String orderId);
   }

xml





    
        update order_master set order_status = 2 where buyer_openid=#{param1} and order_id=#{param2}
    
    

5、完成订单

controller

@RestController
@RequestMapping("/buyer/order")
public class BuyerOrderController {
    @Autowired
    private OrderMasterMapper orderMasterMapper;

     @PutMapping("/finish/{orderId}")
    public ResultVO finish(
            @PathVariable("orderId") String orderId
    ){
        Boolean cancel = this.orderMasterMapper.finish( orderId);
        if(cancel) return ResultVOUtil.success(null);
        return ResultVOUtil.fail(null);
    }

mapper 接口

public interface OrderMasterMapper extends BaseMapper {
   public Boolean finish(String orderId);
   }

xml





     
        update order_master set order_status = 1 where order_id=#{orderId}
    
    

6 、支付订单

controller

@RestController
@RequestMapping("/buyer/order")
public class BuyerOrderController {
    @Autowired
    private OrderMasterMapper orderMasterMapper;

   @PutMapping("/pay/{buyerId}/{orderId}")
    public ResultVO pay(
            @PathVariable("buyerId") Integer buyerId,
            @PathVariable("orderId") String orderId
    ){
        Boolean cancel = this.orderMasterMapper.pay(buyerId, orderId);
        if(cancel) return ResultVOUtil.success(null);
        return ResultVOUtil.fail(null);
    }

mapper 接口

public interface OrderMasterMapper extends BaseMapper {
   public Boolean finish(String orderId);
   }

xml





     
        update order_master set pay_status = 1 where buyer_openid=#{param1} and order_id=#{param2}
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/825991.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号