文件
mashangyoujiu/Application/Retail/Controller/MenuController.class.php

394 行
14 KiB
PHP
可执行文件

<?php
namespace Retail\Controller;
/**
* 2019-4-28 新版菜单栏
*/
use Common\Model\ImageGalleryModel;
use Common\Model\JurisdictionGroupModel;
use Common\Model\RetailStoreAuthModel;
use Common\Model\RetailStoreModel;
use Retail\Business\Menu;
use Think\Controller;
//[1.8.50]
class MenuController extends NewBaseController
{
public function index()
{
$this->display();
}
public function getMenuData()
{
if (IS_POST) {
$user = session('jurisdiction_user');
$store_id = session('store_id');
$store_id = $store_id ? $store_id : 0;
if (in_array($user['login_type'], ['3', '4'])) {
$merchant_id = $user['merchant_id'];
}
if (!empty($user['avatar_id'])) {
$ImageGalleryModel = new ImageGalleryModel();
$user['avatar'] = $ImageGalleryModel->getFieldPath(['id' => $user['avatar_id']]);
}
$notice = '';
if (!empty($store_id)) {
$notice = M('retail_notice')->where(['merchantid' => $merchant_id, 'stype' => 1])->order('id desc')->getField('title');
}
$MenuApi = new Menu();
$menu = $MenuApi->getMenu([
'login_type' => $user['login_type'],
'agent_id' => $user['agent_id'],
'merchant_id' => $user['merchant_id'],
'store_id' => $store_id,
'jurisdiction_group_id' => $user['jurisdiction_group_id'],
]);
//获取扫码登录的公众号配置信息
$wxConfig = M('partner_wxconfig')->count();
$logo = M('retail_logo')->order('id asc')->find();
$data = [
'menu' => $menu,
'notice' => $notice,
'logo' => $logo ? $logo : ((object)[]),
'openScan' => $wxConfig ? 1 : 0,
'user' => [
'name' => $user['name'],
'avatar' => $user['avatar'],
'isBinding' => $user['openid'] ? true : false,
],
];
$JurGroupModel = new JurisdictionGroupModel();
switch ($user['user_type']) {
case '0':
$data['manageName'] = $JurGroupModel->getFindField(['id' => $user['jurisdiction_group_id']], 'role_name');
break;
case '1':
$data['manageName'] = '合伙人';
break;
case '2':
$data['manageName'] = '代理商';
break;
case '3':
$data['manageName'] = '商户';
break;
case '4':
$data['manageName'] = '门店';
break;
case '5':
$data['manageName'] = '导购员';
break;
}
if (!empty($merchant_id)) {
$data['merchant_id'] = $merchant_id;
if ($store_id) {
$StoreModel = new RetailStoreModel();
$store = $StoreModel->getFind(array('id' => $store_id), 'storetag,industry_id');
//处理门店权限
$StoreAuthModel = new RetailStoreAuthModel();
$auth = $StoreAuthModel->getFind(['storeid' => $store_id]);
$authObj = [];
foreach ($auth as $key => &$v) {
if (is_numeric($v)) {
$authObj[$key] = ($v == 1 || $user['login_type'] == 3) ? true : false;
}
}
$data['store_id'] = $store_id;
$data['industry_id'] = $store['industry_id'];
$data['store_name'] = $store['storetag'];
$data['store_auth'] = $authObj;
if ($user['login_type'] == 3) {
$data['user']['other_name'] = $data['store_name'];
}
}
}
$this->ajaxReturn([
'status' => 1,
'message' => '获取成功',
'data' => $data,
]);
}
}
/**
* 修改密码
*/
public function resetPassword()
{
if (IS_POST) {
$user = session('jurisdiction_user');
$oldPass = I('post.oldPass');
$newPass = I('post.newPass');
$newRePass = I('post.newRePass');
if (empty($user) || empty($oldPass) || empty($newPass) || empty($newRePass)) {
$res['status'] = 0;
$res['msg'] = '缺少参数';
$this->ajaxReturn($res);
}
if (strlen($newPass) > 16) {
$res['status'] = 0;
$res['msg'] = '密码长度不能大于16位';
$this->ajaxReturn($res);
exit;
}
if ($newPass != $newRePass) {
$res['status'] = 0;
$res['msg'] = '两次输入密码不一致';
$this->ajaxReturn($res);
}
$CryptoModel = new \Addons\Api\Crypto ();
$oldPwd = $CryptoModel->encrypt($oldPass, date('YmdHis', $user['add_time']));
//判断旧密码
$res['old'] = $oldPwd;
$res['new'] = $user['password'];
if ($oldPwd == $user['password']) {
$newPwd = $CryptoModel->encrypt($newPass, date('YmdHis', $user['add_time']));
$update = M('jurisdiction_user')->where(array('id' => $user['id']))->save(array('password' => $newPwd));
if ($update) {
$user['password'] = $newPwd;
session('jurisdiction_user', $user);
$res['status'] = 1;
$res['msg'] = '密码修改成功';
} else {
$res['status'] = 0;
$res['msg'] = '密码未修改';
}
} else {
$res['status'] = 0;
$res['msg'] = '密码有误';
}
} else {
$res['status'] = 0;
$res['msg'] = '网络错误';
}
$this->ajaxReturn($res);
}
/**
* 退出登录 2019-4-28
*/
Public function loginOut()
{
session(null);
header('Location:' . U('Retail/Login/index'));
}
/**
* 获取微信授权二维码 2019-2-28
*/
public function random()
{
if (IS_POST) {
$user = session('jurisdiction_user');
if (empty($user)) {
$res['status'] = 0;
$res['msg'] = '缺少参数';
$this->ajaxReturn($res);
}
$wxConfig = M('partner_wxconfig')->find();
if (empty($wxConfig)) {
$res['status'] = 0;
$res['msg'] = '系统未配置授权登录公众号';
$this->ajaxReturn($res);
}
$str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$len = strlen($str) - 1;
$randStr = '';
for ($i = 0; $i < 10; $i++) {
$num = mt_rand(0, $len);
$randStr .= $str[$num];
}
$item['token'] = $randStr; //token
$item['user_id'] = $user['id']; //角色用户id
$item['user_type'] = $user['user_type'];
$item['start_time'] = time();
$item['end_time'] = time() + 60; //token有效期
$item['status'] = 0;
$add = M('auth_token')->add($item);
if ($add) {
$url = 'http://' . $_SERVER['HTTP_HOST'] . '/index.php/Retail/Binding/index?token=' . $randStr;
$data['url'] = $url;
$data['token'] = $randStr;
$data['title'] = $wxConfig['official_name'];
$res['data'] = $data;
$res['status'] = 1;
$res['msg'] = '获取授权码成功';
} else {
$res['status'] = 0;
$res['msg'] = '获取授权码失败,请重试';
}
} else {
$res['status'] = 0;
$res['msg'] = '网络错误';
}
$this->ajaxReturn($res);
}
/**
* 判断用户是否扫描 2019-4-28
*/
public function check()
{
if (IS_POST) {
$token = I('post.token');
$user = session('jurisdiction_user');
if (!empty($token) && !empty($user)) {
$map['token'] = $token;
$map['user_id'] = $user['id'];
$map['start_time'] = array('lt', time());
$find = M('auth_token')->where($map)->find();
if ($find) {
switch ($find['status']) {
case '0':
if ($find['end_time'] < time()) {
$res['status'] = 4;
$res['msg'] = '等待超时';
} else {
$res['status'] = 0;
$res['msg'] = '用户未扫描';
}
break;
case '1':
$res['status'] = 1;
$res['msg'] = '用户已扫描';
break;
case '2':
$res['status'] = 2;
$res['msg'] = '用户授权成功';
break;
case '3':
$res['status'] = 3;
$res['msg'] = '用户取消授权';
break;
default:
if ($find['end_time'] < time()) {
$res['status'] = 4;
$res['msg'] = '等待超时';
} else {
$res['status'] = 0;
$res['msg'] = '用户未扫描';
}
}
} else {
$res['status'] = 0;
$res['msg'] = '请求参数有误';
}
} else {
$res['status'] = 0;
$res['msg'] = '缺少参数';
}
$this->ajaxReturn($res);
}
}
/**
* 查看用户授权情况 2019-4-28
*/
public function auth()
{
if (IS_POST) {
$user = session('jurisdiction_user');
$token = I('post.token');
if (empty($user) || empty($token)) {
$res['status'] = 0;
$res['msg'] = '缺少参数';
$this->ajaxReturn($res);
}
$map['token'] = $token;
$map['user_id'] = $user['id'];
$map['start_time'] = array('lt', time());
$result = M('auth_token')->where($map)->find();
if ($result['status'] == 2) {
$res['status'] = 1;
$res['msg'] = '授权成功';
} else if ($result['status'] == 3) {
$res['status'] = 2;
$res['msg'] = '取消授权';
} else if ($result['end_time'] < time()) {
$res['status'] = 3;
$res['msg'] = '等待超时';
} else {
$res['status'] = 0;
$res['msg'] = '用户未操作';
}
} else {
$res['status'] = 0;
$res['msg'] = '网络有误';
}
$this->ajaxReturn($res);
}
/**
* 解绑微信 2019-4-28
*/
public function relieveWx()
{
if (IS_POST) {
$user = session('jurisdiction_user');
if (empty($user)) {
$res['status'] = 0;
$res['msg'] = '缺少参数';
$this->ajaxReturn($res);
}
$up['openid'] = '';
$update = M('jurisdiction_user')->where(array('id' => $user['id']))->save($up);
if ($update) {
$res['status'] = 1;
$res['msg'] = '解除成功';
} else {
$res['status'] = 0;
$res['msg'] = '解除失败';
}
} else {
$res['status'] = 0;
$res['msg'] = '网络有误';
}
$this->ajaxReturn($res);
}
/**
* 修改用户头像 2019-4-28
*/
public function setUserImage()
{
if (IS_POST) {
$user = session('jurisdiction_user');
$avatar_id = I('post.avatar_id');
$avatar = I('post.avatar');
if (!$avatar_id || !$avatar) {
$res['status'] = 0;
$res['msg'] = '请选择图片';
$this->ajaxReturn($res);
}
$save = M('jurisdiction_user')->where(array('id' => $user['id']))->save(array('avatar_id' => $avatar_id, 'avatar' => $avatar));
if ($save) {
$user['avatar'] = $avatar;
$user['avatar_id'] = $avatar_id;
session('jurisdiction_user', $user);
$res['status'] = 1;
$res['msg'] = '设置成功';
} else {
$res['status'] = 2;
$res['msg'] = '设置失败';
}
} else {
$res['status'] = 0;
$res['msg'] = '网络错误';
}
$this->ajaxReturn($res);
}
public function reBack()
{
session('store_id', null);
session('storeid', null);
}
}