From a4b3ee325c7354579d495bc74a777e494e5ec38c Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Fri, 06 Feb 2026 18:18:44 +0800
Subject: [PATCH] 商品可以价格面议 选择走访时显示输入走访企业名 分会添加活动时要总会审核 分类添加人数限制,添加活动选择了填写人数限制的分类时活动名额下显示该分类人数限制为15 同一个企业30天内只能走访一次,在30天内走访同一个企业时提示该企业已被走访xx天后才可以从新走访

---
 admin/app/shop/model/plus/region/User.php |  477 ++++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 341 insertions(+), 136 deletions(-)

diff --git a/admin/app/shop/model/plus/region/User.php b/admin/app/shop/model/plus/region/User.php
index a863d75..25dd034 100644
--- a/admin/app/shop/model/plus/region/User.php
+++ b/admin/app/shop/model/plus/region/User.php
@@ -1,136 +1,341 @@
-<?php

-

-namespace app\shop\model\plus\region;

-

-use app\shop\model\plus\region\Referee as RefereeModel;

-use app\common\model\plus\region\User as UserModel;

-use app\common\enum\plus\region\RegionLevelEnum;

-

-/**

- * 股东用户模型

- * Class User

- * @package app\shop\model\plus\region

- */

-class User extends UserModel

-{

-    /**

-     * 获取股东用户列表

-     */

-    public function getList($search, $limit = 15)

-    {

-        // 构建查询规则

-        $model = $this->alias('region')

-            ->field('region.*, user.nickName, user.avatarUrl')

-            ->with(['grade'])

-            ->join('user', 'user.user_id = region.user_id')

-            ->where('region.is_delete', '=', 0)

-            ->order(['region.create_time' => 'desc']);

-        // 查询条件

-        if (!empty($search)) {

-            $model = $model->where('user.nickName|region.real_name|region.mobile', 'like', '%' . $search . '%');

-        }

-        // 获取列表数据

-        $list = $model->paginate($limit);

-        foreach ($list as $user){

-            $user['total_money'] = sprintf('%.2f', $user['money'] + $user['freeze_money'] + $user['total_money']);

-        }

-        return $list;

-    }

-

-    public static function getListAll($grade_id = 0)

-    {

-        $model = new static;

-        if($grade_id > 0) {

-            $model->where('grade_id', '=', $grade_id);

-        }

-        return $model->where('is_delete', '=', 0)->with(['grade'])->select();

-    }

-

-    /**

-     * 编辑股东用户

-     * @param $region_id

-     * @param $region_level

-     */

-    public static function getUser($region_id, $region_level = RegionLevelEnum::PROVINCE)

-    {

-        $model = new static;

-        $model = $model->where('region_level', '=', $region_level);

-        // 省代理

-        if($region_level == RegionLevelEnum::PROVINCE) {

-            $model = $model->where('province_id', '=', $region_id);

-        }

-        if($region_level == RegionLevelEnum::CITY) {

-            $model = $model->where('city_id', '=', $region_id);

-        }

-        if($region_level == RegionLevelEnum::AREA) {

-            $model = $model->where('area_id', '=', $region_id);

-        }

-        return $model->where('is_delete', '=', 0)->select();

-    }

-

-    /**

-     * 编辑股东用户

-     * @param $data

-     * @return bool

-     */

-    public function edit($data)

-    {

-        return $this->save($data) !== false;

-    }

-

-    /**

-     * 删除股东用户

-     * @return mixed

-     */

-    public function setDelete()

-    {

-        return $this->transaction(function () {

-            // 标记当前股东记录为已删除

-            return $this->save([

-                'is_delete' => 1

-            ]);

-        });

-    }

-    

-    /**

-     * 提现打款成功:累积提现佣金

-     */

-    public static function totalMoney($user_id, $money)

-    {

-        $model = self::detail($user_id);

-        return $model->save([

-            'freeze_money' => $model['freeze_money'] - $money,

-            'total_money' => $model['total_money'] + $money,

-        ]);

-    }

-

-    /**

-     * 提现驳回:解冻股东资金

-     */

-    public static function backFreezeMoney($user_id, $money)

-    {

-        $model = self::detail($user_id);

-        return $model->save([

-            'money' => $model['money'] + $money,

-            'freeze_money' => $model['freeze_money'] - $money,

-        ]);

-    }

-

-    /**

-     * 获取平台的总销售额

-     */

-    public function getTotalMoney($type = 'all_money')

-    {

-        $model = $this;

-        if($type == 'money'){

-            return $model->sum('money');

-        } else if($type == 'freeze_money'){

-            return $model->sum('freeze_money');

-        } else if($type == 'total_money'){

-            return $model->sum('total_money');

-        } else if($type == 'all_money'){

-            return $model->sum('total_money') + $model->sum('freeze_money') + $model->sum('money');

-        }

-        return 0;

-    }

-}
\ No newline at end of file
+<?php
+
+namespace app\shop\model\plus\region;
+
+use app\common\enum\plus\region\RegionLevelEnum;
+use app\common\model\plus\region\User as UserModel;
+use app\shop\model\plus\operations\Role as RoleModel;
+use app\shop\model\plus\operations\User as UserLoginModel;
+
+/**
+ * 股东用户模型
+ * Class User
+ * @package app\shop\model\plus\region
+ */
+class User extends UserModel
+{
+    /**
+     * 获取股东用户列表
+     */
+    public function getList($search, $limit = 15)
+    {
+        // 构建查询规则
+        $model = $this->alias('region')
+            ->field('region.*, user.nickName, user.avatarUrl')
+            ->with(['grade'])
+            ->join('user', 'user.user_id = region.user_id')
+            ->where('region.is_delete', '=', 0)
+            ->order(['region.create_time' => 'desc']);
+        // 查询条件
+        if (!empty($search)) {
+            $model = $model->where('user.nickName|region.real_name|region.mobile', 'like', '%' . $search . '%');
+        }
+        // 获取列表数据
+        $list = $model->paginate($limit);
+        foreach ($list as $user){
+            $user['total_money'] = sprintf('%.2f', $user['money'] + $user['freeze_money'] + $user['total_money']);
+        }
+        return $list;
+    }
+
+    public static function getListAll($grade_id = 0)
+    {
+        $model = new static;
+        if($grade_id > 0) {
+            $model->where('grade_id', '=', $grade_id);
+        }
+        return $model->where('is_delete', '=', 0)->with(['grade'])->select();
+    }
+
+    /**
+     * 编辑股东用户
+     * @param $region_id
+     * @param $region_level
+     */
+    public static function getUser($region_id, $region_level = RegionLevelEnum::PROVINCE)
+    {
+        $model = new static;
+        $model = $model->where('region_level', '=', $region_level);
+        // 省代理
+        if($region_level == RegionLevelEnum::PROVINCE) {
+            $model = $model->where('province_id', '=', $region_id);
+        }
+        if($region_level == RegionLevelEnum::CITY) {
+            $model = $model->where('city_id', '=', $region_id);
+        }
+        if($region_level == RegionLevelEnum::AREA) {
+            $model = $model->where('area_id', '=', $region_id);
+        }
+        return $model->where('is_delete', '=', 0)->select();
+    }
+
+    /**
+     * 编辑股东用户
+     * @param $data
+     * @return bool
+     */
+    public function edit($data)
+    {
+        $this->startTrans();
+        try {
+            // 检查区域是否已被占用
+            $model = $this->where('user_id', $data['user_id'])->find();
+            $checkData = [
+                'region_level' => $model['region_level']['value'],
+                'is_delete' => 0
+            ];
+            if ($checkData['region_level'] == 1) {
+                $checkData['province_id'] = $model['province_id'];
+            } elseif ($checkData['region_level'] == 2) {
+                $checkData['province_id'] = $model['province_id'];
+                $checkData['city_id'] = $model['city_id'];
+            } elseif ($checkData['region_level'] == 3) {
+                $checkData['province_id'] = $model['province_id'];
+                $checkData['city_id'] = $model['city_id'];
+                $checkData['area_id'] = $model['area_id'];
+            }
+
+            $conflict = $this->where($checkData)->where('user_id', '<>', $data['user_id'])->find();
+            if ($conflict) {
+                $this->error = '该区域已有代理,请先删除原有代理';
+                return false;
+            }
+
+            // 更新区域代理基本信息
+            $saveData = [
+                'real_name' => $data['real_name'],
+                'mobile' => $data['mobile'],
+                'update_time' => time()
+            ];
+            
+            if (!$this->save($saveData)) {
+                throw new \Exception('更新失败');
+            }
+
+            // 处理管理员账号
+            $userLoginModel = new UserLoginModel();
+            $admin = $userLoginModel->where('user_id', '=', $data['user_id'])->where('is_super', '=', 1)->find();
+            if ($userLoginModel->detail(['real_name'=>$data['real_name'],'user_id'=>['neq'=>$data['user_id']]])){
+                throw new \Exception('该账号已存在');
+            }
+            // 如果传入了用户名,则更新或创建管理员账号
+            if (isset($data['user_name']) && !empty($data['user_name'])) {
+                $loginData = [
+                    'user_id' => $data['user_id'],
+                    'user_name' => $data['user_name'],
+                    'real_name' => $data['real_name'],
+                    'mobile' => $data['mobile'],
+                    'is_delete' => 0,
+                    'app_id' => self::$app_id,
+                    'update_time' => time()
+                ];
+                
+                if (!empty($data['password'])) {
+                    $loginData['user_name'] = salt_hash($data['user_name']);
+                    $loginData['password'] = salt_hash($data['password']);
+                }
+                
+                if ($admin) {
+                    // 更新现有管理员账号
+                    if (!$userLoginModel->where('shop_user_id', '=', $admin['shop_user_id'])->update($loginData)) {
+                        throw new \Exception('管理员账号更新失败');
+                    }
+                } else {
+                    // 创建新的管理员账号
+                    $loginData['create_time'] = time();
+                    $loginData['is_super'] = 1;
+                    $role_id = RoleModel::where('region_level','=',$checkData['region_level'])->value('role_id');
+                    $loginData['role_id'] = $role_id;
+                    
+                    if (!$userLoginModel->save($loginData)) {
+                        throw new \Exception('管理员账号创建失败');
+                    }
+
+                    // 为新管理员分配默认角色(如果有)
+                    $add_arr = [];
+                    $model = new UserRole();
+                    $add_arr[] = [
+                        'region_user_id' => $userLoginModel['region_user_id'],
+                        'role_id' => $role_id,
+                        'app_id' => self::$app_id,
+                    ];
+                    $model->saveAll($add_arr);
+                }
+            }
+
+            $this->commit();
+            return true;
+        } catch (\Exception $e) {
+            $this->error = $e->getMessage();
+            $this->rollback();
+            return false;
+        }
+    }
+
+    /**
+     * 删除股东用户
+     * @return mixed
+     */
+    public function setDelete()
+    {
+        return $this->transaction(function () {
+            // 标记当前股东记录为已删除
+            return $this->save([
+                'is_delete' => 1
+            ]);
+        });
+    }
+
+    /**
+     * 提现打款成功:累积提现佣金
+     */
+    public static function totalMoney($user_id, $money)
+    {
+        $model = self::detail($user_id);
+        return $model->save([
+            'freeze_money' => $model['freeze_money'] - $money,
+            'total_money' => $model['total_money'] + $money,
+        ]);
+    }
+
+    /**
+     * 提现驳回:解冻股东资金
+     */
+    public static function backFreezeMoney($user_id, $money)
+    {
+        $model = self::detail($user_id);
+        return $model->save([
+            'money' => $model['money'] + $money,
+            'freeze_money' => $model['freeze_money'] - $money,
+        ]);
+    }
+
+    /**
+     * 添加区域代理(后台直接添加)
+     * @param $data
+     * @return bool
+     */
+    public function addRegionUser($data)
+    {
+        $this->startTrans();
+        try {
+            // 检查用户是否已经是区域代理
+            $existing = self::detail($data['user_id']);
+            if ($existing && $existing['is_delete'] == 0) {
+                $this->error = '该用户已经是区域代理';
+                return false;
+            }
+
+            // 检查区域是否已被占用
+            $checkData = [
+                'region_level' => $data['region_level'],
+                'is_delete' => 0
+            ];
+            if ($data['region_level'] == 1) {
+                $checkData['province_id'] = $data['province_id'];
+            } elseif ($data['region_level'] == 2) {
+                $checkData['province_id'] = $data['province_id'];
+                $checkData['city_id'] = $data['city_id'];
+            } elseif ($data['region_level'] == 3) {
+                $checkData['province_id'] = $data['province_id'];
+                $checkData['city_id'] = $data['city_id'];
+                $checkData['area_id'] = $data['area_id'];
+            }
+
+            $conflict = $this->where($checkData)->find();
+            if ($conflict) {
+                $this->error = '该区域已有代理,请先删除原有代理';
+                return false;
+            }
+
+            // 准备数据
+            $saveData = [
+                'user_id' => $data['user_id'],
+                'real_name' => $data['real_name'],
+                'mobile' => $data['mobile'],
+                'region_level' => $data['region_level'],
+                'province_id' => $data['province_id'],
+                'city_id' => isset($data['city_id']) ? $data['city_id'] : 0,
+                'area_id' => isset($data['area_id']) ? $data['area_id'] : 0,
+                'referee_id' => isset($data['referee_id']) ? $data['referee_id'] : 0,
+                'grade_id' => isset($data['grade_id']) ? $data['grade_id'] : 0,
+                'money' => 0,
+                'freeze_money' => 0,
+                'total_money' => 0,
+                'total_num' => 0,
+                'first_num' => 0,
+                'second_num' => 0,
+                'third_num' => 0,
+                'is_delete' => 0,
+                'app_id' => self::$app_id,
+                'create_time' => time(),
+                'update_time' => time()
+            ];
+
+            // 如果之前有记录且已删除,则更新
+            if ($existing && $existing['is_delete'] == 1) {
+                $saveData['update_time'] = time();
+                $result = $this->where('user_id', $data['user_id'])->update($saveData);
+            } else {
+                // 新增
+                $result = $this->save($saveData);
+            }
+            $userLoginModel = new UserLoginModel();
+            if ($userLoginModel->detail(['real_name'=>$data['real_name']])){
+                throw new \Exception('该账号已存在');
+            }
+            // 创建管理员账号
+            if (isset($data['user_name']) && !empty($data['user_name'])) {
+                $loginData = [
+                    'user_id' => $data['user_id'],
+                    'user_name' => $data['user_name'],
+                    'password' => salt_hash($data['password']),
+                    'real_name' => $data['real_name'],
+                    'is_super' => 1,
+                    'mobile' => $data['mobile'],
+                    'is_delete' => 0,
+                    'app_id' => self::$app_id,
+                    'client_id' => 0
+                ];
+                
+                if (!$userLoginModel->save($loginData)) {
+                    throw new \Exception('管理员账号创建失败');
+                }
+                $role_id = RoleModel::where('region_level','=',$data['region_level'])->value('role_id');
+                // 这里可以分配默认角色ID,暂时不分配
+                $model = new UserRole();
+                $add_arr[] = [
+                    'region_user_id' => $userLoginModel['region_user_id'],
+                    'role_id' => $role_id,
+                    'app_id' => self::$app_id,
+                ];
+                $model->saveAll($add_arr);
+            }
+
+            $this->commit();
+            return true;
+        } catch (\Exception $e) {
+            $this->error = $e->getMessage();
+            $this->rollback();
+            return false;
+        }
+    }
+
+    /**
+     * 获取平台的总销售额
+     */
+    public function getTotalMoney($type = 'all_money')
+    {
+        $model = $this;
+        if($type == 'money'){
+            return $model->sum('money');
+        } else if($type == 'freeze_money'){
+            return $model->sum('freeze_money');
+        } else if($type == 'total_money'){
+            return $model->sum('total_money');
+        } else if($type == 'all_money'){
+            return $model->sum('total_money') + $model->sum('freeze_money') + $model->sum('money');
+        }
+        return 0;
+    }
+}

--
Gitblit v1.9.2