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;
}
实现
@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);
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。