$shopId]) ->field('sn,name,mobile,logo,audit_status,audit_remark,money,deposit') ->findOrEmpty()->toArray(); $shop['coach_count'] = Coach::where(['shop_id'=>$shopId])->count(); $shop['shop_goods_count'] = Goods::where(['shop_id'=>$shopId,'audit_status'=>GoodsEnum::AUDIT_STATUS_PASS])->count(); $shop['goods_count'] = ShopGoodsIndex::where(['shop_id'=>$shopId])->count(); $shop['audit_status'] = $shop['audit_status'] ?? 0; $shop['audit_remark'] = $shop['audit_remark'] ?? ''; return $shop; } /** * @notes 获取手机号码 * @param int $shopId * @return array * @author cjhao * @date 2024/11/19 11:34 */ public function info(int $shopId) { $shop = Shop::where(['id'=>$shopId]) ->field('sn,name,mobile,logo,audit_status,audit_remark,money,deposit,create_time') ->findOrEmpty() ->toArray(); return $shop; } /** * @notes 申请 * @param array $params * @return string|true * @author cjhao * @date 2024/10/5 20:26 */ public function apply(array $params) { try { Db::startTrans(); $shop = shop::where(['shop_user_id'=>$params['shop_user_id']]) ->order('id desc') ->findOrEmpty(); if( !$shop->isEmpty() && ShopEnum::AUDIT_STATUS_PASS == $shop->audit_status ){ return '当前账号已经入驻成功,请勿重复申请'; } if( !$shop->isEmpty() && ShopEnum::AUDIT_STATUS_WAIT == $shop->audit_status ){ return '当前账号申请正在审核中,请耐心等待'; } $shopUser = ShopUser::where(['id'=>$params['shop_user_id']])->findOrEmpty(); $shop = Shop::create([ 'name' => $params['name'], 'mobile' => $shopUser['account'], 'shop_user_id' => $params['shop_user_id'], 'sn' => sprintf("%03d", Shop::count()+1), 'short_name' => $params['short_name'], 'type' => $params['type'], 'social_credit_ode' => $params['social_credit_ode'], 'legal_person' => $params['legal_person'], 'legal_id_card' => $params['legal_id_card'], 'province_id' => $params['province_id'], 'city_id' => $params['city_id'], 'region_id' => $params['region_id'], 'shop_address_detail'=> $params['shop_address_detail'], 'longitude' => $params['longitude'], 'latitude' => $params['latitude'], 'id_card_front' => $params['id_card_front'], 'id_card_back' => $params['id_card_back'], 'portrait_shooting' => $params['portrait_shooting'], 'logo' => $params['logo'], 'business_license' => $params['business_license'], 'synopsis' => $params['synopsis'] ?? '', 'audit_status' => ShopEnum::AUDIT_STATUS_WAIT, 'work_status' => $params['work_status'] ?? 0, 'server_status' => $params['server_status'] ?? 1, 'business_start_time' => $params['business_start_time'] ?? '', 'business_end_time' => $params['business_end_time'] ?? '', ]); $categoryLists = []; foreach ($params['category_ids'] as $categoryId){ $categoryLists[] = [ 'shop_id' => $shop['id'], 'category_id' => $categoryId, ]; } (new ShopCategoryIndex())->saveAll($categoryLists); $goodsLists = []; foreach ($params['goods_ids'] as $goodsId) { $goodsLists[] = [ 'shop_id' => $shop['id'], 'goods_id' => $goodsId, ]; } (new ShopGoodsIndex())->saveAll($goodsLists); $shopImageLists = []; $params['shop_image'] = $params['shop_image'] ? : []; foreach ($params['shop_image'] as $image){ $shopImageLists[] = [ 'shop_id' => $shop['id'], 'uri' => $image, ]; } (new ShopImage())->saveAll($shopImageLists); Db::commit(); return true; }catch (Exception $e){ Db::rollback(); return $e->getMessage(); } } /** * @notes 详情接口 * @param int $id * @param int $shopUserId * @return array * @author cjhao * @date 2024/10/5 20:28 */ public function detail($shopUserId) { $detail = Shop::where(['shop_user_id'=>$shopUserId]) ->with(['shop_image']) ->append(['audit_status_desc','region_desc','province_name','city_name','region_name']) ->withoutField('update_time,delete_time') ->order('id desc') ->findOrEmpty() ->toArray(); $categoryLists = ShopCategoryIndex::alias('SC') ->where(['SC.shop_id'=>$detail['id'],'is_show'=>1]) ->join('goods_category GC','SC.category_id = GC.id') ->field('GC.id,GC.name') ->select() ->toArray(); $goodsLists = ShopGoodsIndex::alias('SG') ->where(['SG.shop_id'=>$detail['id'],'G.status'=>1]) ->join('goods G','SG.goods_id = G.id') ->field('G.id,G.name') ->select() ->toArray(); $detail['category_lists'] = $categoryLists; $detail['goods_lists'] = $goodsLists; $detail['goods_ids'] = array_column($goodsLists,'id'); $detail['category_ids'] = array_column($categoryLists,'id'); return $detail; } /** * @notes 更新店铺信息 * @param array $params * @return string|true * @author cjhao * @date 2024/10/6 16:39 */ public function updateInfo(array $params) { try { if(!$params['shop_id']){ throw new Exception('请等待你店铺申请通过后,才能提交资料'); } $shopUpdate = ShopUpdate::where(['shop_id'=>$params['shop_id'],'audit_status'=>CoachEnum::AUDIT_STATUS_WAIT]) ->findOrEmpty(); if(!$shopUpdate->isEmpty()){ throw new Exception('您提交资料正在审核中,请勿重复提交'); } // $mobile = Shop::where(['mobile'=>$params['mobile']])->where('id','<>',$params['shop_id'])->findOrEmpty(); // if(!$mobile->isEmpty()){ // throw new Exception('手机号码已存在'); // } // ShopUpdate::where(['mobile'=>$params['mobile'],'audit_status'=>ShopEnum::AUDIT_STATUS_WAIT])->where('id','<>',$params['shop_id'])->findOrEmpty(); // if(!$mobile->isEmpty()){ // throw new Exception('手机号码已存在'); // } $shopUser = ShopUser::where(['id'=>$params['shop_user_id']])->findOrEmpty(); ShopUpdate::create([ 'name' => $params['name'], 'shop_user_id' => $params['shop_user_id'], 'shop_id' => $params['shop_id'], 'sn' => $params['sn'], 'short_name' => $params['short_name'], 'mobile' => $shopUser['account'], 'business_start_time' => $params['business_start_time'], 'business_end_time' => $params['business_end_time'], 'type' => $params['type'], 'social_credit_ode' => $params['social_credit_ode'], 'legal_person' => $params['legal_person'], 'legal_id_card' => $params['legal_id_card'], // 'shop_adress' => $params['shop_adress'], 'shop_address_detail' => $params['shop_address_detail'], 'province_id' => $params['province_id'], 'city_id' => $params['city_id'], 'region_id' => $params['region_id'], 'longitude' => $params['longitude'], 'latitude' => $params['latitude'], 'id_card_front' => $params['id_card_front'], 'id_card_back' => $params['id_card_back'], 'portrait_shooting' => $params['portrait_shooting'], 'logo' => $params['logo'], 'business_license' => $params['business_license'], 'synopsis' => $params['synopsis'] ?? '', 'category_ids' => $params['category_ids'], 'goods_ids' => $params['goods_ids'], 'shop_image' => $params['shop_image'] ?? [] ]); return true; }catch (Exception $e){ return $e->getMessage(); } } /** * @notes 设置服务时间 * @param array $params * @return string|true * @author cjhao * @date 2024/10/21 00:27 */ public function setServerTime(array $params) { try { $coach = Coach::where(['id'=>$params['id'],'shop_id'=>$params['shop_id']])->findOrEmpty(); if($coach->isEmpty()){ throw new \think\Exception('您无法设置当前技师服务时间'); } Db::startTrans(); $serverTime = []; foreach ($params['server_time'] as $key => $time){ $times = []; foreach ($time['time_lists'] as $timeList){ if(in_array($timeList['time'],$times)){ continue; } $serverTime[] = [ 'coach_id' => $params['id'], 'date' => $time['time_date'], 'time' => $timeList['time'], 'status' => $timeList['status'] ]; $times[] = $timeList['time']; } } CoachServerTime::where(['coach_id'=>$params['id']])->delete(); (new CoachServerTime())->saveAll($serverTime); Db::commit(); return true; } catch (Exception $e) { Db::rollback(); return $e->getMessage(); } } /** * @notes 获取营业时间 * @param int $shopId * @return Shop|array|\think\Model * @author cjhao * @date 2024/10/22 09:32 */ public function getBusiness(int $shopId){ $detail = Shop::where(['id'=>$shopId]) ->field('id,monday,tuesday,wednesday,thursday,friday,saturday,sunday,business_start_time,business_end_time') ->findOrEmpty()->toArray(); $detail['monday'] = 1 == $detail['monday'] ? true : false; $detail['tuesday'] = 1 == $detail['tuesday'] ? true : false; $detail['wednesday'] = 1 == $detail['wednesday'] ? true : false; $detail['thursday'] = 1 == $detail['thursday'] ? true : false; $detail['friday'] = 1 == $detail['friday'] ? true : false; $detail['saturday'] = 1 == $detail['saturday'] ? true : false; $detail['sunday'] = 1 == $detail['sunday'] ? true : false; return $detail; } /** * @notes 设置营业时间 * @param array $params * @return true * @author cjhao * @date 2024/10/22 09:43 */ public function setBusiness(array $params) { $monday = $params['monday'] ?? 0; $tuesday = $params['tuesday'] ?? 0; $wednesday = $params['wednesday'] ?? 0; $thursday = $params['thursday'] ?? 0; $friday = $params['friday'] ?? 0; $saturday = $params['saturday'] ?? 0; $sunday = $params['sunday'] ?? 0; $businessStartTime = $params['business_start_time'] ?? 0; $businessEndTime = $params['business_end_time'] ?? 0; Shop::where(['id'=>$params['shop_id']]) ->update([ 'monday' => $monday, 'tuesday' => $tuesday, 'wednesday' => $wednesday, 'thursday' => $thursday, 'friday' => $friday, 'saturday' => $saturday, 'sunday' => $sunday, 'business_start_time' => $businessStartTime, 'business_end_time' => $businessEndTime, ]); return true; } /** * @notes 获取资料详情 * @param $shopId * @return array * @author cjhao * @date 2024/11/25 11:24 */ public function updateInfoDetail($shopUserId) { $detail = ShopUpdate::where(['shop_user_id'=>$shopUserId]) ->append(['audit_status_desc','region_desc','province_name','city_name','region_name']) ->order('id desc')->findOrEmpty()->toArray(); if(empty($detail)){ $detail = $this->detail($shopUserId); $detail['audit_status'] = ''; $detail['audit_remark'] = ''; $detail['category_ids'] = array_column($detail['category_lists'],'id'); $detail['goods_ids'] = array_column($detail['goods_lists'],'id'); $detail['shop_image'] = array_column($detail['shop_image'],'uri'); } foreach ($detail['goods_ids'] as $key => $val){ $detail['goods_ids'][$key] = intval($val); } foreach ($detail['category_ids'] as $key => $val){ $detail['category_ids'][$key] = intval($val); } return $detail; } /** * @notes 设置服务状态 * @param $params * @return string|true * @author cjhao * @date 2024/12/3 20:49 */ public function setWorkStatus($params) { try { $coach = Coach::where(['id'=>$params['id'],'shop_id'=>$params['shop_id']])->findOrEmpty(); if($coach->isEmpty()){ throw new \think\Exception('您无法设置当前技师服务时间'); } $status = $params['status'] ?? ''; if('' === $status){ throw new \think\Exception('请选择状态'); } $coach->work_status = $status; $coach->save(); return true; } catch (Exception $e) { return $e->getMessage(); } } public function bindMobile($params) { try { $mobile = $params['mobile'] ?? ''; $code = $params['code'] ?? ''; if (empty($mobile) || empty($code)) { throw new \Exception('请输入手机号和验证码'); } $smsDriver = new SmsDriver(); $result = $smsDriver->verify($params['mobile'], $params['code']); if(!$result) { throw new \Exception('验证码错误'); } $user = Shop::where(['mobile'=>$params['mobile']])->where('id','<>',$params['shop_id'])->findOrEmpty(); if(!$user->isEmpty()) { throw new \Exception('该手机号已被其他账号绑定'); } // $user = ShopUpdate::where(['mobile'=>$params['mobile'],'audit_status'=>ShopEnum::AUDIT_STATUS_WAIT])->where('id','<>',$params['shop_id'])->findOrEmpty(); // if(!$user->isEmpty()) { // throw new \Exception('该手机号已被其他账号绑定'); // } unset($params['code']); $coach = Shop::findOrEmpty($params['shop_id'])->toArray(); Shop::update(['mobile'=>$params['mobile'],'id'=>$params['shop_id']]); ShopUser::update(['account'=>$params['mobile'],'id'=>$coach['shop_user_id']]); return true; } catch (\Exception $e) { return $e->getMessage(); } } }