diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/StoreResult.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/StoreResult.java new file mode 100644 index 00000000..249877da --- /dev/null +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/StoreResult.java @@ -0,0 +1,115 @@ +package cn.iocoder.yudao.framework.common.pojo; + +import cn.iocoder.yudao.framework.common.exception.ErrorCode; +import cn.iocoder.yudao.framework.common.exception.ServiceException; +import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; +import org.springframework.util.Assert; + +import java.io.Serializable; +import java.util.Objects; + +/** + * 通用返回 + * + * @param 数据泛型 + */ +@Data +public class StoreResult implements Serializable { + + /** + * 错误码 + * + * @see ErrorCode#getCode() + */ + private String statusCode; + /** + * 返回数据 + */ + private T data; + /** + * 错误提示,用户可阅读 + * + * @see ErrorCode#getMsg() () + */ + private String message; + + private Boolean success; + + /** + * 将传入的 result 对象,转换成另外一个泛型结果的对象 + * + * 因为 A 方法返回的 CommonResult 对象,不满足调用其的 B 方法的返回,所以需要进行转换。 + * + * @param result 传入的 result 对象 + * @param 返回的泛型 + * @return 新的 CommonResult 对象 + */ + public static StoreResult error(StoreResult result) { + return error(result.getStatusCode(), result.getMessage()); + } + + public static StoreResult error(String code, String message) { + Assert.isTrue(!GlobalErrorCodeConstants.SUCCESS.getCode().equals(code), "code 必须是错误的!"); + StoreResult result = new StoreResult<>(); + result.statusCode = code; + result.message = message; + return result; + } + + public static StoreResult error(ErrorCode errorCode) { + return error(errorCode.getCode().toString(), errorCode.getMsg()); + } + + public static StoreResult success(T data) { + StoreResult result = new StoreResult<>(); + result.statusCode = "200"; + result.data = data; + result.message = ""; + result.success = true; + return result; + } + + public static boolean isSuccess(String code) { + return Objects.equals(code, GlobalErrorCodeConstants.SUCCESS.getCode().toString()); + } + + @JsonIgnore // 避免 jackson 序列化 + public boolean isSuccess() { + return isSuccess(statusCode); + } + + @JsonIgnore // 避免 jackson 序列化 + public boolean isError() { + return !isSuccess(); + } + + // ========= 和 Exception 异常体系集成 ========= + + /** + * 判断是否有异常。如果有,则抛出 {@link ServiceException} 异常 + */ + public void checkError() throws ServiceException { + if (isSuccess()) { + return; + } + // 业务异常 + throw new ServiceException(Integer.valueOf(statusCode), message); + } + + /** + * 判断是否有异常。如果有,则抛出 {@link ServiceException} 异常 + * 如果没有,则返回 {@link #data} 数据 + */ + @JsonIgnore // 避免 jackson 序列化 + public T getCheckedData() { + checkError(); + return data; + } + + public static StoreResult error(ServiceException serviceException) { + return error(serviceException.getCode().toString(), serviceException.getMessage()); + } + +} diff --git a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java index f892829c..a9d756f4 100644 --- a/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java +++ b/yudao-module-member/yudao-module-member-api/src/main/java/cn/iocoder/yudao/module/member/enums/ErrorCodeConstants.java @@ -95,8 +95,12 @@ public interface ErrorCodeConstants { ErrorCode REFUND_NOT_EXISTS = new ErrorCode(1_007_903_001, "退款审核不存在"); + ErrorCode STORE_GOODS_NOT_EXISTS = new ErrorCode(1_007_904_001, "商品不存在"); + ErrorCode STORE_GOODS_TYPE_NOT_EXISTS = new ErrorCode(1_007_904_002,"商品类别不存在"); + ErrorCode STORE_SALE_GOODS_NOT_EXISTS = new ErrorCode(1_007_904_003, "售卖商品不存在"); + ErrorCode STORE_SALE_GOODS_NOT_NULL = new ErrorCode(1_007_904_003, "售卖商品不能为空"); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/StoreGoodsController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/StoreGoodsController.java new file mode 100644 index 00000000..1f92ad7c --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/StoreGoodsController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.member.controller.admin.storegoods; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; +import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService; + +@Tag(name = "管理后台 - 商品") +@RestController +@RequestMapping("/member/store-goods") +@Validated +public class StoreGoodsController { + + @Resource + private StoreGoodsService storeGoodsService; + + @PostMapping("/create") + @Operation(summary = "创建商品") + @PreAuthorize("@ss.hasPermission('member:store-goods:create')") + public CommonResult createStoreGoods(@Valid @RequestBody StoreGoodsSaveReqVO createReqVO) { + return success(storeGoodsService.createStoreGoods(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新商品") + @PreAuthorize("@ss.hasPermission('member:store-goods:update')") + public CommonResult updateStoreGoods(@Valid @RequestBody StoreGoodsSaveReqVO updateReqVO) { + storeGoodsService.updateStoreGoods(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除商品") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:store-goods:delete')") + public CommonResult deleteStoreGoods(@RequestParam("id") Integer id) { + storeGoodsService.deleteStoreGoods(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得商品") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:store-goods:query')") + public CommonResult getStoreGoods(@RequestParam("id") Integer id) { + StoreGoodsDO storeGoods = storeGoodsService.getStoreGoods(id); + return success(BeanUtils.toBean(storeGoods, StoreGoodsRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得商品分页") + @PreAuthorize("@ss.hasPermission('member:store-goods:query')") + public CommonResult> getStoreGoodsPage(@Valid StoreGoodsPageReqVO pageReqVO) { + PageResult pageResult = storeGoodsService.getStoreGoodsPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, StoreGoodsRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出商品 Excel") + @PreAuthorize("@ss.hasPermission('member:store-goods:export')") + @OperateLog(type = EXPORT) + public void exportStoreGoodsExcel(@Valid StoreGoodsPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = storeGoodsService.getStoreGoodsPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "商品.xls", "数据", StoreGoodsRespVO.class, + BeanUtils.toBean(list, StoreGoodsRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsPageReqVO.java new file mode 100644 index 00000000..a08ae44e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.member.controller.admin.storegoods.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 商品分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class StoreGoodsPageReqVO extends PageParam { + + @Schema(description = "类别Id", example = "28357") + private Integer categoryId; + + @Schema(description = "商品名称", example = "张三") + private String goodsName; + + @Schema(description = "价格", example = "11124") + private Double price; + + @Schema(description = "售卖模式") + private Integer salesModel; + + @Schema(description = "设备ID") + private String equipmentCode; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsRespVO.java new file mode 100644 index 00000000..db7457c1 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsRespVO.java @@ -0,0 +1,44 @@ +package cn.iocoder.yudao.module.member.controller.admin.storegoods.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 商品 Response VO") +@Data +@ExcelIgnoreUnannotated +public class StoreGoodsRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32656") + @ExcelProperty("编号") + private Integer goodId; + + @Schema(description = "类别Id", example = "28357") + @ExcelProperty("类别Id") + private Integer categoryId; + + @Schema(description = "商品名称", example = "张三") + @ExcelProperty("商品名称") + private String goodsName; + + @Schema(description = "价格", example = "11124") + @ExcelProperty("价格") + private Double price; + + @Schema(description = "售卖模式") + @ExcelProperty("售卖模式") + private Integer salesModel; + + @Schema(description = "设备ID") + @ExcelProperty("设备ID") + private String equipmentCode; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsSaveReqVO.java new file mode 100644 index 00000000..e885b215 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoods/vo/StoreGoodsSaveReqVO.java @@ -0,0 +1,30 @@ +package cn.iocoder.yudao.module.member.controller.admin.storegoods.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 商品新增/修改 Request VO") +@Data +public class StoreGoodsSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32656") + private Integer goodId; + + @Schema(description = "类别Id", example = "28357") + private Integer categoryId; + + @Schema(description = "商品名称", example = "张三") + private String goodsName; + + @Schema(description = "价格", example = "11124") + private Double price; + + @Schema(description = "售卖模式") + private Integer salesModel; + + @Schema(description = "设备ID") + private String equipmentCode; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/StoreGoodsTypeController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/StoreGoodsTypeController.java new file mode 100644 index 00000000..abdba498 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/StoreGoodsTypeController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.member.controller.admin.storegoodstype; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype.StoreGoodsTypeDO; +import cn.iocoder.yudao.module.member.service.storegoodstype.StoreGoodsTypeService; + +@Tag(name = "管理后台 - 商品类别") +@RestController +@RequestMapping("/member/store-goods-type") +@Validated +public class StoreGoodsTypeController { + + @Resource + private StoreGoodsTypeService storeGoodsTypeService; + + @PostMapping("/create") + @Operation(summary = "创建商品类别") + @PreAuthorize("@ss.hasPermission('member:store-goods-type:create')") + public CommonResult createStoreGoodsType(@Valid @RequestBody StoreGoodsTypeSaveReqVO createReqVO) { + return success(storeGoodsTypeService.createStoreGoodsType(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新商品类别") + @PreAuthorize("@ss.hasPermission('member:store-goods-type:update')") + public CommonResult updateStoreGoodsType(@Valid @RequestBody StoreGoodsTypeSaveReqVO updateReqVO) { + storeGoodsTypeService.updateStoreGoodsType(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除商品类别") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:store-goods-type:delete')") + public CommonResult deleteStoreGoodsType(@RequestParam("id") Integer id) { + storeGoodsTypeService.deleteStoreGoodsType(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得商品类别") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:store-goods-type:query')") + public CommonResult getStoreGoodsType(@RequestParam("id") Integer id) { + StoreGoodsTypeDO storeGoodsType = storeGoodsTypeService.getStoreGoodsType(id); + return success(BeanUtils.toBean(storeGoodsType, StoreGoodsTypeRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得商品类别分页") + @PreAuthorize("@ss.hasPermission('member:store-goods-type:query')") + public CommonResult> getStoreGoodsTypePage(@Valid StoreGoodsTypePageReqVO pageReqVO) { + PageResult pageResult = storeGoodsTypeService.getStoreGoodsTypePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, StoreGoodsTypeRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出商品类别 Excel") + @PreAuthorize("@ss.hasPermission('member:store-goods-type:export')") + @OperateLog(type = EXPORT) + public void exportStoreGoodsTypeExcel(@Valid StoreGoodsTypePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = storeGoodsTypeService.getStoreGoodsTypePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "商品类别.xls", "数据", StoreGoodsTypeRespVO.class, + BeanUtils.toBean(list, StoreGoodsTypeRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/vo/StoreGoodsTypePageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/vo/StoreGoodsTypePageReqVO.java new file mode 100644 index 00000000..fbcf77d9 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/vo/StoreGoodsTypePageReqVO.java @@ -0,0 +1,25 @@ +package cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 商品类别分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class StoreGoodsTypePageReqVO extends PageParam { + + @Schema(description = "类别名称", example = "芋艿") + private String categoryName; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/vo/StoreGoodsTypeRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/vo/StoreGoodsTypeRespVO.java new file mode 100644 index 00000000..b7598f3e --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/vo/StoreGoodsTypeRespVO.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 商品类别 Response VO") +@Data +@ExcelIgnoreUnannotated +public class StoreGoodsTypeRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4141") + @ExcelProperty("编号") + private Integer id; + + @Schema(description = "类别名称", example = "芋艿") + @ExcelProperty("类别名称") + private String categoryName; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/vo/StoreGoodsTypeSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/vo/StoreGoodsTypeSaveReqVO.java new file mode 100644 index 00000000..2d55f894 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storegoodstype/vo/StoreGoodsTypeSaveReqVO.java @@ -0,0 +1,18 @@ +package cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 商品类别新增/修改 Request VO") +@Data +public class StoreGoodsTypeSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4141") + private Integer id; + + @Schema(description = "类别名称", example = "芋艿") + private String categoryName; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/StoreSaleGoodsController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/StoreSaleGoodsController.java new file mode 100644 index 00000000..5709d104 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/StoreSaleGoodsController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.member.controller.admin.storesalegoods; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods.StoreSaleGoodsDO; +import cn.iocoder.yudao.module.member.service.storesalegoods.StoreSaleGoodsService; + +@Tag(name = "管理后台 - 售卖商品") +@RestController +@RequestMapping("/member/store-sale-goods") +@Validated +public class StoreSaleGoodsController { + + @Resource + private StoreSaleGoodsService storeSaleGoodsService; + + @PostMapping("/create") + @Operation(summary = "创建售卖商品") + @PreAuthorize("@ss.hasPermission('member:store-sale-goods:create')") + public CommonResult createStoreSaleGoods(@Valid @RequestBody StoreSaleGoodsSaveReqVO createReqVO) { + return success(storeSaleGoodsService.createStoreSaleGoods(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新售卖商品") + @PreAuthorize("@ss.hasPermission('member:store-sale-goods:update')") + public CommonResult updateStoreSaleGoods(@Valid @RequestBody StoreSaleGoodsSaveReqVO updateReqVO) { + storeSaleGoodsService.updateStoreSaleGoods(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除售卖商品") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('member:store-sale-goods:delete')") + public CommonResult deleteStoreSaleGoods(@RequestParam("id") Long id) { + storeSaleGoodsService.deleteStoreSaleGoods(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得售卖商品") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('member:store-sale-goods:query')") + public CommonResult getStoreSaleGoods(@RequestParam("id") Long id) { + StoreSaleGoodsDO storeSaleGoods = storeSaleGoodsService.getStoreSaleGoods(id); + return success(BeanUtils.toBean(storeSaleGoods, StoreSaleGoodsRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得售卖商品分页") + @PreAuthorize("@ss.hasPermission('member:store-sale-goods:query')") + public CommonResult> getStoreSaleGoodsPage(@Valid StoreSaleGoodsPageReqVO pageReqVO) { + PageResult pageResult = storeSaleGoodsService.getStoreSaleGoodsPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, StoreSaleGoodsRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出售卖商品 Excel") + @PreAuthorize("@ss.hasPermission('member:store-sale-goods:export')") + @OperateLog(type = EXPORT) + public void exportStoreSaleGoodsExcel(@Valid StoreSaleGoodsPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = storeSaleGoodsService.getStoreSaleGoodsPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "售卖商品.xls", "数据", StoreSaleGoodsRespVO.class, + BeanUtils.toBean(list, StoreSaleGoodsRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/vo/StoreSaleGoodsPageReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/vo/StoreSaleGoodsPageReqVO.java new file mode 100644 index 00000000..8b299655 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/vo/StoreSaleGoodsPageReqVO.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 售卖商品分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class StoreSaleGoodsPageReqVO extends PageParam { + + @Schema(description = "商品id", example = "11772") + private Integer goodsId; + + @Schema(description = "数量") + private Integer number; + + @Schema(description = "设备ID") + private String equipmentCode; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/vo/StoreSaleGoodsRespVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/vo/StoreSaleGoodsRespVO.java new file mode 100644 index 00000000..84bcbdb4 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/vo/StoreSaleGoodsRespVO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 售卖商品 Response VO") +@Data +@ExcelIgnoreUnannotated +public class StoreSaleGoodsRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29812") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "商品id", example = "11772") + @ExcelProperty("商品id") + private Integer goodsId; + + @Schema(description = "数量") + @ExcelProperty("数量") + private Integer number; + + @Schema(description = "设备ID") + @ExcelProperty("设备ID") + private String equipmentCode; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/vo/StoreSaleGoodsSaveReqVO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/vo/StoreSaleGoodsSaveReqVO.java new file mode 100644 index 00000000..37ff52d4 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/admin/storesalegoods/vo/StoreSaleGoodsSaveReqVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 售卖商品新增/修改 Request VO") +@Data +public class StoreSaleGoodsSaveReqVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "29812") + private Long id; + + @Schema(description = "商品id", example = "11772") + private Integer goodsId; + + @Schema(description = "数量") + private Integer number; + + @Schema(description = "设备ID") + private String equipmentCode; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/AppStoreController.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/AppStoreController.java new file mode 100644 index 00000000..a1d5c028 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/AppStoreController.java @@ -0,0 +1,92 @@ +package cn.iocoder.yudao.module.member.controller.app.store; + +import cn.hutool.core.collection.CollectionUtil; +import cn.iocoder.yudao.framework.common.pojo.StoreResult; +import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; +import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreBaseDto; +import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreSaleGoodsDto; +import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreUserDto; +import cn.iocoder.yudao.module.member.controller.app.store.vo.StoreGoodsVo; +import cn.iocoder.yudao.module.member.controller.app.store.vo.StoreUserVo; +import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import cn.iocoder.yudao.module.member.service.storegoods.StoreGoodsService; +import cn.iocoder.yudao.module.member.service.storegoodstype.StoreGoodsTypeService; +import cn.iocoder.yudao.module.member.service.storesalegoods.StoreSaleGoodsService; +import cn.iocoder.yudao.module.member.service.user.MemberUserService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.PostConstruct; +import javax.annotation.Resource; + +import java.util.List; + +@Tag(name = "用户 APP - 超市") +@RestController +@RequestMapping("/device") +@Validated +@Slf4j +public class AppStoreController { + + @Resource + private MemberUserService userService; + @Resource + private StoreGoodsService storeGoodsService; + @Resource + private StoreGoodsTypeService goodsTypeService; + @Resource + private StoreSaleGoodsService saleGoodsService; + + @GetMapping("/mgcr/memberUser/getMenberTwoList") + @Operation(summary = "获取用户关联信息") + public StoreResult> getStoreUser(@RequestBody StoreUserDto dto) { + List list = userService.getStoreUser(); + return StoreResult.success(StoreUserVo.convert(list)); + } + + @GetMapping("/mgcr/equipment/goodsList") + @Operation(summary = "获取菜品库所有菜品") + public StoreResult getGoods(@RequestBody StoreBaseDto dto) { + StoreGoodsVo storeGoodsVo = new StoreGoodsVo(); + storeGoodsVo.setGoodsData(storeGoodsService.getAll(null)); + storeGoodsVo.setCategoryData(goodsTypeService.getAll()); + return StoreResult.success(storeGoodsVo); + } + + @PostMapping("/mgcr/equipment/bindGoods") + @Operation(summary = "设置营业菜品") + public StoreResult bindGoods(@RequestBody StoreSaleGoodsDto dto) { + Boolean b = saleGoodsService.bindGoods(dto); + StoreResult result = new StoreResult<>(); + + if (b) { + result.setStatusCode("200"); + result.setMessage("操作成功"); + result.setSuccess(true); + }else{ + result.setStatusCode("300"); + result.setSuccess(false); + } + return result; + } + + @GetMapping("/mgcr/equipment/queryBindGoods") + @Operation(summary = "获取营业菜品") + public StoreResult getSaleGoods(@RequestBody StoreBaseDto dto) { + StoreGoodsVo storeGoodsVo = new StoreGoodsVo(); + + List goodsIds = saleGoodsService.getGoodsIds(dto.getEquipmentCode()); + if(CollectionUtil.isEmpty(goodsIds)){ + return StoreResult.success(storeGoodsVo); + } + storeGoodsVo.setGoodsData(storeGoodsService.getAll(goodsIds)); + storeGoodsVo.setCategoryData(goodsTypeService.getAll()); + return StoreResult.success(storeGoodsVo); + } + + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreBaseDto.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreBaseDto.java new file mode 100644 index 00000000..a3b66b8a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreBaseDto.java @@ -0,0 +1,8 @@ +package cn.iocoder.yudao.module.member.controller.app.store.dto; + +import lombok.Data; + +@Data +public class StoreBaseDto { + private String equipmentCode; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreGoodsDto.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreGoodsDto.java new file mode 100644 index 00000000..305dee43 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreGoodsDto.java @@ -0,0 +1,10 @@ +package cn.iocoder.yudao.module.member.controller.app.store.dto; + +import lombok.Data; + +@Data +public class StoreGoodsDto { + private Integer goodsId; + private Double customPrice; + private Integer number; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreSaleGoodsDto.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreSaleGoodsDto.java new file mode 100644 index 00000000..9a14448a --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreSaleGoodsDto.java @@ -0,0 +1,10 @@ +package cn.iocoder.yudao.module.member.controller.app.store.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class StoreSaleGoodsDto extends StoreBaseDto{ + private List equipmentGoodsCustoms; +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreUserDto.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreUserDto.java new file mode 100644 index 00000000..073d4b0c --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/dto/StoreUserDto.java @@ -0,0 +1,12 @@ +package cn.iocoder.yudao.module.member.controller.app.store.dto; + +import lombok.Data; + +import java.security.PrivateKey; + +@Data +public class StoreUserDto extends StoreBaseDto{ + private Integer offset; + private Integer limit; + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/vo/StoreGoodsVo.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/vo/StoreGoodsVo.java new file mode 100644 index 00000000..5505cee0 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/vo/StoreGoodsVo.java @@ -0,0 +1,15 @@ +package cn.iocoder.yudao.module.member.controller.app.store.vo; + +import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype.StoreGoodsTypeDO; +import lombok.Data; + +import java.util.List; + +@Data +public class StoreGoodsVo { + + private List goodsData; + private List categoryData; + +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/vo/StoreUserVo.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/vo/StoreUserVo.java new file mode 100644 index 00000000..dc430ba3 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/controller/app/store/vo/StoreUserVo.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.member.controller.app.store.vo; + +import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class StoreUserVo { + private Integer userId; + private String userName; + private String cardNumber; + private String faceId; + private String openId; + + + + public static List convert(List list){ + + + List voList = new ArrayList<>(); + + for (MemberUserDO memberUserDO : list) { + if(StrUtil.isBlank(memberUserDO.getCardId())){ + continue; + } + StoreUserVo vo = new StoreUserVo(); + vo.setUserId(memberUserDO.getId().intValue()); + vo.setUserName(memberUserDO.getNickname()); + vo.setCardNumber(memberUserDO.getCardId()); + vo.setFaceId(memberUserDO.getFaceId().toString()); + vo.setOpenId(memberUserDO.getFaceId().toString()); + voList.add(vo); + } + return voList; + } +} diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storegoods/StoreGoodsDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storegoods/StoreGoodsDO.java new file mode 100644 index 00000000..3e591c29 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storegoods/StoreGoodsDO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.storegoods; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 商品 DO + * + * @author 管理员 + */ +@TableName("member_store_goods") +@KeySequence("member_store_goods_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StoreGoodsDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Integer goodId; + /** + * 类别Id + */ + private Integer categoryId; + /** + * 商品名称 + */ + private String goodsName; + /** + * 价格 + */ + private Double price; + /** + * 售卖模式 + */ + private Integer salesModel; + /** + * 设备ID + */ + private String equipmentCode; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storegoodstype/StoreGoodsTypeDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storegoodstype/StoreGoodsTypeDO.java new file mode 100644 index 00000000..10c4b6c9 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storegoodstype/StoreGoodsTypeDO.java @@ -0,0 +1,35 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 商品类别 DO + * + * @author 管理员 + */ +@TableName("member_store_goods_type") +@KeySequence("member_store_goods_type_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StoreGoodsTypeDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Integer id; + /** + * 类别名称 + */ + private String categoryName; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storesalegoods/StoreSaleGoodsDO.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storesalegoods/StoreSaleGoodsDO.java new file mode 100644 index 00000000..dfb38b33 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/dataobject/storesalegoods/StoreSaleGoodsDO.java @@ -0,0 +1,43 @@ +package cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 售卖商品 DO + * + * @author 管理员 + */ +@TableName("member_store_sale_goods") +@KeySequence("member_store_sale_goods_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class StoreSaleGoodsDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 商品id + */ + private Integer goodsId; + /** + * 数量 + */ + private Integer number; + /** + * 设备ID + */ + private String equipmentCode; + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storegoods/StoreGoodsMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storegoods/StoreGoodsMapper.java new file mode 100644 index 00000000..4607e0ca --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storegoods/StoreGoodsMapper.java @@ -0,0 +1,31 @@ +package cn.iocoder.yudao.module.member.dal.mysql.storegoods; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.*; + +/** + * 商品 Mapper + * + * @author 管理员 + */ +@Mapper +public interface StoreGoodsMapper extends BaseMapperX { + + default PageResult selectPage(StoreGoodsPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(StoreGoodsDO::getCategoryId, reqVO.getCategoryId()) + .likeIfPresent(StoreGoodsDO::getGoodsName, reqVO.getGoodsName()) + .eqIfPresent(StoreGoodsDO::getPrice, reqVO.getPrice()) + .eqIfPresent(StoreGoodsDO::getSalesModel, reqVO.getSalesModel()) + .eqIfPresent(StoreGoodsDO::getEquipmentCode, reqVO.getEquipmentCode()) + .betweenIfPresent(StoreGoodsDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(StoreGoodsDO::getCategoryId)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storegoodstype/StoreGoodsTypeMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storegoodstype/StoreGoodsTypeMapper.java new file mode 100644 index 00000000..b8761468 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storegoodstype/StoreGoodsTypeMapper.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.member.dal.mysql.storegoodstype; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype.StoreGoodsTypeDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo.*; + +/** + * 商品类别 Mapper + * + * @author 管理员 + */ +@Mapper +public interface StoreGoodsTypeMapper extends BaseMapperX { + + default PageResult selectPage(StoreGoodsTypePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(StoreGoodsTypeDO::getCategoryName, reqVO.getCategoryName()) + .betweenIfPresent(StoreGoodsTypeDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(StoreGoodsTypeDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storesalegoods/StoreSaleGoodsMapper.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storesalegoods/StoreSaleGoodsMapper.java new file mode 100644 index 00000000..18990c22 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/dal/mysql/storesalegoods/StoreSaleGoodsMapper.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.member.dal.mysql.storesalegoods; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods.StoreSaleGoodsDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.*; + +/** + * 售卖商品 Mapper + * + * @author 管理员 + */ +@Mapper +public interface StoreSaleGoodsMapper extends BaseMapperX { + + default PageResult selectPage(StoreSaleGoodsPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(StoreSaleGoodsDO::getGoodsId, reqVO.getGoodsId()) + .eqIfPresent(StoreSaleGoodsDO::getNumber, reqVO.getNumber()) + .eqIfPresent(StoreSaleGoodsDO::getEquipmentCode, reqVO.getEquipmentCode()) + .betweenIfPresent(StoreSaleGoodsDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(StoreSaleGoodsDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsService.java new file mode 100644 index 00000000..ee94fa62 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsService.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.member.service.storegoods; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 商品 Service 接口 + * + * @author 管理员 + */ +public interface StoreGoodsService { + + /** + * 创建商品 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Integer createStoreGoods(@Valid StoreGoodsSaveReqVO createReqVO); + + /** + * 更新商品 + * + * @param updateReqVO 更新信息 + */ + void updateStoreGoods(@Valid StoreGoodsSaveReqVO updateReqVO); + + /** + * 删除商品 + * + * @param id 编号 + */ + void deleteStoreGoods(Integer id); + + /** + * 获得商品 + * + * @param id 编号 + * @return 商品 + */ + StoreGoodsDO getStoreGoods(Integer id); + + /** + * 获得商品分页 + * + * @param pageReqVO 分页查询 + * @return 商品分页 + */ + PageResult getStoreGoodsPage(StoreGoodsPageReqVO pageReqVO); + + + List getAll(List goodsIds); + +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsServiceImpl.java new file mode 100644 index 00000000..2f34d0c3 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoods/StoreGoodsServiceImpl.java @@ -0,0 +1,85 @@ +package cn.iocoder.yudao.module.member.service.storegoods; + +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.member.controller.admin.storegoods.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoods.StoreGoodsDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.member.dal.mysql.storegoods.StoreGoodsMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; + +/** + * 商品 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class StoreGoodsServiceImpl implements StoreGoodsService { + + @Resource + private StoreGoodsMapper storeGoodsMapper; + + @Override + public Integer createStoreGoods(StoreGoodsSaveReqVO createReqVO) { + // 插入 + StoreGoodsDO storeGoods = BeanUtils.toBean(createReqVO, StoreGoodsDO.class); + storeGoodsMapper.insert(storeGoods); + // 返回 + return storeGoods.getGoodId(); + } + + @Override + public void updateStoreGoods(StoreGoodsSaveReqVO updateReqVO) { + // 校验存在 + validateStoreGoodsExists(updateReqVO.getGoodId()); + // 更新 + StoreGoodsDO updateObj = BeanUtils.toBean(updateReqVO, StoreGoodsDO.class); + storeGoodsMapper.updateById(updateObj); + } + + @Override + public void deleteStoreGoods(Integer id) { + // 校验存在 + validateStoreGoodsExists(id); + // 删除 + storeGoodsMapper.deleteById(id); + } + + private void validateStoreGoodsExists(Integer id) { + if (storeGoodsMapper.selectById(id) == null) { + throw exception(STORE_GOODS_NOT_EXISTS); + } + } + + @Override + public StoreGoodsDO getStoreGoods(Integer id) { + return storeGoodsMapper.selectById(id); + } + + @Override + public PageResult getStoreGoodsPage(StoreGoodsPageReqVO pageReqVO) { + return storeGoodsMapper.selectPage(pageReqVO); + } + + @Override + public List getAll(List goodsIds) { + if (CollectionUtil.isEmpty(goodsIds)) { + return storeGoodsMapper.selectList(); + }else { + return storeGoodsMapper.selectList(new LambdaQueryWrapper().in(StoreGoodsDO::getGoodId, goodsIds)); + } + + } +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeService.java new file mode 100644 index 00000000..3389cfe5 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeService.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.module.member.service.storegoodstype; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype.StoreGoodsTypeDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 商品类别 Service 接口 + * + * @author 管理员 + */ +public interface StoreGoodsTypeService { + + /** + * 创建商品类别 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Integer createStoreGoodsType(@Valid StoreGoodsTypeSaveReqVO createReqVO); + + /** + * 更新商品类别 + * + * @param updateReqVO 更新信息 + */ + void updateStoreGoodsType(@Valid StoreGoodsTypeSaveReqVO updateReqVO); + + /** + * 删除商品类别 + * + * @param id 编号 + */ + void deleteStoreGoodsType(Integer id); + + /** + * 获得商品类别 + * + * @param id 编号 + * @return 商品类别 + */ + StoreGoodsTypeDO getStoreGoodsType(Integer id); + + /** + * 获得商品类别分页 + * + * @param pageReqVO 分页查询 + * @return 商品类别分页 + */ + PageResult getStoreGoodsTypePage(StoreGoodsTypePageReqVO pageReqVO); + + List getAll(); +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeServiceImpl.java new file mode 100644 index 00000000..bbe0f7c1 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storegoodstype/StoreGoodsTypeServiceImpl.java @@ -0,0 +1,78 @@ +package cn.iocoder.yudao.module.member.service.storegoodstype; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.iocoder.yudao.module.member.controller.admin.storegoodstype.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storegoodstype.StoreGoodsTypeDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.member.dal.mysql.storegoodstype.StoreGoodsTypeMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; + +/** + * 商品类别 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class StoreGoodsTypeServiceImpl implements StoreGoodsTypeService { + + @Resource + private StoreGoodsTypeMapper storeGoodsTypeMapper; + + @Override + public Integer createStoreGoodsType(StoreGoodsTypeSaveReqVO createReqVO) { + // 插入 + StoreGoodsTypeDO storeGoodsType = BeanUtils.toBean(createReqVO, StoreGoodsTypeDO.class); + storeGoodsTypeMapper.insert(storeGoodsType); + // 返回 + return storeGoodsType.getId(); + } + + @Override + public void updateStoreGoodsType(StoreGoodsTypeSaveReqVO updateReqVO) { + // 校验存在 + validateStoreGoodsTypeExists(updateReqVO.getId()); + // 更新 + StoreGoodsTypeDO updateObj = BeanUtils.toBean(updateReqVO, StoreGoodsTypeDO.class); + storeGoodsTypeMapper.updateById(updateObj); + } + + @Override + public void deleteStoreGoodsType(Integer id) { + // 校验存在 + validateStoreGoodsTypeExists(id); + // 删除 + storeGoodsTypeMapper.deleteById(id); + } + + private void validateStoreGoodsTypeExists(Integer id) { + if (storeGoodsTypeMapper.selectById(id) == null) { + throw exception(STORE_GOODS_TYPE_NOT_EXISTS); + } + } + + @Override + public StoreGoodsTypeDO getStoreGoodsType(Integer id) { + return storeGoodsTypeMapper.selectById(id); + } + + @Override + public PageResult getStoreGoodsTypePage(StoreGoodsTypePageReqVO pageReqVO) { + return storeGoodsTypeMapper.selectPage(pageReqVO); + } + + @Override + public List getAll() { + return storeGoodsTypeMapper.selectList(); + } +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storesalegoods/StoreSaleGoodsService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storesalegoods/StoreSaleGoodsService.java new file mode 100644 index 00000000..bfd05e12 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storesalegoods/StoreSaleGoodsService.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.module.member.service.storesalegoods; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.*; +import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreSaleGoodsDto; +import cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods.StoreSaleGoodsDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 售卖商品 Service 接口 + * + * @author 管理员 + */ +public interface StoreSaleGoodsService { + + /** + * 创建售卖商品 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createStoreSaleGoods(@Valid StoreSaleGoodsSaveReqVO createReqVO); + + /** + * 更新售卖商品 + * + * @param updateReqVO 更新信息 + */ + void updateStoreSaleGoods(@Valid StoreSaleGoodsSaveReqVO updateReqVO); + + /** + * 删除售卖商品 + * + * @param id 编号 + */ + void deleteStoreSaleGoods(Long id); + + /** + * 获得售卖商品 + * + * @param id 编号 + * @return 售卖商品 + */ + StoreSaleGoodsDO getStoreSaleGoods(Long id); + + /** + * 获得售卖商品分页 + * + * @param pageReqVO 分页查询 + * @return 售卖商品分页 + */ + PageResult getStoreSaleGoodsPage(StoreSaleGoodsPageReqVO pageReqVO); + + Boolean bindGoods(StoreSaleGoodsDto dto); + + List getGoodsIds(String equipmentCode); +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storesalegoods/StoreSaleGoodsServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storesalegoods/StoreSaleGoodsServiceImpl.java new file mode 100644 index 00000000..c3840563 --- /dev/null +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/storesalegoods/StoreSaleGoodsServiceImpl.java @@ -0,0 +1,109 @@ +package cn.iocoder.yudao.module.member.service.storesalegoods; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; +import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreGoodsDto; +import cn.iocoder.yudao.module.member.controller.app.store.dto.StoreSaleGoodsDto; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +import cn.iocoder.yudao.module.member.controller.admin.storesalegoods.vo.*; +import cn.iocoder.yudao.module.member.dal.dataobject.storesalegoods.StoreSaleGoodsDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.member.dal.mysql.storesalegoods.StoreSaleGoodsMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.member.enums.ErrorCodeConstants.*; + +/** + * 售卖商品 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class StoreSaleGoodsServiceImpl implements StoreSaleGoodsService { + + @Resource + private StoreSaleGoodsMapper storeSaleGoodsMapper; + + @Override + public Long createStoreSaleGoods(StoreSaleGoodsSaveReqVO createReqVO) { + // 插入 + StoreSaleGoodsDO storeSaleGoods = BeanUtils.toBean(createReqVO, StoreSaleGoodsDO.class); + storeSaleGoodsMapper.insert(storeSaleGoods); + // 返回 + return storeSaleGoods.getId(); + } + + @Override + public void updateStoreSaleGoods(StoreSaleGoodsSaveReqVO updateReqVO) { + // 校验存在 + validateStoreSaleGoodsExists(updateReqVO.getId()); + // 更新 + StoreSaleGoodsDO updateObj = BeanUtils.toBean(updateReqVO, StoreSaleGoodsDO.class); + storeSaleGoodsMapper.updateById(updateObj); + } + + @Override + public void deleteStoreSaleGoods(Long id) { + // 校验存在 + validateStoreSaleGoodsExists(id); + // 删除 + storeSaleGoodsMapper.deleteById(id); + } + + private void validateStoreSaleGoodsExists(Long id) { + if (storeSaleGoodsMapper.selectById(id) == null) { + throw exception(STORE_SALE_GOODS_NOT_EXISTS); + } + } + + @Override + public StoreSaleGoodsDO getStoreSaleGoods(Long id) { + return storeSaleGoodsMapper.selectById(id); + } + + @Override + public PageResult getStoreSaleGoodsPage(StoreSaleGoodsPageReqVO pageReqVO) { + return storeSaleGoodsMapper.selectPage(pageReqVO); + } + + @Override + public Boolean bindGoods(StoreSaleGoodsDto dto) { + + if(CollectionUtil.isEmpty(dto.getEquipmentGoodsCustoms())){ + throw exception(STORE_SALE_GOODS_NOT_NULL); + } + //清空 + storeSaleGoodsMapper.delete(new LambdaQueryWrapper().eq(StoreSaleGoodsDO::getEquipmentCode, dto.getEquipmentCode())); + ArrayList list = new ArrayList<>(); + for (StoreGoodsDto storeGoodsDto : dto.getEquipmentGoodsCustoms()) { + StoreSaleGoodsDO storeSaleGoodsDO = new StoreSaleGoodsDO(); + BeanUtil.copyProperties(storeGoodsDto, storeSaleGoodsDO); + storeSaleGoodsDO.setEquipmentCode(dto.getEquipmentCode()); + list.add(storeSaleGoodsDO); + } + return storeSaleGoodsMapper.insertBatch(list); + } + + @Override + public List getGoodsIds(String equipmentCode) { + List storeSaleGoodsDOS = storeSaleGoodsMapper.selectList(new LambdaQueryWrapper().eq(StoreSaleGoodsDO::getEquipmentCode, equipmentCode)); + if (CollectionUtil.isEmpty(storeSaleGoodsDOS)){ + return Collections.emptyList(); + }else { + return storeSaleGoodsDOS.stream().map(StoreSaleGoodsDO::getGoodsId).collect(Collectors.toList()); + } + } +} \ No newline at end of file diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java index 6e86217b..5fa1347e 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserService.java @@ -246,4 +246,6 @@ public interface MemberUserService { BigDecimal getReductionAmount(Long userId,BigDecimal money,LocalDateTime time); String getFaceUrl(Long userId); + + List getStoreUser(); } diff --git a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java index ae467ecc..343ce64b 100644 --- a/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java +++ b/yudao-module-member/yudao-module-member-biz/src/main/java/cn/iocoder/yudao/module/member/service/user/MemberUserServiceImpl.java @@ -774,6 +774,11 @@ public class MemberUserServiceImpl implements MemberUserService { return memberUserMapper.getFace(userId); } + @Override + public List getStoreUser() { + return memberUserMapper.selectList(); + } + public BigDecimal countAmount(MemberTagDO memberTagDO, BigDecimal money, String timePeriod ){ if(memberTagDO.getType().equals("1")){ if (memberTagDO.getTimeFlag().equals("0")){