diff --git a/src/main/java/com/eleadmin/common/goods/controller/GoodsController.java b/src/main/java/com/eleadmin/common/goods/controller/GoodsController.java new file mode 100644 index 0000000..2712d92 --- /dev/null +++ b/src/main/java/com/eleadmin/common/goods/controller/GoodsController.java @@ -0,0 +1,96 @@ +package com.eleadmin.common.goods.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.eleadmin.common.core.annotation.OperationLog; +import com.eleadmin.common.core.web.ApiResult; +import com.eleadmin.common.core.web.BaseController; +import com.eleadmin.common.core.web.PageParam; +import com.eleadmin.common.core.web.PageResult; +import com.eleadmin.common.goods.entity.Goods; +import com.eleadmin.common.goods.param.GoodsParam; +import com.eleadmin.common.goods.service.GoodsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.UUID; + +/** + * 商品控制器 + * + * @program: ele-admin-api + * @ClassName: GoodsController + * @author: Gyc + * @create: 2024-04-21 09:44 + **/ +@Api("商品管理") +@RestController +@RequestMapping("/api/goods") +public class GoodsController extends BaseController { + @Resource + private GoodsService goodsService; + + @PreAuthorize("hasAnyAuthority('goods:list')") + @OperationLog + @ApiOperation("分页查询商品") + @GetMapping("/page") + public ApiResult> page(GoodsParam param) { + Page goodsPage = new Page<>(param.getPage(), param.getLimit()); + LambdaQueryWrapper goodsLambdaQueryWrapper = new LambdaQueryWrapper<>(); + + goodsLambdaQueryWrapper.like(!StringUtils.isEmpty(param.getGoodId()),Goods::getGoodId,param.getGoodId()); + + goodsLambdaQueryWrapper.like(!StringUtils.isEmpty(param.getTitle()),Goods::getTitle,param.getTitle()); + + return success(goodsService.page(goodsPage,goodsLambdaQueryWrapper)); + } + + @PreAuthorize("hasAnyAuthority('goods:save')") + @OperationLog + @ApiOperation("添加商品") + @PostMapping + public ApiResult save(@Valid @RequestBody Goods goods, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new RuntimeException(bindingResult.getAllErrors().get(0).getDefaultMessage()); + } + goods.setGoodId(UUID.randomUUID().toString().toString()); + boolean save = goodsService.save(goods); + return save?success():fail(); + } + @PreAuthorize("hasAnyAuthority('goods:update')") + @OperationLog + @ApiOperation("修改商品") + @PutMapping + public ApiResult update(@Valid @RequestBody Goods goods, BindingResult bindingResult) { + if (goods.getId()==null){ + throw new RuntimeException("id不能为空"); + } + if (bindingResult.hasErrors()) { + throw new RuntimeException(bindingResult.getAllErrors().get(0).getDefaultMessage()); + } + boolean b = goodsService.updateById(goods); + return b?success():fail(); + + } + + @PreAuthorize("hasAnyAuthority('goods:remove')") + @OperationLog + @ApiOperation("删除商品") + @DeleteMapping("/del") + public ApiResult remove(@RequestParam Integer id) { + + boolean b = goodsService.removeById(id); + return b?success():fail(); + + } + + + + +} diff --git a/src/main/java/com/eleadmin/common/goods/entity/Goods.java b/src/main/java/com/eleadmin/common/goods/entity/Goods.java new file mode 100644 index 0000000..e9cddd5 --- /dev/null +++ b/src/main/java/com/eleadmin/common/goods/entity/Goods.java @@ -0,0 +1,76 @@ +package com.eleadmin.common.goods.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Date; + +/** + * 商品 + * + * @program: ele-admin-api + * @ClassName: Goods + * @author: Gyc + * @create: 2024-04-21 09:25 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(description = "商品") +@TableName("goods") +public class Goods implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("商品编码") + private String goodId; + + @ApiModelProperty("商品名称") + @NotEmpty(message = "商品名称不能为空") + private String title; + + @ApiModelProperty("商品类型,1上架,2下架") + @NotNull(message = "商品类型不能为空") + @Min(value = 1) + @Max(value = 2) + private Integer goodType; + + @ApiModelProperty("商品价格") + @NotNull(message = "商品价格不能为空") + @Min(value = 1) + private Integer price; + + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ApiModelProperty("创建人") + private Integer creaorId; + + + @ApiModelProperty("修改时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date changeDate; + + @ApiModelProperty("修改人") + private Integer changorId; + +} diff --git a/src/main/java/com/eleadmin/common/goods/mapper/GoodsMapper.java b/src/main/java/com/eleadmin/common/goods/mapper/GoodsMapper.java new file mode 100644 index 0000000..bb8092a --- /dev/null +++ b/src/main/java/com/eleadmin/common/goods/mapper/GoodsMapper.java @@ -0,0 +1,18 @@ +package com.eleadmin.common.goods.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.eleadmin.common.goods.entity.Goods; + +/** + * 商品mapper + * + * @program: ele-admin-api + * @ClassName: GoodsMapper + * @author: Gyc + * @create: 2024-04-21 10:05 + **/ +public interface GoodsMapper extends BaseMapper { + + + +} diff --git a/src/main/java/com/eleadmin/common/goods/mapper/xml/GoodsMapper.xml b/src/main/java/com/eleadmin/common/goods/mapper/xml/GoodsMapper.xml new file mode 100644 index 0000000..3a11b15 --- /dev/null +++ b/src/main/java/com/eleadmin/common/goods/mapper/xml/GoodsMapper.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/main/java/com/eleadmin/common/goods/param/GoodsParam.java b/src/main/java/com/eleadmin/common/goods/param/GoodsParam.java new file mode 100644 index 0000000..19ebffe --- /dev/null +++ b/src/main/java/com/eleadmin/common/goods/param/GoodsParam.java @@ -0,0 +1,45 @@ +package com.eleadmin.common.goods.param; + +import com.eleadmin.common.core.annotation.QueryField; +import com.eleadmin.common.core.annotation.QueryType; +import com.eleadmin.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品查询参数 + * + * @program: ele-admin-api + * @ClassName: GoodsParam + * @author: Gyc + * @create: 2024-04-21 09:57 + **/ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "商品查询参数") +public class GoodsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + private Integer id; + + @QueryField(type = QueryType.LIKE) + @ApiModelProperty("商品编码") + private String goodId; + + @QueryField(type = QueryType.LIKE) + @ApiModelProperty("商品名称") + private String title; + + @ApiModelProperty("商品类型,1上架,2下架") + private Integer goodType; + + @ApiModelProperty("商品价格") + private Integer price; + + +} diff --git a/src/main/java/com/eleadmin/common/goods/service/GoodsService.java b/src/main/java/com/eleadmin/common/goods/service/GoodsService.java new file mode 100644 index 0000000..4da1b12 --- /dev/null +++ b/src/main/java/com/eleadmin/common/goods/service/GoodsService.java @@ -0,0 +1,26 @@ +package com.eleadmin.common.goods.service; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.IService; +import com.eleadmin.common.core.web.PageParam; +import com.eleadmin.common.core.web.PageResult; +import com.eleadmin.common.goods.entity.Goods; +import com.eleadmin.common.goods.param.GoodsParam; +import org.springframework.stereotype.Service; + +/** + * @program: ele-admin-api + * @ClassName: GoodsService + * @author: Gyc + * @create: 2024-04-21 09:45 + **/ + +public interface GoodsService extends IService { + + + + + + + +} diff --git a/src/main/java/com/eleadmin/common/goods/service/impl/GoodsServiceImpl.java b/src/main/java/com/eleadmin/common/goods/service/impl/GoodsServiceImpl.java new file mode 100644 index 0000000..2d54d6d --- /dev/null +++ b/src/main/java/com/eleadmin/common/goods/service/impl/GoodsServiceImpl.java @@ -0,0 +1,25 @@ +package com.eleadmin.common.goods.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.eleadmin.common.core.web.PageParam; +import com.eleadmin.common.core.web.PageResult; +import com.eleadmin.common.goods.entity.Goods; +import com.eleadmin.common.goods.mapper.GoodsMapper; +import com.eleadmin.common.goods.param.GoodsParam; +import com.eleadmin.common.goods.service.GoodsService; +import org.springframework.stereotype.Service; + +/** + * @program: ele-admin-api + * @ClassName: GoodsServiceImpl + * @author: Gyc + * @create: 2024-04-21 09:46 + **/ +@Service +public class GoodsServiceImpl extends ServiceImpl + implements GoodsService { + + + +}