@ -21,215 +21,264 @@ import org.springframework.web.multipart.MultipartFile;
import com.alibaba.fastjson.JSONObject ;
import com.entity.Cinema ;
import com.entity.Movie ;
import com.service.ICinemaService ; // 注入电影院服务接口,用于获取电影院相关信息,辅助电影管理业务逻辑
import com.service.IMovieService ; // 注入电影服务接口,用于处理电影的各种业务操作,如查询、添加、删除、排序等
import com.util.UUIDUtil ; // 用于生成唯一文件名的工具类,在文件上传场景中确保文件名的唯一性
import com.service.ICinemaService ;
import com.service.IMovieService ;
import com.util.UUIDUtil ;
/ * *
* 电 影 管 理 模 块 , 主 要 负 责 处 理 与 电 影 相 关 的 各 种 业 务 请 求 , 例 如 电 影 详 情 查 询 、 电 影 列 表 展 示 及 筛 选 排 序 、 电 影 的 添 加 、 删 除 以 及 更 新 等 操 作 。
* 电 影 管 理 模 块
* 该 类 主 要 用 于 处 理 与 电 影 相 关 的 各 种 操 作 请 求 , 例 如 查 询 电 影 详 情 、 获 取 电 影 列 表 、 根 据 不 同 条 件 搜 索 电 影 、 对 电 影 进 行 排 序 以 及 电 影 的 增 删 改 操 作 等 。
* @author Wxj
* /
@Controller
@RequestMapping ( "/movie" )
public class MovieController {
// 注入电影服务接口的实现类,通过该接口可以调用电影服务层提供的各种业务方法,实现对电影数据的操作。
@Resource
private IMovieService movieService ;
// 注入电影院服务接口的实现类,用于获取电影院相关信息,例如查找放映某部电影的电影院列表等操作,与电影业务存在关联关系。
@Resource
private ICinemaService cinemaService ;
// 1.电影详情页, 通过电影ID查找电影详情和对应的电影院列表, 用于前端展示电影的详细信息以及该电影在哪些电影院上映等情况。
@RequestMapping ( "findMovieById" )
@ResponseBody
public JSONObject findMovieById ( @RequestParam ( "movie_id" ) long movie_id ) {
JSONObject obj = new JSONObject ( ) ;
// 调用电影服务的方法, 根据传入的电影ID查找对应的电影对象, 获取电影详情信息。
Movie movie = movieService . findMovieById ( movie_id ) ;
// 调用电影院服务的方法, 查找放映该电影( 通过传入电影ID) 的电影院列表。
List < Cinema > list = this . cinemaService . findCinemasByMovieId ( movie_id ) ;
obj . put ( "code" , 0 ) ;
// 将电影详情数据放入 "data" 字段返回给前端。
obj . put ( "data" , movie ) ;
// 将电影院列表数据放入 "cinemaList" 字段返回给前端,方便前端展示该电影的上映影院信息。
obj . put ( "cinemaList" , list ) ;
// 将电影院列表的大小(即放映该电影的影院数量)放入 "cinemaCount" 字段返回给前端。
obj . put ( "cinemaCount" , list . size ( ) ) ;
return obj ;
}
// 2.首页电影列表,支持按名称搜索、按类型搜索,以及按时间、参评人数、评分排序,用于前端展示多种条件筛选和排序后的电影列表信息,满足不同用户查找电影的需求。
@RequestMapping ( "findAllMovies" )
@ResponseBody
public JSONObject findAllMovies ( ) {
JSONObject obj = new JSONObject ( ) ;
// 获取正在上映的电影列表,这里参数 1 可能表示正在上映的筛选条件(具体由服务层方法定义)。
List < Movie > list = movieService . findAllMovies ( 1 ) ;
// 获取即将上映的电影列表,这里参数 0 可能表示即将上映的筛选条件(具体由服务层方法定义)。
List < Movie > upcomingList = movieService . findAllMovies ( 0 ) ;
// 获取按票房排序的电影列表,调用服务层按票房排序电影的方法。
List < Movie > offList = movieService . sortMovieByBoxOffice ( ) ;
String type [ ] = { "喜剧" , "动作" , "爱情" , "动画" , "科幻" , "惊悚" , "冒险" , "犯罪" , "悬疑" } ;
ArrayList < Object > typeArr = new ArrayList < Object > ( ) ;
for ( int i = 0 ; i < type . length ; i + + ) {
// 根据电影类型查找对应的电影列表,遍历各种类型进行查询。
List < Movie > movieList = this . movieService . findMoviesLikeType ( type [ i ] ) ;
float boxOffice = 0 ;
for ( int j = 0 ; j < movieList . size ( ) ; j + + ) {
// 累加该类型电影的票房,用于统计各类型电影的总票房情况。
boxOffice + = movieList . get ( j ) . getMovie_boxOffice ( ) ;
}
JSONObject typeJson = new JSONObject ( ) ;
// 将电影类型作为键,该类型电影的总票房作为值,放入 JSON 对象中,方便前端按类型展示票房情况。
typeJson . put ( type [ i ] , boxOffice ) ;
typeArr . add ( typeJson ) ;
}
obj . put ( "code" , 0 ) ;
// 设置正在上映电影列表的数量,放入 "count" 字段返回给前端。
obj . put ( "count" , list . size ( ) ) ;
// 设置即将上映电影列表的数量,放入 "upcomingCount" 字段返回给前端。
obj . put ( "upcomingCount" , upcomingList . size ( ) ) ;
// 将正在上映的电影列表数据放入 "data" 字段返回给前端。
obj . put ( "data" , list ) ;
// 将即将上映的电影列表数据放入 "data1" 字段返回给前端。
obj . put ( "data1" , upcomingList ) ;
// 将按票房排序的电影列表数据放入 "sort" 字段返回给前端。
obj . put ( "sort" , offList ) ;
// 将按类型统计票房的信息列表放入 "type" 字段返回给前端,方便前端展示各类型电影票房情况。
obj . put ( "type" , typeArr ) ;
return obj ;
}
// 3.按名称搜索电影,根据用户输入的电影名称查找匹配的电影列表,返回给前端展示搜索结果。
@RequestMapping ( "findMoviesByName" )
@ResponseBody
public JSONObject findMoviesByName ( @RequestParam ( "name" ) String name ) {
JSONObject obj = new JSONObject ( ) ;
// 调用电影服务的方法,根据传入的电影名称进行模糊查询,获取匹配的电影列表。
List < Movie > list = movieService . findMoviesLikeName ( name ) ;
obj . put ( "code" , 0 ) ;
// 设置查询到的电影列表的数量,放入 "count" 字段返回给前端。
obj . put ( "count" , list . size ( ) ) ;
// 将查询到的电影列表数据放入 "data" 字段返回给前端。
obj . put ( "data" , list ) ;
return obj ;
}
// 4.按类型搜索电影,根据用户指定的电影类型查找相应的电影列表,并返回给前端展示搜索结果。
@RequestMapping ( "findMoviesByType" )
@ResponseBody
public JSONObject findMoviesByType ( @RequestParam ( "type" ) String type ) {
JSONObject obj = new JSONObject ( ) ;
// 调用电影服务的方法,根据传入的电影类型进行模糊查询,获取匹配的电影列表。
List < Movie > list = movieService . findMoviesLikeType ( type ) ;
obj . put ( "code" , 0 ) ;
// 设置查询到的电影列表的数量,放入 "count" 字段返回给前端。
obj . put ( "count" , list . size ( ) ) ;
// 将查询到的电影列表数据放入 "data" 字段返回给前端。
obj . put ( "data" , list ) ;
return obj ;
}
// 5.按时间、评价人数、评分排序电影,根据用户选择的排序方式(如热门、时间、评价)对电影列表进行相应排序,并返回给前端展示排序后的结果。
@RequestMapping ( "sortAllMovies" )
@ResponseBody
public JSONObject sortAllMovies ( @RequestParam ( "order" ) String order ) {
JSONObject obj = new JSONObject ( ) ;
List < Movie > list = new ArrayList < Movie > ( ) ;
switch ( order ) {
case "热门" :
// 调用电影服务的按评价人数排序电影的方法,获取排序后的电影列表,这里 "热门" 可能对应按评价人数排序(具体由服务层定义)。
list = movieService . sortMovieByCount ( ) ;
break ;
case "时间" :
// 调用电影服务的按时间排序电影的方法,获取排序后的电影列表,按照时间先后顺序进行排序。
list = movieService . sortMovieByDate ( ) ;
break ;
case "评价" :
// 调用电影服务的按评分排序电影的方法,获取排序后的电影列表,按照电影评分高低进行排序。
list = movieService . sortMovieByScore ( ) ;
break ;
}
obj . put ( "code" , 0 ) ;
// 设置排序后电影列表的数量,放入 "count" 字段返回给前端。
obj . put ( "count" , list . size ( ) ) ;
// 将排序后的电影列表数据放入 "data" 字段返回给前端。
obj . put ( "data" , list ) ;
return obj ;
}
// 6.删除电影, 根据传入的电影ID执行删除电影的操作, 并根据删除结果返回相应提示信息给前端, 告知用户下架是否成功。
@RequestMapping ( "deleteMovie" )
@ResponseBody
public JSONObject deleteMovie ( @RequestParam ( "movie_id" ) long movie_id ) {
JSONObject obj = new JSONObject ( ) ;
// 调用电影服务的删除电影方法, 传入电影ID进行删除操作, 返回受影响的行数( 通常大于 0 表示删除成功)。
Integer rs = movieService . deleteMovie ( movie_id ) ;
if ( rs > 0 ) {
obj . put ( "code" , 0 ) ;
obj . put ( "msg" , "下架成功~" ) ;
} else {
obj . put ( "code" , 200 ) ;
obj . put ( "msg" , "下架失败~" ) ;
}
return obj ;
}
// 7.添加电影,包括上传电影海报和设置电影信息,处理添加新电影的请求,涉及文件上传、电影基本信息设置以及保存到数据库等操作,根据结果返回相应提示信息给前端。
@RequestMapping ( "addMovie" )
@ResponseBody
public JSONObject addMovie ( @RequestParam ( value = "file" , required = false ) MultipartFile file , Movie movie ,
HttpServletRequest request ) throws IOException {
// 获取上传文件(电影海报)的原始名称,用于记录和后续处理(如生成唯一文件名等操作)。
String str = file . getOriginalFilename ( ) ;
System . out . println ( "file:" + str ) ;
// 使用 UUIDUtil 工具类生成唯一文件名,结合原始文件名的后缀,确保文件名在服务器上的唯一性,方便文件管理。
String name = UUIDUtil . getUUID ( ) + str . substring ( str . lastIndexOf ( "." ) ) ;
System . out . println ( "name:" + name ) ;
// 获取文件存储在服务器上的完整路径,结合服务器上下文路径和生成的唯一文件名,确定文件最终存储位置。
String path = request . getServletContext ( ) . getRealPath ( "/upload/movies" ) + "/" + name ;
System . out . println ( "path:" + path ) ;
// 生成存储在数据库中的相对路径,方便在数据库中记录文件位置,后续可根据此路径查找和展示海报图片。
String filePath = "../upload/movies/" + name ;
// 设置电影对象的海报路径属性,将生成的相对路径赋值给电影对象,以便后续保存电影信息时一起存入数据库。
movie . setMovie_picture ( filePath ) ;
Date date = new Date ( ) ;
// 修复获取年份和月份的bug, 将 Java 的 Date 类型转换为 java.sql.Date 类型,用于设置电影的上映日期,确保日期格式符合数据库要求。
java . sql . Date releaseDate = new java . sql . Date ( date . getYear ( ) + 1900 , date . getMonth ( ) + 1 , date . getDay ( ) ) ;
//SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
// 随机生成一个 5 - 9 之间的评分,通过 Random 类生成随机数,并结合一定的计算来控制评分范围。
float random = 5 + ( new Random ( ) . nextFloat ( ) * 4 ) ;
// 使用 DecimalFormat 格式化评分数字,使其保留一位小数,符合常见的评分展示格式要求。
DecimalFormat fnum = new DecimalFormat ( "##0.0" ) ;
String score = fnum . format ( random ) ;
// 将格式化后的评分设置为电影对象的评分属性,更新电影的评分信息。
movie . setMovie_score ( Float . parseFloat ( score ) ) ;
// 设置电影对象的上映日期属性,将前面生成的符合数据库要求的日期赋值给电影对象,完善电影信息。
movie . setReleaseDate ( releaseDate ) ;
// 调用电影服务的添加电影方法,将包含完整信息(包括海报路径、评分、上映日期等)的电影对象保存到数据库中,返回受影响的行数(通常大于 0 表示添加成功)。
Integer rs = movieService . addMovie ( movie ) ;
JSONObject obj = new JSONObject ( ) ;
if ( rs > 0 ) {
// 如果添加电影成功,将上传的文件保存到指定路径,即将电影海报文件存储到服务器相应位置。
file . transferTo ( new File ( path ) ) ;
System . out . println ( "文件写入成功,Path:" + path ) ;
obj . put ( "code" , 0 ) ;
obj . put ( "msg" , "添加成功~" ) ;
} else {
obj . put ( "code" , 200 ) ;
obj . put ( "msg" , "添加失败~" ) ;
}
return obj ;
}
// 8.更新电影,这里可能后续需要补充具体的更新电影逻辑代码,目前只是一个方法定义的占位,比如接收更新后的电影信息,调用服务层的更新方法等操作。
@RequestMapping ( "updateMovie" )
@ResponseBody
public JSONObject updateMovie ( ) {
// 此处代码暂未实现具体逻辑,后续可根据业务需求添加更新电影信息的相关代码,例如接收前端传入的更新后的电影对象,
// 调用 movieService 的相应更新方法进行数据库更新操作,并根据更新结果返回合适的提示信息给前端等操作。
JSONObject obj = new JSONObject ( ) ;
return obj ;
}
// 注入电影服务层接口,用于调用电影相关的业务逻辑方法
@Resource
private IMovieService movieService ;
// 注入影院服务层接口,可能用于获取与电影相关的影院信息等操作
@Resource
private ICinemaService cinemaService ;
/ * *
* 根 据 电 影 ID 查 询 电 影 详 情 的 方 法
* 通 过 传 入 的 电 影 ID , 从 服 务 层 获 取 对 应 的 电 影 信 息 , 并 查 询 播 放 该 电 影 的 影 院 列 表 , 将 电 影 信 息 、 影 院 列 表 及 影 院 数 量 等 相 关 数 据 封 装 成 JSON 格 式 返 回 。
* @param movie_id 要 查 询 的 电 影 的 ID
* @return JSONObject 包 含 电 影 详 情 及 相 关 影 院 信 息 的 JSON 对 象
* /
@RequestMapping ( "findMovieById" )
@ResponseBody
public JSONObject findMovieById ( @RequestParam ( "movie_id" ) long movie_id ) {
JSONObject obj = new JSONObject ( ) ;
// 调用电影服务层方法根据ID获取电影对象
Movie movie = movieService . findMovieById ( movie_id ) ;
// 调用影院服务层方法获取播放该电影的影院列表
List < Cinema > list = this . cinemaService . findCinemasByMovieId ( movie_id ) ;
obj . put ( "code" , 0 ) ;
obj . put ( "data" , movie ) ;
obj . put ( "cinemaList" , list ) ;
obj . put ( "cinemaCount" , list . size ( ) ) ;
return obj ;
}
/ * *
* 获 取 所 有 电 影 相 关 信 息 的 方 法
* 该 方 法 从 服 务 层 获 取 正 在 上 映 的 电 影 列 表 、 即 将 上 映 的 电 影 列 表 、 按 票 房 排 序 的 电 影 列 表 , 并 统 计 不 同 类 型 电 影 的 票 房 总 和 , 最 后 将 这 些 数 据 封 装 成 JSON 格 式 返 回 。
* @return JSONObject 包 含 多 种 电 影 相 关 信 息 的 JSON 对 象
* /
@RequestMapping ( "findAllMovies" )
@ResponseBody
public JSONObject findAllMovies ( ) {
JSONObject obj = new JSONObject ( ) ;
// 获取正在上映的电影列表( 此处传入参数1可能表示正在上映的标识, 具体需看服务层实现逻辑)
List < Movie > list = movieService . findAllMovies ( 1 ) ;
// 获取即将上映的电影列表( 传入参数0可能表示即将上映的标识)
List < Movie > upcomingList = movieService . findAllMovies ( 0 ) ;
// 获取按票房排序的电影列表
List < Movie > offList = movieService . sortMovieByBoxOffice ( ) ;
String type [ ] = { "喜剧" , "动作" , "爱情" , "动画" , "科幻" , "惊悚" , "冒险" , "犯罪" , "悬疑" } ;
ArrayList < Object > typeArr = new ArrayList < Object > ( ) ;
for ( int i = 0 ; i < type . length ; i + + ) {
// 根据电影类型获取对应类型的电影列表
List < Movie > movieList = this . movieService . findMoviesLikeType ( type [ i ] ) ;
float boxOffice = 0 ;
for ( int j = 0 ; j < movieList . size ( ) ; j + + ) {
// 累加该类型电影的票房
boxOffice + = movieList . get ( j ) . getMovie_boxOffice ( ) ;
}
JSONObject typeJson = new JSONObject ( ) ;
typeJson . put ( type [ i ] , boxOffice ) ;
typeArr . add ( typeJson ) ;
}
obj . put ( "code" , 0 ) ;
obj . put ( "count" , list . size ( ) ) ;
obj . put ( "upcomingCount" , upcomingList . size ( ) ) ;
obj . put ( "data" , list ) ;
obj . put ( "data1" , upcomingList ) ;
obj . put ( "sort" , offList ) ;
obj . put ( "type" , typeArr ) ;
return obj ;
}
/ * *
* 根 据 电 影 名 称 搜 索 电 影 的 方 法
* 通 过 传 入 的 电 影 名 称 , 调 用 服 务 层 方 法 查 询 匹 配 的 电 影 列 表 , 然 后 将 查 询 结 果 ( 包 含 状 态 码 、 电 影 数 量 及 电 影 列 表 信 息 ) 封 装 成 JSON 格 式 返 回 。
* @param name 要 搜 索 的 电 影 名 称
* @return JSONObject 包 含 搜 索 结 果 的 JSON 对 象
* /
@RequestMapping ( "findMoviesByName" )
@ResponseBody
public JSONObject findMoviesByName ( @RequestParam ( "name" ) String name ) {
JSONObject obj = new JSONObject ( ) ;
List < Movie > list = movieService . findMoviesLikeName ( name ) ;
obj . put ( "code" , 0 ) ;
obj . put ( "count" , list . size ( ) ) ;
obj . put ( "data" , list ) ;
return obj ;
}
/ * *
* 根 据 电 影 类 型 搜 索 电 影 的 方 法
* 根 据 传 入 的 电 影 类 型 , 调 用 服 务 层 方 法 获 取 该 类 型 的 电 影 列 表 , 再 将 包 含 状 态 码 、 电 影 数 量 及 电 影 列 表 的 相 关 信 息 封 装 成 JSON 格 式 返 回 。
* @param type 要 搜 索 的 电 影 类 型
* @return JSONObject 包 含 搜 索 结 果 的 JSON 对 象
* /
@RequestMapping ( "findMoviesByType" )
@ResponseBody
public JSONObject findMoviesByType ( @RequestParam ( "type" ) String type ) {
JSONObject obj = new JSONObject ( ) ;
List < Movie > list = movieService . findMoviesLikeType ( type ) ;
obj . put ( "code" , 0 ) ;
obj . put ( "count" , list . size ( ) ) ;
obj . put ( "data" , list ) ;
return obj ;
}
/ * *
* 对 所 有 电 影 进 行 排 序 的 方 法
* 根 据 传 入 的 排 序 规 则 ( 如 热 门 、 时 间 、 评 价 等 ) , 调 用 对 应 的 服 务 层 排 序 方 法 获 取 排 序 后 的 电 影 列 表 , 将 排 序 结 果 ( 包 含 状 态 码 、 电 影 数 量 及 排 序 后 的 电 影 列 表 ) 封 装 成 JSON 格 式 返 回 。
* @param order 排 序 规 则 , 取 值 可 以 为 "热门" 、 "时间" 、 "评价" 等 , 具 体 对 应 不 同 的 排 序 逻 辑
* @return JSONObject 包 含 排 序 结 果 的 JSON 对 象
* /
@RequestMapping ( "sortAllMovies" )
@ResponseBody
public JSONObject sortAllMovies ( @RequestParam ( "order" ) String order ) {
JSONObject obj = new JSONObject ( ) ;
List < Movie > list = new ArrayList < Movie > ( ) ;
switch ( order ) {
case "热门" :
list = movieService . sortMovieByCount ( ) ;
break ;
case "时间" :
list = movieService . sortMovieByDate ( ) ;
break ;
case "评价" :
list = movieService . sortMovieByScore ( ) ;
break ;
}
obj . put ( "code" , 0 ) ;
obj . put ( "count" , list . size ( ) ) ;
obj . put ( "data" , list ) ;
return obj ;
}
/ * *
* 删 除 电 影 的 方 法
* 通 过 传 入 的 电 影 ID , 调 用 服 务 层 方 法 删 除 对 应 的 电 影 记 录 , 根 据 删 除 操 作 的 结 果 ( 受 影 响 行 数 ) 封 装 不 同 的 提 示 信 息 到 JSON 对 象 中 返 回 。
* @param movie_id 要 删 除 的 电 影 的 ID
* @return JSONObject 包 含 删 除 操 作 结 果 信 息 的 JSON 对 象
* /
@RequestMapping ( "deleteMovie" )
@ResponseBody
public JSONObject deleteMovie ( @RequestParam ( "movie_id" ) long movie_id ) {
JSONObject obj = new JSONObject ( ) ;
Integer rs = movieService . deleteMovie ( movie_id ) ;
if ( rs > 0 ) {
obj . put ( "code" , 0 ) ;
obj . put ( "msg" , "下架成功~" ) ;
} else {
obj . put ( "code" , 200 ) ;
obj . put ( "msg" , "下架失败~" ) ;
}
return obj ;
}
/ * *
* 添 加 电 影 的 方 法
* 接 收 上 传 的 电 影 海 报 文 件 ( 可 选 ) 以 及 电 影 相 关 信 息 , 生 成 唯 一 的 文 件 名 , 设 置 电 影 海 报 路 径 、 随 机 生 成 评 分 、 设 置 上 映 日 期 等 信 息 后 , 调 用 服 务 层 方 法 添 加 电 影 记 录 。
* 如 果 添 加 成 功 , 则 将 文 件 保 存 到 指 定 路 径 , 并 封 装 添 加 成 功 的 提 示 信 息 到 JSON 对 象 返 回 ; 若 添 加 失 败 , 则 封 装 添 加 失 败 的 提 示 信 息 返 回 。
* @param file 上 传 的 电 影 海 报 文 件 ( 可 选 参 数 )
* @param movie 包 含 电 影 其 他 信 息 的 Movie 对 象
* @param request HttpServletRequest 对 象 , 用 于 获 取 文 件 保 存 的 上 下 文 路 径 等 信 息
* @return JSONObject 包 含 添 加 电 影 操 作 结 果 信 息 的 JSON 对 象
* @throws IOException 可 能 抛 出 文 件 操 作 相 关 的 IO 异 常
* /
@RequestMapping ( "addMovie" )
@ResponseBody
public JSONObject addMovie ( @RequestParam ( value = "file" , required = false ) MultipartFile file , Movie movie ,
HttpServletRequest request ) throws IOException {
// 获取上传文件的原始文件名
String str = file . getOriginalFilename ( ) ;
System . out . println ( "file:" + str ) ;
// 生成唯一的文件名( 使用UUIDUtil工具类生成UUID并结合原文件名的后缀)
String name = UUIDUtil . getUUID ( ) + str . substring ( str . lastIndexOf ( "." ) ) ;
System . out . println ( "name:" + name ) ;
// 获取文件保存的绝对路径(服务器端的路径)
String path = request . getServletContext ( ) . getRealPath ( "/upload/movies" ) + "/" + name ;
System . out . println ( "path:" + path ) ;
// 设置相对路径,用于保存到数据库等操作(相对路径格式,具体需根据前端展示要求等情况确定是否合适)
String filePath = "../upload/movies/" + name ;
movie . setMovie_picture ( filePath ) ;
Date date = new Date ( ) ;
// 将util.Date类型转换为sql.Date类型, 此处代码可能存在问题, 建议使用Calendar来准确设置日期, 因为getYear、getMonth、getDay的返回值不符合常规预期
java . sql . Date releaseDate = new java . sql . Date ( date . getYear ( ) , date . getMonth ( ) , date . getDay ( ) ) ;
//SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
// 随机生成一个5到9之间的评分( 包含5不包含9) , 并格式化为保留一位小数的字符串
float random = 5 + ( new Random ( ) . nextFloat ( ) * 4 ) ;
DecimalFormat fnum = new DecimalFormat ( "##0.0" ) ;
String score = fnum . format ( random ) ;
movie . setMovie_score ( Float . parseFloat ( score ) ) ;
movie . setReleaseDate ( releaseDate ) ;
Integer rs = movieService . addMovie ( movie ) ;
JSONObject obj = new JSONObject ( ) ;
if ( rs > 0 ) {
// 将文件保存到指定的服务器路径
file . transferTo ( new File ( path ) ) ;
System . out . println ( "文件写入成功,Path:" + path ) ;
obj . put ( "code" , 0 ) ;
obj . put ( "msg" , "添加成功~" ) ;
} else {
obj . put ( "code" , 200 ) ;
obj . put ( "msg" , "添加失败~" ) ;
}
return obj ;
}
/ * *
* 修 改 电 影 的 方 法
* 接 收 上 传 的 电 影 海 报 文 件 ( 可 选 ) 以 及 修 改 后 的 电 影 信 息 , 若 有 新 的 海 报 文 件 则 进 行 保 存 并 更 新 电 影 海 报 路 径 , 若 没 有 则 沿 用 原 电 影 的 海 报 路 径 ,
* 然 后 调 用 服 务 层 方 法 更 新 电 影 记 录 , 根 据 更 新 结 果 封 装 不 同 的 提 示 信 息 到 JSON 对 象 中 返 回 。
* @param file 上 传 的 电 影 海 报 文 件 ( 可 选 参 数 )
* @param movie 包 含 修 改 后 电 影 信 息 的 Movie 对 象
* @param request HttpServletRequest 对 象 , 用 于 获 取 文 件 保 存 的 上 下 文 路 径 等 信 息
* @return JSONObject 包 含 修 改 电 影 操 作 结 果 信 息 的 JSON 对 象
* @throws IOException 可 能 抛 出 文 件 操 作 相 关 的 IO 异 常
* /
@RequestMapping ( "updateMovie" )
@ResponseBody
public JSONObject updateMovie ( @RequestParam ( value = "file" , required = false ) MultipartFile file , Movie movie ,
HttpServletRequest request ) throws IOException {
JSONObject obj = new JSONObject ( ) ;
if ( file ! = null ) {
String str = file . getOriginalFilename ( ) ;
System . out . println ( "file:" + str ) ;
String name = UUIDUtil . getUUID ( ) + str . substring ( str . lastIndexOf ( "." ) ) ;
System . out . println ( "name:" + name ) ;
String path = request . getServletContext ( ) . getRealPath ( "/upload/movies" ) + "/" + name ;
System . out . println ( "path:" + path ) ;
String filePath = "../upload/movies/" + name ;
file . transferTo ( new File ( path ) ) ;
System . out . println ( "文件写入成功,Path:" + path ) ;
movie . setMovie_picture ( filePath ) ;
} else {
// 如果没有上传新的海报文件,则获取原电影的海报信息设置给要修改的电影对象
Movie oldMovie = this . movieService . findMovieById ( movie . getMovie_id ( ) ) ;
movie . setMovie_picture ( oldMovie . getMovie_picture ( ) ) ;
}
Integer rs = movieService . updateMovie ( movie ) ;
if ( rs > 0 ) {
obj . put ( "code" , 0 ) ;
obj . put ( "msg" , "修改成功~" ) ;
} else {
obj . put ( "code" , 200 ) ;
obj . put ( "msg" , "修改失败~" ) ;
}
return obj ;
}
}