diff --git a/pigx-app-server/pigx-app-server-api/src/main/java/com/pig4cloud/pigx/app/api/enums/PageTypeEnums.java b/pigx-app-server/pigx-app-server-api/src/main/java/com/pig4cloud/pigx/app/api/enums/PageTypeEnums.java new file mode 100644 index 000000000..75339dbef --- /dev/null +++ b/pigx-app-server/pigx-app-server-api/src/main/java/com/pig4cloud/pigx/app/api/enums/PageTypeEnums.java @@ -0,0 +1,54 @@ +package com.pig4cloud.pigx.app.api.enums; + +/** + * 页面类型枚举 + * + * @author lengleng + * @date 2024/12/22 + */ +public enum PageTypeEnums { + /** + * 首页 + */ + HOME(1, "首页装修"), + /** + * 个人中心 + */ + USER(2, "个人中心"), + /** + * 客服设置 + */ + SERVICE(3, "客服设置"); + + private final Integer pageType; + + private final String name; + + PageTypeEnums(Integer pageType, String name) { + this.pageType = pageType; + this.name = name; + } + + /** + * 按类型获取名称 + * + * @param pageType 页面类型 + * @return {@link String } + */ + public static String getNameByType(Integer pageType) { + for (PageTypeEnums value : PageTypeEnums.values()) { + if (value.pageType.equals(pageType)) { + return value.name; + } + } + return null; + } + + public Integer getPageType() { + return pageType; + } + + public String getName() { + return name; + } +} diff --git a/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/controller/AppIndexController.java b/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/controller/AppIndexController.java index cf79f0b87..06371ea0a 100644 --- a/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/controller/AppIndexController.java +++ b/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/controller/AppIndexController.java @@ -29,31 +29,40 @@ import java.util.Map; @SecurityRequirement(name = HttpHeaders.AUTHORIZATION) public class AppIndexController { - private final AppIndexService indexService; + private final AppIndexService indexService; - /** - * 首页 - * @return Object - */ - @Inner(value = false) - @GetMapping("/index") - public R index() { - Map detail = indexService.index(); - return R.ok(detail); - } + /** + * 获取主页配置 + * + * @return {@link R } + */ + @Inner(value = false) + @GetMapping("/index") + public R index() { + return R.ok(indexService.index()); + } - @Inner(value = false) - @GetMapping("/config") - public R config() { - Map map = indexService.config(); - return R.ok(map); - } + /** + * 获取移动端appTabbar 配置 + * + * @return {@link R } + */ + @Inner(value = false) + @GetMapping("/config") + public R config() { + return R.ok(indexService.config()); + } - @Inner(value = false) - @GetMapping("/decorate") - public R decorate(@Validated @RequestParam("id") Integer id) { - AppPageEntity detail = indexService.decorate(id); - return R.ok(detail); - } + /** + * 根据页面类型查询页面配置 + * + * @param pageType 页面类型 + * @return {@link R } + */ + @Inner(value = false) + @GetMapping("/decorate") + public R decorate(@Validated @RequestParam("id") Integer pageType) { + return R.ok(indexService.decorate(pageType)); + } } diff --git a/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/controller/AppPageController.java b/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/controller/AppPageController.java index ed9140299..b69ac5971 100644 --- a/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/controller/AppPageController.java +++ b/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/controller/AppPageController.java @@ -1,7 +1,9 @@ package com.pig4cloud.pigx.app.controller; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.pig4cloud.pigx.app.api.entity.AppPageEntity; +import com.pig4cloud.pigx.app.api.enums.PageTypeEnums; import com.pig4cloud.pigx.app.service.AppPageService; import com.pig4cloud.pigx.common.core.util.R; import io.swagger.v3.oas.annotations.Operation; @@ -9,8 +11,12 @@ import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpHeaders; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import java.util.List; +import java.util.stream.Collectors; + /** * 页面管理 * @@ -47,8 +53,18 @@ public class AppPageController { */ @Operation(summary = "更新页面", description = "更新页面") @PutMapping + @Transactional(rollbackFor = Exception.class) public R update(@RequestBody AppPageEntity page) { - return R.ok(pageService.saveOrUpdate(page)); + List pageEntityList = pageService + .list(Wrappers.lambdaQuery().eq(AppPageEntity::getPageType, page.getPageType())); + + if (CollUtil.isNotEmpty(pageEntityList)) { + // 删掉原来类型的页面数据 + pageService.removeByIds(pageEntityList.stream().map(AppPageEntity::getId).collect(Collectors.toList())); + } + + page.setPageName(PageTypeEnums.getNameByType(page.getPageType())); + return R.ok(pageService.save(page)); } } diff --git a/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/service/impl/AppIndexServiceImpl.java b/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/service/impl/AppIndexServiceImpl.java index 5768ad06f..2d57aab3a 100644 --- a/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/service/impl/AppIndexServiceImpl.java +++ b/pigx-app-server/pigx-app-server-biz/src/main/java/com/pig4cloud/pigx/app/service/impl/AppIndexServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.pig4cloud.pigx.app.api.entity.AppArticleEntity; import com.pig4cloud.pigx.app.api.entity.AppPageEntity; import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity; +import com.pig4cloud.pigx.app.api.enums.PageTypeEnums; import com.pig4cloud.pigx.app.mapper.AppArticleMapper; import com.pig4cloud.pigx.app.mapper.AppPageMapper; import com.pig4cloud.pigx.app.mapper.AppTabbarMapper; @@ -26,48 +27,53 @@ import java.util.Map; @RequiredArgsConstructor public class AppIndexServiceImpl implements AppIndexService { - private final AppArticleMapper appArticleMapper; + private final AppArticleMapper appArticleMapper; - private final AppTabbarMapper appTabbarMapper; + private final AppTabbarMapper appTabbarMapper; - private final AppPageMapper appPageMapper; + private final AppPageMapper appPageMapper; - /** - * 商城首页 首页数据 - */ - @Override - public Map index() { - Map response = new LinkedHashMap<>(); - AppPageEntity appPageEntity = appPageMapper.selectById(1); - List articleList = appArticleMapper - .selectList(Wrappers.lambdaQuery().orderByDesc(AppArticleEntity::getSort)); - response.put("pages", appPageEntity); - response.put("article", articleList); - return response; - } + /** + * 商城首页 首页数据 + */ + @Override + public Map index() { + Map response = new LinkedHashMap<>(); + AppPageEntity appPageEntity = appPageMapper.selectOne(Wrappers.lambdaQuery() + .eq(AppPageEntity::getPageType, PageTypeEnums.HOME.getPageType()) + .orderByDesc(AppPageEntity::getCreateTime), + false + ); + List articleList = appArticleMapper + .selectList(Wrappers.lambdaQuery().orderByDesc(AppArticleEntity::getSort)); + response.put("pages", appPageEntity); + response.put("article", articleList); + return response; + } - /** - * 配置 - * @return Map - */ - @Override - public Map config() { - Map response = new LinkedHashMap<>(); - List tabbarEntityList = appTabbarMapper.selectList(Wrappers.emptyWrapper()); - response.put("tabbar", tabbarEntityList); - return response; - } + /** + * 导航栏配置 + * + * @return Map + */ + @Override + public Map config() { + Map response = new LinkedHashMap<>(); + List tabbarEntityList = appTabbarMapper.selectList(Wrappers.emptyWrapper()); + response.put("tabbar", tabbarEntityList); + return response; + } - /** - * 装修 - * - * @author fzr - * @param id 主键 - * @return Map - */ - @Override - public AppPageEntity decorate(Integer id) { - return appPageMapper.selectById(id); - } + /** + * 根据类型查询页面配置 + * + * @param pageType 页面类型 + * @return {@link AppPageEntity } + */ + @Override + public AppPageEntity decorate(Integer pageType) { + return appPageMapper.selectOne(Wrappers.lambdaQuery().eq(AppPageEntity::getPageType, pageType) + .orderByDesc(AppPageEntity::getCreateTime), false); + } }