pad点餐接口

This commit is contained in:
张松 2025-02-20 10:47:51 +08:00
parent 2c324221a9
commit 9207cabc2a
41 changed files with 1581 additions and 2 deletions

View File

@ -0,0 +1,73 @@
package com.czg.controller.admin;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.czg.account.dto.pad.PadDetailAddDTO;
import com.czg.account.dto.pad.PadDetailDTO;
import com.czg.account.dto.pad.PadDetailEditDTO;
import com.czg.account.dto.pad.PadProductCategoryDTO;
import com.czg.account.entity.PadProductCategoryDetail;
import com.czg.account.service.PadProdService;
import com.czg.annotation.SaAdminCheckPermission;
import com.czg.resp.CzgResult;
import com.czg.sa.StpKit;
import com.czg.utils.PageUtil;
import com.mybatisflex.core.paginate.Page;
import jakarta.annotation.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* pad点餐相关
* @author Administrator
*/
@RestController
@RequestMapping("admin/padProd")
public class PadProdController {
@Resource
private PadProdService padProdService;
/**
* 获取点餐列表
* @param productCategoryId 分类id
* @return 数据
*/
@SaAdminCheckPermission(value = "padProd:list", name = "pad点餐列表")
@GetMapping
public CzgResult<Page<PadProductCategoryDTO>> list(Long productCategoryId) {
return CzgResult.success(padProdService.pageInfo(PageUtil.buildPage(), productCategoryId, StpKit.USER.getShopId()));
}
/**
* 获取点餐详情
* @param padProductCategory tb_pad_product_category Id
* @return 数据
*/
@SaAdminCheckPermission(value = "padProd:detail", name = "pad点餐详情")
@GetMapping("/detail")
public CzgResult<PadDetailDTO> detail(Long padProductCategory) {
return CzgResult.success(padProdService.detail(StpKit.USER.getShopId(), padProductCategory));
}
/**
* pad点餐新增
* @return 是否成功
*/
@SaAdminCheckPermission(value = "padProd:add", name = "pad点餐新增")
@PostMapping
public CzgResult<Boolean> add(@RequestBody @Validated PadDetailAddDTO padDetailAddDTO) {
return CzgResult.success(padProdService.add(StpKit.USER.getShopId(), padDetailAddDTO));
}
/**
* pad点餐修改
* @return 是否成功
*/
@SaAdminCheckPermission(value = "padProd:edit", name = "pad点餐详情")
@PutMapping
public CzgResult<Boolean> edit(@RequestBody @Validated PadDetailEditDTO padDetailEditDTO) {
return CzgResult.success(padProdService.edit(StpKit.USER.getShopId(), padDetailEditDTO));
}
}

View File

@ -0,0 +1,69 @@
package com.czg.account.dto;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.alibaba.fastjson2.annotation.JSONField;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* Pad商品布局版式 实体类
*
* @author zs
* @since 2025-02-20
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PadLayoutDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long id;
/**
* 布局版式名称
*/
private String name;
/**
* 布局版式代码
*/
private String code;
/**
* 允许展示最大商品数
*/
private Integer maximum;
/**
* 详细描述
*/
private String remark;
/**
* 排序号升序
*/
private Integer sort;
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 删除标志 0-正常 1-已删除
*/
private Integer isDel;
}

View File

@ -0,0 +1,49 @@
package com.czg.account.dto;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.alibaba.fastjson2.annotation.JSONField;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* Pad商品自定义分类明细 实体类
*
* @author zs
* @since 2025-02-20
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PadProductCategoryDetailDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long id;
/**
* Pad商品自定义分类id
*/
private Long padProductCategoryId;
/**
* 商品id
*/
private Long productId;
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,187 @@
package com.czg.account.dto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Time;
import java.time.LocalDateTime;
import com.alibaba.fastjson2.annotation.JSONField;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 商品 实体类
*
* @author zs
* @since 2025-02-20
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProductDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long id;
/**
* 商品分类
*/
private Long categoryId;
/**
* 商品规格
*/
private Long specId;
/**
* 单位id
*/
private Long unitId;
/**
* 店铺id
*/
private Long shopId;
/**
* 商品名称
*/
private String name;
/**
* 短标题--促销语
*/
private String shortTitle;
/**
* 商品类型 single-单规格商品 sku-多规格商品 package-套餐商品 weight-称重商品 coupon-团购券
*/
private String type;
/**
* 0 固定套餐 1可选套餐
*/
private Integer groupType;
/**
* 包装费
*/
private BigDecimal packFee;
/**
* 商品封面图
*/
private String coverImg;
/**
* 商品图片第一张为缩略图其他为详情
*/
private String images;
/**
* 套餐内容
*/
private String groupSnap;
/**
* 库存警戒线
*/
private Integer warnLine;
/**
* 称重 价格/千克
*/
private BigDecimal weight;
/**
* 是否允许临时改价
*/
private Integer isAllowTempModifyPrice;
/**
* 数组 'Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday'
*/
private String days;
/**
* 可用开始时间
*/
private Time startTime;
/**
* 可用结束时间
*/
private Time endTime;
/**
* 规格选详情
*/
private String selectSpecInfo;
/**
* 排序
*/
private Integer sort;
/**
* 是否热销
*/
private Integer isHot;
/**
* 是否开启库存
*/
private Integer isStock;
/**
* 是否售罄
*/
private Integer isSoldStock;
/**
* 团购卷分类可有多个分类
*/
private String groupCategoryId;
/**
* 商品级库存数量
*/
private Integer stockNumber;
/**
* 是否上架
*/
private Boolean isSale;
/**
* 退款是否退回库存
*/
private Boolean isRefundStock;
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
/**
* 逻辑删除
*/
private Integer isDel;
}

View File

@ -0,0 +1,90 @@
package com.czg.account.dto;
import java.io.Serializable;
import java.time.LocalDateTime;
import com.alibaba.fastjson2.annotation.JSONField;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 商品分类 实体类
*
* @author zs
* @since 2025-02-20
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ShopProdCategoryDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long id;
/**
* 分类名称
*/
private String name;
/**
* 简称
*/
private String shortName;
/**
* 上级分类id-为0则表示是顶级
*/
private Long pid;
/**
* 图标
*/
private String pic;
/**
* 店铺Id
*/
private Long shopId;
/**
* 分类描述
*/
private String detail;
/**
* 排序
*/
private Integer sort;
/**
* 关键词
*/
private String keyWord;
/**
* 状态 0-禁用 1-启用
*/
private Integer status;
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 更新时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,31 @@
package com.czg.account.dto.pad;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
*/
@Data
public class PadDetailAddDTO {
/**
* 布局id
*/
@NotNull(message = "布局id不为空")
private Long padLayoutId;
/**
* 商品分类id
*/
@NotNull(message = "商品分类id不为空")
private Long productCategoryId;
/**
* 商品id集合
*/
@NotNull(message = "商品id不为空")
@NotEmpty(message = "商品id不为空")
private List<Long> productIdList;
}

View File

@ -0,0 +1,17 @@
package com.czg.account.dto.pad;
import com.czg.account.entity.Product;
import lombok.Data;
import java.util.List;
/**
* @author Administrator
*/
@Data
public class PadDetailDTO {
private Long id;
private Long padLayoutId;
private List<Long> productIdList;
private List<Product> productList;
}

View File

@ -0,0 +1,21 @@
package com.czg.account.dto.pad;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Administrator
*/
@Data
public class PadDetailEditDTO {
/**
* 列表id
*/
@NotNull(message = "tb_pad_product_categoryId不为空")
private Long id;
private Long padLayoutId;
private List<Long> productIdList = new ArrayList<>();
}

View File

@ -0,0 +1,57 @@
package com.czg.account.dto.pad;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
* Pad商品布局版式 实体类
*
* @author zs
* @since 2025-02-20
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PadLayoutAddDTO implements Serializable {
/**
* 布局版式名称
*/
private String customName;
/**
* 布局id
*/
private Long padLayoutId;
/**
* 分类id
*/
private Long productCategoryId;
/**
* 商品id集合
*/
private List<Long> productIdList;
/**
* 详细描述
*/
private String remark;
/**
* 排序号升序
*/
private Integer sort;
}

View File

@ -0,0 +1,89 @@
package com.czg.account.dto.pad;
import com.czg.product.entity.Product;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Pad商品自定义分类
*
* @author tankaikai
* @since 2024-10-22 17:07
*/
@Data
public class PadProductCategoryDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private Long id;
/**
* 布局版式id
*/
private Long padLayoutId;
/**
* 自定义名称
*/
private String customName;
/**
* 商品分类id
*/
private Long productCategoryId;
/**
* 店铺id
*/
private Long shopId;
/**
* 排序
*/
private Integer sort;
/**
* 备注
*/
private String remark;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private Date updateTime;
/**
* 商品名称
*/
private String productNames;
/**
* 布局版式代码
*/
private String padLayoutCode;
/**
* 布局类型
*/
private String padLayoutName;
/**
* 分类名称
*/
private String productCategoryName;
/**
* 商品id列表
*/
private List<Long> productIdList = new ArrayList<>();
/**
* 商品列表
*/
private List<Product> productList = new ArrayList<>();
}

View File

@ -0,0 +1,75 @@
package com.czg.account.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* Pad商品布局版式 实体类
*
* @author zs
* @since 2025-02-20
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_pad_layout")
public class PadLayout implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 布局版式名称
*/
private String name;
/**
* 布局版式代码
*/
private String code;
/**
* 允许展示最大商品数
*/
private Integer maximum;
/**
* 详细描述
*/
private String remark;
/**
* 排序号升序
*/
private Integer sort;
/**
* 创建时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
/**
* 删除标志 0-正常 1-已删除
*/
private Integer isDel;
}

View File

@ -0,0 +1,81 @@
package com.czg.account.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* Pad商品自定义分类 实体类
*
* @author zs
* @since 2025-02-20
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_pad_product_category")
public class PadProductCategory implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 布局版式id
*/
private Long padLayoutId;
/**
* 自定义名称
*/
private String customName;
/**
* 商品分类id
*/
private Long productCategoryId;
/**
* 店铺id
*/
private Long shopId;
/**
* 排序
*/
private Integer sort;
/**
* 备注
*/
private String remark;
/**
* 创建时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
/**
* 更新时间
*/
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
}

View File

@ -0,0 +1,55 @@
package com.czg.account.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* Pad商品自定义分类明细 实体类
*
* @author zs
* @since 2025-02-20
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_pad_product_category_detail")
public class PadProductCategoryDetail implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@Id(keyType = KeyType.Auto)
private Long id;
/**
* Pad商品自定义分类id
*/
private Long padProductCategoryId;
/**
* 商品id
*/
private Long productId;
/**
* 创建时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,193 @@
package com.czg.account.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Time;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 商品 实体类
*
* @author zs
* @since 2025-02-20
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_product")
public class Product implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 商品分类
*/
private Long categoryId;
/**
* 商品规格
*/
private Long specId;
/**
* 单位id
*/
private Long unitId;
/**
* 店铺id
*/
private Long shopId;
/**
* 商品名称
*/
private String name;
/**
* 短标题--促销语
*/
private String shortTitle;
/**
* 商品类型 single-单规格商品 sku-多规格商品 package-套餐商品 weight-称重商品 coupon-团购券
*/
private String type;
/**
* 0 固定套餐 1可选套餐
*/
private Integer groupType;
/**
* 包装费
*/
private BigDecimal packFee;
/**
* 商品封面图
*/
private String coverImg;
/**
* 商品图片第一张为缩略图其他为详情
*/
private String images;
/**
* 套餐内容
*/
private String groupSnap;
/**
* 库存警戒线
*/
private Integer warnLine;
/**
* 称重 价格/千克
*/
private BigDecimal weight;
/**
* 是否允许临时改价
*/
private Integer isAllowTempModifyPrice;
/**
* 数组 'Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday'
*/
private String days;
/**
* 可用开始时间
*/
private Time startTime;
/**
* 可用结束时间
*/
private Time endTime;
/**
* 规格选详情
*/
private String selectSpecInfo;
/**
* 排序
*/
private Integer sort;
/**
* 是否热销
*/
private Integer isHot;
/**
* 是否开启库存
*/
private Integer isStock;
/**
* 是否售罄
*/
private Integer isSoldStock;
/**
* 团购卷分类可有多个分类
*/
private String groupCategoryId;
/**
* 商品级库存数量
*/
private Integer stockNumber;
/**
* 是否上架
*/
private Boolean isSale;
/**
* 退款是否退回库存
*/
private Boolean isRefundStock;
/**
* 创建时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
/**
* 更新时间
*/
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
/**
* 逻辑删除
*/
private Integer isDel;
}

View File

@ -0,0 +1,96 @@
package com.czg.account.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 商品分类 实体类
*
* @author zs
* @since 2025-02-20
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_shop_prod_category")
public class ShopProdCategory implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 分类名称
*/
private String name;
/**
* 简称
*/
private String shortName;
/**
* 上级分类id-为0则表示是顶级
*/
private Long pid;
/**
* 图标
*/
private String pic;
/**
* 店铺Id
*/
private Long shopId;
/**
* 分类描述
*/
private String detail;
/**
* 排序
*/
private Integer sort;
/**
* 关键词
*/
private String keyWord;
/**
* 状态 0-禁用 1-启用
*/
private Integer status;
/**
* 创建时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
/**
* 更新时间
*/
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
}

View File

@ -93,6 +93,8 @@ public class ShopStaff implements Serializable {
private String accountName;
@Column(ignore = true)
private String accountPwd;
@Column(ignore = true)
private String phone;
}

View File

@ -0,0 +1,14 @@
package com.czg.account.service;
import com.mybatisflex.core.service.IService;
import com.czg.account.entity.PadLayout;
/**
* Pad商品布局版式 服务层
*
* @author zs
* @since 2025-02-20
*/
public interface PadLayoutService extends IService<PadLayout> {
}

View File

@ -0,0 +1,21 @@
package com.czg.account.service;
import com.czg.account.dto.pad.PadDetailAddDTO;
import com.czg.account.dto.pad.PadDetailDTO;
import com.czg.account.dto.pad.PadDetailEditDTO;
import com.czg.account.dto.pad.PadProductCategoryDTO;
import com.mybatisflex.core.paginate.Page;
/**
* @author Administrator
*/
public interface PadProdService {
Page<PadProductCategoryDTO> pageInfo(Page<PadProductCategoryDTO> objectPage, Long productCategoryId, Long shopId);
PadDetailDTO detail(Long shopId, Long padProductCategory);
Boolean edit(Long shopId, PadDetailEditDTO padDetailEditDTO);
Boolean add(Long shopId, PadDetailAddDTO padDetailAddDTO);
}

View File

@ -0,0 +1,14 @@
package com.czg.account.service;
import com.mybatisflex.core.service.IService;
import com.czg.account.entity.PadProductCategoryDetail;
/**
* Pad商品自定义分类明细 服务层
*
* @author zs
* @since 2025-02-20
*/
public interface PadProductCategoryDetailService extends IService<PadProductCategoryDetail> {
}

View File

@ -0,0 +1,14 @@
package com.czg.account.service;
import com.mybatisflex.core.service.IService;
import com.czg.account.entity.PadProductCategory;
/**
* Pad商品自定义分类 服务层
*
* @author zs
* @since 2025-02-20
*/
public interface PadProductCategoryService extends IService<PadProductCategory> {
}

View File

@ -0,0 +1,14 @@
package com.czg.account.service;
import com.mybatisflex.core.service.IService;
import com.czg.account.entity.Product;
/**
* 商品 服务层
*
* @author zs
* @since 2025-02-20
*/
public interface ProductService extends IService<Product> {
}

View File

@ -0,0 +1,14 @@
package com.czg.account.service;
import com.mybatisflex.core.service.IService;
import com.czg.account.entity.ShopProdCategory;
/**
* 商品分类 服务层
*
* @author zs
* @since 2025-02-20
*/
public interface ShopProdCategoryService extends IService<ShopProdCategory> {
}

View File

@ -0,0 +1,14 @@
package com.czg.service.account.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.account.entity.PadLayout;
/**
* Pad商品布局版式 映射层
*
* @author zs
* @since 2025-02-20
*/
public interface PadLayoutMapper extends BaseMapper<PadLayout> {
}

View File

@ -0,0 +1,17 @@
package com.czg.service.account.mapper;
import com.czg.account.dto.pad.PadProductCategoryDTO;
import com.mybatisflex.core.BaseMapper;
import com.czg.account.entity.PadProductCategoryDetail;
import com.mybatisflex.core.paginate.Page;
/**
* Pad商品自定义分类明细 映射层
*
* @author zs
* @since 2025-02-20
*/
public interface PadProductCategoryDetailMapper extends BaseMapper<PadProductCategoryDetail> {
Page<PadProductCategoryDTO> selectPageByKeyAndShopId();
Page<PadProductCategoryDTO> selectPageByKeyAndShopId_COUNT();
}

View File

@ -0,0 +1,14 @@
package com.czg.service.account.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.account.entity.PadProductCategory;
/**
* Pad商品自定义分类 映射层
*
* @author zs
* @since 2025-02-20
*/
public interface PadProductCategoryMapper extends BaseMapper<PadProductCategory> {
}

View File

@ -0,0 +1,14 @@
package com.czg.service.account.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.account.entity.Product;
/**
* 商品 映射层
*
* @author zs
* @since 2025-02-20
*/
public interface ProductMapper extends BaseMapper<Product> {
}

View File

@ -0,0 +1,14 @@
package com.czg.service.account.mapper;
import com.mybatisflex.core.BaseMapper;
import com.czg.account.entity.ShopProdCategory;
/**
* 商品分类 映射层
*
* @author zs
* @since 2025-02-20
*/
public interface ShopProdCategoryMapper extends BaseMapper<ShopProdCategory> {
}

View File

@ -0,0 +1,18 @@
package com.czg.service.account.service.impl;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.account.entity.PadLayout;
import com.czg.account.service.PadLayoutService;
import com.czg.service.account.mapper.PadLayoutMapper;
import org.springframework.stereotype.Service;
/**
* Pad商品布局版式 服务层实现
*
* @author zs
* @since 2025-02-20
*/
@Service
public class PadLayoutServiceImpl extends ServiceImpl<PadLayoutMapper, PadLayout> implements PadLayoutService{
}

View File

@ -0,0 +1,77 @@
package com.czg.service.account.service.impl;
import com.czg.account.dto.pad.PadDetailAddDTO;
import com.czg.account.dto.pad.PadDetailDTO;
import com.czg.account.dto.pad.PadDetailEditDTO;
import com.czg.account.dto.pad.PadProductCategoryDTO;
import com.czg.account.entity.PadProductCategory;
import com.czg.account.entity.PadProductCategoryDetail;
import com.czg.account.entity.Product;
import com.czg.account.entity.ShopProdCategory;
import com.czg.account.service.PadProdService;
import com.czg.account.service.PadProductCategoryService;
import com.czg.account.service.ProductService;
import com.czg.account.service.ShopProdCategoryService;
import com.czg.exception.ApiNotPrintException;
import com.czg.service.account.mapper.PadProductCategoryDetailMapper;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author Administrator
*/
@Service
public class PadProdServiceImpl implements PadProdService {
@Resource
private PadProductCategoryDetailMapper padProductCategoryDetailMapper;
@Resource
private PadProductCategoryService padProductCategoryService;
@Resource
private ProductService productService;
@Resource
private ShopProdCategoryService shopProdCategoryService;
@Override
public Page<PadProductCategoryDTO> pageInfo(Page<PadProductCategoryDTO> objectPage, Long productCategoryId, Long shopId) {
QueryWrapper queryWrapper = new QueryWrapper().eq(PadProductCategoryDetail::getPadProductCategoryId, shopId);
if (productCategoryId != null) {
queryWrapper.eq(PadProductCategoryDetail::getPadProductCategoryId, productCategoryId);
}
return padProductCategoryDetailMapper.xmlPaginate("selectPageByKeyAndShopId", objectPage, queryWrapper);
}
@Override
public PadDetailDTO detail(Long shopId, Long padProductCategory) {
PadProductCategory padCategory = padProductCategoryService.getOne(new QueryWrapper().eq(PadProductCategory::getShopId, shopId).eq(PadProductCategory::getId, padProductCategory));
if (padCategory == null) {
throw new ApiNotPrintException("pad商品分类不存在");
}
PadDetailDTO padDetailDTO = new PadDetailDTO();
padDetailDTO.setId(padProductCategory);
padDetailDTO.setPadLayoutId(padCategory.getPadLayoutId());
List<Long> productIds = padProductCategoryDetailMapper.selectListByQuery(new QueryWrapper().eq(PadProductCategoryDetail::getPadProductCategoryId, padProductCategory)).stream().map(PadProductCategoryDetail::getProductId).toList();
padDetailDTO.setProductIdList(productIds);
if (!productIds.isEmpty()) {
List<Product> products = productService.list(new QueryWrapper().in(Product::getId, productIds).eq(Product::getShopId, shopId));
padDetailDTO.setProductList(products);
}
return padDetailDTO;
}
@Override
public Boolean add(Long shopId, PadDetailAddDTO padDetailAddDTO) {
shopProdCategoryService.getOne(new QueryWrapper().eq(ShopProdCategory::getId, padDetailAddDTO.getProductCategoryId()));
return null;
}
@Override
public Boolean edit(Long shopId, PadDetailEditDTO padDetailEditDTO) {
return null;
}
}

View File

@ -0,0 +1,18 @@
package com.czg.service.account.service.impl;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.account.entity.PadProductCategoryDetail;
import com.czg.account.service.PadProductCategoryDetailService;
import com.czg.service.account.mapper.PadProductCategoryDetailMapper;
import org.springframework.stereotype.Service;
/**
* Pad商品自定义分类明细 服务层实现
*
* @author zs
* @since 2025-02-20
*/
@Service
public class PadProductCategoryDetailServiceImpl extends ServiceImpl<PadProductCategoryDetailMapper, PadProductCategoryDetail> implements PadProductCategoryDetailService{
}

View File

@ -0,0 +1,18 @@
package com.czg.service.account.service.impl;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.account.entity.PadProductCategory;
import com.czg.account.service.PadProductCategoryService;
import com.czg.service.account.mapper.PadProductCategoryMapper;
import org.springframework.stereotype.Service;
/**
* Pad商品自定义分类 服务层实现
*
* @author zs
* @since 2025-02-20
*/
@Service
public class PadProductCategoryServiceImpl extends ServiceImpl<PadProductCategoryMapper, PadProductCategory> implements PadProductCategoryService{
}

View File

@ -0,0 +1,18 @@
package com.czg.service.account.service.impl;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.account.entity.Product;
import com.czg.account.service.ProductService;
import com.czg.service.account.mapper.ProductMapper;
import org.springframework.stereotype.Service;
/**
* 商品 服务层实现
*
* @author zs
* @since 2025-02-20
*/
@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements ProductService{
}

View File

@ -0,0 +1,18 @@
package com.czg.service.account.service.impl;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.account.entity.ShopProdCategory;
import com.czg.account.service.ShopProdCategoryService;
import com.czg.service.account.mapper.ShopProdCategoryMapper;
import org.springframework.stereotype.Service;
/**
* 商品分类 服务层实现
*
* @author zs
* @since 2025-02-20
*/
@Service
public class ShopProdCategoryServiceImpl extends ServiceImpl<ShopProdCategoryMapper, ShopProdCategory> implements ShopProdCategoryService{
}

View File

@ -140,6 +140,7 @@ public class ShopStaffServiceImpl extends ServiceImpl<ShopStaffMapper, ShopStaff
SysUser sysUser = sysUserService.getById(shopStaff.getId());
shopStaff.setAccountName(StrUtil.subAfter(sysUser.getAccount(), "@", true));
shopStaff.setAccountPwd("*******");
shopStaff.setPhone(sysUser.getPhone());
return shopStaff;
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.account.mapper.PadLayoutMapper">
</mapper>

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.account.mapper.PadProductCategoryDetailMapper">
<select id="selectPageByKeyAndShopId" resultType="com.czg.account.dto.pad.PadProductCategoryDTO">
SELECT tb_pad_product_category.id,
tb_shop_prod_category.`name` AS productCategoryName,
GROUP_CONCAT(tb_product.NAME) AS productNames,
tb_pad_layout.code AS padLayoutCode,
tb_pad_layout.NAME AS padLayoutName
FROM tb_pad_product_category
LEFT JOIN tb_pad_product_category_detail
ON tb_pad_product_category.id = tb_pad_product_category_detail.pad_product_category_id
LEFT JOIN tb_shop_prod_category
ON tb_pad_product_category.product_category_id = tb_shop_prod_category.id
LEFT JOIN tb_product ON tb_pad_product_category_detail.product_id = tb_product.id
LEFT JOIN tb_pad_layout ON tb_pad_product_category.pad_layout_id = tb_pad_layout.id
${qwSql}
limit ${pageOffset}, ${pageSize}
</select>
<select id="selectPageByKeyAndShopId_COUNT" resultType="com.czg.account.dto.pad.PadProductCategoryDTO">
SELECT count(1)
FROM tb_pad_product_category
LEFT JOIN tb_pad_product_category_detail
ON tb_pad_product_category.id = tb_pad_product_category_detail.pad_product_category_id
LEFT JOIN tb_shop_prod_category
ON tb_pad_product_category.product_category_id = tb_shop_prod_category.id
LEFT JOIN tb_product ON tb_pad_product_category_detail.product_id = tb_product.id
LEFT JOIN tb_pad_layout ON tb_pad_product_category.pad_layout_id = tb_pad_layout.id
${qwSql}
</select>
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.account.mapper.PadProductCategoryMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.account.mapper.ProductMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.service.account.mapper.ShopProdCategoryMapper">
</mapper>

View File

@ -23,7 +23,7 @@
<select id="selectUserSummary" resultType="com.czg.account.dto.shopuser.ShopUserSummaryDTO">
select count(a.id) userTotal, sum(IFNULL(a.amount, 0)) balanceTotal,sum(IFNULL(b.amount,0)) chargeTotal from
tb_shop_user as a
left join tb_shop_user_flow as b on a.id=b.user_id and b.type='+' and b.biz_code in ('cashIn', 'wechatIn',
left join tb_shop_user_flow as b on a.id=b.user_id and b.biz_code in ('cashIn', 'wechatIn',
'alipayIn')
where a.shop_id = #{shopId}
<if test="isVip !=null">

View File

@ -28,7 +28,7 @@ public class Main {
// String packageName = "product";
// String packageName = "order";
String tableName = "tb_shop_extend";
String tableName = "tb_product";
String author = "zs";
//是否生成DTO实体 默认生成
boolean isGenerateDto = true;