SysResult
一般后端业务处理完成之后,需要给客户端返回有效信息,告知客户端程序执行是否正确

@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class SysResult {
 private Integer status;
 private String msp;//服务器提示信息 成功 失败
 private Object data;//服务器返回值数据
 //利用static的静态方法 将数据动态返回
 public static SysResult fail(){
 return new SysResult(201,"业务执行失败",null);
 }
 public static SysResult success(){
 return new SysResult(200,"业务执行成功",null);
 }
 public static SysResult success(Object data){
 return new SysResult(200,"业务执行成功",data);
 }
 public static SysResult success(String msp,Object data){
 return new SysResult(200,msp,data);
 }
}

ThreadLocal 从表面上看ThreadLocal相当于维护了一个map,key就是当前的线程,value就是需要存储的对象。threadlocal而是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只有指定线程可以得到存储数据

public class UserThreadLocal {
 private static ThreadLocal<User>threadLocal=new ThreadLocal<User>();
 public static void set(User user){
 threadLocal.set(user);
 }
 public static void remove(){
 threadLocal.remove();
 }
 public static User get(){
 return threadLocal.get();
 }
}

订单pojo

import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
@TableName("tb_order")
@Data
@Accessors(chain=true)
public class Order extends BasePojo{
 @TableField(exist=false) //入库操作忽略该字段
 private OrderShipping orderShipping;
 //封装订单商品信息  一对多
 @TableField(exist=false) //入库操作忽略该字段
 private List<OrderItem> orderItems;
 @TableId
 private String orderId;
 private String payment;
 private Integer paymentType;
 private String postFee;
 private Integer status;
 private Date paymentTime;
 private Date consignTime;
 private Date endTime;
 private Date closeTime;
 private String shippingName;
 private String shippingCode;
 private Long userId;
 private String buyerMessage;
 private String buyerNick;
 private Integer buyerRate;
}

订单商品pojo

import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
@TableName("tb_order_item")
@Data
@Accessors(chain=true)
public class OrderItem extends BasePojo{
 @TableId(type = IdType.AUTO)
 private String itemId;
  
 private String orderId;
 private Integer num;
 private String title;
 private Long price;
 private Long totalFee;
 private String picPath;
}

订单物流pojo

import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;
@TableName("tb_order_shipping")
@Data
@Accessors(chain=true)
public class OrderShipping extends BasePojo{
 @TableId
 private String orderId;
 private String receiverName;
 private String receiverPhone;
 private String receiverMobile;
 private String receiverState;
 private String receiverCity;
 private String receiverDistrict;
 private String receiverAddress;
 private String receiverZip;
  }

完成提交订单

 @RequestMapping("submit")
 @ResponseBody
public SysResult submit(Order order){
 Long userId = UserLocalThread.get().getId();
 order.setUserId(userId);
 String orderId=dubboOrderService.saveOrder(order);
 if(StringUtils.isEmpty(orderId)){
 return SysResult.fail();
 }else {
 return SysResult.success(orderId);
 }
 }
@Autowired
private OrderMapper orderMapper;
@Autowired
private OrderShippingMapper orderShippingMapper;
@Autowired
private OrderItemMapper orderItemMapper;
 @Override
 public String saveOrder(Order order) {
 //1.拼接orderID =用户id加时间戳
 String orderId=order.getUserId()+""+System.currentTimeMillis();
 order.setOrderId(orderId).setStatus(1);
 int i = orderMapper.insert(order);//订单入库
 //完成订单物流入库
 OrderShipping orderShipping = order.getOrderShipping();
 orderShipping.setOrderId(orderId);//订单物流添加订单id
 orderShippingMapper.insert(orderShipping);
 //完成订单商品入库
 List<OrderItem>orderItems=order.getOrderItems();
 for (OrderItem orderItem:orderItems){
 orderItem.setOrderId(orderId);
 orderItemMapper.insert(orderItem);
 System.out.println("商品入库成功");
 }
 return orderId;
 }

实现image.png

@RequestMapping("success")
 public String success(String id,Model model){
 Order order = dubboOrderService.findOrderById(id);
 model.addAttribute("order",order);
 return "success";
}
@Override
public Order findOrderById(String id) {
 //1.查询订单信息
 Order order = orderMapper.selectById(id);
 //2.查询物流信息
 OrderShipping orderShipping = orderShippingMapper.selectById(id);
 //3.查询订单商品
 QueryWrapper<OrderItem>queryWrapper=new QueryWrapper<>();
 queryWrapper.eq("order_id",id);
 List<OrderItem> orderItems = orderItemMapper.selectList(queryWrapper);
 return order.setOrderItems(orderItems).setOrderShipping(orderShipping);
}

Silver
13 声望11 粉丝

« 上一篇
application.yml
下一篇 »
拦截器