diff --git a/admin/components.d.ts b/admin/components.d.ts index 8a96f9da..cea83097 100644 --- a/admin/components.d.ts +++ b/admin/components.d.ts @@ -16,14 +16,22 @@ declare module '@vue/runtime-core' { ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] ElButton: typeof import('element-plus/es')['ElButton'] + ElCalendar: typeof import('element-plus/es')['ElCalendar'] ElCard: typeof import('element-plus/es')['ElCard'] + ElCarousel: typeof import('element-plus/es')['ElCarousel'] + ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem'] + ElCascader: typeof import('element-plus/es')['ElCascader'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] ElCol: typeof import('element-plus/es')['ElCol'] + ElCollapse: typeof import('element-plus/es')['ElCollapse'] + ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem'] ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] ElContainer: typeof import('element-plus/es')['ElContainer'] ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] + ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] ElDialog: typeof import('element-plus/es')['ElDialog'] ElDrawer: typeof import('element-plus/es')['ElDrawer'] ElDropdown: typeof import('element-plus/es')['ElDropdown'] @@ -43,15 +51,20 @@ declare module '@vue/runtime-core' { ElMenu: typeof import('element-plus/es')['ElMenu'] ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElOption: typeof import('element-plus/es')['ElOption'] + ElOptionGroup: typeof import('element-plus/es')['ElOptionGroup'] ElPageHeader: typeof import('element-plus/es')['ElPageHeader'] ElPagination: typeof import('element-plus/es')['ElPagination'] ElPopover: typeof import('element-plus/es')['ElPopover'] + ElProgress: typeof import('element-plus/es')['ElProgress'] ElRadio: typeof import('element-plus/es')['ElRadio'] + ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElRate: typeof import('element-plus/es')['ElRate'] ElResult: typeof import('element-plus/es')['ElResult'] ElRow: typeof import('element-plus/es')['ElRow'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSlider: typeof import('element-plus/es')['ElSlider'] ElStatistic: typeof import('element-plus/es')['ElStatistic'] ElStep: typeof import('element-plus/es')['ElStep'] ElSteps: typeof import('element-plus/es')['ElSteps'] @@ -62,6 +75,9 @@ declare module '@vue/runtime-core' { ElTabPane: typeof import('element-plus/es')['ElTabPane'] ElTabs: typeof import('element-plus/es')['ElTabs'] ElTag: typeof import('element-plus/es')['ElTag'] + ElTimeline: typeof import('element-plus/es')['ElTimeline'] + ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] + ElTimePicker: typeof import('element-plus/es')['ElTimePicker'] ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTree: typeof import('element-plus/es')['ElTree'] ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] diff --git a/niucloud/addon/zhjw/app/adminapi/controller/sales/Sales.php b/niucloud/addon/zhjw/app/adminapi/controller/sales/Sales.php index 17a62ef1..5932f576 100644 --- a/niucloud/addon/zhjw/app/adminapi/controller/sales/Sales.php +++ b/niucloud/addon/zhjw/app/adminapi/controller/sales/Sales.php @@ -11,8 +11,11 @@ namespace addon\zhjw\app\adminapi\controller\sales; +use app\model\member\Member; +use app\service\admin\member\MemberService; use core\base\BaseAdminController; use addon\zhjw\app\service\admin\sales\SalesService; +use think\facade\Db; /** @@ -22,30 +25,31 @@ use addon\zhjw\app\service\admin\sales\SalesService; */ class Sales extends BaseAdminController { - /** - * 获取销售管理列表 - * @return \think\Response - */ - public function lists(){ + /** + * 获取销售管理列表 + * @return \think\Response + */ + public function lists() + { $data = $this->request->params([ - ["student_phone",""], - ["student_name",""], - ["sex",""], - ["age",["",""]], - ["school_name",""], - ["grade",""], - ["class_name",""], - ["source_channel",""], - ["customer_source",""], - ["add_staff_id",""], - ["get_staff_id",""], - ["contact_name",""], - ["province_id",""], - ["city_id",""], - ["district_id",""], - ["community_name",""], - ["customer_tags",""], - ["create_time",""] + ["student_phone", ""], + ["student_name", ""], + ["sex", ""], + ["age", ["", ""]], + ["school_name", ""], + ["grade", ""], + ["class_name", ""], + ["source_channel", ""], + ["customer_source", ""], + ["add_staff_id", ""], + ["get_staff_id", ""], + ["contact_name", ""], + ["province_id", ""], + ["city_id", ""], + ["district_id", ""], + ["community_name", ""], + ["customer_tags", ""], + ["create_time", ""] ]); return success((new SalesService())->getPage($data)); } @@ -55,7 +59,8 @@ class Sales extends BaseAdminController * @param int $id * @return \think\Response */ - public function info(int $id){ + public function info(int $id) + { return success((new SalesService())->getInfo($id)); } @@ -63,34 +68,75 @@ class Sales extends BaseAdminController * 添加销售管理 * @return \think\Response */ - public function add(){ + public function add() + { $data = $this->request->params([ - ["student_phone",""], - ["student_name",""], - ["sex",""], - ["age",""], - ["school_name",""], - ["grade",""], - ["class_name",""], - ["source_channel",""], - ["customer_source",""], - ["add_staff_id",0], - ["get_staff_id",0], - ["contact_name",""], - ["province_id",0], - ["city_id",0], - ["district_id",0], - ["community_name",""], - ["customer_tags",[]], + ["student_phone", ""], + ["student_name", ""], + ["sex", ""], + ["age", ""], + ["school_name", ""], + ["grade", ""], + ["class_name", ""], + ["source_channel", ""], + ["customer_source", ""], + ["add_staff_id", 0], + ["get_staff_id", 0], + ["contact_name", ""], + ["province_id", 0], + ["city_id", 0], + ["district_id", 0], + ["community_name", ""], + ["customer_tags", []], + ["full_address", ""], ]); - if(!empty($data['customer_tags'])){ - $data['customer_tags'] = implode(',',$data['customer_tags']); + if (!empty($data['customer_tags'])) { + $data['customer_tags'] = implode(',', $data['customer_tags']); } $this->validate($data, 'addon\zhjw\app\validate\sales\Sales.add'); - $id = (new SalesService())->add($data); + + //查询用户是否注册,注册了提示报错,没注册直接注册账号 + $is_member_id = Member::where('username',$data['student_phone'])->value('member_id'); + if ($is_member_id){ + return fail('手机号已注册'); + } + + //开启事务 + Db::startTrans(); + try { + $id = (new SalesService())->add($data); + $member_data = [ + 'nickname'=> $data['student_name'], + 'mobile'=> $data['student_phone'], + 'member_no'=> '', + 'init_member_no'=> '', + 'password' => substr($data['student_phone'], -4), // 截取手机号最后四位作为密码 + 'headimg'=> '', + 'member_label'=> [],//会员标签 + 'sex'=> $data['sex'], + 'birthday'=> '',//出生日期 + ]; + $member_id = (new MemberService())->add($member_data); + if (!$id || !$member_id){ + Db::rollback(); + return fail('操作失败'); + } + (new SalesService())->edit($id, ['user_id'=>$member_id]); + + Db::commit(); + }catch (\Exception $exception){ + Db::rollback(); + if ($exception->getMessage() == 'MEMBER_IS_EXIST'){ + return fail('账号已存在'); + } + return fail('操作失败'); + } + + + return success('ADD_SUCCESS', ['id' => $id]); } @@ -99,34 +145,71 @@ class Sales extends BaseAdminController * @param $id 销售管理id * @return \think\Response */ - public function edit(int $id){ + public function edit(int $id) + { $data = $this->request->params([ - ["student_phone",""], - ["student_name",""], - ["sex",""], - ["age",""], - ["school_name",""], - ["grade",""], - ["class_name",""], - ["source_channel",""], - ["customer_source",""], - ["add_staff_id",0], - ["get_staff_id",0], - ["contact_name",""], - ["province_id",0], - ["city_id",0], - ["district_id",0], - ["community_name",""], - ["customer_tags",[]], - + ["student_phone", ""], + ["student_name", ""], + ["sex", ""], + ["age", ""], + ["school_name", ""], + ["grade", ""], + ["class_name", ""], + ["source_channel", ""], + ["customer_source", ""], + ["add_staff_id", 0], + ["get_staff_id", 0], + ["contact_name", ""], + ["province_id", 0], + ["city_id", 0], + ["district_id", 0], + ["community_name", ""], + ["customer_tags", []], + ["full_address", ""], ]); - if(!empty($data['customer_tags'])){ - $data['customer_tags'] = implode(',',$data['customer_tags']); + if (!empty($data['customer_tags'])) { + $data['customer_tags'] = implode(',', $data['customer_tags']); } $this->validate($data, 'addon\zhjw\app\validate\sales\Sales.edit'); - (new SalesService())->edit($id, $data); + + + //查询新手机号是否存在,存在提示报错信息 + //修改用户手机号 + //查询用户是否注册,注册了提示报错,没注册直接注册账号 + $info = (new SalesService())->getInfo($id); + if($data['student_phone'] != $info['student_phone']){ + $is_member_id = Member::where('username',$data['student_phone'])->value('member_id'); + if ($is_member_id){ + return fail('手机号已注册'); + } + } + + //开启事务 + Db::startTrans(); + try { + (new SalesService())->edit($id, $data); + + $member_data = [ + 'username'=> $data['student_phone'], + 'mobile'=> $data['student_phone'], + ]; + + if($data['student_phone'] != $info['student_phone']){ + $member_data['password'] = substr($data['student_phone'], -4); // 截取手机号最后四位作为密码 + } + + + $member_id = (new MemberService())->edit($info['user_id'],$member_data); + (new SalesService())->edit($id, ['user_id'=>$member_id]); + + Db::commit(); + }catch (\Exception $exception){ + Db::rollback(); + return fail('操作失败'); + } + return success('EDIT_SUCCESS'); } @@ -135,18 +218,21 @@ class Sales extends BaseAdminController * @param $id 销售管理id * @return \think\Response */ - public function del(int $id){ + public function del(int $id) + { (new SalesService())->del($id); return success('DELETE_SUCCESS'); } - - public function getStaffAll(){ - return success(( new SalesService())->getStaffAll()); + + public function getStaffAll() + { + return success((new SalesService())->getStaffAll()); } - public function getSysAreaAll(){ - return success(( new SalesService())->getSysAreaAll()); + public function getSysAreaAll() + { + return success((new SalesService())->getSysAreaAll()); } } diff --git a/niucloud/addon/zhjw/app/service/admin/sales/SalesService.php b/niucloud/addon/zhjw/app/service/admin/sales/SalesService.php index 44e522c8..2685a679 100644 --- a/niucloud/addon/zhjw/app/service/admin/sales/SalesService.php +++ b/niucloud/addon/zhjw/app/service/admin/sales/SalesService.php @@ -53,7 +53,7 @@ class SalesService extends BaseAdminService */ public function getInfo(int $id) { - $field = 'id,student_phone,student_name,sex,age,school_name,grade,class_name,source_channel,customer_source,add_staff_id,get_staff_id,contact_name,province_id,city_id,district_id,full_address,community_name,customer_tags,create_time,update_time,is_deleted,created_by,created_role,updated_by,updated_role'; + $field = 'id,user_id,student_phone,student_name,sex,age,school_name,grade,class_name,source_channel,customer_source,add_staff_id,get_staff_id,contact_name,province_id,city_id,district_id,full_address,community_name,customer_tags,create_time,update_time,is_deleted,created_by,created_role,updated_by,updated_role'; $info = $this->model->field($field)->where([['id', "=", $id]])->with(['staff', 'staff', 'sysArea', 'sysArea', 'sysArea'])->findOrEmpty()->toArray();