clerk.ctrl.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. <?php
  2. /**
  3. * [WeEngine System] Copyright (c) 2014 WE7.CC
  4. * WeEngine is NOT a free software, it under the license terms, visited http://www.we7.cc/ for more details.
  5. */
  6. defined('IN_IA') or exit('Access Denied');
  7. $_W['page']['title'] = '店员列表 - 门店营销参数 - 会员营销';
  8. load()->model('clerk');
  9. load()->model('user');
  10. uni_user_permission_check('activity_clerk_list');
  11. $dos = array('switch', 'list', 'post', 'del', 'post', 'verify', 'checkname');
  12. $do = in_array($do, $dos) ? $do : 'list';
  13. if ($do == 'list') {
  14. $pindex = max(1, intval($_GPC['page']));
  15. $psize = 30;
  16. $limit = 'ORDER BY id DESC LIMIT ' . ($pindex - 1) * $psize . ", {$psize}";
  17. $total = pdo_fetchcolumn("SELECT COUNT(*) FROM ".tablename('activity_clerks')." WHERE uniacid = :uniacid ", array(':uniacid' => $_W['uniacid']));
  18. $list = pdo_fetchall("SELECT * FROM ".tablename('activity_clerks')." WHERE uniacid = :uniacid {$limit}", array(':uniacid' => $_W['uniacid']));
  19. $uids = array(0);
  20. foreach($list as $row) {
  21. if ($row['uid'] > 0) {
  22. $uids[] = $row['uid'];
  23. }
  24. }
  25. $uids = implode(',', $uids);
  26. $users = pdo_fetchall('SELECT username,uid FROM ' . tablename('users') . " WHERE uid IN ({$uids})", array(), 'uid');
  27. $pager = pagination($total, $pindex, $psize);
  28. $stores = pdo_getall('activity_stores', array('uniacid' => $_W['uniacid']), array('id', 'business_name', 'branch_name'), 'id');
  29. }
  30. if ($do == 'checkname' && $_W['isajax']) {
  31. $username = trim($_GPC['username']);
  32. $uid = intval($_GPC['uid']);
  33. if (!empty($uid)) {
  34. $exist = pdo_fetch("SELECT * FROM ". tablename('users'). " WHERE uid <> :uid AND username = :username", array(':uid' => $uid, ':username' => trim($_GPC['username'])));
  35. } else {
  36. $exist = pdo_get('users', array('username' => $username));
  37. }
  38. if (empty($exist)) {
  39. message(error(1), '', 'ajax');
  40. }else {
  41. message(error(0), '', 'ajax');
  42. }
  43. }
  44. if ($do == 'post') {
  45. $id = intval($_GPC['id']);
  46. if (!empty($id)){
  47. $sql = 'SELECT * FROM ' . tablename('activity_clerks') . " WHERE id = :id AND uniacid = :uniacid";
  48. $clerk = pdo_fetch($sql, array(':id' => $id, ':uniacid' => $_W['uniacid']));
  49. if (empty($clerk)) {
  50. message('店员不存在', referer(), 'error');
  51. }
  52. if (!empty($clerk['uid'])) {
  53. $user = pdo_get('users', array('uid' => $clerk['uid']));
  54. $clerk['username'] = $user['username'];
  55. $clerk['uid'] = $user['uid'];
  56. if (!$clerk['uid']) {
  57. $_W['uid'] = 0;
  58. }
  59. $clerk['permission'] = uni_user_permission('system', $clerk['uid']);
  60. }
  61. } else {
  62. $clerk = array(
  63. 'permission' => array()
  64. );
  65. }
  66. if (checksubmit()) {
  67. $name = trim($_GPC['name']) ? trim($_GPC['name']) : message('店员名称不能为空');
  68. $mobile = trim($_GPC['mobile']) ? trim($_GPC['mobile']) : message('手机号不能为空');
  69. $storeid = intval($_GPC['storeid']) ? intval($_GPC['storeid']) : message('请选择所在门店');
  70. if (!$clerk['uid']) {
  71. $user = array();
  72. $user['username'] = trim($_GPC['username']);
  73. if (empty($user['username'])) {
  74. message('必须输入用户名,格式为 1-15 位字符,可以包括汉字、字母(不区分大小写)、数字、下划线和句点。');
  75. }
  76. if (user_check(array('username' => $user['username']))) {
  77. message('非常抱歉,此用户名已经被注册,你需要更换注册名称!');
  78. }
  79. $user['password'] = trim($_GPC['password']);
  80. if (istrlen($user['password']) < 8) {
  81. message('必须输入密码,且密码长度不得低于8位。');
  82. }
  83. $password_exist = pdo_get('activity_clerks', array('uniacid' => $_W['uniacid'], 'password' => $_GPC['password']));
  84. if (!empty($password_exist)) {
  85. message('密码已存在,请重新输入密码');
  86. }
  87. $user['type'] = 3;
  88. $clerk['uid'] = user_register($user);
  89. if (!$clerk['uid']) {
  90. message('注册账号失败');
  91. }
  92. } else {
  93. $_GPC['username'] = trim($_GPC['username']);
  94. if (!preg_match(REGULAR_USERNAME, $_GPC['username'])) {
  95. message('必须输入用户名,格式为 3-15 位字符,可以包括汉字、字母(不区分大小写)、数字、下划线和句点。');
  96. }
  97. $is_exist = pdo_fetchcolumn('SELECT uid FROM ' . tablename('users') . ' WHERE username = :username AND uid != :uid', array(':username' => $_GPC['username'], ':uid' => $clerk['uid']));
  98. if (!empty($is_exist)) {
  99. message('非常抱歉,此用户名已经被注册,你需要更换注册名称!');
  100. }
  101. $_GPC['password'] = trim($_GPC['password']);
  102. if (!empty($_GPC['password'])) {
  103. if (istrlen($_GPC['password']) < 8) {
  104. message('必须输入密码,且密码长度不得低于8位。');
  105. }
  106. $password_exist = pdo_get('activity_clerks', array('uniacid' => $_W['uniacid'], 'password' => $_GPC['password']));
  107. if (!empty($password_exist)) {
  108. message('密码已存在,请重新输入密码');
  109. }
  110. }
  111. $record = array();
  112. $record['uid'] = $clerk['uid'];
  113. $record['password'] = $_GPC['password'];
  114. $record['salt'] = $user['salt'];
  115. $record['username'] = $_GPC['username'];
  116. $record['type'] = 3;
  117. user_update($record);
  118. }
  119. $permission = $_GPC['permission'];
  120. if (!empty($permission)) {
  121. $permission = implode('|', array_unique($permission));
  122. } else {
  123. $permission = '';
  124. }
  125. $permission_exist = pdo_get('users_permission', array('uniacid' => $_W['uniacid'], 'uid' => $clerk['uid'], 'type' => 'system'));
  126. if (empty($permission_exist)) {
  127. pdo_insert('users_permission', array('uniacid' => $_W['uniacid'], 'uid' => $clerk['uid'], 'type' => 'system', 'permission' => $permission));
  128. } else {
  129. pdo_update('users_permission', array('permission' => $permission), array('uniacid' => $_W['uniacid'], 'uid' => $clerk['uid'], 'type' => 'system'));
  130. }
  131. $permission = $_GPC['permission'];
  132. $modules_permission = array();
  133. foreach ($permission as $permi) {
  134. if (strexists($permi, 'menu')) {
  135. $permis = $permi;
  136. $permi = explode('_', $permi);
  137. $num = count($permi);
  138. unset($permi[$num-1]);
  139. unset($permi[$num-2]);
  140. $module_name = implode('_', $permi);
  141. $modules = uni_modules_app_binding();
  142. if (in_array($module_name, array_keys($modules))) {
  143. $modules_permission[$module_name] = $permis.'|'.$modules_permission[$module_name];
  144. }
  145. }
  146. }
  147. foreach ($modules_permission as $module_name => $module_p) {
  148. $module_p = trim($module_p, '|');
  149. $module_permission = pdo_get('users_permission', array('uniacid' => $_W['uniacid'], 'uid' => $clerk['uid'], 'type' => $module_name));
  150. if (!empty($module_permission)) {
  151. pdo_update('users_permission', array('permission' => $module_p), array('uniacid' => $_W['uniacid'], 'uid' => $clerk['uid'], 'type' => $module_name));
  152. } else {
  153. pdo_insert('users_permission', array('permission' => $module_p.'|'.$permis, 'uniacid' => $_W['uniacid'], 'uid' => $clerk['uid'], 'type' => $module_name));
  154. }
  155. }
  156. $account_user = pdo_get('uni_account_users', array('uniacid' => $_W['uniacid'], 'uid' => $clerk['uid']));
  157. if (empty($account_user)) {
  158. pdo_insert('uni_account_users', array('uniacid' => $_W['uniacid'], 'uid' => $clerk['uid'], 'role' => 'clerk'));
  159. } else {
  160. pdo_update('uni_account_users', array('role' => 'clerk'), array('uniacid' => $_W['uniacid'], 'uid' => $clerk['uid']));
  161. }
  162. $data = array(
  163. 'uniacid' => $_W['uniacid'],
  164. 'storeid' => $storeid,
  165. 'name' => $name,
  166. 'mobile' => $mobile,
  167. 'openid' => trim($_GPC['openid']),
  168. 'nickname' => trim($_GPC['nickname']),
  169. 'uid' => $clerk['uid'],
  170. 'password' => $_GPC['password']
  171. );
  172. if (empty($_GPC['password'])) {
  173. unset($data['password']);
  174. }
  175. if (empty($clerk['id'])) {
  176. pdo_insert('activity_clerks', $data);
  177. } else {
  178. pdo_update('activity_clerks', $data, array('uniacid' => $_W['uniacid'], 'id' => $id));
  179. }
  180. message('编辑店员资料成功', url('activity/clerk/list'), 'success');
  181. }
  182. $stores = pdo_getall('activity_stores', array('uniacid' => $_W['uniacid'], 'source' => COUPON_TYPE), array('id', 'business_name', 'branch_name'));
  183. $permission = clerk_permission_list();
  184. $clerk_p = pdo_fetchall("SELECT * FROM ". tablename('activity_clerk_menu'). " WHERE (uniacid = :uniacid OR system = '1') AND pid = 0 ORDER BY system DESC", array(':uniacid' => $_W['uniacid']), 'group_name');
  185. $clerk_c = pdo_fetchall("SELECT * FROM ". tablename('activity_clerk_menu'). " WHERE (uniacid = :uniacid OR system = '1') AND pid <> 0 ORDER BY displayorder ASC,system DESC", array(':uniacid' => $_W['uniacid']));
  186. $permission = array();
  187. foreach ($clerk_p as $p) {
  188. $permission[$p['id']]['title'] = $p['title'];
  189. $permission[$p['id']]['group_name'] = $p['group_name'];
  190. }
  191. foreach ($clerk_c as $c) {
  192. $permission[$c['pid']]['items'][] = $c;
  193. }
  194. }
  195. if ($do == 'verify') {
  196. if ($_W['isajax']) {
  197. $openid = trim($_GPC['openid']);
  198. $nickname = trim($_GPC['nickname']);
  199. if (!empty($openid)) {
  200. $sql = 'SELECT openid,nickname FROM ' . tablename('mc_mapping_fans') . " WHERE acid =:acid AND openid = :openid";
  201. $exist = pdo_fetch($sql, array(':openid' => $openid, ':acid' => $_W['acid']));
  202. } else {
  203. $sql = 'SELECT openid,nickname FROM ' . tablename('mc_mapping_fans') . " WHERE acid =:acid AND nickname = :nickname";
  204. $exist = pdo_fetch($sql, array(':nickname' => $nickname, ':acid' => $_W['acid']));
  205. }
  206. if (empty($exist)) {
  207. message(error(-1, '未找到对应的粉丝编号,请检查昵称或openid是否有效'), '', 'ajax');
  208. }
  209. message(error(0, $exist), '', 'ajax');
  210. }
  211. }
  212. if ($do == 'del') {
  213. $id = intval($_GPC['id']);
  214. $clerk = pdo_get('activity_clerks', array('id' => $id, 'uniacid' => $_W['uniacid']));
  215. if ($clerk['uid'] > 0) {
  216. pdo_delete('users',array('uid' => $clerk['uid']));
  217. pdo_delete('uni_account_users',array('uid' => $clerk['uid'], 'uniacid' => $_W['uniacid']));
  218. }
  219. pdo_delete('activity_clerks',array('id' => intval($_GPC['id']), 'uniacid' => $_W['uniacid']));
  220. message("删除成功",referer(),'success');
  221. }
  222. if ($do == 'switch') {
  223. $clerkid = intval($_GPC['id']);
  224. $clerk = pdo_get('activity_clerks', array('id' => $clerkid, 'uniacid' => $_W['uniacid']));
  225. $user = user_single(array('uid' => $clerk['uid']));
  226. $cookie = array();
  227. $cookie['uid'] = $user['uid'];
  228. $cookie['lastvisit'] = $user['lastvisit'];
  229. $cookie['lastip'] = $user['lastip'];
  230. $cookie['hash'] = md5($user['password'] . $user['salt']);
  231. $session = base64_encode(json_encode($cookie));
  232. isetcookie('__session', $session, 7 * 86400);
  233. header('Location:' . url('account/switch', array('uniacid' => $clerk['uniacid'])));
  234. exit;
  235. }
  236. template('activity/clerk');