什么软件 做短视频网站好/温州网站优化推广方案

什么软件 做短视频网站好,温州网站优化推广方案,国外网站的设计风格,做系统后怎么找回网站收藏夹接着我们讲图片管理,先实现图片基础的增删改查,再去考虑图像处理。 主要是,我们需要完成查询时,查询的图片的上传者的角色等级小于等于我们当前登陆账号。 后端controller: package com.llpp.controller;import cn.…

接着我们讲图片管理,先实现图片基础的增删改查,再去考虑图像处理。

主要是,我们需要完成查询时,查询的图片的上传者的角色等级小于等于我们当前登陆账号。

后端controller:

package com.llpp.controller;import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.llpp.entity.Image;
import com.llpp.entity.User;
import com.llpp.service.impl.ImageServiceImpl;
import com.llpp.service.impl.RedisService;
import com.llpp.tool.PrimaryKey;
import com.llpp.tool.Result;
import com.llpp.vo.ImageVO;
import lombok.RequiredArgsConstructor;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.Objects;
import java.util.Optional;/*** @Author 21326* @Date 2025 2025/2/25 22:23*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/image")
public class ImageController {private final RedisService redisService;private final ImageServiceImpl imageService;@GetMapping("/getPage")public Result getPage(Page<ImageVO> page, ImageVO image, HttpServletRequest request) {String token = request.getHeader("authorization");token = token.substring(token.indexOf(" ") + 1);String user = redisService.getValueOrDefault(token, "").toString();image.setRoleId(JSONUtil.toBean(user, User.class).getRoleId());return Result.data(imageService.getPage(page, image));}@PostMapping("/rowSave")public Result rowSave(@RequestBody Image image, HttpServletRequest request) {return Optional.ofNullable(image).filter(i -> !StringUtils.isEmpty(i.getUrl())).filter(i -> !StringUtils.isEmpty(i.getName())).map(i -> {String token = request.getHeader("authorization");token = token.substring(token.indexOf(" ") + 1);String user = redisService.getValueOrDefault(token, "").toString();User info = JSONUtil.toBean(user, User.class);i.setStatus(0);i.setUserId(info.getId());i.setId(new PrimaryKey().nextId());i.setCreateTime(LocalDateTime.now());return Result.status(imageService.save(i));}).orElse(Result.fail("参数异常"));}@PostMapping("/rowEdit")public Result rowEdit(@RequestBody Image image) {return Optional.ofNullable(image).filter(i -> Objects.nonNull(i.getId())).map(i -> Result.status(imageService.updateById(i))).orElse(Result.fail("参数异常"));}@PostMapping("/rowDel")public Result rowDel(@RequestBody Image image) {return Optional.ofNullable(image).filter(i -> Objects.nonNull(i.getId())).map(i -> Result.status(imageService.removeById(i.getId()))).orElse(Result.fail("参数异常"));}
}

service:

@Service
public class ImageServiceImpl extends ServiceImpl<ImageMapper, Image> implements IImageService {@Overridepublic IPage<ImageVO> getPage(IPage<ImageVO> page, ImageVO image) {return baseMapper.getPage(page, image);}
}

mapper:

package com.llpp.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.llpp.entity.Image;
import com.llpp.vo.ImageVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;/*** @Author 21326* @Date 2025 2025/1/31 20:44*/
@Mapper
public interface ImageMapper extends BaseMapper<Image> {IPage<ImageVO> getPage(IPage<ImageVO> page, @Param("image") ImageVO imageVO);
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.llpp.mapper.ImageMapper"><select id="getPage" resultType="com.llpp.vo.ImageVO">SELECT i.id,i.deleted,i.status,i.remark,i.name,i.url,i.result,i.create_time,u.username,r.name AS role_nameFROM image iLEFT JOIN user u ON i.user_id = u.idLEFT JOIN role r ON u.role_id = r.idWHERE i.deleted=0AND u.deleted=0AND r.deleted=0AND u.role_id &gt;= #{image.roleId}AND r.id &gt;= #{image.roleId}<if test="image.id != null">AND i.id = #{image.id}</if><if test="image.status != null">AND i.status = #{image.status}</if><if test="image.startTime != null">AND i.create_time &gt;= #{image.startTime}</if><if test="image.endTime != null">AND i.create_time &lt;= #{image.endTime}</if><if test="image.name != null and image.name !=''">AND i.name LIKE CONCAT('%',#{image.name},'%')</if><if test="image.remark != null and image.remark !=''">AND i.remark LIKE CONCAT('%',#{image.remark},'%')</if><if test="image.username != null and image.username !=''">AND u.username LIKE CONCAT('%',#{image.username},'%')</if><if test="image.roleName != null and image.roleName !=''">AND r.name LIKE CONCAT('%',#{image.roleName},'%')</if></select>
</mapper>

image.js:

import request from '@/router/axios';
import {baseUrl} from '@/config/env';export const getPage = (current, size, params) => {return request({url: baseUrl + '/image/getPage',method: 'get',params: {current,size,...params}})
}export const rowSave = (form) => {return request({url: baseUrl + '/image/rowSave',method: 'post',data: form})
}export const rowEdit = (row) => {return request({url: baseUrl + '/image/rowEdit',method: 'post',data: row})
}export const rowDel = (row) => {return request({url: baseUrl + '/image/rowDel',method: 'post',data: row})
}

image.vue:

<template><basic-container><avue-crud :option="option":search="search":page="page"v-model="form":table-loading="loading":data="tableData"ref="crud"@row-update="rowUpdate"@row-save="rowSave"@row-del="rowDel"@search-change="searchChange"@search-reset="searchReset"@current-change="currentChange"@size-change="sizeChange"@refresh-change="refreshChange"@on-load="onLoad"></avue-crud></basic-container>
</template><script>
import {getPage, rowDel, rowEdit, rowSave} from "@/api/image/image";export default {name: "image",data() {return {option: {height: 'auto',stripe: true,tip: false,searchShow: true,searchMenuSpan: 6,border: true,index: false,viewBtn: true,addBtn: true,delBtn: true,editBtn: true,column: [{label: '图片编号',prop: 'id',search: true,width: 120,span: 24,addDisplay: false,editDisplay: false,viewDisplay: true,},{label: '图片名称',prop: 'name',search: true,span: 24,rules: [{required: true, message: '请输入图片名称', trigger: 'blur'}]},{label: '上传用户',prop: 'username',search: true,span: 24,addDisplay: false,editDisplay: false,viewDisplay: true,},{label: '上传时间',prop: 'createTime',type: 'datetime',format: 'yyyy-MM-dd HH:mm:ss',valueFormat: 'yyyy-MM-dd HH:mm:ss',search: true,searchRange: true,span: 24,addDisplay: false,editDisplay: false,viewDisplay: true,startPlaceholder: '时间日期开始范围自定义',endPlaceholder: '时间日期结束范围自定义',},{label: '用户角色',prop: 'roleName',search: true,width: 70,span: 24,addDisplay: false,editDisplay: false,viewDisplay: true,}, {label: '状态',prop: 'status',type: 'select',search: true,width: 70,span: 24,addDisplay: false,editDisplay: false,viewDisplay: true,props: {label: 'label',value: 'value'},dicData: [{label: '已处理', value: 1},{label: '未处理', value: 0}],},{label: '备注',prop: 'remark',search: true,span: 24,},{label: '图片详情',prop: 'url',type: 'upload',width: 100,span: 24,listType: 'picture-img',fileSize: 3584,dataType: 'string',action: '/api/file/upload',propsHttp: {res: 'data',url: 'url',},},{label: '处理结果',prop: 'result',type: 'upload',width: 100,span: 24,addDisplay: false,editDisplay: false,viewDisplay: true,listType: 'picture-img',fileSize: 3584,dataType: 'string',action: '/api/file/upload',propsHttp: {res: 'data',url: 'url',},},]},form: {},search: {},page: {total: 0,currentPage: 1,pageSize: 10,pageSizes: [5, 10, 15, 20, 50, 100, 150, 200]},query: {},loading: false,tableData: []}},created() {this.onLoad();},methods: {onLoad(page, params = {}) {this.loading = true;if (this.query.createTime != undefined && this.query.createTime != null && this.query.createTime.length > 0) {this.query.startTime = this.query.createTime[0];this.query.endTime = this.query.createTime[1]this.query.createTime = null;}getPage(this.page.currentPage, this.page.pageSize, Object.assign(params, this.query)).then(res => {const data = res.data.data;this.page.total = data.total;this.tableData = data.records;this.loading = false;})},rowSave(form, done, loading) {rowSave(form).then(res => {if (res.data.code == 200) {this.$message.success(res.data.msg);done();} else {this.$message.error(res.data.msg);loading();}}).then(() => {this.onLoad();}).catch(err => {loading();})},rowUpdate(row, index, done, loading) {rowEdit(row).then(res => {if (res.data.code == 200) {this.$message.success(res.data.msg);done();} else {this.$message.error(res.data.msg);loading();}}).then(() => {this.onLoad();}).catch(err => {loading();})},rowDel(row, done, loading) {rowDel(row).then(res => {if (res.data.code == 200) {this.$message.success(res.data.msg);done();} else {this.$message.error(res.data.msg);loading();}}).then(() => {this.onLoad();}).catch(err => {loading();})},searchReset() {this.query = {}this.onLoad(this.page)},searchChange(params, done) {this.query = paramsthis.onLoad(this.page, params)done()},currentChange(currentPage) {this.page.currentPage = currentPage},sizeChange(pageSize) {this.page.pageSize = pageSize},refreshChange(refresh) {if (refresh) {this.onLoad(this.page, this.query)}},}
}
</script><style scoped></style>

效果展示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/72123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型知识蒸馏技术(8)——知识蒸馏应用场景

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl1. 知识蒸馏概述 知识蒸馏是一种将大型复杂模型(教师模型)的知识迁移到小型简单模型(学生模型)的技术。其核心原理是通过教师模型的输出(通常是softmax后的概率分布)来指导学生模型的训练,…

INT202 Complexity of Algroithms 算法的复杂度

文章目录 1. 前言1.1 算法&#xff08;Algorithms&#xff09;和数据结构&#xff08;Data Structure&#xff09;1.2 什么是好的算法&#xff1f;1.3 算法分析1.3.1 实验分析&#xff08;Experimental Analysis&#xff09;1.3.2 理论分析1.3.2.1 伪代码&#xff08;Pseudo-co…

BDF报告翻译简介后:关于A φ方法criterion引理1如何由范数导出内积

关于A φ方法criterion 引理1 如何由范数导出内积 在数学中&#xff0c;特别是在泛函分析中&#xff0c;给定一个范数&#xff0c;可以定义一个与之相关的内积。这个过程不是总是可能的&#xff0c;但当一个赋范向量空间是完备的且满足平行四边形恒等式时&#xff0c;可以导出…

olmOCR:使用VLM解析PDF

在PDF解析中&#xff0c;目前主流的开源工具包括Minuer、GOT OCR等。主要都是通过飞桨等OCR套件组装的一套pipeline&#xff0c;或者直接通过VLM解析图像。 #一、 olmOCR是使用VLM进行的端到端的PDF文档解析 二、document-anchoring 与上述的不同在于&#xff0c;olmOCR使用…

Nginx 代理配置导致浏览器应用网页页面加载失败的分析与解决

Nginx 代理配置导致应用页面加载失败的分析与解决 前期部署信息&#xff1a; 部署DM数据库DEM时&#xff0c;配置了nginx代理&#xff0c;conf配置内容如下&#xff1a; charset utf-8;client_max_body_size 128M;listen 4567;server_name 192.168.1.156;root /opt/h5/;index…

Windows 11【1001问】查看Windows 11 版本的18种方法

随着技术的飞速发展&#xff0c;操作系统作为连接硬件与软件的核心桥梁&#xff0c;其版本管理和更新变得尤为重要。对于用户而言&#xff0c;了解自己设备上运行的具体Windows 11版本不仅有助于优化系统性能&#xff0c;还能确保安全性和兼容性。然而&#xff0c;不同场景和需…

【Godot4.3】自定义简易菜单栏节点ETDMenuBar

概述 Godot中的菜单创建是一个复杂的灾难性工作&#xff0c;往往无从下手&#xff0c;我也是不止一次尝试简化菜单的创建。 从自己去年的发明“简易树形数据”用于简化Tree控件获得灵感&#xff0c;于是尝试编写了用于表示菜单数据的EasyMenuData类&#xff0c;以及对应的纯文…

二、IDE集成DeepSeek保姆级教学(使用篇)

各位看官老爷好&#xff0c;如果还没有安装DeepSeek请查阅前一篇 一、IDE集成DeepSeek保姆级教学(安装篇) 一、DeepSeek在CodeGPT中使用教学 1.1、Edit Code 编辑代码 选中代码片段 —> 右键 —> CodeGPT —> Edit Code, 输入自然语言可编辑代码&#xff0c;点击S…

Rohm发布TOLL封装650V GaN HEMT,引领汽车用GaN器件大规模生产新浪潮

Rohm震撼发布TOLL封装650V GaN HEMT&#xff0c;引领汽车用GaN器件大规模生产新浪潮。在创新的TOLL&#xff08;TO LeadLess&#xff09;封装技术的怀抱中&#xff0c;Rohm精心孕育出650V GaN HEMT这一瑰宝&#xff0c;此技术正如一股强劲东风&#xff0c;日益吹拂于高功率处理…

Spring Boot 3.x 基于 Redis 实现邮箱验证码认证

文章目录 依赖配置开启 QQ 邮箱 SMTP 服务配置文件代码实现验证码服务邮件服务接口实现执行流程 依赖配置 <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr…

《Effective Objective-C》阅读笔记(下)

目录 内存管理 理解引用计数 引用计数工作原理 自动释放池 保留环 以ARC简化引用计数 使用ARC时必须遵循的方法命名规则 变量的内存管理语义 ARC如何清理实例变量 在dealloc方法中只释放引用并解除监听 编写“异常安全代码”时留意内存管理问题 以弱引用避免保留环 …

【AD】3-10 原理图PDF导出

文件—智能PDF 多页原理图导出 导出设置时选择工程&#xff0c;可自行选择导出一页或多页原理图&#xff0c;一般PCB不用导出

【在线用户监控】在线用户查询、强退用户

文章目录 在线用户监控在线用户监控API(RestController)当前在线会话在线用户查询强退用户知识扩展: JwtJwtTokenUtil生成jwt解析token登录授权的实现:json web token + redis + springboot在线用户监控 在线用户监控API(RestController) @RestController @Tag(name = &qu…

超详细,多图文介绍redis集群方式并搭建redis伪集群

超详细&#xff0c;多图文介绍redis集群方式并搭建redis伪集群 超多图文&#xff0c;对新手友好度极好。敲命令的过程中&#xff0c;难免会敲错&#xff0c;但为了截好一张合适的图&#xff0c;一旦出现一点问题&#xff0c;为了好的演示效果&#xff0c;就要从头开始敲。且看且…

992. K 个不同整数的子数组

目录 一、题目二、思路2.1 解题思路2.2 代码尝试2.3 疑难问题 三、解法四、收获4.1 心得4.2 举一反三 一、题目 二、思路 2.1 解题思路 2.2 代码尝试 class Solution { public:int subarraysWithKDistinct(vector<int>& nums, int k) {//需要有数据结构来存储数组…

领域驱动设计:事件溯源架构简介

概述 事件溯源架构通常由3种应用设计模式组成,分别是:事件驱动(Event Driven),事件溯源(Event Source)、CQRS(读写分离)。这三种应用设计模式常见于领域驱动设计(DDD)中,但它们本身是一种应用设计的思想,不仅仅局限于DDD,每一种模式都可以单独拿出来使用。 E…

PT2035 TWS 蓝牙耳机双触控双输出 IC

1. 产品概述 PT2035 是一款支持入耳检测的蓝牙耳机专用触摸芯片&#xff0c;该芯片具有宽工作电压、低功耗、高抗 干扰能力的特性。 2. 主要特性 工作电压范围&#xff1a; 2.4~5.5V 待机电流约 2.5uAV DD3V/CMOD5nF 入耳有效&#xff0c;无触摸时工作电流约 8uAV DD3…

AI编程界的集大成者——通义灵码AI程序员

一、引言 随着软件行业的快速发展和技术的进步&#xff0c;人工智能&#xff08;AI&#xff09;正在成为软件开发领域的一个重要组成部分。近年来&#xff0c;越来越多的AI辅助工具被引入到开发流程中&#xff0c;旨在提高效率、减少错误并加速创新。在这样的背景下&#xff0…

Rocky Linux 8.5 6G内存 静默模式(没图形界面)安装Oracle 19C

Oracle19c 下载地址 Database Software Downloads | Oraclehttps://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_ee 目录 一、准备服务器 1、服务器可以克隆、自己装 2、修改主机名 3、重启 4、关闭selinux 5、关闭防火墙 5.1、…

lua基础语法学习

lua基础语法学习 文章目录 lua基础语法学习1. 基础2. 输入输出3. 分支结构与循环结构4. 函数5. 元表与元方法6. 面向对象 1. 基础 注释 --单行注释--[[ 多行注释 --]]标识符 标识符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上 0 个或多个字母&#xff0c;下划线&…