软件下载
软件下载地址::https://pan.baidu.com/s/1fxvrDZ2fiXFzrY9tzShi2A?pwd=515h 提取码:515h
一、jetbrains2024系列通用软件安装教程:
1.解压安装包:①鼠标右击【jetbrains集合v2024.1(64bit)】压缩包②选择电脑上安装的解压软件(如:360压缩)③点击【解压到 jetbrains集合v2024.1(64bit)】。
2.打开解压后的文件夹,双击打开【Setup】文件夹。
3.鼠标右击需要安装的软件(如:ideaIU-2024)选择【以管理员身份运行】。
4.点击【下一步】。
5..修改路径地址中的第一个字符C可更改安装位置(如:把C改为D软件将安装到D盘),点击【下一步】。
6.勾选所有项目(建议),点击【下一步】。
7.点击【安装】。
8.安装中……
9.点击【完成】。
二、jetbrains2024系列通用软件激活教程:
10.打开安装包解压后的【jetbrains集合v2024.1(64bit)】文件夹:①鼠标右击【Crack】压缩包②选择电脑上安装的解压软件(如:360压缩)③点击【解压到 Crack】。
温馨提示
①解压【Crack】前:必须要先关闭“所有杀毒软件(部分电脑自带的“McAfee”也要关闭)、防火墙、Windows Defender”,否则可能会被杀毒软件误杀清除程序或致无法正常运行。
11.鼠标右击解压后的【Crack】文件夹选择【复制】。
12.鼠标右击桌面您安装的产品(如:IntelliJ IDEA 2024.1)选择【打开文件所在的位置】。
13.鼠标右击空白处选择【粘贴】。
14.双击打开粘贴后的【Crack】文件夹。
15.双击运行【安装】。
16.点击【确定】。
17.点击【确定】。
18.点击【确定】。
19.双击桌面您安装的产品(如:IntelliJ IDEA 2024.1)图标启动软件。
20.勾选【我确认我已……】,点击【继续】。
21.点击【不发送】。
22.点击【Activate IntelliJ IDEA】。
23.选择【Activation code】,将步骤14打开的文件夹中的【zcode】文件拖到软件界面(如下图所示)。
24.点击【Activate】。
25.点击【Continue】。
软件简介
Navicat premium是一款强大的数据库管理软件,使用它可以轻松连接到MySQL、SQLite、Oracle、MariaDB、Mssql、及PostgreSQL数据库,让管理不同类型的数据库更加的方便。有了Navicat Premium,您不再需要为不同的数据库而切换不同的数据库工具。
Navicat Premium结合了其他Navicat成员的功能。有了这种连接到不同数据库的能力,它可以在MySQL、SQLite、Oracle、MariaDB、Mssql、及PostgreSQL之间进行数据传输,同时Navicat Premium也支持大部份数据库管理系统中使用的功能,包括存储过程、事件、触发器、函数、视图等。
安装激活教程
1.文件获取:链接:https://pan.baidu.com/s/1aB2BGHNdIwYkBaxTB6hNSA?pwd=zxy9 提取码:zxy9
在下载解压后,大家将获得navicat160_premium_en_x64.exe和crack等文件,双击navicat160_premium_en_x64.exe进入安装向导,如图
先安装Navicat
2.勾选我接受此协议,如图
3.点击browse更换软件安装目录,默认目录:C:\Program Files\PremiumSoft\Navicat Premium 16;如图
4.创建桌面快捷方式,如图
5.点击install开始安装软件,如图
6.等待安装完成,如图
7.安装完成,先不要运行软件,等待安装激活补丁,如图
8.在安装激活补丁前,首先要打开软件的安装目录,如果忘记软件的安装目录,请返回到桌面,找到软件的桌面快捷图标,并右键点击图标,出现弹窗后选择“打开文件位置”即可获得文件安装目录。
9.断网后打开NavicatCracker.exe,不断网就报错
然后在Patch!的旁边选择navicat16的路径
点击patch,点击是
点击下方图片的Generate!,把Keygen的激活码复制下来
重新打开navicat,输入刚刚复制的激活码
断网情况下点击激活,选择手动激活
将请求码复制到NavicatCracker.exe的Request Code,即下方图片
点击底部Generate Activation Code !生成
.然后Activation Code下面的激活码复制到手动激活那边,看下方图片
再点击激活,就成功了,再把网接回来就行了。
总结一下
1.全程断网
2.以管理员方式打开cracker
3.navicat路径和cracker需要同个并排目录下,最好不要装在c盘,然后记得patch的目录是你安装好的目录,而不是c盘的那个目录
4.按装教程一步一步来
5.需要安装我网盘的navicat
需要使用我网盘里的navicat不能使用你原本的,因为有版本迭代的dll文件问题。
正常情况很顺滑,如果各种问题就
1.断网。
2.卸载并删除安装文件夹。
3.管理员模式打开
项目分为6个模块:
依赖关系:
magic.shop.java.admin
|-configuration 配置包
| |-authorization 鉴权配置包
| |-cors 跨域处理包
| |-handler 异常处理包
| |-identification 认证配置包
| |-security 授权及其他安全配置包
| |
|-controller 业务控制器包
| |-agent 代理相关
| |-distribution 分销相关
| |-finance 财务相关
| |-goods 商品相关
| |-home 控制台相关
| |-member 用户相关
| |-operation 运营相关
| |-order 订单相关
| |-promotion 促销相关
| |-setting 平台设置相关
| |
|-mq 消息队列
|-qtz 定时任务集成
|-sys 后台系统角色模块
|-tool 系统通用工具类
| |-ExcelHelper.java excel导入导出帮助类
| |-PageParameter.java 通用分页接受类
| |-Result.java 通用返回结果类
| |-UserUtils.java 用户id获取帮助
xxxxxxxxxx
magic.shop.java.api
|-configuration 系统配置包
| |-authorization 鉴权配置包
| |-exeption 异常处理类包
| |-identification 认证处理包
| |-setting 其他配置包
| |
|-controller 业务控制器包
| |-advert 广告相关
| |-agent 代理相关
| |-article 文章相关
| |-cart 购物车相关
| |-common 通用公共业务
| |-distribution 分销相关
| |-goods 商品相关
| |-order 订单相关
| |-notice 通知相关
| |-promotion 促销相关
| |-store 门店相关
| |-user 用户相关
| |-wx 微信相关
| |
|-mq 消息队列
|-query 查询对象封装类包
|-service 支付及退款的业务包
|-tool 工具包
xxxxxxxxxx
magic.shop.java.common
|-agent 代理模块
| |-bo 业务对象
| |-mapper 持久化层
| |-po 实体对象
| |-service 服务层
| |-vo 表现对象
| |
|-cart 购物车模块
| |-bo 业务对象
| |-mapper 持久化层
| |-po 实体对象
| |-service 服务层
| |-vo 表现对象
| |
|-distribution 分销模块
| |-bo 业务对象
| |-mapper 持久化层
| |-po 实体对象
| |-service 服务层
| |-vo 表现对象
| |
|-finance 财务模块
| |-bo 业务对象
| |-mapper 持久化层
| |-po 实体对象
| |-service 服务层
| |-vo 表现对象
| |
|-goods 商品模块
| |-bo 业务对象
| |-mapper 持久化层
| |-po 实体对象
| |-service 服务层
| |-vo 表现对象
| |
|-member 会员模块
| |-bo 业务对象
| |-mapper 持久化层
| |-po 实体对象
| |-service 服务层
| |-vo 表现对象
| |
|-operation 运营模块
| |-bo 业务对象
| |-mapper 持久化层
| |-po 实体对象
| |-service 服务层
| |-vo 表现对象
| |
|-order 订单车模块
| |-bo 业务对象
| |-mapper 持久化层
| |-po 实体对象
| |-service 服务层
| |-vo 表现对象
| |
|-promotion 促销模块
| |-bo 业务对象
| |-mapper 持久化层
| |-po 实体对象
| |-service 服务层
| |-vo 表现对象
| |
|-setting 平台设置模块
| |-bo 业务对象
| |-mapper 持久化层
| |-po 实体对象
| |-service 服务层
| |-vo 表现对象
| |
|-sys 系统模块
| |-bo 业务对象
| |-mapper 持久化层
| |-po 实体对象
| |-service 服务层
| |-vo 表现对象
| |
xxxxxxxxxx
1,数据库名:必须使用英文小写加下划线构成,并且按照项目创建日期+项目英文名称命名,例如:数据库名20230711magic_shop
2,表名:必须使用英文小写加下划线构成,统一使用magic_shop_前缀+名词的单数形式,例如:magic_shop_user, magic_shop_user_balance
3,字段名:必须使用英文小写加下划线构成,尽量避免数据库关键字,避免不必要的麻烦,例如:id,user_id,create_time
xxxxxxxxxx
1,类名:大驼峰命名法,不得使用拼音,例如:User,UserBalance
2,变量:小驼峰命名法
3,常量:全大写加下划线隔开
4,包名:单个单词全小写
5,实体:统一加注解@Getter,@Setter,可选@ToString
什么是父级?
A邀请了B注册app,那么A就是B的父级。
分销与代理的区别
区别1:分销最多对父级寻找3层,代理可无限往父级寻找。
类中必须有注释,类的描述,作者,创建时间
在po中添加实体对象,需要严格按照标准格式创建
x/**
* 会员实体
*
* @author 陈国庆
* @since 2022/12/8 16:57
*/
"magic_shop_user") (
public class User {
value = "id", type = IdType.AUTO) (
private Integer id;
private String 其他字段;
}
在mapper中创建接口,需要严格按照标准格式创建
xxxxxxxxxx
/**
* 会员持久层
*
* @author 陈国庆
* @since 2022/12/8 16:57
*/
public interface UserMapper extends BaseMapper<User> {
}
在service中创建类,需要严格按照标准格式创建
xxxxxxxxxx
/**
* 会员服务层
*
* @author 陈国庆
* @since 2022/12/8 16:57
*/
public class UserService extends ServiceImpl<UserMapper, User> implements IService<User> {
}
在controller中创建类,需要严格按照标准格式创建
xxxxxxxxxx
/**
* 会员管理
*
* @author 陈国庆
* @since 2022/12/8 17:14
*/
"/member/user") (
public class UserController {
private final UserService userService;
/**
* 获取用户信息
*/
"/GetUserInfo") (
public Result<MinUserVo> GetUserInfo() {
Integer userId = UserUtils.getCurrentUserId();
MinUserVo minUserVo = userService.queryUser(userId);
return Result.ok(minUserVo);
}
/*业务代码*/
}
此项目使用消息队列主要有一下几个方面:
1,应用解耦,将复杂的业务分不同的阶段,某一阶段业务完成后可发送一个消息,通知下一个阶段的任务开始执行。
2,快速响应,在用户请求某些api端接口时,设计复杂又耗时的任务时,可发送消息交由admin端处理,同时减轻api端压力。
消息队列常量位置:magic.shop.java.common.other.mq.RabbitConst
交换机以EXCHANGE 开头,路由key以ROUTING_KEY 开头,队列以QUEUE 开头,例如:
xxxxxxxxxx
/**
* 订单交换机 ==================================================
* api -->> admin
*/
public static final String EXCHANGE_ORDER = "exchange.order";
/**
* 为订单所创建的消息队列路由key
*/
public static final String ROUTING_KEY_ORDER_CREATE = "key.order.create";
/**
* 为订单所创建的消息队列
*/
public static final String QUEUE_ORDER_CREATE = "queue.order.create";
xxxxxxxxxx
/**
* @author 陈国庆
* @since 2023/2/15 8:54
*/
public class CreateListener {
private final CommonOrderService commonOrderService;
bindings = { (
(
value = (RabbitConst.QUEUE_ORDER_CREATE),
exchange = (RabbitConst.EXCHANGE_ORDER),
key = RabbitConst.ROUTING_KEY_ORDER_CREATE)
}, errorHandler = "mqErrorCatch")
public void orderCreate( Order order) {
// 处理订单创建后的后续业务
System.out.println(order + " created");
commonOrderService.orderLog(order, OrderLog.TYPE_CREATE);
}
}
4.2.3 发送消息
xxxxxxxxxx
/**
* @author 陈国庆
* @since 2023/2/15 9:09
*/
public class OrderMQ {
private final RabbitTemplate rabbitTemplate;
public OrderMQ(RabbitTemplate rabbitTemplate) {
this.rabbitTemplate = rabbitTemplate;
}
public void sendOrderCreated(Order order) {
rabbitTemplate.convertAndSend(RabbitConst.EXCHANGE_ORDER, RabbitConst.ROUTING_KEY_ORDER_CREATE, order);
}
}
系统权限的常量类:magic.shop.java.admin.configuration.security.AuthoritiesConstant
配置常量值,例如:
xxxxxxxxxx
// 系统用户管理
type = Type.SysUser, value = "列表") (
public static final String SYS_USER_PAGE = "sys:user:page";
type = Type.SysUser, value = "编辑") (
public static final String SYS_USER_EDIT = "sys:user:edit";
type = Type.SysUser, value = "删除") (
public static final String SYS_USER_DELETE = "sys:user:delete";
type = Type.SysUser, value = "创建") (
public static final String SYS_USER_CREATE = "sys:user:create";
private enum Type {
// 后台管理模块
SysUser("系统用户"),
}
权限一般列为 增删查改 4个,特殊情况应进行增减。
将权限配置到控制器上:
xxxxxxxxxx
/**
* 系统用户管理
*
* @author 陈国庆
*/
"/SysUser") (
public class SysUserController {
private final SysUserService userService;
private final SysRoleService roleService;
/**
* 获取列表
*/
"/GetPageList") (
AuthoritiesConstant.SYS_USER_PAGE) (
public Result getSysUserList( PageParameter<SysUserQuery> parameter) {
return Result.ok(userService.getSysUserList(parameter));
}
}
最终使用@Secured(AuthoritiesConstant.SYS_USER_PAGE) 进行控制
在指定包magic.shop.java.admin.qtz.job中加入任务类,实现magic.shop.java.qtz.job.CustomJob接口,例如:
xxxxxxxxxx
/**
* @author 陈国庆
* @since 2023/2/8 16:28
*/
public class JobTest01 implements CustomJob {
public void execute(String data) {
System.out.println("calling some one job , data: " + data + " " + new Timestamp(System.currentTimeMillis()));
}
public String name() {
return "task test - 01";
}
}
备注:在执行类名选择中可以找到刚刚新增的任务
配置一些端口,域名等
配置redis连接,新建项目时需要修改数据库
MySQL连接配置
消息队列连接配置
xxxxxxxxxx
pages/xx模块/xx页面
|-index.vue 页面配置
|-Column.ts 页面的数据表格配置
|-FormScheme.ts 编辑数据的弹窗配置
|-SearchFields.ts 搜索内容配置
|-DescriptionColumn.ts 描述的弹框配置
可以直接在文章分类页面照搬所有内容。
xxxxxxxxxx
<template>
<CSearchTable
:search-fields="SearchFields"
:columns="column"
:data-source-api="GetPageList"
>
<template #action="{record}">
<a-space>
<a-button size="small" @click="()=>edit(record['id'], $refs.modalFormRef)">编辑</a-button>
<a-button size="small" @click="()=>description(record['id'], $refs.desRef)">详情</a-button>
<CDeleteButton :confirm-api="DoDelete" :confirm-data="{id: record['id']}"
:title="'确认删除吗'"/>
</a-space>
</template>
<template #bar>
<a-button @click="()=>insert($refs.modalFormRef)" type="primary" shape="round">新增</a-button>
</template>
<template #component>
<!-- 新增、编辑框、必须放入此处 -->
<CFormModal ref="modalFormRef" :scheme="FormScheme" :width="1000"/>
</template>
</CSearchTable>
<!-- 搜索表格框,模板,不用可删 -->
<CSearchTableModal
:search-fields="SearchFields"
:columns="column"
:data-source-api="GetPageList"
:width="1000"
>
<!-- 插槽内容同CSearchTable -->
</CSearchTableModal>
<!-- 详情框,模板,不用可删 -->
<CDescriptionPlusModal ref="desRef" width="70%" title="分类详情" horizontal="true"/>
</template>
<script setup lang="ts">
import CSearchTable from "@/components/magic-shop-table/CSearchTable.vue";
import column from "./Column";
import FormScheme from "./FormScheme"
import SearchFields from "./SearchFields";
import CFormModal from "@/components/magic-shop-form/CFormModal.vue";
import CDeleteButton from "@/components/magic-shop-button/CDeleteButton.vue";
import api from "@/services/api";
import ShowModalConfig from "@/components/magic-shop-form/ShowModalConfig";
import CSearchTableModal from "@/components/magic-shop-table/CSearchTableModal.vue";
import CDescriptionPlusModal from "@/components/magic-shop-description/CDescriptionPlusModal.vue";
import DescriptionColumn from "./DescriptionColumn";
import CommonService from "@/services/system/CommonService";
const {
operation: {
articleCategoryApi:{
GetPageList,
DoDelete,
GetCreate,
DoCreate,
GetEdit,
GetById,
DoEdit,
}
},
} = api;
// 编辑弹框
function edit(id, modalFormRef) {
modalFormRef.showModalByConfig({
title: '编辑',
hideKey: 'id',
getEditApi: GetEdit,
getEditCallback: (editData) => console.log(editData),
getEditKey: {id},
doEditApi: DoEdit,
doEditCallback: (formData) => console.log(formData),
} as ShowModalConfig);
}
// 插入弹框
function insert(modalFormRef) {
modalFormRef.showModalByConfig({
title: '新增',
hideKey: 'id',
getEditApi: GetCreate,
getEditCallback: (editData) => console.log(editData),
doEditApi: DoCreate,
doEditCallback: (formData) => console.log(formData),
} as ShowModalConfig);
}
// 描述弹框
function description(id, r) {
CommonService.requestApi(GetById, {id}).subscribe(res => {
r.show(DescriptionColumn(res.data.model))
})
}
</script>
<style scoped>
</style>
若服务器不是最新LTS版本,应更新至最新LTS版本,并将软件升级至最新。
在oracle官网下载最新LTS版的jdk版本,tar.gz包,注意根据服务器cpu架构下载不同的版本,以实际情况来定。在服务器中下载完成后配置环境变量,在/etc/profile中加入配置:
xxxxxxxxxx
export JAVA_HOME=/opt/jdk/jdk-21.0.2
export PATH=$PATH:$JAVA_HOME/bin
注意替换jdk解压的路径。
在github中找到redis源码最新版下载至服务器,以redis7.2.4为例,解压,进入redis根目录,然后执行以下命令(此操作依赖C++库,精简操作系统需要单独安装gcc):
xxxxxxxxxx
make
make install
cd utils
./install_server.sh
执行完成之后将可以使用/etc/init.d/redis_*中的命令控制启动与停止。
按照完成后可选配置/etc/redis/6379.conf配置文件。
启动与停止:
xxxxxxxxxx
systemctl start redis_6379
systemctl stop redis_6379
Java版使用RabbitMQ,在rabbit官方按照步骤执行快速安装命令,在任意位置创建一个可执行脚本.sh,然后将一下命令粘贴进入命令中:
xxxxxxxxxx
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's main signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Community mirror of Cloudsmith: modern Erlang repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null
## Community mirror of Cloudsmith: RabbitMQ repository
curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
# another mirror for redundancy
deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main
## Provides RabbitMQ
##
deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
# another mirror for redundancy
deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main
EOF
## Update package indices
sudo apt-get update -y
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing
然后执行改脚本等待完成安装。
启动与停止:
xxxxxxxxxx
systemctl start rabbitmq-server.service
systemctl stop rabbitmq-server.service