跳转至

项目实战1 - API接口

概述

本接口用于 药品销管系统 管理员用户 前后端系统 之间的数据 交互。

本接口中,所有请求 ( 除了登录请求之外 ),必须在cookie中携带有登录的成功后,服务端返回的sessionid。

本接口中,所有请求、响应的消息体 均采用 UTF8 编。


除了登录请求,所有的请求消息,如果有消息体,消息体都是json格式,

所有的响应消息的消息体,都是json格式。

响应消息体json 中, ret 字段值为 0 表示操作成功,其它值均为操作失败。

如果操作失败, 会有 msg 字段,内容为字符串,表示失败原因



登录系统

请求消息

POST  /api/mgr/signin  HTTP/1.1
Content-Type:   application/x-www-form-urlencoded

请求参数

http 请求消息 body 中 参数以 格式 x-www-form-urlencoded 存储

需要携带如下参数,

  • username

    用户名

  • password

    密码

响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果登录成功,返回如下

{
    "ret": 0
}

ret 为 0 表示登录成功

如果登录失败,返回失败的原因,示例如下

{
    "ret": 1,    
    "msg":  "用户名或者密码错误"
}

ret 不为 0 表示登录失败, msg字段描述登录失败的原因



客户

列出客户

请求消息

GET  /api/mgr/customers  HTTP/1.1

请求参数

http 请求消息 url 中 需要携带如下参数,

  • action

    必填项,填写值为 list_customer

  • pagesize

    必填项,分页的 每页获取多少条记录

  • pagenum

    必填项,获取第几页的信息

  • keywords

    可选项, 里面包含的多个过滤关键字,关键字之间用 空格 分开

响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果获取信息成功,返回如下

{
    "ret": 0,
    "retlist": [
        {
            "address": "江苏省常州武进市白云街44号",
            "id": 1,
            "name": "武进市 袁腾飞",
            "phonenumber": "13886666666"
        },

        {
            "address": "北京海淀区",
            "id": 4,
            "name": "北京海淀区代理 蔡国庆",
            "phonenumber": "13990123456"
        }
    ] , 
    'total': 2             
}

ret 为 0 表示登录成功

total 为 2 表示系统中全部(不仅仅是这一页)有多少客户

retlist 里面包含了所有的客户信息列表。

每个客户信息以如下格式存储

{
   "address": "江苏省常州武进市白云街44号",
   "id": 1,
   "name": "武进市 袁腾飞",
   "phonenumber": "13886666666"
}


添加一个客户

请求消息

POST  /api/mgr/customers  HTTP/1.1
Content-Type:   application/json

请求参数

http 请求消息 body 携带添加客户的信息

消息体的格式是json,如下示例:

{
    "action":"add_customer",
    "data":{
        "name":"武汉市桥西医院",
        "phonenumber":"13345679934",
        "address":"武汉市桥西医院北路"
    }
}

其中

action 字段固定填写 add_customer 表示添加一个客户

data 字段中存储了要添加的客户的信息

其中

name 字段长度范围是 2-20

phonenumber 字段长度范围是 8-15

address 字段长度范围是 2-100

服务端接受到该请求后,应该在系统中增加一位这样的客户。

响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果添加成功,返回如下

{
    "ret": 0,
    "id" : 677
}

ret 为 0 表示成功。

id 为 添加客户的id号。

如果添加失败,返回失败的原因,示例如下

{
    "ret": 1,    
    "msg": "客户名已经存在"
}

ret 不为 0 表示失败, msg字段描述添加失败的原因


修改客户信息

请求消息

PUT  /api/mgr/customers  HTTP/1.1
Content-Type:   application/json

请求参数

http 请求消息 body 携带修改客户的信息

消息体的格式是json,如下示例:

{
    "action":"modify_customer",
    "id": 6,
    "newdata":{
        "name":"武汉市桥北医院",
        "phonenumber":"13345678888",
        "address":"武汉市桥北医院北路"
    }
}

其中

action 字段固定填写 modify_customer 表示修改一个客户的信息

id 字段为要修改的客户的id号

newdata 字段中存储了修改后的客户的信息

服务端接受到该请求后,应该在系统中做相应修改。


响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果修改成功,返回如下

{
    "ret": 0
}

ret 为 0 表示成功。

如果修改失败,返回失败的原因,示例如下

{
    "ret": 1,    
    "msg": "客户名已经存在"
}

ret 不为 0 表示失败, msg字段描述添加失败的原因



删除客户信息

请求消息

DELETE  /api/mgr/customers  HTTP/1.1
Content-Type:   application/json

请求参数

http 请求消息 body 携带要删除客户的id

消息体的格式是json,如下示例:

{
    "action":"del_customer",
    "id": 6
}

其中

action 字段固定填写 del_customer 表示删除一个客户

id 字段为要删除的客户的id号

服务端接受到该请求后,应该在系统中尝试删除该id对应的客户。


响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果删除成功,返回如下

{
    "ret": 0
}

ret 为 0 表示成功。

如果删除失败,返回失败的原因,示例如下

{
    "ret": 1,    
    "msg": "id为 566 的客户不存在"
}

ret 不为 0 表示失败, msg字段描述失败的原因



药品

列出药品

请求消息

GET  /api/mgr/medicines  HTTP/1.1

请求参数

http 请求消息 url 中 需要携带如下参数,

  • action

    必填项,填写值为 list_medicine

  • pagesize

    必填项,分页的 每页获取多少条记录

  • pagenum

    必填项,获取第几页的信息

  • keywords

    可选项, 里面包含的多个过滤关键字,关键字之间用 空格 分开

响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果获取信息成功,返回如下

{
    "ret": 0,
    "retlist": [
        {"id": 1, "name": "青霉素", "sn": "234324234234", "desc": "青霉素"},
        {"id": 2, "name": "红霉素", "sn": "234545534234", "desc": "红霉素"}
    ] , 
    'total': 2            
}

ret 为 0 表示登录成功

total 为 2 表示总共有多少药品

retlist 里面包含了所有的药品信息列表。

每个药品信息以如下格式存储

    {"id": 2, "name": "红霉素", "sn": "234545534234", "desc": "红霉素"}


添加一个药品

请求消息

POST  /api/mgr/medicines  HTTP/1.1
Content-Type:   application/json

请求参数

http 请求消息 body 携带添加药品的信息

消息体的格式是json,如下示例:

{
    "action":"add_medicine",
    "data":{
        "name": "青霉素",
        "desc": "青霉素 国字号",
        "sn": "099877883837"
    }
}

其中

action 字段固定填写 add_medicine 表示添加一个药品

data 字段中存储了要添加的药品的信息

其中

name 字段长度范围是 2-20

desc 字段长度范围是 2-500

sn 字段长度范围是 8-20

服务端接受到该请求后,应该在系统中增加这样的药品。

响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果添加成功,返回如下

{
    "ret": 0,
    "id" : 677
}

ret 为 0 表示成功。

id 为 添加药品的id号。

如果添加失败,返回失败的原因,示例如下

{
    "ret": 1,    
    "msg": "药品名已经存在"
}

ret 不为 0 表示失败, msg字段描述添加失败的原因


修改药品信息

请求消息

PUT  /api/mgr/medicines  HTTP/1.1
Content-Type:   application/json

请求参数

http 请求消息 body 携带修改药品的信息

消息体的格式是json,如下示例:

{
    "action":"modify_medicine",
    "id": 6,
    "newdata":{
        "name": "青霉素",
        "desc": "青霉素 国字号",
        "sn": "099877883837"
    }
}

其中

action 字段固定填写 modify_medicine 表示修改一个药品的信息

id 字段为要修改的药品的id号

newdata 字段中存储了修改后的药品的信息

服务端接受到该请求后,应该在系统中增加一位这样的药品。


响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果修改成功,返回如下

{
    "ret": 0
}

ret 为 0 表示成功。

如果修改失败,返回失败的原因,示例如下

{
    "ret": 1,    
    "msg": "药品名已经存在"
}

ret 不为 0 表示失败, msg字段描述添加失败的原因



删除药品信息

请求消息

DELETE  /api/mgr/medicines  HTTP/1.1
Content-Type:   application/json

请求参数

http 请求消息 body 携带要删除药品的id

消息体的格式是json,如下示例:

{
    "action":"del_medicine",
    "id": 6
}

其中

action 字段固定填写 del_medicine 表示删除一个药品

id 字段为要删除的药品的id号

服务端接受到该请求后,应该在系统中尝试删除该id对应的药品。


响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果删除成功,返回如下

{
    "ret": 0
}

ret 为 0 表示成功。

如果删除失败,返回失败的原因,示例如下

{
    "ret": 1,    
    "msg": "id为 566 的药品不存在"
}

ret 不为 0 表示失败, msg字段描述失败的原因



订单

列出订单

请求消息

GET  /api/mgr/orders  HTTP/1.1

请求参数

http 请求消息 url 中 需要携带如下参数,

  • action

    必填项,填写值为 list_order

  • pagesize

    必填项,分页的 每页获取多少条记录

  • pagenum

必填项, 获取第几页的信息

  • keywords

    可选项, 里面包含的多个过滤关键字,关键字之间用 空格 分开

响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果获取信息成功,返回如下

{
    "ret": 0,
    "retlist": [
        {id: 1, 
        name: "华山医院订单001", 
        create_date: "2018-12-26T14:10:15.419Z", 
        customer_name: "华山医院",
        customerid : 13,
        medicinelist: "[
            {\"id\":16,\"amount\":3,\"name\":\"环丙沙星\"},
            {\"id\":15,\"amount\":5,\"name\":\"克林霉素\"}
        ]"
        },
        {id: 2, 
        name: "华山医院订单002", 
        create_date: "2018-12-27T14:10:37.208Z", 
        customer_name: "华山医院",
        customerid : 13,
        medicinelist: "[
            {\"id\":16,\"amount\":4,\"name\":\"环丙沙星\"},
            {\"id\":15,\"amount\":5,\"name\":\"克林霉素\"}
        ]"
        }
    ]              
}

ret 为 0 表示登录成功

retlist 里面包含了所有的订单信息列表。

每个订单信息以如下格式存储

    {
        "id": 2, 
        "name": "华山医院订单002", 
        "create_date": "2018-12-27T14:10:37.208Z", 
        "customer_name": "华山医院",
        "customerid" : 13,
        "medicinelist":"[
            {\"id\":16,\"amount\":4,\"name\":\"环丙沙星\"},
            {\"id\":15,\"amount\":5,\"name\":\"克林霉素\"}
        ]"
    }

其中 medicinelist 里面的 amount表示药品数量 , id 表示药品的id, name是药品名称

注意,这个 medicinelist 值 是另外一个json格式的字符串


添加一个订单

请求消息

POST  /api/mgr/orders  HTTP/1.1
Content-Type:   application/json

请求参数

http 请求消息 body 携带添加订单的信息

消息体的格式是json,如下示例:

{
    "action":"add_order",
    "data":{
        "name":"华山医院订单002",
        "customerid":3,
        "medicinelist":[
            {"id":16,"amount":5,"name":"环丙沙星"},
            {"id":15,"amount":5,"name":"克林霉素"}
        ]
    }
}

其中

action 字段固定填写 add_order 表示添加一个订单

data 字段中存储了要添加的订单的信息

其中

订单名称 name 字段长度范围是 2-100

medicinelist 是 该订单中药品的信息 列表, amount表示数量,name表示名称

服务端接受到该请求后,应该在系统中增加这样的订单。

响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果添加成功,返回如下

{
    "ret": 0,
    "id" : 677
}

ret 为 0 表示成功。

id 为 添加订单的id号。

如果添加失败,返回失败的原因,示例如下

{
    "ret": 1,    
    "msg": "订单名已经存在"
}

ret 不为 0 表示失败, msg字段描述失败的原因


修改订单

暂不支持



删除订单

请求消息

DELETE  /api/mgr/orders  HTTP/1.1
Content-Type:   application/json

请求参数

http 请求消息 body 携带要删除订单的id

消息体的格式是json,如下示例:

{
    "action":"del_order",
    "id": 6
}

其中

action 字段固定填写 del_order 表示删除一个订单

id 字段为要删除的订单的id号

服务端接受到该请求后,应该在系统中尝试删除该id对应的订单。


响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果删除成功,返回如下

{
    "ret": 0
}

ret 为 0 表示成功。

如果删除失败,返回失败的原因,示例如下

{
    "ret": 1,    
    "msg": "id为 566 的订单不存在"
}

ret 不为 0 表示失败, msg字段描述失败的原因

统计订单

请求消息

GET  /api/mgr/orders  HTTP/1.1

请求参数

http 请求消息 url 中 需要携带如下参数,

  • action

    必填项,填写值为 stats 表示统计

  • target

    必填项,目前支持值为 ordercount_percustomer_permonth

    表示 按客户、按月 统计订单数量

响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果获取信息成功,返回格式如下

{
  "ret": 0,
  "stats": {
    "南空机关医院": {
      "2021-01": 5,
      "2021-02": 4,
      "2021-03": 4,
      "2021-04": 4,
      "2021-05": 5
    },
    "南京市第一医院": {
      "2021-01": 10,
      "2021-02": 1,
      "2021-03": 3,
      "2021-04": 2,
      "2021-05": 4
    },
    "深圳市龙华区人民医院": {
      "2021-01": 10,
      "2021-02": 14,
      "2021-03": 19,
      "2021-04": 8,
      "2021-05": 13
    }
  }
}

ret 为 0 表示登录成功

stats 里面包含了所有的订单 按客户、按月 统计订单数量 的信息


管理员个人信息

本接口用来获取和设置管理员自己的个人信息数据

请求中不必携带用户id,后端根据session数据查询请求对应的用户

获取我的个人信息

请求消息

GET  /api/mgr/profile  HTTP/1.1

请求参数

http 请求消息 url 中 需要携带如下参数,

  • action

    必填项,填写值为 get_my_profile 表示获取个人信息

响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果获取信息成功,返回如下

{
    "ret": 0,
    "profile":  {
        "nickname": "白月黑羽", 
        "birthdate": "2001-01-01",
        "bio": "个人描述"
    }
}

ret 为 0 表示获取成功

profile 里面的

nickname  昵称

birthdate 生日,格式为 "2001-01-01"

bio 个人描述


如果用户还没有创建做自己的个人信息,返回为

{
    "ret": 0,
    "profile":  {
        "nickname": null, 
        "birthdate": null,
        "bio": null
    }
}

修改个人信息

请求消息

PUT  /api/mgr/profile  HTTP/1.1
Content-Type:   application/json

请求参数

http 请求消息 body 携带添加药品的信息

消息体的格式是json,如下示例:

{
    "action":"modify_my_profile",
    "profile":{
        "nickname": "白月黑羽", 
        "birthdate": "2001-01-01",
        "bio": "个人描述"
    }
}

其中

action 字段固定填写 modify_my_profile 表示修改个人信息

profile 字段中存储了修改后个人信息,各字段的含义和 获取个人信息返回值里面的字段 相同

响应消息

HTTP/1.1 200 OK
Content-Type: application/json

响应内容

http 响应消息 body 中, 数据以json格式存储,

如果修改成功,返回如下

{
    "ret": 0,
}

ret 为 0 表示成功


如果修改失败,返回示例如下

{
    "ret": 1,    
    "msg": "未知错误"
}

ret 不为 0 表示失败, msg字段描述添加失败的原因