#发布器点赞api说明

### 接口概述
接口基本地址

`http://huodong.duowan.com/commonzan/index.php`

| 功能 | 地址拼接 | 详细地址 |
| -- | -- | -- |
| 初始化数据 | 地址+ `?r=default/init` | `http://huodong.duowan.com/commonzan/index.php?r=default/init` |
| 触发请求数据 | 地址+`?r=default/click` | `http://huodong.duowan.com/commonzan/index.php?r=default/click` |

不需要调用集合Vote.js的可以直接调用原生的接口去实现自己所需要的内容
需要调用集合api的可以往下看

### 初始化地址api

`http://huodong.duowan.com/commonzan/index.php?r=default/init`

#### 请求参数
| 接口参数 | 类型 | 默认 | 可选 | 说明 |
| -------- | --- | --- | --- | --|
| title | string | - | - | 必填 |

#### 返回接口
| 参数 |  类型 | 说明 |
| ---- | ---- | ---- |
| code |  number | 状态码，200代表成功，100代表标题为空 |
| message |  string | 返回的状态信息 |
| result |  json | 里面包含3个值，分别是is_click(json),title(string),value(json) 下面会对result的值进行说明 |

result值的说明

| 名称 | 类型 | 说明 | 例子 |
| ---- | --- | ---- | ---- |
| is_click | json | 数据能否点击， 格式是 第几个按钮 ： 能否点击 ，如果之前按钮没有被点击过的话也是为空的 | is_click:{1:0,2:1,3:0,4:1} |
| title | string | 文章的标题 | - |
| value | json | 某个值的投票数据value_list(json)，同时包含了总和value_sum(number),特别说明一下，`如果没有点击过的话则数据为空，并不是为0的` | "result":{"value":{"value_list":{"1":"1","2":"1","3":"1","4":"1"},"value_sum":4} |


### 请求数据接口

`http://huodong.duowan.com/commonzan/index.php?r=default/click`

#### 请求参数
| 接口参数 | 类型 | 默认 | 可选 | 说明 |
| -------- | --- | --- | --- | --|
| addition | string | toggle | `toggle` `single` `unique` | [可选]toggle 表示点击之后可以取消 single；代表可以点击，不能取消(可以投多个票，类似战队投票可以对所有战队投票)；unique 同组只能投一个票（类似表情投票）  |
| title | string | - | - | [必须]文章的标题，将作为唯一的id记录，为了保证唯一性，可以在标题后面加上网址/时间增加唯一性 |
| value | number | - | - | [必选]代表点的值的index值，只记录这个index对应了是否点击了，以及点击的次数 |
| day | number | 0 | `0` `1` | [可选]代表再次投票的时间周期，默认是投票之后，一直都不允许再次投票，建议写1，代表1天(0点)重置投票 |
| rv | number | 0 | `0` `1` | [可选]代表返回的结果时候返回统计数据的值，默认不返回，1代表返回，0代表不返回 |

#### 返回接口
| 参数 |  类型 | 说明 |
| ---- | ---- | ---- |
| code |  number | 状态码，100代表标题为空,101已经点过了(single)，102已经点过该项的其他项(unique),200操作成功（single,unique） / 取消成功(toggle) |
| message | string | 返回对于的信息 |
| result | json | 包含title 以及ip。title是请求时候的title，ip是用户点击的ip |

#### 注意事项
如果一个按钮没有被点击的时候，它们他返回过来的数据都是空对象，这个时候它处于一个可以点击状态的
当然如果一个对象返回过来的是is_click是0的话它也是允许被点击的。
当且仅当这个这个按钮的is_click为1的时候，我们就判断他被点击过，其余时候都代表它是可以被点击的


### Vote接口

vote是一个已经集合好点赞api的一个接口，只需要几部简单的调用就可以使用到功能了，
目前还处于试验简单，有什么问题的话请联系我(YY:909013894 李建军)，进行反馈
因为现在页面上的Footer.js已经自带了cmd
所以只需要js放到页面最后就可以
#### 参数说明 Vote(id[,options])
id这里不一定写id，但是保证唯一也可以

`options`

| 参数 |  类型 | 说明 | 默认 | 回调参数 |
| ---- | ---- | ---- | ---- | ---- |
| voteTitle |  string | [必选] 标题,保证唯一性 | - | - |
| voteTime |  string | [建议选] 时间，写上当前日期，保证唯一性，需要刷新数据的话更改时间就可以了 | - | - |
| type |  string | [必选] 投票的种类，默认unique。可选项toggle(点赞之后可以取消，类似于取消点赞)，single(多选多,可以同时选几个，但是不可以取消) | - | `unique` |
| itemBtn |  string | [可选] 点击的按钮 | `[data-vote="btn"]` | - |
| itemVal |  string | [可选] 显示数据值的地方 | `[data-vote="value"]` | - |
| endClass |  string | [可选] 已经点击了之后的样式，给itemBtn添加的，可以改变样式 | `is-end` | - |
| needfresh |  boolean | [可选] 默认不刷新，是否需要同步刷新所有itemVal数据 | `false` | - |
| initFn |  function | [可选]数据初始化之后的回调函数 | - | 返回this，代表Vote对象，rstJson是一个json格式的数据`{index:val,index2:val}` ，代表每一个itemBtn的点击状态, index是dom的序号从0开始，val代表点击状态，0代表未点击，1代表点击 |
| successFn |  function | [可选]点赞成功之后的回调函数 | - | - |
| failFn |  function | [可选]点赞失败之后的回调函数 | - | - |
| time |  number | [可选] 投票更新周期，可选`0`,`1` | `1` | - |

#### 使用方法
1. 引入js文件
    CMD
    `http://assets.dwstatic.com/project/vote/1.0.0/js/vote.js`
    JQuery
    `http://assets.dwstatic.com/project/vote/1.0.0/js/vote-jq.js`

1. 写好页面结构
```html
<div class="vote is-single">
    <button data-vote="btn">点击按钮</button><span data-vote="value">显示的地方</span>
    <button data-vote="btn">点击按钮</button><span data-vote="value">显示的地方</span>
    <button data-vote="btn">点击按钮</button><span data-vote="value">显示的地方</span>
    <button data-vote="btn">点击按钮</button><span data-vote="value">显示的地方</span>
    <button data-vote="btn">点击按钮</button><span data-vote="value">显示的地方</span>
    <button data-vote="btn">点击按钮</button><span data-vote="value">显示的地方</span>
</div>
```
1. 对js进行配置，放到页面最后
```html
<script>
var vote=new Vote('.is-single',{
    'voteTitle':'test14',
    type:'unique',
    valFn:function (val,sum) {
            $(this).html('空的地方是：'+val+', 总数是:'+sum)
        },
    successFn:function (_this) {
        alert('成功点赞')
        console.log(this)
    },
    failFn:function () {
        alert('点赞失败')
    },
    needfresh:true
});
</script>
```

    简单版
    ```html
    <div class="vote is-single">
        <button data-vote="btn">点击按钮</button><span data-vote="value">显示的地方</span>
    </div>
    <!-- 以下内容放到页面最后 -->
    <script src="http://assets.dwstatic.com/project/vote/1.0.0/js/vote.js"></script>
    <script>
    var vote=new Vote('.is-single',{
        'voteTitle':'test14',
        type:'single'
        needfresh:true
    });
    </script>
    ```