'正常', -1 => '冻结', ]; /** * 添加经理 * @param $data * @return mixed */ public function addManage($data) { $manage_info = model('manage_user')->getInfo( [['username', '=', $data['username']], ['is_delete', '=', 0]], 'id' ); if (!empty($manage_info)) return $this->error('', '已经是经理了'); $data['create_time'] = time(); $data['audit_time'] = time(); if (!isset($data['password'])) { $data['password'] = dataMd5($data['password']); } model('manage_user')->startTrans(); try { if (!empty($data['parent'])) { //添加上级经理一级下线人数 model('manage_user')->setInc([['id', '=', $data['parent']]], 'one_child_num'); //增加一级下线人数 } if (!empty($data['grand_parent'])) { //添加上级经理一级下线人数 model('manage_user')->setInc([['id', '=', $data['grand_parent']]], 'two_child_num');//增加二级下线人数 } $res = model('manage_user')->add($data); $data['manage_id'] = $res; $updata = event('AddManage', $data, true); $updata['rcode'] = createShareCode($res); model('manage_user')->update($updata, [['id', '=', $res]]); model('manage_user')->commit(); return $this->success($res); } catch (\Exception $e) { model('manage')->rollback(); return $this->error('', $e->getMessage()); } } /*** * 自动成为经理 * @param $order_info * @return void */ public function autoBecomeManage($order_info) { $condition = [ ['m.site_id', '=', $order_info['site_id']], ['m.member_id', '=', $order_info['member_id']] ]; $join = [ ['member m', 'u.member_id=m.source_member', 'inner'] ]; $model = new ConfigModel(); $basics_config = $model->getBasicsConfig($order_info['site_id'])['data']['value']; if (!$basics_config['is_member_settled']) return $this->error('', '未开启入驻通道'); $parent = (array)model('manage_user')->getInfo($condition, 'u.id,u.parent,u.grand_parent', 'u', $join); $data = [ 'id' => $parent['id'] ?? 0, 'parent' => $parent['parent'] ?? 0, 'grand_parent' => $parent['grand_parent'] ?? 0, 'site_id' => $order_info['site_id'], 'member_id' => $order_info['member_id'], 'real_name' => $order_info['name'], 'mobile' => $order_info['mobile'], ]; $this->applyManage($data, $basics_config); return $this->success($parent); } /*** * 自动升级 * @param $data * @return void */ public function autoBecomeUpgrade($manage_id = '') { if ($manage_id) { //获取拓客管理员信息 $condition = [ ['id', '=', $manage_id] ]; $field = 'site_id,district_id,level_id,parent,one_site_order_num,one_site_total_order,one_site_order_money,one_child_site_num,two_child_site_num,one_child_num,two_child_num,total_commission'; $manage_info = model('manage_user')->getInfo($condition, $field); if ($manage_info) { $level_config = $this->geNextLevel($manage_info, $manage_info['site_id']); if (isset($level_config['last_level'])) { $last_level = $level_config['last_level']; $upgrade_type = $last_level['upgrade_type']; $order_total_num = $last_level['order_total_num']; //商家订单交易总数 $order_total_money = $last_level['order_total_money']; //商家总交易额 $order_commission_money = $last_level['order_commission_money']; //直客商家交易佣金 $one_child_site_num = $last_level['one_child_site_num']; //推荐商家数量 $one_child_indirect_site_num = $last_level['one_child_indirect_site_num']; //间联商家数量 $region_child_site_num = $last_level['region_child_site_num']; //区域商家数量 $weight_level = $last_level['weight_level']; //权重等级 $direct_site_num = $last_level['direct_site_num']; //权重直客商家数量 $indirect_site_num = $last_level['indirect_site_num'];//权重间联商家数量 // $one_site_order_num = $manage_info['one_site_order_num'];//直连订单总数 // $one_site_total_order = $manage_info['one_site_total_order'];//直连订单总额 // $manage_one_child_site_num = $manage_info['one_child_site_num'];//直连商家数量 // $manage_two_child_site_num = $manage_info['two_child_site_num'];//间联商家总数 // $one_site_order_money = $manage_info['one_site_order_money']; //直连订单佣金总额 // $manage_one_child_num = $manage_info['one_child_num']; //直连会员总数 $manage_two_child_num = $manage_info['two_child_num']; //间联会员人数 $_one_site_order_num = $manage_info['one_site_order_num'] >= $order_total_num;//商家订单交易总数 $_one_site_order_money = $manage_info['one_site_order_money'] >= $order_commission_money;//商家总交易佣金 $_one_site_total_order = $manage_info['one_site_total_order'] >= $order_total_money;//商家总交易额 $_one_child_site_num = $manage_info['one_child_num'] >= $one_child_site_num;//直连商家数量 $_one_child_indirect_site_num = $manage_info['two_child_num'] >= $one_child_indirect_site_num;//间联连商家数量 $_region_site_num = false;//需要在同区域商家 $_weight_level = false;//需要在同区域商家 $is_upgrade = 0; if ($region_child_site_num) {//需要在同区域商家 $condition = [ ['site_id', '=', $manage_info['site_id']], ['district_id', '=', $manage_info['district_id']], ['parent', '=', $manage_id], ]; $region_site_num = model('manage_user')->getCount($condition, 'id'); if ($region_site_num >= $region_child_site_num) { $_region_site_num = 1; } } if ($weight_level) { //权重等级判断 $condition = [ ['site_id', '=', $manage_info['site_id']], ['level_num', '=', substr($weight_level, 1)] ]; $level_id = model('manage_user_level')->getValue($condition, 'level_id'); $_manage = [ ['site_id', '=', $manage_info['site_id']], ['level_id', '=', $level_id], ['parent', '=', $manage_id], ]; $m_direct_site_num = model('manage_user')->getCount($_manage, 'id'); if ($m_direct_site_num >= $direct_site_num && $manage_two_child_num >= $indirect_site_num) { $_weight_level = 1; } } if ($upgrade_type == 1) {//满足一项 if ($_one_site_order_num || $_one_site_order_money || $_one_site_total_order || $_one_child_site_num || $_one_child_indirect_site_num || $_region_site_num || $_weight_level) { $is_upgrade = 1; } } else if ($upgrade_type == 2) {//满足全部 if ($_one_site_order_num && $_one_site_order_money && $_one_site_total_order && $_one_child_site_num && $_one_child_indirect_site_num && $_region_site_num && $_weight_level) { $is_upgrade = 1; } } if ($is_upgrade) { model('manage_user')->update(['level_id' => $last_level['level_id'], 'level_name' => $last_level['level_name']], [['id', '=', $manage_id]]); } } if ($manage_info['parent']) { $this->autoBecomeUpgrade($manage_info['parent']);//验证其他商家是否升级 } } } } public function bindRelation($manage_id) { } /*** * 申请入驻 * @param $data * @param $basics_config * @return array|mixed */ public function applyManage($data, $basics_config) { $member_id = $data['member_id']; $site_id = $data['site_id']; if (!$basics_config['is_member_settled']) return $this->error('', '未开启入驻通道'); $member_info = model('member')->getInfo([['site_id', '=', $data['site_id']], ['member_id', '=', $member_id], ['is_delete', '=', 0]], 'order_num,order_complete_num,order_money,order_complete_money'); if (empty($member_info)) return $this->error('', '未查询到会员信息'); $condition = [ ['site_id', '=', $site_id], ['member_id', '=', $member_id] ]; $manage_info = model('manage_user')->getInfo($condition, 'id,status'); if (!empty($manage_info) && $manage_info['status'] == 1) return $this->error('', '无需重复申请'); try { // 基础设置 switch ($basics_config['settled_condition']) { case 2: // 消费次数 if ($basics_config['consume_condition'] == 1 && $member_info['order_num'] < $basics_config['consume_count']) return $this->error('', '未满足成为申请条件'); if ($basics_config['consume_condition'] == 2 && $member_info['order_complete_num'] < $basics_config['consume_count']) return $this->error('', '未满足成为申请的条件'); break; case 3: // 消费金额 if ($basics_config['consume_condition'] == 1 && bccomp($member_info['order_money'], $basics_config['consume_money'], 2) == -1) return $this->error('', '未满足成为申请的条件'); if ($basics_config['consume_condition'] == 2 && bccomp($member_info['order_complete_money'], $basics_config['consume_money'], 2) == -1) return $this->error('', '未满足成为申请的条件'); break; case 4: // 购买指定商品 $condition = [ ['o.site_id', '=', $site_id], ['o.member_id', '=', $member_id], ['og.goods_id', 'in', $basics_config['goods_ids']], ]; if ($basics_config['consume_condition'] == 1) $condition[] = ['pay_status', '=', 1]; if ($basics_config['consume_condition'] == 2) $condition[] = ['order_status', '=', 10]; $count = model('order_goods')->getCount($condition, 'order_goods_id', 'og', [['order o', 'o.order_id = og.order_id', 'inner']]); if (!$count) return $this->error('', '未满足成为申请的条件'); break; } $levelInfo = model('manage_level')->getInfo([['site_id', '=', $site_id], ['level_num', '=', 1]], 'level_id,level_name,level_num'); $_password = substr($data['mobile'], -6); $Adddata = [ 'site_id' => $site_id, 'member_id' => $member_id, 'level_id' => $levelInfo['level_id'] ?? 0, 'level_name' => $levelInfo['level_name'] ?? '', 'username' => $this->createRandUsername($site_id), 'mobile' => $data['mobile'], 'real_name' => $data['real_name'], 'status' => 1, 'password' => dataMd5($_password), 'parent' => $data['id'] ?? 0, 'grand_parent' => $data['parent'] ?? 0, ]; return $this->addManage($Adddata); } catch (\Exception $e) { return $this->error(); } } /*** * 增加店铺统计数量 * @param $data * @return void * @throws \think\db\exception\DbException */ public function addSiteStatistics($data) { if (isset($data['site_id'])) { $siteInfo = model("site")->getInfo([['site_id', '=', $data['site_id']]]); if ($siteInfo['manage_id']) { $manageInfo = model('manage_user')->getInfo([['id', '=', $siteInfo['manage_id']]], 'parent,grand_parent'); if (!empty($manageInfo['parent'])) { //添加上级经理一级店铺数量 model('manage_user')->setInc([['id', '=', $data['parent']]], 'one_child_site_num'); } if (!empty($manageInfo['grand_parent'])) { //添加上级经理一级下线店铺数量 model('manage_user')->setInc([['id', '=', $data['grand_parent']]], 'two_child_site_num'); } } } } /** * 获取经理分页列表 * @param array $condition * @param number $page * @param string $page_size * @param string $order * @param string $field */ public function getManagePageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = 'f.*,pf.real_name as parent_name') { $condition[] = ['f.is_delete', '=', 0]; $alias = 'f'; $join = [ [ 'manage_user pf', 'pf.id = f.parent', 'left' ] ]; $list = model('manage_user')->pageList($condition, $field, $order, $page, $page_size, $alias, $join); if ($list) { foreach ($list['list'] as &$item) { unset($item['password']); } } return $this->success($list); } public function getManageInfo($condition, $field = 'f.*,m.nickname,m.mobile as member_mobile,m.headimg,pf.real_name as parent_name') { $join = [ [ 'manage_user pf', 'pf.id = f.parent', 'left' ], [ 'member m', 'm.member_id = f.member_id', 'left' ] ]; $list = model('manage_user')->getInfo($condition, $field, 'f', $join); if ($list) { unset($list['password']); } return $this->success($list); } /*** * 获取下一个等级 * @param $ManageInfo * @param $agent_id * @return array */ public function geNextLevel($ManageInfo, $agent_id) { $level_config = model('manage_level')->getColumn([['site_id', '=', $agent_id]], '*', 'level_id'); $current_level = $level_config[$ManageInfo['level_id']]; $level_num = $current_level['level_num'] + 1; $next_level['last_level'] = ''; foreach ($level_config as $key => $value) { if ($value['upgrade_type'] > 0 && $value['level_num'] == $level_num) { $next_level['last_level'] = $value; continue; } else if ($value['level_num'] > $level_num) { $level_num += 1; } } if ($next_level['last_level']) { return $next_level; } else { return []; } } /*** * 获取团队数据 * @param $level * @param $member_id * @param $page * @param $page_size * @param $is_pay * @return array */ public function getManageTeam($level, $member_id, $page, $page_size, $is_pay = 0) { $condition = ''; // 下级分销商id集合 $one_parent = model('manage_user')->getValue([['member_id', '=', $member_id]], 'id'); switch ($level) { // 一级分销 case 1: // 直属会员 + 直属下级分销商 $condition = [ ['ma.parent', '=', $one_parent] ]; break; // 二级分销 case 2: // 直属下级分销商的下级分销商 + 直属下级分销商的会员 $condition = [ ['ma.grand_parent', '=', $one_parent] ]; break; } if (empty($condition)) return $this->success([ 'page_count' => 1, 'count' => 0, 'list' => [] ]); if ($is_pay) $condition [] = ['m.order_num', '>', 0]; $field = 'm.member_id,m.nickname,m.headimg,m.reg_time,m.order_money,m.order_complete_money,m.order_num,m.order_complete_num,ma.id,ma.real_name,ma.level_name ,ma.audit_time ,ma.mobile ,ma.one_site_order_num ,ma.one_site_total_order ,ma.one_site_order_money ,ma.one_child_site_num ,ma.two_child_site_num ,ma.one_child_num'; $alias = 'ma'; $join = [ ['member m', 'm.member_id = ma.member_id', 'left'] ]; $list = model('manage_user')->pageList($condition, $field, 'ma.audit_time desc', $page, $page_size, $alias, $join); return $this->success($list); } /** * 变更上下级关系 * @param $member_id * @param $parent */ public function changeParentManage($_id, $parent) { if ($_id == '' || $_id == 0) { return $this->error('', '参数不能为空'); } if ($parent == '' || $parent == 0) { return $this->error('', '上级不能为空'); } //获取上级id $parent_info = model('manage_user')->getInfo([['id', '=', $parent], ['is_delete', '=', 0]]); if (!$parent_info) return $this->error('', '上级不存在'); model('manage_user')->startTrans(); try { //修改上级分销商 model('manage_user')->update([ 'parent' => $parent, 'grand_parent' => $parent_info['parent'], ], [['id', '=', $_id]]); //修改变更后的上级分销商团队人数 model('manage_user')->update(['one_child_num' => $parent_info['one_child_num'] + 1], [['id', '=', $parent]]); model('manage_user')->commit(); return $this->success(); } catch (\Exception $e) { model('manage_user')->rollback(); return $this->error('', $e->getMessage()); } } /** * 取消上级 * @param $member_id * @param $parent */ public function cancelParentManage($_id) { if ($_id == '' || $_id == 0) { return $this->error('', '参数_id不能为空'); } //用户信息 $_info = model('manage_user')->getInfo([['id', '=', $_id]], 'id,parent'); if (empty($_info)) { return $this->error('', '用户不存在'); } model('manage_user')->startTrans(); try { $parent_info = model('manage_user')->getInfo( [['id', '=', $_info['parent']], ['is_delete', '=', 0]], 'parent' ); //修改原有上级分销商团队人数 if ($parent_info['parent'] > 0) { //获取原有上级分销商信息 model('manage_user')->setDec([['id', '=', $parent_info['parent']]], 'one_child_num'); } //修改上级分销商 model('manage_user')->update(['parent' => 0, 'grand_parent' => 0], [['id', '=', $_id]]); model('manage_user')->commit(); return $this->success(); } catch (\Exception $e) { model('manage_user')->rollback(); return $this->error('', $e->getMessage()); } } public function changePass($id, $pass, $site_id) { if ($id == '' || $pass == '') { return $this->error('', '参数不能为空'); } $condition = [ ['id', '=', $id], ['site_id', '=', $site_id], ]; $info = model('manage_user')->getInfo($condition); if (empty($info)) { return $this->error('', '用户不存在'); } $pass = data_md5($pass); $res = model('manage_user')->update(['password' => $pass], [['id', '=', $id], ['site_id', '=', $site_id]]); return $this->success('成功', $res); } /** * 生成随机用户名 * @param $site_id */ private function createRandUsername($site_id) { $usernamer = 'u_' . random_keys(10); $count = model('manage_user')->getCount([['username', '=', $usernamer], ['site_id', '=', $site_id]]); if ($count) { $usernamer = $this->createRandUsername($site_id); return $usernamer; } else { return $usernamer; } } /** * 变更等级 * @param array $condition * @param string $field * @param string $order * @param string $limit */ public function changeManageLevel($data, $condition) { $result = model('manage_user')->update($data, $condition); return $this->success($result); } }