mirror of https://gitee.com/xiaonuobase/snowy
俞宝山
4 months ago
44 changed files with 2479 additions and 1 deletions
@ -0,0 +1,40 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.auth.api; |
||||
|
||||
import cn.hutool.json.JSONObject; |
||||
|
||||
/** |
||||
* 认证鉴权API |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/18 17:35 |
||||
*/ |
||||
public interface AuthApi { |
||||
|
||||
/** |
||||
* 获取基础登录业务数据,b端在线用户,c端在线用户 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/18 17:35 |
||||
*/ |
||||
JSONObject getUserSessionCount(); |
||||
|
||||
/** |
||||
* 获取三方用户总量 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/18 17:35 |
||||
*/ |
||||
Long getThirdUserCount(); |
||||
} |
@ -0,0 +1,34 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.api; |
||||
|
||||
import cn.hutool.json.JSONObject; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 轮播图API |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
public interface DevSlideshowApi { |
||||
|
||||
/** |
||||
* 通过位置获得轮播图列表 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
List<JSONObject> getListByPlace(String place); |
||||
} |
@ -0,0 +1,78 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.auth.modular.auth; |
||||
|
||||
|
||||
import cn.dev33.satoken.session.SaSession; |
||||
import cn.dev33.satoken.stp.StpUtil; |
||||
import cn.hutool.core.date.DateTime; |
||||
import cn.hutool.core.util.StrUtil; |
||||
import cn.hutool.json.JSONObject; |
||||
import cn.hutool.json.JSONUtil; |
||||
import jakarta.annotation.Resource; |
||||
import org.springframework.stereotype.Service; |
||||
import vip.xiaonuo.auth.api.AuthApi; |
||||
import vip.xiaonuo.auth.core.util.StpClientUtil; |
||||
import vip.xiaonuo.auth.modular.third.service.AuthThirdService; |
||||
|
||||
import java.util.List; |
||||
import java.util.stream.Collectors; |
||||
|
||||
/** |
||||
* 认证鉴权API实现类 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/18 17:35 |
||||
**/ |
||||
@Service |
||||
public class AuthApiProvider implements AuthApi { |
||||
|
||||
@Resource |
||||
private AuthThirdService authThirdService; |
||||
|
||||
@Override |
||||
public JSONObject getUserSessionCount() { |
||||
JSONObject resultObj = new JSONObject(); |
||||
List<JSONObject> sessionListB = StpUtil.searchSessionId("", -1, -1, true).stream().map(sessionId -> { |
||||
JSONObject jsonObject = JSONUtil.createObj(); |
||||
String userId = StrUtil.split(sessionId, StrUtil.COLON).get(3); |
||||
SaSession saSession = StpUtil.getSessionByLoginId(userId, false); |
||||
int tokenCount = saSession.getTokenSignList().size(); |
||||
long createTime = saSession.getCreateTime(); |
||||
jsonObject.set("userId", userId); |
||||
jsonObject.set("tokenCount", tokenCount); |
||||
jsonObject.set("createTime", DateTime.of(createTime)); |
||||
return jsonObject; |
||||
}).collect(Collectors.toList()); |
||||
|
||||
List<JSONObject> sessionListC = StpClientUtil.searchSessionId("", -1, -1, true).stream().map(sessionId -> { |
||||
JSONObject jsonObject = JSONUtil.createObj(); |
||||
String userId = StrUtil.split(sessionId, StrUtil.COLON).get(3); |
||||
SaSession saSession = StpClientUtil.getSessionByLoginId(userId, false); |
||||
int tokenCount = saSession.getTokenSignList().size(); |
||||
long createTime = saSession.getCreateTime(); |
||||
jsonObject.set("userId", userId); |
||||
jsonObject.set("tokenCount", tokenCount); |
||||
jsonObject.set("createTime", DateTime.of(createTime)); |
||||
return jsonObject; |
||||
}).collect(Collectors.toList()); |
||||
resultObj.set("backUserSessionCount" ,sessionListB.size()); |
||||
resultObj.set("clientUserSessionCount" ,sessionListC.size()); |
||||
return resultObj; |
||||
} |
||||
|
||||
@Override |
||||
public Long getThirdUserCount() { |
||||
return authThirdService.count(); |
||||
} |
||||
} |
@ -0,0 +1,87 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.index.controller; |
||||
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport; |
||||
import io.swagger.v3.oas.annotations.Operation; |
||||
import io.swagger.v3.oas.annotations.tags.Tag; |
||||
import jakarta.annotation.Resource; |
||||
import org.springframework.validation.annotation.Validated; |
||||
import org.springframework.web.bind.annotation.GetMapping; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
import vip.xiaonuo.biz.modular.index.param.BizIndexNoticeIdParam; |
||||
import vip.xiaonuo.biz.modular.index.param.BizIndexNoticeListParam; |
||||
import vip.xiaonuo.biz.modular.index.param.BizIndexSlideshowListParam; |
||||
import vip.xiaonuo.biz.modular.index.result.BizIndexNoticeListResult; |
||||
import vip.xiaonuo.biz.modular.index.result.BizIndexSlideshowDetailResult; |
||||
import vip.xiaonuo.biz.modular.index.result.BizIndexSlideshowListResult; |
||||
import vip.xiaonuo.biz.modular.index.service.BizIndexService; |
||||
import vip.xiaonuo.common.pojo.CommonResult; |
||||
import javax.validation.Valid; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 业务首页控制器 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/13 21:02 |
||||
*/ |
||||
@Tag(name = "业务首页控制器") |
||||
@ApiSupport(author = "SNOWY_TEAM", order = 0) |
||||
@RestController |
||||
@Validated |
||||
public class BizIndexController { |
||||
|
||||
@Resource |
||||
private BizIndexService bizIndexService; |
||||
|
||||
/** |
||||
* 获取轮播图列表 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/13 21:02 |
||||
*/ |
||||
@ApiOperationSupport(order = 1) |
||||
@Operation(summary = "获取轮播图列表") |
||||
@GetMapping("/biz/index/slideshow/list") |
||||
public CommonResult<List<BizIndexSlideshowListResult>> slideshowListByPlace(@Valid BizIndexSlideshowListParam bizIndexSlideshowListParam) { |
||||
return CommonResult.data(bizIndexService.slideshowListByPlace(bizIndexSlideshowListParam)); |
||||
} |
||||
|
||||
/** |
||||
* 获取通知公告列表 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/13 21:02 |
||||
*/ |
||||
@ApiOperationSupport(order = 2) |
||||
@Operation(summary = "获取通知公告列表") |
||||
@GetMapping("/biz/index/notice/list") |
||||
public CommonResult<List<BizIndexNoticeListResult>> noticeListByLimit(BizIndexNoticeListParam bizIndexNoticeListParam) { |
||||
return CommonResult.data(bizIndexService.noticeListByLimit(bizIndexNoticeListParam)); |
||||
} |
||||
|
||||
/** |
||||
* 获取通知公告详情 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/13 21:02 |
||||
*/ |
||||
@ApiOperationSupport(order = 3) |
||||
@Operation(summary = "获取通知公告详情") |
||||
@GetMapping("/biz/index/notice/detail") |
||||
public CommonResult<BizIndexSlideshowDetailResult> noticeDetailById(@Valid BizIndexNoticeIdParam bizIndexNoticeIdParam) { |
||||
return CommonResult.data(bizIndexService.noticeDetailById(bizIndexNoticeIdParam)); |
||||
} |
||||
} |
@ -0,0 +1,32 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.index.param; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
/** |
||||
* 通知公告详情参数 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/13 21:02 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
public class BizIndexNoticeIdParam { |
||||
|
||||
/** ID */ |
||||
@Schema(description = "ID") |
||||
private String id; |
||||
} |
@ -0,0 +1,32 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.index.param; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
/** |
||||
* 通知公告列表参数 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/13 21:02 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
public class BizIndexNoticeListParam { |
||||
|
||||
/** 条数" */ |
||||
@Schema(description = "条数") |
||||
private Integer limit; |
||||
} |
@ -0,0 +1,32 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.index.param; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
/** |
||||
* 轮播图列表参数 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
public class BizIndexSlideshowListParam { |
||||
|
||||
/** 位置" */ |
||||
@Schema(description = "位置") |
||||
private String place; |
||||
} |
@ -0,0 +1,58 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.index.result; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
import java.util.Date; |
||||
|
||||
/** |
||||
* 轮播图结果 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Getter |
||||
@Setter |
||||
public class BizIndexNoticeListResult { |
||||
|
||||
/** 主键 */ |
||||
@Schema(description = "主键") |
||||
private String id; |
||||
|
||||
/** 标题 */ |
||||
@Schema(description = "标题") |
||||
private String title; |
||||
|
||||
/** 封面图 */ |
||||
@Schema(description = "封面图") |
||||
private String image; |
||||
|
||||
/** 摘要 */ |
||||
@Schema(description = "摘要") |
||||
private String digest; |
||||
|
||||
/** 类型 */ |
||||
@Schema(description = "类型") |
||||
private String type; |
||||
|
||||
/** 排序 */ |
||||
@Schema(description = "排序") |
||||
private String sortCode; |
||||
|
||||
/** 创建时间 */ |
||||
@Schema(description = "创建时间") |
||||
private Date createTime; |
||||
} |
@ -0,0 +1,70 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.index.result; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId; |
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
/** |
||||
* 轮播图结果 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Getter |
||||
@Setter |
||||
public class BizIndexSlideshowDetailResult { |
||||
|
||||
/** 主键 */ |
||||
@TableId |
||||
@Schema(description = "主键") |
||||
private String id; |
||||
|
||||
/** 标题 */ |
||||
@Schema(description = "标题") |
||||
private String title; |
||||
|
||||
/** 封面图 */ |
||||
@Schema(description = "封面图") |
||||
private String image; |
||||
|
||||
/** 内容 */ |
||||
@Schema(description = "内容") |
||||
private String content; |
||||
|
||||
/** 摘要 */ |
||||
@Schema(description = "摘要") |
||||
private String digest; |
||||
|
||||
/** 类型 */ |
||||
@Schema(description = "类型") |
||||
private String type; |
||||
|
||||
/** 状态 */ |
||||
@Schema(description = "状态") |
||||
private String status; |
||||
|
||||
/** 备注 */ |
||||
@Schema(description = "备注") |
||||
private String remark; |
||||
|
||||
/** 排序 */ |
||||
@Schema(description = "排序") |
||||
private String sortCode; |
||||
|
||||
/** 扩展信息 */ |
||||
@Schema(description = "扩展信息") |
||||
private String extJson; |
||||
} |
@ -0,0 +1,44 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.index.result; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
/** |
||||
* 轮播图结果 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Getter |
||||
@Setter |
||||
public class BizIndexSlideshowListResult { |
||||
|
||||
/** id */ |
||||
@Schema(description = "主键") |
||||
private String id; |
||||
|
||||
/** 标题 */ |
||||
@Schema(description = "标题") |
||||
private String title; |
||||
|
||||
/** 图片 */ |
||||
@Schema(description = "图片") |
||||
private String image; |
||||
|
||||
/** 路径详情 */ |
||||
@Schema(description = "路径详情") |
||||
private String pathDetails; |
||||
} |
@ -0,0 +1,56 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.index.service; |
||||
|
||||
import vip.xiaonuo.biz.modular.index.param.BizIndexNoticeIdParam; |
||||
import vip.xiaonuo.biz.modular.index.param.BizIndexNoticeListParam; |
||||
import vip.xiaonuo.biz.modular.index.param.BizIndexSlideshowListParam; |
||||
import vip.xiaonuo.biz.modular.index.result.BizIndexNoticeListResult; |
||||
import vip.xiaonuo.biz.modular.index.result.BizIndexSlideshowDetailResult; |
||||
import vip.xiaonuo.biz.modular.index.result.BizIndexSlideshowListResult; |
||||
|
||||
import javax.validation.Valid; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 业务首页Service接口 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
public interface BizIndexService { |
||||
|
||||
/** |
||||
* 获取轮播图列表 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
List<BizIndexSlideshowListResult> slideshowListByPlace(BizIndexSlideshowListParam bizIndexSlideshowListParam); |
||||
|
||||
/** |
||||
* 获取通知公告列表 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
List<BizIndexNoticeListResult> noticeListByLimit(@Valid BizIndexNoticeListParam bizIndexNoticeListParam); |
||||
|
||||
/** |
||||
* 获取通知公告详情 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
BizIndexSlideshowDetailResult noticeDetailById(BizIndexNoticeIdParam bizIndexNoticeIdParam); |
||||
} |
@ -0,0 +1,74 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.index.service.impl; |
||||
|
||||
import cn.hutool.core.bean.BeanUtil; |
||||
import cn.hutool.core.util.ObjectUtil; |
||||
import cn.hutool.json.JSONUtil; |
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
import jakarta.annotation.Resource; |
||||
import org.springframework.stereotype.Service; |
||||
import vip.xiaonuo.biz.modular.index.param.BizIndexNoticeIdParam; |
||||
import vip.xiaonuo.biz.modular.index.param.BizIndexNoticeListParam; |
||||
import vip.xiaonuo.biz.modular.index.param.BizIndexSlideshowListParam; |
||||
import vip.xiaonuo.biz.modular.index.result.BizIndexNoticeListResult; |
||||
import vip.xiaonuo.biz.modular.index.result.BizIndexSlideshowDetailResult; |
||||
import vip.xiaonuo.biz.modular.index.result.BizIndexSlideshowListResult; |
||||
import vip.xiaonuo.biz.modular.index.service.BizIndexService; |
||||
import vip.xiaonuo.biz.modular.notice.entity.BizNotice; |
||||
import vip.xiaonuo.biz.modular.notice.enums.BizNoticeStatusEnum; |
||||
import vip.xiaonuo.biz.modular.notice.service.BizNoticeService; |
||||
import vip.xiaonuo.dev.api.DevSlideshowApi; |
||||
import java.util.List; |
||||
import java.util.stream.Collectors; |
||||
|
||||
/** |
||||
* 业务首页Service接口实现类 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Service |
||||
public class BizIndexServiceImpl implements BizIndexService { |
||||
|
||||
|
||||
@Resource |
||||
private DevSlideshowApi devSlideshowApi; |
||||
|
||||
@Resource |
||||
private BizNoticeService bizNoticeService; |
||||
|
||||
@Override |
||||
public List<BizIndexSlideshowListResult> slideshowListByPlace(BizIndexSlideshowListParam bizIndexSlideshowListParam) { |
||||
return devSlideshowApi.getListByPlace(bizIndexSlideshowListParam.getPlace()).stream() |
||||
.map(jsonObject -> JSONUtil.toBean(jsonObject, BizIndexSlideshowListResult.class)).collect(Collectors.toList()); |
||||
} |
||||
|
||||
@Override |
||||
public List<BizIndexNoticeListResult> noticeListByLimit(BizIndexNoticeListParam bizIndexNoticeListParam) { |
||||
return bizNoticeService.list(new LambdaQueryWrapper<BizNotice>() |
||||
.eq(BizNotice::getStatus, BizNoticeStatusEnum.ENABLE.getValue()) |
||||
.orderByAsc(BizNotice::getCreateTime) |
||||
) |
||||
.stream() |
||||
.limit(ObjectUtil.isNotEmpty(bizIndexNoticeListParam.getLimit())? bizIndexNoticeListParam.getLimit().longValue() : 10) |
||||
.map(notice -> JSONUtil.toBean(JSONUtil.toJsonStr(notice), BizIndexNoticeListResult.class)).collect(Collectors.toList()); |
||||
} |
||||
|
||||
@Override |
||||
public BizIndexSlideshowDetailResult noticeDetailById(BizIndexNoticeIdParam bizIndexNoticeIdParam) { |
||||
BizIndexSlideshowDetailResult result = new BizIndexSlideshowDetailResult(); |
||||
BeanUtil.copyProperties(bizNoticeService.getById(bizIndexNoticeIdParam.getId()), result); |
||||
return result; |
||||
} |
||||
} |
@ -0,0 +1,153 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.notice.controller; |
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission; |
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
import io.swagger.v3.oas.annotations.tags.Tag; |
||||
import io.swagger.v3.oas.annotations.Operation; |
||||
import org.springframework.validation.annotation.Validated; |
||||
import org.springframework.web.bind.annotation.GetMapping; |
||||
import org.springframework.web.bind.annotation.PostMapping; |
||||
import org.springframework.web.bind.annotation.RequestBody; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
import vip.xiaonuo.common.annotation.CommonLog; |
||||
import vip.xiaonuo.common.pojo.CommonResult; |
||||
import vip.xiaonuo.biz.modular.notice.entity.BizNotice; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticeAddParam; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticeEditParam; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticeIdParam; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticePageParam; |
||||
import vip.xiaonuo.biz.modular.notice.service.BizNoticeService; |
||||
|
||||
import jakarta.annotation.Resource; |
||||
import javax.validation.Valid; |
||||
import jakarta.validation.constraints.NotEmpty; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 通知公告控制器 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
@Tag(name = "通知公告控制器") |
||||
@RestController |
||||
@Validated |
||||
public class BizNoticeController { |
||||
|
||||
@Resource |
||||
private BizNoticeService bizNoticeService; |
||||
|
||||
/** |
||||
* 获取通知公告分页 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
@Operation(summary = "获取通知公告分页") |
||||
@SaCheckPermission("/biz/notice/page") |
||||
@GetMapping("/biz/notice/page") |
||||
public CommonResult<Page<BizNotice>> page(BizNoticePageParam bizNoticePageParam) { |
||||
return CommonResult.data(bizNoticeService.page(bizNoticePageParam)); |
||||
} |
||||
|
||||
/** |
||||
* 添加通知公告 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
@Operation(summary = "添加通知公告") |
||||
@CommonLog("添加通知公告") |
||||
@SaCheckPermission("/biz/notice/add") |
||||
@PostMapping("/biz/notice/add") |
||||
public CommonResult<String> add(@RequestBody @Valid BizNoticeAddParam bizNoticeAddParam) { |
||||
bizNoticeService.add(bizNoticeAddParam); |
||||
return CommonResult.ok(); |
||||
} |
||||
|
||||
/** |
||||
* 编辑通知公告 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
@Operation(summary = "编辑通知公告") |
||||
@CommonLog("编辑通知公告") |
||||
@SaCheckPermission("/biz/notice/edit") |
||||
@PostMapping("/biz/notice/edit") |
||||
public CommonResult<String> edit(@RequestBody @Valid BizNoticeEditParam bizNoticeEditParam) { |
||||
bizNoticeService.edit(bizNoticeEditParam); |
||||
return CommonResult.ok(); |
||||
} |
||||
|
||||
/** |
||||
* 删除通知公告 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
@Operation(summary = "删除通知公告") |
||||
@CommonLog("删除通知公告") |
||||
@SaCheckPermission("/biz/notice/delete") |
||||
@PostMapping("/biz/notice/delete") |
||||
public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空") |
||||
List<BizNoticeIdParam> bizNoticeIdParamList) { |
||||
bizNoticeService.delete(bizNoticeIdParamList); |
||||
return CommonResult.ok(); |
||||
} |
||||
|
||||
/** |
||||
* 获取通知公告详情 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
@Operation(summary = "获取通知公告详情") |
||||
@SaCheckPermission("/biz/notice/detail") |
||||
@GetMapping("/biz/notice/detail") |
||||
public CommonResult<BizNotice> detail(@Valid BizNoticeIdParam bizNoticeIdParam) { |
||||
return CommonResult.data(bizNoticeService.detail(bizNoticeIdParam)); |
||||
} |
||||
|
||||
/** |
||||
* 禁用通知公告 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
@Operation(summary = "禁用通知公告") |
||||
@CommonLog("禁用通知公告") |
||||
@SaCheckPermission("/biz/notice/disableStatus") |
||||
@PostMapping("/biz/notice/disableStatus") |
||||
public CommonResult<String> disableStatus(@RequestBody @Valid BizNoticeIdParam bizNoticeIdParam) { |
||||
bizNoticeService.disableStatus(bizNoticeIdParam); |
||||
return CommonResult.ok(); |
||||
} |
||||
|
||||
/** |
||||
* 启用通知公告 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
@Operation(summary = "启用通知公告") |
||||
@CommonLog("启用通知公告") |
||||
@SaCheckPermission("/biz/notice/enableStatus") |
||||
@PostMapping("/biz/notice/enableStatus") |
||||
public CommonResult<String> enableStatus(@RequestBody @Valid BizNoticeIdParam bizNoticeIdParam) { |
||||
bizNoticeService.enableStatus(bizNoticeIdParam); |
||||
return CommonResult.ok(); |
||||
} |
||||
} |
@ -0,0 +1,80 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.notice.entity; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.*; |
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
import vip.xiaonuo.common.pojo.CommonEntity; |
||||
|
||||
/** |
||||
* 通知公告实体 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
@TableName("biz_notice") |
||||
public class BizNotice extends CommonEntity { |
||||
|
||||
/** 主键 */ |
||||
@TableId |
||||
@Schema(description = "主键") |
||||
private String id; |
||||
|
||||
/** 租户id */ |
||||
@Schema(description = "租户id") |
||||
private String tenantId; |
||||
|
||||
/** 标题 */ |
||||
@Schema(description = "标题") |
||||
private String title; |
||||
|
||||
/** 封面图 */ |
||||
@Schema(description = "封面图") |
||||
private String image; |
||||
|
||||
/** 内容 */ |
||||
@Schema(description = "内容") |
||||
private String content; |
||||
|
||||
/** 摘要 */ |
||||
@Schema(description = "摘要") |
||||
private String digest; |
||||
|
||||
/** 类型 */ |
||||
@Schema(description = "类型") |
||||
private String type; |
||||
|
||||
/** 发布位置 */ |
||||
@Schema(description = "发布位置") |
||||
private String place; |
||||
|
||||
/** 状态 */ |
||||
@Schema(description = "状态") |
||||
private String status; |
||||
|
||||
/** 备注 */ |
||||
@Schema(description = "备注") |
||||
private String remark; |
||||
|
||||
/** 排序 */ |
||||
@Schema(description = "排序") |
||||
private String sortCode; |
||||
|
||||
/** 扩展信息 */ |
||||
@Schema(description = "扩展信息") |
||||
private String extJson; |
||||
} |
@ -0,0 +1,49 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.notice.enums; |
||||
|
||||
import lombok.Getter; |
||||
import vip.xiaonuo.common.exception.CommonException; |
||||
|
||||
/** |
||||
* 通知公告状态枚举 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
@Getter |
||||
public enum BizNoticeStatusEnum { |
||||
|
||||
/** |
||||
* 正常 |
||||
*/ |
||||
ENABLE("ENABLE"), |
||||
|
||||
/** |
||||
* 禁用 |
||||
*/ |
||||
DISABLE("DISABLE"); |
||||
|
||||
private final String value; |
||||
|
||||
BizNoticeStatusEnum(String value) { |
||||
this.value = value; |
||||
} |
||||
|
||||
public static void validate(String value) { |
||||
boolean flag = ENABLE.getValue().equals(value) || DISABLE.getValue().equals(value); |
||||
if(!flag) { |
||||
throw new CommonException("不支持的状态:{}", value); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,25 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.notice.mapper; |
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
import vip.xiaonuo.biz.modular.notice.entity.BizNotice; |
||||
|
||||
/** |
||||
* 通知公告Mapper接口 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
**/ |
||||
public interface BizNoticeMapper extends BaseMapper<BizNotice> { |
||||
} |
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
<mapper namespace="vip.xiaonuo.biz.modular.notice.mapper.BizNoticeMapper"> |
||||
|
||||
</mapper> |
@ -0,0 +1,66 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.notice.param; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
import jakarta.validation.constraints.NotBlank; |
||||
|
||||
/** |
||||
* 通知公告添加参数 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
public class BizNoticeAddParam { |
||||
|
||||
/** 标题 */ |
||||
@Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "title不能为空") |
||||
private String title; |
||||
|
||||
/** 封面图 */ |
||||
@Schema(description = "封面图") |
||||
private String image; |
||||
|
||||
/** 内容 */ |
||||
@Schema(description = "内容", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "content不能为空") |
||||
private String content; |
||||
|
||||
/** 摘要 */ |
||||
@Schema(description = "摘要", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "digest不能为空") |
||||
private String digest; |
||||
|
||||
/** 类型 */ |
||||
@Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "type不能为空") |
||||
private String type; |
||||
|
||||
/** 发布位置 */ |
||||
@Schema(description = "发布位置", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "place不能为空") |
||||
private String place; |
||||
|
||||
/** 备注 */ |
||||
@Schema(description = "备注") |
||||
private String remark; |
||||
|
||||
/** 排序码 */ |
||||
@Schema(description = "排序码") |
||||
private Integer sortCode; |
||||
} |
@ -0,0 +1,71 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.notice.param; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
import jakarta.validation.constraints.NotBlank; |
||||
|
||||
/** |
||||
* 通知公告编辑参数 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
public class BizNoticeEditParam { |
||||
|
||||
/** 主键 */ |
||||
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "id不能为空") |
||||
private String id; |
||||
|
||||
/** 标题 */ |
||||
@Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "title不能为空") |
||||
private String title; |
||||
|
||||
/** 封面图 */ |
||||
@Schema(description = "封面图") |
||||
private String image; |
||||
|
||||
/** 内容 */ |
||||
@Schema(description = "内容", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "content不能为空") |
||||
private String content; |
||||
|
||||
/** 摘要 */ |
||||
@Schema(description = "摘要", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "digest不能为空") |
||||
private String digest; |
||||
|
||||
/** 类型 */ |
||||
@Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "type不能为空") |
||||
private String type; |
||||
|
||||
/** 发布位置 */ |
||||
@Schema(description = "发布位置", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "place不能为空") |
||||
private String place; |
||||
|
||||
/** 备注 */ |
||||
@Schema(description = "备注") |
||||
private String remark; |
||||
|
||||
/** 排序码 */ |
||||
@Schema(description = "排序码") |
||||
private Integer sortCode; |
||||
} |
@ -0,0 +1,34 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.notice.param; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
import jakarta.validation.constraints.NotBlank; |
||||
|
||||
/** |
||||
* 通知公告Id参数 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
public class BizNoticeIdParam { |
||||
|
||||
/** 主键 */ |
||||
@Schema(description = "主键") |
||||
@NotBlank(message = "id不能为空") |
||||
private String id; |
||||
} |
@ -0,0 +1,73 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.notice.param; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
/** |
||||
* 通知公告查询参数 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
public class BizNoticePageParam { |
||||
|
||||
/** 当前页 */ |
||||
@Schema(description = "当前页码") |
||||
private Integer current; |
||||
|
||||
/** 每页条数 */ |
||||
@Schema(description = "每页条数") |
||||
private Integer size; |
||||
|
||||
/** 排序字段 */ |
||||
@Schema(description = "排序字段,字段驼峰名称,如:userName") |
||||
private String sortField; |
||||
|
||||
/** 排序方式 */ |
||||
@Schema(description = "排序方式,升序:ASCEND;降序:DESCEND") |
||||
private String sortOrder; |
||||
|
||||
/** 关键词 */ |
||||
@Schema(description = "关键词") |
||||
private String searchKey; |
||||
|
||||
/** 标题 */ |
||||
@Schema(description = "标题") |
||||
private String title; |
||||
|
||||
/** 类型 */ |
||||
@Schema(description = "类型") |
||||
private String type; |
||||
|
||||
/** 发布位置 */ |
||||
@Schema(description = "发布位置") |
||||
private String place; |
||||
|
||||
/** 状态 */ |
||||
@Schema(description = "状态") |
||||
private String status; |
||||
|
||||
/** 创建时间开始 */ |
||||
@Schema(description = "创建时间开始") |
||||
private String startCreateTime; |
||||
|
||||
/** 创建时间结束 */ |
||||
@Schema(description = "创建时间结束") |
||||
private String endCreateTime; |
||||
|
||||
} |
@ -0,0 +1,96 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.notice.service; |
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
import com.baomidou.mybatisplus.extension.service.IService; |
||||
import vip.xiaonuo.biz.modular.notice.entity.BizNotice; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticeAddParam; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticeEditParam; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticeIdParam; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticePageParam; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 通知公告Service接口 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
**/ |
||||
public interface BizNoticeService extends IService<BizNotice> { |
||||
|
||||
/** |
||||
* 获取通知公告分页 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
Page<BizNotice> page(BizNoticePageParam bizNoticePageParam); |
||||
|
||||
/** |
||||
* 添加通知公告 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
void add(BizNoticeAddParam bizNoticeAddParam); |
||||
|
||||
/** |
||||
* 编辑通知公告 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
void edit(BizNoticeEditParam bizNoticeEditParam); |
||||
|
||||
/** |
||||
* 删除通知公告 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
void delete(List<BizNoticeIdParam> bizNoticeIdParamList); |
||||
|
||||
/** |
||||
* 获取通知公告详情 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
BizNotice detail(BizNoticeIdParam bizNoticeIdParam); |
||||
|
||||
/** |
||||
* 获取通知公告详情 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
**/ |
||||
BizNotice queryEntity(String id); |
||||
|
||||
/** |
||||
* 禁用通知公告 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
void disableStatus(BizNoticeIdParam bizNoticeIdParam); |
||||
|
||||
/** |
||||
* 启用通知公告 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
void enableStatus(BizNoticeIdParam bizNoticeIdParam); |
||||
} |
@ -0,0 +1,128 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.biz.modular.notice.service.impl; |
||||
|
||||
import cn.hutool.core.bean.BeanUtil; |
||||
import cn.hutool.core.collection.CollStreamUtil; |
||||
import cn.hutool.core.util.ObjectUtil; |
||||
import cn.hutool.core.util.StrUtil; |
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import org.springframework.stereotype.Service; |
||||
import org.springframework.transaction.annotation.Transactional; |
||||
import vip.xiaonuo.biz.modular.notice.enums.BizNoticeStatusEnum; |
||||
import vip.xiaonuo.common.enums.CommonSortOrderEnum; |
||||
import vip.xiaonuo.common.exception.CommonException; |
||||
import vip.xiaonuo.common.page.CommonPageRequest; |
||||
import vip.xiaonuo.biz.modular.notice.entity.BizNotice; |
||||
import vip.xiaonuo.biz.modular.notice.mapper.BizNoticeMapper; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticeAddParam; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticeEditParam; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticeIdParam; |
||||
import vip.xiaonuo.biz.modular.notice.param.BizNoticePageParam; |
||||
import vip.xiaonuo.biz.modular.notice.service.BizNoticeService; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 通知公告Service接口实现类 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
**/ |
||||
@Service |
||||
public class BizNoticeServiceImpl extends ServiceImpl<BizNoticeMapper, BizNotice> implements BizNoticeService { |
||||
|
||||
|
||||
@Override |
||||
public Page<BizNotice> page(BizNoticePageParam bizNoticePageParam) { |
||||
QueryWrapper<BizNotice> queryWrapper = new QueryWrapper<BizNotice>().checkSqlInjection(); |
||||
if(ObjectUtil.isNotEmpty(bizNoticePageParam.getTitle())) { |
||||
queryWrapper.lambda().like(BizNotice::getTitle, bizNoticePageParam.getTitle()); |
||||
} |
||||
if(ObjectUtil.isNotEmpty(bizNoticePageParam.getType())) { |
||||
queryWrapper.lambda().eq(BizNotice::getType, bizNoticePageParam.getType()); |
||||
} |
||||
if(ObjectUtil.isNotEmpty(bizNoticePageParam.getPlace())) { |
||||
queryWrapper.lambda().like(BizNotice::getPlace, bizNoticePageParam.getPlace()); |
||||
} |
||||
if(ObjectUtil.isNotEmpty(bizNoticePageParam.getStatus())) { |
||||
queryWrapper.lambda().eq(BizNotice::getStatus, bizNoticePageParam.getStatus()); |
||||
} |
||||
if(ObjectUtil.isNotEmpty(bizNoticePageParam.getStartCreateTime()) && ObjectUtil.isNotEmpty(bizNoticePageParam.getEndCreateTime())) { |
||||
queryWrapper.lambda().between(BizNotice::getCreateTime, bizNoticePageParam.getStartCreateTime(), bizNoticePageParam.getEndCreateTime()); |
||||
} |
||||
if(ObjectUtil.isAllNotEmpty(bizNoticePageParam.getSortField(), bizNoticePageParam.getSortOrder())) { |
||||
CommonSortOrderEnum.validate(bizNoticePageParam.getSortOrder()); |
||||
queryWrapper.orderBy(true, bizNoticePageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()), |
||||
StrUtil.toUnderlineCase(bizNoticePageParam.getSortField())); |
||||
} else { |
||||
queryWrapper.lambda().orderByAsc(BizNotice::getId); |
||||
} |
||||
return this.page(CommonPageRequest.defaultPage(), queryWrapper); |
||||
} |
||||
|
||||
@Transactional(rollbackFor = Exception.class) |
||||
@Override |
||||
public void add(BizNoticeAddParam bizNoticeAddParam) { |
||||
BizNotice bizNotice = BeanUtil.toBean(bizNoticeAddParam, BizNotice.class); |
||||
// 默认为禁用的
|
||||
bizNotice.setStatus(BizNoticeStatusEnum.DISABLE.getValue()); |
||||
this.save(bizNotice); |
||||
} |
||||
|
||||
@Transactional(rollbackFor = Exception.class) |
||||
@Override |
||||
public void edit(BizNoticeEditParam bizNoticeEditParam) { |
||||
BizNotice bizNotice = this.queryEntity(bizNoticeEditParam.getId()); |
||||
BeanUtil.copyProperties(bizNoticeEditParam, bizNotice); |
||||
this.updateById(bizNotice); |
||||
} |
||||
|
||||
@Transactional(rollbackFor = Exception.class) |
||||
@Override |
||||
public void delete(List<BizNoticeIdParam> bizNoticeIdParamList) { |
||||
// 执行删除
|
||||
this.removeByIds(CollStreamUtil.toList(bizNoticeIdParamList, BizNoticeIdParam::getId)); |
||||
} |
||||
|
||||
@Override |
||||
public BizNotice detail(BizNoticeIdParam bizNoticeIdParam) { |
||||
return this.queryEntity(bizNoticeIdParam.getId()); |
||||
} |
||||
|
||||
@Override |
||||
public BizNotice queryEntity(String id) { |
||||
BizNotice bizNotice = this.getById(id); |
||||
if(ObjectUtil.isEmpty(bizNotice)) { |
||||
throw new CommonException("通知公告不存在,id值为:{}", id); |
||||
} |
||||
return bizNotice; |
||||
} |
||||
|
||||
@Transactional(rollbackFor = Exception.class) |
||||
@Override |
||||
public void disableStatus(BizNoticeIdParam bizNoticeIdParam) { |
||||
this.update(new LambdaUpdateWrapper<BizNotice>().eq(BizNotice::getId, |
||||
bizNoticeIdParam.getId()).set(BizNotice::getStatus, BizNoticeStatusEnum.DISABLE.getValue())); |
||||
} |
||||
|
||||
@Transactional(rollbackFor = Exception.class) |
||||
@Override |
||||
public void enableStatus(BizNoticeIdParam bizNoticeIdParam) { |
||||
this.update(new LambdaUpdateWrapper<BizNotice>().eq(BizNotice::getId, |
||||
bizNoticeIdParam.getId()).set(BizNotice::getStatus, BizNoticeStatusEnum.ENABLE.getValue())); |
||||
} |
||||
} |
@ -0,0 +1,28 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.core.conts; |
||||
|
||||
/** |
||||
* dev工具类静态变量 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2022/7/13 16:53 |
||||
*/ |
||||
public interface DevConstants { |
||||
|
||||
/** |
||||
* 静态的轮播图base64图片 |
||||
*/ |
||||
String STATIC_SLIDESHOW_IMAGE = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfQAAADcCAIAAAAJPMQyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMi1jMDAwIDc5LjU2NmViYzViNCwgMjAyMi8wNS8wOS0wODoyNTo1NSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIzLjQgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjE5RDQ0MENFMDc2RjExRURBRTU5RTM4OUFDNjE5MDUyIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjE5RDQ0MENGMDc2RjExRURBRTU5RTM4OUFDNjE5MDUyIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTlENDQwQ0MwNzZGMTFFREFFNTlFMzg5QUM2MTkwNTIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTlENDQwQ0QwNzZGMTFFREFFNTlFMzg5QUM2MTkwNTIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7jEwzPAAAFT0lEQVR42uzdW3JTRxSG0YanMAGYU+ZflQFgxxAnuBKXJFvWJRwCpHAUWUc6l9271xrCfvgeus4vvfr5l30BCO/dm/L2J2c41WsnAKrw26osN84g7kAu+1KulmXnrUHcgWQet+Vm5QziDqTz6bHcPzmDuAPpXC3LZucM4g7k8rns10tnEHcgnb+euvcZxB3I5mZV1h5nxB1IZrcv7xfFh5HiDmSz3JTbB2cQdyAds1VxBxLqZqsLs1VxB9J53JmtijuQkdmquAM5ma2KO5CQ2aq4AzmZrYo7kJPZqrgDCZmtijuQ03LTLZsQdyCb2wezVXEH0tmX7nGm8dmquAMJrZufrYo7kNOnx+7jSHEHyOa64dmquANpfS77VauzVXEHMrtvdbYq7kByN6vuZ4HFHSCV3b77Q4/WPowUdyC/Bmer4g40obXZqrgDTWhttiruQCuamq2KO9CQdmar4g605XrRxGxV3IG2bPZNzFbFHWhOC7NVcQda1M1Wt+IOkMvuy+NM4g8jxR1oVO7ZqrgD7Uo8WxV3oF2JZ6viDjQt62xV3IHWpZytijtAwtmquAMknK2KO0An2WxV3AG+yjRbFXeArzLNVsUd4F9pZqviDvCDHLNVcQf4QY7ZqrgDPJdgtiruAAfUPlsVd4DDqp6tijvAYVXPVsUd4H/VO1sVd4BjKp2tijvAMbt9eV/hbFXcAV6wqnC2Ku4AL6tutiruAC+rbrYq7gAnWe/Kr/U8zog7wKnu6pmtijtAD7XMVsUdoIdaZqviDtDP/VP5I/xsVdwBevsQfrYq7gC9xZ+tijvAOYLPVsUd4EyRZ6viDnCmyLNVcQc4X9jZqrgDXCTmbFXcAS4VcLYq7gCXCjhbFXeAAUSbrYo7wDBCzVbFHWAYoWar4g4wmDizVXEHGFKQ2aq4AwwpyGxV3AEGFmG2Ku4Aw5t9tiruAKOYd7Yq7gCjmHe2Ku4AY5lxtiruACOaa7Yq7gAjmmu2Ku4A45pltiruAKObfrYq7gCjm362Ku4AU5h4tiruABOZcrYq7gDTmWy2Ku4A05lstiruAJOaZrYq7gBTm2C2Ku4AU+tmq4txZ6viDjCD1Xbc2aq4A8xj1NmquAPMY9TZqrgDzGa82aq4A8xppNmquAPM7GqE2aq4A8xsO8JsVdwB5jf4bFXcAUIYdrYq7gAhDDtbFXeAKAacrYo7QCBDzVbFHSCQoWar4g4QSzdbvfjLSHEHCOdufelsVdwBIrpwtiruABFdOFsVd4CgLpmtijtAXGfPVsUdIK6zZ6viDhDaebNVcQeI7vahLHrOVsUdILr9ly8je81WxR2gAn1nq+IOUIdes1VxB6jG6bNVcQeoxumzVXEHqMmJs1VxB6jMKbNVcQeozCmzVXEHqM+Ls1VxB6jS8dmquANU6fhsVdwBanVktiruABW7W5c/1+IOkM718sBsVdwB6nZwtiruANX772xV3AEyeDZbFXeADJ7NVsUdIInVtnxciTtAOr9/m62KO0Ae32er4g6Qyj+zVXEHyOZuLe4AGYk7gLgDIO4AiDsA4g6AuAOIOwDiDoC4AyDuAIg7gLg7AYC4AyDuAIg7AOIOgLgDiDsA4g6AuAMg7gCIO4C4AyDuAIg7AOIOgLgDIO4A4g6AuAMg7gCIOwDiDiDuAIg7AOIOgLgDIO4AiDuAuAMg7gCIOwDiDoC4A4g7AOIOgLgDIO4AiDsA4g4g7gCIOwDiDoC4AyDuAOIOgLgDIO4AiDsA4g6AuAOIOwDiDoC4AyDuAIg7gLgDIO4AiDsA4g6AuAMg7gDiDoC4AxDD3wIMAJ+nRtxsLfxoAAAAAElFTkSuQmCC"; |
||||
|
||||
} |
@ -0,0 +1,132 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.controller; |
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
import io.swagger.v3.oas.annotations.tags.Tag; |
||||
import io.swagger.v3.oas.annotations.Operation; |
||||
import org.springframework.validation.annotation.Validated; |
||||
import org.springframework.web.bind.annotation.GetMapping; |
||||
import org.springframework.web.bind.annotation.PostMapping; |
||||
import org.springframework.web.bind.annotation.RequestBody; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
import vip.xiaonuo.common.annotation.CommonLog; |
||||
import vip.xiaonuo.common.pojo.CommonResult; |
||||
import vip.xiaonuo.dev.modular.slideshow.entity.DevSlideshow; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowAddParam; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowEditParam; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowIdParam; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowPageParam; |
||||
import vip.xiaonuo.dev.modular.slideshow.service.DevSlideshowService; |
||||
import jakarta.annotation.Resource; |
||||
import javax.validation.Valid; |
||||
import jakarta.validation.constraints.NotEmpty; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 轮播图控制器 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Tag(name = "轮播图控制器") |
||||
@RestController |
||||
@Validated |
||||
public class DevSlideshowController { |
||||
|
||||
@Resource |
||||
private DevSlideshowService devSlideshowService; |
||||
|
||||
/** |
||||
* 获取轮播图分页 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Operation(summary = "获取轮播图分页") |
||||
@GetMapping("/dev/slideshow/page") |
||||
public CommonResult<Page<DevSlideshow>> page(DevSlideshowPageParam devSlideshowPageParam) { |
||||
return CommonResult.data(devSlideshowService.page(devSlideshowPageParam)); |
||||
} |
||||
|
||||
/** |
||||
* 添加轮播图 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Operation(summary = "添加轮播图") |
||||
@CommonLog("添加轮播图") |
||||
@PostMapping("/dev/slideshow/add") |
||||
public CommonResult<String> add(@RequestBody @Valid DevSlideshowAddParam devSlideshowAddParam) { |
||||
devSlideshowService.add(devSlideshowAddParam); |
||||
return CommonResult.ok(); |
||||
} |
||||
|
||||
/** |
||||
* 编辑轮播图 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Operation(summary = "编辑轮播图") |
||||
@CommonLog("编辑轮播图") |
||||
@PostMapping("/dev/slideshow/edit") |
||||
public CommonResult<String> edit(@RequestBody @Valid DevSlideshowEditParam devSlideshowEditParam) { |
||||
devSlideshowService.edit(devSlideshowEditParam); |
||||
return CommonResult.ok(); |
||||
} |
||||
|
||||
/** |
||||
* 删除轮播图 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Operation(summary = "删除轮播图") |
||||
@CommonLog("删除轮播图") |
||||
@PostMapping("/dev/slideshow/delete") |
||||
public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空") |
||||
List<DevSlideshowIdParam> devSlideshowIdParamList) { |
||||
devSlideshowService.delete(devSlideshowIdParamList); |
||||
return CommonResult.ok(); |
||||
} |
||||
|
||||
/** |
||||
* 禁用轮播图 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Operation(summary = "禁用轮播图") |
||||
@CommonLog("禁用轮播图") |
||||
@PostMapping("/dev/slideshow/disableStatus") |
||||
public CommonResult<String> disableStatus(@RequestBody @Valid DevSlideshowIdParam devSlideshowIdParam) { |
||||
devSlideshowService.disableStatus(devSlideshowIdParam); |
||||
return CommonResult.ok(); |
||||
} |
||||
|
||||
/** |
||||
* 启用轮播图 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Operation(summary = "启用轮播图") |
||||
@CommonLog("启用轮播图") |
||||
@PostMapping("/dev/slideshow/enableStatus") |
||||
public CommonResult<String> enableStatus(@RequestBody @Valid DevSlideshowIdParam devSlideshowIdParam) { |
||||
devSlideshowService.enableStatus(devSlideshowIdParam); |
||||
return CommonResult.ok(); |
||||
} |
||||
} |
@ -0,0 +1,68 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.entity; |
||||
|
||||
import com.baomidou.mybatisplus.annotation.*; |
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
import vip.xiaonuo.common.pojo.CommonEntity; |
||||
|
||||
/** |
||||
* 轮播图实体 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
@TableName("dev_slideshow") |
||||
public class DevSlideshow extends CommonEntity { |
||||
|
||||
/** 主键 */ |
||||
@TableId |
||||
@Schema(description = "主键") |
||||
private String id; |
||||
|
||||
/** 租户id */ |
||||
@Schema(description = "租户id") |
||||
private String tenantId; |
||||
|
||||
/** 标题 */ |
||||
@Schema(description = "标题") |
||||
private String title; |
||||
|
||||
/** 展示位置 */ |
||||
@Schema(description = "展示位置") |
||||
private String place; |
||||
|
||||
/** 图片 */ |
||||
@Schema(description = "图片") |
||||
private String image; |
||||
|
||||
/** 路径详情 */ |
||||
@Schema(description = "路径详情") |
||||
private String pathDetails; |
||||
|
||||
/** 状态 */ |
||||
@Schema(description = "状态") |
||||
private String status; |
||||
|
||||
/** 排序 */ |
||||
@Schema(description = "排序") |
||||
private Integer sortCode; |
||||
|
||||
/** 扩展信息 */ |
||||
@Schema(description = "扩展信息") |
||||
private String extJson; |
||||
} |
@ -0,0 +1,34 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.enums; |
||||
|
||||
import lombok.Getter; |
||||
|
||||
/** |
||||
* 轮播图枚举 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
@Getter |
||||
public enum DevSlideshowEnum { |
||||
|
||||
/** 测试 */ |
||||
TEST("TEST"); |
||||
|
||||
private final String value; |
||||
|
||||
DevSlideshowEnum(String value) { |
||||
this.value = value; |
||||
} |
||||
} |
@ -0,0 +1,49 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.enums; |
||||
|
||||
import lombok.Getter; |
||||
import vip.xiaonuo.common.exception.CommonException; |
||||
|
||||
/** |
||||
* 轮播图状态枚举 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/11 14:46 |
||||
*/ |
||||
@Getter |
||||
public enum DevSlideshowStatusEnum { |
||||
|
||||
/** |
||||
* 正常 |
||||
*/ |
||||
ENABLE("ENABLE"), |
||||
|
||||
/** |
||||
* 禁用 |
||||
*/ |
||||
DISABLE("DISABLE"); |
||||
|
||||
private final String value; |
||||
|
||||
DevSlideshowStatusEnum(String value) { |
||||
this.value = value; |
||||
} |
||||
|
||||
public static void validate(String value) { |
||||
boolean flag = ENABLE.getValue().equals(value) || DISABLE.getValue().equals(value); |
||||
if(!flag) { |
||||
throw new CommonException("不支持的状态:{}", value); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,25 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.mapper; |
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
import vip.xiaonuo.dev.modular.slideshow.entity.DevSlideshow; |
||||
|
||||
/** |
||||
* 轮播图Mapper接口 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
public interface DevSlideshowMapper extends BaseMapper<DevSlideshow> { |
||||
} |
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?> |
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
||||
<mapper namespace="vip.xiaonuo.dev.modular.slideshow.mapper.DevSlideshowMapper"> |
||||
|
||||
</mapper> |
@ -0,0 +1,58 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.param; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
import jakarta.validation.constraints.NotBlank; |
||||
import jakarta.validation.constraints.NotNull; |
||||
import java.math.BigDecimal; |
||||
import java.util.Date; |
||||
|
||||
/** |
||||
* 轮播图添加参数 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
public class DevSlideshowAddParam { |
||||
|
||||
/** 标题 */ |
||||
@Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "title不能为空") |
||||
private String title; |
||||
|
||||
/** 展示位置 */ |
||||
@Schema(description = "展示位置", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "place不能为空") |
||||
private String place; |
||||
|
||||
/** 图片 */ |
||||
@Schema(description = "图片") |
||||
private String image; |
||||
|
||||
/** 路径详情 */ |
||||
@Schema(description = "路径详情", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "pathDetails不能为空") |
||||
private String pathDetails; |
||||
|
||||
/** 排序 */ |
||||
@Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotNull(message = "sortCode不能为空") |
||||
private Integer sortCode; |
||||
|
||||
} |
@ -0,0 +1,63 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.param; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
import jakarta.validation.constraints.NotBlank; |
||||
import jakarta.validation.constraints.NotNull; |
||||
import java.math.BigDecimal; |
||||
import java.util.Date; |
||||
|
||||
/** |
||||
* 轮播图编辑参数 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
public class DevSlideshowEditParam { |
||||
|
||||
/** 主键 */ |
||||
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "id不能为空") |
||||
private String id; |
||||
|
||||
/** 标题 */ |
||||
@Schema(description = "标题", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "title不能为空") |
||||
private String title; |
||||
|
||||
/** 展示位置 */ |
||||
@Schema(description = "展示位置", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "place不能为空") |
||||
private String place; |
||||
|
||||
/** 图片 */ |
||||
@Schema(description = "图片") |
||||
private String image; |
||||
|
||||
/** 路径详情 */ |
||||
@Schema(description = "路径详情", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotBlank(message = "pathDetails不能为空") |
||||
private String pathDetails; |
||||
|
||||
/** 排序 */ |
||||
@Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED) |
||||
@NotNull(message = "sortCode不能为空") |
||||
private Integer sortCode; |
||||
|
||||
} |
@ -0,0 +1,35 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.param; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
import jakarta.validation.constraints.NotBlank; |
||||
|
||||
/** |
||||
* 轮播图Id参数 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
public class DevSlideshowIdParam { |
||||
|
||||
/** 主键 */ |
||||
@Schema(description = "主键") |
||||
@NotBlank(message = "id不能为空") |
||||
private String id; |
||||
} |
@ -0,0 +1,63 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.param; |
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema; |
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
import java.math.BigDecimal; |
||||
import java.util.Date; |
||||
|
||||
/** |
||||
* 轮播图查询参数 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
@Getter |
||||
@Setter |
||||
public class DevSlideshowPageParam { |
||||
|
||||
/** 当前页 */ |
||||
@Schema(description = "当前页码") |
||||
private Integer current; |
||||
|
||||
/** 每页条数 */ |
||||
@Schema(description = "每页条数") |
||||
private Integer size; |
||||
|
||||
/** 排序字段 */ |
||||
@Schema(description = "排序字段,字段驼峰名称,如:userName") |
||||
private String sortField; |
||||
|
||||
/** 排序方式 */ |
||||
@Schema(description = "排序方式,升序:ASCEND;降序:DESCEND") |
||||
private String sortOrder; |
||||
|
||||
/** 关键词 */ |
||||
@Schema(description = "关键词") |
||||
private String searchKey; |
||||
|
||||
/** 标题 */ |
||||
@Schema(description = "标题") |
||||
private String title; |
||||
|
||||
/** 展示位置 */ |
||||
@Schema(description = "展示位置") |
||||
private String place; |
||||
|
||||
/** 状态 */ |
||||
@Schema(description = "状态") |
||||
private String status; |
||||
|
||||
} |
@ -0,0 +1,39 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.provider; |
||||
|
||||
import cn.hutool.json.JSONObject; |
||||
import jakarta.annotation.Resource; |
||||
import org.springframework.stereotype.Service; |
||||
import vip.xiaonuo.dev.api.DevSlideshowApi; |
||||
import vip.xiaonuo.dev.modular.slideshow.service.DevSlideshowService; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 轮播图API接口实现类 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
@Service |
||||
public class DevSlideshowApiProvider implements DevSlideshowApi { |
||||
|
||||
@Resource |
||||
private DevSlideshowService devSlideshowService; |
||||
|
||||
@Override |
||||
public List<JSONObject> getListByPlace(String place) { |
||||
return devSlideshowService.getListByPlace(place); |
||||
} |
||||
} |
@ -0,0 +1,97 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.service; |
||||
|
||||
import cn.hutool.json.JSONObject; |
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
import com.baomidou.mybatisplus.extension.service.IService; |
||||
import vip.xiaonuo.dev.modular.slideshow.entity.DevSlideshow; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowAddParam; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowEditParam; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowIdParam; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowPageParam; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 轮播图Service接口 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
public interface DevSlideshowService extends IService<DevSlideshow> { |
||||
|
||||
/** |
||||
* 获取轮播图分页 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
Page<DevSlideshow> page(DevSlideshowPageParam devSlideshowPageParam); |
||||
|
||||
/** |
||||
* 添加轮播图 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
void add(DevSlideshowAddParam devSlideshowAddParam); |
||||
|
||||
/** |
||||
* 编辑轮播图 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
void edit(DevSlideshowEditParam devSlideshowEditParam); |
||||
|
||||
/** |
||||
* 删除轮播图 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
*/ |
||||
void delete(List<DevSlideshowIdParam> devSlideshowIdParamList); |
||||
|
||||
/** |
||||
* 获取轮播图详情 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
DevSlideshow queryEntity(String id); |
||||
|
||||
/** |
||||
* 禁用轮播图 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
void disableStatus(DevSlideshowIdParam devSlideshowIdParam); |
||||
|
||||
/** |
||||
* 启用轮播图 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
void enableStatus(DevSlideshowIdParam devSlideshowIdParam); |
||||
|
||||
/** |
||||
* 通过位置获得轮播图列表 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
List<JSONObject> getListByPlace(String place); |
||||
} |
@ -0,0 +1,162 @@
|
||||
/* |
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
* |
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: |
||||
* |
||||
* 1.请不要删除和修改根目录下的LICENSE文件。 |
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。 |
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 |
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 |
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/ |
||||
package vip.xiaonuo.dev.modular.slideshow.service.impl; |
||||
|
||||
import cn.hutool.core.bean.BeanUtil; |
||||
import cn.hutool.core.collection.CollStreamUtil; |
||||
import cn.hutool.core.collection.CollectionUtil; |
||||
import cn.hutool.core.util.ObjectUtil; |
||||
import cn.hutool.core.util.StrUtil; |
||||
import cn.hutool.json.JSONArray; |
||||
import cn.hutool.json.JSONObject; |
||||
import cn.hutool.json.JSONUtil; |
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker; |
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import org.springframework.stereotype.Service; |
||||
import org.springframework.transaction.annotation.Transactional; |
||||
import vip.xiaonuo.common.enums.CommonSortOrderEnum; |
||||
import vip.xiaonuo.common.exception.CommonException; |
||||
import vip.xiaonuo.common.page.CommonPageRequest; |
||||
import vip.xiaonuo.dev.core.conts.DevConstants; |
||||
import vip.xiaonuo.dev.modular.slideshow.entity.DevSlideshow; |
||||
import vip.xiaonuo.dev.modular.slideshow.enums.DevSlideshowStatusEnum; |
||||
import vip.xiaonuo.dev.modular.slideshow.mapper.DevSlideshowMapper; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowAddParam; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowEditParam; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowIdParam; |
||||
import vip.xiaonuo.dev.modular.slideshow.param.DevSlideshowPageParam; |
||||
import vip.xiaonuo.dev.modular.slideshow.service.DevSlideshowService; |
||||
|
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 轮播图Service接口实现类 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/07/13 00:31 |
||||
**/ |
||||
@Service |
||||
public class DevSlideshowServiceImpl extends ServiceImpl<DevSlideshowMapper, DevSlideshow> implements DevSlideshowService { |
||||
|
||||
|
||||
@Override |
||||
public Page<DevSlideshow> page(DevSlideshowPageParam devSlideshowPageParam) { |
||||
QueryWrapper<DevSlideshow> queryWrapper = new QueryWrapper<DevSlideshow>().checkSqlInjection(); |
||||
if(ObjectUtil.isNotEmpty(devSlideshowPageParam.getTitle())) { |
||||
queryWrapper.lambda().like(DevSlideshow::getTitle, devSlideshowPageParam.getTitle()); |
||||
} |
||||
if(ObjectUtil.isNotEmpty(devSlideshowPageParam.getPlace())) { |
||||
queryWrapper.lambda().like(DevSlideshow::getPlace, devSlideshowPageParam.getPlace()); |
||||
} |
||||
if(ObjectUtil.isNotEmpty(devSlideshowPageParam.getStatus())) { |
||||
queryWrapper.lambda().eq(DevSlideshow::getStatus, devSlideshowPageParam.getStatus()); |
||||
} |
||||
if(ObjectUtil.isAllNotEmpty(devSlideshowPageParam.getSortField(), devSlideshowPageParam.getSortOrder())) { |
||||
CommonSortOrderEnum.validate(devSlideshowPageParam.getSortOrder()); |
||||
queryWrapper.orderBy(true, devSlideshowPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()), |
||||
StrUtil.toUnderlineCase(devSlideshowPageParam.getSortField())); |
||||
} else { |
||||
queryWrapper.lambda().orderByAsc(DevSlideshow::getSortCode); |
||||
} |
||||
return this.page(CommonPageRequest.defaultPage(), queryWrapper); |
||||
} |
||||
|
||||
@Transactional(rollbackFor = Exception.class) |
||||
@Override |
||||
public void add(DevSlideshowAddParam devSlideshowAddParam) { |
||||
DevSlideshow devSlideshow = BeanUtil.toBean(devSlideshowAddParam, DevSlideshow.class); |
||||
// 默认禁用的
|
||||
devSlideshow.setStatus(DevSlideshowStatusEnum.DISABLE.getValue()); |
||||
this.save(devSlideshow); |
||||
} |
||||
|
||||
@Transactional(rollbackFor = Exception.class) |
||||
@Override |
||||
public void edit(DevSlideshowEditParam devSlideshowEditParam) { |
||||
DevSlideshow devSlideshow = this.queryEntity(devSlideshowEditParam.getId()); |
||||
BeanUtil.copyProperties(devSlideshowEditParam, devSlideshow); |
||||
this.updateById(devSlideshow); |
||||
} |
||||
|
||||
@Transactional(rollbackFor = Exception.class) |
||||
@Override |
||||
public void delete(List<DevSlideshowIdParam> devSlideshowIdParamList) { |
||||
// 执行删除
|
||||
this.removeByIds(CollStreamUtil.toList(devSlideshowIdParamList, DevSlideshowIdParam::getId)); |
||||
} |
||||
|
||||
@Override |
||||
public DevSlideshow queryEntity(String id) { |
||||
DevSlideshow devSlideshow = this.getById(id); |
||||
if(ObjectUtil.isEmpty(devSlideshow)) { |
||||
throw new CommonException("轮播图不存在,id值为:{}", id); |
||||
} |
||||
return devSlideshow; |
||||
} |
||||
|
||||
@Transactional(rollbackFor = Exception.class) |
||||
@Override |
||||
public void disableStatus(DevSlideshowIdParam devSlideshowIdParam) { |
||||
this.update(new LambdaUpdateWrapper<DevSlideshow>().eq(DevSlideshow::getId, |
||||
devSlideshowIdParam.getId()).set(DevSlideshow::getStatus, DevSlideshowStatusEnum.DISABLE.getValue())); |
||||
} |
||||
|
||||
@Transactional(rollbackFor = Exception.class) |
||||
@Override |
||||
public void enableStatus(DevSlideshowIdParam devSlideshowIdParam) { |
||||
this.update(new LambdaUpdateWrapper<DevSlideshow>().eq(DevSlideshow::getId, |
||||
devSlideshowIdParam.getId()).set(DevSlideshow::getStatus, DevSlideshowStatusEnum.ENABLE.getValue())); |
||||
} |
||||
|
||||
@Override |
||||
public List<JSONObject> getListByPlace(String place){ |
||||
List<JSONObject> resultList = CollectionUtil.newArrayList(); |
||||
List<DevSlideshow> slideshowList = this.list(new LambdaQueryWrapper<DevSlideshow>().eq(DevSlideshow::getStatus, |
||||
DevSlideshowStatusEnum.ENABLE.getValue()).orderByDesc(DevSlideshow::getSortCode)); |
||||
if (slideshowList.size() == 0) { |
||||
// 如果库里未配置,则补充一条静态的,避免图片为空
|
||||
JSONObject staticObj = new JSONObject(); |
||||
staticObj.set("id", IdWorker.getIdStr()); |
||||
staticObj.set("title", "静态文件"); |
||||
staticObj.set("image", DevConstants.STATIC_SLIDESHOW_IMAGE); |
||||
staticObj.set("pathDetails", null); |
||||
resultList.add(staticObj); |
||||
return resultList; |
||||
} |
||||
slideshowList.forEach((item) -> { |
||||
JSONArray slideshowPlaceArray = JSONUtil.parseArray(item.getPlace()); |
||||
slideshowPlaceArray.forEach((placeArray) -> { |
||||
if (place.equals(placeArray)) { |
||||
JSONObject obj = new JSONObject(); |
||||
obj.set("id", item.getId()); |
||||
obj.set("title", item.getTitle()); |
||||
// TODO 判断这个图片是否库里真是存在,不存在则返回base64国定的,不能让前端图片裂开
|
||||
obj.set("image", item.getImage()); |
||||
JSONArray array = JSONUtil.parseArray(item.getPathDetails()); |
||||
array.forEach((detail) -> { |
||||
JSONObject detailObj = JSONUtil.parseObj(detail); |
||||
if (detailObj.get("key").equals(place)) { |
||||
obj.set("pathDetails", detailObj); |
||||
} |
||||
}); |
||||
resultList.add(obj); |
||||
} |
||||
}); |
||||
}); |
||||
return resultList; |
||||
} |
||||
} |
@ -0,0 +1,27 @@
|
||||
package vip.xiaonuo.sys.modular.index.result; |
||||
|
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
/** |
||||
* 系统业务数量 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/18 17:35 |
||||
*/ |
||||
@Getter |
||||
@Setter |
||||
public class SysBizDataCountResult { |
||||
|
||||
/** 用户数量 */ |
||||
private Long userCount; |
||||
|
||||
/** 角色数量 */ |
||||
private Long roleCount; |
||||
|
||||
/** 机构数量 */ |
||||
private Long orgCount; |
||||
|
||||
/** 职位数量 */ |
||||
private Long positionCount; |
||||
} |
@ -0,0 +1,33 @@
|
||||
package vip.xiaonuo.sys.modular.index.result; |
||||
|
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
/** |
||||
* 运维一览数据 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/18 17:35 |
||||
*/ |
||||
@Getter |
||||
@Setter |
||||
public class SysOpDataCountResult { |
||||
|
||||
/** 定时任务数量 */ |
||||
private Long jobCount; |
||||
|
||||
/** 系统字典数量 */ |
||||
private Long sysDictCount; |
||||
|
||||
/** 业务字典数量 */ |
||||
private Long bizDictCount; |
||||
|
||||
/** B端用户在线数量 */ |
||||
private Long backUserSessionCount; |
||||
|
||||
/** C端用户在线数量 */ |
||||
private Long clientUserSessionCount; |
||||
|
||||
/** 三方用户数量 */ |
||||
private Long thirdUserCount; |
||||
} |
@ -0,0 +1,27 @@
|
||||
package vip.xiaonuo.sys.modular.index.result; |
||||
|
||||
import lombok.Getter; |
||||
import lombok.Setter; |
||||
|
||||
/** |
||||
* 基础工具数据 |
||||
* |
||||
* @author yubaoshan |
||||
* @date 2024/7/18 17:35 |
||||
*/ |
||||
@Getter |
||||
@Setter |
||||
public class SysToolDataCountResult { |
||||
|
||||
/** 文件数量 */ |
||||
private Long fileCount; |
||||
|
||||
/** 短信数量 */ |
||||
private Long smsCount; |
||||
|
||||
/** 邮件数量 */ |
||||
private Long emailCount; |
||||
|
||||
/** 站内信数量 */ |
||||
private Long messageCount; |
||||
} |
Loading…
Reference in new issue