总结一下sell项目

26次阅读

共计 2406 个字符,预计需要花费 7 分钟才能阅读完成。

由于没有微信公众号,所以学到支付就走不下去了

建表相关:

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

正文完
 0