package com.oying.modules.pc.store.domain; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.copier.CopyOptions; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.oying.base.BaseEntity; import com.oying.modules.pc.product.domain.Product; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import org.springframework.data.geo.Point; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalTime; import java.util.Date; import java.util.List; /** * @author lzp * @date 2025-04-21 **/ @Getter @Setter @TableName("pc_store") public class Store extends BaseEntity implements Serializable { @TableId(value = "store_id", type = IdType.AUTO) @ApiModelProperty(value = "店铺ID") private Long storeId; @NotNull @ApiModelProperty(value = "商户ID") private Long merchantId; @NotNull @ApiModelProperty(value = "平台类目") private Long platformCategoryId; @NotNull @ApiModelProperty(value = "店铺类型:1-自营 2-加盟 3-第三方") private Integer storeType; @ApiModelProperty(value = "店铺编码") private String storeCode; @NotBlank @ApiModelProperty(value = "店铺名称") private String storeName; @ApiModelProperty(value = "经营范围") private String businessScope; @NotNull @ApiModelProperty(value = "状态") private Integer status; @ApiModelProperty(value = "店铺logo图片") private Long logoImageId; @ApiModelProperty(value = "店铺logo图片Url") private String logoImageUrl; @ApiModelProperty(value = "店铺封面图") private Long coverImageId; @ApiModelProperty(value = "店铺封面图Url") private String coverImageUrl; @ApiModelProperty(value = "店铺描述") private String description; @ApiModelProperty(value = "店铺标签,逗号分隔") private String tags; @ApiModelProperty(value = "联系电话") private String contactPhone; @ApiModelProperty(value = "营业开始时间") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm") private LocalTime openTime; @ApiModelProperty(value = "营业结束时间") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm") private LocalTime closeTime; @ApiModelProperty(value = "营业状态") private Integer businessStatus; @ApiModelProperty(value = "省级代码") private String provinceCode; @ApiModelProperty(value = "市级代码") private String cityCode; @ApiModelProperty(value = "区/县级代码") private String districtCode; @ApiModelProperty(value = "详细地址") private String address; @ApiModelProperty(value = "经度") private Double longitude; @ApiModelProperty(value = "纬度") private Double latitude; @ApiModelProperty(value = "GeoHash编码") private String geoHash; @ApiModelProperty(value = "空间坐标") private Point geoPoint; @ApiModelProperty(value = "坐标系:WGS84/GCJ02/BD09/CGCS2000") private String coordinateSystem; @ApiModelProperty(value = "营业半径(米)") private Integer radius; @ApiModelProperty(value = "是否支持退货") private Integer returns; @ApiModelProperty(value = "是否支持自提") private Integer selfPickup; @ApiModelProperty(value = "审核状态") private Integer auditStatus; @TableField(exist = false) @ApiModelProperty(value = "评分") private Double score = 0d; @ApiModelProperty(value = "包装费用") private BigDecimal packagingFee; @ApiModelProperty(value = "配送费用") private BigDecimal deliveryFee; @ApiModelProperty(value = "起送金额") private BigDecimal deliveryMinimum; @TableField(exist = false) @ApiModelProperty(value = "配送距离") private Integer deliveryDuration = 0; @TableField(exist = false) @ApiModelProperty(value = "配送时长") private Integer deliveryTime = 0; @TableField(exist = false) @ApiModelProperty(value = "销量") private Integer totalUnitsSold = 0; @TableField(exist = false) @ApiModelProperty(value = "月销售量") private Integer monthlyUnitsSold = 0; @NotNull @ApiModelProperty(value = "版本号") private Long version; @TableField(exist = false) @ApiModelProperty(value = "资质") private List qualifications; @TableField(exist = false) @ApiModelProperty(value = "商品") private List products; public void copy(Store source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); } }