pageSinglePageComment(Page pageParam, QueryWrapper queryWrapper) {
21 | return getBaseMapper().pageSinglePageComment(pageParam, queryWrapper);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/cms/src/main/resources/mapper/ArticleCategoryMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | delete from article_category_relation where category_id = #{articleCategoryId}
7 |
8 |
9 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/cms/src/main/resources/mapper/ArticleTagMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | delete from article_tag_relation where tag_id = #{articleTagId}
7 |
8 |
9 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/cms/src/main/resources/mapper/ArticleZanMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/cms/src/main/resources/mapper/MenuMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/cms/src/main/resources/mapper/SinglePageCommentMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
13 |
14 |
--------------------------------------------------------------------------------
/cms/src/main/resources/mapper/SinglePageMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/common/src/main/resources/fastcms-version.txt:
--------------------------------------------------------------------------------
1 | version=${project.version}
2 |
--------------------------------------------------------------------------------
/core/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | # Application Run Listener
2 | org.springframework.boot.SpringApplicationRunListener=\
3 | com.fastcms.core.listener.FastcmsApplicationRunListener
--------------------------------------------------------------------------------
/doc/images/fastcms.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/doc/images/fastcms.jpg
--------------------------------------------------------------------------------
/doc/images/fastcms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/doc/images/fastcms.png
--------------------------------------------------------------------------------
/doc/images/wechat.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/doc/images/wechat.jpg
--------------------------------------------------------------------------------
/doc/springsecurity/EnableWebSecurity.md:
--------------------------------------------------------------------------------
1 | # EnableWebSecurity
2 | - 全局启用SpringSecurity的注解
3 |
4 | ```java
5 | @Retention(RetentionPolicy.RUNTIME)
6 | @Target(ElementType.TYPE)
7 | @Documented
8 | @Import({ WebSecurityConfiguration.class, SpringWebMvcImportSelector.class, OAuth2ImportSelector.class,
9 | HttpSecurityConfiguration.class })
10 | @EnableGlobalAuthentication
11 | @Configuration
12 | public @interface EnableWebSecurity {
13 |
14 | /**
15 | * Controls debugging support for Spring Security. Default is false.
16 | * @return if true, enables debug support with Spring Security
17 | */
18 | boolean debug() default false;
19 |
20 | }
21 | ```
22 |
23 | # HttpSecurityConfiguration自动装配 HttpSecurity
24 |
25 | # WebSecurityConfiguration自动装配 WebSecurity
26 |
27 | # WebSecurity构建FilterChainProxy处理SpringSecurity的所有请求
--------------------------------------------------------------------------------
/doc/sql/fastcms-0.0.8.sql:
--------------------------------------------------------------------------------
1 | ALTER TABLE `menu` ADD COLUMN `url_type` tinyint(4) DEFAULT '0' COMMENT '1,文章,2,页面,3,分类, 4,标签';
2 |
--------------------------------------------------------------------------------
/doc/sql/fastcms-0.0.9.sql:
--------------------------------------------------------------------------------
1 | INSERT INTO `permission`(`id`, `parent_id`, `name`, `path`, `component`, `title`, `icon`, `is_link`, `is_hide`, `is_keep_alive`, `is_affix`, `is_iframe`, `sort_num`, `category`, `created`, `updated`)
2 | VALUES (41, 11, 'articleTag', '/article/tag', 'article/tag', 'message.router.articleTag', 'el-icon-price-tag', 0, 0, 0, 0, 0, 0, NULL, '2022-11-25 16:05:46', NULL);
3 |
4 | ALTER TABLE `article_tag` ADD COLUMN `suffix` varchar(64) DEFAULT NULL;
5 | ALTER TABLE `article_tag` ADD COLUMN `icon` varchar(255) DEFAULT NULL;
6 |
7 | ALTER TABLE `resource` ADD COLUMN `language` varchar(64) DEFAULT NULL COMMENT '语言';
8 |
9 |
--------------------------------------------------------------------------------
/doc/sql/fastcms-0.1.0.sql:
--------------------------------------------------------------------------------
1 | alter table `user` add index `user_name_index` (`user_name`)
2 |
--------------------------------------------------------------------------------
/doc/sql/fastcms-0.1.3.sql:
--------------------------------------------------------------------------------
1 | ALTER TABLE `user` ADD COLUMN `error_count` int(11) DEFAULT '0';
2 |
--------------------------------------------------------------------------------
/doc/sql/fastcms-0.1.7.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE `user_server_openid` (
2 | `id` bigint NOT NULL AUTO_INCREMENT,
3 | `client_id` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
4 | `openid` varchar(100) COLLATE utf8mb4_general_ci NOT NULL,
5 | `sub` varchar(100) COLLATE utf8mb4_general_ci NOT NULL COMMENT 'fastcms用户唯一标志',
6 | `created` timestamp NULL DEFAULT NULL,
7 | `updated` timestamp NULL DEFAULT NULL,
8 | PRIMARY KEY (`id`)
9 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
--------------------------------------------------------------------------------
/doc/运行与部署/本地运行.md:
--------------------------------------------------------------------------------
1 | # 如何在本地运行项目
2 |
3 | ### 开发工具
4 | - 推荐使用idea作为开发工具
5 |
6 | ### 运行环境
7 | - 安装 maven3.6.0 +
8 | - 安装 jdk1.8 +
9 |
10 | ### 下载源码
11 | - gitee下载地址
12 | * https://gitee.com/xjd2020/fastcms.git
13 | - 导入到开发工具,让项目编译通过
14 |
15 | ### 导入数据
16 | - 安装MySql数据库,推荐版本5.7 +
17 | - 在项目的doc/sql目录下找到fastcms.sql文件
18 | - 本地建立一个空库,通过Navicat或你喜欢的方式导入数据库脚本
19 |
20 | ### 运行项目
21 | - 经过以上几个步骤之后,就可以运行项目了
22 | - 找到fastcms-web项目下面Fastcms.java,main方法运行项目即可
23 |
24 | ### 初始账号
25 | - 默认管理员账号admin,密码是1
26 | - 访问后台管理
27 | * http://localhost:8080/fastcms
28 |
--------------------------------------------------------------------------------
/doc/运行与部署/生产环境部署.md:
--------------------------------------------------------------------------------
1 | # 如何在生产环境部署
2 |
3 | ### 安装数据库
4 | - 导入数据
5 | - 数据库sql文件在项目的doc/sql目录下
6 |
7 | ## 修改数据库配置
8 | - 在fastcms-web下面的resources目录下面找到application-prod.properties文件
9 | - 修改里面的数据库链接为你生产环境数据库链接信息
10 |
11 | ### 打包
12 | - 在fastcms根目录下面找到build.bat,linux执行build.sh
13 | - 执行脚本之后,没有报错就说明打包成功
14 | - 打包成功之后,在fastcms的根目录下面会多出一个dist的文件夹,这个文件夹下的就是所有的打包文件
15 |
16 | ### 打包文件说明
17 | - htmls是网站模板文件根目录
18 | - logs是日志文件存放目录
19 | - plugins是项目插件存放目录
20 | - upload是文件上传目录
21 | - fastcms-start.jar是项目运行jar包
22 | - start.bat,start.sh是启动项目的脚本
23 |
24 | ### 启动项目
25 | - 把打包文件目录下面的所有文件上传到服务器的某个目录下
26 | - 执行start.sh即可启动项目
27 |
28 | ### nginx映射
29 | - 通过nginx把项目映射出去
30 | - fastcms服务生产环境的启动默认端口是8080
31 |
32 |
--------------------------------------------------------------------------------
/docker/.env:
--------------------------------------------------------------------------------
1 | # mysql
2 | MYSQL_USER=fastcms
3 | MYSQL_PASSWORD=fastcms9527
4 | MYSQL_PORT=3310
5 | MYSQL_ROOT_PASSWORD=fastcms9527
6 |
7 | FASTCMS_VERSION=0.1.6-SNAPSHOT
8 |
9 | TIMEZONE='Asia/Shanghai'
10 |
--------------------------------------------------------------------------------
/docker/fastcms/config/application-prod.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 8080
3 | spring:
4 | datasource:
5 | driver-class-name: com.mysql.cj.jdbc.Driver
6 | url: jdbc:mysql://fastcms-mysql:3306/fastcms?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
7 | username: root
8 | password: fastcms9527
9 | log:
10 | path: ./logs
11 |
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/_template.properties:
--------------------------------------------------------------------------------
1 | template.id=www.fastcms.com
2 | template.name=cms
3 | template.path=/cms/
4 | template.version=0.0.1
5 | template.i18n=cms
6 | template.provider=wjun_java@163.com
7 | template.description=my fastcms site
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/i18n/cms.properties:
--------------------------------------------------------------------------------
1 | cms.test=测试
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/i18n/cms_en.properties:
--------------------------------------------------------------------------------
1 | cms.test=test
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/i18n/cms_zh_CN.properties:
--------------------------------------------------------------------------------
1 | cms.test=测试
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/page.html:
--------------------------------------------------------------------------------
1 | <#import "_layout.html" as layout>
2 | <@layout.header "页面-${(singlePage.title!)}">@layout.header>
3 | <@layout.body>
4 |
5 |
6 |
7 |
8 |
页面id:${(singlePage.id)!}
9 |
标题:${(singlePage.title)!}
10 |
缩略图:!})
11 |
浏览次数:${(singlePage.viewCount)!}
12 |
创建时间:<@formatTime value=singlePage.created!/>
13 |
14 | ${(singlePage.contentHtml)!}
15 |
16 |
17 |
18 |
19 |
20 | @layout.body>
21 | <@layout.script>
22 | @layout.script>
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/favicon.ico
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/images/contact-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/images/contact-bg.jpg
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/images/fastcms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/images/fastcms.png
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/images/home-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/images/home-bg.jpg
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/images/home-bg2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/images/home-bg2.jpg
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/images/software-img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/images/software-img.png
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/images/web-site.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/images/web-site.png
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/images/wechat-dev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/docker/fastcms/htmls/cms/static/images/wechat-dev.png
--------------------------------------------------------------------------------
/docker/fastcms/htmls/cms/static/js/custom.js:
--------------------------------------------------------------------------------
1 | // preloader
2 | $(window).load(function(){
3 | $('.preloader').fadeOut(1000); // set duration in brackets
4 | });
5 |
6 | $(function() {
7 | new WOW().init();
8 | /*$('.templatemo-nav').singlePageNav({
9 | offset: 70
10 | });*/
11 |
12 | /* Hide mobile menu after clicking on a link
13 | -----------------------------------------------*/
14 | $('.navbar-collapse a').click(function(){
15 | $(".navbar-collapse").collapse('hide');
16 | });
17 | })
--------------------------------------------------------------------------------
/docker/mysql/conf.d/docker.cnf:
--------------------------------------------------------------------------------
1 | [client]
2 | default-character-set=utf8mb4
3 | [mysql]
4 | default-character-set=utf8mb4
5 | [mysqld]
6 | skip-host-cache
7 | skip-name-resolve
8 | default-authentication-plugin=mysql_native_password
9 | sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
10 | table_open_cache=512
11 | character-set-server=utf8mb4
12 | collation-server=utf8mb4_general_ci
13 | default-time-zone='+8:00'
14 | log-bin=mysql-binlog
15 | binlog-format=ROW
16 | server_id=1
17 | max_connections=1000
18 | max_user_connections=1000
19 | mysqlx_max_connections=1000
20 | thread_cache_size=64
--------------------------------------------------------------------------------
/plugins/hello-world-plugin/plugin.properties:
--------------------------------------------------------------------------------
1 | plugin.id=hello-world-plugin
2 | plugin.class=com.fastcms.hello.HelloPlugin
3 | plugin.version=0.0.1
4 | plugin.provider=wjun_java@163.com
5 | plugin.description=hello, fastcms plugin world
6 | plugin.dependencies=
7 |
--------------------------------------------------------------------------------
/plugins/hello-world-plugin/src/main/java/com/fastcms/hello/HelloPluginMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/plugins/hello-world-plugin/src/main/java/com/fastcms/hello/IHelloService.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 广州小橘灯信息科技有限公司 2016-2017, wjun_java@163.com.
3 | *
4 | * Licensed under the GNU Lesser General Public License (LGPL) ,Version 3.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.gnu.org/licenses/lgpl-3.0.txt
9 | * http://www.xjd2020.com
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 | package com.fastcms.hello;
18 |
19 | /**
20 | * @author: wjun_java@163.com
21 | * @date: 2022/11/18
22 | * @description:
23 | * @modifiedBy:
24 | * @version: 1.0
25 | */
26 | public interface IHelloService {
27 |
28 | String hello(String name);
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/plugins/hello-world-plugin/src/main/resources/hello-plugin.sql:
--------------------------------------------------------------------------------
1 | CREATE TABLE IF NOT EXISTS `test` (
2 | `id` int(11) NOT NULL AUTO_INCREMENT,
3 | `name` varchar(255) DEFAULT NULL,
4 | PRIMARY KEY (`id`)
5 | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/extension/IndexDataExtension.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.extension;
2 |
3 | import org.pf4j.ExtensionPoint;
4 |
5 | import java.util.Map;
6 |
7 | /**
8 | * 管理后台首页数据扩展
9 | * @author: wjun_java@163.com
10 | * @date: 2022/1/8
11 | * @description:
12 | * @modifiedBy:
13 | * @version: 1.0
14 | */
15 | public interface IndexDataExtension extends ExtensionPoint {
16 |
17 | /**
18 | * 获取需要展示到首页的数据
19 | * @return
20 | */
21 | Map getData();
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/AttachmentMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.fastcms.entity.Attachment;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | *
8 | * Mapper 接口
9 | *
10 | *
11 | * @author wjun_java@163.com
12 | * @since 2021-02-19
13 | */
14 | public interface AttachmentMapper extends BaseMapper {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/ConfigMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.fastcms.entity.Config;
5 |
6 | /**
7 | *
8 | * Mapper 接口
9 | *
10 | *
11 | * @author wjun_java@163.com
12 | * @since 2021-02-14
13 | */
14 | public interface ConfigMapper extends BaseMapper {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/DepartmentMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.fastcms.entity.Department;
5 | import org.apache.ibatis.annotations.Param;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | *
11 | * Mapper 接口
12 | *
13 | *
14 | * @author wjun_java@163.com
15 | * @since 2022-03-23
16 | */
17 | public interface DepartmentMapper extends BaseMapper {
18 |
19 | void deleteDepartmentByUserId(@Param("userId") Long userId);
20 |
21 | void saveUserDepartment(@Param("userId") Long userId, @Param("deptIds") List deptIds);
22 |
23 | List getUserDepartment(@Param("userId") Long userId);
24 |
25 | List getDepartmentUserIdList(@Param("deptId") Long deptId);
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/OrderInvoiceMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.fastcms.entity.OrderInvoice;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | *
8 | * 发票信息表 Mapper 接口
9 | *
10 | *
11 | * @author wjun_java@163.com
12 | * @since 2021-12-21
13 | */
14 | public interface OrderInvoiceMapper extends BaseMapper {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/OrderItemMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.fastcms.entity.OrderItem;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | *
8 | * 订单明细表 Mapper 接口
9 | *
10 | *
11 | * @author wjun_java@163.com
12 | * @since 2021-12-21
13 | */
14 | public interface OrderItemMapper extends BaseMapper {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/OrderMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import com.baomidou.mybatisplus.core.toolkit.Constants;
6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7 | import com.fastcms.entity.Order;
8 | import com.fastcms.service.IOrderService;
9 | import org.apache.ibatis.annotations.Param;
10 |
11 | import java.util.List;
12 |
13 | /**
14 | * 订单表 Mapper 接口
15 | * @author wjun_java@163.com
16 | * @since 2021-12-21
17 | */
18 | public interface OrderMapper extends BaseMapper {
19 |
20 | Page pageOrder(Page pageParam, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
21 |
22 | IOrderService.OrderCountVo getUCenterOrderCount(Long userId);
23 |
24 | IOrderService.OrderDetailVo getOrderDetail(Long orderId);
25 |
26 | IOrderService.OrderStatVo getOrderStatData();
27 |
28 | List getUnPayOrderByLimitTime(@Param("overTime") int overTime);
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/PaymentRecordMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import com.baomidou.mybatisplus.core.toolkit.Constants;
6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7 | import com.fastcms.entity.PaymentRecord;
8 | import com.fastcms.service.IPaymentRecordService;
9 | import org.apache.ibatis.annotations.Param;
10 |
11 | /**
12 | *
13 | * 支付记录表 Mapper 接口
14 | *
15 | *
16 | * @author wjun_java@163.com
17 | * @since 2021-06-19
18 | */
19 | public interface PaymentRecordMapper extends BaseMapper {
20 |
21 | Page pagePaymentRecord(Page pageParam, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
22 |
23 | IPaymentRecordService.PaymentDetailVo getPaymentDetail(@Param("paymentId") Long paymentId);
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/PermissionMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.fastcms.entity.Permission;
5 | import org.apache.ibatis.annotations.Param;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | *
11 | * Mapper 接口
12 | *
13 | *
14 | * @author wjun_java@163.com
15 | * @since 2021-02-14
16 | */
17 | public interface PermissionMapper extends BaseMapper {
18 |
19 | /**
20 | * 查询用户已授权权限
21 | * 多个角色合并权限
22 | * @param userId
23 | * @return
24 | */
25 | List getPermissionByUserId(@Param("userId") Long userId);
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/ResourceMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
4 | import com.fastcms.entity.Resource;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 | import org.apache.ibatis.annotations.Param;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | *
12 | * 接口资源表 Mapper 接口
13 | *
14 | *
15 | * @author wjun_java@163.com
16 | * @since 2022-05-01
17 | */
18 | public interface ResourceMapper extends BaseMapper {
19 |
20 | @InterceptorIgnore(blockAttack="1")
21 | void deleteAll();
22 |
23 | List getUserResourceList(@Param("userId") Long userId);
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/UserAmountMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.fastcms.entity.UserAmount;
5 | import com.fastcms.service.IUserAmountService;
6 |
7 | /**
8 | *
9 | * 用户余额 Mapper 接口
10 | *
11 | *
12 | * @author wjun_java@163.com
13 | * @since 2022-03-28
14 | */
15 | public interface UserAmountMapper extends BaseMapper {
16 |
17 | IUserAmountService.UserAmountVo getUserAmount();
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/UserAmountStatementMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import com.baomidou.mybatisplus.core.toolkit.Constants;
6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
7 | import com.fastcms.entity.UserAmountStatement;
8 | import com.fastcms.service.IUserAmountStatementService;
9 | import org.apache.ibatis.annotations.Param;
10 |
11 | /**
12 | * 用户余额流水情况 Mapper 接口
13 | * @author wjun_java@163.com
14 | * @since 2022-03-28
15 | */
16 | public interface UserAmountStatementMapper extends BaseMapper {
17 |
18 | Page pageUserAmountStatement(Page pageParam, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/UserMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.fastcms.entity.User;
5 | import com.fastcms.entity.UserTag;
6 | import org.apache.ibatis.annotations.Param;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | *
12 | * 用户 Mapper 接口
13 | *
14 | *
15 | * @author wjun_java@163.com
16 | * @since 2021-02-14
17 | */
18 | public interface UserMapper extends BaseMapper {
19 |
20 | List getUserTagList(@Param("userId") Long userId);
21 |
22 | Long getLastUserNum();
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/UserOpenidMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.fastcms.entity.UserOpenid;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | *
8 | * 账号绑定信息表 Mapper 接口
9 | *
10 | *
11 | * @author wjun_java@163.com
12 | * @since 2021-06-08
13 | */
14 | public interface UserOpenidMapper extends BaseMapper {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/UserServerOpenidMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.fastcms.entity.UserServerOpenid;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 |
6 | /**
7 | *
8 | * Mapper 接口
9 | *
10 | *
11 | * @author wjun_java@163.com
12 | * @since 2024-12-24
13 | */
14 | public interface UserServerOpenidMapper extends BaseMapper {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/mapper/UserTagMapper.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.mapper;
2 |
3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4 | import com.fastcms.entity.UserTag;
5 | import org.apache.ibatis.annotations.Param;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | *
11 | * Mapper 接口
12 | *
13 | *
14 | * @author wjun_java@163.com
15 | * @since 2021-05-30
16 | */
17 | public interface UserTagMapper extends BaseMapper {
18 |
19 | void saveUserTagRelation(@Param("userId") Long userId, @Param("tagIds") List tagIds);
20 |
21 | void deleteUserTagRelationByUserId(Long userId);
22 |
23 | List getTagListByUserId(Long userId);
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/IAttachmentService.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service;
2 |
3 | import com.baomidou.mybatisplus.extension.service.IService;
4 | import com.fastcms.entity.Attachment;
5 |
6 | /**
7 | * 附件服务类
8 | * @author wjun_java@163.com
9 | * @since 2021-02-19
10 | */
11 | public interface IAttachmentService extends IService {
12 |
13 | interface AttachmentI18n {
14 | String ATTACHMENT_FILE_NOT_EXIST = "fastcms.attachment.not.exist";
15 | String ATTACHMENT_FILE_UPLOAD_LIST_FAIL = "fastcms.attachment.upload.list.fail";
16 | String ATTACHMENT_FILE_ALLOW_EDIT_SELF_FILE = "fastcms.attachment.allow.edit.self.file";
17 | String ATTACHMENT_FILE_ALLOW_DELETE_SELF_FILE = "fastcms.attachment.allow.delete.self.file";
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/IConfigService.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service;
2 |
3 | import com.baomidou.mybatisplus.extension.service.IService;
4 | import com.fastcms.entity.Config;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * 配置服务类
10 | * @author wjun_java@163.com
11 | * @since 2021-02-14
12 | */
13 | public interface IConfigService extends IService {
14 |
15 | Config findByKey(String key);
16 |
17 | String getValue(String key);
18 |
19 | Config saveConfig(String key, String value);
20 |
21 | /**
22 | * 获取多个配置
23 | * @param configKeys
24 | * @return
25 | */
26 | List getConfigs(List configKeys);
27 |
28 | /**
29 | * 获取对外开放的配置
30 | * @param configKeys
31 | * @return
32 | */
33 | List getPublicConfigs(List configKeys);
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/IOrderInvoiceService.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service;
2 |
3 | import com.fastcms.entity.OrderInvoice;
4 | import com.baomidou.mybatisplus.extension.service.IService;
5 |
6 | /**
7 | *
8 | * 发票信息表 服务类
9 | *
10 | *
11 | * @author wjun_java@163.com
12 | * @since 2021-12-21
13 | */
14 | public interface IOrderInvoiceService extends IService {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/IOrderItemService.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service;
2 |
3 | import com.baomidou.mybatisplus.extension.service.IService;
4 | import com.fastcms.entity.OrderItem;
5 |
6 | /**
7 | * 订单明细服务类
8 | * @author wjun_java@163.com
9 | * @since 2021-12-21
10 | */
11 | public interface IOrderItemService extends IService {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/IPermissionService.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service;
2 |
3 | import com.baomidou.mybatisplus.extension.service.IService;
4 | import com.fastcms.common.model.RouterNode;
5 | import com.fastcms.entity.Permission;
6 |
7 | import java.util.List;
8 |
9 | /**
10 | * 权限服务类
11 | * @author wjun_java@163.com
12 | * @since 2021-02-14
13 | */
14 | public interface IPermissionService extends IService {
15 |
16 | /**
17 | * 获取角色授权
18 | * @param userId
19 | * @return
20 | */
21 | List getUserPermissionList(Long userId);
22 |
23 | /**
24 | * 获取系统权限列表
25 | * @return userId
26 | */
27 | List getUserPermissionsMenu(Long userId);
28 |
29 | /**
30 | * 获取所有路由数据
31 | * @return
32 | */
33 | List getPermissions();
34 |
35 | interface PermissionI18n {
36 | String ROUTES_CHILDREN_NOT_DELETE = "fastcms.routes.children.not.delete";
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/IUserOpenidService.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service;
2 |
3 | import com.baomidou.mybatisplus.extension.service.IService;
4 | import com.fastcms.entity.UserOpenid;
5 |
6 | /**
7 | * 账号绑定信息
8 | * @author wjun_java@163.com
9 | * @since 2021-06-08
10 | */
11 | public interface IUserOpenidService extends IService {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/IUserServerOpenidService.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service;
2 |
3 | import com.fastcms.entity.UserServerOpenid;
4 | import com.baomidou.mybatisplus.extension.service.IService;
5 |
6 | /**
7 | *
8 | * 服务类
9 | *
10 | *
11 | * @author wjun_java@163.com
12 | * @since 2024-12-24
13 | */
14 | public interface IUserServerOpenidService extends IService {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/IUserTagService.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service;
2 |
3 | import com.baomidou.mybatisplus.extension.service.IService;
4 | import com.fastcms.entity.UserTag;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * 用户标签服务类
10 | * @author wjun_java@163.com
11 | * @since 2021-05-30
12 | */
13 | public interface IUserTagService extends IService {
14 |
15 | void saveUserTagRelation(Long userId, List tagIds);
16 |
17 | UserTag getByName(String tagName);
18 |
19 | List getTagListByUserId(Long userId);
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/impl/AttachmentServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service.impl;
2 |
3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4 | import com.fastcms.entity.Attachment;
5 | import com.fastcms.mapper.AttachmentMapper;
6 | import com.fastcms.service.IAttachmentService;
7 | import org.springframework.stereotype.Service;
8 |
9 | /**
10 | * 附件服务实现类
11 | * @author wjun_java@163.com
12 | * @since 2021-02-19
13 | */
14 | @Service
15 | public class AttachmentServiceImpl extends ServiceImpl implements IAttachmentService {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/impl/OrderInvoiceServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service.impl;
2 |
3 | import com.fastcms.entity.OrderInvoice;
4 | import com.fastcms.mapper.OrderInvoiceMapper;
5 | import com.fastcms.service.IOrderInvoiceService;
6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7 | import org.springframework.stereotype.Service;
8 |
9 | /**
10 | *
11 | * 发票信息表 服务实现类
12 | *
13 | *
14 | * @author wjun_java@163.com
15 | * @since 2021-12-21
16 | */
17 | @Service
18 | public class OrderInvoiceServiceImpl extends ServiceImpl implements IOrderInvoiceService {
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/impl/OrderItemServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service.impl;
2 |
3 | import com.fastcms.entity.OrderItem;
4 | import com.fastcms.mapper.OrderItemMapper;
5 | import com.fastcms.service.IOrderItemService;
6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7 | import org.springframework.stereotype.Service;
8 |
9 | import java.util.List;
10 |
11 | /**
12 | *
13 | * 订单明细表 服务实现类
14 | *
15 | *
16 | * @author wjun_java@163.com
17 | * @since 2021-12-21
18 | */
19 | @Service
20 | public class OrderItemServiceImpl extends ServiceImpl implements IOrderItemService {
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/impl/UserOpenidServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service.impl;
2 |
3 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4 | import com.fastcms.entity.UserOpenid;
5 | import com.fastcms.mapper.UserOpenidMapper;
6 | import com.fastcms.service.IUserOpenidService;
7 | import org.springframework.stereotype.Service;
8 |
9 | /**
10 | * 账号绑定信息服务实现类
11 | * @author wjun_java@163.com
12 | * @since 2021-06-08
13 | */
14 | @Service
15 | public class UserOpenidServiceImpl extends ServiceImpl implements IUserOpenidService {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/service/src/main/java/com/fastcms/service/impl/UserServerOpenidServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.service.impl;
2 |
3 | import com.fastcms.entity.UserServerOpenid;
4 | import com.fastcms.mapper.UserServerOpenidMapper;
5 | import com.fastcms.service.IUserServerOpenidService;
6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
7 | import org.springframework.stereotype.Service;
8 |
9 | /**
10 | *
11 | * 服务实现类
12 | *
13 | *
14 | * @author wjun_java@163.com
15 | * @since 2024-12-24
16 | */
17 | @Service
18 | public class UserServerOpenidServiceImpl extends ServiceImpl implements IUserServerOpenidService {
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/service/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | # Application Context Initializers
2 | org.springframework.context.ApplicationContextInitializer=\
3 | com.fastcms.utils.ApplicationUtils
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/AttachmentMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/ConfigMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/OrderInvoiceMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/OrderItemMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/PermissionMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/ResourceMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | delete from resource
7 |
8 |
9 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/UserAmountMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/UserAmountStatementMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
11 |
12 |
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/UserMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/UserOpenidMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/UserServerOpenidMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/service/src/main/resources/mapper/UserTagMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | insert into user_tag_relation (user_id, tag_id) values
7 |
8 | (#{userId}, #{tagId})
9 |
10 |
11 |
12 |
13 | delete from user_tag_relation where user_id = #{userId}
14 |
15 |
16 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/starters/email-starter/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | fastcms-starters
7 | com.fastcms
8 | ${revision}
9 |
10 | 4.0.0
11 |
12 | fastcms-email-starter
13 | fastcms-email-starter-${project.version}
14 |
15 |
16 |
17 | org.springframework.boot
18 | spring-boot-starter-mail
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/starters/email-starter/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | # Auto Configure
2 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
3 | com.fastcms.email.autoconfigure.FastcmsMailSenderAutoConfiguration
--------------------------------------------------------------------------------
/starters/lucene-starter/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | # Auto Configure
2 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
3 | com.fastcms.lucene.autoconfigure.LuceneAutoConfiguration
--------------------------------------------------------------------------------
/starters/mybatis-starter/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | # Auto Configure
2 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
3 | com.fastcms.mybatis.autoconfigure.FastcmsMybatisAutoConfiguration
--------------------------------------------------------------------------------
/starters/oauth2-starter/src/main/java/com/fastcms/oauth2/registration/FastcmsOAuth2ClientRegistration.java:
--------------------------------------------------------------------------------
1 | package com.fastcms.oauth2.registration;
2 |
3 | /**
4 | * @author: wjun_java@163.com
5 | * @date: 2023/2/26
6 | * @description:
7 | * @modifiedBy:
8 | * @version: 1.0
9 | */
10 | public interface FastcmsOAuth2ClientRegistration {
11 |
12 | /**
13 | * 获取OAuth2 RegistrationId
14 | * @return
15 | */
16 | String getRegistrationId();
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/starters/payment-starter/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | fastcms-starters
7 | com.fastcms
8 | ${revision}
9 |
10 | 4.0.0
11 |
12 | fastcms-payment-starter
13 | fastcms-payment-starter-${project.version}
14 |
15 |
16 | 2.14.3-b2
17 |
18 |
19 |
20 |
21 |
22 | com.egzosn
23 | pay-java-common
24 | ${pay-java.version}
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/starters/payment-starter/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | # Auto Configure
2 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
3 | com.fastcms.payment.autoconfigure.PaymentAutoConfiguration
--------------------------------------------------------------------------------
/starters/plugin-starter/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | # Auto Configure
2 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
3 | com.fastcms.plugin.autoconfigure.PluginAutoConfiguration
--------------------------------------------------------------------------------
/starters/wechat-starter/src/main/resources/META-INF/spring.factories:
--------------------------------------------------------------------------------
1 | # Auto Configure
2 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
3 | com.fastcms.wechat.autoconfigure.WechatMiniAppAutoConfiguration,\
4 | com.fastcms.wechat.autoconfigure.WechatMpAutoConfiguration
--------------------------------------------------------------------------------
/templates/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | fastcms
7 | com.fastcms
8 | ${revision}
9 |
10 | 4.0.0
11 |
12 | fastcms-templates
13 | fastcms-templates-${project.version}
14 |
15 |
16 |
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/_template.properties:
--------------------------------------------------------------------------------
1 | template.id=www.fastcms.com
2 | template.name=cms
3 | template.path=/cms/
4 | template.version=0.0.1
5 | template.i18n=cms
6 | template.provider=wjun_java@163.com
7 | template.description=my fastcms site
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/i18n/cms.properties:
--------------------------------------------------------------------------------
1 | cms.test=测试
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/i18n/cms_en.properties:
--------------------------------------------------------------------------------
1 | cms.test=test
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/i18n/cms_zh_CN.properties:
--------------------------------------------------------------------------------
1 | cms.test=测试
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/page.html:
--------------------------------------------------------------------------------
1 | <#import "_layout.html" as layout>
2 | <@layout.header "页面-${(singlePage.title!)}">@layout.header>
3 | <@layout.body>
4 |
5 |
6 |
7 |
8 |
页面id:${(singlePage.id)!}
9 |
标题:${(singlePage.title)!}
10 |
缩略图:!})
11 |
浏览次数:${(singlePage.viewCount)!}
12 |
创建时间:<@formatTime value=singlePage.created!/>
13 |
14 | ${(singlePage.contentHtml)!}
15 |
16 |
17 |
18 |
19 |
20 | @layout.body>
21 | <@layout.script>
22 | @layout.script>
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/favicon.ico
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/images/contact-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/images/contact-bg.jpg
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/images/fastcms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/images/fastcms.png
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/images/home-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/images/home-bg.jpg
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/images/home-bg2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/images/home-bg2.jpg
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/images/software-img.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/images/software-img.png
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/images/web-site.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/images/web-site.png
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/images/wechat-dev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/templates/src/main/resources/cms/static/images/wechat-dev.png
--------------------------------------------------------------------------------
/templates/src/main/resources/cms/static/js/custom.js:
--------------------------------------------------------------------------------
1 | // preloader
2 | $(window).load(function(){
3 | $('.preloader').fadeOut(1000); // set duration in brackets
4 | });
5 |
6 | $(function() {
7 | new WOW().init();
8 | /*$('.templatemo-nav').singlePageNav({
9 | offset: 70
10 | });*/
11 |
12 | /* Hide mobile menu after clicking on a link
13 | -----------------------------------------------*/
14 | $('.navbar-collapse a').click(function(){
15 | $(".navbar-collapse").collapse('hide');
16 | });
17 | })
--------------------------------------------------------------------------------
/ui/.env:
--------------------------------------------------------------------------------
1 | # port 端口号
2 | VITE_PORT = 8088
3 |
4 | # open 运行 npm run dev 时自动打开浏览器
5 | VITE_OPEN = false
6 |
7 | # 打包是否开启 cdn(源文件 utils/build.ts),可自行修改
8 | VITE_OPEN_CDN = false
9 |
10 | # public path 配置线上环境路径(打包)、本地通过 http-server 访问时,请置空即可
11 | VITE_PUBLIC_PATH = /
--------------------------------------------------------------------------------
/ui/.env.development:
--------------------------------------------------------------------------------
1 | # 本地环境
2 | ENV = development
3 |
4 | # 本地环境接口地址
5 | VITE_API_URL = 'http://localhost:8080/fastcms/api'
6 |
7 | # 本地环境插件接口地址
8 | VITE_PLUGIN_URL = 'http://localhost:8080/fastcms/plugin'
9 |
10 | # 本地环境websocket地址
11 | VITE_WEB_SOCKET_URL = 'ws://localhost:8080/fastcms/websocket'
12 |
--------------------------------------------------------------------------------
/ui/.env.production:
--------------------------------------------------------------------------------
1 | # 线上环境
2 | ENV = 'production'
3 |
4 | # 线上环境接口地址
5 | VITE_API_URL = 'fastcms/api'
6 |
7 | # 线上环境插件接口地址
8 | VITE_PLUGIN_URL = 'fastcms/plugin'
9 |
10 | # 线上环境websocket
11 | VITE_WEB_SOCKET_URL = 'https://www.xjd2020.com/fastcms/websocket'
--------------------------------------------------------------------------------
/ui/.eslintignore:
--------------------------------------------------------------------------------
1 |
2 | *.sh
3 | node_modules
4 | lib
5 | *.md
6 | *.scss
7 | *.woff
8 | *.ttf
9 | .vscode
10 | .idea
11 | dist
12 | mock
13 | public
14 | bin
15 | build
16 | config
17 | index.html
18 | src/assets
--------------------------------------------------------------------------------
/ui/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /dist
4 |
5 |
6 | # local env files
7 | .env.local
8 | .env.*.local
9 |
10 | # Log files
11 | npm-debug.log*
12 | yarn-debug.log*
13 | yarn-error.log*
14 | pnpm-debug.log*
15 |
16 | # Editor directories and files
17 | .idea
18 | .vscode
19 | *.suo
20 | *.ntvs*
21 | *.njsproj
22 | *.sln
23 | *.sw?
24 |
--------------------------------------------------------------------------------
/ui/.npmrc:
--------------------------------------------------------------------------------
1 | legacy-peer-deps=true
2 | sass_binary_site=https://registry.npmmirror.com/binary.html?path=node-sass/
--------------------------------------------------------------------------------
/ui/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # fastcms 20230612 更新
--------------------------------------------------------------------------------
/ui/CKEditorSvgLoader.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs').promises
2 | module.exports = function svgLoader() {
3 | const svgRegex = /\.svg(\?ckeditor)?$/;
4 | return {
5 | name: 'svg-loader',
6 | enforce: 'pre',
7 | async load (path) {
8 | if (path.match(svgRegex)) {
9 | const _path = path.split("?");
10 | if (_path[0].match(/node_modules.+@ckeditor/) || _path[1] === "ckeditor") {
11 | const svg = await fs.readFile(_path[0], 'utf-8');
12 | return `export default ${JSON.stringify(svg)}`;
13 | }
14 | }
15 | }
16 | }
17 | }
18 | module.exports.default = module.exports
19 |
--------------------------------------------------------------------------------
/ui/public/bg-login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/ui/public/bg-login.png
--------------------------------------------------------------------------------
/ui/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/ui/public/favicon.ico
--------------------------------------------------------------------------------
/ui/public/header.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/my-fastcms/fastcms/babe636e221b55b95772c3ed9b72dcaad2aee409/ui/public/header.jpg
--------------------------------------------------------------------------------
/ui/src/api/dept/client.ts:
--------------------------------------------------------------------------------
1 | import request from '/@/utils/request';
2 |
3 | export function ClientDeptApi() {
4 | return {
5 | /**
6 | * 获取部门数据(已启用)
7 | * @param params
8 | * @returns
9 | */
10 | getDeptList(params?: object) {
11 | return request({
12 | url: '/client/department/list',
13 | method: 'get',
14 | params,
15 | });
16 | }
17 | };
18 | }
--------------------------------------------------------------------------------
/ui/src/api/home/index.ts:
--------------------------------------------------------------------------------
1 | import request from '/@/utils/request';
2 |
3 |
4 | export function IndexApi() {
5 | return {
6 | /**
7 | * 首页数据集合
8 | * @returns
9 | */
10 | getIndexData() {
11 | return request({
12 | url: '/admin/index/data',
13 | method: 'get'
14 | });
15 | }
16 | };
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/ui/src/api/res/index.ts:
--------------------------------------------------------------------------------
1 | import request from '/@/utils/request';
2 |
3 | export function ResApi() {
4 | return {
5 | /**
6 | * 获取资源数据
7 | * @param params
8 | * @returns
9 | */
10 | getResList(params?: object) {
11 | return request({
12 | url: '/admin/resource/list',
13 | method: 'get',
14 | params,
15 | });
16 | },
17 |
18 | /**
19 | * 同步资源数据
20 | * @param params
21 | * @returns
22 | */
23 | syncRes(params?: object) {
24 | return request({
25 | url: '/admin/resource/sync',
26 | method: 'post',
27 | params,
28 | });
29 | }
30 |
31 | };
32 | }
--------------------------------------------------------------------------------
/ui/src/api/user/client.ts:
--------------------------------------------------------------------------------
1 | import request from '/@/utils/request';
2 |
3 | export function ClientUserApi() {
4 | return {
5 | /**
6 | * 保存用户数据
7 | * @param params
8 | * @returns
9 | */
10 | updateUser(params?: object) {
11 | return request({
12 | url: '/client/user/save',
13 | method: 'post',
14 | data: params,
15 | });
16 | },
17 |
18 | /**
19 | * 获取用户信息
20 | * @param params
21 | * @returns
22 | */
23 | getUserInfo() {
24 | return request({
25 | url: '/client/user/get',
26 | method: 'get',
27 | });
28 | }
29 | };
30 | }
--------------------------------------------------------------------------------
/ui/src/components/auth/auth.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
27 |
--------------------------------------------------------------------------------
/ui/src/components/auth/authAll.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
28 |
--------------------------------------------------------------------------------
/ui/src/components/auth/auths.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
33 |
--------------------------------------------------------------------------------
/ui/src/components/ckeditor/imgPlugin/command.js:
--------------------------------------------------------------------------------
1 | import Command from "@ckeditor/ckeditor5-core/src/command";
2 | import { SCHEMA_NAME_IMG } from "./constant";
3 |
4 | export default class ImgCommand extends Command {
5 | constructor(editor) {
6 | super(editor);
7 | this.attributeKey = SCHEMA_NAME_IMG;
8 | }
9 | refresh() {
10 | const model = this.editor.model;
11 | const selection = model.document.selection;
12 | // 校验选中的 Schema 是否允许 IMG 属性,若不允许则禁用按钮
13 | this.isEnabled = model.schema.checkAttributeInSelection(
14 | selection,
15 | this.attributeKey
16 | );
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/ui/src/components/ckeditor/imgPlugin/connect.js:
--------------------------------------------------------------------------------
1 | export default {
2 | editorObj: null,
3 | dialogObj: null
4 | }
5 |
--------------------------------------------------------------------------------
/ui/src/components/ckeditor/imgPlugin/constant.js:
--------------------------------------------------------------------------------
1 | export const COMMAND_NAME_IMG = 'imgPlugin';
2 | export const COMMAND_LABEL_IMG = '图片';
3 | export const SCHEMA_NAME_IMG = 'image';
4 |
--------------------------------------------------------------------------------
/ui/src/components/ckeditor/imgPlugin/editing.js:
--------------------------------------------------------------------------------
1 | import Plugin from "@ckeditor/ckeditor5-core/src/plugin";
2 | import Widget from '@ckeditor/ckeditor5-widget/src/widget';
3 | import ImgCommand from "./command";
4 | import { COMMAND_NAME_IMG, SCHEMA_NAME_IMG } from "./constant";
5 |
6 | export default class ImgEditing extends Plugin {
7 | static get requires() {
8 | return [Widget];
9 | }
10 | static get pluginName() {
11 | return "ImgEditing";
12 | }
13 | init() {
14 | const editor = this.editor;
15 | this.defineSchema();
16 | editor.commands.add(COMMAND_NAME_IMG, new ImgCommand(editor));
17 | }
18 | // 注册 schema
19 | defineSchema() {
20 | const schema = this.editor.model.schema;
21 | schema.extend("$text", { allowAttributes: SCHEMA_NAME_IMG });
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ui/src/components/ckeditor/imgPlugin/imageIcon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/ui/src/components/ckeditor/imgPlugin/insertImage.js:
--------------------------------------------------------------------------------
1 | import { findOptimalInsertionRange } from "@ckeditor/ckeditor5-widget/src/utils";
2 |
3 | export default function insertImage(model, attributes = {}) {
4 | console.log(model);
5 | if (!attributes || !attributes.src) {
6 | return;
7 | }
8 | model.change((writer) => {
9 | const imageElement = writer.createElement("imageInline", attributes);
10 | // 使用 findOptimalInsertionPosition 方法来获取最佳位置
11 | // 如果某个选择位于段落的中间,则将返回该段落之前的位置,不拆分当前段落
12 | // 如果选择位于段落的末尾,则将返回该段落之后的位置
13 | const insertAtSelection = findOptimalInsertionRange(
14 | model.document.selection,
15 | model
16 | );
17 | model.insertContent(imageElement, insertAtSelection);
18 | });
19 | }
20 |
--------------------------------------------------------------------------------
/ui/src/components/ckeditor/imgPlugin/main.js:
--------------------------------------------------------------------------------
1 | import Plugin from '@ckeditor/ckeditor5-core/src/plugin';
2 | import ToolbarUI from './toolbar';
3 | import ImgEditing from './editing';
4 | import { COMMAND_NAME_IMG } from './constant';
5 |
6 | export default class IMG extends Plugin {
7 | static get requires() {
8 | return [ ImgEditing, ToolbarUI ];
9 | }
10 | static get pluginName() {
11 | return COMMAND_NAME_IMG;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ui/src/directive/index.ts:
--------------------------------------------------------------------------------
1 | import type { App } from 'vue';
2 | import { authDirective } from '/@/directive/authDirective';
3 | import { wavesDirective, dragDirective } from '/@/directive/customDirective';
4 |
5 | /**
6 | * 导出指令方法:v-xxx
7 | * @methods authDirective 用户权限指令,用法:v-auth
8 | * @methods wavesDirective 按钮波浪指令,用法:v-waves
9 | * @methods dragDirective 自定义拖动指令,用法:v-drag
10 | */
11 | export function directive(app: App) {
12 | // 用户权限指令
13 | authDirective(app);
14 | // 按钮波浪指令
15 | wavesDirective(app);
16 | // 自定义拖动指令
17 | dragDirective(app);
18 | }
19 |
--------------------------------------------------------------------------------
/ui/src/i18n/pages/formI18n/en.ts:
--------------------------------------------------------------------------------
1 | // 定义内容
2 | export default {
3 | formI18nLabel: {
4 | name: 'name',
5 | email: 'email',
6 | autograph: 'autograph',
7 | },
8 | formI18nPlaceholder: {
9 | name: 'Please enter your name',
10 | email: 'Please enter the users Department',
11 | autograph: 'Please enter the login account name',
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/ui/src/i18n/pages/formI18n/zh-cn.ts:
--------------------------------------------------------------------------------
1 | // 定义内容
2 | export default {
3 | formI18nLabel: {
4 | name: '姓名',
5 | email: '用户归属部门',
6 | autograph: '登陆账户名',
7 | },
8 | formI18nPlaceholder: {
9 | name: '请输入姓名',
10 | email: '请输入用户归属部门',
11 | autograph: '请输入登陆账户名',
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/ui/src/i18n/pages/formI18n/zh-tw.ts:
--------------------------------------------------------------------------------
1 | // 定义内容
2 | export default {
3 | formI18nLabel: {
4 | name: '姓名',
5 | email: '用戶歸屬部門',
6 | autograph: '登入帳戶名',
7 | },
8 | formI18nPlaceholder: {
9 | name: '請輸入姓名',
10 | email: '請輸入用戶歸屬部門',
11 | autograph: '請輸入登入帳戶名',
12 | },
13 | };
14 |
--------------------------------------------------------------------------------
/ui/src/i18n/pages/home/en.ts:
--------------------------------------------------------------------------------
1 | // 定义内容
2 | export default {
3 | card: {
4 | title1: 'Commodity sales',
5 | title2: 'environmental monitoring',
6 | title3: 'Early warning information',
7 | title4: 'dynamic information',
8 | title5: 'Performance overtime warning',
9 | },
10 | table: {
11 | th1: 'time',
12 | th2: 'Laboratory name',
13 | th3: 'Alarm content',
14 | },
15 | };
16 |
--------------------------------------------------------------------------------
/ui/src/i18n/pages/home/zh-cn.ts:
--------------------------------------------------------------------------------
1 | // 定义内容
2 | export default {
3 | card: {
4 | title1: '商品销售情况',
5 | title2: '环境监测',
6 | title3: '最新文章',
7 | title4: '版本日志',
8 | title5: '履约超时预警',
9 | },
10 | table: {
11 | th1: '标题',
12 | th2: '浏览次数',
13 | th3: '创建时间',
14 | },
15 | };
16 |
--------------------------------------------------------------------------------
/ui/src/i18n/pages/home/zh-tw.ts:
--------------------------------------------------------------------------------
1 | // 定义内容
2 | export default {
3 | card: {
4 | title1: '商品銷售情况',
5 | title2: '環境監測',
6 | title3: '預警資訊',
7 | title4: '動態資訊',
8 | title5: '履約超時預警',
9 | },
10 | table: {
11 | th1: '時間',
12 | th2: '實驗室名稱',
13 | th3: '報警內容',
14 | },
15 | };
16 |
--------------------------------------------------------------------------------
/ui/src/i18n/pages/login/en.ts:
--------------------------------------------------------------------------------
1 | // 定义内容
2 | export default {
3 | label: {
4 | one1: 'User name login',
5 | two2: 'Mobile number',
6 | },
7 | link: {
8 | one3: 'Third party login',
9 | two4: 'Links',
10 | },
11 | account: {
12 | accountPlaceholder1: 'The user name',
13 | accountPlaceholder2: 'Password',
14 | accountPlaceholder3: 'Please enter the verification code',
15 | accountBtnText: 'Sign in',
16 | },
17 | mobile: {
18 | placeholder1: 'Please input mobile phone number',
19 | placeholder2: 'Please enter the verification code',
20 | codeText: 'Get code',
21 | btnText: 'Sign in',
22 | msgText:
23 | 'Warm tip: it is recommended to use Google, Microsoft edge, version 79.0.1072.62 and above browsers, and 360 browser, please use speed mode',
24 | },
25 | scan: {
26 | text: 'Open the mobile phone to scan and quickly log in / register',
27 | },
28 | signInText: 'welcome back!',
29 | };
30 |
--------------------------------------------------------------------------------
/ui/src/i18n/pages/login/zh-cn.ts:
--------------------------------------------------------------------------------
1 | // 定义内容
2 | export default {
3 | label: {
4 | one1: '账号密码登录',
5 | two2: '手机号登录',
6 | },
7 | link: {
8 | one3: '新用户注册',
9 | two4: '友情链接',
10 | two5: '已有账号?现在登录',
11 | two6: '找回密码',
12 | two7: '微信授权登录',
13 | },
14 | copyright: {
15 | one5: '版权所有:广州小橘灯信息科技有限公司',
16 | two6: 'Copyright: Guangzhou xiaojuedeng Software Technology 粤ICP备20053122号',
17 | },
18 | account: {
19 | accountPlaceholder1: '账号',
20 | accountPlaceholder2: '密码',
21 | accountPlaceholder3: '请输入验证码',
22 | accountPlaceholder4: '确认密码',
23 | accountPlaceholder5: '邮箱',
24 | accountPlaceholder6: '昵称',
25 | accountBtnText: '登 录',
26 | accountRegistBtnText: '注 册',
27 | accountRestPasswordBtnText: '重置密码',
28 | },
29 | mobile: {
30 | placeholder1: '请输入手机号',
31 | placeholder2: '请输入验证码',
32 | codeText: '获取验证码',
33 | btnText: '登 录',
34 | },
35 | signInText: '欢迎回来!',
36 | registerInText: '注册成功,即将跳到登录页...',
37 | };
38 |
--------------------------------------------------------------------------------
/ui/src/i18n/pages/login/zh-tw.ts:
--------------------------------------------------------------------------------
1 | // 定义内容
2 | export default {
3 | label: {
4 | one1: '用戶名登入',
5 | two2: '手機號登入',
6 | },
7 | link: {
8 | one3: '協力廠商登入',
9 | two4: '友情連結',
10 | },
11 | account: {
12 | accountPlaceholder1: '用戶名admin或不輸均為common',
13 | accountPlaceholder2: '密碼:123456',
14 | accountPlaceholder3: '請輸入驗證碼',
15 | accountBtnText: '登入',
16 | },
17 | mobile: {
18 | placeholder1: '請輸入手機號',
19 | placeholder2: '請輸入驗證碼',
20 | codeText: '獲取驗證碼',
21 | btnText: '登入',
22 | msgText: '* 溫馨提示:建議使用穀歌、Microsoft Edge,版本79.0.1072.62及以上瀏覽器,360瀏覽器請使用極速模式',
23 | },
24 | scan: {
25 | text: '打開手機掃一掃,快速登錄/注册',
26 | },
27 | signInText: '歡迎回來!',
28 | };
29 |
--------------------------------------------------------------------------------
/ui/src/layout/component/header.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
19 |
--------------------------------------------------------------------------------
/ui/src/layout/footer/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
17 |
18 |
30 |
--------------------------------------------------------------------------------
/ui/src/main.ts:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue';
2 | import pinia from '/@/stores/index';
3 | import App from '/@/App.vue';
4 | import router from '/@/router';
5 | import { directive } from '/@/directive/index';
6 | import { i18n } from '/@/i18n/index';
7 | import other from '/@/utils/other';
8 |
9 | import ElementPlus from 'element-plus';
10 | import '/@/theme/index.scss';
11 | import "./theme/ck-vite.css";
12 | import VueGridLayout from 'vue-grid-layout';
13 |
14 | const app = createApp(App);
15 |
16 | directive(app);
17 | other.elSvg(app);
18 |
19 | app.use(pinia).use(router).use(ElementPlus).use(i18n).use(VueGridLayout).mount('#app');
20 |
--------------------------------------------------------------------------------
/ui/src/stores/index.ts:
--------------------------------------------------------------------------------
1 | // https://pinia.vuejs.org/
2 | import { createPinia } from 'pinia';
3 |
4 | // 创建
5 | const pinia = createPinia();
6 |
7 | // 导出
8 | export default pinia;
9 |
--------------------------------------------------------------------------------
/ui/src/stores/requestOldRoutes.ts:
--------------------------------------------------------------------------------
1 | import { defineStore } from 'pinia';
2 |
3 | /**
4 | * 后端返回原始路由(未处理时)
5 | * @methods setCacheKeepAlive 设置接口原始路由数据
6 | */
7 | export const useRequestOldRoutes = defineStore('requestOldRoutes', {
8 | state: (): RequestOldRoutesState => ({
9 | requestOldRoutes: [],
10 | }),
11 | actions: {
12 | async setRequestOldRoutes(routes: Array) {
13 | this.requestOldRoutes = routes;
14 | },
15 | },
16 | });
17 |
--------------------------------------------------------------------------------
/ui/src/stores/routesList.ts:
--------------------------------------------------------------------------------
1 | import { defineStore } from 'pinia';
2 |
3 | /**
4 | * 路由列表
5 | * @methods setRoutesList 设置路由数据
6 | * @methods setColumnsMenuHover 设置分栏布局菜单鼠标移入 boolean
7 | * @methods setColumnsNavHover 设置分栏布局最左侧导航鼠标移入 boolean
8 | */
9 | export const useRoutesList = defineStore('routesList', {
10 | state: (): RoutesListState => ({
11 | routesList: [],
12 | isColumnsMenuHover: false,
13 | isColumnsNavHover: false,
14 | }),
15 | actions: {
16 | async setRoutesList(data: Array) {
17 | this.routesList = data;
18 | },
19 | async setColumnsMenuHover(bool: Boolean) {
20 | this.isColumnsMenuHover = bool;
21 | },
22 | async setColumnsNavHover(bool: Boolean) {
23 | this.isColumnsNavHover = bool;
24 | },
25 | },
26 | });
27 |
--------------------------------------------------------------------------------
/ui/src/stores/tagsViewRoutes.ts:
--------------------------------------------------------------------------------
1 | import { defineStore } from 'pinia';
2 | import { Session } from '/@/utils/storage';
3 |
4 | /**
5 | * TagsView 路由列表
6 | * @methods setTagsViewRoutes 设置 TagsView 路由列表
7 | * @methods setCurrenFullscreen 设置开启/关闭全屏时的 boolean 状态
8 | */
9 | export const useTagsViewRoutes = defineStore('tagsViewRoutes', {
10 | state: (): TagsViewRoutesState => ({
11 | tagsViewRoutes: [],
12 | isTagsViewCurrenFull: false,
13 | }),
14 | actions: {
15 | async setTagsViewRoutes(data: Array) {
16 | this.tagsViewRoutes = data;
17 | },
18 | setCurrenFullscreen(bool: Boolean) {
19 | Session.set('isTagsViewCurrenFull', bool);
20 | this.isTagsViewCurrenFull = bool;
21 | },
22 | },
23 | });
24 |
--------------------------------------------------------------------------------
/ui/src/theme/iconSelector.scss:
--------------------------------------------------------------------------------
1 | /* Popover 弹出框(图标选择器)
2 | ------------------------------- */
3 | .icon-selector-popper {
4 | padding: 0 !important;
5 | .icon-selector-warp {
6 | height: 260px;
7 | overflow: hidden;
8 | position: relative;
9 | .icon-selector-warp-title {
10 | position: absolute;
11 | height: 40px;
12 | line-height: 40px;
13 | left: 15px;
14 | }
15 | .el-tabs__header {
16 | display: flex;
17 | justify-content: flex-end;
18 | padding: 0 15px;
19 | border-bottom: 1px solid var(--el-border-color-light);
20 | margin: 0 !important;
21 | .el-tabs__nav-wrap {
22 | &::after {
23 | height: 0 !important;
24 | }
25 | .el-tabs__item {
26 | padding: 0 5px !important;
27 | }
28 | }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/ui/src/theme/index.scss:
--------------------------------------------------------------------------------
1 | @use 'element-plus/dist/index.css';
2 | @use './app.scss';
3 | @use 'common/transition.scss';
4 | @use './other.scss';
5 | @use './element.scss';
6 | @use './media/media.scss';
7 | @use './waves.scss';
8 | @use './dark.scss';
9 |
--------------------------------------------------------------------------------
/ui/src/theme/media/cityLinkage.scss:
--------------------------------------------------------------------------------
1 | @use './index.scss' as *;
2 |
3 |
4 | /* 页面宽度小于576px
5 | ------------------------------- */
6 | @media screen and (max-width: $xs) {
7 | .el-cascader__dropdown.el-popper {
8 | overflow: auto;
9 | max-width: 100%;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/ui/src/theme/media/date.scss:
--------------------------------------------------------------------------------
1 | @use './index.scss' as *;
2 |
3 |
4 | /* 页面宽度小于768px
5 | ------------------------------- */
6 | @media screen and (max-width: $sm) {
7 | // 时间选择器适配
8 | .el-date-range-picker {
9 | width: 100vw;
10 | .el-picker-panel__body {
11 | min-width: 100%;
12 | .el-date-range-picker__content {
13 | .el-date-range-picker__header div {
14 | margin-left: 22px;
15 | margin-right: 0px;
16 | }
17 | & + .el-date-range-picker__content {
18 | .el-date-range-picker__header div {
19 | margin-left: 0px;
20 | margin-right: 22px;
21 | }
22 | }
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ui/src/theme/media/dialog.scss:
--------------------------------------------------------------------------------
1 | @use './index.scss' as *;
2 |
3 | /* 页面宽度小于800px
4 | ------------------------------- */
5 | @media screen and (max-width: 800px) {
6 | .el-dialog {
7 | width: 90% !important;
8 | }
9 | .el-dialog.is-fullscreen {
10 | width: 100% !important;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/ui/src/theme/media/error.scss:
--------------------------------------------------------------------------------
1 | @use './index.scss' as *;
2 |
3 | /* 页面宽度小于768px
4 | ------------------------------- */
5 | @media screen and (max-width: $sm) {
6 | .error {
7 | .error-flex {
8 | flex-direction: column-reverse !important;
9 | height: auto !important;
10 | width: 100% !important;
11 | }
12 | .right,
13 | .left {
14 | flex: unset !important;
15 | display: flex !important;
16 | }
17 | .left-item {
18 | margin: auto !important;
19 | }
20 | .right img {
21 | max-width: 450px !important;
22 | @extend .left-item;
23 | }
24 | }
25 | }
26 |
27 | /* 页面宽度大于768px小于992px
28 | ------------------------------- */
29 | @media screen and (min-width: $sm) and (max-width: $md) {
30 | .error {
31 | .error-flex {
32 | padding-left: 30px !important;
33 | }
34 | }
35 | }
36 |
37 | /* 页面宽度小于1200px
38 | ------------------------------- */
39 | @media screen and (max-width: $lg) {
40 | .error {
41 | .error-flex {
42 | padding: 0 30px;
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/ui/src/theme/media/form.scss:
--------------------------------------------------------------------------------
1 | @use './index.scss' as *;
2 |
3 |
4 | /* 页面宽度小于576px
5 | ------------------------------- */
6 | @media screen and (max-width: $xs) {
7 | .el-form-item__label {
8 | width: 100% !important;
9 | text-align: left !important;
10 | // 移动端 label 右对齐问题
11 | justify-content: flex-start !important;
12 | }
13 | .el-form-item__content {
14 | margin-left: 0 !important;
15 | }
16 | .el-form-item {
17 | // 响应式表单时,登录页需要重新处理
18 | display: unset !important;
19 | }
20 | // 表格演示中的表单筛选
21 | .table-form-btn {
22 | display: flex !important;
23 | .el-form-item__label {
24 | width: auto !important;
25 | }
26 | }
27 | // 表格演示中的表单筛选最大高度,适配移动端
28 | .table-search-container {
29 | max-height: 160px;
30 | overflow: auto;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/ui/src/theme/media/home.scss:
--------------------------------------------------------------------------------
1 | @use './index.scss' as *;
2 |
3 | /* 页面宽度小于768px
4 | ------------------------------- */
5 | @media screen and (max-width: $sm) {
6 | .home-media,
7 | .home-media-sm {
8 | margin-top: 15px;
9 | }
10 | }
11 |
12 | /* 页面宽度小于1200px
13 | ------------------------------- */
14 | @media screen and (max-width: $lg) {
15 | .home-media-lg {
16 | margin-top: 15px;
17 | }
18 | .home-monitor {
19 | .flex-warp-item {
20 | width: 33.33% !important;
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ui/src/theme/media/index.scss:
--------------------------------------------------------------------------------
1 | /* 栅格布局(媒体查询变量)
2 | * https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/Media_queries
3 | * $us ≥376px 响应式栅格
4 | * $xs ≥576px 响应式栅格
5 | * $sm ≥768px 响应式栅格
6 | * $md ≥992px 响应式栅格
7 | * $lg ≥1200px 响应式栅格
8 | * $xl ≥1920px 响应式栅格
9 | ------------------------------- */
10 | $us: 376px;
11 | $xs: 576px;
12 | $sm: 768px;
13 | $md: 992px;
14 | $lg: 1200px;
15 | $xl: 1920px;
16 |
--------------------------------------------------------------------------------
/ui/src/theme/media/media.scss:
--------------------------------------------------------------------------------
1 | @use './login.scss';
2 | @use './error.scss';
3 | @use './layout.scss';
4 | @use './personal.scss';
5 | @use './tagsView.scss';
6 | @use './home.scss';
7 | @use './chart.scss';
8 | @use './form.scss';
9 | @use './scrollbar.scss';
10 | @use './pagination.scss';
11 | @use './dialog.scss';
12 | @use './cityLinkage.scss';
13 | @use './date.scss';
14 |
--------------------------------------------------------------------------------
/ui/src/theme/media/pagination.scss:
--------------------------------------------------------------------------------
1 | @use './index.scss' as *;
2 |
3 | /* 页面宽度小于576px
4 | ------------------------------- */
5 | @media screen and (max-width: $xs) {
6 | .el-pager,
7 | .el-pagination__jump {
8 | display: none !important;
9 | }
10 | // 默认居中对齐
11 | .el-pagination,
12 | .table-footer {
13 | justify-content: center !important;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/ui/src/theme/media/personal.scss:
--------------------------------------------------------------------------------
1 | @use './index.scss' as *;
2 |
3 | /* 页面宽度小于768px
4 | ------------------------------- */
5 | @media screen and (max-width: $sm) {
6 | .personal-info {
7 | padding-left: 0 !important;
8 | margin-top: 15px;
9 | }
10 | .personal-recommend-col {
11 | margin-bottom: 15px;
12 | &:last-of-type {
13 | margin-bottom: 0;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/ui/src/theme/media/tagsView.scss:
--------------------------------------------------------------------------------
1 | @use './index.scss' as *;
2 |
3 | /* 页面宽度小于768px
4 | ------------------------------- */
5 | @media screen and (max-width: $sm) {
6 | .tags-view-form {
7 | .tags-view-form-col {
8 | margin-bottom: 20px;
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/ui/src/theme/tableTool.scss:
--------------------------------------------------------------------------------
1 | .table-tool-popper {
2 | padding: 0 !important;
3 | .tool-box {
4 | display: flex;
5 | border-bottom: 1px solid var(--el-border-color-lighter);
6 | box-sizing: border-box;
7 | color: var(--el-text-color-primary);
8 | height: 40px;
9 | align-items: center;
10 | }
11 | .tool-sortable {
12 | max-height: 303px;
13 | .tool-sortable-item {
14 | display: flex;
15 | box-sizing: border-box;
16 | color: var(--el-text-color-primary);
17 | align-items: center;
18 | padding: 0 12px;
19 | &:hover {
20 | background: var(--el-fill-color-lighter);
21 | }
22 | i {
23 | opacity: 0.7;
24 | }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/ui/src/types/axios.d.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | import * as axios from 'axios';
3 |
4 | // 扩展 axios 数据返回类型,可自行扩展
5 | declare module 'axios' {
6 | export interface AxiosResponse {
7 | code: number;
8 | data: T;
9 | message: string;
10 | type?: string;
11 | [key: string]: T;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ui/src/utils/authFunction.ts:
--------------------------------------------------------------------------------
1 | import { useUserInfo } from '/@/stores/userInfo';
2 | import { judementSameArr } from '/@/utils/arrayOperation';
3 |
4 | /**
5 | * 单个权限验证
6 | * @param value 权限值
7 | * @returns 有权限,返回 `true`,反之则反
8 | */
9 | export function auth(value: string): boolean {
10 | const stores = useUserInfo();
11 | return stores.userInfos.authBtnList.some((v: string) => v === value);
12 | }
13 |
14 | /**
15 | * 多个权限验证,满足一个则为 true
16 | * @param value 权限值
17 | * @returns 有权限,返回 `true`,反之则反
18 | */
19 | export function auths(value: Array): boolean {
20 | let flag = false;
21 | const stores = useUserInfo();
22 | stores.userInfos.authBtnList.map((val: string) => {
23 | value.map((v: string) => {
24 | if (val === v) flag = true;
25 | });
26 | });
27 | return flag;
28 | }
29 |
30 | /**
31 | * 多个权限验证,全部满足则为 true
32 | * @param value 权限值
33 | * @returns 有权限,返回 `true`,反之则反
34 | */
35 | export function authAll(value: Array): boolean {
36 | const stores = useUserInfo();
37 | return judementSameArr(value, stores.userInfos.authBtnList);
38 | }
39 |
--------------------------------------------------------------------------------
/ui/src/utils/mitt.ts:
--------------------------------------------------------------------------------
1 | // https://www.npmjs.com/package/mitt
2 | import mitt, { Emitter } from 'mitt';
3 |
4 | // 类型
5 | const emitter: Emitter = mitt();
6 |
7 | // 导出
8 | export default emitter;
9 |
--------------------------------------------------------------------------------
/ui/src/views/center/collect/index.vue:
--------------------------------------------------------------------------------
1 |
2 | 我的收藏
3 |
4 |
5 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/ui/src/views/center/coupon/index.vue:
--------------------------------------------------------------------------------
1 |
2 | 优惠券
3 |
4 |
5 |
10 |
11 |
14 |
--------------------------------------------------------------------------------
/ui/src/views/center/home/mock.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * 消息通知
3 | * @returns 返回模拟数据
4 | */
5 | export const newsInfoList: Array