findRolesByUserId() {
19 | return null;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/common/FieldStrategy.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.common;
2 |
3 | /**
4 | * 字段策略枚举类
5 | *
6 | * 如果字段是基本数据类型则最终效果等同于 {@link #IGNORED}
7 | *
8 | * @author hubin
9 | * @since 2016-09-09
10 | */
11 | public enum FieldStrategy {
12 | /**
13 | * 忽略判断
14 | */
15 | IGNORED,
16 | /**
17 | * 非NULL判断
18 | */
19 | NOT_NULL,
20 | /**
21 | * 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
22 | */
23 | NOT_EMPTY,
24 | /**
25 | * 默认的,一般只用于注解里
26 | *
1. 在全局里代表 NOT_NULL
27 | * 2. 在注解里代表 跟随全局
28 | */
29 | DEFAULT,
30 | /**
31 | * 不加入 SQL
32 | */
33 | NEVER
34 | }
35 |
--------------------------------------------------------------------------------
/kd-shop-ui/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "baseUrl": ".",
4 | "target": "esnext",
5 | "useDefineForClassFields": true,
6 | "module": "esnext",
7 | "moduleResolution": "node",
8 | "strict": true,
9 | "jsx": "preserve",
10 | "sourceMap": true,
11 | "resolveJsonModule": true,
12 | "esModuleInterop": true,
13 | "lib": ["esnext", "dom"],
14 | "paths": {
15 | "~/*": ["src/*"]
16 | },
17 | "skipLibCheck": true,
18 | "types": ["element-plus/global"]
19 | },
20 | "vueCompilerOptions": {
21 | "target": 3
22 | },
23 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
24 | "exclude": ["node_modules"]
25 | }
26 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide/content.mobile.min.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
8 | /*# sourceMappingURL=content.mobile.min.css.map */
9 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.mobile.min.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
8 | /*# sourceMappingURL=content.mobile.min.css.map */
9 |
--------------------------------------------------------------------------------
/kd-shop-ui/src/styles/index.scss:
--------------------------------------------------------------------------------
1 | // import dark theme
2 | @use "element-plus/theme-chalk/src/dark/css-vars.scss" as *;
3 |
4 | :root {
5 | // --ep-color-primary: red;
6 | --footer: 96px;
7 | }
8 |
9 | body {
10 | font-family: Inter, system-ui, Avenir, "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB",
11 | "Microsoft YaHei", "微软雅黑", Arial, sans-serif;
12 | -webkit-font-smoothing: antialiased;
13 | -moz-osx-font-smoothing: grayscale;
14 | margin: 0;
15 | // overflow: hidden;
16 | }
17 |
18 | a {
19 | color: var(--ep-color-primary);
20 | }
21 |
22 | code {
23 | border-radius: 2px;
24 | padding: 2px 4px;
25 | background-color: var(--ep-color-primary-light-9);
26 | color: var(--ep-color-primary);
27 | }
28 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/ex/PageNotFoundException.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.ex;
2 |
3 | public class PageNotFoundException extends ServiceException {
4 | public PageNotFoundException() {
5 | super();
6 | }
7 |
8 | public PageNotFoundException(String message) {
9 | super(message);
10 | }
11 |
12 | public PageNotFoundException(String message, Throwable cause) {
13 | super(message);
14 | }
15 |
16 | public PageNotFoundException(Throwable cause) {
17 | super(cause.getMessage());
18 | }
19 |
20 | protected PageNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
21 | super(message);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/ex/PhoneNotFoundException.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.ex;
2 |
3 | public class PhoneNotFoundException extends ServiceException{
4 | public PhoneNotFoundException() {
5 | super();
6 | }
7 |
8 | public PhoneNotFoundException(String message) {
9 | super(message);
10 | }
11 |
12 | public PhoneNotFoundException(String message, Throwable cause) {
13 | super(message);
14 | }
15 |
16 | public PhoneNotFoundException(Throwable cause) {
17 | super(cause.getMessage());
18 | }
19 |
20 | protected PhoneNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
21 | super(message);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/ex/UsernameTakenException.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.ex;
2 |
3 | public class UsernameTakenException extends ServiceException{
4 | public UsernameTakenException() {
5 | super();
6 | }
7 |
8 | public UsernameTakenException(String message) {
9 | super(message);
10 | }
11 |
12 | public UsernameTakenException(String message, Throwable cause) {
13 | super(message);
14 | }
15 |
16 | public UsernameTakenException(Throwable cause) {
17 | super(cause.getMessage());
18 | }
19 |
20 | protected UsernameTakenException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
21 | super(message);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/pojo/CommentsExtend.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.pojo;
2 |
3 | public class CommentsExtend {
4 | private Goods goods;
5 | private SysUser user;
6 | private Comments comments;
7 | public Goods getGoods() {
8 | return goods;
9 | }
10 | public void setGoods(Goods goods) {
11 | this.goods = goods;
12 | }
13 |
14 | public SysUser getUser() {
15 | return user;
16 | }
17 |
18 | public void setUser(SysUser user) {
19 | this.user = user;
20 | }
21 |
22 | public Comments getComments() {
23 | return comments;
24 | }
25 |
26 | public void setComments(Comments comments) {
27 | this.comments = comments;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/kd-shop-ui/src/utils/validate.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * 校验规则
3 | */
4 | const regEmail = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
5 | const regPhone = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/;
6 | const reg_username = /^[a-zA-Z][a-zA-Z0-9]{4,15}$/;
7 | const regPassword = /^(?!\D+$)(?![^a-zA-Z]+$)\S{6,20}$/;
8 | const regCode = /^[a-z0-9]{6}$/;
9 |
10 | // 校验手机号
11 | export const validate_phone = (value: string) : boolean => regPhone.test(value);
12 |
13 | //校验邮箱
14 | export const validate_email = (value: string) : boolean => regEmail.test(value);
15 |
16 | // 校验密码
17 | export const validate_password = (value: string) : boolean => regPassword.test(value);
18 |
19 | // 校验验证码
20 | export const validate_code = (value: any) : boolean => regCode.test(value);
21 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/ex/UserPasswordErrorException.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.ex;
2 |
3 | public class UserPasswordErrorException extends ServiceException{
4 | public UserPasswordErrorException() {
5 | super();
6 | }
7 |
8 | public UserPasswordErrorException(String message) {
9 | super(message);
10 | }
11 |
12 | public UserPasswordErrorException(String message, Throwable cause) {
13 | super(message);
14 | }
15 |
16 | public UserPasswordErrorException(Throwable cause) {
17 | super(cause.getMessage());
18 | }
19 |
20 | protected UserPasswordErrorException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
21 | super(message);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/pojo/WantedExtend.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.pojo;
2 |
3 | public class WantedExtend {
4 | private Wanted wanted;
5 | private GoodsExtend goodsExtend;
6 | private SysUser user;
7 |
8 | public Wanted getWanted() {
9 | return wanted;
10 | }
11 |
12 | public void setWanted(Wanted wanted) {
13 | this.wanted = wanted;
14 | }
15 |
16 | public GoodsExtend getGoodsExtend() {
17 | return goodsExtend;
18 | }
19 |
20 | public void setGoodsExtend(GoodsExtend goodsExtend) {
21 | this.goodsExtend = goodsExtend;
22 | }
23 |
24 | public SysUser getUser() {
25 | return user;
26 | }
27 |
28 | public void setUser(SysUser user) {
29 | this.user = user;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/utils/PageUtils.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.utils;
2 |
3 | import com.github.pagehelper.PageInfo;
4 |
5 | public class PageUtils {
6 | /**
7 | * 将分页信息封装到统一的接口
8 | * @param pageRequest
9 | * @param pageInfo
10 | * @return
11 | */
12 | public static PageResult getPageResult(PageRequest pageRequest, PageInfo> pageInfo) {
13 | PageResult pageResult = new PageResult();
14 | pageResult.setPageNum(pageInfo.getPageNum());
15 | pageResult.setPageSize(pageInfo.getPageSize());
16 | pageResult.setTotalSize(pageInfo.getTotal());
17 | pageResult.setTotalPages(pageInfo.getPages());
18 | pageResult.setContent(pageInfo.getList());
19 | return pageResult;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/java/com/lvr/kdshop/web/WebApplication.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.web;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.context.annotation.ComponentScan;
7 |
8 | @ComponentScan(basePackages = {"com.lvr.kdshop.web.config","com.lvr.kdshop.web.interceptor","com.lvr.kdshop.web.utils",
9 | "com.lvr.kdshop.business.service", "com.lvr.kdshop.web.controller"})
10 | @MapperScan("com.lvr.kdshop.business.mapper")
11 | @SpringBootApplication
12 | public class WebApplication {
13 |
14 | public static void main(String[] args) {
15 | SpringApplication.run(WebApplication.class, args);
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/textcolor/plugin.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | *
7 | * Version: 5.0.16 (2019-09-24)
8 | */
9 | (function (domGlobals) {
10 | 'use strict';
11 |
12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
13 |
14 | function Plugin () {
15 | global.add('textcolor', function () {
16 | domGlobals.console.warn('Text color plugin is now built in to the core editor, please remove it from your editor configuration');
17 | });
18 | }
19 |
20 | Plugin();
21 |
22 | }(window));
23 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/colorpicker/plugin.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | *
7 | * Version: 5.0.16 (2019-09-24)
8 | */
9 | (function (domGlobals) {
10 | 'use strict';
11 |
12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
13 |
14 | function Plugin () {
15 | global.add('colorpicker', function () {
16 | domGlobals.console.warn('Color picker plugin is now built in to the core editor, please remove it from your editor configuration');
17 | });
18 | }
19 |
20 | Plugin();
21 |
22 | }(window));
23 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/contextmenu/plugin.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | *
7 | * Version: 5.0.16 (2019-09-24)
8 | */
9 | (function (domGlobals) {
10 | 'use strict';
11 |
12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
13 |
14 | function Plugin () {
15 | global.add('contextmenu', function () {
16 | domGlobals.console.warn('Context menu plugin is now built in to the core editor, please remove it from your editor configuration');
17 | });
18 | }
19 |
20 | Plugin();
21 |
22 | }(window));
23 |
--------------------------------------------------------------------------------
/kd-shop-ui/src/components/Logos.vue:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
32 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/OrdersService.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service;
2 |
3 | import com.lvr.kdshop.pojo.Orders;
4 |
5 | import java.util.List;
6 |
7 | public interface OrdersService {
8 | /**
9 | * This method was generated by MyBatis Generator.
10 | * This method corresponds to the database table order
11 | *
12 | * @mbggenerated
13 | */
14 | int insert(Orders record);
15 |
16 | /**
17 | * This method was generated by MyBatis Generator.
18 | * This method corresponds to the database table order
19 | *
20 | * @mbggenerated
21 | */
22 | List selectAll();
23 |
24 |
25 |
26 | List selectOrdersByUserId(Integer userId);
27 |
28 | Orders selectOrdersByGoodId(Integer goodId);
29 |
30 | Double getSpendByUserId(String userId);
31 |
32 | Double getIncomeByUserId(String userId);
33 | }
34 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/hr/plugin.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | *
7 | * Version: 5.0.16 (2019-09-24)
8 | */
9 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"
")})},t=function(n){n.ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}}),n.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:function(){return n.execCommand("InsertHorizontalRule")}})};!function e(){n.add("hr",function(n){o(n),t(n)})}()}();
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/pojo/Goods.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.pojo;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | @Data
8 | @AllArgsConstructor
9 | @NoArgsConstructor
10 | public class Goods {
11 | private Integer id;
12 |
13 | private Integer catelogId;
14 |
15 | private String userId;
16 |
17 | private String name;
18 |
19 | private Float price;
20 |
21 | private Float realPrice;
22 |
23 | private String startTime;
24 |
25 | private String polishTime;
26 |
27 | private String endTime;
28 |
29 | private String firstImage;
30 |
31 | private String phoneNumber;
32 |
33 | private String goodBuyMethod;
34 |
35 | private String goodAddress;
36 |
37 | private Integer viewCount;
38 |
39 | private String describle;
40 |
41 | private Byte status;
42 |
43 | private String sellerNote;
44 |
45 | }
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide/content.mobile.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {
8 | /* Note: this file is used inside the content, so isn't part of theming */
9 | background-color: green;
10 | display: inline-block;
11 | opacity: 0.5;
12 | position: absolute;
13 | }
14 | body {
15 | -webkit-text-size-adjust: none;
16 | }
17 | body img {
18 | /* this is related to the content margin */
19 | max-width: 96vw;
20 | }
21 | body table img {
22 | max-width: 95%;
23 | }
24 | body {
25 | font-family: sans-serif;
26 | }
27 | table {
28 | border-collapse: collapse;
29 | }
30 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.mobile.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | .tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {
8 | /* Note: this file is used inside the content, so isn't part of theming */
9 | background-color: green;
10 | display: inline-block;
11 | opacity: 0.5;
12 | position: absolute;
13 | }
14 | body {
15 | -webkit-text-size-adjust: none;
16 | }
17 | body img {
18 | /* this is related to the content margin */
19 | max-width: 96vw;
20 | }
21 | body table img {
22 | max-width: 95%;
23 | }
24 | body {
25 | font-family: sans-serif;
26 | }
27 | table {
28 | border-collapse: collapse;
29 | }
30 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/common/BaseController.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.common;
2 |
3 |
4 | import com.lvr.kdshop.util.ResuTree;
5 | import com.lvr.kdshop.util.ResultTable;
6 |
7 | /**
8 | * web层通用数据处理
9 | *
10 | * @author fuce
11 | * @ClassName: BaseController
12 | * @date 2018年8月18日
13 | */
14 | public class BaseController {
15 |
16 |
17 |
18 |
19 |
20 | /**
21 | * 返回 Tree 数据
22 | *
23 | * @param data
24 | * @return
25 | */
26 | protected static ResuTree dataTree(Object data) {
27 | ResuTree resuTree = new ResuTree();
28 | resuTree.setData(data);
29 | return resuTree;
30 | }
31 |
32 | /**
33 | * 返回数据表格数据
34 | *
35 | * @param data 表格分页数据
36 | * @param count
37 | * @return
38 | */
39 | protected static ResultTable pageTable(Object data, long count) {
40 | return ResultTable.pageTable(count, data);
41 | }
42 |
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/kd-shop-ui/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "element-plus-vite-starter",
3 | "private": true,
4 | "version": "0.1.0",
5 | "scripts": {
6 | "dev": "vite",
7 | "build": "vite build",
8 | "generate": "vite-ssg build",
9 | "preview": "vite preview",
10 | "typecheck": "vue-tsc --noEmit"
11 | },
12 | "dependencies": {
13 | "axios": "^1.7.7",
14 | "element-plus": "^2.8.5",
15 | "pinia": "^2.2.4",
16 | "vue": "^3.5.12",
17 | "vue-router": "^4.4.5",
18 | "zod": "^3.23.8"
19 | },
20 | "devDependencies": {
21 | "@iconify-json/ep": "^1.1.15",
22 | "@types/node": "^20.11.30",
23 | "@vitejs/plugin-vue": "^5.0.4",
24 | "sass": "^1.79.3",
25 | "typescript": "^5.4.3",
26 | "unocss": "^0.58.6",
27 | "unplugin-auto-import": "^0.18.3",
28 | "unplugin-vue-components": "^0.26.0",
29 | "vite": "^5.2.5",
30 | "vite-ssg": "^0.23.6",
31 | "vue-tsc": "^2.0.7"
32 | },
33 | "license": "MIT"
34 | }
35 |
--------------------------------------------------------------------------------
/kd-shop-ui/public/favicon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/print/plugin.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | *
7 | * Version: 5.0.16 (2019-09-24)
8 | */
9 | !function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),i=function(n){n.addCommand("mcePrint",function(){t.ie&&t.ie<=11?n.getDoc().execCommand("print",!1,null):n.getWin().print()})},e=function(n){n.ui.registry.addButton("print",{icon:"print",tooltip:"Print",onAction:function(){return n.execCommand("mcePrint")}}),n.ui.registry.addMenuItem("print",{text:"Print...",icon:"print",onAction:function(){return n.execCommand("mcePrint")}})};!function o(){n.add("print",function(n){i(n),e(n),n.addShortcut("Meta+P","","mcePrint")})}()}();
--------------------------------------------------------------------------------
/kd-shop-ui/public/element-plus-logo-small.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/OrdersMapper.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.mapper;
2 |
3 | import com.lvr.kdshop.pojo.Orders;
4 | import org.apache.ibatis.annotations.Param;
5 |
6 | import java.util.List;
7 |
8 | public interface OrdersMapper {
9 | /**
10 | * This method was generated by MyBatis Generator.
11 | * This method corresponds to the database table order
12 | *
13 | * @mbggenerated
14 | */
15 | int insert(Orders record);
16 |
17 | /**
18 | * This method was generated by MyBatis Generator.
19 | * This method corresponds to the database table order
20 | *
21 | * @mbggenerated
22 | */
23 | List selectAll();
24 |
25 |
26 | List selectOrdersByUserId(@Param("userId") Integer userId);
27 |
28 | Orders selectOrdersByGoodId(@Param("goodId") Integer goodId);
29 |
30 | Double getSpendByUserId(@Param("userId") String userId);
31 |
32 | Double getIncomeByUserId(@Param("userId") String userId);
33 | }
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/constant/StatusEnum.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.constant;
2 |
3 | public enum StatusEnum {
4 | FAIL(100, "失败"),
5 | SYSTEM_ERROR(101, "系统错误"),
6 | PARAM_ERROR(102, "参数错误"),
7 | EXCEED_MIN(103, "超过最小值"),
8 | EXCEED_MAX(104, "超过最大值"),
9 | EMPTY(105, "字段为空"),
10 | SUCCESS(200, "成功"),
11 | CREATED(201, "操作成功"),
12 | ACCEPTED(202, "已接收"),
13 | NOT_FOUND(203, "未找到"),
14 | NO_CONTENT(204, "没有内容"),
15 | TOKEN_IS_EXPIRED(401, "未登录或登录状态已过期"),
16 | UNAUTHORIZED(403, "未授权"),
17 | AUTHORIZATION_INVALID(301, "授权无效");
18 |
19 | /**
20 | * 响应状态码
21 | */
22 | private final int code;
23 |
24 | /**
25 | * 响应提示
26 | */
27 | private final String msg;
28 |
29 | StatusEnum(int code, String msg) {
30 | this.code = code;
31 | this.msg = msg;
32 | }
33 |
34 | public int getCode() {
35 | return code;
36 | }
37 |
38 | public String getMsg() {
39 | return msg;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/CatelogService.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service;
2 |
3 | import com.github.pagehelper.PageInfo;
4 | import com.lvr.kdshop.business.utils.PageRequest;
5 | import com.lvr.kdshop.business.utils.PageResult;
6 | import com.lvr.kdshop.pojo.Catelog;
7 |
8 | import java.util.HashMap;
9 | import java.util.List;
10 |
11 | public interface CatelogService {
12 |
13 | int deleteByPrimaryKey(Integer id);
14 |
15 | int insert(Catelog record);
16 |
17 | Catelog selectByPrimaryKey(Integer id);
18 |
19 | List selectAll();
20 |
21 | public PageResult findPage(String keyword, PageRequest pageRequest);
22 |
23 | int updateByPrimaryKey(Catelog record);
24 |
25 | List getAllCatelogByStatus(Byte status);
26 |
27 | HashMap getAllCatelogWithOptions();
28 |
29 | // int getCount(Catelog catelog);
30 |
31 | // int updateCatelogNum(Integer id, Integer number);
32 |
33 | List searchCatelogByName(String name);
34 | }
35 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/count.js:
--------------------------------------------------------------------------------
1 | layui.define(['jquery', 'element'], function(exports) {
2 | "use strict";
3 |
4 | var MOD_NAME = 'count';
5 |
6 | var count = new function() {
7 |
8 | this.up = function(targetEle, options) {
9 |
10 | options = options || {};
11 |
12 | var $this = document.getElementById(targetEle),
13 | time = options.time,
14 | finalNum = options.num,
15 | regulator = options.regulator,
16 | step = finalNum / (time / regulator),
17 | count = 0.00,
18 | initial = 0;
19 |
20 |
21 | var timer = setInterval(function() {
22 | count = count + step;
23 |
24 | if (count >= finalNum) {
25 | clearInterval(timer);
26 | count = finalNum;
27 | }
28 | //t未发生改变的话就直接返回
29 | //避免调用text函数,提高DOM性能
30 | var t = count.toFixed(options.bit?options.bit:0);;
31 |
32 | if (t == initial) return;
33 | initial = t;
34 | $this.innerHTML = initial;
35 | }, 30);
36 | }
37 |
38 | }
39 | exports(MOD_NAME, count);
40 | });
41 |
--------------------------------------------------------------------------------
/kd-shop-ui/src/styles/element/index.scss:
--------------------------------------------------------------------------------
1 | $--colors: (
2 | "primary": (
3 | "base": green,
4 | ),
5 | "success": (
6 | "base": #21ba45,
7 | ),
8 | "warning": (
9 | "base": #f2711c,
10 | ),
11 | "danger": (
12 | "base": #db2828,
13 | ),
14 | "error": (
15 | "base": #db2828,
16 | ),
17 | "info": (
18 | "base": #42b8dd,
19 | ),
20 | );
21 |
22 | // we can add this to custom namespace, default is 'el'
23 | @forward "element-plus/theme-chalk/src/mixins/config.scss" with (
24 | $namespace: "ep"
25 | );
26 |
27 | // You should use them in scss, because we calculate it by sass.
28 | // comment next lines to use default color
29 | @forward "element-plus/theme-chalk/src/common/var.scss" with (
30 | // do not use same name, it will override.
31 | $colors: $--colors,
32 | $button-padding-horizontal: ("default": 50px)
33 | );
34 |
35 | // if you want to import all
36 | // @use "element-plus/theme-chalk/src/index.scss" as *;
37 |
38 | // You can comment it to hide debug info.
39 | // @debug $--colors;
40 |
41 | // custom dark variables
42 | @use "./dark.scss";
43 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/layui/css/modules/code.css:
--------------------------------------------------------------------------------
1 | /** layui-v2.5.6 MIT License By https://www.layui.com */
2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide/content.mobile.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["ui/default/content.mobile.css"],"names":[],"mappings":";;;;;;AAMA,yEAEE,iBAAkB,MAClB,QAAS,aACT,QAAS,GACT,SAAU,SAEZ,KACE,yBAA0B,KAE5B,SAEE,UAAW,KAEb,eACE,UAAW,IAEb,KACE,YAAa,WAEf,MACE,gBAAiB","file":"content.mobile.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {\n /* Note: this file is used inside the content, so isn't part of theming */\n background-color: green;\n display: inline-block;\n opacity: 0.5;\n position: absolute;\n}\nbody {\n -webkit-text-size-adjust: none;\n}\nbody img {\n /* this is related to the content margin */\n max-width: 96vw;\n}\nbody table img {\n max-width: 95%;\n}\nbody {\n font-family: sans-serif;\n}\ntable {\n border-collapse: collapse;\n}\n"]}
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/default/content.min.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
8 | /*# sourceMappingURL=content.min.css.map */
9 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/ui/oxide-dark/content.mobile.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["ui/dark/content.mobile.css"],"names":[],"mappings":";;;;;;AAMA,yEAEE,iBAAkB,MAClB,QAAS,aACT,QAAS,GACT,SAAU,SAEZ,KACE,yBAA0B,KAE5B,SAEE,UAAW,KAEb,eACE,UAAW,IAEb,KACE,YAAa,WAEf,MACE,gBAAiB","file":"content.mobile.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {\n /* Note: this file is used inside the content, so isn't part of theming */\n background-color: green;\n display: inline-block;\n opacity: 0.5;\n position: absolute;\n}\nbody {\n -webkit-text-size-adjust: none;\n}\nbody img {\n /* this is related to the content margin */\n max-width: 96vw;\n}\nbody table img {\n max-width: 95%;\n}\nbody {\n font-family: sans-serif;\n}\ntable {\n border-collapse: collapse;\n}\n"]}
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/pear.js:
--------------------------------------------------------------------------------
1 | window.rootPath2 = (function(src) {
2 | src = document.scripts[document.scripts.length - 1].src;
3 | return src.substring(0, src.lastIndexOf("/") + 1);
4 | })();
5 |
6 | layui.config({
7 | base: rootPath2 + "module/",
8 | version: "3.6.8"
9 | }).extend({
10 | admin: "admin",
11 | menu: "menu",
12 | frame: "frame",
13 | tab: "tab",
14 | echarts: "echarts",
15 | echartsTheme: "echartsTheme",
16 | hash: "hash",
17 | document: "document",
18 | select: "select",
19 | drawer: "drawer",
20 | notice: "notice",
21 | step:"step",
22 | tag:"tag",
23 | popup:"popup",
24 | iconPicker:"iconPicker",
25 | treetable:"treetable",
26 | dtree:"dtree",
27 | area:"area",
28 | count:"count",
29 | topBar: "topBar",
30 | button: "button",
31 | design: "design",
32 | common: "common",
33 | eleTree: "eleTree",
34 | dictionary: 'dictionary',
35 | json: 'json',
36 | cropper:"cropper",
37 | yaml:"yaml",
38 | theme: "theme",
39 | message: "message" // 通知组件
40 | }).use(['layer', 'theme'], function () {
41 | layui.theme.changeTheme(window, false);
42 | });
43 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/pear.all.js:
--------------------------------------------------------------------------------
1 | window.rootPath = (function(src) {
2 | src = document.scripts[document.scripts.length - 1].src;
3 | return src.substring(0, src.lastIndexOf("/") + 1);
4 | })();
5 |
6 | layui.config({
7 | base: rootPath + "module/",
8 | version: "3.6.8"
9 | }).extend({
10 | admin: "admin",
11 | menu: "menu",
12 | frame: "frame",
13 | tab: "tab",
14 | echarts: "echarts",
15 | echartsTheme: "echartsTheme",
16 | hash: "hash",
17 | document: "document",
18 | select: "select",
19 | drawer: "drawer",
20 | notice: "notice",
21 | step:"step",
22 | tag:"tag",
23 | popup:"popup",
24 | iconPicker:"iconPicker",
25 | treetable:"treetable",
26 | dtree:"dtree",
27 | area:"area",
28 | count:"count",
29 | topBar: "topBar",
30 | button: "button",
31 | design: "design",
32 | common: "common",
33 | eleTree: "eleTree",
34 | dictionary: 'dictionary',
35 | json: 'json',
36 | cropper:"cropper",
37 | yaml: "yaml",
38 | theme: "theme",
39 | message: "message" // 通知组件
40 | }).use(['layer', 'theme'], function () {
41 | layui.theme.changeTheme(window, false);
42 | });
43 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/mybatis/mybatis-config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/writer/content.min.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
8 | /*# sourceMappingURL=content.min.css.map */
9 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/message.css:
--------------------------------------------------------------------------------
1 | .pear-notice .layui-this {
2 | color: #5FB878 !important;
3 | }
4 |
5 | .pear-notice li {
6 | border-right: 1px solid whitesmoke;
7 | }
8 |
9 | .pear-notice * {
10 | color: dimgray !important;
11 | }
12 |
13 | .pear-notice{
14 | width: 285px!important;
15 | }
16 |
17 | .pear-notice span{
18 | margin-left: 20px;
19 | font-size: 13px;
20 | }
21 |
22 | .pear-notice img{
23 | margin-left: 8px;
24 | width: 33px!important;
25 | height: 33px!important;
26 | border-radius: 50px;
27 | }
28 |
29 | .pear-notice-item{
30 | height: 45px!important;
31 | line-height: 45px!important;
32 | }
33 |
34 | .pear-notice .layui-tab-title{
35 | border: whitesmoke;
36 | }
37 |
38 |
39 | /** 滚动条样式 */
40 | .pear-notice *::-webkit-scrollbar{width:0px;height:0px;}
41 | .pear-notice *::-webkit-scrollbar-track{background: white;border-radius:2px;}
42 | .pear-notice *::-webkit-scrollbar-thumb{background: #E6E6E6;border-radius:2px;}
43 | .pear-notice *::-webkit-scrollbar-thumb:hover{background: #E6E6E6;}
44 | .pear-notice *::-webkit-scrollbar-corner{background: #f6f6f6;}
45 |
46 |
47 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/UserService.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service;
2 |
3 |
4 | import com.lvr.kdshop.pojo.SysUser;
5 |
6 | import java.util.List;
7 |
8 | public interface UserService {
9 |
10 | int deleteByPrimaryKey(String id);
11 |
12 | int insert(SysUser record);
13 |
14 | SysUser selectByPrimaryKey(String id);
15 |
16 | List selectAll();
17 |
18 | int updateByPrimaryKey(SysUser record);
19 |
20 | int updateLastLoginByPrimaryKey(SysUser record);
21 |
22 | int updateByPrimaryKeySelective(SysUser record);
23 |
24 | /**
25 | * 通过用户名查询用户
26 | *
27 | * @param userName 用户名
28 | * @return 用户对象信息
29 | */
30 | public SysUser selectUserByUserName(String userName);
31 |
32 | SysUser getUserByPhone(String phone);
33 |
34 | List getUserList();
35 |
36 | int updateImgUrl(String id, String url);
37 |
38 | Integer checkUserByPhone(String phone);
39 |
40 | int updatePasswordByPrimaryKey(Integer uid, String password);
41 |
42 | List searchUserByNameOrPhone(String name, String phone);
43 | }
44 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/button.js:
--------------------------------------------------------------------------------
1 | layui.define(['jquery', 'element', 'util'], function(exports) {
2 | "use strict";
3 |
4 | var MOD_NAME = 'button',
5 | $ = layui.jquery,
6 | util = layui.util,
7 | element = layui.element;
8 |
9 | var button = function(opt) {
10 | this.option = opt;
11 | };
12 |
13 | button.prototype.load = function(opt) {
14 | //默认配置值
15 | var option = {
16 | elem: opt.elem,
17 | time: opt.time ? opt.time : false,
18 | done: opt.done ? opt.done : function(){}
19 | }
20 | var load = $(option.elem).text();
21 | $(option.elem).html("");
22 | var buttons = $(option.elem);
23 | if (option.time == "") {
24 | } else {
25 | setTimeout(function() {
26 | buttons.html(load);
27 | option.done();
28 | }, option.time);
29 | }
30 | option.text = load;
31 | return new button(option);
32 | }
33 |
34 | button.prototype.stop = function(success) {
35 | $(this.option.elem).html(this.option.text);
36 | success();
37 | }
38 |
39 | exports(MOD_NAME, new button());
40 | });
41 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/util/JSONResult.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.util;
2 |
3 | import com.lvr.kdshop.constant.StatusEnum;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | @Data
9 | @NoArgsConstructor
10 | @AllArgsConstructor
11 | public class JSONResult {
12 | private int code;
13 | private String msg;
14 | private Object data;
15 |
16 | /**
17 | * 成功
18 | * @return
19 | */
20 | public static JSONResult success(String msg) {
21 | return new JSONResult(StatusEnum.SUCCESS.getCode(), msg,null);
22 | }
23 |
24 | public static JSONResult success(String message, Object obj) {
25 | return new JSONResult(StatusEnum.SUCCESS.getCode(), message, obj);
26 | }
27 |
28 | /**
29 | * 失败
30 | * @param message
31 | * @return
32 | */
33 | public static JSONResult fail(int code, String message) {
34 | return new JSONResult(code, message, null);
35 | }
36 | public static JSONResult fail(int code, String message, Object obj) {
37 | return new JSONResult(code, message, obj);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/java/com/lvr/kdshop/web/config/locale/MyLocaleResolver.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.web.config.locale;
2 |
3 | import org.apache.commons.lang3.StringUtils;
4 | import org.springframework.web.servlet.LocaleResolver;
5 |
6 | import javax.servlet.http.HttpServletRequest;
7 | import javax.servlet.http.HttpServletResponse;
8 | import java.util.Locale;
9 |
10 | public class MyLocaleResolver implements LocaleResolver {
11 | @Override
12 | public Locale resolveLocale(HttpServletRequest request) {
13 | //获取请求中的参数
14 | String language = request.getParameter("l");
15 |
16 | //获取默认的
17 | Locale locale = Locale.getDefault();
18 |
19 | //解析获取到的参数
20 | if (!StringUtils.isEmpty(language)){ //如果language这个不是空的
21 | //开始解析 zh_CN
22 | String[] s = language.split("_");
23 | //如果获取到参数就使用获取到的参数
24 | return new Locale(s[0],s[1]);
25 | }
26 | //如果没有获取到参数就是用默认的参数
27 | return locale;
28 | }
29 |
30 | @Override
31 | public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) {
32 |
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/popup.js:
--------------------------------------------------------------------------------
1 | layui.define(['layer', 'jquery', 'element'], function(exports) {
2 | "use strict";
3 |
4 | var MOD_NAME = 'popup',
5 | $ = layui.jquery,
6 | layer = layui.layer,
7 | element = layui.element;
8 |
9 | var popup = new function() {
10 |
11 | this.success = function(msg) {
12 | layer.msg(msg, {
13 | icon: 1,
14 | time: 1000
15 | })
16 | },
17 | this.failure = function(msg) {
18 | layer.msg(msg, {
19 | icon: 2,
20 | time: 1000
21 | })
22 | },
23 | this.warning = function(msg) {
24 | layer.msg(msg, {
25 | icon: 3,
26 | time: 1000
27 | })
28 | },
29 | this.success = function(msg, callback) {
30 | layer.msg(msg, {
31 | icon: 1,
32 | time: 1000
33 | }, callback);
34 | },
35 | this.failure = function(msg, callback) {
36 | layer.msg(msg, {
37 | icon: 2,
38 | time: 1000
39 | }, callback);
40 | },
41 | this.warning = function(msg, callback) {
42 | layer.msg(msg, {
43 | icon: 3,
44 | time: 1000
45 | }, callback);
46 | }
47 | };
48 | exports(MOD_NAME, popup);
49 | })
50 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/css/signin.css:
--------------------------------------------------------------------------------
1 | html,
2 | body {
3 | height: 100%;
4 | }
5 |
6 | body {
7 | display: -ms-flexbox;
8 | display: -webkit-box;
9 | display: flex;
10 | -ms-flex-align: center;
11 | -ms-flex-pack: center;
12 | -webkit-box-align: center;
13 | align-items: center;
14 | -webkit-box-pack: center;
15 | justify-content: center;
16 | padding-top: 40px;
17 | padding-bottom: 40px;
18 | /*background-color: #f5f5f5;*/
19 | }
20 |
21 | .form-signin {
22 | width: 100%;
23 | max-width: 330px;
24 | padding: 15px;
25 | margin: 0 auto;
26 | }
27 | .form-signin .checkbox {
28 | font-weight: 400;
29 | }
30 | .form-signin .form-control {
31 | position: relative;
32 | box-sizing: border-box;
33 | height: auto;
34 | padding: 10px;
35 | font-size: 16px;
36 | }
37 | .form-signin .form-control:focus {
38 | z-index: 2;
39 | }
40 | .form-signin input[type="email"] {
41 | margin-bottom: -1px;
42 | border-bottom-right-radius: 0;
43 | border-bottom-left-radius: 0;
44 | }
45 | .form-signin input[type="password"] {
46 | margin-bottom: 10px;
47 | border-top-left-radius: 0;
48 | border-top-right-radius: 0;
49 | }
50 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/img/bootstrap-solid.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/document/content.min.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | @media screen{html{background:#f4f4f4}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table td,table th{border:1px solid #ccc;padding:.4rem}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
8 | /*# sourceMappingURL=content.min.css.map */
9 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/layui/lay/modules/code.js:
--------------------------------------------------------------------------------
1 | /** layui-v2.5.6 MIT License By https://www.layui.com */
2 | ;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('- '+o.replace(/[\r\t\n]+/g,"
- ")+"
"),c.find(">.layui-code-h3")[0]||c.prepend(''+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"
");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss");
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/dark/content.min.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table td,table th{border:1px solid #6d737b;padding:.4rem}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}td[data-mce-selected],th[data-mce-selected]{color:#333}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem}
8 | /*# sourceMappingURL=content.min.css.map */
9 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/css/pear.all.css:
--------------------------------------------------------------------------------
1 | @import url("../../layui/css/layui.css");
2 |
3 | @import url("pear-module/dtree/font/dtreefont.css");
4 | @import url("pear-module/icon/iconfont.css");
5 | @import url("pear-module/dtree/dtree.css");
6 | @import url("pear-module/iconPicker.css");
7 | @import url("pear-module/eleTree.css");
8 | @import url("pear-module/cropper.css");
9 | @import url("pear-module/message.css");
10 | @import url("pear-module/treetable.css");
11 | @import url("pear-module/topBar.css");
12 | @import url("pear-module/select.css");
13 | @import url("pear-module/layout.css");
14 | @import url("pear-module/notice.css");
15 | @import url("pear-module/button.css");
16 | @import url("pear-module/table.css");
17 | @import url("pear-module/frame.css");
18 | @import url("pear-module/layer.css");
19 | @import url("pear-module/menu.css");
20 | @import url("pear-module/form.css");
21 | @import url("pear-module/link.css");
22 | @import url("pear-module/form.css");
23 | @import url("pear-module/code.css");
24 | @import url("pear-module/link.css");
25 | @import url("pear-module/json.css");
26 | @import url("pear-module/step.css");
27 | @import url("pear-module/tab.css");
28 | @import url("pear-module/tag.css");
29 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/css/pear.css:
--------------------------------------------------------------------------------
1 | @import url("../../layui/css/layui.css");
2 |
3 | @import url("pear-module/dtree/font/dtreefont.css");
4 | @import url("pear-module/icon/iconfont.css");
5 | @import url("pear-module/dtree/dtree.css");
6 | @import url("pear-module/iconPicker.css");
7 | @import url("pear-module/eleTree.css");
8 | @import url("pear-module/cropper.css");
9 | @import url("pear-module/message.css");
10 | @import url("pear-module/treetable.css");
11 | @import url("pear-module/topBar.css");
12 | @import url("pear-module/select.css");
13 | @import url("pear-module/layout.css");
14 | @import url("pear-module/notice.css");
15 | @import url("pear-module/button.css");
16 | @import url("pear-module/table.css");
17 | @import url("pear-module/frame.css");
18 | @import url("pear-module/layer.css");
19 | @import url("pear-module/menu.css");
20 | @import url("pear-module/form.css");
21 | @import url("pear-module/link.css");
22 | @import url("pear-module/form.css");
23 | @import url("pear-module/code.css");
24 | @import url("pear-module/link.css");
25 | @import url("pear-module/json.css");
26 | @import url("pear-module/step.css");
27 | @import url("pear-module/tab.css");
28 | @import url("pear-module/tag.css");
29 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/pojo/ReportExtend.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.pojo;
2 |
3 | import java.util.List;
4 |
5 | public class ReportExtend {
6 | private Report report;
7 | private Goods goods;
8 | private List images;
9 | private SysUser user;
10 |
11 | public ReportExtend() {
12 | }
13 |
14 | public ReportExtend(Report report, Goods goods, List images, SysUser user) {
15 | this.report = report;
16 | this.goods = goods;
17 | this.images = images;
18 | this.user = user;
19 | }
20 |
21 | public Report getReport() {
22 | return report;
23 | }
24 |
25 | public void setReport(Report report) {
26 | this.report = report;
27 | }
28 |
29 | public Goods getGoods() {
30 | return goods;
31 | }
32 |
33 | public void setGoods(Goods goods) {
34 | this.goods = goods;
35 | }
36 |
37 | public List getImages() {
38 | return images;
39 | }
40 |
41 | public void setImages(List images) {
42 | this.images = images;
43 | }
44 |
45 | public SysUser getUser() {
46 | return user;
47 | }
48 |
49 | public void setUser(SysUser user) {
50 | this.user = user;
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/pojo/SysUser.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.pojo;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Data;
5 | import lombok.NoArgsConstructor;
6 |
7 | import java.util.List;
8 |
9 | @Data
10 | @AllArgsConstructor
11 | @NoArgsConstructor
12 | public class SysUser {
13 |
14 | private Integer id;
15 |
16 | private String userId;
17 |
18 | private String phone;
19 |
20 | private String username;
21 |
22 | private String password;
23 |
24 | private String createAt;
25 |
26 | private String lastLogin;
27 |
28 | private Byte status;
29 |
30 | private String birthday;
31 |
32 | private String sex;
33 |
34 | private String imgUrl;
35 |
36 | private String residence;
37 |
38 | private String signature;
39 |
40 | private String roleId;
41 |
42 | /** 角色对象 */
43 | private List roles;
44 |
45 | public SysUser(String userId, String username) {
46 | this.userId = userId;
47 | this.username = username;
48 | }
49 |
50 | public String getPhone() {
51 | if(this.phone != null && this.phone != ""){
52 | this.phone = this.phone.replaceAll("(\\w{3})\\w*(\\w{4})", "$1****$2");
53 | }
54 | return this.phone;
55 | }
56 |
57 | }
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/pojo/CatelogExtend.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.pojo;
2 |
3 | import java.util.List;
4 |
5 | public class CatelogExtend {
6 | private Goods goods;
7 | private Catelog catelog;
8 | private SysUser user;
9 | private List images;
10 |
11 | public CatelogExtend() {
12 | }
13 |
14 | public CatelogExtend(Goods goods, Catelog catelog, SysUser user, List images) {
15 | this.goods = goods;
16 | this.catelog = catelog;
17 | this.user = user;
18 | this.images = images;
19 | }
20 |
21 | public Goods getGoods() {
22 | return goods;
23 | }
24 |
25 | public void setGoods(Goods goods) {
26 | this.goods = goods;
27 | }
28 |
29 | public Catelog getCatelog() {
30 | return catelog;
31 | }
32 |
33 | public void setCatelog(Catelog catelog) {
34 | this.catelog = catelog;
35 | }
36 |
37 | public SysUser getUser() {
38 | return user;
39 | }
40 |
41 | public void setUser(SysUser user) {
42 | this.user = user;
43 | }
44 |
45 | public List getImages() {
46 | return images;
47 | }
48 |
49 | public void setImages(List images) {
50 | this.images = images;
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/resources/mapper/RoleMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | select distinct r.id, r.role_id, r.role_name, r.commet, r.create_date
16 | from roles r
17 | left join user_role ur on ur.role_id = r.role_id
18 | left join user u on u.user_id = ur.user_id
19 |
20 |
21 |
22 |
26 |
27 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/common/FieldFill.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.common;/*
2 | * Copyright (c) 2011-2021, baomidou (jobob@qq.com).
3 | *
4 | * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | /**
18 | * 字段填充策略枚举类
19 | *
20 | *
21 | * 判断注入的 insert 和 update 的 sql 脚本是否在对应情况下忽略掉字段的 if 标签生成
22 | * ......
23 | * 判断优先级比 {@link FieldStrategy} 高
24 | *
25 | *
26 | * @author hubin
27 | * @since 2017-06-27
28 | */
29 | public enum FieldFill {
30 | /**
31 | * 默认不处理
32 | */
33 | DEFAULT,
34 | /**
35 | * 插入时填充字段
36 | */
37 | INSERT,
38 | /**
39 | * 更新时填充字段
40 | */
41 | UPDATE,
42 | /**
43 | * 插入和更新时填充字段
44 | */
45 | INSERT_UPDATE
46 | }
47 |
--------------------------------------------------------------------------------
/kd-shop-ui/src/store/user.ts:
--------------------------------------------------------------------------------
1 | import { defineStore } from "pinia";
2 | import { Login } from "~/api/user";
3 | import { RequestData } from "~/types/user_type";
4 |
5 | export const useUserStore = defineStore("user", {
6 | state: () => ({
7 | username: "",
8 | role: 'STUDENT',
9 | }),
10 | getters: {
11 |
12 | },
13 | actions: {
14 | //执行登录请求
15 | LoginAction(requestData: RequestData) {
16 | return new Promise((resolve) => {
17 | Login(requestData).then((res) => {
18 | resolve(res)
19 | }).catch(err => {
20 | resolve(err)
21 | })
22 | });
23 | },
24 | testlogin(requestData: RequestData) {
25 | let res: any;
26 | if(requestData.username === '13212341234' && requestData.password === '123456aa') {
27 | this.username = requestData.username
28 | this.role = 'STUDENT'
29 | res = { code: 200, msg: '登录成功', role: 'STUDENT' }
30 | } else {
31 | res = { code: 400, msg: '账号或密码错误' }
32 | }
33 | return new Promise((resolve) => {
34 | resolve(res)
35 | })
36 |
37 | }
38 | },
39 | });
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/code/plugin.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | *
7 | * Version: 5.0.16 (2019-09-24)
8 | */
9 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e,n){e.focus(),e.undoManager.transact(function(){e.setContent(n)}),e.selection.setCursorLocation(),e.nodeChanged()},o=function(e){return e.getContent({source_view:!0})},n=function(n){var e=o(n);n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){t(n,e.getData().code),e.close()}})},c=function(e){e.addCommand("mceCodeEditor",function(){n(e)})},i=function(e){e.ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:function(){return n(e)}}),e.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:function(){return n(e)}})};!function u(){e.add("code",function(e){return c(e),i(e),{}})}()}();
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/util/MD5.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.util;
2 |
3 | import java.security.MessageDigest;
4 |
5 | /**
6 | * MD5加密类
7 | * @描述:密码加密
8 | *
9 | */
10 | public final class MD5 {
11 |
12 | /**
13 | * Md5加密
14 | * @param s
15 | * @return
16 | */
17 | public final static String md5(String s) {
18 | char hexDigits[] = { '0', '1', '2', '3', '4',
19 | '5', '6', '7', '8', '9',
20 | 'A', 'B', 'C', 'D', 'E', 'F'};
21 | try {
22 | byte[] btInput = s.getBytes();
23 | MessageDigest mdInst = MessageDigest.getInstance("MD5");
24 | mdInst.update(btInput);
25 | byte[] md = mdInst.digest();
26 | int j = md.length;
27 | char str[] = new char[j * 2];
28 | int k = 0;
29 | for (int i = 0; i < j; i++) {
30 | byte byte0 = md[i];
31 | str[k++] = hexDigits[byte0 >>> 4 & 0xf];
32 | str[k++] = hexDigits[byte0 & 0xf];
33 | }
34 | return new String(str);
35 | }
36 | catch (Exception e) {
37 | e.printStackTrace();
38 | return null;
39 | }
40 | }
41 |
42 | public static void main(String[] args) {
43 | System.out.println(MD5.md5("111111"));
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/ReplyMapper.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.mapper;
2 |
3 |
4 | import com.lvr.kdshop.pojo.Reply;
5 |
6 | import java.util.List;
7 |
8 | public interface ReplyMapper {
9 | /**
10 | * This method was generated by MyBatis Generator.
11 | * This method corresponds to the database table reply
12 | *
13 | * @mbggenerated
14 | */
15 | int deleteByPrimaryKey(Integer id);
16 |
17 | /**
18 | * This method was generated by MyBatis Generator.
19 | * This method corresponds to the database table reply
20 | *
21 | * @mbggenerated
22 | */
23 | int insert(Reply record);
24 |
25 | /**
26 | * This method was generated by MyBatis Generator.
27 | * This method corresponds to the database table reply
28 | *
29 | * @mbggenerated
30 | */
31 | Reply selectByPrimaryKey(Integer id);
32 |
33 | /**
34 | * This method was generated by MyBatis Generator.
35 | * This method corresponds to the database table reply
36 | *
37 | * @mbggenerated
38 | */
39 | List selectAll();
40 |
41 | /**
42 | * This method was generated by MyBatis Generator.
43 | * This method corresponds to the database table reply
44 | *
45 | * @mbggenerated
46 | */
47 | int updateByPrimaryKey(Reply record);
48 | }
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | org.springframework.boot
7 | spring-boot-starter-parent
8 | 2.5.2
9 |
10 |
11 |
12 | com.lvr
13 | kd-shop
14 | 0.0.1-SNAPSHOT
15 |
16 | kd-shop
17 | 科大二手工坊2.0
18 | pom
19 |
20 |
21 | 1.8
22 |
23 |
24 |
25 |
26 | org.projectlombok
27 | lombok
28 | 1.18.20
29 | provided
30 |
31 |
32 |
33 |
34 |
35 | kd-shop-web
36 | kd-shop-common
37 | kd-shop-business
38 |
39 |
40 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/NoticeMapper.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.mapper;
2 |
3 | import com.lvr.kdshop.pojo.Notice;
4 |
5 | import java.util.List;
6 |
7 | public interface NoticeMapper {
8 | /**
9 | * This method was generated by MyBatis Generator.
10 | * This method corresponds to the database table notice
11 | *
12 | * @mbggenerated
13 | */
14 | int deleteByPrimaryKey(Integer id);
15 |
16 | /**
17 | * This method was generated by MyBatis Generator.
18 | * This method corresponds to the database table notice
19 | *
20 | * @mbggenerated
21 | */
22 | int insert(Notice record);
23 |
24 | /**
25 | * This method was generated by MyBatis Generator.
26 | * This method corresponds to the database table notice
27 | *
28 | * @mbggenerated
29 | */
30 | Notice selectByPrimaryKey(Integer id);
31 |
32 | /**
33 | * This method was generated by MyBatis Generator.
34 | * This method corresponds to the database table notice
35 | *
36 | * @mbggenerated
37 | */
38 | List selectAll();
39 |
40 | /**
41 | * This method was generated by MyBatis Generator.
42 | * This method corresponds to the database table notice
43 | *
44 | * @mbggenerated
45 | */
46 | int updateByPrimaryKey(Notice record);
47 | }
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/default/content.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | body {
8 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
9 | line-height: 1.4;
10 | margin: 1rem;
11 | }
12 | table {
13 | border-collapse: collapse;
14 | }
15 | table th,
16 | table td {
17 | border: 1px solid #ccc;
18 | padding: 0.4rem;
19 | }
20 | figure {
21 | display: table;
22 | margin: 1rem auto;
23 | }
24 | figure figcaption {
25 | color: #999;
26 | display: block;
27 | margin-top: 0.25rem;
28 | text-align: center;
29 | }
30 | hr {
31 | border-color: #ccc;
32 | border-style: solid;
33 | border-width: 1px 0 0 0;
34 | }
35 | code {
36 | background-color: #e8e8e8;
37 | border-radius: 3px;
38 | padding: 0.1rem 0.2rem;
39 | }
40 | .mce-content-body:not([dir=rtl]) blockquote {
41 | border-left: 2px solid #ccc;
42 | margin-left: 1.5rem;
43 | padding-left: 1rem;
44 | }
45 | .mce-content-body[dir=rtl] blockquote {
46 | border-right: 2px solid #ccc;
47 | margin-right: 1.5rem;
48 | padding-right: 1rem;
49 | }
50 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/writer/content.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | body {
8 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
9 | line-height: 1.4;
10 | margin: 1rem auto;
11 | max-width: 900px;
12 | }
13 | table {
14 | border-collapse: collapse;
15 | }
16 | table th,
17 | table td {
18 | border: 1px solid #ccc;
19 | padding: 0.4rem;
20 | }
21 | figure {
22 | display: table;
23 | margin: 1rem auto;
24 | }
25 | figure figcaption {
26 | color: #999;
27 | display: block;
28 | margin-top: 0.25rem;
29 | text-align: center;
30 | }
31 | hr {
32 | border-color: #ccc;
33 | border-style: solid;
34 | border-width: 1px 0 0 0;
35 | }
36 | code {
37 | background-color: #e8e8e8;
38 | border-radius: 3px;
39 | padding: 0.1rem 0.2rem;
40 | }
41 | .mce-content-body:not([dir=rtl]) blockquote {
42 | border-left: 2px solid #ccc;
43 | margin-left: 1.5rem;
44 | padding-left: 1rem;
45 | }
46 | .mce-content-body[dir=rtl] blockquote {
47 | border-right: 2px solid #ccc;
48 | margin-right: 1.5rem;
49 | padding-right: 1rem;
50 | }
51 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/templates/commons/include.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/ex/ServiceException.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.ex;
2 |
3 | public class ServiceException extends RuntimeException {
4 | private static final long serialVersionUID = 1L;
5 |
6 | /**
7 | * 错误码
8 | */
9 | private Integer code;
10 |
11 | /**
12 | * 错误提示
13 | */
14 | private String message;
15 |
16 | /**
17 | * 错误明细,内部调试错误
18 | *
19 | */
20 | private String detailMessage;
21 |
22 | /**
23 | * 空构造方法,避免反序列化问题
24 | */
25 | public ServiceException()
26 | {
27 | }
28 |
29 | public ServiceException(String message)
30 | {
31 | this.message = message;
32 | }
33 |
34 | public ServiceException(String message, Integer code)
35 | {
36 | this.message = message;
37 | this.code = code;
38 | }
39 |
40 | public String getDetailMessage()
41 | {
42 | return detailMessage;
43 | }
44 |
45 | public String getMessage()
46 | {
47 | return message;
48 | }
49 |
50 | public Integer getCode()
51 | {
52 | return code;
53 | }
54 |
55 | public ServiceException setMessage(String message)
56 | {
57 | this.message = message;
58 | return this;
59 | }
60 |
61 | public ServiceException setDetailMessage(String detailMessage)
62 | {
63 | this.detailMessage = detailMessage;
64 | return this;
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/json.css:
--------------------------------------------------------------------------------
1 | /* Root element */
2 | .json-document {
3 | padding: 1em 2em;
4 | }
5 |
6 | /* Syntax highlighting for JSON objects */
7 | ul.json-dict, ol.json-array {
8 | list-style-type: none;
9 | margin: 0 0 0 1px;
10 | border-left: 1px dotted #ccc;
11 | padding-left: 2em;
12 | }
13 | .json-string {
14 | color: #0B7500;
15 | }
16 | .json-literal {
17 | color: #1A01CC;
18 | font-weight: bold;
19 | }
20 |
21 | /* Toggle button */
22 | a.json-toggle {
23 | position: relative;
24 | color: inherit;
25 | text-decoration: none;
26 | }
27 | a.json-toggle:focus {
28 | outline: none;
29 | }
30 | a.json-toggle:before {
31 | font-size: 1.1em;
32 | color: #c0c0c0;
33 | content: "\25BC"; /* down arrow */
34 | position: absolute;
35 | display: inline-block;
36 | width: 1em;
37 | text-align: center;
38 | line-height: 1em;
39 | left: -1.2em;
40 | }
41 | a.json-toggle:hover:before {
42 | color: #aaa;
43 | }
44 | a.json-toggle.collapsed:before {
45 | /* Use rotated down arrow, prevents right arrow appearing smaller than down arrow in some browsers */
46 | transform: rotate(-90deg);
47 | }
48 |
49 | /* Collapsable placeholder links */
50 | a.json-placeholder {
51 | color: #aaa;
52 | padding: 0 1em;
53 | text-decoration: none;
54 | }
55 | a.json-placeholder:hover {
56 | text-decoration: underline;
57 | }
58 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/OrdersServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service.impl;
2 |
3 | import com.lvr.kdshop.business.mapper.OrdersMapper;
4 | import com.lvr.kdshop.business.service.OrdersService;
5 | import com.lvr.kdshop.pojo.Orders;
6 | import org.springframework.stereotype.Service;
7 |
8 | import javax.annotation.Resource;
9 | import java.util.List;
10 |
11 |
12 | @Service("ordersService")
13 | public class OrdersServiceImpl implements OrdersService {
14 |
15 | @Resource
16 | private OrdersMapper ordersMapper;
17 |
18 | @Override
19 | public int insert(Orders record) {
20 | return ordersMapper.insert(record);
21 | }
22 |
23 | @Override
24 | public List selectAll() {
25 | return ordersMapper.selectAll();
26 | }
27 |
28 | @Override
29 | public List selectOrdersByUserId(Integer userId) {
30 | return ordersMapper.selectOrdersByUserId(userId);
31 | }
32 |
33 | @Override
34 | public Orders selectOrdersByGoodId(Integer goodId) {
35 | return ordersMapper.selectOrdersByGoodId(goodId);
36 | }
37 |
38 | @Override
39 | public Double getSpendByUserId(String userId) {
40 | return ordersMapper.getSpendByUserId(userId);
41 | }
42 |
43 | @Override
44 | public Double getIncomeByUserId(String userId) {
45 | return ordersMapper.getIncomeByUserId(userId);
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/ImageServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service.impl;
2 |
3 | import com.lvr.kdshop.business.mapper.ImageMapper;
4 | import com.lvr.kdshop.business.service.ImageService;
5 | import com.lvr.kdshop.pojo.Image;
6 | import org.springframework.stereotype.Service;
7 |
8 | import javax.annotation.Resource;
9 | import java.util.List;
10 |
11 | @Service("imageService")
12 | public class ImageServiceImpl implements ImageService {
13 |
14 | @Resource
15 | private ImageMapper imageMapper;
16 |
17 | public int deleteByPrimaryKey(Integer id) {
18 | return imageMapper.deleteByPrimaryKey(id);
19 | }
20 |
21 | public int insert(Image record) {
22 | return imageMapper.insert(record);
23 | }
24 |
25 | public Image selectByPrimaryKey(Integer id) {
26 | return imageMapper.selectByPrimaryKey(id);
27 | }
28 |
29 | public List selectAll() {
30 | return imageMapper.selectAll();
31 | }
32 |
33 | public int updateByPrimaryKey(Image record) {
34 | return imageMapper.updateByPrimaryKey(record);
35 | }
36 |
37 | public List selectByGoodsPrimaryKey(Integer goods_id) {
38 | return imageMapper.selectByGoodsPrimaryKey(goods_id);
39 | }
40 |
41 | public int deleteImagesByGoodsPrimaryKey(Integer goods_id) {
42 | return imageMapper.deleteImagesByGoodsPrimaryKey(goods_id);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/kd-shop-ui/public/vite.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/kd-shop-ui/src/assets/images/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/ReportService.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service;
2 |
3 |
4 | import com.lvr.kdshop.pojo.Report;
5 |
6 | import java.util.List;
7 |
8 | public interface ReportService {
9 | /**
10 | * This method was generated by MyBatis Generator.
11 | * This method corresponds to the database table reply
12 | *
13 | * @mbggenerated
14 | */
15 | int deleteByPrimaryKey(Integer id);
16 |
17 | /**
18 | * This method was generated by MyBatis Generator.
19 | * This method corresponds to the database table reply
20 | *
21 | * @mbggenerated
22 | */
23 | int insert(Report record);
24 |
25 | int insertForFeedback(Report record);
26 |
27 | /**
28 | * This method was generated by MyBatis Generator.
29 | * This method corresponds to the database table reply
30 | *
31 | * @mbggenerated
32 | */
33 | Report selectByPrimaryKey(Integer id);
34 |
35 | /**
36 | * This method was generated by MyBatis Generator.
37 | * This method corresponds to the database table reply
38 | *
39 | * @mbggenerated
40 | */
41 | List selectAll();
42 |
43 | /**
44 | * This method was generated by MyBatis Generator.
45 | * This method corresponds to the database table reply
46 | *
47 | * @mbggenerated
48 | */
49 | int updateByPrimaryKey(Report record);
50 |
51 | List selectReportByGoodsPrimaryKey(Integer gid);
52 | }
53 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/ImageService.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service;
2 |
3 |
4 | import com.lvr.kdshop.pojo.Image;
5 |
6 | import java.util.List;
7 |
8 | public interface ImageService {
9 |
10 | /**
11 | * This method was generated by MyBatis Generator.
12 | * This method corresponds to the database table image
13 | *
14 | * @mbggenerated
15 | */
16 | int deleteByPrimaryKey(Integer id);
17 |
18 | /**
19 | * This method was generated by MyBatis Generator.
20 | * This method corresponds to the database table image
21 | *
22 | * @mbggenerated
23 | */
24 | int insert(Image record);
25 |
26 | /**
27 | * This method was generated by MyBatis Generator.
28 | * This method corresponds to the database table image
29 | *
30 | * @mbggenerated
31 | */
32 | Image selectByPrimaryKey(Integer id);
33 |
34 | /**
35 | * This method was generated by MyBatis Generator.
36 | * This method corresponds to the database table image
37 | *
38 | * @mbggenerated
39 | */
40 | List selectAll();
41 |
42 | /**
43 | * This method was generated by MyBatis Generator.
44 | * This method corresponds to the database table image
45 | *
46 | * @mbggenerated
47 | */
48 | int updateByPrimaryKey(Image record);
49 |
50 | List selectByGoodsPrimaryKey(Integer goods_id);
51 |
52 | int deleteImagesByGoodsPrimaryKey(Integer goods_id);
53 | }
54 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/tag.css:
--------------------------------------------------------------------------------
1 | .input-new-tag {
2 | width: 90px;
3 | }
4 |
5 | .input-new-tag input {
6 | height: 100%!important;
7 | border: none;
8 | padding-left: 0px;
9 | }
10 |
11 | .tag .layui-btn .tag-close:hover {
12 | border-radius: 2px;
13 | color: #fff;
14 | }
15 |
16 | .tag .layui-btn .tag-close {
17 | margin-left: 8px;
18 | transition: all .2s;
19 | -webkit-transition: all .2s;
20 | }
21 | .tag-item {
22 | background-color: #5FB878;
23 | color: white;
24 | border: none;
25 | }
26 |
27 | .tag-item:hover {
28 |
29 | color: white;
30 |
31 | }
32 |
33 | .tag-item-normal {
34 | background-color: #5FB878;
35 | color: white;
36 | border: none;
37 | }
38 |
39 | .tag-item-warm {
40 | background-color: #f6ad55;
41 | color: white;
42 | border: none;
43 | }
44 |
45 | .tag-item-danger {
46 | background-color: #f56c6c;
47 | color: white;
48 | border: none;
49 | }
50 |
51 | .tag-item-dark {
52 | background-color: #525252;
53 | color: white;
54 | border: none;
55 | }
56 |
57 | .tag-item-primary {
58 | background-color: white !important;
59 | color: dimgray;
60 | border: 1px solid dimgray;
61 | }
62 |
63 | .tag-item-normal:hover {
64 |
65 | color: white !important;
66 | }
67 |
68 | .tag-item-warm:hover {
69 |
70 | color: white;
71 | }
72 |
73 | .tag-item-danger:hover {
74 |
75 | color: white;
76 | }
77 |
78 | .tag-item-dark:hover {
79 |
80 | color: white;
81 | }
82 |
83 | .tag-item-primary:hover {
84 | color: dimgray;
85 | border: 1px solid dimgray;
86 | }
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/document/content.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | @media screen {
8 | html {
9 | background: #f4f4f4;
10 | }
11 | }
12 | body {
13 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
14 | }
15 | @media screen {
16 | body {
17 | background-color: #fff;
18 | box-shadow: 0 0 4px rgba(0, 0, 0, 0.15);
19 | box-sizing: border-box;
20 | margin: 1rem auto 0;
21 | max-width: 820px;
22 | min-height: calc(100vh - 1rem);
23 | padding: 4rem 6rem 6rem 6rem;
24 | }
25 | }
26 | table {
27 | border-collapse: collapse;
28 | }
29 | table th,
30 | table td {
31 | border: 1px solid #ccc;
32 | padding: 0.4rem;
33 | }
34 | figure figcaption {
35 | color: #999;
36 | margin-top: 0.25rem;
37 | text-align: center;
38 | }
39 | hr {
40 | border-color: #ccc;
41 | border-style: solid;
42 | border-width: 1px 0 0 0;
43 | }
44 | .mce-content-body:not([dir=rtl]) blockquote {
45 | border-left: 2px solid #ccc;
46 | margin-left: 1.5rem;
47 | padding-left: 1rem;
48 | }
49 | .mce-content-body[dir=rtl] blockquote {
50 | border-right: 2px solid #ccc;
51 | margin-right: 1.5rem;
52 | padding-right: 1rem;
53 | }
54 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/ImageMapper.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.mapper;
2 |
3 | import com.lvr.kdshop.pojo.Image;
4 | import org.apache.ibatis.annotations.Param;
5 |
6 | import java.util.List;
7 |
8 | public interface ImageMapper {
9 | /**
10 | * This method was generated by MyBatis Generator.
11 | * This method corresponds to the database table image
12 | *
13 | * @mbggenerated
14 | */
15 | int deleteByPrimaryKey(Integer id);
16 |
17 | /**
18 | * This method was generated by MyBatis Generator.
19 | * This method corresponds to the database table image
20 | *
21 | * @mbggenerated
22 | */
23 | int insert(Image record);
24 |
25 | /**
26 | * This method was generated by MyBatis Generator.
27 | * This method corresponds to the database table image
28 | *
29 | * @mbggenerated
30 | */
31 | Image selectByPrimaryKey(Integer id);
32 |
33 | /**
34 | * This method was generated by MyBatis Generator.
35 | * This method corresponds to the database table image
36 | *
37 | * @mbggenerated
38 | */
39 | List selectAll();
40 |
41 | /**
42 | * This method was generated by MyBatis Generator.
43 | * This method corresponds to the database table image
44 | *
45 | * @mbggenerated
46 | */
47 | int updateByPrimaryKey(Image record);
48 |
49 | List selectByGoodsPrimaryKey(@Param("goods_id") Integer goods_id);
50 |
51 | int deleteImagesByGoodsPrimaryKey(Integer goods_id);
52 | }
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/ReportMapper.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.mapper;
2 |
3 | import com.lvr.kdshop.pojo.Report;
4 | import org.apache.ibatis.annotations.Param;
5 |
6 | import java.util.List;
7 |
8 | public interface ReportMapper {
9 | /**
10 | * This method was generated by MyBatis Generator.
11 | * This method corresponds to the database table reply
12 | *
13 | * @mbggenerated
14 | */
15 | int deleteByPrimaryKey(Integer id);
16 |
17 | /**
18 | * This method was generated by MyBatis Generator.
19 | * This method corresponds to the database table reply
20 | *
21 | * @mbggenerated
22 | */
23 | int insert(Report record);
24 |
25 | int insertForFeedback(Report record);
26 |
27 | /**
28 | * This method was generated by MyBatis Generator.
29 | * This method corresponds to the database table reply
30 | *
31 | * @mbggenerated
32 | */
33 | Report selectByPrimaryKey(Integer id);
34 |
35 | /**
36 | * This method was generated by MyBatis Generator.
37 | * This method corresponds to the database table reply
38 | *
39 | * @mbggenerated
40 | */
41 | List selectAll();
42 |
43 | /**
44 | * This method was generated by MyBatis Generator.
45 | * This method corresponds to the database table reply
46 | *
47 | * @mbggenerated
48 | */
49 | int updateByPrimaryKey(Report record);
50 |
51 | List selectReportByGoodsPrimaryKey(@Param("gid") Integer gid);
52 |
53 |
54 | }
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/WantedServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service.impl;
2 |
3 | import com.lvr.kdshop.business.mapper.WantedMapper;
4 | import com.lvr.kdshop.business.service.WantedService;
5 | import com.lvr.kdshop.pojo.Wanted;
6 | import org.springframework.stereotype.Service;
7 |
8 | import javax.annotation.Resource;
9 | import java.util.List;
10 |
11 | @Service("wantedService")
12 | public class WantedServiceImpl implements WantedService {
13 |
14 | @Resource
15 | private WantedMapper wantedMapper;
16 |
17 | public int deleteByPrimaryKey(Integer id) {
18 | return wantedMapper.deleteByPrimaryKey(id);
19 | }
20 |
21 | public int insert(Wanted record) {
22 | return wantedMapper.insert(record);
23 | }
24 |
25 | public Wanted selectByPrimaryKey(Integer id) {
26 | return wantedMapper.selectByPrimaryKey(id);
27 | }
28 |
29 | public List selectAll() {
30 | return wantedMapper.selectAll();
31 | }
32 |
33 | public int updateByPrimaryKey(Wanted record) {
34 | return wantedMapper.updateByPrimaryKey(record);
35 | }
36 |
37 | public Wanted selectWant(String uid, Integer gid) {
38 | return wantedMapper.selectWant(uid,gid);
39 | }
40 |
41 | public List selectWantByUserId(String uid) {
42 | return wantedMapper.selectWantByUserId(uid);
43 | }
44 |
45 | public int deleteWantedByGoodsId(Integer gid) {
46 | return wantedMapper.deleteWantedByGoodsId(gid);
47 | }
48 |
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/WantedService.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service;
2 |
3 |
4 | import com.lvr.kdshop.pojo.Wanted;
5 |
6 | import java.util.List;
7 |
8 | public interface WantedService {
9 | /**
10 | * This method was generated by MyBatis Generator.
11 | * This method corresponds to the database table wanted
12 | *
13 | * @mbggenerated
14 | */
15 | int deleteByPrimaryKey(Integer id);
16 |
17 | /**
18 | * This method was generated by MyBatis Generator.
19 | * This method corresponds to the database table wanted
20 | *
21 | * @mbggenerated
22 | */
23 | int insert(Wanted record);
24 |
25 | /**
26 | * This method was generated by MyBatis Generator.
27 | * This method corresponds to the database table wanted
28 | *
29 | * @mbggenerated
30 | */
31 | Wanted selectByPrimaryKey(Integer id);
32 |
33 | /**
34 | * This method was generated by MyBatis Generator.
35 | * This method corresponds to the database table wanted
36 | *
37 | * @mbggenerated
38 | */
39 | List selectAll();
40 |
41 | /**
42 | * This method was generated by MyBatis Generator.
43 | * This method corresponds to the database table wanted
44 | *
45 | * @mbggenerated
46 | */
47 | int updateByPrimaryKey(Wanted record);
48 |
49 | Wanted selectWant(String uid, Integer gid);
50 |
51 | List selectWantByUserId(String uid);
52 |
53 | int deleteWantedByGoodsId(Integer gid);
54 |
55 |
56 | }
57 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/ReportServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service.impl;
2 |
3 | import com.lvr.kdshop.business.mapper.ReportMapper;
4 | import com.lvr.kdshop.business.service.ReportService;
5 | import com.lvr.kdshop.pojo.Report;
6 | import org.springframework.stereotype.Service;
7 |
8 | import javax.annotation.Resource;
9 | import java.util.List;
10 |
11 | @Service("reportService")
12 | public class ReportServiceImpl implements ReportService {
13 |
14 | @Resource
15 | private ReportMapper reportMapper;
16 |
17 | @Override
18 | public int deleteByPrimaryKey(Integer id) {
19 | return reportMapper.deleteByPrimaryKey(id);
20 | }
21 |
22 | @Override
23 | public int insert(Report record) {
24 | return reportMapper.insert(record);
25 | }
26 |
27 | @Override
28 | public int insertForFeedback(Report record) {
29 | return reportMapper.insertForFeedback(record);
30 | }
31 |
32 | @Override
33 | public Report selectByPrimaryKey(Integer id) {
34 | return reportMapper.selectByPrimaryKey(id);
35 | }
36 |
37 | @Override
38 | public List selectAll() {
39 | return reportMapper.selectAll();
40 | }
41 |
42 | @Override
43 | public int updateByPrimaryKey(Report record) {
44 | return reportMapper.updateByPrimaryKey(record);
45 | }
46 |
47 | @Override
48 | public List selectReportByGoodsPrimaryKey(Integer gid) {
49 | return reportMapper.selectReportByGoodsPrimaryKey(gid);
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/pear.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "logo": {
3 | "title": "springboot-v2",
4 | "image": "static/admin/images/logo.png"
5 | },
6 | "menu": {
7 | "data": "/admin/getUserMenu",
8 | "accordion": true,
9 | "control": false,
10 | "select": "451003242072117248"
11 | },
12 | "tab": {
13 | "muiltTab": true,
14 | "keepState": true,
15 | "tabMax": 30,
16 | "index": {
17 | "id": "451003242072117248",
18 | "href": "/ServiceController/view",
19 | "title": "首页"
20 | }
21 | },
22 | "theme": {
23 | "defaultColor": "2",
24 | "defaultMenu": "dark-theme",
25 | "allowCustom": true
26 | },
27 | "colors": [{
28 | "id": "1",
29 | "color": "#FF5722"
30 | },
31 | {
32 | "id": "2",
33 | "color": "#5FB878"
34 | },
35 | {
36 | "id": "3",
37 | "color": "#1E9FFF"
38 | }, {
39 | "id": "4",
40 | "color": "#FFB800"
41 | }, {
42 | "id": "5",
43 | "color": "darkgray"
44 | }
45 | ],
46 | "links": [{
47 | "icon": "layui-icon layui-icon-website",
48 | "title": "官方网站",
49 | "href": "http://www.pearadmin.com"
50 | },
51 | {
52 | "icon": "layui-icon layui-icon-read",
53 | "title": "开发文档",
54 | "href": "http://www.pearadmin.com/doc/"
55 | },
56 | {
57 | "icon": "layui-icon layui-icon-fonts-code",
58 | "title": "开源地址",
59 | "href": "https://gitee.com/pear-admin/Pear-Admin-Boot"
60 | },
61 | {
62 | "icon": "layui-icon layui-icon-release",
63 | "title": "交流社区",
64 | "href": "http://forum.pearadmin.com/"
65 | }
66 | ],
67 | "other": {
68 | "autoHead": false,
69 | "keepLoad": 1200
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/hr/plugin.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | *
7 | * Version: 5.0.16 (2019-09-24)
8 | */
9 | (function () {
10 | 'use strict';
11 |
12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
13 |
14 | var register = function (editor) {
15 | editor.addCommand('InsertHorizontalRule', function () {
16 | editor.execCommand('mceInsertContent', false, '
');
17 | });
18 | };
19 | var Commands = { register: register };
20 |
21 | var register$1 = function (editor) {
22 | editor.ui.registry.addButton('hr', {
23 | icon: 'horizontal-rule',
24 | tooltip: 'Horizontal line',
25 | onAction: function () {
26 | return editor.execCommand('InsertHorizontalRule');
27 | }
28 | });
29 | editor.ui.registry.addMenuItem('hr', {
30 | icon: 'horizontal-rule',
31 | text: 'Horizontal line',
32 | onAction: function () {
33 | return editor.execCommand('InsertHorizontalRule');
34 | }
35 | });
36 | };
37 | var Buttons = { register: register$1 };
38 |
39 | function Plugin () {
40 | global.add('hr', function (editor) {
41 | Commands.register(editor);
42 | Buttons.register(editor);
43 | });
44 | }
45 |
46 | Plugin();
47 |
48 | }());
49 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/CommentsService.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service;
2 |
3 |
4 | import com.lvr.kdshop.pojo.Comments;
5 |
6 | import java.util.List;
7 |
8 | public interface CommentsService {
9 | /**
10 | * This method was generated by MyBatis Generator.
11 | * This method corresponds to the database table comments
12 | *
13 | * @mbggenerated
14 | */
15 | int deleteByPrimaryKey(Integer id);
16 |
17 | /**
18 | * This method was generated by MyBatis Generator.
19 | * This method corresponds to the database table comments
20 | *
21 | * @mbggenerated
22 | */
23 | int insert(Comments record);
24 |
25 | /**
26 | * This method was generated by MyBatis Generator.
27 | * This method corresponds to the database table comments
28 | *
29 | * @mbggenerated
30 | */
31 | Comments selectByPrimaryKey(Integer id);
32 |
33 | /**
34 | * This method was generated by MyBatis Generator.
35 | * This method corresponds to the database table comments
36 | *
37 | * @mbggenerated
38 | */
39 | List selectAll();
40 |
41 | /**
42 | * This method was generated by MyBatis Generator.
43 | * This method corresponds to the database table comments
44 | *
45 | * @mbggenerated
46 | */
47 | int updateByPrimaryKey(Comments record);
48 |
49 | List selectByUserKeyWithContent(String uid);
50 |
51 | List selectByGoodsId(Integer goodsId);
52 |
53 | List searchCommentsByContent(String content);
54 | }
55 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/CarouselService.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service;
2 |
3 |
4 | import com.lvr.kdshop.pojo.Carousel;
5 |
6 | import java.util.List;
7 |
8 | public interface CarouselService {
9 | /**
10 | * This method was generated by MyBatis Generator.
11 | * This method corresponds to the database table reply
12 | *
13 | * @mbggenerated
14 | */
15 | int deleteByPrimaryKey(Integer id);
16 |
17 | /**
18 | * This method was generated by MyBatis Generator.
19 | * This method corresponds to the database table reply
20 | *
21 | * @mbggenerated
22 | */
23 | int insert(Carousel record);
24 |
25 | /**
26 | * This method was generated by MyBatis Generator.
27 | * This method corresponds to the database table reply
28 | *
29 | * @mbggenerated
30 | */
31 | Carousel selectByPrimaryKey(Integer id);
32 |
33 | /**
34 | * This method was generated by MyBatis Generator.
35 | * This method corresponds to the database table reply
36 | *
37 | * @mbggenerated
38 | */
39 | List selectAll();
40 |
41 | /**
42 | * This method was generated by MyBatis Generator.
43 | * This method corresponds to the database table reply
44 | *
45 | * @mbggenerated
46 | */
47 | int updateByPrimaryKey(Carousel record);
48 |
49 | int updateStatusByPrimaryKey(Integer id, Byte status);
50 |
51 | List selectCarouselByStatus(Byte status);
52 |
53 | List searchCarouselByTitleOrDescript(String title, String descript);
54 | }
55 |
--------------------------------------------------------------------------------
/kd-shop-ui/src/api/request.ts:
--------------------------------------------------------------------------------
1 | import axios from "axios";
2 |
3 | console.log(`====================当前环境:${import.meta.env.VITE_APP_BASE_URL}=======================`);
4 |
5 |
6 | //创建实例
7 | const service = axios.create({
8 | baseURL: import.meta.env.VITE_APP_BASE_URL,
9 | timeout: 5000, //超时
10 | });
11 |
12 | //添加请求拦截器
13 | service.interceptors.request.use(
14 | function (config) {
15 | //在发送请求之前做些什么
16 | return config;
17 | },
18 | function (error) {
19 | console.log(error.request);
20 | const errorData = JSON.parse(error.request.response);
21 | if (errorData.message) {
22 | //判断是否具有message属性
23 | ElMessage({
24 | message: errorData.message,
25 | type: "error",
26 | });
27 | }
28 | //对请求错误做些什么
29 | return Promise.reject(errorData);
30 | }
31 | );
32 |
33 | //添加响 应拦截器
34 | service.interceptors.response.use(
35 | function (response) {
36 | //对响应数据做些什么
37 | console.log("响应数据", response);
38 | const data = response.data;
39 | if (data.resCode === 0) {
40 | return Promise.resolve(data);
41 | } else {
42 | ElMessage({
43 | message: data.message,
44 | type: "error",
45 | });
46 | return Promise.reject(data);
47 | }
48 | },
49 | function (error) {
50 | //对响应错误做些什么
51 | const errorData = JSON.parse(error.request.response);
52 | if (errorData.message) {
53 | //判断是否具有message属性
54 | ElMessage({
55 | message: errorData.message,
56 | type: "error",
57 | });
58 | }
59 |
60 | return Promise.reject(errorData);
61 | }
62 | );
63 |
64 | //暴露service
65 | export default service;
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/WantedMapper.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.mapper;
2 |
3 | import com.lvr.kdshop.pojo.Wanted;
4 | import org.apache.ibatis.annotations.Param;
5 |
6 | import java.util.List;
7 |
8 | public interface WantedMapper {
9 | /**
10 | * This method was generated by MyBatis Generator.
11 | * This method corresponds to the database table wanted
12 | *
13 | * @mbggenerated
14 | */
15 | int deleteByPrimaryKey(Integer id);
16 |
17 | /**
18 | * This method was generated by MyBatis Generator.
19 | * This method corresponds to the database table wanted
20 | *
21 | * @mbggenerated
22 | */
23 | int insert(Wanted record);
24 |
25 | /**
26 | * This method was generated by MyBatis Generator.
27 | * This method corresponds to the database table wanted
28 | *
29 | * @mbggenerated
30 | */
31 | Wanted selectByPrimaryKey(Integer id);
32 |
33 | /**
34 | * This method was generated by MyBatis Generator.
35 | * This method corresponds to the database table wanted
36 | *
37 | * @mbggenerated
38 | */
39 | List selectAll();
40 |
41 | /**
42 | * This method was generated by MyBatis Generator.
43 | * This method corresponds to the database table wanted
44 | *
45 | * @mbggenerated
46 | */
47 | int updateByPrimaryKey(Wanted record);
48 |
49 | Wanted selectWant(@Param("uid") String uid, @Param("gid") Integer gid);
50 |
51 | List selectWantByUserId(@Param("uid") String uid);
52 |
53 | int deleteWantedByGoodsId(@Param("gid") Integer gid);
54 | }
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/dark/content.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | */
7 | body {
8 | background-color: #2f3742;
9 | color: #dfe0e4;
10 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
11 | line-height: 1.4;
12 | margin: 1rem;
13 | }
14 | a {
15 | color: #4099ff;
16 | }
17 | table {
18 | border-collapse: collapse;
19 | }
20 | table th,
21 | table td {
22 | border: 1px solid #6d737b;
23 | padding: 0.4rem;
24 | }
25 | figure {
26 | display: table;
27 | margin: 1rem auto;
28 | }
29 | figure figcaption {
30 | color: #8a8f97;
31 | display: block;
32 | margin-top: 0.25rem;
33 | text-align: center;
34 | }
35 | hr {
36 | border-color: #6d737b;
37 | border-style: solid;
38 | border-width: 1px 0 0 0;
39 | }
40 | code {
41 | background-color: #6d737b;
42 | border-radius: 3px;
43 | padding: 0.1rem 0.2rem;
44 | }
45 | /* Make text in selected cells in tables dark and readable */
46 | td[data-mce-selected],
47 | th[data-mce-selected] {
48 | color: #333;
49 | }
50 | .mce-content-body:not([dir=rtl]) blockquote {
51 | border-left: 2px solid #6d737b;
52 | margin-left: 1.5rem;
53 | padding-left: 1rem;
54 | }
55 | .mce-content-body[dir=rtl] blockquote {
56 | border-right: 2px solid #6d737b;
57 | margin-right: 1.5rem;
58 | padding-right: 1rem;
59 | }
60 |
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/CommentsServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service.impl;
2 |
3 | import com.lvr.kdshop.business.mapper.CommentsMapper;
4 | import com.lvr.kdshop.business.service.CommentsService;
5 | import com.lvr.kdshop.pojo.Comments;
6 | import org.springframework.stereotype.Service;
7 |
8 | import javax.annotation.Resource;
9 | import java.util.List;
10 |
11 | @Service("commentsService")
12 | public class CommentsServiceImpl implements CommentsService {
13 |
14 | @Resource
15 | private CommentsMapper commentsMapper;
16 |
17 | public int deleteByPrimaryKey(Integer id) {
18 | return commentsMapper.deleteByPrimaryKey(id);
19 | }
20 |
21 | public int insert(Comments record) {
22 | return commentsMapper.insert(record);
23 | }
24 |
25 | public Comments selectByPrimaryKey(Integer id) {
26 | return commentsMapper.selectByPrimaryKey(id);
27 | }
28 |
29 | public List selectAll() {
30 | return commentsMapper.selectAll();
31 | }
32 |
33 | public int updateByPrimaryKey(Comments record) {
34 | return commentsMapper.updateByPrimaryKey(record);
35 | }
36 |
37 | public List selectByUserKeyWithContent(String uid) {
38 | return commentsMapper.selectByUserKeyWithContent(uid);
39 | }
40 |
41 | public List selectByGoodsId(Integer goodsId) {
42 | return commentsMapper.selectByGoodsId(goodsId);
43 | }
44 |
45 | @Override
46 | public List searchCommentsByContent(String content) {
47 | return commentsMapper.searchCommentsByContent(content);
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/nonbreaking/plugin.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | *
7 | * Version: 5.0.16 (2019-09-24)
8 | */
9 | !function(){"use strict";function o(n,e){for(var t="",o=0;o'+o(" ",e)+"":o(" ",e);n.undoManager.transact(function(){return n.insertContent(t)})},e=function(n){n.addCommand("mceNonBreaking",function(){r(n,1)})},c=tinymce.util.Tools.resolve("tinymce.util.VK"),t=function(e){var t=i(e);0 selectAll();
40 |
41 | /**
42 | * This method was generated by MyBatis Generator.
43 | * This method corresponds to the database table comments
44 | *
45 | * @mbggenerated
46 | */
47 | int updateByPrimaryKey(Comments record);
48 |
49 | List selectByUserKeyWithContent(@Param("uid") String uid);
50 |
51 | List selectByGoodsId(@Param("gid") Integer goodsId);
52 |
53 | List searchCommentsByContent(@Param("content") String content);
54 | }
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/util/ResuTree.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.util;
2 |
3 | /**
4 | * Describe: Ajax 返回 Dtree 结果封装数据
5 | * Author: 就 眠 仪 式
6 | * CreateTime: 2019/10/23
7 | * */
8 |
9 | public class ResuTree {
10 |
11 | /**
12 | * 状态信息
13 | * */
14 | private Status status = new Status();
15 |
16 | /**
17 | * 返回数据
18 | * */
19 | private Object data;
20 |
21 | /**
22 | * 所需内部类
23 | * */
24 |
25 | public class Status{
26 |
27 | private Integer code = 200;
28 |
29 | private String message = "默认";
30 |
31 | public Integer getCode() {
32 | return code;
33 | }
34 |
35 | public void setCode(Integer code) {
36 | this.code = code;
37 | }
38 |
39 | public String getMessage() {
40 | return message;
41 | }
42 |
43 | public void setMessage(String message) {
44 | this.message = message;
45 | }
46 |
47 | public Status(Integer code, String message) {
48 | this.code = code;
49 | this.message = message;
50 | }
51 |
52 | public Status() {
53 | }
54 | }
55 |
56 | public Status getStatus() {
57 | return status;
58 | }
59 |
60 | public void setStatus(Status status) {
61 | this.status = status;
62 | }
63 |
64 | public Object getData() {
65 | return data;
66 | }
67 |
68 | public void setData(Object data) {
69 | this.data = data;
70 | }
71 |
72 | public ResuTree() {
73 | }
74 |
75 | public ResuTree(Status status, Object data) {
76 | this.status = status;
77 | this.data = data;
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | server:
2 | port: 3000
3 |
4 | # springboot数据源配置
5 | spring:
6 | thymeleaf:
7 | prefix: classpath:/templates/
8 | suffix: .html
9 | mode: HTML
10 | encoding: UTF-8
11 | cache: false
12 | servlet:
13 | content-type: text/html
14 | messages:
15 | basename: i18n.login
16 | datasource:
17 | driver-class-name: com.mysql.cj.jdbc.Driver
18 | url: jdbc:mysql://127.0.0.1:3306/kd-shop?serverTimezone=GMT%2B8&useSSL=FALSE
19 | username: root #数据库用户名
20 | password: 123!@# #该数据库用户的密码
21 | servlet:
22 | multipart:
23 | enabled: true
24 | file-size-threshold: 0
25 | max-file-size: 20MB
26 | max-request-size: 100MB
27 | devtools:
28 | restart:
29 | enabled: true
30 | # redis:
31 | # host: localhost
32 | # port: 6379
33 | # database: 0
34 | # password:
35 | # timeout: 10s
36 | # lettuce:
37 | # pool:
38 | # min-idle: 0
39 | # max-idle: 8
40 | # max-active: 8
41 | # max-wait: -1ms
42 |
43 | mybatis: #mybatyis的配置
44 | mapper-locations: classpath*:mapper/*.xml #指定mapper的配置文件的路径是mapper文件夹下的所有 xml文件。
45 | type-aliases-package: com.lvr.kdshop.pojo
46 | config-location: classpath:mybatis/mybatis-config.xml
47 |
48 | # 日志
49 | logging:
50 | config: classpath:logback.xml
51 |
52 | # token
53 | token:
54 | header: Authorization
55 | secret: lkjhgfdsa
56 | expireTime: 30
57 |
58 | # 上传文件模式:local为本地上传,需要配置下方的imagesPath;imagesPath为你本地图片文件夹路径
59 | # oss为阿里云上传,需要在阿里云中开通对象存储服务,配置相应的key
60 | uploadMode: local
61 | # 文件上传映射本地路径
62 | # 在项目的源文件夹中建立upload目录,用于文件上传
63 | imagesPath: E:/Code/kd-shop/upload/
64 |
65 | # 图片映射地址
66 | fileUploadPathRelative: /images/**
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/visualblocks/plugin.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | *
7 | * Version: 5.0.16 (2019-09-24)
8 | */
9 | !function(){"use strict";function o(o,e){return function(n){n.setActive(e.get());function t(t){return n.setActive(t.state)}return o.on("VisualBlocks",t),function(){return o.off("VisualBlocks",t)}}}var e=function(t){function n(){return o}var o=t;return{get:n,set:function(t){o=t},clone:function(){return e(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(t,n){t.fire("VisualBlocks",{state:n})},u=function(t,n,o){t.dom.toggleClass(t.getBody(),"mce-visualblocks"),o.set(!o.get()),i(t,o.get())},c=function(t,n,o){t.addCommand("mceVisualBlocks",function(){u(t,n,o)})},s=function(t){return t.getParam("visualblocks_default_state",!1,"boolean")},r=function(n,t,o){n.on("PreviewFormats AfterPreviewFormats",function(t){o.get()&&n.dom.toggleClass(n.getBody(),"mce-visualblocks","afterpreviewformats"===t.type)}),n.on("init",function(){s(n)&&u(n,t,o)}),n.on("remove",function(){n.dom.removeClass(n.getBody(),"mce-visualblocks")})},l=function(t,n){t.ui.registry.addToggleButton("visualblocks",{icon:"paragraph",tooltip:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:o(t,n)}),t.ui.registry.addToggleMenuItem("visualblocks",{text:"Show blocks",onAction:function(){return t.execCommand("mceVisualBlocks")},onSetup:o(t,n)})};!function n(){t.add("visualblocks",function(t,n){var o=e(!1);c(t,n,o),l(t,o),r(t,n,o)})}()}();
--------------------------------------------------------------------------------
/kd-shop-ui/src/router/routes.ts:
--------------------------------------------------------------------------------
1 | import Layout from '~/components/layouts/index.vue';
2 |
3 | const routes = [
4 | {
5 | path: '/',
6 | name: 'Layout',
7 | redirect: '/home',
8 | component: Layout,
9 | children: [
10 | {
11 | path: '/home',
12 | name: 'FrontHome',
13 | component: () => import(`~/pages/front/Home.vue`),
14 | meta: {
15 | title: '首页'
16 | }
17 | },
18 | {
19 | path: '/notice',
20 | name: 'FrontNotice',
21 | component: () => import(`~/pages/front/Notice.vue`),
22 | meta: {
23 | title: '公告'
24 | }
25 | },
26 | {
27 | path: '/wanted',
28 | name: 'FrontWanted',
29 | component: () => import(`~/pages/front/Wanted.vue`),
30 | meta: {
31 | title: '公告'
32 | }
33 | },
34 | {
35 | path: '/publish',
36 | name: 'FrontPublish',
37 | component: () => import(`~/pages/front/Publish.vue`),
38 | meta: {
39 | title: '发布闲置'
40 | }
41 | },
42 | {
43 | path: '/userInfo',
44 | name: 'FrontUserInfo',
45 | component: () => import(`~/pages/front/UserInfo.vue`),
46 | meta: {
47 | title: '用户信息'
48 | }
49 | }
50 | ]
51 | },
52 | {
53 | path: '/login',
54 | name: 'Login',
55 | component: () => import(`~/pages/Login/index.vue`),
56 | meta: {
57 | title: '登录'
58 | }
59 | },
60 | { path: '/:pathMatch(.*)*', name: '404', component: () => import(`~/pages/error/404.vue`) }
61 |
62 | ]
63 |
64 | export default routes
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/CarouselMapper.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.mapper;
2 |
3 | import com.lvr.kdshop.pojo.Carousel;
4 | import org.apache.ibatis.annotations.Param;
5 |
6 | import java.util.List;
7 |
8 | public interface CarouselMapper {
9 | /**
10 | * This method was generated by MyBatis Generator.
11 | * This method corresponds to the database table carousel
12 | *
13 | * @mbggenerated
14 | */
15 | int deleteByPrimaryKey(Integer id);
16 |
17 | /**
18 | * This method was generated by MyBatis Generator.
19 | * This method corresponds to the database table carousel
20 | *
21 | * @mbggenerated
22 | */
23 | int insert(Carousel record);
24 |
25 | /**
26 | * This method was generated by MyBatis Generator.
27 | * This method corresponds to the database table carousel
28 | *
29 | * @mbggenerated
30 | */
31 | Carousel selectByPrimaryKey(Integer id);
32 |
33 | /**
34 | * This method was generated by MyBatis Generator.
35 | * This method corresponds to the database table carousel
36 | *
37 | * @mbggenerated
38 | */
39 | List selectAll();
40 |
41 | /**
42 | * This method was generated by MyBatis Generator.
43 | * This method corresponds to the database table carousel
44 | *
45 | * @mbggenerated
46 | */
47 | int updateByPrimaryKey(Carousel record);
48 |
49 | int updateStatusByPrimaryKey(@Param("id") Integer id, @Param("status") Byte status);
50 |
51 | List selectCarouselByStatus(@Param("status") Byte status);
52 |
53 | List searchCarouselByTitleOrDescript(@Param("title") String title, @Param("descript") String descript);
54 | }
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/mapper/CatelogMapper.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.mapper;
2 |
3 | import com.lvr.kdshop.pojo.Catelog;
4 | import org.apache.ibatis.annotations.Param;
5 |
6 | import java.util.List;
7 |
8 | public interface CatelogMapper {
9 | /**
10 | * This method was generated by MyBatis Generator.
11 | * This method corresponds to the database table catelog
12 | *
13 | * @mbggenerated
14 | */ int deleteByPrimaryKey(Integer id);
15 |
16 |
17 | /**
18 | * This method was generated by MyBatis Generator.
19 | * This method corresponds to the database table catelog
20 | *
21 | * @mbggenerated
22 | */
23 | int insert(Catelog record);
24 |
25 | /**
26 | * This method was generated by MyBatis Generator.
27 | * This method corresponds to the database table catelog
28 | *
29 | * @mbggenerated
30 | */
31 | Catelog selectByPrimaryKey(Integer id);
32 |
33 | /**
34 | * This method was generated by MyBatis Generator.
35 | * This method corresponds to the database table catelog
36 | *
37 | * @mbggenerated
38 | */
39 | List selectAll();
40 |
41 | /**
42 | * This method was generated by MyBatis Generator.
43 | * This method corresponds to the database table catelog
44 | *
45 | * @mbggenerated
46 | */
47 | int updateByPrimaryKey(Catelog record);
48 |
49 |
50 | List getAllCatelogByStatus(@Param("status") Byte status);
51 |
52 |
53 | // int getCount(Catelog catelog);
54 |
55 |
56 | // int updateCatelogNum(@Param("id") Integer id, @Param("number") Integer number);
57 |
58 | List searchCatelogByName(@Param("name") String name);
59 |
60 | }
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/card.css:
--------------------------------------------------------------------------------
1 | .project-list-item {
2 | background-color: #fff;
3 | border-radius: 4px;
4 | cursor: pointer;
5 | transition: all .2s;
6 | }
7 |
8 | .project-list-item:hover {
9 | box-shadow: 2px 0 4px rgba(0, 21, 41, .35);
10 | }
11 |
12 | .project-list-item .project-list-item-cover {
13 | width: 100%;
14 | height: 180px;
15 | display: block;
16 | border-top-left-radius: 4px;
17 | border-top-right-radius: 4px;
18 | }
19 |
20 | .project-list-item-body {
21 | padding: 20px;
22 | border: 1px solid #e8e8e8;
23 | }
24 |
25 | .project-list-item .project-list-item-body>h2 {
26 | font-size: 16px;
27 | color: #333;
28 | margin-bottom: 12px;
29 | }
30 |
31 | .project-list-item .project-list-item-text {
32 | height: 40px;
33 | overflow: hidden;
34 | margin-bottom: 12px;
35 | }
36 |
37 | .project-list-item .project-list-item-desc {
38 | position: relative;
39 | }
40 |
41 | .project-list-item .project-list-item-desc .time {
42 | color: #999;
43 | font-size: 12px;
44 | }
45 |
46 | .project-list-item .project-list-item-desc .ew-head-list {
47 | position: absolute;
48 | right: 0;
49 | top: 0;
50 | }
51 |
52 | .ew-head-list .ew-head-list-item:first-child {
53 | margin-left: 0;
54 | }
55 |
56 | .ew-head-list .ew-head-list-item {
57 | width: 22px;
58 | height: 22px;
59 | border-radius: 50%;
60 | border: 1px solid #fff;
61 | margin-left: -10px;
62 | }
63 |
64 | .ew-head-list .ew-head-list-item {
65 | width: 22px;
66 | height: 22px;
67 | border-radius: 50%;
68 | border: 1px solid #fff;
69 | margin-left: -10px;
70 | }
71 |
72 | .pear-card-component {
73 | padding: 20px;
74 | }
75 |
76 | .pear-card-component .layui-laypage .layui-laypage-curr .layui-laypage-em {
77 | border-radius: 0px !important;
78 | }
79 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/step.css:
--------------------------------------------------------------------------------
1 | .lay-step {
2 | font-size: 0;
3 | margin: 0 auto;
4 | max-width: 100%;
5 | width: 60%;
6 | padding-left: 15%;
7 |
8 | }
9 |
10 | .step-item {
11 | display: inline-block;
12 | line-height: 35px;
13 | position: relative;
14 | font-size: 15px;
15 | }
16 |
17 | .step-item-tail {
18 | width: 100%;
19 | padding: 0 10px;
20 | position: absolute;
21 | left: 0;
22 | top: 13px;
23 | }
24 |
25 | .step-item-tail i {
26 | display: inline-block;
27 | width: 100%;
28 | height: 2px;
29 | margin-top: 4px;
30 | vertical-align: top;
31 | background: #5FB878;
32 | position: relative;
33 | }
34 |
35 | .step-item-tail .step-item-tail-done {
36 | background: #5FB878;
37 | height: 3px;
38 | margin-top: 4px;
39 | }
40 |
41 | .step-item-head {
42 | position: relative;
43 | display: inline-block;
44 | height: 35px;
45 | width: 35px;
46 | text-align: center;
47 | vertical-align: top;
48 | color: #5FB878;
49 | border: 2px solid #5FB878;
50 | border-radius: 50%;
51 | background: #ffffff;
52 | }
53 |
54 | .step-item-head.step-item-head-active {
55 | background: #5FB878;
56 | color: #ffffff;
57 | }
58 |
59 | .step-item-main {
60 | display: block;
61 | position: relative;
62 | margin-left: -50%;
63 | margin-right: 50%;
64 | padding-left: 26px;
65 | text-align: center;
66 | }
67 |
68 | .step-item-main-title {
69 | font-weight: bolder;
70 | color: #555555;
71 | }
72 |
73 | .step-item-main-desc {
74 | color: #aaaaaa;
75 | }
76 |
77 | .lay-step + [carousel-item]:before {
78 | display: none;
79 | }
80 |
81 | .lay-step + [carousel-item] > * {
82 | background-color: transparent;
83 | }
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/default/content.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["content/default/content.css"],"names":[],"mappings":";;;;;;AAMA,KACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,MAAM,CAAE,MAAM,CAAE,SAAS,CAAE,WAAW,CAAE,gBAAgB,CAAE,WAC9H,YAAa,IACb,OAAQ,KAEV,MACE,gBAAiB,SAGnB,SADA,SAEE,OAAQ,IAAI,MAAM,KAClB,QAAS,MAEX,OACE,QAAS,MACT,OAAQ,KAAK,KAEf,kBACE,MAAO,KACP,QAAS,MACT,WAAY,OACZ,WAAY,OAEd,GACE,aAAc,KACd,aAAc,MACd,aAAc,IAAI,EAAE,EAAE,EAExB,KACE,iBAAkB,QAClB,cAAe,IACf,QAAS,MAAO,MAElB,4CACE,YAAa,IAAI,MAAM,KACvB,YAAa,OACb,aAAc,KAEhB,sCACE,aAAc,IAAI,MAAM,KACxB,aAAc,OACd,cAAe","file":"content.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n line-height: 1.4;\n margin: 1rem;\n}\ntable {\n border-collapse: collapse;\n}\ntable th,\ntable td {\n border: 1px solid #ccc;\n padding: 0.4rem;\n}\nfigure {\n display: table;\n margin: 1rem auto;\n}\nfigure figcaption {\n color: #999;\n display: block;\n margin-top: 0.25rem;\n text-align: center;\n}\nhr {\n border-color: #ccc;\n border-style: solid;\n border-width: 1px 0 0 0;\n}\ncode {\n background-color: #e8e8e8;\n border-radius: 3px;\n padding: 0.1rem 0.2rem;\n}\n.mce-content-body:not([dir=rtl]) blockquote {\n border-left: 2px solid #ccc;\n margin-left: 1.5rem;\n padding-left: 1rem;\n}\n.mce-content-body[dir=rtl] blockquote {\n border-right: 2px solid #ccc;\n margin-right: 1.5rem;\n padding-right: 1rem;\n}\n"]}
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/print/plugin.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | *
7 | * Version: 5.0.16 (2019-09-24)
8 | */
9 | (function () {
10 | 'use strict';
11 |
12 | var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
13 |
14 | var global$1 = tinymce.util.Tools.resolve('tinymce.Env');
15 |
16 | var register = function (editor) {
17 | editor.addCommand('mcePrint', function () {
18 | if (global$1.ie && global$1.ie <= 11) {
19 | editor.getDoc().execCommand('print', false, null);
20 | } else {
21 | editor.getWin().print();
22 | }
23 | });
24 | };
25 | var Commands = { register: register };
26 |
27 | var register$1 = function (editor) {
28 | editor.ui.registry.addButton('print', {
29 | icon: 'print',
30 | tooltip: 'Print',
31 | onAction: function () {
32 | return editor.execCommand('mcePrint');
33 | }
34 | });
35 | editor.ui.registry.addMenuItem('print', {
36 | text: 'Print...',
37 | icon: 'print',
38 | onAction: function () {
39 | return editor.execCommand('mcePrint');
40 | }
41 | });
42 | };
43 | var Buttons = { register: register$1 };
44 |
45 | function Plugin () {
46 | global.add('print', function (editor) {
47 | Commands.register(editor);
48 | Buttons.register(editor);
49 | editor.addShortcut('Meta+P', '', 'mcePrint');
50 | });
51 | }
52 |
53 | Plugin();
54 |
55 | }());
56 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/css/pear-module/form.css:
--------------------------------------------------------------------------------
1 | .layui-form-item {
2 | margin-bottom: 0px !important;
3 | margin-top: 5px !important;
4 | }
5 |
6 | .layui-input {
7 | height: 36px !important;
8 | line-height: 36px !important;
9 | border-radius: 3px !important;
10 | }
11 |
12 | .layui-form-label.layui-required:after {
13 | content: "*";
14 | color: red;
15 | position: absolute;
16 | top: 5px;
17 | left: 15px;
18 | }
19 |
20 | .layui-input[hover]:focus {
21 | box-shadow: 0px 0px 3px 1px #5FB878 !important;
22 | border: #5FB878 1px solid!important;
23 | }
24 |
25 | .layui-input[success] {
26 | box-shadow: 0px 0px 3px 1px #5FB878 !important;
27 | border: #5FB878 1px solid!important;
28 | }
29 |
30 | .layui-input[failure] {
31 | box-shadow: 0px 0px 3px 1px #F56C6C;
32 | border: #F56C6C 1px solid;
33 | }
34 |
35 | input::-webkit-input-placeholder,
36 | textarea::-webkit-input-placeholder {
37 | color: #ccc;
38 | }
39 |
40 | .layui-input:hover,
41 | .layui-textarea:hover,
42 | .layui-input:focus,
43 | .layui-textarea:focus {
44 | border-color: #eee!important;
45 | }
46 | .layui-input:focus,
47 | .layui-textarea:focus {
48 | border-color: #5FB878!important;
49 | box-shadow: 0 0 0 3px rgba(95, 184, 120, 0.2)!important;
50 | }
51 |
52 | .layui-input[success],
53 | .layui-textarea[success] {
54 | border-color: #5FB878!important;
55 | box-shadow: 0 0 0 3px rgba(95, 184, 120, 0.2)!important;
56 | }
57 |
58 | .layui-input[failure],
59 | .layui-textarea[failure] {
60 | border-color: #f56c6c !important;
61 | box-shadow: 0 0 0 3px rgba(245,108,108, 0.2)!important;
62 | }
63 |
64 | .layui-input,
65 | .layui-select,
66 | .layui-textarea {
67 | border-radius: 4px!important;
68 | border-color: #eee!important;
69 | transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out!important;
70 | }
--------------------------------------------------------------------------------
/kd-shop-web/src/main/java/com/lvr/kdshop/web/controller/AdminController.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.web.controller;
2 |
3 | import org.springframework.stereotype.Controller;
4 | import org.springframework.ui.Model;
5 | import org.springframework.web.bind.annotation.PostMapping;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 | import org.springframework.web.bind.annotation.RequestParam;
8 |
9 | import javax.servlet.http.HttpServletRequest;
10 | import javax.servlet.http.HttpSession;
11 |
12 | @Controller
13 | @RequestMapping("/admin")
14 | public class AdminController {
15 |
16 | /**
17 | * 登录验证
18 | * @param username
19 | * @param password
20 | * @param model
21 | * @param session
22 | * @return
23 | */
24 | @PostMapping("/login")
25 | public String login(@RequestParam("username") String username, @RequestParam("password") String password, Model model, HttpSession session){
26 | //检查用户名和密码是否正确
27 | if("admin".equals(username) && "123456".equals(password)){
28 | //当用户名为admin且密码是123456的时候可以进入主页面
29 | session.setAttribute("LoginUser",username);
30 | return "redirect:/main.html";
31 | }else{
32 | //用户名或者密码错误的时候给出相应的错误提示,并且返回主页面
33 | model.addAttribute("msg","用户名或者密码输入错误");
34 | return "index";
35 | }
36 | }
37 |
38 | /**
39 | * 退出
40 | * @param request
41 | * @return
42 | */
43 | @RequestMapping("/logout")
44 | public String logout(HttpServletRequest request){
45 | HttpSession session = request.getSession();
46 | //清除session,会清除session
47 | // session.invalidate();
48 | //也可以把用户登录的属性删除 也可以达到注销用户的功能
49 | session.removeAttribute("LoginUser");
50 | return "redirect:/index.html";
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/skins/content/writer/content.min.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["content/writer/content.css"],"names":[],"mappings":";;;;;;AAMA,KACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,MAAM,CAAE,MAAM,CAAE,SAAS,CAAE,WAAW,CAAE,gBAAgB,CAAE,WAC9H,YAAa,IACb,OAAQ,KAAK,KACb,UAAW,MAEb,MACE,gBAAiB,SAGnB,SADA,SAEE,OAAQ,IAAI,MAAM,KAClB,QAAS,MAEX,OACE,QAAS,MACT,OAAQ,KAAK,KAEf,kBACE,MAAO,KACP,QAAS,MACT,WAAY,OACZ,WAAY,OAEd,GACE,aAAc,KACd,aAAc,MACd,aAAc,IAAI,EAAE,EAAE,EAExB,KACE,iBAAkB,QAClB,cAAe,IACf,QAAS,MAAO,MAElB,4CACE,YAAa,IAAI,MAAM,KACvB,YAAa,OACb,aAAc,KAEhB,sCACE,aAAc,IAAI,MAAM,KACxB,aAAc,OACd,cAAe","file":"content.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n line-height: 1.4;\n margin: 1rem auto;\n max-width: 900px;\n}\ntable {\n border-collapse: collapse;\n}\ntable th,\ntable td {\n border: 1px solid #ccc;\n padding: 0.4rem;\n}\nfigure {\n display: table;\n margin: 1rem auto;\n}\nfigure figcaption {\n color: #999;\n display: block;\n margin-top: 0.25rem;\n text-align: center;\n}\nhr {\n border-color: #ccc;\n border-style: solid;\n border-width: 1px 0 0 0;\n}\ncode {\n background-color: #e8e8e8;\n border-radius: 3px;\n padding: 0.1rem 0.2rem;\n}\n.mce-content-body:not([dir=rtl]) blockquote {\n border-left: 2px solid #ccc;\n margin-left: 1.5rem;\n padding-left: 1rem;\n}\n.mce-content-body[dir=rtl] blockquote {\n border-right: 2px solid #ccc;\n margin-right: 1.5rem;\n padding-right: 1rem;\n}\n"]}
--------------------------------------------------------------------------------
/kd-shop-business/src/main/java/com/lvr/kdshop/business/service/impl/CarouselServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.business.service.impl;
2 |
3 | import com.lvr.kdshop.business.mapper.CarouselMapper;
4 | import com.lvr.kdshop.business.service.CarouselService;
5 | import com.lvr.kdshop.pojo.Carousel;
6 | import org.springframework.stereotype.Service;
7 |
8 | import javax.annotation.Resource;
9 | import java.util.List;
10 |
11 | @Service("carouselService")
12 | public class CarouselServiceImpl implements CarouselService {
13 |
14 | @Resource
15 | private CarouselMapper carouselMapper;
16 |
17 | @Override
18 | public int deleteByPrimaryKey(Integer id) {
19 | return carouselMapper.deleteByPrimaryKey(id);
20 | }
21 |
22 | @Override
23 | public int insert(Carousel record) {
24 | return carouselMapper.insert(record);
25 | }
26 |
27 | @Override
28 | public Carousel selectByPrimaryKey(Integer id) {
29 | return carouselMapper.selectByPrimaryKey(id);
30 | }
31 |
32 | @Override
33 | public List selectAll() {
34 | return carouselMapper.selectAll();
35 | }
36 |
37 | @Override
38 | public int updateByPrimaryKey(Carousel record) {
39 | return carouselMapper.updateByPrimaryKey(record);
40 | }
41 |
42 | @Override
43 | public int updateStatusByPrimaryKey(Integer id, Byte status) {
44 | return carouselMapper.updateStatusByPrimaryKey(id,status);
45 | }
46 |
47 | @Override
48 | public List selectCarouselByStatus(Byte status) {
49 | return carouselMapper.selectCarouselByStatus(status);
50 | }
51 |
52 | @Override
53 | public List searchCarouselByTitleOrDescript(String title, String descript) {
54 | return carouselMapper.searchCarouselByTitleOrDescript(title,descript);
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/layui/lay/modules/laytpl.js:
--------------------------------------------------------------------------------
1 | /** layui-v2.5.6 MIT License By https://www.layui.com */
2 | ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/templates/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Signin Template for Bootstrap
9 |
10 |
11 |
12 |
13 |
14 |
15 | 。
16 |
35 |
36 |
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/constant/Constant.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.constant;
2 |
3 | public class Constant {
4 |
5 | /**
6 | * 登录认证相关
7 | */
8 | public static final String LOGIN_USER_KEY = "kd-shop";
9 | public static final String TOKEN_PREFIX = "Bearer ";
10 | public static final String TOKEN = "token";
11 | public static final String CAPTCHA_CODE_KEY = "captcha_codes:"; //验证码 redis key
12 | public static final String LOGIN_TOKEN_KEY = "login_tokens:"; //登录用户 redis key
13 |
14 |
15 | /**
16 | * 操作提示类型的常量
17 | */
18 | public static final String SUCCESS_DATA = "获取数据成功";
19 | public static final String SUCCESS_OPERATION = "操作成功";
20 | public static final String LOGIN_SUCCESS = "登录成功";
21 | public static final String LOGIN_FAILED = "登录失败,密码错误";
22 | public static final String PHONE_UNSINED = "手机号未注册";
23 | public static final String PHONE_SINED = "手机号已注册";
24 | public static final String VERIFY_CODE_CORRECT = "验证码正确";
25 | public static final String VERIFY_CODE_NOT_CORRECT = "验证码不正确";
26 | public static final String REGISTER_SUCCESS = "注册成功";
27 | public static final String UPLOAD_ERROR = "上传失败";
28 | public static final String UPLOAD_SUCCESS = "上传成功";
29 | public static final String UPLOAD_FILE_TYPE_ERROR = "上传文件类型错误";
30 | public static final String COLLECT = "收藏成功";
31 | public static final String COLLECT_CANCEL = "取消收藏";
32 | /**
33 | * 业务相关
34 | */
35 | public static final int REPORT_TYPE = 1; //反馈类型为投诉
36 | public static final int REPORT_FEEDBACK = 2; //反馈类型为建议
37 |
38 | /**
39 | * 用户状态
40 | */
41 |
42 | public static final int USER_DEL_STATUS = 0; //用户已删除
43 | public static final int USER_USED_STATUS = 1; //用户可用
44 | public static final int USER_FREEZE_STATUS = 2; //用户已冻结
45 |
46 |
47 |
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/component/pear/module/tinymce/tinymce/plugins/save/plugin.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved.
3 | * Licensed under the LGPL or a commercial license.
4 | * For LGPL see License.txt in the project root for license information.
5 | * For commercial licenses see https://www.tiny.cloud/
6 | *
7 | * Version: 5.0.16 (2019-09-24)
8 | */
9 | !function(){"use strict";function t(n,e){n.notificationManager.open({text:e,type:"error"})}function e(t){return function(n){function e(){n.setDisabled(a(t)&&!t.isDirty())}return t.on("NodeChange dirty",e),function(){return t.off("NodeChange dirty",e)}}}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),o=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=function(n){return n.getParam("save_enablewhendirty",!0)},c=function(n){return!!n.getParam("save_onsavecallback")},r=function(n){return!!n.getParam("save_oncancelcallback")},u=function(n){var e;if(e=o.DOM.getParent(n.id,"form"),!a(n)||n.isDirty()){if(n.save(),c(n))return n.execCallback("save_onsavecallback",n),void n.nodeChanged();e?(n.setDirty(!1),e.onsubmit&&!e.onsubmit()||("function"==typeof e.submit?e.submit():t(n,"Error: Form submit field collision.")),n.nodeChanged()):t(n,"Error: No form element found.")}},l=function(n){var e=i.trim(n.startContent);r(n)?n.execCallback("save_oncancelcallback",n):n.resetContent(e)},s=function(n){n.addCommand("mceSave",function(){u(n)}),n.addCommand("mceCancel",function(){l(n)})},d=function(n){n.ui.registry.addButton("save",{icon:"save",tooltip:"Save",disabled:!0,onAction:function(){return n.execCommand("mceSave")},onSetup:e(n)}),n.ui.registry.addButton("cancel",{icon:"cancel",tooltip:"Cancel",disabled:!0,onAction:function(){return n.execCommand("mceCancel")},onSetup:e(n)}),n.addShortcut("Meta+S","","mceSave")};!function m(){n.add("save",function(n){d(n),s(n)})}()}();
--------------------------------------------------------------------------------
/kd-shop-common/src/main/java/com/lvr/kdshop/util/ResultTable.java:
--------------------------------------------------------------------------------
1 | package com.lvr.kdshop.util;
2 |
3 | /**
4 | * 分页结果的封装
5 | *
6 | * @author zhaonz
7 | * @Date 20210815
8 | */
9 | public class ResultTable {
10 |
11 | /**
12 | * 状态码
13 | */
14 | private Integer code;
15 |
16 | /**
17 | * 提示消息
18 | */
19 | private String msg;
20 |
21 | /**
22 | * 消息总量
23 | */
24 | private Long count;
25 |
26 | /**
27 | * 数据对象
28 | */
29 | private Object data;
30 |
31 | public Integer getCode() {
32 | return code;
33 | }
34 |
35 | public void setCode(Integer code) {
36 | this.code = code;
37 | }
38 |
39 | public String getMsg() {
40 | return msg;
41 | }
42 |
43 | public void setMsg(String msg) {
44 | this.msg = msg;
45 | }
46 |
47 | public Long getCount() {
48 | return count;
49 | }
50 |
51 | public void setCount(Long count) {
52 | this.count = count;
53 | }
54 |
55 | public Object getData() {
56 | return data;
57 | }
58 |
59 | public void setData(Object data) {
60 | this.data = data;
61 | }
62 |
63 | /**
64 | * 构 建
65 | *
66 | * @param count
67 | * @param data
68 | * @return
69 | */
70 | public static ResultTable pageTable(long count, Object data) {
71 | ResultTable resultTable = new ResultTable();
72 | resultTable.setData(data);
73 | resultTable.setCode(0);
74 | resultTable.setCount(count);
75 | return resultTable;
76 | }
77 |
78 | /**
79 | * @param data
80 | * @return
81 | */
82 | public static ResultTable dataTable(Object data) {
83 | ResultTable resultTable = new ResultTable();
84 | resultTable.setData(data);
85 | resultTable.setCode(0);
86 | return resultTable;
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/kd-shop-web/src/main/resources/static/pear.config.yml:
--------------------------------------------------------------------------------
1 | ## 网站配置
2 | logo:
3 | ## 网站名称
4 | title: "springboot-v2"
5 | ## 网站图标
6 | image: "../static/admin/images/logo.png"
7 | ## 菜单配置
8 | menu:
9 | ## 菜单数据来源
10 | data: /admin/getUserMenu
11 | ## 是否同时只打开一个菜单目录
12 | accordion: true
13 | ## 是否开启多系统菜单模式
14 | control: false
15 | ## 默认选中的菜单项
16 | select: "10"
17 | ## 是否开启异步菜单,false 时 data 属性设置为菜单数据,false 时为 json 文件或后端接口
18 | async: true
19 | ## 视图内容配置
20 | tab:
21 | ## 是否开启多选项卡
22 | muiltTab: true
23 | ## 切换选项卡时,是否保持页面状态
24 | keepState: true
25 | ## 最大可打开的选项卡数量
26 | tabMax: 30
27 | ## Tab 记忆
28 | session: true
29 | ## 默认选项卡数据
30 | index:
31 | id: "10" ## 标识 ID , 建议与菜单项中的 ID 一致
32 | href: "/ServiceController/view" ## 页面地址
33 | title: "首页" ## 标题
34 | ## 主题配置
35 | theme:
36 | ## 默认主题色,对应 colors 配置中的 ID 标识
37 | defaultColor: "2"
38 | ## 默认的菜单主题 dark-theme 黑 / light-theme 白
39 | defaultMenu: "dark-theme"
40 | ## 是否允许用户切换主题,false 时关闭自定义主题面板
41 | allowCustom: true
42 | ## 供选择的主题色配置列表
43 | colors:
44 | - id: "1"
45 | color: "#2d8cf0"
46 | - id: "2"
47 | color: "#36b368"
48 | - id: "3"
49 | color: "#f6ad55"
50 | - id: "4"
51 | color: "#f56c6c"
52 | - id: "5"
53 | color: "darkgray"
54 | ## 主题面板的链接列表配置
55 | links:
56 | - icon: "layui-icon layui-icon-website"
57 | title: "官方网站"
58 | href: "http://www.pearadmin.com"
59 | - icon: "layui-icon layui-icon-read"
60 | title: "开发文档"
61 | href: "http://www.pearadmin.com/doc/"
62 | - icon: "layui-icon layui-icon-fonts-code"
63 | title: "开源地址"
64 | href: "https://gitee.com/pear-admin/Pear-Admin-Layui"
65 | - icon: "layui-icon layui-icon-survey"
66 | title: "问答社区"
67 | href: "http://forum.pearadmin.com/"
68 | ## 其他配置
69 | other:
70 | ## 主页动画时长
71 | keepLoad: "1200"
72 | ## 布局顶部主题
73 | autoHead: false
74 | header:
75 | ## 站内消息,数据来源,通过 false 设置关闭
76 | message: false ##"system/notice/notice"
--------------------------------------------------------------------------------