Commit 6810ef4e authored by lixinglin's avatar lixinglin

轮播视频,上传封面

parent be5c1e0d
package com.ruoyi.system.controller; package com.ruoyi.system.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.VO.BaseInfoParam; import com.ruoyi.system.VO.BaseInfoParam;
import com.ruoyi.system.VO.BaseInfoVO; import com.ruoyi.system.VO.BaseInfoVO;
import com.ruoyi.system.domain.DevelopmentInfo; import com.ruoyi.system.domain.DevelopmentInfo;
import com.ruoyi.system.domain.MegalopolisInfo; import com.ruoyi.system.domain.MegalopolisInfo;
import com.ruoyi.system.domain.ParkInfo; import com.ruoyi.system.domain.ParkInfo;
import com.ruoyi.system.service.*; import com.ruoyi.system.domain.SysCarouselInfo;
import com.ruoyi.system.service.IDevelopmentInfoService;
import com.ruoyi.system.service.IMegalopolisInfoService;
import com.ruoyi.system.service.IParkInfoService;
import com.ruoyi.system.service.ISysCarouselInfoService;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.domain.SysCarouselInfo;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* 轮播图信息Controller * 轮播图信息Controller
...@@ -62,6 +60,16 @@ public class SysCarouselInfoController extends BaseController ...@@ -62,6 +60,16 @@ public class SysCarouselInfoController extends BaseController
return prefix + "/info"; return prefix + "/info";
} }
@GetMapping("/videoCover")
public String industry(HttpServletRequest request, ModelMap mmap)
{
String id = request.getParameter("videoId");
SysCarouselInfo sysCarouselInfo = sysCarouselInfoService.selectSysCarouselInfoById(Long.parseLong(id));
mmap.put("sysCarouselInfo", sysCarouselInfo);
mmap.put("id",id);
return prefix + "/video_cover";
}
/** /**
* 查询轮播图信息列表 * 查询轮播图信息列表
*/ */
...@@ -122,6 +130,20 @@ public class SysCarouselInfoController extends BaseController ...@@ -122,6 +130,20 @@ public class SysCarouselInfoController extends BaseController
return prefix + "/edit"; return prefix + "/edit";
} }
/**
* 保存封面
*/
@Log(title = "保存封面", businessType = BusinessType.UPDATE)
@PostMapping("/editVideoCover")
@ResponseBody
public AjaxResult editVideoCover(SysCarouselInfo sysCarouselInfo)
{
return toAjax(sysCarouselInfoService.updateVideoCover(sysCarouselInfo));
}
/** /**
* 修改保存轮播图信息 * 修改保存轮播图信息
*/ */
......
...@@ -11,47 +11,72 @@ import lombok.Data; ...@@ -11,47 +11,72 @@ import lombok.Data;
* @date 2023-11-28 * @date 2023-11-28
*/ */
@Data @Data
public class SysCarouselInfo extends BaseEntity public class SysCarouselInfo extends BaseEntity {
{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 主键id */ /**
* 主键id
*/
private Long id; private Long id;
/** 图片地址链接 */ /**
* 图片地址链接
*/
@Excel(name = "图片地址链接") @Excel(name = "图片地址链接")
private String imgUrl; private String imgUrl;
/** 图片描述 */ /**
@Excel(name = "描述") * 图片描述
*/
@Excel(name = "图片描述")
private String description; private String description;
/** 图片状态(0-禁用;1-可用) */ /**
@Excel(name = "状态", readConverterExp = "0=-禁用;1-可用") * 图片状态(0-禁用;1-可用)
*/
@Excel(name = "图片状态", readConverterExp = "0=-禁用;1-可用")
private Integer status; private Integer status;
/** 类型(0 -都市圈、1-开发区、2-园区、3-首页) */ /**
@Excel(name = "资源所属类型", readConverterExp = "0=,-=都市圈、1-开发区、2-园区、3-首页") * 类型(0 -都市圈、1-开发区、2-园区、3-首页)
*/
@Excel(name = "类型", readConverterExp = "0=,-=都市圈、1-开发区、2-园区、3-首页")
private Integer type; private Integer type;
/** 排序 */ /**
* 排序
*/
@Excel(name = "排序") @Excel(name = "排序")
private Integer orderNumber; private Integer orderNumber;
/** 关联id */ /**
* 关联id
*/
@Excel(name = "关联id") @Excel(name = "关联id")
private Long associationId; private Long associationId;
/** 关联名称 */ /**
* 关联名称
*/
@Excel(name = "关联名称") @Excel(name = "关联名称")
private String associationName; private String associationName;
/** 转跳链接 */ /**
* 转跳链接
*/
@Excel(name = "转跳链接") @Excel(name = "转跳链接")
private String linkUrl; private String linkUrl;
/** 类型 1-图片 2-视频 3-其他 */ /**
@Excel(name = "类型 1-图片 2-视频 3-其他") * 类型 1-图 2-视频 3.其他
*/
@Excel(name = "类型 1-图 2-视频 3.其他")
private Integer urlType; private Integer urlType;
/**
* 视频封面
*/
@Excel(name = "视频封面")
private String videoCover;
} }
package com.ruoyi.system.service; package com.ruoyi.system.service;
import java.util.List;
import com.ruoyi.system.domain.SysCarouselInfo; import com.ruoyi.system.domain.SysCarouselInfo;
import java.util.List;
/** /**
* 轮播图信息Service接口 * 轮播图信息Service接口
* *
...@@ -43,6 +44,8 @@ public interface ISysCarouselInfoService ...@@ -43,6 +44,8 @@ public interface ISysCarouselInfoService
*/ */
public int updateSysCarouselInfo(SysCarouselInfo sysCarouselInfo); public int updateSysCarouselInfo(SysCarouselInfo sysCarouselInfo);
int updateVideoCover(SysCarouselInfo sysCarouselInfo);
/** /**
* 批量删除轮播图信息 * 批量删除轮播图信息
* *
......
...@@ -5,6 +5,7 @@ import com.ruoyi.common.utils.DateUtils; ...@@ -5,6 +5,7 @@ import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.SysCarouselInfo; import com.ruoyi.system.domain.SysCarouselInfo;
import com.ruoyi.system.mapper.SysCarouselInfoMapper; import com.ruoyi.system.mapper.SysCarouselInfoMapper;
import com.ruoyi.system.service.ISysCarouselInfoService; import com.ruoyi.system.service.ISysCarouselInfoService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -104,6 +105,17 @@ public class SysCarouselInfoServiceImpl implements ISysCarouselInfoService { ...@@ -104,6 +105,17 @@ public class SysCarouselInfoServiceImpl implements ISysCarouselInfoService {
return sysCarouselInfoMapper.updateSysCarouselInfo(sysCarouselInfo); return sysCarouselInfoMapper.updateSysCarouselInfo(sysCarouselInfo);
} }
@Override
public int updateVideoCover(SysCarouselInfo sysCarouselInfo) {
Long id = sysCarouselInfo.getId();
SysCarouselInfo sysCarouselInfo1 = sysCarouselInfoMapper.selectSysCarouselInfoById(id);
String videoCover = sysCarouselInfo.getVideoCover();
if ("".equals(videoCover) || !ObjectUtils.isEmpty(videoCover)) {
sysCarouselInfo1.setVideoCover(videoCover);
}
return sysCarouselInfoMapper.updateSysCarouselInfo(sysCarouselInfo1);
}
/** /**
* 批量删除轮播图信息 * 批量删除轮播图信息
* *
......
...@@ -17,10 +17,11 @@ ...@@ -17,10 +17,11 @@
<result property="associationName" column="association_name" /> <result property="associationName" column="association_name" />
<result property="linkUrl" column="link_url" /> <result property="linkUrl" column="link_url" />
<result property="urlType" column="url_type" /> <result property="urlType" column="url_type" />
<result property="videoCover" column="video_cover" />
</resultMap> </resultMap>
<sql id="selectSysCarouselInfoVo"> <sql id="selectSysCarouselInfoVo">
select id, create_time, update_time, img_url, description, status, type, order_number, association_id, association_name, link_url, url_type from sys_carousel_info select id, create_time, update_time, img_url, description, status, type, order_number, association_id, association_name, link_url, url_type, video_cover from sys_carousel_info
</sql> </sql>
<select id="selectSysCarouselInfoList" parameterType="SysCarouselInfo" resultMap="SysCarouselInfoResult"> <select id="selectSysCarouselInfoList" parameterType="SysCarouselInfo" resultMap="SysCarouselInfoResult">
...@@ -34,7 +35,8 @@ ...@@ -34,7 +35,8 @@
<if test="associationId != null "> and association_id = #{associationId}</if> <if test="associationId != null "> and association_id = #{associationId}</if>
<if test="associationName != null and associationName != ''"> and association_name like concat('%', #{associationName}, '%')</if> <if test="associationName != null and associationName != ''"> and association_name like concat('%', #{associationName}, '%')</if>
<if test="linkUrl != null and linkUrl != ''"> and link_url = #{linkUrl}</if> <if test="linkUrl != null and linkUrl != ''"> and link_url = #{linkUrl}</if>
<if test="urlType != null and urlType != ''"> and url_type = #{urlType}</if> <if test="urlType != null "> and url_type = #{urlType}</if>
<if test="videoCover != null and videoCover != ''"> and video_cover = #{videoCover}</if>
</where> </where>
</select> </select>
...@@ -57,6 +59,7 @@ ...@@ -57,6 +59,7 @@
<if test="associationName != null">association_name,</if> <if test="associationName != null">association_name,</if>
<if test="linkUrl != null">link_url,</if> <if test="linkUrl != null">link_url,</if>
<if test="urlType != null">url_type,</if> <if test="urlType != null">url_type,</if>
<if test="videoCover != null">video_cover,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
...@@ -70,6 +73,7 @@ ...@@ -70,6 +73,7 @@
<if test="associationName != null">#{associationName},</if> <if test="associationName != null">#{associationName},</if>
<if test="linkUrl != null">#{linkUrl},</if> <if test="linkUrl != null">#{linkUrl},</if>
<if test="urlType != null">#{urlType},</if> <if test="urlType != null">#{urlType},</if>
<if test="videoCover != null">#{videoCover},</if>
</trim> </trim>
</insert> </insert>
...@@ -87,6 +91,7 @@ ...@@ -87,6 +91,7 @@
<if test="associationName != null">association_name = #{associationName},</if> <if test="associationName != null">association_name = #{associationName},</if>
<if test="linkUrl != null">link_url = #{linkUrl},</if> <if test="linkUrl != null">link_url = #{linkUrl},</if>
<if test="urlType != null">url_type = #{urlType},</if> <if test="urlType != null">url_type = #{urlType},</if>
<if test="videoCover != null">video_cover = #{videoCover},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>
......
...@@ -91,6 +91,8 @@ ...@@ -91,6 +91,8 @@
removeUrl: prefix + "/remove", removeUrl: prefix + "/remove",
exportUrl: prefix + "/export", exportUrl: prefix + "/export",
modalName: "轮播图信息", modalName: "轮播图信息",
sortName: "id",
sortOrder: "desc",
columns: [{ columns: [{
checkbox: true checkbox: true
}, },
...@@ -108,7 +110,7 @@ ...@@ -108,7 +110,7 @@
actions.push('<img style="width:50px;height:50px" src=' + value + '>'); actions.push('<img style="width:50px;height:50px" src=' + value + '>');
} else if (urlType == 2) { } else if (urlType == 2) {
actions.push actions.push
('<video width="50px" height="50px" controls>' + ('<video style="width:50px;height:50px" controls>' +
'<source src="' + value + '" type="video/mp4">' + '<source src="' + value + '" type="video/mp4">' +
' 您的浏览器不支持Video标签。' + ' 您的浏览器不支持Video标签。' +
'</video>'); '</video>');
...@@ -171,6 +173,18 @@ ...@@ -171,6 +173,18 @@
align: 'center', align: 'center',
formatter: function (value, row, index) { formatter: function (value, row, index) {
var actions = []; var actions = [];
let urlType = row.urlType;
if (urlType == 2) {
var title = "\'编辑封面\'";
var url = "\'/carousel/info/videoCover?videoId=" + row.id + "\'";
actions.push(
'<a class="btn btn-primary btn-xs ' + editFlag +
'" href="javascript:void(0)"' +
' onclick="$.modal.open(' + title + ',' + url + ')">' +
'<i class="fa fa-edit"></i>' +
'编辑封面</a> '
);
}
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> '); actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>'); actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>');
return actions.join(''); return actions.join('');
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('封面信息')"/>
<th:block th:include="include :: bootstrap-fileinput-css"/>
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-info-edit" th:object="${sysCarouselInfo}">
<input name="id" th:field="*{id}" type="hidden">
<div class="form-group">
<label class="col-sm-3 control-label">图片地址链接:</label>
<div class="col-sm-8">
<input type="hidden" name="videoCover" th:field="*{videoCover}">
<div class="file-loading">
<input class="form-control img-upload" id="videoCover" name="file" type="file" accept="image/*">
</div>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: bootstrap-fileinput-js"/>
<script th:inline="javascript">
var prefix = ctx + "carousel/info"
$("#form-info-add").validate({
focusCleanup: true
});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/editVideoCover", $('#form-info-edit').serialize());
}
}
$(".img-upload").each(function (i) {
var val = $("input[name='" + this.id + "']").val()
$(this).fileinput({
// 'uploadUrl': ctx + 'common/upload',
'uploadUrl': ctx + 'sysFile/uploadImgHuawei',
initialPreviewAsData: true,
initialPreview: [val],
maxFileCount: 1,
autoReplace: true
}).on('fileuploaded', function (event, data, previewId, index) {
$("input[name='" + event.currentTarget.id + "']").val(data.response.url)
}).on('fileremoved', function (event, id, index) {
$("input[name='" + event.currentTarget.id + "']").val('');
})
$(this).fileinput('_initFileActions');
});
</script>
</body>
</html>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment