mirror of
https://github.com/crmeb/CRMEB.git
synced 2025-12-12 19:12:49 +00:00
390 lines
12 KiB
PHP
390 lines
12 KiB
PHP
<?php
|
|
|
|
namespace app\admin\controller\wechat;
|
|
|
|
use app\admin\controller\AuthController;
|
|
use crmeb\services\FormBuilder as Form;
|
|
use app\admin\model\user\User;
|
|
use app\admin\model\wechat\WechatUser as UserModel;
|
|
use app\models\user\UserBill;
|
|
use crmeb\services\JsonService;
|
|
use crmeb\services\UtilService as Util;
|
|
use crmeb\services\WechatService;
|
|
use think\Collection;
|
|
use think\facade\Route as Url;
|
|
|
|
/**
|
|
* 管理员操作记录表控制器
|
|
* Class WechatUser
|
|
* @package app\admin\controller\wechat
|
|
*/
|
|
class WechatUser extends AuthController
|
|
|
|
{
|
|
|
|
/**
|
|
* 显示操作记录
|
|
*/
|
|
public function index(){
|
|
$where = Util::getMore([
|
|
['nickname',''],
|
|
['data',''],
|
|
['tagid_list',''],
|
|
['groupid','-1'],
|
|
['sex',''],
|
|
['export',''],
|
|
['stair',''],
|
|
['second',''],
|
|
['order_stair',''],
|
|
['order_second',''],
|
|
['subscribe',''],
|
|
['now_money',''],
|
|
['is_promoter',''],
|
|
],$this->request);
|
|
$tagidList = explode(',',$where['tagid_list']);
|
|
foreach ($tagidList as $k=>$v){
|
|
if(!$v){
|
|
unset($tagidList[$k]);
|
|
}
|
|
}
|
|
$tagidList = array_unique($tagidList);
|
|
$where['tagid_list'] = implode(',',$tagidList);
|
|
try{
|
|
$groupList=UserModel::getUserGroup();
|
|
$tagList=UserModel::getUserTag();
|
|
}catch (\Exception $e){
|
|
$groupList=[];
|
|
$tagList=[];
|
|
}
|
|
$this->assign([
|
|
'where'=>$where,
|
|
'groupList'=>$groupList,
|
|
'tagList'=>$tagList
|
|
]);
|
|
$limitTimeList = [
|
|
'today'=>implode(' - ',[date('Y/m/d'),date('Y/m/d',strtotime('+1 day'))]),
|
|
'week'=>implode(' - ',[
|
|
date('Y/m/d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600)),
|
|
date('Y-m-d', (time() + (7 - (date('w') == 0 ? 7 : date('w'))) * 24 * 3600))
|
|
]),
|
|
'month'=>implode(' - ',[date('Y/m').'/01',date('Y/m').'/'.date('t')]),
|
|
'quarter'=>implode(' - ',[
|
|
date('Y').'/'.(ceil((date('n'))/3)*3-3+1).'/01',
|
|
date('Y').'/'.(ceil((date('n'))/3)*3).'/'.date('t',mktime(0,0,0,(ceil((date('n'))/3)*3),1,date('Y')))
|
|
]),
|
|
'year'=>implode(' - ',[
|
|
date('Y').'/01/01',date('Y/m/d',strtotime(date('Y').'/01/01 + 1year -1 day'))
|
|
])
|
|
];
|
|
$uidAll = UserModel::getAll($where);
|
|
$this->assign(compact('limitTimeList','uidAll'));
|
|
$this->assign(UserModel::systemPage($where));
|
|
return $this->fetch();
|
|
}
|
|
|
|
public function edit_user_tag($openid)
|
|
{
|
|
if(!$openid) return JsonService::fail('参数错误!');
|
|
$list = Collection::make(UserModel::getUserTag())->each(function($item){
|
|
return ['value'=>$item['id'],'label'=>$item['name']];
|
|
});
|
|
$tagList = UserModel::where('openid',$openid)->value('tagid_list');
|
|
|
|
$tagList = explode(',',$tagList)?:[];
|
|
$f = [Form::select('tag_id','用户标签',$tagList)->setOptions($list->toArray())->multiple(1)];
|
|
$form = Form::make_post_form('标签名称',$f,Url::buildUrl('update_user_tag',compact('openid')));
|
|
$this->assign(compact('form'));
|
|
return $this->fetch('public/form-builder');
|
|
}
|
|
|
|
public function update_user_tag($openid)
|
|
{
|
|
if(!$openid) return JsonService::fail('参数错误!');
|
|
$tagId = request()->post('tag_id/a',[]);
|
|
if(!$tagId) return JsonService::fail('请选择用户标签!');
|
|
$tagList = explode(',',UserModel::where('openid',$openid)->value('tagid_list'))?:[];
|
|
UserModel::edit(['tagid_list'=>$tagId],$openid,'openid');
|
|
if(!$tagId[0])unset($tagId[0]);
|
|
UserModel::edit(['tagid_list'=>$tagId],$openid,'openid');
|
|
try{
|
|
foreach ($tagList as $tag){
|
|
if($tag) WechatService::userTagService()->batchUntagUsers([$openid],$tag);
|
|
}
|
|
foreach ($tagId as $tag){
|
|
WechatService::userTagService()->batchTagUsers([$openid],$tag);
|
|
}
|
|
}catch (\Exception $e){
|
|
UserModel::rollbackTrans();
|
|
return JsonService::fail($e->getMessage());
|
|
}
|
|
UserModel::commitTrans();
|
|
return JsonService::successful('修改成功!');
|
|
}
|
|
|
|
public function edit_user_group($openid)
|
|
{
|
|
if(!$openid) return JsonService::fail('参数错误!');
|
|
$list = Collection::make(UserModel::getUserGroup())->each(function($item){
|
|
return ['value'=>$item['id'],'label'=>$item['name']];
|
|
});
|
|
$groupId = UserModel::where('openid',$openid)->value('groupid');
|
|
$f = [Form::select('group_id','用户分组',(string)$groupId)->setOptions($list->toArray())];
|
|
$form = Form::make_post_form('用户分组',$f,Url::buildUrl('update_user_group',compact('openid')));
|
|
$this->assign(compact('form'));
|
|
return $this->fetch('public/form-builder');
|
|
}
|
|
|
|
public function update_user_group($openid)
|
|
{
|
|
if(!$openid) return JsonService::fail('参数错误!');
|
|
$groupId = request()->post('group_id');
|
|
// if(!$groupId) return JsonService::fail('请选择用户分组!');
|
|
UserModel::beginTrans();
|
|
UserModel::edit(['groupid'=>$groupId],$openid,'openid');
|
|
try{
|
|
WechatService::userGroupService()->moveUser($openid,$groupId);
|
|
}catch (\Exception $e){
|
|
UserModel::rollbackTrans();
|
|
return JsonService::fail($e->getMessage());
|
|
}
|
|
UserModel::commitTrans();
|
|
return JsonService::successful('修改成功!');
|
|
}
|
|
|
|
/**
|
|
* 用户标签列表
|
|
*/
|
|
public function tag($refresh = 0)
|
|
{
|
|
$list=[];
|
|
if($refresh == 1) {
|
|
UserModel::clearUserTag();
|
|
$this->redirect(Url::buildUrl('tag'));
|
|
}
|
|
try{
|
|
$list = UserModel::getUserTag();
|
|
}catch (\Exception $e){}
|
|
$this->assign(compact('list'));
|
|
return $this->fetch();
|
|
}
|
|
|
|
/**
|
|
* 添加标签
|
|
* @return mixed
|
|
*/
|
|
public function create_tag()
|
|
{
|
|
$f = [Form::input('name','标签名称')];
|
|
$form = Form::make_post_form('标签名称',$f,Url::buildUrl('save_tag'));
|
|
$this->assign(compact('form'));
|
|
return $this->fetch('public/form-builder');
|
|
}
|
|
|
|
/**
|
|
* 添加
|
|
*/
|
|
public function save_tag()
|
|
{
|
|
$tagName = request()->post('name');
|
|
if(!$tagName) return JsonService::fail('请输入标签名称!');
|
|
try{
|
|
WechatService::userTagService()->create($tagName);
|
|
}catch (\Exception $e){
|
|
return JsonService::fail($e->getMessage());
|
|
}
|
|
UserModel::clearUserTag();
|
|
return JsonService::successful('添加标签成功!');
|
|
}
|
|
|
|
/**
|
|
* 修改标签
|
|
* @param $id
|
|
* @return mixed
|
|
*/
|
|
public function edit_tag($id)
|
|
{
|
|
$f = [Form::input('name','标签名称')];
|
|
$form = Form::make_post_form('标签名称',$f,Url::buildUrl('update_tag',['id'=>$id]));
|
|
$this->assign(compact('form'));
|
|
return $this->fetch('public/form-builder');
|
|
}
|
|
|
|
/**
|
|
* 修改标签
|
|
* @param $id
|
|
*/
|
|
public function update_tag($id)
|
|
{
|
|
$tagName = request()->post('name');
|
|
if(!$tagName) return JsonService::fail('请输入标签名称!');
|
|
try{
|
|
WechatService::userTagService()->update($id,$tagName);
|
|
}catch (\Exception $e){
|
|
return JsonService::fail($e->getMessage());
|
|
}
|
|
UserModel::clearUserTag();
|
|
return JsonService::successful('修改标签成功!');
|
|
}
|
|
|
|
/**
|
|
* 删除标签
|
|
* @param $id
|
|
* @return \think\response\Json
|
|
*/
|
|
public function delete_tag($id)
|
|
{
|
|
try{
|
|
WechatService::userTagService()->delete($id);
|
|
}catch (\Exception $e){
|
|
return JsonService::fail($e->getMessage());
|
|
}
|
|
UserModel::clearUserTag();
|
|
return JsonService::successful('删除标签成功!');
|
|
}
|
|
|
|
/**
|
|
* 用户分组列表
|
|
*/
|
|
|
|
public function group($refresh = 0)
|
|
{
|
|
$list=[];
|
|
try{
|
|
if($refresh == 1) {
|
|
UserModel::clearUserGroup();
|
|
$this->redirect(Url::buildUrl('group'));
|
|
}
|
|
$list = UserModel::getUserGroup();
|
|
}catch (\Exception $e){}
|
|
$this->assign(compact('list'));
|
|
return $this->fetch();
|
|
}
|
|
|
|
/**
|
|
* 添加分组
|
|
* @return mixed
|
|
*/
|
|
public function create_group()
|
|
{
|
|
$f = [Form::input('name','分组名称')];
|
|
$form = Form::make_post_form('标签名称',$f,Url::buildUrl('save_group'));
|
|
$this->assign(compact('form'));
|
|
return $this->fetch('public/form-builder');
|
|
}
|
|
|
|
/**
|
|
* 添加
|
|
*/
|
|
public function save_group()
|
|
{
|
|
$tagName = request()->post('name');
|
|
if(!$tagName) return JsonService::fail('请输入分组名称!');
|
|
try{
|
|
WechatService::userGroupService()->create($tagName);
|
|
}catch (\Exception $e){
|
|
return JsonService::fail($e->getMessage());
|
|
}
|
|
UserModel::clearUserGroup();
|
|
return JsonService::successful('添加分组成功!');
|
|
}
|
|
|
|
/**
|
|
* 修改分组
|
|
* @param $id
|
|
* @return mixed
|
|
*/
|
|
public function edit_group($id)
|
|
{
|
|
$f = [Form::input('name','分组名称')];
|
|
$form = Form::make_post_form('标签名称',$f,Url::buildUrl('update_group',compact('id')));
|
|
$this->assign(compact('form'));
|
|
return $this->fetch('public/form-builder');
|
|
}
|
|
|
|
/**
|
|
* 修改分组
|
|
* @param $id
|
|
*/
|
|
public function update_group($id)
|
|
{
|
|
$tagName = request()->post('name');
|
|
if(!$tagName) return JsonService::fail('请输入分组名称!');
|
|
try{
|
|
WechatService::userGroupService()->update($id,$tagName);
|
|
}catch (\Exception $e){
|
|
return JsonService::fail($e->getMessage());
|
|
}
|
|
UserModel::clearUserGroup();
|
|
return JsonService::successful('修改分组成功!');
|
|
}
|
|
|
|
/**
|
|
* 删除分组
|
|
* @param $id
|
|
* @return \think\response\Json
|
|
*/
|
|
public function delete_group($id)
|
|
{
|
|
try{
|
|
WechatService::userTagService()->delete($id);
|
|
}catch (\Exception $e){
|
|
return JsonService::fail($e->getMessage());
|
|
}
|
|
UserModel::clearUserGroup();
|
|
return JsonService::successful('删除分组成功!');
|
|
}
|
|
|
|
public function synchro_tag($openid){
|
|
if(!$openid) return JsonService::fail('参数错误!');
|
|
$data = array();
|
|
if(UserModel::be($openid,'openid')){
|
|
try{
|
|
$tag = WechatService::userTagService()->userTags($openid)->toArray();
|
|
}catch (\Exception $e) {
|
|
return JsonService::fail($e->getMessage());
|
|
}
|
|
if($tag['tagid_list']) $data['tagid_list'] = implode(',',$tag['tagid_list']);
|
|
else $data['tagid_list'] = '';
|
|
$res = UserModel::edit($data,$openid,'openid');
|
|
if($res) return JsonService::successful('同步成功');
|
|
else return JsonService::fail('同步失败!');
|
|
}else return JsonService::fail('参数错误!');
|
|
}
|
|
|
|
/**
|
|
* 一级推荐人页面
|
|
* @return mixed
|
|
*/
|
|
public function stair($uid = ''){
|
|
if($uid == '') return $this->failed('参数错误');
|
|
$list = User::alias('u')
|
|
->where('u.spread_uid',$uid)
|
|
->field('u.avatar,u.nickname,u.now_money,u.add_time,u.uid')
|
|
->where('u.status',1)
|
|
->order('u.add_time DESC')
|
|
->select()
|
|
->toArray();
|
|
foreach ($list as $key=>$value) $list[$key]['orderCount'] = StoreOrder::getOrderCount($value['uid']);
|
|
$this->assign('list',$list);
|
|
return $this->fetch();
|
|
}
|
|
|
|
/**
|
|
* 个人资金详情页面
|
|
* @return mixed
|
|
*/
|
|
public function now_money($uid = ''){
|
|
if($uid == '') return $this->failed('参数错误');
|
|
$list = UserBill::where('uid',$uid)->where('category','now_money')
|
|
->field('mark,pm,number,add_time')
|
|
->where('status',1)->order('add_time DESC')->select()->toArray();
|
|
foreach ($list as &$v){
|
|
$v['add_time'] = date('Y-m-d H:i:s',$v['add_time']);
|
|
}
|
|
$this->assign('list',$list);
|
|
return $this->fetch();
|
|
}
|
|
|
|
}
|
|
|