123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527 |
- <?php
- namespace app\system\controller\v1;
- use app\BaseController;
- use app\model\api\MemberDetail;
- use app\model\system\Member as MemberModel;
- use app\model\system\MemberFollow;
- use app\model\system\MemberLevel;
- use library\services\UtilService;
- use library\utils\IpLocation;
- use app\Request;
- class Member extends BaseController
- {
- /**
- *
- * @param Request $request
- * @return mixed
- */
- public function getMember(Request $request)
- {
- $pageSize = 50;
- $post = UtilService::getMore([
- ['page',1],
- ['keyword',''],
- ['i_uid',''],
- ['mobile',''],
- ['level',''],
- ['uid',''],
- ['follow_type',''],
- ['timeVal',[]],
- ['not_buy',''],
- ['label',''],
- ['admin_id',''],
- ['not_follow',''],
- ['lately_login',''],
- ['type','']
- ]);
- list($pageCount,$data) = (new MemberModel)->getList($post['page'],$post,$pageSize,'*','uid desc');
- $result = UtilService::getParam([
- 'uid',
- 'mobile',
- 'label',
- 'wechat',
- 'nickname',
- 'sex',
- 'avatar',
- 'money',
- 'name',
- "tx_money",
- "level_name",
- 'status',
- 'follow_type',
- 'levelid',
- 'order_count',
- 'recharge_count',
- 'order_info_count',
- ['last_con_time','last_con_time','getLastTime($1)'],
- 'i_nickname',
- 'i_uid',
- 'regip',
- ['regtime','regtime','date("Y-m-d H:i:s",$1)'],
- ['lasttime','lasttime','date("Y-m-d H:i:s",$1)'],
- ['ipara','regip',function($item){
- return (new IpLocation())->getlocation($item)['country'];
- }],
- 'last_follow_time'
- ],$data);
- return app('json')->success([
- 'list' => $result,
- 'pageCount' => $pageCount,
- 'pageSize' => $pageSize,
- 'page' => $post['page']
- ]);
- }
- public function down(Request $request) {
- $where = UtilService::getMore([
- ['page',1],
- ['keyword',''],
- ['i_uid',''],
- ['mobile',''],
- ['level',''],
- ['uid',''],
- ['follow_type',''],
- ['timeVal',[]],
- ['not_buy',''],
- ['label',''],
- ['admin_id',''],
- ['not_follow',''],
- ['lately_login',''],
- ['type','']
- ]);
- $data = (new MemberModel())
- ->field(
- "m.*,l.name as level_name,
- (select count(*) from table_order where uid = m.uid and status > 0) as order_count,
- (select sum(v) from table_recharge where status = 1 and uid = m.uid ) as recharge_count,
- (select count(*) from table_order_info where status > 0 and uid = m.uid ) as order_info_count,
- (select nickname from table_member where uid = m.i_uid) as i_nickname"
- )
- ->alias("m")
- ->leftJoin("member_level l","l.id=m.levelid")
- ->when(!empty($where),function ($query) use($where){
- //keyword
- if(!empty($where['keyword'])) {
- $query->whereLike('m.nickname',"%{$where['keyword']}%");
- }
- if(!empty($where['timeVal'][0]) && !empty($where['timeVal'][1])) {
- $query->where('regtime','>',strtotime($where['timeVal'][0]));
- $query->where('regtime','<',strtotime($where['timeVal'][1]));
- }
- if(!empty($where['not_buy'])) {
- //今日消费
- if($where['not_buy'] == 'today') {
- $query->whereTime("last_con_time",'today');
- }
- //7天内消费
- if($where['not_buy'] == '1_7day') {
- $time = time() - 6*24*3600;
- $query->where("last_con_time",'>',$time);
- $query->order("last_con_time","desc");
- }
- //7-13天未消费
- if($where['not_buy'] == '7day') {
- $time = time() - 13*24*3600;
- $times = time() - 6*24*3600;
- $query->where("last_con_time",'>',$time);
- $query->where("last_con_time",'<',$times);
- $query->order("last_con_time","desc");
- }
- //14天未消费
- if($where['not_buy'] == '14day') {
- $time = time() - 13*24*3600;
- $query->where("last_con_time",'<',$time);
- $query->where("last_con_time",'<>',0);
- $query->order("last_con_time","desc");
- }
- //1个月未消费
- if($where['not_buy'] == 'month') {
- $time = strtotime('-1 month');
- $query->where("last_con_time",'<',$time);
- $query->where("last_con_time",'<>',0);
- $query->order("last_con_time","desc");
- }
- //从无消费
- if($where['not_buy'] == 'nothing') {
- $query->where("last_con_time",0);
- }
- }
- if(!empty($where['mobile'])) {
- $query->whereLike('m.mobile',"%{$where['mobile']}%");
- }
- if(!empty($where['level'])) {
- $query->where('m.levelid',$where['level']);
- }
- if(strlen($where['follow_type']) > 0) {
- $query->where('m.follow_type',$where['follow_type']);
- }
- if(!empty($where['i_uid'])) {
- $query->where('m.i_uid',$where['i_uid']);
- }
- if(!empty($where['uid'])) {
- $query->where('m.uid',$where['uid']);
- }
- if(!empty($where['label'])) {
- $query->where('m.label',$where['label']);
- }
- if(!empty($where['admin_id'])) {
- $query->where('m.admin_id',$where['admin_id']);
- }
- if(!empty($where['not_follow'])) {
- if($where['not_follow']=='3day'){
- $time = time() - 3*24*3600;
- $query->where("last_follow_time",'<',$time);
- }else{
- $time = time() - 7*24*3600;
- $query->where("last_follow_time",'<',$time);
- }
- }
- if(!empty($where['lately_login'])) {
- $time = time() - 3*24*3600;
- $query->where("lasttime",'>',$time);
- }
- if(!empty($where['type'])) {
- if($where['type']=='new'){
- $query->where("last_con_time",'=',0);
- }else{
- $query->where("last_con_time",'<>',0);
- }
- }
- })
- ->order('uid desc')
- ->select()
- ->toArray();
- $result = UtilService::getParam([
- 'uid',
- 'mobile',
- 'wechat',
- 'nickname',
- 'sex',
- 'avatar',
- 'money',
- 'name',
- "tx_money",
- "level_name",
- 'status',
- 'follow_type',
- 'levelid',
- 'order_count',
- 'recharge_count',
- 'order_info_count',
- 'i_nickname',
- 'i_uid',
- 'regip',
- ['regtime','regtime','date("Y-m-d H:i:s",$1)'],
- ['lasttime','lasttime','date("Y-m-d H:i:s",$1)'],
- ['ipara','regip',function($item){
- return (new IpLocation())->getlocation($item)['country'];
- }]
- ],$data);
- return app('json')->success($result);
- }
- /**
- * 获取会员数据
- * @param Request $request
- * @return mixed
- */
- public function getItem(Request $request)
- {
- $pageSize = 50;
- $post = UtilService::getMore([
- ['uid',1]
- ]);
- $data = (new MemberModel())->getItem($post['uid']);
- $result = UtilService::getParam([
- 'uid',
- 'mobile',
- 'nickname',
- 'sex',
- 'avatar',
- 'address',
- 'money',
- 'name',
- "tx_money",
- "level_name",
- "site_name",
- 'status',
- 'levelid',
- 'order_count',
- 'recharge_count',
- 'order_info_count',
- 'regip',
- ['regtime','regtime','date("Y-m-d H:i:s",$1)'],
- ['lasttime','lasttime','date("Y-m-d H:i:s",$1)'],
- ['ipara','regip',function($item){
- return (new IpLocation())->getlocation($item)['country'];
- }]
- ],[$data]);
- return app('json')->success(empty($result) ? [] : $result[0]);
- }
- /**
- * 会员等级
- * @param Request $request
- * @return mixed
- */
- public function getMemberLevel(Request $request)
- {
- $pageSize = 50;
- $post = UtilService::getMore([
- ['page',1]
- ]);
- list($pageCount,$data) = (new MemberLevel())
- ->getList($post['page'],[function($query) use($post){
- }
- ],$pageSize,'*','id desc');
- $result = UtilService::getParam([
- 'id',
- 'name',
- 'code'
- ],$data);
- return app('json')->success([
- 'list' => $result,
- 'pageCount' => $pageCount,
- 'pageSize' => $pageSize,
- 'page' => $post['page']
- ]);
- }
- /**
- * 获取跟进管理员
- */
- public function getAdmin()
- {
- $admin = MemberFollow::alias("f")
- ->leftjoin('system_admin a','f.admin_id=a.id')
- ->field('a.id,a.name,a.username')
- ->where('a.id','<>','')
- ->group('f.admin_id')
- ->select()->toArray();
- return app('json')->success($admin);
- }
- /**
- * 修改会员数据
- * @param Request $request
- */
- public function memberUpdate(Request $request) {
- $post = UtilService::getMore([
- ['levelid','0'],
- ['mobile','','isMobile','请输入手机号码'],
- ['nickname',''],
- ['status','0'],
- ['name',''],
- ['password',''],
- ['avatar',''],
- ['sex','0'],
- ['uid','0','empty','参数错误']
- ], $request);
- $save = [
- 'mobile' => $post['mobile'],
- 'nickname' => $post['nickname'],
- 'sex' => $post['sex'],
- 'name' => $post['name'],
- 'levelid' => $post['levelid'],
- 'status' => $post['status'],
- 'avatar' => $post['avatar']
- ];
- if(!empty($post['password'])) {
- $save['password'] = md5($post['password']);
- }
- //
- (new MemberModel)->where('uid',$post['uid'])->save($save);
- return app('json')->success('修改成功');
- }
- /**
- * 操作明细
- * @param Request $request
- */
- public function detailList(Request $request) {
- $pageSize = 10;
- $post = UtilService::getMore(
- [
- ['page',1],
- ['uid','0'],
- ['time',[]]
- ],$request
- );
- $where['uid'] = $post['uid'];
- if(!empty($post['tabType']) && $post['tabType'] != 'all') {
- $where['code'] = $post['tabType'];
- }
- if(!empty($post['time'])) {
- $where['time'] = [[strtotime($post['time'][0]),strtotime($post['time'][1])],'whereBetween'];
- }
- $detail = new MemberDetail();
- list($pageCount,$data) = $detail->getList($post['page'],$where,$pageSize,"*","time desc");
- $result = UtilService::getParam([
- "id",
- "code",
- "v",
- 'title',
- 'content',
- "type",
- ["time","time","date('Y-m-d H:i:s',$1)"]
- ],$data);
- return app('json')->success([
- 'list' => $result,
- 'pageCount' => $pageCount,
- 'pageSize' => $pageSize,
- 'page' => $post['page']
- ]);
- }
- /**
- * 修改推荐人
- * @param Request $request
- */
- public function editTj(Request $request) {
- $post = UtilService::getMore(
- [
- ['uid','','empty','参数错误'],
- ['i_uid','0']
- ],$request
- );
- if($post['uid'] == $post['i_uid']) {
- return app('json')->fail('自己无法挂载自己下面');
- }
- (new \app\model\system\Member)->where('uid',$post['uid'])->save(['i_uid'=>$post['i_uid']]);
- return app('json')->success('操作成功');
- }
- /**
- * 转账操作
- */
- public function sendMoney(Request $request){
- $post = UtilService::getMore(
- [
- ['uid','','empty','参数错误'],
- ['type','','empty','请输入转账类型'],
- ['money','0','empty','请输入转账金额'],
- ['mono','']
- ],$request
- );
- $member = \app\model\system\Member::where('uid',$post['uid'])->find();
- if(empty($member)) {
- return app('json')->fail('找不到用户数据');
- }
- $detail = new MemberDetail();
- //减少
- if($post['type'] == 'jdd') {
- $detail->adminInc(
- $post['money'],
- $post['uid'],
- ['time'=>date('Y-m-d'),'money'=>$post['money'],'mono'=>empty($post['mono']) ? '无': $post['mono']],
- $post['type']
- );
- }
- //添加
- if($post['type'] == 'add') {
- $detail->adminInc(
- $post['money'],
- $post['uid'],
- ['time'=>date('Y-m-d'),'money'=>$post['money'],'mono'=>empty($post['mono']) ? '无': $post['mono']],
- $post['type']
- );
- }
- return app('json')->success('操作成功');
- }
- /**
- * 操作明细
- * @param Request $request
- */
- public function followUpList(Request $request) {
- $pageSize = 5;
- $post = UtilService::getMore(
- [
- ['page',1],
- ['uid','0'],
- ['time',[]]
- ],$request
- );
- $where['uid'] = $post['uid'];
- if(!empty($post['time'])) {
- $where['time'] = [[strtotime($post['time'][0]),strtotime($post['time'][1])],'whereBetween'];
- }
- $detail = new MemberFollow();
- list($pageCount,$data) = $detail->getList($post['page'],$where,$pageSize,"*","time desc");
- $result = UtilService::getParam([
- "id",
- 'title',
- 'content',
- "type",
- ['name',"username"],
- ["time","time","date('Y-m-d H:i:s',$1)"]
- ],$data);
- return app('json')->success([
- 'list' => $result,
- 'pageCount' => $pageCount,
- 'pageSize' => $pageSize,
- 'page' => $post['page']
- ]);
- }
- /**
- * 会员跟进
- * @param Request $request
- */
- public function followUpSave(Request $request) {
- $post = UtilService::getMore(
- [
- ['uid','','empty','参数错误'],
- ['title','','empty','参数错误'],
- ['content','','empty','参数错误'],
- ['type','0'],
- ],$request
- );
- $user = MemberModel::where('uid',$post['uid'])->find();
- if(empty($user))
- return app('json')->fail('参数错误');
- $memberFollow = new MemberFollow;
- $memberFollow->insert([
- 'uid' => $post['uid'],
- 'title' => $post['title'],
- 'content' => $post['content'],
- 'admin_id' => $this->request->adminInfo['id'],
- 'time' => time(),
- 'type' => $post['type']
- ]);
- MemberModel::where('uid',$post['uid'])->save(['follow_type'=>$post['type'],'last_follow_time'=>time()]);
- return app("json")->success('操作成功');
- }
- }
|