🎨 产品信息维护接口
1. 产品信息维护接口 2. 产品模块接口调整
This commit is contained in:
commit
77605d84b8
@ -2,6 +2,7 @@ package com.rymcu.forest.dto;
|
||||
|
||||
import com.rymcu.forest.entity.Product;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* Created on 2022/6/21 9:38.
|
||||
@ -11,6 +12,7 @@ import lombok.Data;
|
||||
* @packageName com.rymcu.forest.dto
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
public class ProductDTO extends Product {
|
||||
/**
|
||||
* 文章内容
|
||||
|
@ -3,10 +3,7 @@ package com.rymcu.forest.entity;
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@ -19,7 +16,7 @@ import java.util.Date;
|
||||
*/
|
||||
@Data
|
||||
@Table(name = "forest_product")
|
||||
public class Product implements Serializable, Cloneable {
|
||||
public class Product implements Serializable {
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@ -57,4 +54,11 @@ public class Product implements Serializable, Cloneable {
|
||||
*/
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date updatedTime;
|
||||
|
||||
private Integer status;
|
||||
|
||||
private String tags;
|
||||
|
||||
@Transient
|
||||
private String productImgType;
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ import java.util.Date;
|
||||
*/
|
||||
@Data
|
||||
@Table(name = "forest_product_content")
|
||||
public class ProductContent implements Serializable, Cloneable {
|
||||
public class ProductContent implements Serializable {
|
||||
/**
|
||||
* 产品表主键
|
||||
*/
|
||||
|
@ -17,26 +17,49 @@ public interface ProductMapper extends Mapper<Product> {
|
||||
/**
|
||||
* 保存产品详情
|
||||
*
|
||||
* @param idProduct
|
||||
* @param productContent
|
||||
* @param productContentHtml
|
||||
* @return
|
||||
* @param idProduct 产品主键
|
||||
* @param productContent 产品详情 markdown
|
||||
* @param productContentHtml 产品详情 html
|
||||
* @return 更新数量
|
||||
*/
|
||||
Integer insertProductContent(@Param("idProduct") Integer idProduct, @Param("productContent") String productContent, @Param("productContentHtml") String productContentHtml);
|
||||
Integer insertProductContent(@Param("idProduct") Long idProduct, @Param("productContent") String productContent, @Param("productContentHtml") String productContentHtml);
|
||||
|
||||
/**
|
||||
* 查询产品列表
|
||||
*
|
||||
* @return
|
||||
* @return 产品列表
|
||||
*/
|
||||
List<ProductDTO> selectProducts();
|
||||
|
||||
/**
|
||||
* 获取产品详情
|
||||
*
|
||||
* @param idProduct
|
||||
* @param type
|
||||
* @return
|
||||
* @param idProduct 产品 ID
|
||||
* @param type 获取类型
|
||||
* @return 产品信息
|
||||
*/
|
||||
ProductDTO selectProductDTOById(@Param("idProduct") Integer idProduct, @Param("type") Integer type);
|
||||
ProductDTO selectProductDTOById(@Param("idProduct") Long idProduct, @Param("type") Integer type);
|
||||
|
||||
/**
|
||||
* 获取在线产品
|
||||
* @return 产品信息
|
||||
*/
|
||||
List<ProductDTO> selectOnlineProducts();
|
||||
|
||||
/**
|
||||
* 保存产品详情
|
||||
*
|
||||
* @param idProduct 产品主键
|
||||
* @param productContent 产品详情 markdown
|
||||
* @param productContentHtml 产品详情 html
|
||||
* @return 更新数量
|
||||
*/
|
||||
Integer updateProductContent(@Param("idProduct") Long idProduct, @Param("productContent") String productContent, @Param("productContentHtml") String productContentHtml);
|
||||
|
||||
/**
|
||||
* @param idProduct 产品主键
|
||||
* @param status 状态
|
||||
* @return 更新成功状态
|
||||
*/
|
||||
int updateStatus(@Param("idProduct") Long idProduct, @Param("status") Integer status);
|
||||
}
|
||||
|
@ -16,17 +16,35 @@ import java.util.List;
|
||||
public interface ProductService extends Service<Product> {
|
||||
/**
|
||||
* 查询产品列表
|
||||
*
|
||||
* @return
|
||||
* @return 产品列表
|
||||
*/
|
||||
List<ProductDTO> findProducts();
|
||||
|
||||
/**
|
||||
* 获取产品详情
|
||||
*
|
||||
* @param idProduct
|
||||
* @param type
|
||||
* @return
|
||||
* @param idProduct 产品主键
|
||||
* @param type 数据类型
|
||||
* @return 产品详情
|
||||
*/
|
||||
ProductDTO findProductDTOById(Integer idProduct, Integer type);
|
||||
ProductDTO findProductDTOById(Long idProduct, Integer type);
|
||||
|
||||
/**
|
||||
* 获取在线商品
|
||||
* @return 产品列表
|
||||
*/
|
||||
List<ProductDTO> findOnlineProducts();
|
||||
|
||||
/**
|
||||
* @param product 产品信息
|
||||
* @return 产品信息
|
||||
*/
|
||||
Product postProduct(ProductDTO product);
|
||||
|
||||
/**
|
||||
* @param idProduct 产品主键
|
||||
* @param status 状态
|
||||
* @return 更新成功状态
|
||||
*/
|
||||
boolean updateStatus(Long idProduct, Integer status);
|
||||
}
|
||||
|
@ -5,9 +5,13 @@ import com.rymcu.forest.dto.ProductDTO;
|
||||
import com.rymcu.forest.entity.Product;
|
||||
import com.rymcu.forest.mapper.ProductMapper;
|
||||
import com.rymcu.forest.service.ProductService;
|
||||
import com.rymcu.forest.util.BeanCopierUtil;
|
||||
import com.rymcu.forest.web.api.common.UploadController;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -29,8 +33,53 @@ public class ProductServiceImpl extends AbstractService<Product> implements Prod
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProductDTO findProductDTOById(Integer idProduct, Integer type) {
|
||||
ProductDTO productDTO = productMapper.selectProductDTOById(idProduct, type);
|
||||
return productDTO;
|
||||
public ProductDTO findProductDTOById(Long idProduct, Integer type) {
|
||||
return productMapper.selectProductDTOById(idProduct, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProductDTO> findOnlineProducts() {
|
||||
return productMapper.selectOnlineProducts();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param product 产品信息
|
||||
* @return 产品信息
|
||||
*/
|
||||
@Override
|
||||
public Product postProduct(ProductDTO product) {
|
||||
boolean isUpdate = product.getIdProduct() > 0;
|
||||
if (StringUtils.isNotBlank(product.getProductImgType())) {
|
||||
String headImgUrl = UploadController.uploadBase64File(product.getProductImgUrl(), 0);
|
||||
product.setProductImgUrl(headImgUrl);
|
||||
}
|
||||
Product newProduct;
|
||||
if (isUpdate) {
|
||||
newProduct = productMapper.selectByPrimaryKey(product.getIdProduct());
|
||||
newProduct.setProductImgUrl(product.getProductImgUrl());
|
||||
newProduct.setProductTitle(product.getProductTitle());
|
||||
newProduct.setProductPrice(product.getProductPrice());
|
||||
newProduct.setProductDescription(product.getProductDescription());
|
||||
productMapper.updateByPrimaryKeySelective(newProduct);
|
||||
// 更新产品详情
|
||||
productMapper.updateProductContent(newProduct.getIdProduct(), product.getProductContent(), product.getProductContentHtml());
|
||||
} else {
|
||||
newProduct = new Product();
|
||||
BeanCopierUtil.convert(product, newProduct);
|
||||
newProduct.setCreatedTime(new Date());
|
||||
// 创建产品详情
|
||||
productMapper.insertProductContent(newProduct.getIdProduct(), product.getProductContent(), product.getProductContentHtml());
|
||||
}
|
||||
return newProduct;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param idProduct 产品主键
|
||||
* @param status 状态
|
||||
* @return 更新成功状态
|
||||
*/
|
||||
@Override
|
||||
public boolean updateStatus(Long idProduct, Integer status) {
|
||||
return productMapper.updateStatus(idProduct, status) > 0;
|
||||
}
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ public class AdminArticleController {
|
||||
|
||||
@PatchMapping("/update-status")
|
||||
public GlobalResult<Boolean> updateArticleStatus(@RequestBody ArticleUpdateStatusDTO article) {
|
||||
Long idArticle = article.getIdArticle();;
|
||||
Long idArticle = article.getIdArticle();
|
||||
String articleStatus = article.getArticleStatus();
|
||||
String remarks = article.getRemarks();
|
||||
return GlobalResultGenerator.genSuccessResult(articleService.updateStatus(idArticle, articleStatus, remarks));
|
||||
|
@ -141,14 +141,14 @@ public class CommonApiController {
|
||||
@GetMapping("/products")
|
||||
public GlobalResult<PageInfo<ProductDTO>> products(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "12") Integer rows) {
|
||||
PageHelper.startPage(page, rows);
|
||||
List<ProductDTO> list = productService.findProducts();
|
||||
List<ProductDTO> list = productService.findOnlineProducts();
|
||||
PageInfo<ProductDTO> pageInfo = new PageInfo<>(list);
|
||||
return GlobalResultGenerator.genSuccessResult(pageInfo);
|
||||
}
|
||||
|
||||
@GetMapping("/product/{id}")
|
||||
@VisitLogger
|
||||
public GlobalResult<ProductDTO> product(@PathVariable Integer id) {
|
||||
public GlobalResult<ProductDTO> product(@PathVariable Long id) {
|
||||
ProductDTO productDTO = productService.findProductDTOById(id, 1);
|
||||
return GlobalResultGenerator.genSuccessResult(productDTO);
|
||||
}
|
||||
|
@ -1,8 +1,17 @@
|
||||
package com.rymcu.forest.web.api.product;
|
||||
|
||||
import com.rymcu.forest.core.result.GlobalResult;
|
||||
import com.rymcu.forest.core.result.GlobalResultGenerator;
|
||||
import com.rymcu.forest.core.service.security.annotation.AuthorshipInterceptor;
|
||||
import com.rymcu.forest.core.service.security.annotation.SecurityInterceptor;
|
||||
import com.rymcu.forest.dto.ProductDTO;
|
||||
import com.rymcu.forest.entity.Product;
|
||||
import com.rymcu.forest.entity.Product;
|
||||
import com.rymcu.forest.entity.User;
|
||||
import com.rymcu.forest.enumerate.Module;
|
||||
import com.rymcu.forest.service.ProductService;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import com.rymcu.forest.util.UserUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
@ -20,4 +29,32 @@ public class ProductController {
|
||||
@Resource
|
||||
private ProductService productService;
|
||||
|
||||
@GetMapping("/detail/{idProduct}")
|
||||
public GlobalResult<ProductDTO> detail(@PathVariable Long idProduct, @RequestParam(defaultValue = "2") Integer type) {
|
||||
ProductDTO dto = productService.findProductDTOById(idProduct, type);
|
||||
return GlobalResultGenerator.genSuccessResult(dto);
|
||||
}
|
||||
|
||||
@PostMapping("/post")
|
||||
public GlobalResult<Product> add(@RequestBody ProductDTO product) {
|
||||
Product newProduct = productService.postProduct(product);
|
||||
return GlobalResultGenerator.genSuccessResult(newProduct);
|
||||
}
|
||||
|
||||
@PutMapping("/post")
|
||||
public GlobalResult<Product> update(@RequestBody ProductDTO product) {
|
||||
if (product.getIdProduct() == null || product.getIdProduct() == 0) {
|
||||
throw new IllegalArgumentException("产品主键参数异常!");
|
||||
}
|
||||
Product oldProduct = productService.postProduct(product);
|
||||
return GlobalResultGenerator.genSuccessResult(oldProduct);
|
||||
}
|
||||
|
||||
|
||||
@PatchMapping("/update-status")
|
||||
public GlobalResult<Boolean> updateStatus(@RequestBody Product product) {
|
||||
boolean flag = productService.updateStatus(product.getIdProduct(), product.getStatus());
|
||||
return GlobalResultGenerator.genSuccessResult(flag);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,6 +8,9 @@
|
||||
<result column="product_description" property="productDescription"></result>
|
||||
<result column="product_price" property="productPrice"></result>
|
||||
<result column="product_content" property="productContent"></result>
|
||||
<result column="created_time" property="createdTime"></result>
|
||||
<result column="status" property="status"></result>
|
||||
<result column="tags" property="tags"></result>
|
||||
</resultMap>
|
||||
<insert id="insertProductContent">
|
||||
insert into forest_product_content(id_product,
|
||||
@ -21,13 +24,25 @@
|
||||
sysdate(),
|
||||
sysdate())
|
||||
</insert>
|
||||
<update id="updateProductContent">
|
||||
update forest_product_content
|
||||
set product_content = #{productContent},
|
||||
product_content_html = #{productContentHtml},
|
||||
updated_time = sysdate()
|
||||
where id_product = #{idProduct}
|
||||
</update>
|
||||
<update id="updateStatus">
|
||||
update forest_product
|
||||
set status = #{status}
|
||||
where id_product = #{idProduct}
|
||||
</update>
|
||||
<select id="selectProducts" resultMap="DTOResultMap">
|
||||
select *
|
||||
select id, product_title, product_img_url, tags, product_description, product_price, weights, status
|
||||
from forest_product
|
||||
order by weights
|
||||
</select>
|
||||
<select id="selectProductDTOById" resultMap="DTOResultMap">
|
||||
select id, product_title,
|
||||
select id, product_title, product_img_url, tags, product_description, product_price, weights, status,
|
||||
<choose>
|
||||
<when test="type == 1">
|
||||
product_content_html as product_content,
|
||||
@ -39,4 +54,10 @@
|
||||
product_img_url from forest_product fp join forest_product_content fpc on fp.id = fpc.id_product
|
||||
where id = #{idProduct}
|
||||
</select>
|
||||
<select id="selectOnlineProducts" resultMap="DTOResultMap">
|
||||
select id, product_title, product_img_url, product_description, product_price
|
||||
from forest_product
|
||||
where status = 1
|
||||
order by weights
|
||||
</select>
|
||||
</mapper>
|
Loading…
Reference in New Issue
Block a user