一、发起项目
1. 创建表
# 创建分类表
CREATE TABLE t_type
(
id INT(11) NOT NULL AUTO_INCREMENT,
NAME VARCHAR(255) COMMENT '分类名称',
remark VARCHAR(255) COMMENT '分类介绍',
PRIMARY KEY (id)
);
# 创建项目分类中间表
CREATE TABLE t_project_type
(
id INT NOT NULL AUTO_INCREMENT,
projectid INT(11),
typeid INT(11),
PRIMARY KEY (id)
);
# 创建标签表
CREATE TABLE t_tag
(
id INT(11) NOT NULL AUTO_INCREMENT,
pid INT(11), NAME VARCHAR(255),
PRIMARY KEY (id)
);
# 创建标签中间表
CREATE TABLE t_project_tag
(
id INT(11) NOT NULL AUTO_INCREMENT,
projectid INT(11),
tagid INT(11),
PRIMARY KEY (id)
);
# 创建项目表
CREATE TABLE t_project
(
id INT(11) NOT NULL AUTO_INCREMENT,
project_name VARCHAR(255) COMMENT '项目名称',
project_description VARCHAR(255) COMMENT '项目描述',
money BIGINT (11) COMMENT '筹集金额',
DAY INT(11) COMMENT '筹集天数',
STATUS INT(4) COMMENT '0-即将开始,1-众筹中,2-众筹成功,3-众筹失败',
deploydate VARCHAR(10) COMMENT '项目发起时间',
supportmoney BIGINT(11) COMMENT '已筹集到的金额',
supporter INT(11) COMMENT '支持人数',
COMPLETION INT(3) COMMENT '百分比完成度',
memberid INT(11) COMMENT '发起人的会员 id',
createdate VARCHAR(19) COMMENT '项目创建时间',
follower INT(11) COMMENT '关注人数',
header_picture_path VARCHAR(255) COMMENT '头图路径',
PRIMARY KEY (id)
)
# 创建项目表 项目详情图片表
CREATE TABLE t_project_item_pic
(
id INT(11) NOT NULL AUTO_INCREMENT,
projectid INT(11),
item_pic_path VARCHAR(255),
PRIMARY KEY (id)
);
# 创建项目发起人信息表
CREATE TABLE t_member_launch_info
(
id INT(11) NOT NULL AUTO_INCREMENT,
memberid INT(11) COMMENT '会员 id',
description_simple VARCHAR(255) COMMENT '简单介绍',
description_detail VARCHAR(255) COMMENT '详细介绍',
phone_num VARCHAR(255) COMMENT '联系电话',
service_num VARCHAR(255) COMMENT '客服电话',
PRIMARY KEY (id)
);
# 创建回报信息表
CREATE TABLE t_return
(
id INT(11) NOT NULL AUTO_INCREMENT,
projectid INT(11),
TYPE INT(4) COMMENT '0 - 实物回报, 1 虚拟物品回报',
supportmoney INT(11) COMMENT '支持金额',
content VARCHAR(255) COMMENT '回报内容',
COUNT INT(11) COMMENT '回报产品限额,“0”为不限回报数量',
signalpurchase INT(11) COMMENT '是否设置单笔限购',
purchase INT(11) COMMENT '具体限购数量',
freight INT(11) COMMENT '运费,“0”为包邮',
invoice INT(4) COMMENT '0 - 不开发票, 1 - 开发票',
returndate INT(11) COMMENT '项目结束后多少天向支持者发送回报',
describ_pic_path VARCHAR(255) COMMENT '说明图片路径',
PRIMARY KEY (id)
);
# 创建发起人确认信息表
CREATE TABLE t_member_confirm_info
(
id INT(11) NOT NULL AUTO_INCREMENT,
memberid INT(11) COMMENT '会员 id',
paynum VARCHAR(200) COMMENT '易付宝企业账号',
cardnum VARCHAR(200) COMMENT '法人身份证号',
PRIMARY KEY (id)
);
2. 创建VO对象
package com.yixuexi.crowd.entity.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
/**
* @date: 2021/3/20 13:45
* @author: 易学习
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProjectVO implements Serializable {
private static final long serialVersionUID = 1L;
private List<Integer> typeIdList;
// 标签 id 集合
private List<Integer> tagIdList;
// 项目名称
private String projectName;
// 项目描述
private String projectDescription;
// 计划筹集的金额
private Integer money;
// 筹集资金的天数
private Integer day;
// 创建项目的日期
private String createdate;
// 头图的路径
private String headerPicturePath;
// 详情图片的路径
private List<String> detailPicturePathList;
// 发起人信息
private MemberLauchInfoVO memberLauchInfoVO;
// 回报信息集合
private List<ReturnVO> returnVOList;
// 发起人确认信息
private MemberConfirmInfoVO memberConfirmInfoVO;
}
3. PO对象使用逆向工程创建
二、 发起项目-代码
1. 总目标:
2. 思路
3.代码
1. 添加zuul 访问project工程 【配置】
application.yaml 【第9-11行】
zuul:
routes:
crowd-portal: # 自定义路由规则的名称,在底层是一个Map的key
serviceId: yixuexi-crowd-auth # 目标微服务名称,ZuulRoute类型的一个属性
path: /** # 用来代替目标微服务名称的路径,ZuulRoute类型的一个属性
# /**表示比配多层路径, 如果没有/**则不能匹配后续的多层路径了
#ignored-services: # 忽略指定微服务名称,让用户不能通过微服务名称访问
# - consumer-service
crowd-project: # 配置一下project项目 zuul访问 这就是key
serviceId: yixuexi-crowd-project # 微服务名称
path: /project/** # 代替目标微服务名称的路径
ignored-services: '*' # 忽略所有微服务名称
sensitive-headers: "*" # 在zuul向其他微服务重定向是保持原本头信息(请求头,响应头)
注意: 如果一个地址不经过zuul的情况下访问 那么就不要带 /project 部分
例如:project工程内部的view-controller 不会经过zuul
2. 在project工程配置view-controller
@Configuration
public class CrowdWebMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// view-controller 是在project工程内部定义的,这里是不经过zuul访问的地址
// 所以这个路径不加路由规则定义的 /project
// 跳转到 同意协议 页面
registry.addViewController("/agree/protocol/page").setViewName("project-agree");
registry.addViewController("/launch/project/page").setViewName("project-launch");
}
}
坑:project工程的html页面 【退出系统】】的链接 需要这样写:
需要写清楚 是要从zuul去访问auth/member/logout 接口,这样才能保持session一致
<a href="http://www.localhost:80/auth/member/logout">退出系统</a>