This commit is contained in:
18796357645 2025-06-08 11:17:17 +08:00
parent 552c14d4f1
commit 8513b981c9
10 changed files with 129 additions and 215 deletions

View File

@ -1,107 +0,0 @@
//package io.modules.sys.controller;
//import io.common.annotation.LogOperation;
//import io.common.constant.Constant;
//import io.modules.item.dto.AccountDTO;
//
//import io.modules.item.service.AccountService;
//import io.common.page.PageData;
//import io.common.utils.Result;
//import io.common.validator.AssertUtils;
//import io.common.validator.ValidatorUtils;
//import io.common.validator.group.AddGroup;
//import io.common.validator.group.DefaultGroup;
//import io.common.validator.group.UpdateGroup;
//import io.modules.item.service.DictService;
//import io.swagger.v3.oas.annotations.Operation;
//import io.swagger.v3.oas.annotations.enums.ParameterIn;
//import io.swagger.v3.oas.annotations.tags.Tag;
//import org.apache.shiro.authz.annotation.RequiresPermissions;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.*;
//import io.swagger.v3.oas.annotations.Parameter;
//import io.swagger.v3.oas.annotations.Parameters;
//
//import java.util.List;
//import java.util.Map;
///**
// * 文章表
//
// */
//@RestController
//@RequestMapping("item/article")
//@Tag(name="文章表")
//public class ArticleController {
// @Autowired
// private AccountService articleService;
//
//
// @Autowired
// private DictService dictService;
//
// @GetMapping("page")
// @Operation(summary = "分页")
// @Parameters({
// @Parameter(name = Constant.PAGE, description = "当前页码从1开始", in = ParameterIn.QUERY, required = true, ref="int") ,
// @Parameter(name = Constant.LIMIT, description = "每页显示记录数", in = ParameterIn.QUERY,required = true, ref="int") ,
// @Parameter(name = Constant.ORDER_FIELD, description = "排序字段", in = ParameterIn.QUERY, ref="String") ,
// @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)", in = ParameterIn.QUERY, ref="String"),
// @Parameter(name = "type", description = "类型", in = ParameterIn.QUERY, ref="String")
// })
// @RequiresPermissions("item:article:page")
// public Result<PageData<AccountDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params){
// PageData<AccountDTO> page = articleService.page(params);
// return new Result<PageData<AccountDTO>>().ok(page);
// }
//
// @GetMapping("{id}")
// @Operation(summary = "信息")
// @RequiresPermissions("item:article:info")
// public Result<AccountDTO> get(@PathVariable("id") Long id){
// AccountDTO data = articleService.get(id);
//
// return new Result<AccountDTO>().ok(data);
// }
//
// @PostMapping
// @Operation(summary = "保存")
// @LogOperation("保存")
// @RequiresPermissions("item:article:save")
// public Result save(@RequestBody AccountDTO dto){
// //效验数据
// ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
// List<String> existsList = dictService.isExistsList(dto.getIntroduction());
// if (!existsList.isEmpty()){
// return new Result().error("简介出现敏感词:"+existsList);
// }
// List<String> contentExistsList = dictService.isExistsList(dto.getContent());
// if (!contentExistsList.isEmpty()){
// return new Result().error("发布内容出现敏感词:"+ contentExistsList);
// }
// articleService.save(dto);
// return new Result();
// }
// @PutMapping
// @Operation(summary = "修改")
// @LogOperation("修改")
// @RequiresPermissions("item:article:update")
// public Result update(@RequestBody AccountDTO dto){
// //效验数据
// ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
// articleService.update(dto);
// return new Result();
// }
//
// @DeleteMapping
// @Operation(summary = "删除")
// @LogOperation("删除")
// @RequiresPermissions("item:article:delete")
// public Result delete(@RequestBody Long[] ids){
// //效验数据
// AssertUtils.isArrayEmpty(ids, "id");
// articleService.delete(ids);
// return new Result();
// }
//
//
//
//}

View File

@ -28,9 +28,6 @@ import java.util.Map;
/** /**
* 商品分类表 * 商品分类表
*
* @author Mark #
* @since 1.0.0 2025-02-13
*/ */
@RestController @RestController
@RequestMapping("sys/categories") @RequestMapping("sys/categories")

View File

@ -28,7 +28,6 @@ import java.util.Map;
/** /**
* 敏感词 * 敏感词
*/ */
@RestController @RestController
@RequestMapping("item/dict") @RequestMapping("item/dict")
@ -48,7 +47,6 @@ public class DictController {
@RequiresPermissions("item:dict:page") @RequiresPermissions("item:dict:page")
public Result<PageData<DictDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params){ public Result<PageData<DictDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params){
PageData<DictDTO> page = dictService.page(params); PageData<DictDTO> page = dictService.page(params);
return new Result<PageData<DictDTO>>().ok(page); return new Result<PageData<DictDTO>>().ok(page);
} }
@ -57,7 +55,6 @@ public class DictController {
@RequiresPermissions("item:dict:info") @RequiresPermissions("item:dict:info")
public Result<DictDTO> get(@PathVariable("id") Long id){ public Result<DictDTO> get(@PathVariable("id") Long id){
DictDTO data = dictService.get(id); DictDTO data = dictService.get(id);
return new Result<DictDTO>().ok(data); return new Result<DictDTO>().ok(data);
} }
@ -68,10 +65,7 @@ public class DictController {
public Result save(@RequestBody DictDTO dto){ public Result save(@RequestBody DictDTO dto){
//效验数据 //效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
dictService.save(dto); dictService.save(dto);
return new Result(); return new Result();
} }
@ -83,7 +77,6 @@ public class DictController {
//效验数据 //效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
dictService.update(dto); dictService.update(dto);
return new Result(); return new Result();
} }
@ -94,12 +87,7 @@ public class DictController {
public Result delete(@RequestBody Long[] ids){ public Result delete(@RequestBody Long[] ids){
//效验数据 //效验数据
AssertUtils.isArrayEmpty(ids, "id"); AssertUtils.isArrayEmpty(ids, "id");
dictService.delete(ids); dictService.delete(ids);
return new Result(); return new Result();
} }
} }

View File

@ -1,6 +1,4 @@
package io.modules.sys.controller; package io.modules.sys.controller;
import io.common.annotation.LogOperation; import io.common.annotation.LogOperation;
import io.common.constant.Constant; import io.common.constant.Constant;
import io.common.page.PageData; import io.common.page.PageData;
@ -26,14 +24,9 @@ import io.swagger.v3.oas.annotations.Parameters;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/**
* 电影表
*/
@CrossOrigin @CrossOrigin
@RestController @RestController
@RequestMapping("sys/item") @RequestMapping("sys/item")
@Tag(name = "电影表")
public class ItemController { public class ItemController {
@Autowired @Autowired
private ItemService itemService; private ItemService itemService;

View File

@ -1,6 +1,5 @@
package io.modules.sys.controller; package io.modules.sys.controller;
import io.common.constant.Constant; import io.common.constant.Constant;
import io.common.page.PageData; import io.common.page.PageData;
import io.common.utils.Result; import io.common.utils.Result;
@ -30,7 +29,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 订单表 * 订单表
*/ */

View File

@ -24,8 +24,6 @@ import io.swagger.v3.oas.annotations.Parameters;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 轮播图 * 轮播图
*/ */

View File

@ -28,15 +28,12 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* 用户管理 * 用户管理
* *
*/ */
@RestController @RestController
@RequestMapping("/sys/user") @RequestMapping("/sys/user")

View File

@ -1,6 +1,5 @@
package io.modules.sys.controller; package io.modules.sys.controller;
import io.common.annotation.LogOperation; import io.common.annotation.LogOperation;
import io.common.constant.Constant; import io.common.constant.Constant;
import io.common.page.PageData; import io.common.page.PageData;
@ -24,13 +23,8 @@ import io.swagger.v3.oas.annotations.Parameters;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
* 吐槽墙 * 吐槽墙
*
* @author Mark #
* @since 1.0.0 2024-12-12
*/ */
@RestController @RestController
@RequestMapping("item/wall") @RequestMapping("item/wall")
@ -47,7 +41,6 @@ public class WallController {
@Parameter(name = Constant.ORDER_FIELD, description = "排序字段", in = ParameterIn.QUERY, ref="String") , @Parameter(name = Constant.ORDER_FIELD, description = "排序字段", in = ParameterIn.QUERY, ref="String") ,
@Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)", in = ParameterIn.QUERY, ref="String") @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)", in = ParameterIn.QUERY, ref="String")
}) })
@RequiresPermissions("item:wall:page")
public Result<PageData<WallDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params){ public Result<PageData<WallDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params){
PageData<WallDTO> page = wallService.page(params); PageData<WallDTO> page = wallService.page(params);
@ -55,8 +48,6 @@ public class WallController {
} }
@GetMapping("{id}") @GetMapping("{id}")
@Operation(summary = "信息")
@RequiresPermissions("item:wall:info")
public Result<WallDTO> get(@PathVariable("id") Long id){ public Result<WallDTO> get(@PathVariable("id") Long id){
WallDTO data = wallService.get(id); WallDTO data = wallService.get(id);
@ -65,40 +56,28 @@ public class WallController {
@PostMapping @PostMapping
@Operation(summary = "保存") @Operation(summary = "保存")
@LogOperation("保存")
@RequiresPermissions("item:wall:save")
public Result save(@RequestBody WallDTO dto){ public Result save(@RequestBody WallDTO dto){
//效验数据 //效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
wallService.save(dto); wallService.save(dto);
return new Result(); return new Result();
} }
@PutMapping @PutMapping
@Operation(summary = "修改") @Operation(summary = "修改")
@LogOperation("修改")
@RequiresPermissions("item:wall:update")
public Result update(@RequestBody WallDTO dto){ public Result update(@RequestBody WallDTO dto){
//效验数据 //效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
wallService.update(dto); wallService.update(dto);
return new Result(); return new Result();
} }
@DeleteMapping @DeleteMapping
@Operation(summary = "删除") @Operation(summary = "删除")
@LogOperation("删除")
@RequiresPermissions("item:wall:delete")
public Result delete(@RequestBody Long[] ids){ public Result delete(@RequestBody Long[] ids){
//效验数据 //效验数据
AssertUtils.isArrayEmpty(ids, "id"); AssertUtils.isArrayEmpty(ids, "id");
wallService.delete(ids); wallService.delete(ids);
return new Result(); return new Result();
} }

View File

@ -1,33 +1,12 @@
<template> <template>
<div> <div>
<!--查交易记录的按钮-->
<!-- <el-button type="primary" round @click="openAddDialog" size="small">添加</el-button>-->
<!-- <el-row>-->
<!-- <el-col :span="24">-->
<!-- <el-form :inline="true" :model="state.query" class="demo-form-inline">-->
<!-- <el-form-item label="电影名称:">-->
<!-- <el-input v-model="state.query.title" placeholder="请输入电影名称" clearable @input="init" />-->
<!-- </el-form-item>-->
<!-- </el-form>-->
<!-- </el-col>-->
<!-- </el-row>-->
<!--表格--> <!--表格-->
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-table :data="state.getList"> <el-table :data="state.getList">
<!-- 列表结开始--> <!-- 列表结开始-->
<el-table-column prop="item.id" label="编号" align="center" width="120px"/> <el-table-column prop="itemDTO.title" label="名称" align="center"/>
<el-table-column prop="item.title" label="名称" align="center" width="120px"/> <el-table-column prop="nickName" label="用户昵称" align="center" />
<el-table-column prop="userEntity.nickName" label="用户昵称" align="center" width="120px" />
<el-table-column prop="itemDTO.largePic" label="图片" align="center" width="100" >
<template #default="{ row }">
<!-- 点击图片后显示弹框预览 -->
<el-image
:src="row.item.image"
fit="cover"
/>
</template>
</el-table-column>
<el-table-column prop="score" label="评分" align="center" /> <el-table-column prop="score" label="评分" align="center" />
<el-table-column prop="content" label="评论内容" align="center"> <el-table-column prop="content" label="评论内容" align="center">
<template #default="scope"> <template #default="scope">
@ -35,7 +14,6 @@
{{ scope.row.content }} {{ scope.row.content }}
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<!--列表结束--> <!--列表结束-->
<el-table-column label="操作" align="center" width="120px"> <el-table-column label="操作" align="center" width="120px">
@ -65,7 +43,7 @@
<script setup lang="ts"> <script setup lang="ts">
const state = reactive({ const state = reactive({
route:"sys/order", route:"sys/comment",
dialogVisible:false, dialogVisible:false,
getList: [],// getList: [],//
query:{ query:{
@ -137,8 +115,8 @@ onMounted(() => {
} }
.avatar{ .avatar{
width: 178px; width: 178px;
height: 178px; height: 178px;
object-fit: cover; object-fit: cover;
} }
</style> </style>

View File

@ -1,68 +1,161 @@
<template> <template>
<!--轮播图--> <!-- 轮播图和热门推荐 -->
<el-row :gutter="20"> <el-row :gutter="20" class="banner-section">
<el-col :span="12"> <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<div class="h-250px hot" > <div class="hot-recommend">
<el-space wrap> <div class="section-header">
<div v-for="item in state.commit" :key="i" style="margin-top: 10px;"> <el-icon><StarFilled /></el-icon>
<el-button text style="width: 290px" @click="to(item.id)">{{item.title}} </el-button> <span>热门书评</span>
</div>
<div class="recommend-list">
<div
v-for="(item, index) in state.commit"
:key="index"
class="recommend-item"
@click="to(item.id)"
>
<el-button text class="recommend-btn">
<span class="item-index">{{ index + 1 }}.</span>
<span class="item-title">{{ item.title }}</span>
</el-button>
</div> </div>
</el-space> </div>
</div> </div>
</el-col> </el-col>
<el-col :span="12"> <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<div class="h-300px"> <div class="carousel-container">
<carousel></carousel> <carousel></carousel>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<!-- 推荐商品列表-->
<item :get-list=state.getList></item>
<!-- 推荐商品列表 -->
<div class="recommend-section">
<div class="section-header">
<el-icon><GoodsFilled /></el-icon>
<span>热门图书</span>
</div>
<item :get-list="state.getList"></item>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import Carousel from '~/components/front/carousel.vue' import Carousel from '~/components/front/carousel.vue'
import Item from '~/components/front/item.vue' import Item from '~/components/front/item.vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { StarFilled, GoodsFilled } from '@element-plus/icons-vue'
const router = useRouter() const router = useRouter()
const state = reactive({ const state = reactive({
getList: [], getList: [],
commit: [], commit: [],
}) })
// frontRequest.get("/api/user/userInfo").then(response =>{ onMounted(() => {
// user.frontUserInfo = response.data frontRequest.get("/api/item/score").then(res => {
// })
onMounted(()=>{
frontRequest.get("/api/item/score").then(res =>{
state.getList = res.data state.getList = res.data
}) })
frontRequest.get("/api/item/commit").then(res =>{ frontRequest.get("/api/item/commit").then(res => {
state.commit = res.data state.commit = res.data
}) })
}) })
/** /**
* 跳转 * 跳转
*/ */
const to = (id:number) => { const to = (id: number) => {
router.push(`/info/${id}`) router.push(`/info/${id}`)
} }
</script> </script>
<style scoped> <style scoped lang="scss">
.hot { .banner-section {
background-color: rgba(0, 0, 0, 0.2); /* 更浅的黑色 */ margin-bottom: 30px;
border-radius: 10px; /* 四周圆弧,值可以根据需要调整 */
.hot-recommend {
background-color: #f8f9fa;
border-radius: 12px;
padding: 20px;
height: 100%;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
/* 删除或注释掉 align-items: flex-end */
/* align-items: flex-end; */
&:hover {
box-shadow: 0 4px 16px 0 rgba(0, 0, 0, 0.15);
}
.recommend-list {
width: 100%;
/* 改为左对齐 */
text-align: left;
.recommend-item {
transition: all 0.2s;
/* 改为左对齐 */
justify-content: flex-start;
&:hover {
/* 悬停改为向右移动 */
transform: translateX(5px);
}
.recommend-btn {
/* 改为左对齐 */
text-align: left;
border-radius: 6px;
padding: 8px 12px;
/* 改为左对齐 */
justify-content: flex-start;
.item-index {
color: var(--el-color-primary);
font-weight: bold;
margin-right: 8px;
}
.item-title {
display: inline-block;
max-width: calc(100% - 30px);
white-space: nowrap;
text-overflow: ellipsis;
/* 改为左对齐 */
text-align: left;
}
}
}
}
}
.carousel-container {
border-radius: 12px;
overflow: hidden;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
height: 100%;
}
} }
:deep(.el-button){
color: #2e191e; .section-header {
font-weight: 700; display: flex;
align-items: center;
font-size: 18px;
font-weight: 600;
color: #333;
/* 确保标题左对齐 */
justify-content: flex-start;
.el-icon {
margin-right: 8px;
color: var(--el-color-primary);
}
} }
:deep(.el-button:hover) {
background-color: black; .recommend-section {
margin-top: 30px;
background-color: #fff;
border-radius: 12px;
padding: 20px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
} }
</style> </style>
<route lang="json"> <route lang="json">
{ {