springboot098基于web的网上摄影工作室的开发与实现 免费分享源码

博主介绍:专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

springboot098基于web的网上摄影工作室的开发与实现录像 源码文档 免费白嫖 适合个人学习的 课设,毕设学习用途

4.2系统结构

本系统是基于B/S架构的网站系统,设计的功能结构图如下图所示:

图4-2功能结构图

4.3.数据库设计

4.3.1数据库实体

概念设计的目标是设计出反映某个组织部门信息需求的数据库系统概念模式,数据库系统的概念模式独立于数据库系统的逻辑结构、独立于数据库管理系统(DBMS)、独立于计算机系统。

概念模式的设计方法是在需求分析的基础上,用概念数据模型(例如E-R模型)表示数据及数据之间的相互联系,设计出反映用户信息需求和处理需求的数据库系统概念模式。概念设计的目标是准确描述应用领域的信息模式,支持用户的各种应用,这样既容易转换为数据库系统逻辑模式,又容易为用户理解。数据库系统概念模式是面向现实世界的数据模型,不能直接用于数据库系统的实现。在此阶段,用户可以参与和评价数据库系统的设计,从而有利于保证数据库系统的设计与用户的需求相吻合。在概念模式的设计中,E-R模型法是最常见的设计方法。本系统的E-R图如下图所示:

4.3.2数据库设计表

网上摄影工作室需要后台数据库,下面介绍数据库中的各个表的详细信息:

表4.1 摄影作品评论表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

refid

bigint(20)

关联表id

userid

bigint(20)

用户id

nickname

varchar(200)

NULL

用户名

content

longtext

评论内容

reply

longtext

NULL

回复内容

表4.2 摄影圈

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

title

varchar(200)

NULL

帖子标题

content

longtext

帖子内容

parentid

bigint(20)

NULL

父节点id

userid

bigint(20)

用户id

username

varchar(200)

NULL

用户名

isdone

varchar(200)

NULL

状态

表4.3 系统公告

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

title

varchar(200)

标题

introduction

longtext

NULL

简介

picture

varchar(200)

图片

content

longtext

内容

表4.4 摄影作品

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

zuopinmingcheng

varchar(200)

NULL

作品名称

zuopinfenlei

varchar(200)

NULL

作品分类

zuopinfengmian

varchar(200)

NULL

作品封面

zuopinjianjie

longtext

NULL

作品简介

zuopinneirong

longtext

NULL

作品内容

faburiqi

date

NULL

发布日期

yonghuming

varchar(200)

NULL

用户名

nicheng

varchar(200)

NULL

昵称

thumbsupnum

int(11)

0

crazilynum

int(11)

0

clicktime

datetime

NULL

最近点击时间

clicknum

int(11)

0

点击次数

表4.5 收藏表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

userid

bigint(20)

用户id

refid

bigint(20)

NULL

收藏id

tablename

varchar(200)

NULL

表名

name

varchar(200)

收藏名称

picture

varchar(200)

收藏图片

表4.6 管理员表

字段

类型

默认

注释

id (主键)

bigint(20)

主键

username

varchar(100)

用户名

password

varchar(100)

密码

role

varchar(100)

管理员

角色

addtime

timestamp

CURRENT_TIMESTAMP

新增时间

表4.7 用户

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

yonghuming

varchar(200)

用户名

mima

varchar(200)

密码

xingming

varchar(200)

NULL

姓名

touxiang

varchar(200)

NULL

头像

nicheng

varchar(200)

NULL

昵称

xingbie

varchar(200)

NULL

性别

nianling

int(11)

NULL

年龄

lianxidianhua

varchar(200)

NULL

联系电话

表4.8 作品分类

字段

类型

默认

注释

id (主键)

bigint(20)

主键

addtime

timestamp

CURRENT_TIMESTAMP

创建时间

zuopinfenlei

varchar(200)

作品分类

5系统详细实现

5.1 管理员模块的实现

5.1.1 用户信息管理

网上摄影工作室的系统管理员可以管理教师,可以对用户信息修改删除以及查询操作。具体界面的展示如图5.1所示。

图5.1 用户信息管理界面

5.1.2 作品分类管理

系统管理员可以查看对作品分类进行添加,修改,删除以及查询操作。具体界面如图5.2所示。

图5.2 作品分类管理界面

5.1.3 轮播图管理

系统管理员可以对轮播图信息进行添加,修改,删除以及查询操作。界面如下图所示:

图5.3 轮播图信息管理界面

5.1.4 摄影作品管理

系统管理员可以对用户提交的摄影作品进行添加修改删除操作。界面如下图所示:

图5.4 摄影作品管理界面

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.SheyingzuopinEntity;
import com.entity.view.SheyingzuopinView;

import com.service.SheyingzuopinService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 摄影作品
 * 后端接口
 * @author 
 * @email 
 * @date 2021-05-06 10:41:03
 */
@RestController
@RequestMapping("/sheyingzuopin")
public class SheyingzuopinController {
    @Autowired
    private SheyingzuopinService sheyingzuopinService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,SheyingzuopinEntity sheyingzuopin,
		HttpServletRequest request){
		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			sheyingzuopin.setYonghuming((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<SheyingzuopinEntity> ew = new EntityWrapper<SheyingzuopinEntity>();
		PageUtils page = sheyingzuopinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, sheyingzuopin), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,SheyingzuopinEntity sheyingzuopin, 
		HttpServletRequest request){
        EntityWrapper<SheyingzuopinEntity> ew = new EntityWrapper<SheyingzuopinEntity>();
		PageUtils page = sheyingzuopinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, sheyingzuopin), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( SheyingzuopinEntity sheyingzuopin){
       	EntityWrapper<SheyingzuopinEntity> ew = new EntityWrapper<SheyingzuopinEntity>();
      	ew.allEq(MPUtil.allEQMapPre( sheyingzuopin, "sheyingzuopin")); 
        return R.ok().put("data", sheyingzuopinService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(SheyingzuopinEntity sheyingzuopin){
        EntityWrapper< SheyingzuopinEntity> ew = new EntityWrapper< SheyingzuopinEntity>();
 		ew.allEq(MPUtil.allEQMapPre( sheyingzuopin, "sheyingzuopin")); 
		SheyingzuopinView sheyingzuopinView =  sheyingzuopinService.selectView(ew);
		return R.ok("查询摄影作品成功").put("data", sheyingzuopinView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        SheyingzuopinEntity sheyingzuopin = sheyingzuopinService.selectById(id);
		sheyingzuopin.setClicknum(sheyingzuopin.getClicknum()+1);
		sheyingzuopin.setClicktime(new Date());
		sheyingzuopinService.updateById(sheyingzuopin);
        return R.ok().put("data", sheyingzuopin);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        SheyingzuopinEntity sheyingzuopin = sheyingzuopinService.selectById(id);
		sheyingzuopin.setClicknum(sheyingzuopin.getClicknum()+1);
		sheyingzuopin.setClicktime(new Date());
		sheyingzuopinService.updateById(sheyingzuopin);
        return R.ok().put("data", sheyingzuopin);
    }
    


    /**
     * 赞或踩
     */
    @RequestMapping("/thumbsup/{id}")
    public R vote(@PathVariable("id") String id,String type){
        SheyingzuopinEntity sheyingzuopin = sheyingzuopinService.selectById(id);
        if(type.equals("1")) {
        	sheyingzuopin.setThumbsupnum(sheyingzuopin.getThumbsupnum()+1);
        } else {
        	sheyingzuopin.setCrazilynum(sheyingzuopin.getCrazilynum()+1);
        }
        sheyingzuopinService.updateById(sheyingzuopin);
        return R.ok("投票成功");
    }

    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody SheyingzuopinEntity sheyingzuopin, HttpServletRequest request){
    	sheyingzuopin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(sheyingzuopin);
        sheyingzuopinService.insert(sheyingzuopin);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody SheyingzuopinEntity sheyingzuopin, HttpServletRequest request){
    	sheyingzuopin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(sheyingzuopin);
        sheyingzuopinService.insert(sheyingzuopin);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody SheyingzuopinEntity sheyingzuopin, HttpServletRequest request){
        //ValidatorUtils.validateEntity(sheyingzuopin);
        sheyingzuopinService.updateById(sheyingzuopin);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        sheyingzuopinService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<SheyingzuopinEntity> wrapper = new EntityWrapper<SheyingzuopinEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			wrapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
		}

		int count = sheyingzuopinService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	
	/**
     * 前端智能排序
     */
	@IgnoreAuth
    @RequestMapping("/autoSort")
    public R autoSort(@RequestParam Map<String, Object> params,SheyingzuopinEntity sheyingzuopin, HttpServletRequest request,String pre){
        EntityWrapper<SheyingzuopinEntity> ew = new EntityWrapper<SheyingzuopinEntity>();
        Map<String, Object> newMap = new HashMap<String, Object>();
        Map<String, Object> param = new HashMap<String, Object>();
		Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry<String, Object> entry = it.next();
			String key = entry.getKey();
			String newKey = entry.getKey();
			if (pre.endsWith(".")) {
				newMap.put(pre + newKey, entry.getValue());
			} else if (StringUtils.isEmpty(pre)) {
				newMap.put(newKey, entry.getValue());
			} else {
				newMap.put(pre + "." + newKey, entry.getValue());
			}
		}
		params.put("sort", "clicknum");
        params.put("order", "desc");
		PageUtils page = sheyingzuopinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, sheyingzuopin), params), params));
        return R.ok().put("data", page);
    }


}

5.2 用户模块的实现

5.2.1 摄影作品收藏

用户登录后可以对摄影作品进行收藏操作。界面如下图所示:

图5.5 摄影作品收藏界面

5.2.2 摄影圈

用户登录后可以在摄影圈发布信息。界面如下图所示:

图5.6 摄影圈界面

5.2.3 摄影作品发布

用户可以发布自己的摄影作品信息。界面如下图所示:

图5.7 摄影作品发布界面

下载地址:

springboot098基于web的网上摄影工作室的开发与实现.zip资源-CSDN文库

大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

PhotoFun-图趣是一款由淘码岛出品的自适应多语言图片网站系统。PhotoFun-图趣最大的特点就是轻量级,整个系统的源码文件所占空间不到2MB(含演示数据的版本除外),所以“超轻”由此得名。 不过,麻雀虽小,五脏俱全,PhotoFun-图趣除了具有图片管理的功能之外,还有用户管理、社交点评、在线消息等功能,特别适合小型摄影师团体或个人搭建作品展览网站;当然,PhotoFun-图趣简单大气的风格也适合一些企业搭建产品展示网站。对了,PhotoFun-图趣还完美适配移动端。 总之,PhotoFun-图趣的特色是短小精干,就像一件可以随身携带的小工具一样,就看你如何使用它了。 PhotoFun-图趣目前支持简体中文、英语、西班牙语、俄语四种语言,前端一键轻松切换显示语言。 系统需求: PHP和MySQL PHP:5.3+ MySQL:5.0+ WEB环境及服务 Linux+Apache+MySQL+PHP Apache需要 "rewrite_module"的支持 安装: 将下载的压缩包解压; 将photofun.sql文件导入数据库; 如果使用主域名或带www的域名安装的话(比如sudujun.com和www.sudujun.com),请修改UPLOAD目录下的.htaccess文件的对应部分,使得不带www的sudujun.com转向www.sudujun.com,保证访问地址唯一性;如果使用子域名或本地安装的话(比如pf.taomadao.com或localhost),则不需这一步; 如果安装在子目录,请修改UPLOAD目录下的.htaccess文件,将“RewriteBase /”中的“/”修改为“/yourfolder”,“yourfolder”即子目录名,如果是安装在一级目录请忽略这一步; 修改UPLOAD/system目录下的config.php文件的21-35行,具体内容请参照文件中的注释; 将UPLOAD目录中(注意不包含UPLOAD目录本身)的所有文件夹及文件上传至服务器; 修改data目录的权限为0777; 完成以上步骤即已安装成功,现在请在浏览器地址栏输入你网站的访问地址: 管理员用户名:useradmin 密码:123456 登录进去后别忘了修改管理员的密码。 帮助: 安装过程中遇到任何问题,请访问PhotoFun交流论坛寻求帮助。 互动: 对PhotoFun有任何建议、想法、评论或发现了bug,请加入PhotoFun交流论坛畅所欲言。 分享精神: 如果您喜欢PhotoFun,请将它介绍给自己的朋友,或者帮助他人安装一个PhotoFun,又或者写一篇赞扬我们的文章。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翰文编程

你的鼓励 是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值