1,'level'=>1]) // ->with(['son']) ->withCount(['goods']) ->field('id,name,image,is_show') ->select() ->toArray(); } /** * @notes 城市列表 * @return City[]|array|\think\Collection * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author cjhao * @date 2024/8/19 15:55 */ public function cityLists(){ return City::field('city_id as id,name')->select()->toArray(); } /** * @notes 技能列表 * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException * @author cjhao * @date 2024/8/19 16:34 */ public function skillLists() { return Skill::field('id,name')->select()->toArray(); } /** * @notes 添加服务 * @param $params * @return bool|string * @author ljj * @date 2022/2/9 3:28 下午 */ public function add($params) { // 启动事务 Db::startTrans(); try { $goodsImage = $params['goods_image']; $image = array_shift($params['goods_image']); //添加服务信息 $goods = Goods::create([ 'name' => $params['name'], 'category_id' => $params['category_id'], 'image' => $image, 'price' => $params['price'], 'duration' => $params['duration'], 'scribing_price' => $params['scribing_price'] ?? 0.00, 'status' => $params['status'], 'sort' => $params['sort'] ?? DefaultEnum::SORT, 'tags' => $params['tags'] ?? '', 'content' => $params['content'] ?? '', 'overtime_price' => $params['overtime_price'] ?? '', 'overtime_duration' => $params['overtime_duration'] ?? '', 'commission_ratio' => $params['commission_ratio'] ?? '', 'shop_ratio' => $params['shop_ratio'] ?? '', 'virtual_order_num' => $params['virtual_order_num'] ?? '', 'appoint_start_time' => $params['appoint_start_time'] ?? '', 'appoint_end_time' => $params['appoint_end_time'] ?? '', 'audit_status' => GoodsEnum::AUDIT_STATUS_PASS, 'audit_remark' => '', ]); $goodsImageLists = []; //添加服务轮播图信息 foreach ($goodsImage as $image_uri) { $goodsImageLists[] = [ 'goods_id' => $goods->id, 'uri' => $image_uri, ]; } (new GoodsImage())->saveAll($goodsImageLists); $goodsCityLists = []; $goodsSkillLists = []; foreach ($params['skill_id'] as $skillId) { $goodsSkillLists[] = [ 'goods_id' => $goods->id, 'skill_id' => $skillId ]; } (new GoodsSkillIndex())->saveAll($goodsSkillLists); if($params['city_id']){ foreach ($params['city_id'] as $cityId){ $goodsCityLists[] = [ 'goods_id' => $goods->id, 'city_id' => $cityId ]; } } (new GoodsCityIndex())->saveAll($goodsCityLists); // 提交事务 Db::commit(); return true; } catch (\Exception $e) { // 回滚事务 Db::rollback(); return $e->getMessage(); } } /** * @notes 查看服务详情 * @param $id * @return array * @author ljj * @date 2022/2/9 3:51 下午 */ public function detail($id) { $result = Goods::where('id',$id) ->withoutField('order_num,update_time,delete_time') ->append(['category_desc','goods_image']) ->findOrEmpty() ->toArray(); $goods_image = []; foreach ($result['goods_image'] as &$image) { $goods_image[] = $image['uri']; } $result['goods_image'] = $goods_image; $result['city_id'] = GoodsCityIndex::where(['goods_id'=>$id])->column('city_id'); $result['skill_id'] = GoodsSkillIndex::where(['goods_id'=>$id])->column('skill_id'); if(empty($result['city_id'])){ $result['city_id'] = null; } return $result; } /** * @notes 编辑服务 * @param $params * @return bool|string * @author ljj * @date 2022/2/9 4:06 下午 */ public function edit($params) { // 启动事务 Db::startTrans(); try { $goodsImage = $params['goods_image']; $image = array_shift($params['goods_image']); //更新服务信息 Goods::update([ 'name' => $params['name'], 'category_id' => $params['category_id'], 'image' => $image, 'price' => $params['price'], 'duration' => $params['duration'], 'scribing_price' => $params['scribing_price'] ?? 0.00, 'status' => $params['status'], 'sort' => $params['sort'] ?? DefaultEnum::SORT, 'tags' => $params['tags'] ?? '', 'content' => $params['content'] ?? '', 'overtime_price' => $params['overtime_price'] ?? '', 'overtime_duration' => $params['overtime_duration'] ?? '', 'commission_ratio' => $params['commission_ratio'] ?? '', 'shop_ratio' => $params['shop_ratio'] ?? '', 'virtual_order_num' => $params['virtual_order_num'] ?? '', 'appoint_start_time' => $params['appoint_start_time'] ?? '', 'appoint_end_time' => $params['appoint_end_time'] ?? '', ],['id'=>$params['id']]); $goodsImageLists = []; //删除旧的轮播图 GoodsImage::where('goods_id',$params['id'])->delete(); //添加服务轮播图信息 foreach ($goodsImage as $image_uri) { $goodsImageLists[] = [ 'goods_id' => $params['id'], 'uri' => $image_uri, ]; } (new GoodsImage())->saveAll($goodsImageLists); //删除管理图片,删除管理城市 GoodsSkillIndex::where('goods_id',$params['id'])->delete(); GoodsCityIndex::where('goods_id',$params['id'])->delete(); $goodsCityLists = []; $goodsSkillLists = []; foreach ($params['skill_id'] as $skillId) { $goodsSkillLists[] = [ 'goods_id' => $params['id'], 'skill_id' => $skillId ]; } (new GoodsSkillIndex())->saveAll($goodsSkillLists); if($params['city_id']) { foreach ($params['city_id'] as $cityId) { $goodsCityLists[] = [ 'goods_id' => $params['id'], 'city_id' => $cityId ]; } } (new GoodsCityIndex())->saveAll($goodsCityLists); // 提交事务 Db::commit(); return true; } catch (\Exception $e) { // 回滚事务 Db::rollback(); return $e->getMessage(); } } /** * @notes 删除服务 * @param $ids * @return bool|string * @author ljj * @date 2022/2/9 4:13 下午 */ public function del($ids) { // 启动事务 // Db::startTrans(); try { //删除师傅绑定的服务 // foreach ($ids as $id) { // $staff_lists = Staff::whereRaw("FIND_IN_SET($id,goods_ids)")->select()->toArray(); // foreach ($staff_lists as $list) { // $goods_ids = str_replace(','.$id.',',',',$list['goods_ids']); // if ($goods_ids == ',') { // $goods_ids = ''; // } // Staff::update(['goods_ids'=>$goods_ids],['id'=>$list['id']]); // } // } //删除服务 Goods::destroy($ids); // 提交事务 // Db::commit(); return true; } catch (\Exception $e) { // 回滚事务 // Db::rollback(); return $e->getMessage(); } } /** * @notes 修改服务状态 * @param $params * @return Goods * @author ljj * @date 2022/2/9 4:54 下午 */ public function status($params) { return Goods::update(['status'=>$params['status']],['id'=>$params['ids']]); } }