diff --git a/app/agent/controller/Account.php b/app/agent/controller/Account.php new file mode 100644 index 0000000..2cf2a93 --- /dev/null +++ b/app/agent/controller/Account.php @@ -0,0 +1,80 @@ +userinfo['OperaterID']; + $page = 0; + if (isset($_GET['PageIndex'])) { + $page = ($_GET['PageIndex'] - 1) * 50; + } + $where = []; + $where_str = ''; + $where['agent_id'] = $agent_id; + + //处理筛选 + if($get_data['UserId'] != 0){ + $where['UserId'] = $get_data['UserId']; + } + if(!empty($get_data['ProductIds'])){ + $where['ProductId'] = $get_data['ProductIds']; + } + if(!empty($get_data['PackageNames'])){ + $where['PackageName'] = $get_data['PackageNames']; + } + if(!empty($get_data['accountTypes'])){ + $where['AccountType'] = $get_data['accountTypes']; + } + if (!empty($_GET['Btime'])){ + $date1 = date('Y-m-d', strtotime($_GET['Btime'])); + $date2 = date('Y-m-d', strtotime($_GET['Etime'])); + $where_str .= " EndTime>='" . $date1 . "' and EndTime<='" . $date2 . "' "; + } + if (!empty($_GET['Bktime'])){ + if (mb_strlen($where_str)>0){ + $where_str .= ' AND '; + } + $date1 = date('Y-m-d', strtotime($_GET['Bktime'])); + $date2 = date('Y-m-d', strtotime($_GET['Ektime'])); + $where_str .= " StartTime>='" . $date1 . "' and StartTime<='" . $date2 . "' "; + } + if (!empty($get_data['keyWord'])){ + $where['Account'] = ['like','%'.$get_data['keyWord'].'%']; + } + + + + $account_model = new ProductAccountModel; + $list = $account_model->getAgentListPage($where,$where_str, '*', 'id desc', "$page,50"); + + foreach ($list as &$info){ + $endtime = strtotime($info['EndTime']); + if($endtime <= time()){ + $info['RestTime'] = '已过期'; + } else { + $day = ceil(($endtime - time())/86400); + $info['RestTime'] = $day.'天'; + } + } + + + $data = [ + 'Code' => 10000, + 'Data' => $list, + 'Message' => '', + 'TotalCount' => (int)$account_model->getCount($where)['count'], + ]; + echo json_encode($data); + } + +} \ No newline at end of file diff --git a/app/agent/controller/Agent.php b/app/agent/controller/Agent.php new file mode 100644 index 0000000..5022519 --- /dev/null +++ b/app/agent/controller/Agent.php @@ -0,0 +1,235 @@ +getListPage($where, '*', 'id desc', "$page,50"); + + //获取代理商下的用户数 + $agent_ids = []; + $list = []; + foreach ($user_list as &$info){ + $info['password'] = ''; + $agent_ids[] = $info['id']; + $list[$info['id']] = $info; + } + $agent_user_num = $user_model->getAgentUser(['agent_id'=>['in',$agent_ids]]); + foreach ($agent_user_num as $info){ + $list[$info['agent_id']]['user_num'] = $info['num']; + } + $list = array_merge($list); + + $data = [ + 'Code' => 10000, + 'Data' => $list, + 'Message' => '', + 'TotalCount' => (int)$agent_user_model->getCount($where)['count'], + ]; + echo json_encode($data); + } + + //设置代理商最低价格价格表 + public function price() + { + $id = $_GET['userId']; + $list = []; + $product_model = new PoductModel; + $package_model = new PoductPackageModel; + $price_model = new AgentPriceModel; + $product = $product_model->getList(['OnLine'=>1,'Id'=>['<>',11]], '*', 'Sort asc'); + $package = $package_model->getList([], '*', 'TenantId asc'); + $price = $price_model->getList(['agent_id'=>$id], '*'); + + //按照套餐整理价格 + $price_list = []; + foreach($price as $info){ + $price_list[$info['package_id']] = $info; + } + + + //按照产品整理价格 + $package_list = []; + foreach($package as $info){ + $package_list[$info['ProductId']][] = $info; + } + + //处理数据 + foreach ($product as $p_info){ + $temp = []; + $temp['Product'] = $p_info; + $package_temp = []; + + //套餐分离 + foreach ($package_list[$p_info['Id']] as $pack_info){ + $pack_temp = []; + $pack_temp['Package'] = $pack_info; + //若没有价格 默认价格 + if(empty($price_list[$pack_info['Id']])){ + $price_list[$pack_info['Id']]['refund'] = $p_info['RefundDayPrice']; + $price_list[$pack_info['Id']]['price'] = $pack_info['Price']; + } + $pack_temp['UserPrice'] = $price_list[$pack_info['Id']]; + $package_temp[] = $pack_temp; + } + $temp['PackageUserPrices'] = $package_temp; + + $list[] = $temp; + } + + $data = [ + 'Code' => 10000, + 'Data' => $list, + 'Message' => '', + ]; + echo json_encode($data); + } + + //设置最低价 + public function setPrice() + { + $data = json_decode(file_get_contents("php://input"), true); + $price_model = new AgentPriceModel; + + $update_data = [ + 'product_id' => $data['ProductId'], + 'package_id' => $data['PackageId'], + 'agent_id' => $data['UserId'], + 'price' => $data['UserPrice'], + 'refund' => $data['RefundDayPrice'], + ]; + + $where = [ + 'package_id' => $data['PackageId'], + 'agent_id' => $data['UserId'] + ]; + + $agent_price = $price_model->getOne($where); + + if(empty($agent_price)){ + $price_model->add($update_data); + } else { + $price_model->updateOne($where,$update_data); + } + + $retuen_data = [ + 'Code' => 10000, + 'Message' => '', + ]; + echo json_encode($retuen_data); + } + + //是否启用修改后的价格 + public function setPriceStatus() + { + $data = json_decode(file_get_contents("php://input"), true); + $price_model = new AgentPriceModel; + $id = $data['id']; + $update_data['status'] = $data['status']; + + $where = ['id'=>$id]; + if($price_model->updateOne($where,$update_data)){ + $retuen_data = [ + 'Code' => 10000, + 'Message' => '', + ]; + echo json_encode($retuen_data); + die; + } else { + $retuen_data = [ + 'Code' => -10000, + 'Message' => '操作失败', + ]; + echo json_encode($retuen_data); + die; + } + } + + //添加代理商 + public function addAgent() + { + $data = json_decode(file_get_contents("php://input"), true); + $data['password'] = cToMd5($data['password']); + $agent_user_model = new AgentUser; + + $agent_user_model->add($data); + + $retuen_data = [ + 'Code' => 10000, + 'Message' => '操作成功', + ]; + echo json_encode($retuen_data); + die; + } + + //代理商充值扣款 + public function account() + { + $data = json_decode(file_get_contents("php://input"), true); + + $agent_user_model = new AgentUser; + $score_model = new AgentScoreModel; + + $update_data = []; + $score = []; + $id = $data['id']; + + $agent = $agent_user_model->getOne(['id'=>$id]); + if($data['opAmountType'] == 1){ + $update_data['account'] = $data['rest'] + $data['amount']; + $score['agent_id'] = $id; + $score['order_id'] = 0; + $score['score_type'] = 3; + $score['score_value'] = $data['amount']; + $score['agent_name'] = $agent['username']; + $score['op_user'] = $this->userinfo['LoginName']; + $score['rest_amount1'] = $agent['account']; + $score['rest_amount2'] = $update_data['account']; + $score['remark'] = $data['attchInfo']; + } else { + $update_data['account'] = $data['rest'] - $data['amount']; + $score['agent_id'] = $id; + $score['order_id'] = 0; + $score['score_type'] = 4; + $score['score_value'] = $data['amount']; + $score['agent_name'] = $agent['username']; + $score['op_user'] = $this->userinfo['LoginName']; + $score['rest_amount1'] = $agent['account']; + $score['rest_amount2'] = $update_data['account']; + $score['remark'] = $data['attchInfo']; + } + + + if($agent_user_model->updateOne(['id'=>$id],$update_data)){ + + $score_model->add($score); + + $retuen_data = [ + 'Code' => 10000, + 'Message' => '操作成功', + ]; + echo json_encode($retuen_data); + } + } +} \ No newline at end of file diff --git a/app/agent/controller/Index.php b/app/agent/controller/Index.php index 9577a59..52c8bc2 100644 --- a/app/agent/controller/Index.php +++ b/app/agent/controller/Index.php @@ -24,7 +24,7 @@ class Index 'OperaterID' => $userinfo['id'], 'TenantId' => 1157, 'iat' => time(), - 'exp' => time() + 60 * 60 + 'exp' => time() + 180 * 60 ]; $token = $jwt::getToken($payload); diff --git a/app/agent/controller/Order.php b/app/agent/controller/Order.php new file mode 100644 index 0000000..83f06b2 --- /dev/null +++ b/app/agent/controller/Order.php @@ -0,0 +1,58 @@ +userinfo['OperaterID']; + $page = 0; + if (isset($_GET['PageIndex'])) { + $page = ($_GET['PageIndex'] - 1) * 50; + } + $where = []; + $where_str = ''; + $where['agent_id'] = $agent_id; + + if(!empty($get_data['ProductIds'])){ + $where['ProductId'] = $get_data['ProductIds']; + } + if(!empty($get_data['PackageNames'])){ + $where['PackageName'] = $get_data['PackageNames']; + } + if(!empty($get_data['OrderTypes'])){ + $where['OrderType'] = $get_data['OrderTypes']; + } + if (!empty($_GET['Btime'])){ + $date1 = date('Y-m-d', strtotime($_GET['Btime'])); + $date2 = date('Y-m-d', strtotime($_GET['Etime'])); + $where_str .= " UpdateTime>='" . $date1 . "' and UpdateTime<='" . $date2 . "' "; + } + if (!empty($get_data['keyWord'])){ + $where['UserName'] = ['like','%'.$get_data['keyWord'].'%']; + } + + + + $order_model = new ProductOrderModel; + $list = $order_model->getAgentListPage($where,$where_str, '*', 'id desc', "$page,50"); + + + $data = [ + 'Code' => 10000, + 'Data' => $list, + 'Message' => '', + 'TotalCount' => (int)$order_model->getCount($where)['count'], + ]; + echo json_encode($data); + } + +} \ No newline at end of file diff --git a/app/agent/controller/Score.php b/app/agent/controller/Score.php new file mode 100644 index 0000000..3fe2868 --- /dev/null +++ b/app/agent/controller/Score.php @@ -0,0 +1,77 @@ +userinfo['OperaterID']; + $page = 0; + if (isset($_GET['PageIndex'])) { + $page = ($_GET['PageIndex'] - 1) * 50; + } + $where = []; + $where_str = ''; + $where['agent_id'] = $agent_id; + + if (!empty($_GET['Btime'])){ + $date1 = date('Y-m-d', strtotime($_GET['Btime'])); + $date2 = date('Y-m-d', strtotime($_GET['Etime'])); + $where_str .= " UpdateTime>='" . $date1 . "' and UpdateTime<='" . $date2 . "' "; + } + + + + $score_model = new AgentScoreModel; + $list = $score_model->getAgentListPage($where,$where_str, '*', 'id desc', "$page,50"); + + + $data = [ + 'Code' => 10000, + 'Data' => $list, + 'Message' => '', + 'TotalCount' => (int)$score_model->getCount($where)['count'], + ]; + echo json_encode($data); + } + + //账号列表 + public function getScoreList () + { + $page = 0; + if (isset($_GET['PageIndex'])) { + $page = ($_GET['PageIndex'] - 1) * 50; + } + $where = []; + $where_str = ''; + + if (!empty($_GET['Btime'])){ + $date1 = date('Y-m-d', strtotime($_GET['Btime'])); + $date2 = date('Y-m-d', strtotime($_GET['Etime'])); + $where_str .= " UpdateTime>='" . $date1 . "' and UpdateTime<='" . $date2 . "' "; + } + + + + $score_model = new AgentScoreModel; + $list = $score_model->getAgentListPage($where,$where_str, '*', 'id desc', "$page,50"); + + + $data = [ + 'Code' => 10000, + 'Data' => $list, + 'Message' => '', + 'TotalCount' => (int)$score_model->getCount($where)['count'], + ]; + echo json_encode($data); + } + +} \ No newline at end of file diff --git a/app/agent/controller/Userinfo.php b/app/agent/controller/Userinfo.php index 43123ab..d75c004 100644 --- a/app/agent/controller/Userinfo.php +++ b/app/agent/controller/Userinfo.php @@ -4,6 +4,8 @@ namespace app\agent\controller; use fastphp\base\Controller; use app\agent\model\AgentUser; +use app\agent\model\ProductUserPrice; +use app\agent\model\AgentPrice as AgentPriceModel; use app\agent\model\User as UserModel; class Userinfo extends Controller @@ -23,6 +25,57 @@ class Userinfo extends Controller echo json_encode($info); } + //代理商修改密码 + public function updatePass() + { + $data = json_decode(file_get_contents("php://input"), true); + $agent_user_model = new AgentUser; + $userinfo = $agent_user_model->getOne(['id'=>$this->userinfo['OperaterID']]); + if($userinfo['password'] != cToMd5($data['old_pass'])){ + $info = [ + 'Code' => -10000, + 'Message' => '旧密码错误', + ]; + echo json_encode($info); + die; + } + $update = [ + 'password' => cToMd5($data['new_pass']) + ]; + if($agent_user_model->updateOne(['id'=>$this->userinfo['OperaterID']],$update)){ + $info = [ + 'Code' => 10000, + 'Message' => '更新成功', + ]; + echo json_encode($info); + die; + } else { + $info = [ + 'Code' => -10000, + 'Message' => '更新失败', + ]; + echo json_encode($info); + } + } + + //验证是否是该代理的用户 + public function verify() + { + $data = json_decode(file_get_contents("php://input"), true); + $user_id = $data['user_id']; + $agent_id = $this->userinfo['OperaterID']; + $user_model = new UserModel; + $userinfo = $user_model->getOne(['Id'=>$user_id]); + if($userinfo['agent_id'] != $agent_id){ + die; + } + $info = [ + 'Code' => 20000, + 'Message' => '请正确操作', + ]; + echo json_encode($info); + } + //代理商下的用户 public function getList () { @@ -56,4 +109,85 @@ class Userinfo extends Controller ]; echo json_encode($data); } + + //获取代理最低价 + public function getAgentPrice() + { + + $data = json_decode(file_get_contents("php://input"), true); + + $agent_price_model = new AgentPriceModel; + + $agent_id = $this->userinfo['OperaterID']; + + $where = [ + 'agent_id' => $agent_id, + 'package_id' => $data['Id'] + ]; + + $price = $agent_price_model->getOne($where); + + $retuen_data = [ + 'Code' => 30000, + 'Data' => $price, + 'Message' => '', + ]; + echo json_encode($retuen_data); + } + + //设置价格 + public function setPrice() + { + $data = json_decode(file_get_contents("php://input"), true); + $price_model = new ProductUserPrice; + $agent_price_model = new AgentPriceModel; + + $agent_id = $this->userinfo['OperaterID']; + + $where = [ + 'agent_id' => $agent_id, + 'package_id' => $data['PackageId'] + ]; + + $agent_price = $agent_price_model->getOne($where); + + if($data['UserPrice']<$agent_price['price'] || $data['RefundDayPrice']<$agent_price['refund']){ + $retuen_data = [ + 'Code' => -10000, + 'Message' => '低于最低价格', + ]; + echo json_encode($retuen_data); + die; + } + + $update_data = [ + 'TenantId' => 0, + 'ProductId' => $data['ProductId'], + 'PackageId' => $data['PackageId'], + 'UserId' => $data['UserId'], + 'UserPrice' => $data['UserPrice'], + 'RefundDayPrice' => $data['RefundDayPrice'], + 'Status' => 1, + 'DeleteTag' => 0 + ]; + + $where = [ + 'PackageId' => $data['PackageId'], + 'UserId' => $data['UserId'] + ]; + + $user_price = $price_model->getOne($where); + + if(empty($user_price)){ + $price_model->add($update_data); + } else { + $price_model->updateOne($where,$update_data); + } + + $retuen_data = [ + 'Code' => 10000, + 'Message' => '', + ]; + echo json_encode($retuen_data); + } } \ No newline at end of file diff --git a/app/agent/model/AgentPrice.php b/app/agent/model/AgentPrice.php new file mode 100644 index 0000000..a787ecb --- /dev/null +++ b/app/agent/model/AgentPrice.php @@ -0,0 +1,10 @@ +field($fields)->where($where)->where($where_str)->order($order)->limit($limit)->fetchAll(); + } +} \ No newline at end of file diff --git a/app/agent/model/Product.php b/app/agent/model/Product.php new file mode 100644 index 0000000..ad65de3 --- /dev/null +++ b/app/agent/model/Product.php @@ -0,0 +1,19 @@ +field($fields)->where($where)->where($where_str)->order($order)->limit($limit)->fetchAll(); + } +} \ No newline at end of file diff --git a/app/agent/model/ProductOrder.php b/app/agent/model/ProductOrder.php new file mode 100644 index 0000000..89dbb7e --- /dev/null +++ b/app/agent/model/ProductOrder.php @@ -0,0 +1,31 @@ +field($fields)->where($where)->where($where_str)->order($order)->limit($limit)->fetchAll(); + } +} \ No newline at end of file diff --git a/app/agent/model/ProductPackage.php b/app/agent/model/ProductPackage.php new file mode 100644 index 0000000..a72a67d --- /dev/null +++ b/app/agent/model/ProductPackage.php @@ -0,0 +1,19 @@ +field($fields)->where($where)->fetch(); } + + //获取代理商的用户数量 + public function getAgentUser($where = []){ + return $this->field('agent_id,count(1) as num')->where($where)->group(['agent_id'])->fetchAll(); + } } \ No newline at end of file