[TOC]
#### 统一用户中心说明
为了更好的管理公众号的用户,微擎系统引入了统一用户机制。引入统一用户中心(下称 **用户中心**)有以下好处:
* 方便统一管理用户的基本资料和积分信息
* 方便从不同的渠道平台(下称**渠道平台**。指:微信,易信,来往或者自有的CRM等不同的用户系统)同步和共享用户资源
操作流程如下:
![](https://box.kancloud.cn/2016-05-03_57287c29c255e.jpg)
#### Openid与Uid的关系
这里的Openid可以泛指从微信、易信或是其它平台进入的粉丝,当这些这些粉丝进入模块或是微站时,在系统中是不产生任何资料数据。
仅当这些粉丝完成绑定、注册操作时在系统中产生一个uid与之对应,才可以存储一些额外资料(包括真实姓名,性别等等)和积分数据,系统也允许多个Opendid对应同一个Uid。
#### 验证粉丝身份信息
当模块或是系统需要获取会员资料或是积分时,可以使用 **checkauth()** 函数来判断会员是否进行登录(未登录时会跳转至登录页面),以便可以使用其资料和积分数据。例如:
~~~
//需要使用会员积分数据
//此函数会判断当前会员是否进登录,如果没有登录跳转至登录页面
checkauth();
print_r($_W['member']);
~~~
#### 会员的积分资料
微擎系统内置5类积分数据,其实积分,余额,贡献为系统内置的,系统很多功能都依赖此数据。
可以通过 功能选项 – 积分设置 来管理积分名称和是否启用
| 变量名称 | 说明 |
| credit1 | 积分 |
| credit2 | 余额 |
| credit3 | 贡献 |
| credit4 | 缺省 |
| credit5 | 缺省 |
#### 会员基本资料
微擎系统内置了会员常用的资料信息来满足各功能的需求。
可以通过 功能选项 – 会员字段管理 来管理资料名称和是否启用
| 变量名称 | 说明 |
| realname | 真实姓名 |
| nickname | 昵称 |
| avatar | 头像 |
| qq | QQ号 |
| mobile | 手机号码 |
| vip | VIP级别 |
| gender | 性别 |
| birthyear | 出生生日 |
| constellation | 星座 |
| zodiac | 生肖 |
| telephone | 固定电话 |
| idcard | 证件号码 |
| studentid | 学号 |
| grade | 班级 |
| address | 邮寄地址 |
| zipcode | 邮编 |
| nationality | 国家 |
| resideprovince | 居住地址 |
| graduateschool | 毕业学校 |
| company | 公司 |
| education | 学历 |
| occupation | 职业 |
| position | 职位 |
| revenue | 年收入 |
| affectivestatus | 情感状态 |
| lookingfor | 交友目的 |
| bloodtype | 血型 |
| height | 身高 |
| weight | 体重 |
| alipay | 支付宝帐号 |
| msn | MSN |
| email | 电子邮箱 |
| taobao | 阿里旺旺 |
| site | 主页 |
| bio | 个人介绍 |
| interest | 兴趣爱好 |
| workerid | 工号 |
#### 积分
当模块有奖励积分时(credit1,credit2)应该写入个人中心积分日志
![](https://box.kancloud.cn/2016-05-20_573eb5238c1ef.jpg)
#### 会员积分操作
系统提供一系列的方法供开发者变更会员的积分数据,大家在开发的时候应该避免直接数据操作积分数据。保持各功能之间的数据互通。下面具体说一下操作会员积分的方法
#### 获取会员积分数据
获取积分数据时,要衔使用 **checkauth()** 函数来检查会员是否登录,以便来获取其积分数据。\
会员登录成功后,获取会员积分数据通过系统 **$_W[‘member’]** 全局变量可以获取到,具体的数据结构如下:
~~~
Array
(
[uid] => 10128
[realname] => 用户昵称
[mobile] => 手机号码
[email] => 邮箱
[groupid] => 用户组ID
[groupname] => 用户组名称
[credit1] => 积分
[credit2] => 余额
[credit3] => 其它积分
[credit4] => 其它积分
[credit5] => 其它积分
[credit6] => 其它积分
)
~~~
#### 更新用户积分数据
~~~
boolean mc_credit_update($uid, $credittype, $creditval, $log = array());
~~~
* **$uid** 要变更数据会员的uid
* **$credittype** 要变更积分数据的类型,分为credit1, credit2, credit3, credit4, credit5,credit6
* **$creditval** 要增减积分的值,正数为增,负数为减
* **$log** 积分操作日志,具体含义如下
~~~
$log = array(
0 => 操作管理员uid
1 => 增减积分备注
2 => 模块标识,例如:we7_store
3 => 店员uid
4 => 门店id
5 => 1(线上操作) 2(系统后台,公众号管理员和操作员) 3(店员)
);
~~~
示例:
~~~
load()->model('mc');
$uid = mc_openid2uid($fromuser);
mc_credit_update($uid, 'credit1', '10', array(0, '使用砸蛋模块未中奖,赠送10积分'));
~~~
~~~
load()->model('mc');
//代金券和折扣券的兑换记录,
mc_credit_update($_W['member']['uid'], 'credit1', -20, array($_W['member']['uid'], '礼品兑换: Iphone手机 消耗积分:20'));
~~~