开源商城项目 MallService-SSM Spring、SpringMVC、Mybatis、MySQL、Vue、Nuxt

4 篇文章 2 订阅
3 篇文章 0 订阅

MallService-SSM

在线商城后端服务
Github »

开源地址

https://github.com/gaowanlu/MallService-SSM

项目简介

项目开始是为完成大学课程作业,项目也定会存在许多的问题。

我们欢迎大家能够指正。 欢迎Fork、 PullRequest🎉

项目目录结构

├─src
    ├─main
    │  ├─java
    │  │  └─site
    │  │      └─linkway
    │  │          ├─core
    │  │          │  ├─controller(控制器)
    │  │          │  ├─entity  (实体类)
    │  │          │  │  ├─bo  (business object 业务对象) 
    │  │          │  │  ├─po  (persistant object 持久对象)  
    │  │          │  │  └─vo  (value object值对象)
    │  │          │  ├─filter  (拦截器)
    │  │          │  ├─mapper  (mapper类)
    │  │          │  └─service (服务类)
    │  │          └─utils  (常用工具类)
    │  ├─resources
    │  │  ├─mapper(mapper 相关xml文件) 
    │  │  ├─mybean  (自定义bean)   
    │  │  ├─applicationContext.xml  (Spring bean 入口)  
    │  │  ├─database.properties  (数据库信息配置)    
    │  │  ├─log4j.properties  (Log4j配置)    
    │  │  ├─mybatis-config.xml  (mybatis配置)   
    │  │  ├─spring-mvc.xml  (控制层配置)  
    │  │  ├─spring-mybatis.xml  (spring mybatis整合配置)  
    │  │  ├─spring-service.xml  (服务层配置)    
    │  │  └─sql   (数据库初始化SQL)  
    │  └─webapp  (前端项目) 
    │      └─WEB-INF 

相关技术

Spring、SpringMVC、Mybatis 、MySQL

Docker 部署

Docker

docker run -it -p 1234:8080 \
  -e CATALINA_OPTS="-Djdbc.url=jdbc:mysql://__DB_SERVER__:3306/__DB_NAME__ -Djdbc.username=__USERNAME__ -Djdbc.password=__PASSWORD__" \
  --name mallservice \
  gaowanlu/mallservice

其中,1234 为监听端口号,__DB_SERVER__ / __DB_NAME__ / __USERNAME__ / __PASSWORD__ 为数据库连接配置。

版本

versiondatechanged content

联系我们

Email heizuboriyo@gmail.com
Address 桂林电子科技大学

MallService API 文档

(最新版本/草稿见此处

返回 JSON 规范

操作成功时:

{
    "result": true,
    // ...其它信息...
}

操作失败时:

{
    "result": false,
    "message": "(错误消息)"
}

请求参数约定

  • 给出参数则使用 application/x-www-form-urlencoded
  • 输入请求体为请求数据类型 application/json
  • 带有上传文件的请求 multipart/form-data

身份安全

登录

POST /api/identitySecurity/login

  • 参数 {id, password} (id 暂时仅支持用户邮箱)
  • 注 返回带有isAdmin:boolean字段

退出登录

POST /api/identitySecurity/logout

注册账号

POST /api/identitySecurity/register

  • 参数 {password, emailCode}

发送验证码

POST /api/identitySecurity/sendEmailCode

  • 参数 {email}

修改密码

POST /api/identitySecurity/changePassword

  • 参数 {newPassword, emailCode}

个人信息

获得个人信息

GET /api/user/myData

更新性别或者昵称

PUT /api/user/myData

  • 参数 {sex, name}

更新头像

PUT /api/user/avatar

  • 表单文件属性 "file": file

购物车

添加购物车条项

POST /api/user/cart

  • 参数 {goodId, num}

删除购物车条项

DELETE /api/user/cart

  • 参数 {cartId}

获得购物车全部条项

GET /api/user/cart

购物车条项更新

注:更新num字段

PUT /api/user/cart

购物车覆盖

PUT /api/user/cart/cover


收货地址

获得全部存储在平台的收货地址

GET /api/user/addresses

删除地址

DELETE /api/user/addresses

添加地址

POST /api/user/addresses

  • 参数 {phone, name, address}

收货地址更新

PUT /api/user/addresses

  • 参数 {addressId, phone, name, address}

图片分发

获得指定图片

GET /api/img?imgId={}


商品浏览

商品推荐列表(暂为随机检索出20个)

GET /api/commodity/recommendation

浏览商品

POST /api/commodity/detail

商品类型列表

GET /api/commodity/typeList


商品评论

现存问题

  1. 没有买过的东西也可以评论
  2. 一个商品可以有多个同一个用户的一级评论
  3. 暂时只是简单的实现了评论的功能、能像一个小小的社交功能

根据商品id获得评论列表

POST /api/comment/fList

  • 参数 {goodId:string,pageSize:number,pageNow:number}
  • 返回格式 CommentList

根据父评论id请求子评论列表

POST /api/comment/sList

  • 参数 {fCommentId:string,pageSize:number,pageNow:number}
  • 返回格式 CommentList

根据商品id添加父评论

POST /api/comment/add/f

  • 参数 {content:string,goodId:string,rate:number(1~5)}
  • 返回格式 {result:boolean,message:(fCommentId)}
  • 注:利用message将新的父评论id捎带 如需要改就改

根据父评论id增加子评论

POST /api/comment/add/s

  • 参数 {content:string,fCommentId:string}
  • 返回格式 {result:boolean,message:(sCommentId)}

删除父评论

DELETE /api/comment/delete/f

  • 参数 {fCommentId:string}

删除子评论

DELETE /api/comment/delete/s

  • 参数 {sCommentId:string}

订单-用户

增加新订单

POST /api/user/order

查看已有订单详情

POST /order/detail

更新订单状态

POST /api/user/order/update

  • 请求参数 {orderId,status}
  • 参数详情 status in (‘已签收’,‘退款中’)

获得用户订单列表

GET /api/user/order


搜索

商品搜索

POST /api/search/commodity


用户管理

充值 (提供ID与金额)

POST /api/admin/recharge

注:提供用户邮箱与金额进行余额增减(主要为了生产模拟)
参数 {email:string,amount:number}


数据类型

返回

PersonalData
/*个人信息*/
interface PersonalData {
    userId: string;
    name: string;
    sex: string;
    profilePhotoURL: string;
    money: number;
    email: string;
}
CartItem
/*购物车条项*/
interface CartItem {
    cartId: string;
    goodId: string;
    userId: string;
    num: number;
    price:number;
    name:string;
    profile:string;
    stock:number;
    soldSum:number;
    goodType:string;
    goodTypeId:number;
    imgsURL:string[] //商品相关图片
}
CartList
/*购物车列表*/
interface CartList {
    result: boolean;
    carts: CartItem[];
}
Address
/*收货地址*/
interface Address{
    addressId: string;
    userId: string;
    phone: string;
    address: string;
    name: string;
}
AddressList
/*收货地址列表*/
interface AddressList{
    result:boolean;
    addresses:Address[];
}
Commodity
/*商品*/
interface Commodity{
    goodType:string;
    goodTypeId:number;
    name:string;
    profile:string;
    price:number;
    goodId:string;
    stock:number;
    soldSum:number;
    onSale:number;//0 or 1
    imgsURL:string[];
    detailsImg:string;//商品详情图片URL
}
CommodityTipList
/*商品推荐列表*/
interface CommodityTipList{
    result:boolean;
    commodities:Commodity[]
}
CommentList
/*评论列表*/ 
interface CommentList{
    result:boolean;
    comments:Comment[];//评论列表
    pageNow:number;//现在所在页号
    pageSize:number;//每页得的大小
    pageCount:number;//总共页数
}
Comment
/*评论*/ 
interface Comment{
    commentId:string;//评论id
    content:string;//评论文字内容
    userId:string;//用户id
    userName:string;//用户昵称
    avatarURL:string;//用户头像URL
    time:string;//评论发布时间
    rate:number;//(注:子评论没有rate,但此字段返回至客户端) 
    childCount:number;//此条评论子评论数量
}
OrderItem
/*订单项*/
interface OrderItem {
    orderGoods:OrderItemGood[];//订单商品
    order:Order;
}
OrderItemGood
/*订单商品*/
interface OrderItemGood {
    num:number;
    goodId:string;
    price:double;
    name:string;
    profile:string;//商品描述
    imgsURL:string[];
}
Order
/*订单*/
interface Order {
    orderId:string;
    userId:string;
    status:string;//'待付款','待发货','已发货','已签收','退款中'
    phone:string;
    time:string;//format YYYY-MM-DD HH:MM:SS  
    address:string;
    name:string;
    logisticsNumber:string;
    logisticsName:string;
    priceCount:double;
}
OrderList
/*订单列表*/ 
interface OrderList {
    orderItems:OrderItem[];
    pageNow:number;
    pageSize:number;
    pageCount:number;
}
CommoditySearchResult
/*商品搜索结果*/
interface CommoditySearchResult{
    commodities:Commodity[];
    pageCount:number; //总页数
    pageNow:number;//现在所在页号
    pageSize:number;//每页得的大小
    pageCount:number;//总共页数
}
CommodityTypeList
/*商品类型列表*/ 
interface CommodityTypeList{
    types:CommodityType[];
}
/*商品类型*/ 
interface CommodityType{
    goodTypeId:number;
    name:string;
}

请求

PostOrder
/*提交订单*/
interface PostOrder
{
    goods:OrderGoodItem[];
    addressId:string;
}
OrderGoodItem
/*提交订单商品项*/
interface OrderGoodItem{
    goodId:string;
    num:number;
}
PostSearch
/*提交搜索
  注意事项:number:0 string:'' 则代表不使用此属性
*/
interface PostSearch{
    keyword:string;//商品名称关键词
    searchType:string;//类型名称
    price:MinMax;//价格区间
    pageNow:number;//现在页码1~n
    pageSize:number;//每页大小
    goodId:string;//商品id
}
interface MinMax {
    min:number;//最小
    max:number;//最大
}
PostCommodityType
interface PostCommodityType {
    goodTypeId:number;
    name:string;
    operator:number;//0 更新操作 1 插入操作
}
PostCart
interface PostCart{
    goodId:string;
    num:number;
}

管理端

商品管理

商品搜索以及获取列表
  • 请见商品搜索模块
获取类型列表

请见商品浏览模块

更新类型列表
  • 请求格式 PostCommodityType
    注:会改变原来此类别的商品的类别
  • 返回格式
    当新增时,利用message:string
    捎带新的goodtypeId,注意要parseInt()
新增商品

格式 multipart/form-data

price:价格 number
name:名称 string
profile:简介 string
stock:库存量 number
goodTypeId:商品类型号 number (可能需要多个、暂为其指定一个类型)  
onSale:是否进行上架 number(0|1)  
file:string[] 已经上传的图片的imgId数组序列 可为空
detailsImg:File 可为空 
更新商品属性

POST /api/admin/commodity/update

goodId:商品号 string  
price:价格 number
name:名称 string
profile:简介 string
stock:库存量 number
goodTypeId:商品类型号 number (可能需要多个、暂为其指定一个类型)  
onSale:是否进行上架 number(0|1)  
商品图片删除

POST /api/admin/commodity/img/delete

参数 {imgId:string}

追加商品图片

POST /api/admin/commodity/img/add

参数 {goodId:string,file:File[]}

订单

获取订单列表(订单搜索)

POST /api/admin/order/search

  • 提交格式
/*订单搜索、string为'' 时代表不适用此属性*/ 
interface PostOrderSearch{
    orderId:string;//订单号
    email:string;//订单所属者email
    status:string;//订单状态
    time:DateMinMax;//订单产生时间区间 
    pageSize:number;//每页多少个 1~20 
    pageNow:number;//现在所在页码 1~
}
/*想要其不适用则放开区间例如2001-12-21 ~ 未来时间*/
interface DateMinMax{
    min:Date;
    max:Date;//Date format pattern = "YYYY-MM-DD HH:MM:SS"  
}
发货

POST /api/admin/order/ship

修改物流信息同时更改发货状态

参数 {orderId:string,logisticsNumber:string,logisticsName:string}

同意退款

POST /api/admin/order/refund

由退款中状态改为已结束、并将订单金额退还至用户(可能还会存在商品库存量问题)

参数 {orderId:string}

更新商品详情图片

POST /api/admin/commodity/detailsImg

参数 {goodId:string,detailsImg:File}

图片上传

POST /api/admin/img/upload

  • 参数 {file:File[]}
  • 返回格式
{
  "result": true,
  "imgId": [
    "d76647d277ea4073acc8ebca0aa69040",
    "d0a37861bc6d4eb6827ea6df7fb52ef0"
  ],
  "imgURL": [
    "/api/img?imgId=d76647d277ea4073acc8ebca0aa69040",
    "/api/img?imgId=d0a37861bc6d4eb6827ea6df7fb52ef0"
  ]
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高万禄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值