由于没有微信公众号,所以学到支付就走不下去了
建表相关:
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