From 9c19cca671065bd11c6fa752f43c94197bf9be23 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Tue, 12 Aug 2025 13:53:48 +0800 Subject: [PATCH 01/21] =?UTF-8?q?=E7=BB=84=E5=91=98=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/controller/UserController.php | 49 ++++++++++++++++ app/common/logic/UserLogic.php | 8 +++ app/common/model/User.php | 4 +- app/common/service/UserService.php | 68 +++++++++++++++++++++++ app/crm/controller/CustomerController.php | 45 +++++++++++++++ config/route.php | 3 + 6 files changed, 176 insertions(+), 1 deletion(-) diff --git a/app/common/controller/UserController.php b/app/common/controller/UserController.php index d725166..bf14859 100644 --- a/app/common/controller/UserController.php +++ b/app/common/controller/UserController.php @@ -2,12 +2,61 @@ namespace app\common\controller; +use app\common\traits\crud\CrudControllerTrait; use support\Request; use app\common\service\UserService; class UserController extends BaseController { + use CrudControllerTrait; + + protected $service; + + public function __construct() + { + $this->service = new UserService(); + } + + /** + * 获取组员列表 + * + * @param Request $request 请求对象 + * @return mixed 返回分页数据及总数 + */ + public function team(Request $request) + { + try { + $raw = $this->service->serviceTeam($request); + $data = $this->transformData($raw, method_exists($this, 'indexFormat') + ? [$this, 'indexFormat'] + : null); + return $this->success($data); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } + + /** + * 标记组员离职 + * + * @param Request $request 请求对象 + * @return mixed 返回分页数据及总数 + */ + public function resignMember(Request $request) + { + try { + $userId = $request->post('user_id'); + if(empty($userId)){ + return $this->error('组员id不能为空'); + } + $user = $this->service->resignMember($request); + return $this->success($user, '获取用户信息'); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } + /** * 用户信息 */ diff --git a/app/common/logic/UserLogic.php b/app/common/logic/UserLogic.php index 9f5ae44..c7d5343 100644 --- a/app/common/logic/UserLogic.php +++ b/app/common/logic/UserLogic.php @@ -3,10 +3,18 @@ namespace app\common\logic; use app\common\model\User; +use app\common\traits\crud\CrudLogicTrait; use support\exception\BusinessException; class UserLogic { + use CrudLogicTrait; + + /** + * 指定当前要操作的模型 + */ + protected string $modelClass = User::class; + /** * 用户信息 */ diff --git a/app/common/model/User.php b/app/common/model/User.php index 446ed46..88c670d 100644 --- a/app/common/model/User.php +++ b/app/common/model/User.php @@ -15,7 +15,8 @@ use support\Model; * @property string $email 邮箱 * @property integer $status 状态 * @property string $system_code 系统码 - * @property string $created_at + * @property string $report_to 上级用户ID + * @property string $created_at * @property string $updated_at */ class User extends Model @@ -69,6 +70,7 @@ class User extends Model 'position', 'socialize', 'socialize_pic', + 'report_to', ]; // 用户所有角色 diff --git a/app/common/service/UserService.php b/app/common/service/UserService.php index 1d5dab4..bfcf345 100644 --- a/app/common/service/UserService.php +++ b/app/common/service/UserService.php @@ -5,12 +5,21 @@ namespace app\common\service; use app\common\logic\UserLogic; use app\common\model\Corp; use app\common\model\User; +use app\common\traits\crud\CrudLogicTrait; +use app\common\traits\crud\CrudServiceTrait; use app\common\utils\CrudUtil; use app\crm\model\Country; use support\exception\BusinessException; +use support\Request; class UserService { + use CrudServiceTrait; + + /** + * 指定当前要操作的模型 + */ + protected string $modelClass = User::class; protected $logic; @@ -110,4 +119,63 @@ class UserService { return $this->logic->getList(); } + + /** 分页列表 */ + public function serviceTeam(Request $request) + { + if (method_exists($this, 'complexQuery')) { + $result = $this->complexQuery($request->get()); + } else { + $config = $this->buildQueryConfig($request, 'team'); + $limit = (int)$request->get('size', 15); + $page = (int)$request->get('current', 1); + $result = $this->logicList($config, $limit, $page); + } + return $this->postProcess('List', $result); + } + + /** 分页列表 */ + public function resignMember(Request $request) + { + $uid = $request->user->uid; + $userId = $request->post('user_id'); + $user = User::find($userId); + if ($user->report_to != $uid) { + throw new BusinessException('禁止操作非组员'); + } + + $data = [ + 'status' => 2, + ]; + $user = $this->logic->edit($userId,$data); + $user = $user->toArray(); + unset($user['password']); + unset($user['open_id']); + unset($user['tenant_key']); + unset($user['union_id']); + return $user; + } + + /** + * 构造 CrudUtil 查询配置 + */ + protected function buildQueryConfig(Request $request, string $scene = 'default'): array + { + $p = $request->all(); + + $config = []; + $config['model'] = $this->modelClass; + switch ($scene) { + case 'team': +// $config['where']['status'] = 1; // 关键字 + $config['order']['id'] = 'desc'; + + $config['dataLimit']['type'] = 'relation'; + $config['dataLimit']['userId'] = $request->user->uid; + $config['dataLimit']['userField'] = 'report_to'; + break; + } + + return $config; + } } \ No newline at end of file diff --git a/app/crm/controller/CustomerController.php b/app/crm/controller/CustomerController.php index d1e7cdb..8b141a2 100644 --- a/app/crm/controller/CustomerController.php +++ b/app/crm/controller/CustomerController.php @@ -526,6 +526,51 @@ class CustomerController extends BaseController } } + /** + * 客户转移至公海 + * @param Request $request + * @return \support\Response + */ + public function putSeas(Request $request) + { + $customerId = Util::getParam($request, 'customer_id'); + $userId = $request->user->uid; + if (Util::isEmpty($customerId)) { + return $this->error(trans('customer_id').trans('not_null')); + } + + try { + Db::beginTransaction(); + $customer= Customer::withTrashed()->where('user_id',$userId)->find($customerId); + + if(empty($customer)){ + return $this->error( 'customer_id错误'); + } + $data = [ + 'user_id' => 0, + ]; + + $res = $customer->update($data); + + //记录客户关系变化 + $his = CustomerHis::create([ + 'customer_id' => $customerId, + 'user_his' => $userId, + 'user_id' => 0, + ]); + Db::commit(); + } catch (\Throwable $e) { + Db::rollback(); + return $this->error($e->getMessage()); + } + + if ($res) { + return $this->success($res, trans('success')); + } else { + return $this->error(trans('fail')); + } + } + /** diff --git a/config/route.php b/config/route.php index 0c928eb..44bbe64 100644 --- a/config/route.php +++ b/config/route.php @@ -52,6 +52,8 @@ Route::group('/common', function () { Route::group('/user', function () { Route::any('/info', [app\common\controller\UserController::class, 'info']); Route::any('/get', [app\common\controller\UserController::class, 'getUser']); + Route::any('/team', [app\common\controller\UserController::class, 'team']); + Route::any('/resign', [app\common\controller\UserController::class, 'resignMember']); }); Route::group('/preset', function () { @@ -170,6 +172,7 @@ Route::group('/crm', function () { Route::any('/customer/getCountry', [app\crm\controller\CustomerController::class, 'getCountry']); Route::any('/customer/followNext', [app\crm\controller\CustomerController::class, 'followNext']); Route::any('/customer/report', [app\crm\controller\CustomerController::class, 'report']); + Route::any('/customer/seas', [app\crm\controller\CustomerController::class, 'putSeas']); Route::any('/tagGroup/list', [app\crm\controller\TagGroupController::class, 'list']); Route::any('/tagGroup/updatePivot', [app\crm\controller\TagGroupController::class, 'updatePivot']); From 67861532ec2e193caf5aea03d200511490d1a027 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Wed, 13 Aug 2025 09:16:02 +0800 Subject: [PATCH 02/21] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=85=AC=E6=B5=B7?= =?UTF-8?q?=E5=88=97=E8=A1=A8=EF=BC=8C=E8=AF=A6=E6=83=85=E8=B7=9F=E8=BF=9B?= =?UTF-8?q?=E3=80=81=E9=87=8D=E7=BD=AE=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/UserController.php | 37 +++++++++++++ app/admin/service/UserService.php | 29 +++++++++- app/common/validate/UserValidate.php | 3 +- app/crm/controller/CustomerController.php | 13 +++-- app/crm/service/CustomerService.php | 5 ++ .../controller/CustomerController.php | 53 +++++++++++++++++++ app/crmAdmin/logic/CustomerLogic.php | 8 ++- app/crmAdmin/service/CustomerService.php | 53 ++++++++++++++++++- app/queue/redis/InquiryToCrm.php | 1 + config/route.php | 3 ++ 10 files changed, 198 insertions(+), 7 deletions(-) diff --git a/app/admin/controller/UserController.php b/app/admin/controller/UserController.php index dfcebd7..3975aa3 100644 --- a/app/admin/controller/UserController.php +++ b/app/admin/controller/UserController.php @@ -6,6 +6,7 @@ use app\common\model\Corp; use app\common\traits\crud\CrudControllerTrait; use app\admin\service\UserService; use app\crm\model\Customer; +use support\Request; class UserController extends BaseController { @@ -18,6 +19,42 @@ class UserController extends BaseController $this->service = new UserService(); } + + /** + * 修改密码 + * @param Request $request + * @return \support\Response + * @throws \Random\RandomException + */ + public function savePassword(Request $request) + { + try { + $data = $this->validate($this->service->getValidator(), $request->post(), 'password'); + $data = $request->all(); + $result = $this->service->savePassword($request,$data);; + return $this->success($result, '编辑成功'); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } + + /** + * 更新 + * + * @param Request $request 请求对象 + * @return mixed 返回更新成功的数据或信息 + */ + public function edit(Request $request) + { + try { + $data = $this->validate($this->service->getValidator(), $request->post(), 'update'); + $res = $this->service->serviceUpdate($request, $data); + return $this->success([], '更新成功'); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } + /** * 列表页数据格式化 * diff --git a/app/admin/service/UserService.php b/app/admin/service/UserService.php index f2e07fd..adbfd95 100644 --- a/app/admin/service/UserService.php +++ b/app/admin/service/UserService.php @@ -2,9 +2,11 @@ namespace app\admin\service; -use app\admin\validate\UserValidate; +use app\admin\logic\UserLogic; use app\common\traits\crud\CrudServiceTrait; use app\common\model\User; +use app\common\validate\UserValidate; +use support\exception\BusinessException; use support\Request; class UserService @@ -30,6 +32,14 @@ class UserService return new $this->validator; } + /** 更新 */ + public function serviceUpdate(Request $request, array $data = []) + { + $data = $this->preProcess('Update', $data, $request); + $config = $this->buildQueryConfig($request, 'edit'); + $updated = $this->logicUpdateBy($config, $data); + return $this->postProcess('Update', $data); + } /** * 构造 CrudUtil 查询配置 @@ -74,8 +84,25 @@ class UserService case 'destroy': $config['where']['id'] = $p['id']; break; + case 'savePassword': + $config['where']['id'] = $p['id']; + break; + case 'edit': + $config['where']['id'] = $request->user->uid; + break; } return $config; } + + /** + * 修改用户密码 + */ + public function savePassword(Request $request, array $data) + { + $config = $this->buildQueryConfig($request, 'savePassword'); + $data['password'] = password_hash($data['password'], PASSWORD_DEFAULT); + $user = $this->logicUpdateBy($config,$data); + return $user; + } } \ No newline at end of file diff --git a/app/common/validate/UserValidate.php b/app/common/validate/UserValidate.php index 7db260d..6330cb5 100644 --- a/app/common/validate/UserValidate.php +++ b/app/common/validate/UserValidate.php @@ -55,7 +55,8 @@ class UserValidate extends Validate 'feishu_register' => ['feishu_code'], 'upwd_login' => ['account' => 'require|checkAccount', 'password'], 'feishu_auth' => ['corp_abbr', 'system_code', 'login_type'], - 'feishu_login' => ['feishu_code'] + 'feishu_login' => ['feishu_code'], + 'password' => ['password'], ]; /** diff --git a/app/crm/controller/CustomerController.php b/app/crm/controller/CustomerController.php index 8b141a2..48744e4 100644 --- a/app/crm/controller/CustomerController.php +++ b/app/crm/controller/CustomerController.php @@ -325,6 +325,7 @@ class CustomerController extends BaseController 'lng' => Util::getParam($request, 'lng', 0), 'address' => Util::getParam($request, 'address', ''), 'sex' => Util::getParam($request, 'sex', 0), + 'obtain' => time(), ]; if (Util::isEmpty($id)) { @@ -485,10 +486,10 @@ class CustomerController extends BaseController return $this->error(trans('customer_id').trans('not_null')); } $data = [ - 'user_id' => $request->user->uid + 'user_id' => $request->user->uid, + 'obtain' => time(), ]; - try { Db::beginTransaction(); $customer= Customer::withTrashed()->find($customerId); @@ -592,6 +593,7 @@ class CustomerController extends BaseController try { $customer = $query->get(); + Db::beginTransaction(); foreach ($customer as $item) { //记录客户关系变化 $his = CustomerHis::create([ @@ -607,7 +609,12 @@ class CustomerController extends BaseController } } } - $res = $query->update(['user_id' => $user->id]); + + $data = [ + 'user_id' => $user->id, + 'obtain' => time(), + ]; + $res = $query->update($data); Db::commit(); } catch (\Throwable $e) { diff --git a/app/crm/service/CustomerService.php b/app/crm/service/CustomerService.php index 8621636..c41aace 100644 --- a/app/crm/service/CustomerService.php +++ b/app/crm/service/CustomerService.php @@ -162,6 +162,11 @@ class CustomerService return $config; } + /** + * 无用线索举报 + * @param $params + * @return false + */ public function report($params) { $id = $params['id']; diff --git a/app/crmAdmin/controller/CustomerController.php b/app/crmAdmin/controller/CustomerController.php index 153941a..a3dc0e2 100644 --- a/app/crmAdmin/controller/CustomerController.php +++ b/app/crmAdmin/controller/CustomerController.php @@ -3,6 +3,7 @@ namespace app\crmAdmin\controller; use app\common\model\Corp; +use app\crm\model\Customer; use app\crmAdmin\service\CustomerService; use support\Request; @@ -133,6 +134,37 @@ class CustomerController extends BaseController } } + /** + * 移除 + * @param Request $request + * @return \support\Response + */ + public function delete(Request $request) + { + try { + $param = $request->all(); + if (empty($param['customer_id'])) { + return $this->error('customer_id'.trans('not_null')); + } + + $where = [ + 'id' => $param['customer_id'], + ]; + $customer = Customer::where($where)->withTrashed()->first(); + if(empty($customer)){ + return $this->error( trans('fail')); + } + //软删除 + $customer->status = 3; + $res = $customer->save(); + $customer->delete(); + + return $this->success($res); + } catch (\Throwable $th) { + return $this->error($th->getMessage()); + } + } + /** * 客户详情 * @param Request $request @@ -154,4 +186,25 @@ class CustomerController extends BaseController } } + /** + * 客户详情 + * @param Request $request + * @return \support\Response + */ + public function follow(Request $request) + { + try { + $param = $request->all(); + if (empty($param['id'])) { + return $this->error('id'.trans('not_null')); + } + + $result = (new CustomerService())->follow($param); + + return $this->success($result); + } catch (\Throwable $th) { + return $this->error($th->getMessage()); + } + } + } \ No newline at end of file diff --git a/app/crmAdmin/logic/CustomerLogic.php b/app/crmAdmin/logic/CustomerLogic.php index 869982f..83ba426 100644 --- a/app/crmAdmin/logic/CustomerLogic.php +++ b/app/crmAdmin/logic/CustomerLogic.php @@ -13,6 +13,10 @@ class CustomerLogic $customer->status = $status; $res = $customer->save(); + if($status == 1){ + $customer->restore(); + } + return $res; } @@ -20,7 +24,9 @@ class CustomerLogic { $customer = Customer::withTrashed()->find($id); //强制删除 - $res = $customer->forceDelete(); +// $res = $customer->forceDelete(); + $customer->status = 3; + $res = $customer->save(); return $res; } } \ No newline at end of file diff --git a/app/crmAdmin/service/CustomerService.php b/app/crmAdmin/service/CustomerService.php index 5f08943..041a514 100644 --- a/app/crmAdmin/service/CustomerService.php +++ b/app/crmAdmin/service/CustomerService.php @@ -4,6 +4,7 @@ namespace app\crmAdmin\service; use app\common\model\InquiryLog; use app\common\model\User; +use app\common\service\OssService; use app\crm\model\CustomerHis; use app\crmAdmin\logic\CustomerLogic; use app\crm\model\CarType; @@ -315,7 +316,42 @@ class CustomerService } } } - $res = $query->update(['user_id' => $userId]); + $data = [ + 'user_id' => $userId, + 'obtain' => time(), + ]; + $res = $query->update($data); + + Db::commit(); + return $res; + } catch (\Throwable $e) { + Db::rollback(); + throw $e; + } + } + + /** + * @param $params + * @return bool + */ + public function delete($params) + { + try { + Db::beginTransaction(); + $customerId = $params['customer_id']; + + $query= Customer::whereIn('id',explode(',',$customerId)); + $customer = $query->get(); + + foreach ($customer as $item) { + //记录客户关系变化 + $his = CustomerHis::create([ + 'customer_id' => $item->id, + 'user_his' => $item->user_id, + 'user_id' => 0, + ]); + } + $res = $query->update(['user_id' => 0]); Db::commit(); return $res; @@ -394,4 +430,19 @@ class CustomerService return $customer; } + + public function follow($params) + { + $id = $params['id']; + $follow = Follow:: + where('customer_id', $id) + ->first(); + + $ossservice = new OssService(); + foreach ($follow as $item) { + $item['picture_full'] = $item->picture??$ossservice->generatePrivateUrl($item->picture); + } + + return $follow; + } } \ No newline at end of file diff --git a/app/queue/redis/InquiryToCrm.php b/app/queue/redis/InquiryToCrm.php index 8e1ae51..7bec9ca 100644 --- a/app/queue/redis/InquiryToCrm.php +++ b/app/queue/redis/InquiryToCrm.php @@ -60,6 +60,7 @@ class InquiryToCrm implements Consumer $crmCustomer->contacts = $info->contacts; $crmCustomer->desc_collect = $info->content; $crmCustomer->enter_user_id = $info->enter_user_id; + $crmCustomer->obtain = time(); // 修改同步CRM状态 $info->sync_crm = 1; // 保存 diff --git a/config/route.php b/config/route.php index 44bbe64..e86a342 100644 --- a/config/route.php +++ b/config/route.php @@ -79,6 +79,7 @@ Route::group('/admin', function () { Route::any('/list', [app\admin\controller\UserController::class, 'index']); Route::any('/show', [app\admin\controller\UserController::class, 'show']); Route::any('/update', [app\admin\controller\UserController::class, 'update']); + Route::any('/update/password', [app\admin\controller\UserController::class, 'savePassword']); }); // 公司 @@ -119,6 +120,8 @@ Route::group('/admin', function () { Route::any('/audit', [app\crmAdmin\controller\CustomerController::class, 'audit']); Route::any('/transfer', [app\crmAdmin\controller\CustomerController::class, 'transfer']); Route::any('/detail', [app\crmAdmin\controller\CustomerController::class, 'detail']); + Route::any('/delete', [app\crmAdmin\controller\CustomerController::class, 'delete']); + Route::any('/follow', [app\crmAdmin\controller\CustomerController::class, 'follow']); }); }); }); From 069dcb057635a4b1d38ac118fab326a507d9d2e1 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Wed, 13 Aug 2025 10:09:49 +0800 Subject: [PATCH 03/21] =?UTF-8?q?=E8=B7=AF=E7=94=B1=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/route.php | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/config/route.php b/config/route.php index d4099c1..6535c87 100644 --- a/config/route.php +++ b/config/route.php @@ -75,14 +75,6 @@ Route::group('/admin', function () { Route::any('/menu/resource', [app\admin\controller\RoleController::class, 'menuResource']); }); - // 用户 - Route::group('/user', function () { - Route::any('/list', [app\admin\controller\UserController::class, 'index']); - Route::any('/show', [app\admin\controller\UserController::class, 'show']); - Route::any('/update', [app\admin\controller\UserController::class, 'update']); - Route::any('/update/password', [app\admin\controller\UserController::class, 'savePassword']); - }); - // 公司 Route::group('/corp', function () { Route::any('/list', [app\admin\controller\CorpController::class, 'index']); @@ -128,6 +120,7 @@ Route::group('/admin', function () { Route::any('/update', [app\admin\controller\UserController::class, 'update']); Route::any('/authorize', [app\admin\controller\UserController::class, 'authorize']); Route::any('/set/resources', [app\admin\controller\UserController::class, 'updateResources']); + Route::any('/set/resources', [app\admin\controller\UserController::class, 'updateResources']); }); // 询单 From b7b2950d395ff25bcc25113c98c5683ed24a4af3 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Wed, 13 Aug 2025 10:17:18 +0800 Subject: [PATCH 04/21] 1 --- config/route.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/route.php b/config/route.php index 6535c87..ab46ed1 100644 --- a/config/route.php +++ b/config/route.php @@ -120,7 +120,7 @@ Route::group('/admin', function () { Route::any('/update', [app\admin\controller\UserController::class, 'update']); Route::any('/authorize', [app\admin\controller\UserController::class, 'authorize']); Route::any('/set/resources', [app\admin\controller\UserController::class, 'updateResources']); - Route::any('/set/resources', [app\admin\controller\UserController::class, 'updateResources']); + Route::any('/update/password', [app\admin\controller\UserController::class, 'savePassword']); }); // 询单 From c40d0bcec34cfa37afbb5546b141ef882e7a3998 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Wed, 13 Aug 2025 10:36:32 +0800 Subject: [PATCH 05/21] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E4=B8=BA=E6=94=BE=E5=85=A5=E5=85=AC=E6=B5=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/crm/controller/CustomerController.php | 77 +++++++---------------- config/route.php | 1 - 2 files changed, 24 insertions(+), 54 deletions(-) diff --git a/app/crm/controller/CustomerController.php b/app/crm/controller/CustomerController.php index 48744e4..b00af0d 100644 --- a/app/crm/controller/CustomerController.php +++ b/app/crm/controller/CustomerController.php @@ -394,13 +394,31 @@ class CustomerController extends BaseController if(empty($customer)){ return $this->error( trans('fail')); } - if($force == 'force'){ - //强制删除 - $res = $customer->forceDelete(); - }else{ - //软删除 - $res = $customer->delete(); + try { + Db::beginTransaction(); + if ($force == 'force') { + //强制删除 + $res = $customer->forceDelete(); + } else { + $customer->user_id = 0; + $customer->save(); + + //记录客户关系变化 + $his = CustomerHis::create([ + 'customer_id' => $id, + 'user_his' => $userId, + 'user_id' => 0, + ]); + + //软删除 + $res = $customer->delete(); + } + Db::commit(); + } catch (\Throwable $e) { + Db::rollback(); + return $this->error($e->getMessage()); } + if ($res) { return $this->success($res, trans('success')); } else { @@ -527,53 +545,6 @@ class CustomerController extends BaseController } } - /** - * 客户转移至公海 - * @param Request $request - * @return \support\Response - */ - public function putSeas(Request $request) - { - $customerId = Util::getParam($request, 'customer_id'); - $userId = $request->user->uid; - if (Util::isEmpty($customerId)) { - return $this->error(trans('customer_id').trans('not_null')); - } - - try { - Db::beginTransaction(); - $customer= Customer::withTrashed()->where('user_id',$userId)->find($customerId); - - if(empty($customer)){ - return $this->error( 'customer_id错误'); - } - $data = [ - 'user_id' => 0, - ]; - - $res = $customer->update($data); - - //记录客户关系变化 - $his = CustomerHis::create([ - 'customer_id' => $customerId, - 'user_his' => $userId, - 'user_id' => 0, - ]); - Db::commit(); - } catch (\Throwable $e) { - Db::rollback(); - return $this->error($e->getMessage()); - } - - if ($res) { - return $this->success($res, trans('success')); - } else { - return $this->error(trans('fail')); - } - } - - - /** * 批量转让 * @param Request $request diff --git a/config/route.php b/config/route.php index e86a342..c4d9161 100644 --- a/config/route.php +++ b/config/route.php @@ -175,7 +175,6 @@ Route::group('/crm', function () { Route::any('/customer/getCountry', [app\crm\controller\CustomerController::class, 'getCountry']); Route::any('/customer/followNext', [app\crm\controller\CustomerController::class, 'followNext']); Route::any('/customer/report', [app\crm\controller\CustomerController::class, 'report']); - Route::any('/customer/seas', [app\crm\controller\CustomerController::class, 'putSeas']); Route::any('/tagGroup/list', [app\crm\controller\TagGroupController::class, 'list']); Route::any('/tagGroup/updatePivot', [app\crm\controller\TagGroupController::class, 'updatePivot']); From 394872af91e389e3d57345254c1410d9bb299431 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Wed, 13 Aug 2025 10:39:18 +0800 Subject: [PATCH 06/21] user --- app/common/controller/UserController.php | 98 ++++++++++++------------ 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/app/common/controller/UserController.php b/app/common/controller/UserController.php index 9f5d35d..d4fe0f4 100644 --- a/app/common/controller/UserController.php +++ b/app/common/controller/UserController.php @@ -72,57 +72,57 @@ class UserController extends BaseController } } - // /** - // * 用户信息 - // */ - // public function getUser(Request $request) - // { - // try { - // $uid = $request->user->uid; - // $corp_abbr = $request->basic_data['corp_abbr']; - // $result = (new UserService())->getUser($uid,$corp_abbr); - // return $this->success($result, '获取用户信息'); - // } catch (\Throwable $e) { - // return $this->error($e->getMessage()); - // } - // } + /** + * 用户信息 + */ + public function getUser(Request $request) + { + try { + $uid = $request->user->uid; + $corp_abbr = $request->basic_data['corp_abbr']; + $result = (new UserService())->getUser($uid,$corp_abbr); + return $this->success($result, '获取用户信息'); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } - // /** - // * 编辑用户 - // */ - // public function edit(Request $request) - // { - // try { - // $uid = $request->user->uid; - // $data = $request->all(); - // $result = (new UserService())->edit($uid,$data); - // unset($result['password']); - // unset($result['union_id']); - // unset($result['open_id']); - // unset($result['tenant_key']); - // return $this->success($result, '编辑成功'); - // } catch (\Throwable $e) { - // return $this->error($e->getMessage()); - // } - // } + /** + * 编辑用户 + */ + public function edit(Request $request) + { + try { + $uid = $request->user->uid; + $data = $request->all(); + $result = (new UserService())->edit($uid,$data); + unset($result['password']); + unset($result['union_id']); + unset($result['open_id']); + unset($result['tenant_key']); + return $this->success($result, '编辑成功'); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } - // /** - // * 修改密码 - // * @param Request $request - // * @return \support\Response - // * @throws \Random\RandomException - // */ - // public function savePassword(Request $request) - // { - // try { - // $uid = $request->user->uid; - // $data = $request->all(); - // $result = (new UserService())->savePassword($uid,$data);; - // return $this->success($result, '编辑成功'); - // } catch (\Throwable $e) { - // return $this->error($e->getMessage()); - // } - // } + /** + * 修改密码 + * @param Request $request + * @return \support\Response + * @throws \Random\RandomException + */ + public function savePassword(Request $request) + { + try { + $uid = $request->user->uid; + $data = $request->all(); + $result = (new UserService())->savePassword($uid,$data);; + return $this->success($result, '编辑成功'); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } } \ No newline at end of file From af4dd3ff855fce9c2009c86ec1dbdd5eaeb5a03b Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 09:34:18 +0800 Subject: [PATCH 07/21] =?UTF-8?q?=E4=B8=8A=E7=BA=A7id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/service/UserService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/admin/service/UserService.php b/app/admin/service/UserService.php index adbfd95..33e8f92 100644 --- a/app/admin/service/UserService.php +++ b/app/admin/service/UserService.php @@ -71,7 +71,7 @@ class UserService $config['where']['id'] = $p['id']; } - $config['fields'] = ['id','sn', 'name', 'email', 'sex', 'phone', 'avatar', 'corp_id', 'country_id', 'position', 'status', 'created_at']; + $config['fields'] = ['id','sn', 'name', 'email', 'sex', 'phone', 'avatar', 'corp_id', 'country_id', 'position', 'report_to', 'status', 'created_at']; break; case 'show': $config['where']['id'] = $p['id']; From 879a9ee4aa3a5d3d7c3944d7c4534d7bb109d504 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 09:41:28 +0800 Subject: [PATCH 08/21] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E5=9B=BD=E5=AE=B6?= =?UTF-8?q?=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/crm/service/CustomerService.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/crm/service/CustomerService.php b/app/crm/service/CustomerService.php index c41aace..2862088 100644 --- a/app/crm/service/CustomerService.php +++ b/app/crm/service/CustomerService.php @@ -36,6 +36,7 @@ class CustomerService $follow = $params['follow'] ?? ''; $follow_last = $params['follow_last'] ?? ''; $tagId = $params['tag_id'] ?? []; + $countryId = $params['country_id'] ?? ''; $where = []; $user_id =$params['user_id']; @@ -49,6 +50,9 @@ class CustomerService } $where[] = ['status', 1]; + if (!empty($countryId)){ + $where[] = ['country_id', $countryId]; + } $grade = []; if (!Util::isEmpty($follow) && $follow == 0) { From a59ed51f6f58ffc24e3a816f447d5abc30635ad1 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 10:15:38 +0800 Subject: [PATCH 09/21] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/service/UserService.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/common/service/UserService.php b/app/common/service/UserService.php index d955de0..ad7aa5f 100644 --- a/app/common/service/UserService.php +++ b/app/common/service/UserService.php @@ -37,6 +37,7 @@ class UserService // $permService = new PermService(); // $menuTree = $permService->getMenuTree($uid, $systemCode); // $permissionCodes = $permService->getPermissionCodes($uid, $systemCode); + $corp_name = Corp::where('abbr', $user->corp_id)->value('name'); return [ 'user' => [ 'id' => $user->id, @@ -45,7 +46,11 @@ class UserService 'phone' => $user->phone, 'email' => $user->email, 'status' => $user->status, - 'roles' => $user->roles->pluck('name') + 'roles' => $user->roles->pluck('name'), + 'sex' => $user->sex, + 'sn' => $user->sn, + 'corp_id' => $user->corp_id, + 'corp_name' => $corp_name, ], // 'menu' => $menuTree, // 'permissions' => $permissionCodes From 2233fb4d6b7e2dda2f437555a6b1b076766a50fd Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 10:33:45 +0800 Subject: [PATCH 10/21] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/UserController.php | 1 + config/route.php | 1 + 2 files changed, 2 insertions(+) diff --git a/app/admin/controller/UserController.php b/app/admin/controller/UserController.php index 7a7f6eb..ddafa85 100644 --- a/app/admin/controller/UserController.php +++ b/app/admin/controller/UserController.php @@ -48,6 +48,7 @@ class UserController extends BaseController { try { $data = $this->validate($this->service->getValidator(), $request->post(), 'update'); + $data['id'] = $data['id']??$request->user->uid; $res = $this->service->serviceUpdate($request, $data); return $this->success([], '更新成功'); } catch (\Throwable $e) { diff --git a/config/route.php b/config/route.php index 3da8dd6..9cc5c85 100644 --- a/config/route.php +++ b/config/route.php @@ -121,6 +121,7 @@ Route::group('/admin', function () { Route::any('/list', [app\admin\controller\UserController::class, 'index']); Route::any('/show', [app\admin\controller\UserController::class, 'show']); Route::any('/update', [app\admin\controller\UserController::class, 'update']); + Route::any('/edit', [app\admin\controller\UserController::class, 'edit']); Route::any('/authorize', [app\admin\controller\UserController::class, 'authorize']); Route::any('/set/resources', [app\admin\controller\UserController::class, 'updateResources']); Route::any('/update/password', [app\admin\controller\UserController::class, 'savePassword']); From 0b1bcc94e9904af80b34f9572416cc5dff2b9675 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 13:56:18 +0800 Subject: [PATCH 11/21] =?UTF-8?q?=E8=B7=9F=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/crmAdmin/service/CustomerService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/crmAdmin/service/CustomerService.php b/app/crmAdmin/service/CustomerService.php index 1a94f92..7b74e16 100644 --- a/app/crmAdmin/service/CustomerService.php +++ b/app/crmAdmin/service/CustomerService.php @@ -436,7 +436,7 @@ class CustomerService $id = $params['id']; $follow = Follow:: where('customer_id', $id) - ->first(); + ->get(); $ossservice = new OssService(); foreach ($follow as $item) { From 2bbe7935cae5e3e724e7f680ba0f3cbbf15b17a6 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 14:03:38 +0800 Subject: [PATCH 12/21] =?UTF-8?q?=E8=B7=9F=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/crmAdmin/service/CustomerService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/crmAdmin/service/CustomerService.php b/app/crmAdmin/service/CustomerService.php index 7b74e16..1bb22f4 100644 --- a/app/crmAdmin/service/CustomerService.php +++ b/app/crmAdmin/service/CustomerService.php @@ -440,7 +440,7 @@ class CustomerService $ossservice = new OssService(); foreach ($follow as $item) { - $item['picture_full'] = $item->picture??$ossservice->generatePrivateUrl($item->picture); + $item['picture_full'] = empty($item->picture)?'':$ossservice->generatePrivateUrl($item->picture); } return $follow; From 312c7706f99e92063b36a29c118a3a56cd204f7a Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 14:11:08 +0800 Subject: [PATCH 13/21] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E8=BD=AC=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/route.php | 1 + 1 file changed, 1 insertion(+) diff --git a/config/route.php b/config/route.php index 9cc5c85..9c33c32 100644 --- a/config/route.php +++ b/config/route.php @@ -157,6 +157,7 @@ Route::group('/admin', function () { Route::any('/transfer', [app\crmAdmin\controller\CustomerController::class, 'transfer']); Route::any('/detail', [app\crmAdmin\controller\CustomerController::class, 'detail']); Route::any('/delete', [app\crmAdmin\controller\CustomerController::class, 'delete']); + Route::any('/cede', [app\crm\controller\CustomerController::class, 'cede']); Route::any('/follow', [app\crmAdmin\controller\CustomerController::class, 'follow']); }); }); From d90a8b05ce55365b9b953539cb95416d9360f7ba Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 15:28:15 +0800 Subject: [PATCH 14/21] =?UTF-8?q?=E7=BB=84=E5=91=98=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/command/CustomerCodeCommand.php | 3 ++- app/common/model/CrmCustomer.php | 27 ++++++++++++++++++++++++ app/common/service/UserService.php | 6 ++++++ app/crmAdmin/service/CustomerService.php | 4 +++- 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/app/command/CustomerCodeCommand.php b/app/command/CustomerCodeCommand.php index 2d3e447..a82ec0f 100644 --- a/app/command/CustomerCodeCommand.php +++ b/app/command/CustomerCodeCommand.php @@ -44,7 +44,8 @@ class CustomerCodeCommand extends SymfonyCommand $code = 'CM' . $unique; } - $obtain = $customer->created_at>strtotime('2025-07-29')?$customer->created_at:strtotime('2025-07-29'); + $created_at = $customer->created_at->getTimestamp(); + $obtain = $created_at > strtotime('2025-07-29')?$created_at:strtotime('2025-07-29'); $customer->code = $code; $customer->obtain = $obtain; diff --git a/app/common/model/CrmCustomer.php b/app/common/model/CrmCustomer.php index 49446e6..f050186 100644 --- a/app/common/model/CrmCustomer.php +++ b/app/common/model/CrmCustomer.php @@ -46,4 +46,31 @@ class CrmCustomer extends Model * 不允许自动填充模型字段 */ protected $guarded = []; + + protected static function booted() + { + static::saved(function ($customer) { + if (empty($customer->code)) { + $customer->code = self::generateCustomerCode($customer); + // 使用saveQuietly避免递归调用 + $customer->saveQuietly(); + } + }); + } + + public static function generateCustomerCode($customer) + { + // 生成唯一16位code,CM+14位 + $unique = strtoupper(substr(md5($customer->id . microtime(true) . mt_rand(1000, 9999)), 8, 14)); + $code = 'CM' . date('Ymd') .$unique; + return $code; + } + + // 静默保存方法,不触发事件 + public function saveQuietly(array $options = []) + { + return static::withoutEvents(function () use ($options) { + return $this->save($options); + }); + } } \ No newline at end of file diff --git a/app/common/service/UserService.php b/app/common/service/UserService.php index ad7aa5f..3712f20 100644 --- a/app/common/service/UserService.php +++ b/app/common/service/UserService.php @@ -9,6 +9,7 @@ use app\common\traits\crud\CrudLogicTrait; use app\common\traits\crud\CrudServiceTrait; use app\common\utils\CrudUtil; use app\crm\model\Country; +use app\crm\model\Customer; use support\exception\BusinessException; use support\Request; @@ -136,6 +137,11 @@ class UserService $page = (int)$request->get('current', 1); $result = $this->logicList($config, $limit, $page); } + + foreach ($result as &$data){ + $data['customer_count'] = Customer::where('user_id', $data['id'])->count(); + } + return $this->postProcess('List', $result); } diff --git a/app/crmAdmin/service/CustomerService.php b/app/crmAdmin/service/CustomerService.php index 1bb22f4..dc08f0e 100644 --- a/app/crmAdmin/service/CustomerService.php +++ b/app/crmAdmin/service/CustomerService.php @@ -105,7 +105,9 @@ class CustomerService if (!Util::isEmpty($keyword)) { $query->where(function ($query) use ($keyword) { $query->where('contacts', 'like', "%{$keyword}%") - ->orWhere('phone', 'like', "%{$keyword}%"); + ->orWhere('phone', 'like', "%{$keyword}%") + ->orWhere('WhatsApp', 'like', "%{$keyword}%") + ->orWhere('code', 'like', "%{$keyword}%"); }); } if (!Util::isEmpty($grade)) { From 4c89b3999cb5137a88c050ccc1e6ff766f195631 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 15:50:57 +0800 Subject: [PATCH 15/21] =?UTF-8?q?=E7=94=9F=E6=88=90code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/service/UserService.php | 4 ++++ app/crm/model/Customer.php | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/app/common/service/UserService.php b/app/common/service/UserService.php index 3712f20..f3c28d1 100644 --- a/app/common/service/UserService.php +++ b/app/common/service/UserService.php @@ -140,6 +140,10 @@ class UserService foreach ($result as &$data){ $data['customer_count'] = Customer::where('user_id', $data['id'])->count(); + unset($data['password']); + unset($data['open_id']); + unset($data['tenant_key']); + unset($data['union_id']); } return $this->postProcess('List', $result); diff --git a/app/crm/model/Customer.php b/app/crm/model/Customer.php index af5c571..ff0287d 100644 --- a/app/crm/model/Customer.php +++ b/app/crm/model/Customer.php @@ -79,4 +79,31 @@ class Customer extends Model { return $this->belongsTo(User::class, 'user_id', 'id'); } + + protected static function booted() + { + static::saved(function ($customer) { + if (empty($customer->code)) { + $customer->code = self::generateCustomerCode($customer); + // 使用saveQuietly避免递归调用 + $customer->saveQuietly(); + } + }); + } + + public static function generateCustomerCode($customer) + { + // 生成唯一16位code,CM+14位 + $unique = strtoupper(substr(md5($customer->id . microtime(true) . mt_rand(1000, 9999)), 8, 14)); + $code = 'CM' . date('Ymd') .$unique; + return $code; + } + + // 静默保存方法,不触发事件 + public function saveQuietly(array $options = []) + { + return static::withoutEvents(function () use ($options) { + return $this->save($options); + }); + } } \ No newline at end of file From ae189b49d9e06d81a1c03e599fdf05340cd96deb Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 15:56:10 +0800 Subject: [PATCH 16/21] =?UTF-8?q?=E7=BC=96=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/model/CrmCustomer.php | 2 +- app/crm/model/Customer.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/common/model/CrmCustomer.php b/app/common/model/CrmCustomer.php index f050186..bc439db 100644 --- a/app/common/model/CrmCustomer.php +++ b/app/common/model/CrmCustomer.php @@ -61,7 +61,7 @@ class CrmCustomer extends Model public static function generateCustomerCode($customer) { // 生成唯一16位code,CM+14位 - $unique = strtoupper(substr(md5($customer->id . microtime(true) . mt_rand(1000, 9999)), 8, 14)); + $unique = strtoupper(substr(md5($customer->id . microtime(true) . mt_rand(1000, 9999)), 8, 6)); $code = 'CM' . date('Ymd') .$unique; return $code; } diff --git a/app/crm/model/Customer.php b/app/crm/model/Customer.php index ff0287d..326eb72 100644 --- a/app/crm/model/Customer.php +++ b/app/crm/model/Customer.php @@ -94,7 +94,7 @@ class Customer extends Model public static function generateCustomerCode($customer) { // 生成唯一16位code,CM+14位 - $unique = strtoupper(substr(md5($customer->id . microtime(true) . mt_rand(1000, 9999)), 8, 14)); + $unique = strtoupper(substr(md5($customer->id . microtime(true) . mt_rand(1000, 9999)), 8, 6)); $code = 'CM' . date('Ymd') .$unique; return $code; } From aa9c75853ce3cb25126ea3fa9b064fc2a1384ffd Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 16:05:51 +0800 Subject: [PATCH 17/21] =?UTF-8?q?=E5=85=B3=E9=94=AE=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/crm/service/CustomerService.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/crm/service/CustomerService.php b/app/crm/service/CustomerService.php index 2862088..29c84ce 100644 --- a/app/crm/service/CustomerService.php +++ b/app/crm/service/CustomerService.php @@ -88,7 +88,9 @@ class CustomerService if (!Util::isEmpty($keyword)) { $query->where(function ($query) use ($keyword) { $query->where('contacts', 'like', "%{$keyword}%") - ->orWhere('phone', 'like', "%{$keyword}%"); + ->orWhere('phone', 'like', "%{$keyword}%") + ->orWhere('WhatsApp', 'like', "%{$keyword}%") + ->orWhere('code', 'like', "%{$keyword}%"); }); } if (!Util::isEmpty($grade)) { From 1559dc47e7f759b285f780dc565560670d7ea934 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 17:22:03 +0800 Subject: [PATCH 18/21] =?UTF-8?q?=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/UserController.php | 4 +++- app/common/validate/UserValidate.php | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/admin/controller/UserController.php b/app/admin/controller/UserController.php index 75c25d1..9cf7d17 100644 --- a/app/admin/controller/UserController.php +++ b/app/admin/controller/UserController.php @@ -29,8 +29,10 @@ class UserController extends BaseController public function savePassword(Request $request) { try { - $data = $this->validate($this->service->getValidator(), $request->post(), 'password'); $data = $request->all(); + if(empty($data['password'])){ + return $this->error('密码不能为空'); + } $result = $this->service->savePassword($request,$data);; return $this->success($result, '编辑成功'); } catch (\Throwable $e) { diff --git a/app/common/validate/UserValidate.php b/app/common/validate/UserValidate.php index 6330cb5..dcdaa9b 100644 --- a/app/common/validate/UserValidate.php +++ b/app/common/validate/UserValidate.php @@ -56,7 +56,6 @@ class UserValidate extends Validate 'upwd_login' => ['account' => 'require|checkAccount', 'password'], 'feishu_auth' => ['corp_abbr', 'system_code', 'login_type'], 'feishu_login' => ['feishu_code'], - 'password' => ['password'], ]; /** From fa7fdc3787be4628aaf90e0f4b434fabd3521597 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 17:39:34 +0800 Subject: [PATCH 19/21] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/UserController.php | 17 ++++++++++++++++- app/admin/service/UserService.php | 9 +++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/admin/controller/UserController.php b/app/admin/controller/UserController.php index 9cf7d17..5065f54 100644 --- a/app/admin/controller/UserController.php +++ b/app/admin/controller/UserController.php @@ -18,7 +18,22 @@ class UserController extends BaseController { $this->service = new UserService(); } - + /** + * 更新 + * + * @param Request $request 请求对象 + * @return mixed 返回更新成功的数据或信息 + */ + public function update(Request $request) + { + try { + $data = $request->post(); + $res = $this->service->serviceUpdate($request, $data); + return $this->success([], '更新成功'); + } catch (\Throwable $e) { + return $this->error($e->getMessage()); + } + } /** * 修改密码 diff --git a/app/admin/service/UserService.php b/app/admin/service/UserService.php index 1ef1a43..75b47b1 100644 --- a/app/admin/service/UserService.php +++ b/app/admin/service/UserService.php @@ -32,6 +32,15 @@ class UserService return new $this->validator; } + /** 更新 */ + public function serviceUpdateUser(Request $request, array $data = []) + { + $data = $this->preProcess('Update', $data, $request); + $config = $this->buildQueryConfig($request, 'update'); + $updated = $this->logicUpdateBy($config, $data); + return $this->postProcess('Update', $data); + } + /** 更新 */ public function serviceUpdate(Request $request, array $data = []) { From a8ec6889d0aef99533f43741462be60dbb824bb3 Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 17:43:19 +0800 Subject: [PATCH 20/21] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/controller/UserController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/admin/controller/UserController.php b/app/admin/controller/UserController.php index 5065f54..b8eef18 100644 --- a/app/admin/controller/UserController.php +++ b/app/admin/controller/UserController.php @@ -28,7 +28,7 @@ class UserController extends BaseController { try { $data = $request->post(); - $res = $this->service->serviceUpdate($request, $data); + $res = $this->service->serviceUpdateUser($request, $data); return $this->success([], '更新成功'); } catch (\Throwable $e) { return $this->error($e->getMessage()); From b6b7407c39ce530ae8c8656d541f96e967270e8b Mon Sep 17 00:00:00 2001 From: "WIN-C27C5MSVTPO\\16961" <1696136552@qq.com> Date: Thu, 14 Aug 2025 17:46:52 +0800 Subject: [PATCH 21/21] =?UTF-8?q?=E5=A4=84=E7=90=86=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E4=B8=BAnull?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/crmAdmin/service/CustomerService.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/crmAdmin/service/CustomerService.php b/app/crmAdmin/service/CustomerService.php index dc08f0e..e079a03 100644 --- a/app/crmAdmin/service/CustomerService.php +++ b/app/crmAdmin/service/CustomerService.php @@ -127,6 +127,7 @@ class CustomerService if (!$export) { foreach ($customer as &$item) { $item = $this->getCustomer($item); + $item['desc_collect'] = $item['desc_collect'] ?? ''; $item['follow_next'] = empty($item['follow_next'])?'':date('Y-m-d H:i:s', $item['follow_next']); if ($seas == 'seas' || $scene == 'seas') { $item['seas_time'] = time() - strtotime($item['deleted_at']);