📖 File Reader
<?php
namespace app\admin\controller;
use adminCreate\form\Form;
use app\admin\common\Common_config;
use app\api\common\Common_user;
use think\facade\Db;
use think\facade\View;
class User extends Base
{
/**
* 会员列表
*/
public function user_list()
{
$rank_list = db::name("user_rank")->order("rank_id asc")->select();
view::assign([
'rank_list'=>$rank_list,
]);
return View::fetch();
}
public function user_list_ajax()
{
$name = input("param.name");
$motorcycle_type = input("param.motorcycle_type");
$user_rank = input("param.user_rank");
$where = 1;
if (!empty($name)){
$where .= " and (a.user_name like '%".$name."%' or a.nickname like '%".$name."%' or a.mobile like '%".$name."%' or a.name like '%".$name."%')";
}
if (!empty($motorcycle_type)){
$where .= " and c.motorcycle_type = $motorcycle_type";
}
if (!empty($user_rank)){
$where .= " and a.rank_id = $user_rank";
}
$list = db::name("user")->alias("a")
->join("user b","a.superior_id = b.user_id","LEFT")
->join("user_detail c","a.user_id = c.user_id","LEFT")
->join("user_rank d","a.rank_id = d.rank_id","LEFT")
->field("a.*,b.mobile as superior_name,d.name as rank_name")
->where($where)
->order("a.user_id desc")
->page($this->page,$this->limit)
->select()
->toArray();
/*序号排序*/
$number_zong = 1;
if (!empty($list)){
$user_id_zhuihou = $list[0]["user_id"];
$number_zong = db::name("user")->alias("a")
->join("user b","a.superior_id = b.user_id","LEFT")
->join("user_detail c","a.user_id = c.user_id","LEFT")
->join("user_rank d","a.rank_id = d.rank_id","LEFT")
->field("a.*,b.mobile as superior_name,d.name as rank_name")
->where("a.user_id <= $user_id_zhuihou and $where")
->count();
}
foreach ($list as $k => $v){
$list[$k]["number_xuhao"] = $number_zong - $k;
$list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
$list[$k]["money"] = sprintf("%.2f",$v["money"] - $v["freeze_money"]);
}
//获取分页数量
$count = db::name("user")->alias("a")
->join("user b","a.superior_id = b.user_id","LEFT")
->join("user_detail c","a.user_id = c.user_id","LEFT")
->join("user_rank d","a.rank_id = d.rank_id","LEFT")
->where($where)
->count();
return $this->layui_json($count,$list);
}
/*会员信息提交*/
public function user_upload()
{
$user_id = input("param.user_id")!=''?input("param.user_id"):0;
if(input("post.")){
$password = input("param.password");
$password2 = input("param.password2");
if (!empty($password)){
if ($password != $password2){
return $this->error_json("密码不一致");
}
}
$mobile = input("param.mobile");
if (!empty($mobile)){
$user_info = db::name("user")->where("mobile = '$mobile' and user_id != $user_id")->find();
if (!empty($user_info)){
return $this->error_json("手机号已存在");
}
}
$superior_mobile = input("param.superior_mobile");
$superior_id = 0;
if (!empty($superior_mobile)){
$superior_id = db::name("user")->where("mobile = '$superior_mobile'")->value("user_id");
if (empty($superior_id)){
return $this->error_json("推荐人手机号不存在");
}else{
if ($superior_id == $user_id){
return $this->error_json("推荐人手机号不可添加本人手机号");
}
}
}
$info = [
'superior_id'=>$superior_id,
'nickname'=>input("param.nickname"),
'head'=>input("param.head") != ''?implode(",",input("param.head")):'',
'rank_id'=>input("param.rank_id"),
'priority_rank_id_time'=>strtotime(input("param.priority_rank_id_time")),
'name'=>input("param.name"),
'identity'=>input("param.identity"),
'mobile'=>input("param.mobile"),
'label'=>input("param.label"),
//'is_deliver'=>input("param.is_deliver"),
];
if (!empty($info["head"])){
$preg = "/^http(s)?:\\/\\/.+/";
if(!preg_match($preg,$info["head"])) {
$config = Common_config::config("'url'");
$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
$url = $config["url"] != ''?$config["url"]:$http_type . $_SERVER['HTTP_HOST'];
$info["head"] = $url.$info["head"];
}
}
if (!empty($password2)){
$info["password"] = md5($password2);
}
if (empty($user_id)){
$info["user_miyao"] = Common_user::user_miyao_add("30");
$info["invitation_code"] = Common_user::user_invitation_code_add("7");
$info["add_time"] = time();
db::name("user")->insertGetId($info);
}else{
db::name("user")->where("user_id = $user_id")->data($info)->update();
}
return $this->succeed_json("操作成功");
}else{
$info = ['head'=>[],'nickname'=>'','name'=>'','identity'=>'','mobile'=>'','password'=>0,'password2'=>'','rank_id'=>0,'label'=>''];
if (!empty($user_id)){
$info = db::name("user")->alias("a")
->join("user b","a.superior_id = b.user_id","left")
->field("a.*,b.mobile as superior_mobile")
->where("a.user_id = $user_id")
->find();
}
$form = new Form();
$form->tabs('tabs1', '基本信息');
$form->input('nickname', '会员昵称',$info["nickname"])->tabs('tabs1');
$form->upload('head', '头像', '/admin/ad/uploads', [$info['head']])->nultiple(false)->required('',"array")->tabs('tabs1');
//$form->input('identity', '身份证号',$info["identity"])->tabs('tabs1');
$form->input('name', '姓名',$info["name"])->col(7)->tabs('tabs1');
$form->input('mobile', '手机号',$info["mobile"])->col(7)->tabs('tabs1')->required();
//$form->input('superior_mobile', '推荐人手机号',$info["superior_mobile"])->col(7)->tabs('tabs1');
if (!empty($user_id)){
$form->input('password', '新密码','')->type('password')->col(7)->tabs('tabs1');
$form->input('password2', '确认密码','')->type('password')->col(7)->tabs('tabs1');
}else{
$form->input('password', '新密码','')->type('password')->col(7)->tabs('tabs1')->required();
$form->input('password2', '确认密码','')->type('password')->col(7)->tabs('tabs1')->required();
}
$rank_id = $info['rank_id'];
// $form->selectOne('rank_id', '会员级别',$rank_id)->setOptions(function(){
// $list = db::name("user_rank")->order("rank_id asc")->select()->toArray();
// $menus = [];
// foreach ($list as $k => $v){
// $menus[] = ['label'=>$v["name"],'value'=>$v["rank_id"]];
// }
// return $menus;
// })->multiple(false)->filterable(false)->tabs('tabs1');
$form->input('label', '会员标签',$info["label"])->type('textarea')->tabs('tabs1');
$form->hidden('user_id',$user_id);
$form->button('/admin/User/user_upload');
return $form;
}
}
/*会员资金变动处理*/
public function record_update()
{
$user_id = input("param.user_id");
if (input("post.")){
$describe = input("param.describe");
if (!empty(input("param.money"))){
if (empty(input("param.moneytype"))){
return $this->error_json("请选择增加或减少!");
}
if (input("param.moneytype") == '+'){
$this->record_log($describe.'「平台操作」',1,$user_id,input("param.money"),0);
}else{
$this->record_log($describe.'「平台操作」',1,$user_id,'-'.input("param.money"),0);
}
}
if (!empty(input("param.freeze_money"))){
if (empty(input("param.freeze_moneytype"))){
return $this->error_json("请选择增加或减少!");
}
if (input("param.freeze_moneytype") == '+'){
$this->record_log($describe.'「平台操作」',3,$user_id,0,0,input("param.freeze_money"));
}else{
$this->record_log($describe.'「平台操作」',3,$user_id,0,0,'-'.input("param.freeze_money"));
}
}
if (!empty(input("param.integral"))){
if (empty(input("param.integraltype"))){
return $this->error_json("请选择增加或减少!");
}
if (input("param.integraltype") == '+'){
$this->record_log($describe.'「平台操作」',2,$user_id,0,input("param.integral"));
}else{
$this->record_log($describe.'「平台操作」',2,$user_id,0,'-'.input("param.integral"));
}
}
return $this->succeed_json("操作成功");
}else{
$info = db::name("user")->where("user_id = $user_id")->find();
$form = new Form();
$form->tabs('tabs1', '基本信息');
$form->input('describe', '变动描述','')->type('textarea')->required()->tabs('tabs1');
$form->select_number('money', '会员余额',0)->select_value('+')->color('red')->tips("可用余额:".$info["money"]."元")->tabs('tabs1');
$form->select_number('freeze_money', '冻结余额',0)->select_value('+')->tips("冻结余额:".$info["freeze_money"]."元")->color('red')->tabs('tabs1');
$form->select_number('integral', '会员积分',0)->select_value('+')->tips("会员积分:".$info["integral"])->color('red')->tabs('tabs1');
$form->hidden('user_id',$user_id);
$form->button('/admin/User/record_update');
return $form;
}
}
/*会员其它信息处理*/
public function user_detail_update()
{
$user_id = input("param.user_id");
if (input("post.")){
$user_detail = db::name("user_detail")->where("user_id = $user_id")->find();
$info = [
'motorcycle_type'=>input("param.motorcycle_type"),
'plate_number'=>input("param.plate_number"),
'motorcycle_expire_time'=>strtotime(input("param.motorcycle_expire_time")),
];
if (empty($user_detail)){
$info["user_id"] = $user_id;
db::name("user_detail")->insertGetId($info);
}else{
db::name("user_detail")->where("user_id = $user_id")->data($info)->update();
}
return $this->succeed_json("操作成功");
}else{
$user_detail = db::name("user_detail")->where("user_id = $user_id")->find();
if (!empty($user_detail)){
$user_detail["motorcycle_expire_time"] = $user_detail["motorcycle_expire_time"] != 0?date("Y-m-d H:i",$user_detail["motorcycle_expire_time"]):'';
}
$upload_url = url('upload/image')->build();
$form = new Form();
$form->selectOne('motorcycle_type', '车辆品牌',$user_detail["motorcycle_type"])->setOptions(function(){
$list = db::name("other_act")->where("type = 1")->order("id desc")->select();
foreach ($list as $v){
$menus[] = ['label'=>$v["name"],'value'=>$v["id"]];
}
return $menus;
});
$form->input('plate_number', '车牌号',$user_detail["plate_number"]);
$form->datetime('motorcycle_expire_time', '车险到期日期',$user_detail["motorcycle_expire_time"]);
$form->hidden('user_id',$user_id);
$form->button();
return $form;
}
}
/*会员明细*/
public function user_record_log()
{
$user_id = input("param.user_id");
View::assign([
'user_id'=>$user_id,
]);
return View::fetch();
}
/*会员明细记录*/
public function user_record_log_ajax()
{
$user_id = input("param.user_id");
$keyword = input("param.keyword");
$time_ks = input("param.time_ks");
$time_js = input("param.time_js");
$where = 1;
if (!empty($user_id)){
$where .= " and a.user_id = $user_id";
}
if (!empty($keyword)){
$where .= " and (a.describe like '%".$keyword."%' or b.nickname like '%".$keyword."%' or b.mobile like '%".$keyword."%')";
}
if (!empty($time_ks)){
$time_ks2 = strtotime($time_ks);
$where .= " and a.add_time >= $time_ks2";
}
if (!empty($time_js)){
$time_js2 = strtotime($time_js);
$where .= " and a.add_time < $time_js2";
}
$list = db::name("record_log")->alias("a")
->join("user b","a.user_id = b.user_id","left")
->field("a.*,b.nickname,b.mobile")
->where($where)
->order("a.id desc")
->page($this->page,$this->limit)
->select()
->toArray();
foreach ($list as $k => $v){
$list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
}
$count = db::name("record_log")->alias("a")
->join("user b","a.user_id = b.user_id","left")
->where($where)
->count();
return $this->layui_json($count,$list);
}
/*会员删除*/
public function user_del()
{
$user_id = input("user_id");
db::name("user")->where("user_id = $user_id")->delete();
return $this->succeed_json("删除成功");
}
/*会员优惠卷*/
public function user_activity_preferential_card()
{
$user_id = input("param.user_id");
$nickname = db::name("user")->where("user_id = $user_id")->value("nickname");
View::assign([
'nickname'=>$nickname,
'user_id'=>$user_id,
]);
return View::fetch();
}
/*会员优惠卷数据*/
public function user_activity_preferential_card_ajax()
{
$user_id = input("param.user_id");
$list = db::name("user_activity_preferential_card")->where("user_id = $user_id")->order("id desc")->page($this->page,$this->limit)->select()->toArray();
foreach ($list as $k => $v){
$list[$k]["time_add"] = date("Y-m-d H:i",$v["time_add"]);
$list[$k]["time_past_due"] = date("Y-m-d H:i",$v["time_past_due"]);
}
$count = db::name("user_activity_preferential_card")->where("user_id = $user_id")->count();
return $this->layui_json($count,$list);
}
/*会员优惠卷修改*/
public function user_activity_preferential_card_update()
{
$id = input("param.id");
if (input("post.")){
$info["is_employ"] = input("param.is_employ");
if ($info["is_employ"] == 1){
$info["time_employ"] = time();
}else{
$info["time_employ"] = 0;
}
db::name("user_activity_preferential_card")->where("id = $id")->data($info)->update();
return $this->succeed_json("操作成功");
}else{
$card_info = db::name("user_activity_preferential_card")->where("id = $id")->find();
$upload_url = url('upload/image')->build();
$form = new Form();
$form->input('card_name', '卷名称',$card_info["card_name"])->disabled(true);
$form->input('price_yh', '优惠额度',$card_info["price_yh"])->disabled(true);
$form->input('price_satisfy', '满足?元可用',$card_info["price_satisfy"])->disabled(true);
$form->input('is_employ','已使用',$card_info["is_employ"])->type('switch');
$form->hidden('id',$id);
$form->button();
return $form;
}
}
/*会员地址*/
public function user_address()
{
View::assign([
'user_id'=>input("param.user_id"),
]);
return View::fetch();
}
/*会员地址查询*/
public function user_address_ajax()
{
$user_id = input("param.user_id");
$list = db::name("user_address")->alias("a")
->join("region b","a.province = b.id","LEFT")
->join("region c","a.city = c.id","LEFT")
->join("region d","a.district = d.id","LEFT")
->field("a.*,b.name as province_name,c.name as city_name,d.name as district_name")
->where("a.user_id = $user_id")
->order("a.address_id desc")
->page($this->page,$this->limit)
->select();
$list = json_decode($list,true);
foreach ($list as $k => $v){
$list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
}
//分页总数
$count = db::name("user_address")->where("user_id = $user_id")->count();
$pages = $this->vue_pages($count,$this->limit);
$data = [
'list'=>$list,
'pages'=>$pages,
];
return $this->succeed_json("ok",$data);
}
/*会员地址删除*/
public function user_address_del()
{
$id = input("param.id");
db::name("user_address")->where("address_id = $id")->delete();
return $this->succeed_json("删除成功");
}
/*会员拓扑图*/
public function user_topology()
{
return View::fetch();
}
/*会员拓扑图数据*/
public function user_topology_ajax()
{
$type_yibu = input("param.type_yibu");
$user_id = input("param.user_id");
$keyword = input("param.keyword");
$where = 1;
if (!empty($keyword)){
$where .= " and (a.name like '%".$keyword."%' or a.nickname like '%".$keyword."%' or a.mobile like '%".$keyword."%' )";
}else{
if (!empty($user_id)){
$where .= " and a.superior_id = $user_id";
}else{
/*筛序出所有顶级账号*/
$user_list = db::name("user")->order("user_id asc")->field("user_id as value,superior_id as pid,name")->select()->toArray();
$array_reinstallation = Common_config::array_reinstallation($user_list);
$user_id_top = [];//所有顶级会员id
foreach ($array_reinstallation as $v){
$user_id_top[] = $v["value"];
}
if (!empty($user_id_top)) {
$user_id_top_str = implode(",", $user_id_top);
$where .= " and a.user_id in ($user_id_top_str)";
}else{
$where .= " and a.user_id in (0)";
}
}
}
if ($type_yibu == 1) {
$list = db::name("user")->alias("a")
->join("user_rank b","a.rank_id = b.rank_id","left")
->field("a.*,b.name as rank_name")
->where($where)
->order("a.user_id desc")
->select()
->toArray();
}else{
$list = db::name("user")->alias("a")
->join("user_rank b","a.rank_id = b.rank_id","left")
->field("a.*,b.name as rank_name")
->where($where)
->page($this->page,$this->limit)
->order("a.user_id desc")
->select()
->toArray();
}
foreach ($list as $k => $v){
$list[$k]["add_time"] = date("Y-m-d H:i",$v["add_time"]);
//二级分类
$list2 = db::name("user")->alias("a")
->join("user_rank b","a.rank_id = b.rank_id","left")
->field("a.*,b.name as rank_name")
->where("a.superior_id = $v[user_id]")
->order("a.user_id desc")
->select()
->toArray();
foreach ($list2 as $k2 => $v2){
$list2[$k2]["add_time"] = date("Y-m-d H:i",$v2["add_time"]);
}
$list[$k]["children"] = $list2;
}
$count = db::name("user")->alias("a")
->join("user_rank b","a.rank_id = b.rank_id","left")
->where($where)
->count();
return $this->layui_json($count,$list);
}
/*会员级别*/
public function user_rank()
{
return View::fetch();
}
/*会员级别查询*/
public function user_rank_ajax()
{
$list = db::name("user_rank")->order("rank_id asc")->page($this->page,$this->limit)->select()->toArray();
$count = db::name("user_rank")->count();
return $this->layui_json($count,$list);
}
/*会员级别更新*/
public function user_rank_update()
{
$id = input("param.id");
if (input("post.")){
$info = [
'bili_discount'=>input("param.bili_discount"),
'pay_price'=>input("param.pay_price"),
];
db::name("user_rank")->where("rank_id = $id")->data($info)->update();
return $this->succeed_json("操作成功");
}else{
$info = db::name("user_rank")->where("rank_id = $id")->find();
$form = new Form();
$form->input('name', '级别名称',$info["name"])->disabled(true);
$form->input('bili_discount', '折扣比例',$info["bili_discount"])->tips('提示:1为100%')->required();
$form->input('pay_price', '办理金额',$info["pay_price"])->required();
$form->hidden('id',$id);
$form->button('/admin/User/user_rank_update');
return $form;
}
}
}