yshop1.8发布,新增素材管理等,详细查看readme或登录网站后台查看
This commit is contained in:
30
README.md
30
README.md
@ -134,37 +134,23 @@ yshop基于当前流行技术组合的前后端分离商城系统: SpringBoot2
|
|||||||
- 1.3.1版本手机端新增商户管理、后台新增统计
|
- 1.3.1版本手机端新增商户管理、后台新增统计
|
||||||
- 1.3.2新增后台微信相关及其支付配置,新增自动回复配置
|
- 1.3.2新增后台微信相关及其支付配置,新增自动回复配置
|
||||||
- 1.3.3新增 后台微信图文发送功能,小程序配置,增加小程序授权等,修复一些bug等
|
- 1.3.3新增 后台微信图文发送功能,小程序配置,增加小程序授权等,修复一些bug等
|
||||||
- yshop1.4版本发布,更新如下:
|
- yshop1.4版本发布
|
||||||
- 1.1、新增积分签到
|
|
||||||
- 1.2、新增会员等级、任务等功能,新增会员价格等
|
|
||||||
- 1.3、修复Redisson linux系统启动报错问题
|
|
||||||
- 1.4、修复商户简单权限功能
|
|
||||||
- 1.5、修复加入购物车覆盖问题
|
|
||||||
- 1.6、修复拼团出现undefined
|
|
||||||
- 1.7、会员后台新增余额调整
|
|
||||||
- 1.8、修复新增配置数据有时候不成功问题等
|
|
||||||
- 1.4.1个人中心新增账单流水
|
- 1.4.1个人中心新增账单流水
|
||||||
- yshop1.4.2 发布更新如下:
|
- yshop1.4.2 发布更新如下:
|
||||||
- 1.商品新增多图评价
|
|
||||||
- 2.订单新增快递查询
|
|
||||||
- 1.4.3版本,后台图标更新,后台模块重新拆分,物流快递单独管理,导出最新sql
|
- 1.4.3版本,后台图标更新,后台模块重新拆分,物流快递单独管理,导出最新sql
|
||||||
- 1.4.4版本,新增模板消息通知、H5端商家管理发货修改及其列表时间显示修复
|
- 1.4.4版本,新增模板消息通知、H5端商家管理发货修改及其列表时间显示修复
|
||||||
- yshop1.5版本发布:
|
- yshop1.5版本发布:
|
||||||
- 1、新增秒杀功能
|
|
||||||
- 2、手机端新增H5支付
|
|
||||||
- 3、修复其他bug
|
|
||||||
- yshop1.6发布:
|
- yshop1.6发布:
|
||||||
- 1、新增砍价功能
|
|
||||||
- 2、新增加锁功能
|
|
||||||
- 3、修复其他bug
|
|
||||||
- yshop1.6.1发布:新增移动端浏览记录,下单增加简单ReentrantLock锁
|
- yshop1.6.1发布:新增移动端浏览记录,下单增加简单ReentrantLock锁
|
||||||
- yshop1.6.2发布:修复用户昵称带有表情导致入库失败问题,修复下单订单金额为0不能支付的问题
|
- yshop1.6.2发布:修复用户昵称带有表情导致入库失败问题,修复下单订单金额为0不能支付的问题
|
||||||
- yshop1.6.4发布:后台新增修改订单价格与备注优化订单详情显示明细,修复积分记录标题不显示的问题
|
- yshop1.6.4发布:后台新增修改订单价格与备注优化订单详情显示明细,修复积分记录标题不显示的问题
|
||||||
- yshop1.7 发布更新如下:
|
- yshop1.7 发布
|
||||||
- 1.后台升級eladmin2.4(前端,后台权限,代码生成器等重构,新增服务器监控等)
|
- yshop1.8发布:
|
||||||
- 2.修复商品分类一些问题
|
- 1、新增小程序支付与登录,后台新增小程序跳转页面,
|
||||||
- 3.修复redis缓存问题
|
- 2、后台新增图片素材管理
|
||||||
- 4.修复菜单控制台报error问题
|
- 3、本地上传与七牛云上传合并,修改一个yml即可两者随意切换
|
||||||
|
- 4、升级swagger-bootstrap,swaager统一配置迁移到common(防止注解冲突)
|
||||||
|
- 5、后台优化操作显示
|
||||||
|
|
||||||
|
|
||||||
#### 反馈交流
|
#### 反馈交流
|
||||||
|
2
pom.xml
2
pom.xml
@ -7,7 +7,7 @@
|
|||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop</artifactId>
|
<artifactId>yshop</artifactId>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>yshop-common</module>
|
<module>yshop-common</module>
|
||||||
|
20
sql/yshop1.8新表结构
Normal file
20
sql/yshop1.8新表结构
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
CREATE TABLE `yx_material` (
|
||||||
|
`id` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT 'PK',
|
||||||
|
`del_flag` char(2) COLLATE utf8mb4_bin NOT NULL DEFAULT '0' COMMENT '逻辑删除标记(0:显示;1:隐藏)',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`create_id` varchar(100) CHARACTER SET utf8 DEFAULT NULL COMMENT '创建者ID',
|
||||||
|
`type` char(2) COLLATE utf8mb4_bin NOT NULL COMMENT '类型1、图片;2、视频',
|
||||||
|
`group_id` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '分组ID',
|
||||||
|
`name` varchar(200) COLLATE utf8mb4_bin NOT NULL COMMENT '素材名',
|
||||||
|
`url` varchar(500) COLLATE utf8mb4_bin DEFAULT '' COMMENT '素材链接',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='素材库';
|
||||||
|
|
||||||
|
CREATE TABLE `yx_material_group` (
|
||||||
|
`id` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT 'PK',
|
||||||
|
`del_flag` char(2) COLLATE utf8mb4_bin NOT NULL DEFAULT '0' COMMENT '逻辑删除标记(0:显示;1:隐藏)',
|
||||||
|
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||||
|
`create_id` varchar(32) CHARACTER SET utf8 DEFAULT NULL COMMENT '创建者ID',
|
||||||
|
`name` varchar(200) COLLATE utf8mb4_bin NOT NULL COMMENT '分组名',
|
||||||
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='素材分组';
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>yshop</artifactId>
|
<artifactId>yshop</artifactId>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
@ -21,12 +21,12 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-tools</artifactId>
|
<artifactId>yshop-tools</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-mp</artifactId>
|
<artifactId>yshop-mp</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--jwt-->
|
<!--jwt-->
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>yshop</artifactId>
|
<artifactId>yshop</artifactId>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -195,15 +195,15 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
|
|||||||
String video = "avi mpg mpe mpeg asf wmv mov qt rm mp4 flv m4v webm ogv ogg";
|
String video = "avi mpg mpe mpeg asf wmv mov qt rm mp4 flv m4v webm ogv ogg";
|
||||||
String image = "bmp dib pcp dif wmf gif jpg tif eps psd cdr iff tga pcd mpt png jpeg";
|
String image = "bmp dib pcp dif wmf gif jpg tif eps psd cdr iff tga pcd mpt png jpeg";
|
||||||
if(image.contains(type)){
|
if(image.contains(type)){
|
||||||
return "图片";
|
return "pic";
|
||||||
} else if(documents.contains(type)){
|
} else if(documents.contains(type)){
|
||||||
return "文档";
|
return "txt";
|
||||||
} else if(music.contains(type)){
|
} else if(music.contains(type)){
|
||||||
return "音乐";
|
return "music";
|
||||||
} else if(video.contains(type)){
|
} else if(video.contains(type)){
|
||||||
return "视频";
|
return "vedio";
|
||||||
} else {
|
} else {
|
||||||
return "其他";
|
return "other";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>yshop</artifactId>
|
<artifactId>yshop</artifactId>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
@ -20,7 +20,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-common</artifactId>
|
<artifactId>yshop-common</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--模板引擎-->
|
<!--模板引擎-->
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>yshop</artifactId>
|
<artifactId>yshop</artifactId>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-common</artifactId>
|
<artifactId>yshop-common</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
@ -13,7 +13,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
<artifactId>yshop-monitor</artifactId>
|
<artifactId>yshop-monitor</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
|
|
||||||
<name>客户端监控模块</name>
|
<name>客户端监控模块</name>
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>yshop</artifactId>
|
<artifactId>yshop</artifactId>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
@ -31,7 +31,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-common</artifactId>
|
<artifactId>yshop-common</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>yshop</artifactId>
|
<artifactId>yshop</artifactId>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
@ -20,12 +20,12 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-logging</artifactId>
|
<artifactId>yshop-logging</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-mp</artifactId>
|
<artifactId>yshop-mp</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
@ -0,0 +1,62 @@
|
|||||||
|
package co.yixiang.modules.shop.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.bean.copier.CopyOptions;
|
||||||
|
import org.hibernate.annotations.CreationTimestamp;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Entity
|
||||||
|
@Data
|
||||||
|
@Table(name="yx_material")
|
||||||
|
public class YxMaterial implements Serializable {
|
||||||
|
|
||||||
|
/** PK */
|
||||||
|
@Id
|
||||||
|
@Column(name = "id")
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
|
||||||
|
/** 逻辑删除标记(0:显示;1:隐藏) */
|
||||||
|
@Column(name = "del_flag",nullable = false,insertable = false)
|
||||||
|
private String delFlag;
|
||||||
|
|
||||||
|
/** 创建时间 */
|
||||||
|
@Column(name = "create_time",nullable = false)
|
||||||
|
@CreationTimestamp
|
||||||
|
private Timestamp createTime;
|
||||||
|
|
||||||
|
|
||||||
|
/** 创建者ID */
|
||||||
|
@Column(name = "create_id")
|
||||||
|
private String createId;
|
||||||
|
|
||||||
|
/** 类型1、图片;2、视频 */
|
||||||
|
@Column(name = "type",nullable = false)
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
/** 分组ID */
|
||||||
|
@Column(name = "group_id")
|
||||||
|
private String groupId;
|
||||||
|
|
||||||
|
/** 素材名 */
|
||||||
|
@Column(name = "name",nullable = false)
|
||||||
|
@NotBlank
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/** 素材链接 */
|
||||||
|
@Column(name = "url")
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
public void copy(YxMaterial source){
|
||||||
|
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
package co.yixiang.modules.shop.domain;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.bean.copier.CopyOptions;
|
||||||
|
import org.hibernate.annotations.CreationTimestamp;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Entity
|
||||||
|
@Data
|
||||||
|
@Table(name="yx_material_group")
|
||||||
|
public class YxMaterialGroup implements Serializable {
|
||||||
|
|
||||||
|
/** PK */
|
||||||
|
@Id
|
||||||
|
@Column(name = "id")
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
|
||||||
|
/** 逻辑删除标记(0:显示;1:隐藏) */
|
||||||
|
@Column(name = "del_flag",nullable = false,insertable = false)
|
||||||
|
private String delFlag;
|
||||||
|
|
||||||
|
/** 创建时间 */
|
||||||
|
@Column(name = "create_time",nullable = false)
|
||||||
|
@CreationTimestamp
|
||||||
|
private Timestamp createTime;
|
||||||
|
|
||||||
|
|
||||||
|
/** 创建者ID */
|
||||||
|
@Column(name = "create_id")
|
||||||
|
private String createId;
|
||||||
|
|
||||||
|
/** 分组名 */
|
||||||
|
@Column(name = "name",nullable = false)
|
||||||
|
@NotBlank
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public void copy(YxMaterialGroup source){
|
||||||
|
BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
|
||||||
|
}
|
||||||
|
}
|
@ -51,6 +51,7 @@ public class YxSystemUserLevel implements Serializable {
|
|||||||
|
|
||||||
// 是否显示 1=显示,0=隐藏
|
// 是否显示 1=显示,0=隐藏
|
||||||
@Column(name = "is_show",nullable = false)
|
@Column(name = "is_show",nullable = false)
|
||||||
|
@NotNull(message = "请选择显示状态")
|
||||||
private Integer isShow;
|
private Integer isShow;
|
||||||
|
|
||||||
// 会员等级
|
// 会员等级
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
package co.yixiang.modules.shop.repository;
|
||||||
|
|
||||||
|
import co.yixiang.modules.shop.domain.YxMaterialGroup;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
public interface YxMaterialGroupRepository extends JpaRepository<YxMaterialGroup, String>, JpaSpecificationExecutor<YxMaterialGroup> {
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
package co.yixiang.modules.shop.repository;
|
||||||
|
|
||||||
|
import co.yixiang.modules.shop.domain.YxMaterial;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
public interface YxMaterialRepository extends JpaRepository<YxMaterial, String>, JpaSpecificationExecutor<YxMaterial> {
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package co.yixiang.modules.shop.rest;
|
||||||
|
|
||||||
|
|
||||||
|
import co.yixiang.aop.log.Log;
|
||||||
|
import co.yixiang.modules.shop.domain.YxMaterial;
|
||||||
|
import co.yixiang.modules.shop.service.YxMaterialService;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialQueryCriteria;
|
||||||
|
import co.yixiang.utils.SecurityUtils;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import io.swagger.annotations.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Api(tags = "素材管理管理")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/material")
|
||||||
|
public class YxMaterialController {
|
||||||
|
|
||||||
|
private final YxMaterialService yxMaterialService;
|
||||||
|
|
||||||
|
public YxMaterialController(YxMaterialService yxMaterialService) {
|
||||||
|
this.yxMaterialService = yxMaterialService;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping(value = "/page")
|
||||||
|
@Log("查询素材管理")
|
||||||
|
@ApiOperation("查询素材管理")
|
||||||
|
public ResponseEntity<Object> getYxMaterials(YxMaterialQueryCriteria criteria, Pageable pageable){
|
||||||
|
return new ResponseEntity<>(yxMaterialService.queryAll(criteria,pageable),HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping
|
||||||
|
@Log("新增素材管理")
|
||||||
|
@ApiOperation("新增素材管理")
|
||||||
|
public ResponseEntity<Object> create(@Validated @RequestBody YxMaterial resources){
|
||||||
|
resources.setCreateId(SecurityUtils.getUsername());
|
||||||
|
return new ResponseEntity<>(yxMaterialService.create(resources),HttpStatus.CREATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping
|
||||||
|
@Log("修改素材管理")
|
||||||
|
@ApiOperation("修改素材管理")
|
||||||
|
public ResponseEntity<Object> update(@Validated @RequestBody YxMaterial resources){
|
||||||
|
yxMaterialService.update(resources);
|
||||||
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Log("删除素材管理")
|
||||||
|
@ApiOperation("删除素材管理")
|
||||||
|
@DeleteMapping(value = "/{id}")
|
||||||
|
public ResponseEntity<Object> deleteAll(@PathVariable String id) {
|
||||||
|
yxMaterialService.deleteById(id);
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package co.yixiang.modules.shop.rest;
|
||||||
|
|
||||||
|
import co.yixiang.aop.log.Log;
|
||||||
|
import co.yixiang.modules.shop.domain.YxMaterialGroup;
|
||||||
|
import co.yixiang.modules.shop.service.YxMaterialGroupService;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialGroupQueryCriteria;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import io.swagger.annotations.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Api(tags = "素材分组管理")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/materialgroup")
|
||||||
|
public class YxMaterialGroupController {
|
||||||
|
|
||||||
|
private final YxMaterialGroupService yxMaterialGroupService;
|
||||||
|
|
||||||
|
public YxMaterialGroupController(YxMaterialGroupService yxMaterialGroupService) {
|
||||||
|
this.yxMaterialGroupService = yxMaterialGroupService;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping(value = "/page")
|
||||||
|
@Log("查询素材分组")
|
||||||
|
@ApiOperation("查询素材分组")
|
||||||
|
public ResponseEntity<Object> getYxMaterialGroups(YxMaterialGroupQueryCriteria criteria, Pageable pageable){
|
||||||
|
return new ResponseEntity<>(yxMaterialGroupService.queryAll(criteria,pageable),HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping
|
||||||
|
@Log("新增素材分组")
|
||||||
|
@ApiOperation("新增素材分组")
|
||||||
|
public ResponseEntity<Object> create(@Validated @RequestBody YxMaterialGroup resources){
|
||||||
|
return new ResponseEntity<>(yxMaterialGroupService.create(resources),HttpStatus.CREATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping
|
||||||
|
@Log("修改素材分组")
|
||||||
|
@ApiOperation("修改素材分组")
|
||||||
|
public ResponseEntity<Object> update(@Validated @RequestBody YxMaterialGroup resources){
|
||||||
|
yxMaterialGroupService.update(resources);
|
||||||
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Log("删除素材分组")
|
||||||
|
@ApiOperation("删除素材分组")
|
||||||
|
@DeleteMapping(value = "/{id}")
|
||||||
|
public ResponseEntity<Object> deleteAll(@PathVariable String id) {
|
||||||
|
yxMaterialGroupService.deleteById(id);
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package co.yixiang.modules.shop.service;
|
||||||
|
|
||||||
|
import co.yixiang.modules.shop.domain.YxMaterialGroup;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialGroupDto;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialGroupQueryCriteria;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.List;
|
||||||
|
import java.io.IOException;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
public interface YxMaterialGroupService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询数据分页
|
||||||
|
* @param criteria 条件
|
||||||
|
* @param pageable 分页参数
|
||||||
|
* @return Map<String,Object>
|
||||||
|
*/
|
||||||
|
Map<String,Object> queryAll(YxMaterialGroupQueryCriteria criteria, Pageable pageable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有数据不分页
|
||||||
|
* @param criteria 条件参数
|
||||||
|
* @return List<YxMaterialGroupDto>
|
||||||
|
*/
|
||||||
|
List<YxMaterialGroupDto> queryAll(YxMaterialGroupQueryCriteria criteria);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据ID查询
|
||||||
|
* @param id ID
|
||||||
|
* @return YxMaterialGroupDto
|
||||||
|
*/
|
||||||
|
YxMaterialGroupDto findById(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建
|
||||||
|
* @param resources /
|
||||||
|
* @return YxMaterialGroupDto
|
||||||
|
*/
|
||||||
|
YxMaterialGroupDto create(YxMaterialGroup resources);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑
|
||||||
|
* @param resources /
|
||||||
|
*/
|
||||||
|
void update(YxMaterialGroup resources);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 多选删除
|
||||||
|
* @param ids /
|
||||||
|
*/
|
||||||
|
void deleteAll(String[] ids);
|
||||||
|
|
||||||
|
void deleteById(String id);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package co.yixiang.modules.shop.service;
|
||||||
|
|
||||||
|
import co.yixiang.modules.shop.domain.YxMaterial;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialDto;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialQueryCriteria;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.List;
|
||||||
|
import java.io.IOException;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
public interface YxMaterialService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询数据分页
|
||||||
|
* @param criteria 条件
|
||||||
|
* @param pageable 分页参数
|
||||||
|
* @return Map<String,Object>
|
||||||
|
*/
|
||||||
|
Map<String,Object> queryAll(YxMaterialQueryCriteria criteria, Pageable pageable);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有数据不分页
|
||||||
|
* @param criteria 条件参数
|
||||||
|
* @return List<YxMaterialDto>
|
||||||
|
*/
|
||||||
|
List<YxMaterialDto> queryAll(YxMaterialQueryCriteria criteria);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据ID查询
|
||||||
|
* @param id ID
|
||||||
|
* @return YxMaterialDto
|
||||||
|
*/
|
||||||
|
YxMaterialDto findById(String id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建
|
||||||
|
* @param resources /
|
||||||
|
* @return YxMaterialDto
|
||||||
|
*/
|
||||||
|
YxMaterialDto create(YxMaterial resources);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑
|
||||||
|
* @param resources /
|
||||||
|
*/
|
||||||
|
void update(YxMaterial resources);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 多选删除
|
||||||
|
* @param ids /
|
||||||
|
*/
|
||||||
|
void deleteAll(String[] ids);
|
||||||
|
|
||||||
|
void deleteById(String id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package co.yixiang.modules.shop.service.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class YxMaterialDto implements Serializable {
|
||||||
|
|
||||||
|
/** PK */
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/** 逻辑删除标记(0:显示;1:隐藏) */
|
||||||
|
private String delFlag;
|
||||||
|
|
||||||
|
/** 创建时间 */
|
||||||
|
private Timestamp createTime;
|
||||||
|
|
||||||
|
|
||||||
|
/** 创建者ID */
|
||||||
|
private String createId;
|
||||||
|
|
||||||
|
/** 类型1、图片;2、视频 */
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
/** 分组ID */
|
||||||
|
private String groupId;
|
||||||
|
|
||||||
|
/** 素材名 */
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/** 素材链接 */
|
||||||
|
private String url;
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package co.yixiang.modules.shop.service.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class YxMaterialGroupDto implements Serializable {
|
||||||
|
|
||||||
|
/** PK */
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
/** 逻辑删除标记(0:显示;1:隐藏) */
|
||||||
|
private String delFlag;
|
||||||
|
|
||||||
|
/** 创建时间 */
|
||||||
|
private Timestamp createTime;
|
||||||
|
|
||||||
|
/** 创建者ID */
|
||||||
|
private String createId;
|
||||||
|
|
||||||
|
/** 分组名 */
|
||||||
|
private String name;
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package co.yixiang.modules.shop.service.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class YxMaterialGroupQueryCriteria{
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package co.yixiang.modules.shop.service.dto;
|
||||||
|
|
||||||
|
import co.yixiang.annotation.Query;
|
||||||
|
import lombok.Data;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class YxMaterialQueryCriteria{
|
||||||
|
@Query
|
||||||
|
private String groupId;
|
||||||
|
}
|
@ -0,0 +1,99 @@
|
|||||||
|
package co.yixiang.modules.shop.service.impl;
|
||||||
|
|
||||||
|
import co.yixiang.modules.shop.domain.YxMaterialGroup;
|
||||||
|
import co.yixiang.modules.shop.repository.YxMaterialGroupRepository;
|
||||||
|
import co.yixiang.modules.shop.service.YxMaterialGroupService;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialGroupDto;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialGroupQueryCriteria;
|
||||||
|
import co.yixiang.modules.shop.service.mapper.YxMaterialGroupMapper;
|
||||||
|
import co.yixiang.utils.FileUtil;
|
||||||
|
import co.yixiang.utils.PageUtil;
|
||||||
|
import co.yixiang.utils.QueryHelp;
|
||||||
|
import co.yixiang.utils.ValidationUtil;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
// 默认不使用缓存
|
||||||
|
//import org.springframework.cache.annotation.CacheConfig;
|
||||||
|
//import org.springframework.cache.annotation.CacheEvict;
|
||||||
|
//import org.springframework.cache.annotation.Cacheable;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.io.IOException;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
//@CacheConfig(cacheNames = "yxMaterialGroup")
|
||||||
|
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
|
||||||
|
public class YxMaterialGroupServiceImpl implements YxMaterialGroupService {
|
||||||
|
|
||||||
|
private final YxMaterialGroupRepository yxMaterialGroupRepository;
|
||||||
|
|
||||||
|
private final YxMaterialGroupMapper yxMaterialGroupMapper;
|
||||||
|
|
||||||
|
public YxMaterialGroupServiceImpl(YxMaterialGroupRepository yxMaterialGroupRepository, YxMaterialGroupMapper yxMaterialGroupMapper) {
|
||||||
|
this.yxMaterialGroupRepository = yxMaterialGroupRepository;
|
||||||
|
this.yxMaterialGroupMapper = yxMaterialGroupMapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@Cacheable
|
||||||
|
public Map<String,Object> queryAll(YxMaterialGroupQueryCriteria criteria, Pageable pageable){
|
||||||
|
Page<YxMaterialGroup> page = yxMaterialGroupRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
||||||
|
return PageUtil.toPage(page.map(yxMaterialGroupMapper::toDto));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@Cacheable
|
||||||
|
public List<YxMaterialGroupDto> queryAll(YxMaterialGroupQueryCriteria criteria){
|
||||||
|
return yxMaterialGroupMapper.toDto(yxMaterialGroupRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@Cacheable(key = "#p0")
|
||||||
|
public YxMaterialGroupDto findById(String id) {
|
||||||
|
YxMaterialGroup yxMaterialGroup = yxMaterialGroupRepository.findById(id).orElseGet(YxMaterialGroup::new);
|
||||||
|
ValidationUtil.isNull(yxMaterialGroup.getId(),"YxMaterialGroup","id",id);
|
||||||
|
return yxMaterialGroupMapper.toDto(yxMaterialGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@CacheEvict(allEntries = true)
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public YxMaterialGroupDto create(YxMaterialGroup resources) {
|
||||||
|
resources.setId(IdUtil.simpleUUID());
|
||||||
|
return yxMaterialGroupMapper.toDto(yxMaterialGroupRepository.save(resources));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@CacheEvict(allEntries = true)
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void update(YxMaterialGroup resources) {
|
||||||
|
YxMaterialGroup yxMaterialGroup = yxMaterialGroupRepository.findById(resources.getId()).orElseGet(YxMaterialGroup::new);
|
||||||
|
ValidationUtil.isNull( yxMaterialGroup.getId(),"YxMaterialGroup","id",resources.getId());
|
||||||
|
yxMaterialGroup.copy(resources);
|
||||||
|
yxMaterialGroupRepository.save(yxMaterialGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@CacheEvict(allEntries = true)
|
||||||
|
public void deleteAll(String[] ids) {
|
||||||
|
for (String id : ids) {
|
||||||
|
yxMaterialGroupRepository.deleteById(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteById(String id) {
|
||||||
|
yxMaterialGroupRepository.deleteById(id);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,99 @@
|
|||||||
|
package co.yixiang.modules.shop.service.impl;
|
||||||
|
|
||||||
|
import co.yixiang.modules.shop.domain.YxMaterial;
|
||||||
|
import co.yixiang.modules.shop.repository.YxMaterialRepository;
|
||||||
|
import co.yixiang.modules.shop.service.YxMaterialService;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialDto;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialQueryCriteria;
|
||||||
|
import co.yixiang.modules.shop.service.mapper.YxMaterialMapper;
|
||||||
|
import co.yixiang.utils.FileUtil;
|
||||||
|
import co.yixiang.utils.PageUtil;
|
||||||
|
import co.yixiang.utils.QueryHelp;
|
||||||
|
import co.yixiang.utils.ValidationUtil;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
// 默认不使用缓存
|
||||||
|
//import org.springframework.cache.annotation.CacheConfig;
|
||||||
|
//import org.springframework.cache.annotation.CacheEvict;
|
||||||
|
//import org.springframework.cache.annotation.Cacheable;
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.io.IOException;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
//@CacheConfig(cacheNames = "yxMaterial")
|
||||||
|
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
|
||||||
|
public class YxMaterialServiceImpl implements YxMaterialService {
|
||||||
|
|
||||||
|
private final YxMaterialRepository yxMaterialRepository;
|
||||||
|
|
||||||
|
private final YxMaterialMapper yxMaterialMapper;
|
||||||
|
|
||||||
|
public YxMaterialServiceImpl(YxMaterialRepository yxMaterialRepository, YxMaterialMapper yxMaterialMapper) {
|
||||||
|
this.yxMaterialRepository = yxMaterialRepository;
|
||||||
|
this.yxMaterialMapper = yxMaterialMapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@Cacheable
|
||||||
|
public Map<String,Object> queryAll(YxMaterialQueryCriteria criteria, Pageable pageable){
|
||||||
|
Page<YxMaterial> page = yxMaterialRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
|
||||||
|
return PageUtil.toPage(page.map(yxMaterialMapper::toDto));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@Cacheable
|
||||||
|
public List<YxMaterialDto> queryAll(YxMaterialQueryCriteria criteria){
|
||||||
|
return yxMaterialMapper.toDto(yxMaterialRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@Cacheable(key = "#p0")
|
||||||
|
public YxMaterialDto findById(String id) {
|
||||||
|
YxMaterial yxMaterial = yxMaterialRepository.findById(id).orElseGet(YxMaterial::new);
|
||||||
|
ValidationUtil.isNull(yxMaterial.getId(),"YxMaterial","id",id);
|
||||||
|
return yxMaterialMapper.toDto(yxMaterial);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@CacheEvict(allEntries = true)
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public YxMaterialDto create(YxMaterial resources) {
|
||||||
|
resources.setId(IdUtil.simpleUUID());
|
||||||
|
return yxMaterialMapper.toDto(yxMaterialRepository.save(resources));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@CacheEvict(allEntries = true)
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void update(YxMaterial resources) {
|
||||||
|
YxMaterial yxMaterial = yxMaterialRepository.findById(resources.getId()).orElseGet(YxMaterial::new);
|
||||||
|
ValidationUtil.isNull( yxMaterial.getId(),"YxMaterial","id",resources.getId());
|
||||||
|
yxMaterial.copy(resources);
|
||||||
|
yxMaterialRepository.save(yxMaterial);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
//@CacheEvict(allEntries = true)
|
||||||
|
public void deleteAll(String[] ids) {
|
||||||
|
for (String id : ids) {
|
||||||
|
yxMaterialRepository.deleteById(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteById(String id) {
|
||||||
|
yxMaterialRepository.deleteById(id);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package co.yixiang.modules.shop.service.mapper;
|
||||||
|
|
||||||
|
|
||||||
|
import co.yixiang.base.BaseMapper;
|
||||||
|
import co.yixiang.modules.shop.domain.YxMaterialGroup;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialGroupDto;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.ReportingPolicy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||||
|
public interface YxMaterialGroupMapper extends BaseMapper<YxMaterialGroupDto, YxMaterialGroup> {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package co.yixiang.modules.shop.service.mapper;
|
||||||
|
|
||||||
|
|
||||||
|
import co.yixiang.base.BaseMapper;
|
||||||
|
import co.yixiang.modules.shop.domain.YxMaterial;
|
||||||
|
import co.yixiang.modules.shop.service.dto.YxMaterialDto;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.ReportingPolicy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
|
||||||
|
public interface YxMaterialMapper extends BaseMapper<YxMaterialDto, YxMaterial> {
|
||||||
|
|
||||||
|
}
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>yshop</artifactId>
|
<artifactId>yshop</artifactId>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
@ -21,7 +21,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-generator</artifactId>
|
<artifactId>yshop-generator</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
@ -34,19 +34,19 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-tools</artifactId>
|
<artifactId>yshop-tools</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-shop</artifactId>
|
<artifactId>yshop-shop</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-mp</artifactId>
|
<artifactId>yshop-mp</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
@ -85,4 +85,4 @@ file:
|
|||||||
# 文件大小 /M
|
# 文件大小 /M
|
||||||
maxSize: 100
|
maxSize: 100
|
||||||
avatarMaxSize: 5
|
avatarMaxSize: 5
|
||||||
localUrl: http://localhost:8000
|
localUrl:
|
@ -6,7 +6,7 @@ spring:
|
|||||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||||
url: jdbc:log4jdbc:mysql://localhost:3306/yshop?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
|
url: jdbc:log4jdbc:mysql://localhost:3306/yshop?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
|
||||||
username: yshop
|
username: yshop
|
||||||
password:
|
password:
|
||||||
|
|
||||||
# 初始化配置
|
# 初始化配置
|
||||||
initial-size: 3
|
initial-size: 3
|
||||||
@ -90,4 +90,4 @@ file:
|
|||||||
# 文件大小 /M
|
# 文件大小 /M
|
||||||
maxSize: 100
|
maxSize: 100
|
||||||
avatarMaxSize: 5
|
avatarMaxSize: 5
|
||||||
localUrl: https://yshopapi.dayouqiantu.cn
|
localUrl:
|
@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>yshop</artifactId>
|
<artifactId>yshop</artifactId>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
@ -23,7 +23,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>co.yixiang</groupId>
|
<groupId>co.yixiang</groupId>
|
||||||
<artifactId>yshop-logging</artifactId>
|
<artifactId>yshop-logging</artifactId>
|
||||||
<version>1.7</version>
|
<version>1.8</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--邮件依赖-->
|
<!--邮件依赖-->
|
||||||
|
@ -0,0 +1,71 @@
|
|||||||
|
package co.yixiang.rest;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import co.yixiang.annotation.AnonymousAccess;
|
||||||
|
import co.yixiang.aop.log.Log;
|
||||||
|
import co.yixiang.domain.LocalStorage;
|
||||||
|
import co.yixiang.domain.QiniuContent;
|
||||||
|
import co.yixiang.service.LocalStorageService;
|
||||||
|
import co.yixiang.service.QiNiuService;
|
||||||
|
import co.yixiang.service.dto.LocalStorageDTO;
|
||||||
|
import co.yixiang.service.dto.LocalStorageQueryCriteria;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author hupeng
|
||||||
|
* @date 2020-01-09
|
||||||
|
*/
|
||||||
|
@Api(tags = "上传统一管理")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/upload")
|
||||||
|
public class UploadController {
|
||||||
|
|
||||||
|
@Value("${file.localUrl}")
|
||||||
|
private String localUrl;
|
||||||
|
|
||||||
|
private final LocalStorageService localStorageService;
|
||||||
|
|
||||||
|
private final QiNiuService qiNiuService;
|
||||||
|
|
||||||
|
public UploadController(LocalStorageService localStorageService,QiNiuService qiNiuService) {
|
||||||
|
this.localStorageService = localStorageService;
|
||||||
|
this.qiNiuService = qiNiuService;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ApiOperation("上传文件")
|
||||||
|
@PostMapping
|
||||||
|
@AnonymousAccess
|
||||||
|
public ResponseEntity<Object> create(@RequestParam(defaultValue = "") String name, @RequestParam("file") MultipartFile file){
|
||||||
|
String url = "";
|
||||||
|
if(StrUtil.isNotEmpty(localUrl)){ //存在走本地
|
||||||
|
LocalStorageDTO localStorageDTO = localStorageService.create(name, file);
|
||||||
|
url = localUrl+"/file/"+localStorageDTO.getType()+"/"+localStorageDTO.getRealName();
|
||||||
|
}else{//走七牛云
|
||||||
|
QiniuContent qiniuContent = qiNiuService.upload(file,qiNiuService.find());
|
||||||
|
url = qiniuContent.getUrl();
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String,Object> map = new HashMap<>(2);
|
||||||
|
map.put("errno",0);
|
||||||
|
map.put("link",url);
|
||||||
|
return new ResponseEntity(map,HttpStatus.CREATED);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Reference in New Issue
Block a user