使用须知!!:本接口采用
jwt
数据安全措施,如果想正常获取数据,请先登入
,并且保证每次请求传送authorization
请求头,携带登入之后返回的的token
管理系统后台v2.0.1更新公告: 增加权限控制,角色列表获取,权限菜单获取 增加获取用户功能 优化拦截中间件 优化路径不匹配返回权限错误的问题 修复静态资源需要登入而获取不到的情况 修复图片上传不显示问题 文档更新 详情请访问 https://gitee.com/d718781500/student_product_manager_system
补齐依赖
npm install
或者
yarn
开启服务**
npm start
base:http://www.chst.vip
天气每隔8小时会同步一次,每天0点必定同步一次
接口详情 | 请求方式 | 地址 |
---|---|---|
天气 | get | /weather/getWeather |
参数 | 是否必填 | 说明 |
---|---|---|
key | 否 | key的取值为all,传了则返回所有历史天气 |
city | 否 | 查询的城市名字,不能带市,比如南京,次数一分钟查询一次 |
天气账户有可能变更,所以提供修改接口
接口详情 | 请求方式 | 地址 |
---|---|---|
修改天气账户 | get | /weather/updateWeatherCount |
参数 | 是否必填 | 说明 |
---|---|---|
version | 是 | 请求api的版本,有不同的天气比如v61 |
appid | 是 | appid账号生成的id |
appsecret | 是 | 账户生成的secret |
接口详情 | 请求方式 | 地址 |
---|---|---|
获学登入日志 | get | /getloginlog |
参数 | 是否必填 | 说明 |
---|---|---|
page | 否 | 页码 |
count | 否 | 每次返回几条 默认返回10 |
成功返回值
{
"status": 200,
"state": true,
"msg": "success",
"data": [
{
"_id": "5cd964db16bd6f346879cf77",
"username": "cxk",
"lastLogin": {
"loginTime": "2019/05/13 20:36:26",
"ip": ""
},
"nowLogin": {
"ip": "",
"loginTime": "2019/05/13 20:36:43"
},
"__v": 0
},
{
"_id": "5cd964ca16bd6f346879cf76",
"username": "cxk",
"lastLogin": {
"loginTime": "2019/05/13 20:36:00",
"ip": ""
},
"nowLogin": {
"ip": "",
"loginTime": "2019/05/13 20:36:26"
},
"__v": 0
}
]
}
接口详情 | 请求方式 | 地址 |
---|---|---|
班级列表 | get | /students/getclasses |
成功返回值
{
"status": 200,
"state": true,
"data": [
"H51901",
"H51902"
]
}
接口详情 | 请求方式 | 地址 |
---|---|---|
获学员信息 | get | /students/getstulist |
参数 | 是否必填 | 说明 |
---|---|---|
page | 否 | 页码 |
count | 否 | 每次返回几条 |
class | 否 | 默认是全部班级的数据 |
成功返回值
{
"status": 1,
"state": true,
"msg": "请求成功",
"total": 2,
"data": [
{
"_id": "5cd3c534e1e75b0ea034cf83",
"name": "谭鹏",
"headimgurl":"",
"age": "21",
"class": "H51901",
"city": "重庆",
"degree": "专科",
"productUrl": "地址",
"description": "O(∩_∩)O哈哈~",
"cTime": "2019/05/09 02:14:12",
"sId": "WWLN97178546",
"__v": 0
}
]
}
接口详情 | 请求方式 | 接口地址 |
---|---|---|
增加学员信息 | post | students/addstu |
参数 | 是否必填 | 描述 |
---|---|---|
class | 是 | 班级 |
name | 是 | 学员的名字 |
age | 是 | 学员的年龄 |
city | 是 | 目前居住的城市 |
degree | 是 | 学历 |
productUrl | 是 | 项目地址 |
description | 是 | 一句话对自己的评价 |
headimgurl | 否 | 头像 |
增加成返回值
{
"status": 1,
"state": true,
"msg": "添加成功"
}
接口详情 | 请求方式 | 接口地址 |
---|---|---|
删除学员信息 | get | /students/delstu |
参数 | 是否必填 | 描述 |
---|---|---|
sId | 是 | 当前学员id |
// 删除成功
{
"status": 1,
"state": true,
"msg": "删除成功"
}
接口详情 | 请求方式 | 接口地址 |
---|---|---|
修改用户密码 | post | /students/updatestu |
参数 | 是否必填 | 描述 |
---|---|---|
sId | 是 | 用户Id |
token | 是 | token值 |
name | 否 | 学员的名字 |
age | 否 | 学员的年龄 |
city | 否 | 目前居住的城市 |
degree | 否 | 学历 |
productUrl | 否 | 项目地址 |
description | 否 | 一句话对自己的评价 |
headimgurl | 否 | 头像 |
接口详情 | 请求方式 | 地址 |
---|---|---|
搜索学员 | get | /students/searchstu |
参数 | 是否必填 | 描述 |
---|---|---|
key | 否 | 传入学员的姓名 |
count | 否 | 请求的条数(默认全部返回) |
page | 否 | 页码 |
接口详情 | 请求方式 | 接口地址 |
---|---|---|
上传学员头像 | post | /students/uploadStuAvatar |
参数 | 是否必填 | 描述 |
---|---|---|
headimgurl | 是 | 上传的文件格式 jpg|png|gif |
//成功数据
{
status: 200,
state: true,
msg: "上传成功",
headimgurl:http://106.12.79.128xxxx
}
接口详情 | 请求方式 | 地址 |
---|---|---|
获取验证码 | get | /users/getCaptcha |
接口详情 | 请求方式 | 地址 |
---|---|---|
获取验证码 | get | /users/refreshCaptcha |
接口详情 | 请求方式 | 地址 |
---|---|---|
获取验证码 | get | /users/verifyCaptcha |
参数 | 是否必填 | 描述 |
---|---|---|
captcha | 是 | 用户输入的验证码 |
接口详情 | 请求方式 | 地址 |
---|---|---|
获取所有用户 | get | /users/getAllUers |
{
"status": 200,
"state": true,
"msg": "success",
"users": [
{
"username": "lbw1",
"nickname": "五五开",
"roleid": "200"
},
{
"username": "root",
"nickname": "王者管理员",
"roleid": "1"
},
{
"username": "lbw2",
"nickname": "五五开",
"roleid": "200"
},
{
"username": "zj",
"nickname": "王远杰",
"roleid": "102"
},
{
"username": "zj01",
"nickname": "巴啦啦小魔仙",
"roleid": "102"
}
]
}
接口详情 | 请求方式 | 地址 |
---|---|---|
用户注册接口 | post | /users/register |
参数 | 是否必填 | 描述 |
---|---|---|
username | 是 | 用户名 |
password | 是 | 密码 |
phone | 否 | 手机号 |
nickname | 是 | 昵称 |
roles | 否 | 权限 |
注册成功返回值
{
"status": 1,
"state": true,
"msg": "注册成功",
"userInfo": {
"username": "lbw4",
"nickname": "开哥永不开挂",
"phone": "1577775772"
}
}
注册失败返回值
{
"status": 0,
"state": false,
"msg": "用户名已注册"
}
接口详情 | 请求方式 | 地址 |
---|---|---|
用户登入 | post | /users/login |
参数 | 是否必填 | 描述 |
---|---|---|
username | 是 | 账户 |
password | 是 | 密码 |
登入成功返回值
{
"status": 1,
"state": true,
"msg": "登入成功",
"userInfo": {
"username": "lbw4",
"nickname": "开哥永不开挂",
"phone": "1577775772"
}
}
登入失败返回值
{
"status": 0,
"state": false,
"msg": "用户名或者密码错误"
}
接口详情 | 请求方式 | 接口地址 |
---|---|---|
退出登入 | get | /users/sigout |
接口详情 | 请求方式 | 接口地址 |
---|---|---|
上传头像 | post | /users/uploadAvatar |
参数 | 是否必填 | 描述 |
---|---|---|
headimgurl | 是 | 上传的图片文件 |
uId | 是 | 当前用户的id |
token | 是 | token值 |
//成功数据
{
"status": 1,
"state": true,
"msg": "图片上传成功"
}
接口详情 | 请求方式 | 接口地址 |
---|---|---|
验证用户登入状态 | * | /verify |
接口详情 | 请求方式 | 接口地址 |
---|---|---|
修改用户密码 | post | /users/updatePassword |
参数 | 是否必填 | 描述 |
---|---|---|
username | 是 | 用户名 |
oldPassword | 是 | 原来的密码 |
newPassword | 是 | 需要修改的新密码 |
token | 是 | token值 |
//修改成功值
{
"status": 1,
"state": true,
"msg": "密码修改成功"
}
//用户名不存在返回值
{
"status": 0,
"state": false,
"msg": "不存在此用户"
}
//修改失败
{
"status": 0,
"state": false,
"msg": "密码修改错误"
}
接口详情 | 请求方式 | 接口地址 |
---|---|---|
添加角色 | post | /permission/addrole |
参数 | 是否必填 | 描述 |
---|---|---|
roleid | 是 | 添加的角色id |
token | 是 | token |
接口详情 | 请求方式 | 接口地址 |
---|---|---|
获取角色列表 | get | /permission/getrole |
参数 | 是否必填 | 描述 |
---|---|---|
roleid | 否 | 查询的角色id |
token | 是 | token |
结果
{
"status": 200,
"msg": "success",
"roles": [
{
"roleid": "200",
"roleName": "员工"
},
{
"roleid": "102",
"roleName": "总监"
},
{
"roleid": "103",
"roleName": "主管"
},
{
"roleid": "1",
"roleName": "王者管理员"
}
]
}
接口详情 | 请求方式 | 接口地址 |
---|---|---|
获取权限菜单 | get | /permission/getMenuList |
{
"status": 200,
"msg": "success",
"roleName": "总监",
"menuList": [
{
"name": "管理首页"
},
{
"name": "学员管理",
"children": [
{
"name": "学员项目管理"
},
{
"name": "学员资料"
},
{
"name": "学员宿舍"
}
]
},
{
"name": "考勤管理"
},
{
"name": "数据统计"
},
{
"name": "我的中心"
}
]
}
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/category/addCategory | post | 添加商品类目 |
参数 | 参数描述 | 是否必传 |
---|---|---|
categoryName | 类目名称(String) | 是 |
响应成功
{
"status": 200,
"state": true,
"msg": "添加成功"
}
响应失败结果
{
"status": 1004,
"state": false,
"msg": "已经存在该类目,请不要重复添加"
}
由于类目和商品关联,如果类目中还有商品,删除会导致商品类目获取不正确
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/category/delCategory | get | 删除类目 |
参数 | 请求方式 | 接口描述 |
---|---|---|
category_id | get | 类目id |
响应成功结果
{
"status": 200,
"state": true,
"msg": "删除成功"
}
响应失败结果
{
"status": 1004,
"state": false,
"msg": "err 该数据不存在"
}
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/category/updateCategory | post | 删除类目 |
参数 | 描述 | 是否必传 |
---|---|---|
categoryName | 类目名称 | 是 |
category_id | 类目id | 是 |
响应成功结果
{
"status": 200,
"state": true,
"msg": "获取成功",
"data": [
{
"updateTime": null,
"updator": null,
"_id": "5fed5acfb308240d6037bc13",
"category_id": "20201231125959413",
"categoryName": "车辆",
"creator": "lbw",
"createTime": "2020-12-31,12:59:59"
},
{
"updateTime": null,
"updator": null,
"_id": "5fed5c45b308240d6037bc19",
"category_id": "20201231130613547",
"categoryName": "化妆品",
"creator": "lbw",
"createTime": "2020-12-31,01:06:13"
}
]
}
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/product/add_product | post | 添加商品 |
参数 | 描述 | 是否必传 |
---|---|---|
category_id | 类目的id (String) | 是 |
productName | 商品名称 (String) | 是 |
price | 商品价格 (Number) 单位以人民币为单位:元 | 是 |
description | 商品描述 (String) | 是 |
inventory | 商品库存 (Number) | 是 |
imageUrl | 商品图片 (file) 上传商品图片 | 是 |
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/product/update_product | post | 修改商品信息 |
参数 | 描述 | 是否必传 |
---|---|---|
category_id | 类目的id (String) | 是 |
productName | 商品名称 (String) | 否 |
price | 商品价格 (Number) 单位以人民币为单位:元 | 否 |
description | 商品描述 (String) | 否 |
inventory | 商品库存 (Number) | 否 |
imageUrl | 商品图片 (file) 上传商品图片 | 否 |
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/product/get_product | get | 获取商品信息 |
参数 | 描述 | 是否必传 |
---|---|---|
product_id | 商品的id,不传默认返回所有数据 | 否 |
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/product/del_product | get | 删除商品信息 |
参数 | 描述 | 是否必传 |
---|---|---|
product_id | 商品的id | 是 |
接口地址 | 请求方式 | 参数 | 接口描述 |
---|---|---|---|
/cart/check | post | product_id | 传递产品的id,如果存在选中多个商品,那么可以以字符串的形式用逗号(,)隔开比如 {product_id:"1198,16843,19894"} |
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/cart/get_cart | get | 获取当前用户的购物车数据 |
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/cart/del_prouct | get | 删除购物车商品 |
参数 | 是否必填 | 描述 |
---|---|---|
product_id | 是 | 要删除的商品的id |
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/cart/update_cart | post | 修改购物车中商品数量等 |
参数 | 是否必填 | 描述 |
---|---|---|
product_id | 是 | 修改的商品id |
count | 是 | 修改的商品数量 |
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/cart/add_to_cart | post | 增加商品到购物车 |
参数 | 是否必填 | 描述 |
---|---|---|
product_id | 是 | 增加到购物车的商品id |
count | 是 | 增加到购物车商品的数量 |
接口地址 | 请求方式 | 参数 | 接口描述 |
---|---|---|---|
/pay/pre_order | post | 用户必须是登入状态 | 用于提交生成订单 |
order_status
:订单状态:0未提交 1提交成功 2已经取消 3无效订单 4.交易关闭 5退货
pay_status
:0未支付 1已支付
shiping_status
:配送状态 0未发货 1已发货 2已收货 3备货中
可以通过轮询查询订单支付状态,必须携带order_id
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/order/get_order | post | 查询当前用户订单状态 |
参数 | 是否必传 | 参数描述 |
---|---|---|
order_id | 否 | 传递该参数可以获得单个订单详情,默认返回所有订单 |
接口地址 | 请求方式 | 参数 | 接口描述 |
---|---|---|---|
/order/del_order | get | order_id | 删除指定的订单 |
接口地址 | 请求方式 | 参数 | 接口描述 |
---|---|---|---|
/order/cancel | get | order_id | 用于取消当前订单 |
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/order/ship | get | 删除指定的订单 |
参数 | 参数描述 | 是否必传 |
---|---|---|
action | 0未发货 1已发货 2已收货 3备货中 | 是 |
order_id | 订单号 | 是 |
axios.get("/order/ship?action=1")
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/order/returns | post | 用户退货 |
参数 | 参数描述 | 是否必传 |
---|---|---|
order_id | 订单号 | 是 |
接口地址 | 请求方式 | 接口描述 |
---|---|---|
/pay/payment | post | 发起支付 |
参数 | 参数描述 | 是否必传 |
---|---|---|
appid | 公众账号ID | 是 |
mch_id | 微信支付分配的商户号 | 是 |
trade_type | 交易类型,值:NATIVE、 JSAPI、 APP | 否 (默认NATIVE) |
order_id | 订单id | 是 |
请求示例:
axios.post("/pay/payment",{
appid:wxed58e834201d0894,
mch_id:1568650321,
order_id:20201231103338122jnvk4na61h
})
请求成功返回文档
{
"status": 200,
"state": true,
"msg": "OK",
"prepay_id": "wx301847582783578da0cb5e1a6f24890000",
"trade_type": "NATIVE",
"code_url": "weixin://wxpay/bizpayurl?pr=hPUTMw4zz"
}
前端通code_url生成支付二维码即可
适用对象: 直连商户(直连模式)
请求URL: https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{out_trade_no}
**请求方式:**GET
path指该参数为路径参数
query指该参数需在请求URL传参
body指该参数需在请求JSON传参
参数名 | 变量 | 类型[长度限制] | 必填 | 描述 |
---|---|---|---|---|
直连商户号 | mchid | string[1,32] | 是 | query 直连商户的商户号,由微信支付生成并下发 |
商户订单号 | out_trade_no | string[1,32] | 是 | path 商户系统内部订单号 |
- URL
https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/1217752501201407033233368018?mchid=1230000109
参数名 | 变量 | 类型[长度限制] | 必填 | 描述 |
---|---|---|---|---|
应用ID | appid | string[1,32] | 是 | 直连商户申请的公众号或移动应用appid。 示例值:wxd678efh567hg6787 |
直连商户号 | mchid | string[1,32] | 是 | 直连商户的商户号,由微信支付生成并下发。 示例值:1230000109 |
商户订单号 | out_trade_no | string[6,32] | 是 | 商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一,详见【商户订单号】。 示例值:1217752501201407033233368018 |
微信支付订单号 | transaction_id | string[1,32] | 否 | 微信支付系统生成的订单号。 示例值:1217752501201407033233368018 |
交易类型 | trade_type | string[1,16] | 否 | 交易类型,枚举值: JSAPI:公众号支付 NATIVE:扫码支付 APP:APP支付 MICROPAY:付款码支付 MWEB:H5支付 FACEPAY:刷脸支付 示例值:MICROPAY |
交易状态 | trade_state | string[1,32] | 是 | 交易状态,枚举值: SUCCESS:支付成功 REFUND:转入退款 NOTPAY:未支付 CLOSED:已关闭 REVOKED:已撤销(付款码支付) USERPAYING:用户支付中(付款码支付) PAYERROR:支付失败(其他原因,如银行返回失败) 示例值:SUCCESS |
交易状态描述 | trade_state_desc | string[1,256] | 是 | 交易状态描述 示例值:支付失败,请重新下单支付 |
付款银行 | bank_type | string[1,16] | 否 | 银行类型,采用字符串类型的银行标识。 示例值:CMC |
附加数据 | attach | string[1,128] | 否 | 附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用 示例值:自定义数据 |
支付完成时间 | success_time | string[1,64] | 否 | 支付完成时间,遵循rfc3339标准格式,格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE,YYYY-MM-DD表示年月日,T出现在字符串中,表示time元素的开头,HH:mm:ss表示时分秒,TIMEZONE表示时区(+08:00表示东八区时间,领先UTC 8小时,即北京时间)。例如:2015-05-20T13:29:35+08:00表示,北京时间2015年5月20日 13点29分35秒。 示例值:2018-06-08T10:34:56+08:00 |
+支付者 | payer | object | 是 | 支付者信息 |
+订单金额 | amount | object | 否 | 订单金额信息,当支付成功时返回该字段。 |
+场景信息 | scene_info | object | 否 | 支付场景描述 |
+优惠功能 | promotion_detail | array | 否 | 优惠功能,享受优惠时返回该字段。 |
- 正常示例
{
"transaction_id": "1217752501201407033233368018",
"amount": {
"payer_total": 100,
"total": 100,
"currency": "CNY",
"payer_currency": "CNY"
},
"mchid": "1230000109",
"trade_state": "SUCCESS",
"bank_type": "CMC",
"promotion_detail": [{
"amount": 100,
"wechatpay_contribute": 0,
"coupon_id": "109519",
"scope": "GLOBALSINGLE",
"merchant_contribute": 0,
"name": "单品惠-6",
"other_contribute": 0,
"currency": "CNY",
"type": "CASHNOCASH",
"stock_id": "931386",
"goods_detail": [{
"goods_remark": "商品备注信息",
"quantity": 1,
"discount_amount": 1,
"goods_id": "M1006",
"unit_price": 100
}, {
"goods_remark": "商品备注信息",
"quantity": 1,
"discount_amount": 1,
"goods_id": "M1006",
"unit_price": 100
}]
}, {
"amount": 100,
"wechatpay_contribute": 0,
"coupon_id": "109519",
"scope": "GLOBALSINGLE",
"merchant_contribute": 0,
"name": "单品惠-6",
"other_contribute": 0,
"currency": "CNY",
"type": "CASHNOCASH",
"stock_id": "931386",
"goods_detail": [{
"goods_remark": "商品备注信息",
"quantity": 1,
"discount_amount": 1,
"goods_id": "M1006",
"unit_price": 100
}, {
"goods_remark": "商品备注信息",
"quantity": 1,
"discount_amount": 1,
"goods_id": "M1006",
"unit_price": 100
}]
}],
"success_time": "2018-06-08T10:34:56+08:00",
"payer": {
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o"
},
"out_trade_no": "1217752501201407033233368018",
"appid": "wxd678efh567hg6787",
"trade_state_desc": "支付失败,请重新下单支付",
"trade_type": "MICROPAY",
"attach": "自定义数据",
"scene_info": {
"device_id": "013467007045764"
}
}
错误码公共错误码
状态码 | 错误码 | 描述 | 解决方案 |
---|---|---|---|
202 | USERPAYING | 用户支付中,需要输入密码 | 等待5秒,然后调用被扫订单结果查询API,查询当前订单的不同状态,决定下一步的操作 |
403 | TRADE_ERROR | 交易错误 | 因业务原因交易失败,请查看接口返回的详细信息 |
500 | SYSTEMERROR | 系统错误 | 系统异常,请用相同参数重新调用 |
401 | SIGN_ERROR | 签名错误 | 请检查签名参数和方法是否都符合签名算法要求 |
403 | RULELIMIT | 业务规则限制 | 因业务规则限制请求频率,请查看接口返回的详细信息 |
400 | PARAM_ERROR | 参数错误 | 请根据接口返回的详细信息检查请求参数 |
403 | OUT_TRADE_NO_USED | 商户订单号重复 | 请核实商户订单号是否重复提交 |
404 | ORDERNOTEXIST | 订单不存在 | 请检查订单是否发起过交易 |
400 | ORDER_CLOSED | 订单已关闭 | 当前订单已关闭,请重新下单 |
500 | OPENID_MISMATCH | openid和appid不匹配 | 请确认openid和appid是否匹配 |
403 | NOTENOUGH | 余额不足 | 用户帐号余额不足,请用户充值或更换支付卡后再支付 |
403 | NOAUTH | 商户无权限 | 请商户前往申请此接口相关权限 |
400 | MCH_NOT_EXISTS | 商户号不存在 | 请检查商户号是否正确 |
500 | INVALID_TRANSACTIONID | 订单号非法 | 请检查微信支付订单号是否正确 |
400 | INVALID_REQUEST | 无效请求 | 请根据接口返回的详细信息检查 |
429 | FREQUENCY_LIMITED | 频率超限 | 请降低请求接口频率 |
500 | BANKERROR | 银行系统异常 | 银行系统异常,请用相同参数重新调用 |
400 | APPID_MCHID_NOT_MATCH | appid和mch_id不匹配 | 请确认appid和mch_id是否匹配 |
403 | ACCOUNTERROR | 账号异常 | 用户账号异常,无需更多操作 |