由于没有微信公众号,所以学到支付就走不下去了
建表相关:
create table `product_info`(
`product_id` varchar(32) not null,
`product_name` varchar(64) not null comment '商品名称',
`product_price` decimal(8,2) not null comment '单价',
`product_stock` int not null comment '库存',
`product_description` varchar(64) comment '描述',
`product_ico` varchar(512) comment '小图',
`product_status` tinyint(3) default '0' comment '商品状态,0正常1下架'
`category_type` int not null comment '类目编号',
`create_time` timestamp not null default current_timestamp comment '创建时间',
`update_time` timestamp not null default current_timestamp on update current_timestamp comment '修改时间',
primary key(`product_id`)
)comment '商品表';
# 自动创建时间,更新时间 配合@DynamicUpdate(实体类上)与jpa使用
jpa的使用
public interface OrderMasterRepository extends JpaRepository<OrderMaster,String> {
Page<OrderMaster> findByBuyerOpenid(String buyerOpenid, Pageable pageable);
}
枚举
根据需要定义多个枚举,如订单状态可为一个,支付状态可为一个,不要把所有状态定义在一个枚举里面
jpa分页
public interface OrderMasterRepository extends JpaRepository<OrderMaster,String> {
Page<OrderMaster> findByBuyerOpenid(String buyerOpenid, Pageable pageable);
}
controller:接受 page,size:
PageRequest pageRequest = new PageRequest(page,size);
Page<OrderDTO> orderDTOPage = orderService.findList(openid, pageRequest);
DTO
根据需要定义DTO在业务中传递
控制时间磋长度:
public class Date2LongSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeNumber(date.getTime()/1000);
}
}
然后在传输类变量中使用,
@JsonSerialize(using = Date2LongSerializer.class)
private Date createTime;
效果 :时间缩短3位
返回 json
public class ProductVO {
@JsonProperty("name")
private String categoryName;
@JsonProperty("type")
private Integer categoryType;
@JsonProperty("foods")
private List<ProductInfoVO> productInfoVOList;
}
json返回字段 则是:
name
type
foods
去掉返回json中为null字段的显示
spring:
jackson:
default-property-inclusion: non_null
对象的copy
把orderMaster对象中的字段值复制到orderDTO的 字段中(只会复制相同名称的变量里面的值)
BeanUtils.copyProperties(orderMaster,orderDTO);
表单验证controller这样接受判断
public ResultVO<Map<String,String>>create(@Valid OrderForm orderForm,
BindingResult bindingResult){
Map<String,String> map = new HashMap<>();
if(bindingResult.hasErrors()){
log.error("【创建订单】 表单参数不正确,orderForm={}",orderForm );
throw new SellException(ResultEnum.PARAM_ERROR.getCode(),
bindingResult.getFieldError().getDefaultMessage());
}
Lambda表达式
List<Integer> categoryTypeList = productInfoList.stream()
.map(e -> e.getCategoryType())
.collect(Collectors.toList());
把集合productInfoList里面的productInfo.getCategoryType()遍历在categoryTypeList
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。