久久精品亚洲人人做人人爽_成人H动漫无码网站久久_樱桃空空人妻无码内射_国产未发育呦交视频_伊人久久精品网站

當(dāng)前位置:首頁> 行業(yè)熱點 >

天天熱門:尚醫(yī)通day01-【項目環(huán)境搭建和醫(yī)院設(shè)置詳細步驟】(內(nèi)附源碼)

時間:2023-06-12 19:31:30    來源:博客園
第01章-項目介紹1、課程介紹項目名稱:尚醫(yī)通預(yù)約掛號統(tǒng)一平臺項目原型:https://www.114yygh.com 北京市預(yù)約掛號統(tǒng)一平臺項目技術(shù)棧:前后端分離后端技術(shù):SpringBoot + SpringCloud + MyBatisPlus + MySQL + MongoDB + Redis + RabbitMQ + Docker + EasyExcel + API遠程接口調(diào)用 + SDK遠程接口調(diào)用 + 對稱加密和非對稱加密 + 數(shù)字簽名和數(shù)字證書 + OAuth2 + 內(nèi)網(wǎng)穿透 + 微信登錄 + 微信支付 + 阿里云OSS服務(wù) + 阿里云市場短信服務(wù) + 定時任務(wù)前端技術(shù):Vue.js + ElementUI + npm + axios + Nuxt.js2、功能簡介

功能模塊:尚醫(yī)通(預(yù)約掛號平臺、管理平臺、接口系統(tǒng))、醫(yī)院系統(tǒng)(接口系統(tǒng))

業(yè)務(wù)流程:

3、尚醫(yī)通技術(shù)架構(gòu)

架構(gòu)設(shè)計需要考慮的幾個方面:


(資料圖片)

可擴展性:系統(tǒng)功能會隨著用戶量的增加以及多變的互聯(lián)網(wǎng)用戶需求不斷地擴展,因此考慮到系統(tǒng)的可擴展性的要求,需要使用微服務(wù)架構(gòu),引入消息中間件。性能:考慮訪問頻率,每個用戶每天的訪問次數(shù)。一般項目初始階段用戶的訪問量可能并不大,如果考慮做運營推廣,可能會迎來服務(wù)器訪問量驟增,因此要考慮分布式部署,引入緩存。安全性: 系統(tǒng)的信息有一定的隱私性,例如用戶的個人身份信息,因此使用賬號密碼管理。另外涉及到身份證照片的上傳,需要有加密和權(quán)限控制功能的文件服務(wù)器。系統(tǒng)涉及第三方微信登錄和微信支付,引入微信登錄接口和支付接口,確保登錄和支付的安全。高可用:系統(tǒng)一旦宕機,將會帶來不可挽回的損失,因此必須做負載均衡,甚至是異地多活這類復(fù)雜的方案。如果數(shù)據(jù)丟失,修復(fù)將會非常麻煩,只能靠人工逐條修復(fù),這個很難接受,因此需要考慮存儲高可靠。我們需要考慮多種異常情況:機器故障、機房故障,針對機器故障,我們需要設(shè)計 MySQL 同機房主備方案;針對機房故障,我們需要設(shè)計 MySQL 跨機房同步方案。為了減輕MySQL服務(wù)器的訪問壓力,我們引入更靈活的MongoDB數(shù)據(jù)庫。成本:互聯(lián)網(wǎng)程序的主要成本在于服務(wù)器成本、流量成本、存儲成本、流媒體研發(fā)成本,中小型公司可以考慮使用云服務(wù)器和云服務(wù)。系統(tǒng)中我們是用了阿里云OSS和阿里云市場短信。第02章-啟動項目工程

整個項目基于一個已經(jīng)開發(fā)好的“通用權(quán)限系統(tǒng)”進行二次開發(fā),因此我們先將“通用權(quán)限系統(tǒng)”搭建并運行起來

1、運行數(shù)據(jù)庫腳本

資料:資料>權(quán)限系統(tǒng)>guigu_common_system.sql

2、安裝redis的docker容器2.1、創(chuàng)建redis掛載目錄
mkdir -p /atguigu/syt/redis/{data,conf}
2.2、復(fù)制配置文件

/atguigu/syt/redis/conf目錄中創(chuàng)建文件 redis.conf,文件從

資料:資料>權(quán)限系統(tǒng)>redis-6.2.7.tar.gz中解壓獲取

修改默認配置(從上至下依次):

#bind 127.0.0.1 #注釋掉這部分,這是限制redis只能本地訪問protected-mode no #默認yes,開啟保護模式,限制為本地訪問daemonize no #默認no,改為yes意為以守護進程方式啟動,可后臺運行,#注意?。?!此處是no,否則redis無法通過配置文件啟動

也可以直接從資料目錄復(fù)制,這里是已經(jīng)修改好的配置文件

資料:資料>權(quán)限系統(tǒng)>redis.conf

2.3、創(chuàng)建redis容器
docker run -d --restart=always --name atguigu_syt_redis \-p 6379:6379 \-v /atguigu/syt/redis/conf/redis.conf:/redis.conf \-v /atguigu/syt/redis/data:/data \redis:6.2.7 \redis-server /redis.conf \--appendonly yes --requirepass "123456"

參數(shù)解釋:

-d 后臺運行-p 端口映射到主機的端口-v 將主機目錄掛載到容器的目錄redis-server --appendonly yes : 在容器執(zhí)行redis-server啟動命令,并打開appendonly持久化配置–requirepass :設(shè)置密碼

常見問題:以下IPv4問題會導(dǎo)致無法遠程鏈接redis服務(wù)

解決方案:

#修改配置文件:vim /usr/lib/sysctl.d/00-system.conf#追加net.ipv4.ip_forward=1#接著重啟網(wǎng)絡(luò)systemctl restart network
2.4、進入redis容器
docker exec -it atguigu_syt_redis redis-cli
2.5、輸入密碼
auth 123456
2.6、測試
set name "xiaogu" 
2.7、遠程連接測試

在本機使用客戶端工具遠程鏈接redis,測試是否能成功連接

3、運行后端項目3.1、啟動后端Java項目

資料:資料>權(quán)限系統(tǒng)>guigu-syt-parent.zip

將壓縮包解壓,并放在自己的工作目錄下,啟動前注意檢查:

配置文件:修改application-dev.yml中MySQL和redis的相關(guān)參數(shù)

idea的Maven配置:配置到自己的Maven配置文件和本地倉庫目錄中

idea中配置的jdk版本:1.8.0_300以上(微信支付安全策略要求)

idea的項目編碼:utf8

MySQL版本:8.0

3.2、測試后端Java項目

訪問Swagger測試頁面:http://localhost:8800/doc.html

執(zhí)行登錄測試,并獲取token:用戶名是admin,密碼是111111

在文檔管理中添加全局參數(shù)token:測試一個后端接口,例如,崗位管理->根據(jù)id獲取數(shù)據(jù),確保請求頭中攜帶了剛剛設(shè)置的token:錄入?yún)?shù),測試功能,確保后端程序成功運行,并可正常使用:4、運行前端項目4.1、啟動前端vue項目

資料:資料>權(quán)限系統(tǒng)>guigu-syt-ui.zip

將壓縮包解壓,并放在自己的工作目錄下,啟動前注意檢查:

node.js版本:v16.16.0

執(zhí)行以下命令啟動項目

npm i #安裝項目依賴模塊npm run dev #運行程序
4.2、測試前端vue項目

訪問前端頁面:http://localhost:9528/

5、項目結(jié)構(gòu)介紹5.1、后端項目
|-guigu-syt-parent:項目父節(jié)點,管理多個子模塊|-common:公共模塊父節(jié)點|-common-log:系統(tǒng)日志|-common-util:通用工具類|-model:實體類|-service-util:微服務(wù)通用配置|-spring-security:用戶認證和授權(quán)|-service:微服務(wù)父節(jié)點|-service-system:認證和授權(quán)管理微服務(wù)

說明:model模塊中的com.atguigu.syt是尚醫(yī)通項目中的實體類

5.2、前端項目

這里列出重要的目錄和文件:

|-node_modules 下載的模塊依賴|-public|-index.html 入口頁面|-src|-api 后端api請求模塊|-assets 公共資源文件|-components 通用組件|-layout 頁面布局|-router 路由配置|-utils 通用工具|-request.js axios封裝|-views 頁面組件|-dashboard 首頁面|-login 登錄頁面|-system 通用權(quán)限頁面|-App.vue 根組件|-main.js 入口js|-settings.js 應(yīng)用基本配置|-package.json 當(dāng)前項目基本信息和依賴信息|-vue.config.js webpack相關(guān)配置
第03章-醫(yī)院設(shè)置微服務(wù)1、需求

當(dāng)醫(yī)院入駐尚醫(yī)通平臺后,尚醫(yī)通管理員會為每個醫(yī)院創(chuàng)建一條醫(yī)院設(shè)置記錄,這里會為每個醫(yī)院分配一個唯一的醫(yī)院編碼,分配一個用于遠程接口調(diào)用的密鑰,并配置每個醫(yī)院的遠程接口主機地址,以及醫(yī)院信息系統(tǒng)的聯(lián)系人、聯(lián)系方式等相關(guān)信息。只有平臺為醫(yī)院添加了醫(yī)院設(shè)置信息,醫(yī)院才可以上傳醫(yī)院基本信息、醫(yī)院預(yù)約規(guī)則信息、醫(yī)院科室信息、醫(yī)院排班信息等內(nèi)容到平臺中。

1.1、醫(yī)院設(shè)置列表1.2、醫(yī)院設(shè)置表單2、創(chuàng)建數(shù)據(jù)庫

資料:資料>醫(yī)院設(shè)置微服務(wù)>guigu_syt_hosp.sql

數(shù)據(jù)庫:guigu_syt_hosp表結(jié)構(gòu):hospital_set
hosname:醫(yī)院名稱hoscode:醫(yī)院編號(平臺分配,全局唯一,api接口必填信息)api_url:醫(yī)院接口調(diào)用的主機地址(如:預(yù)約下單,我們要調(diào)用該地址去醫(yī)院下單)sign_key:雙方api接口調(diào)用的簽名key,由平臺生成contacts_name:醫(yī)院聯(lián)系人姓名contacts_phone:醫(yī)院聯(lián)系人手機status:狀態(tài)(鎖定/解鎖)
3、創(chuàng)建service-hosp模塊

在service下創(chuàng)建子模塊,選擇 maven類型的模塊,輸入模塊名稱service-hosp,完成創(chuàng)建

創(chuàng)建后刪除默認的主類Main.java

4、添加依賴

在service-hosp中添加依賴:

                com.atguigu        model        1.0                    com.atguigu        service-util        1.0                    com.atguigu        spring-security        1.0                    mysql        mysql-connector-java                    org.springframework.boot        spring-boot-starter-test        test    
5、代碼生成器

在service-util中添加代碼生成器:

5.1、添加依賴
    com.baomidou    mybatis-plus-generator    org.apache.velocity    velocity-engine-core    mysql    mysql-connector-java    provided
5.2、編寫代碼生成器

在service-util的test目錄中,創(chuàng)建包com.atguigu.syt,

從資料中復(fù)制代碼生成器

資料:資料>醫(yī)院設(shè)置微服務(wù)>CodeGen.java

確認代碼生成器中變量moduleName的值為hosp,以及數(shù)據(jù)源配置,然后運行程序

然后刪除service-hosp微服務(wù)中的entity包,修改mapper層和service層引入的實體類,并引入model模塊中的實體類

6、創(chuàng)建配置文件

在service-hosp模塊中resources目錄下創(chuàng)建文件

application.yml

spring:  application:    name: service-hosp  profiles:    active: dev,redis

application-dev.yml

server:  port: 8201mybatis-plus:  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl  mapper-locations: classpath:com/atguigu/syt/hosp/mapper/xml/*.xmlspring:  datasource:    driver-class-name: com.mysql.cj.jdbc.Driver    password: 123456    url: jdbc:mysql://localhost:3306/guigu_syt_hosp?characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false    username: root  jackson:    date-format: yyyy-MM-dd HH:mm:ss    time-zone: GMT+8
7、創(chuàng)建SpringBoot啟動類

在包com.atguigu.syt.hosp中創(chuàng)建啟動類ServiceHospApplication.java

package com.atguigu.syt.hosp;@SpringBootApplication@ComponentScan(basePackages = {"com.atguigu"})public class ServiceHospApplication {    public static void main(String[] args) {        SpringApplication.run(ServiceHospApplication.class, args);    }}
8、實現(xiàn)基本CRUD

簡單的功能我們可以直接在controller中實現(xiàn)

8.1、編寫Controller代碼

注意:將@RequestMapping路徑前面添加 /admin前綴

package com.atguigu.syt.hosp.controller.admin;@Api(tags = "醫(yī)院設(shè)置管理")@RestController@RequestMapping("/admin/hosp/hospitalSet")public class AdminHospitalSetController {    @Resource    private HospitalSetService hospitalSetService;    @ApiOperation(value = "根據(jù)id查詢醫(yī)院設(shè)置")    @GetMapping("/getHospSet/{id}")    public Result getById(            @ApiParam(value = "醫(yī)院設(shè)置id",required = true)            @PathVariable Long id){        HospitalSet hospitalSet = hospitalSetService.getById(id);        return Result.ok(hospitalSet);    }    @ApiOperation(value = "根據(jù)id刪除醫(yī)院設(shè)置")    @DeleteMapping("/{id}")    public Result removeById(            @ApiParam(value = "醫(yī)院設(shè)置id",required = true)            @PathVariable Long id){        boolean result = hospitalSetService.removeById(id);        if(result){            return Result.ok().message("刪除成功");        }else{            return Result.fail().message("刪除失敗");        }    }    @ApiOperation(value = "新增醫(yī)院設(shè)置")    @PostMapping("/saveHospSet")    public Result save(            @ApiParam(value = "醫(yī)院設(shè)置對象", required = true)            @RequestBody HospitalSet hospitalSet){        //設(shè)置狀態(tài) 1可用 0鎖定        hospitalSet.setStatus(1);        //生成簽名秘鑰        Random random = new Random();        hospitalSet.setSignKey(MD5.encrypt(System.currentTimeMillis()+""+random.nextInt(1000)));        boolean result = hospitalSetService.save(hospitalSet);        if(result){            return Result.ok().message("添加成功");        }else{            return Result.fail().message("添加失敗");        }    }    @ApiOperation(value = "根據(jù)ID修改醫(yī)院設(shè)置")    @PutMapping("/updateHospSet")    public Result updateById(            @ApiParam(value = "醫(yī)院設(shè)置對象", required = true)            @RequestBody HospitalSet hospitalSet){        boolean result = hospitalSetService.updateById(hospitalSet);        if(result){            return Result.ok().message("修改成功");        }else{            return Result.fail().message("修改失敗");        }    }    @ApiOperation(value = "批量刪除醫(yī)院設(shè)置") //[1,2,3]    @DeleteMapping("/batchRemove")    public Result batchRemoveHospitalSet(            @ApiParam(value = "id列表", required = true)            @RequestBody List idList) {        boolean result = hospitalSetService.removeByIds(idList);        if(result){            return Result.ok().message("刪除成功");        }else{            return Result.fail().message("刪除失敗");        }    }    @ApiOperation(value = "醫(yī)院設(shè)置鎖定和解鎖")    @PutMapping("/lockHospitalSet/{id}/{status}")    public Result lockHospitalSet(            @ApiParam(value = "醫(yī)院設(shè)置id",required = true) @PathVariable Long id,            @ApiParam(value = "狀態(tài)", required = true) @PathVariable Integer status) {        if(status != 0 && status != 1){            return Result.fail().message("非法數(shù)據(jù)");        }        HospitalSet hospitalSet = new HospitalSet();        hospitalSet.setId(id);        hospitalSet.setStatus(status);        boolean result = hospitalSetService.updateById(hospitalSet);        if(result){            return Result.ok().message("操作成功");        }else{            return Result.fail().message("操作失敗");        }    }}
8.2、Swagger測試

注意:先登錄,獲取token,然后設(shè)置全局token

9、分頁和條件查詢

復(fù)雜的功能我們需要添加service層

9.1、Controller

AdminHospitalSetController中添加分頁方法

@ApiOperation("分頁條件查詢")@GetMapping("/{page}/{limit}")public Result pageList(    @ApiParam(value = "頁碼",required = true)    @PathVariable Long page,    @ApiParam(value = "每頁記錄數(shù)",required = true)    @PathVariable Long limit,    @ApiParam(value = "查詢對象",required = false)    HospitalSetQueryVo hospitalSetQueryVo){    Page pageParam = hospitalSetService.selectPage(page, limit, hospitalSetQueryVo);    return Result.ok(pageParam);}
9.2、Service

接口:HospitalSetService

/**     * 分頁查詢     * @param page 頁碼     * @param limit 每頁記錄數(shù)     * @param hospitalSetQueryVo 查詢對象     * @return 分頁對象     */Page selectPage(Long page, Long limit, HospitalSetQueryVo hospitalSetQueryVo);

實現(xiàn):HospitalSetServiceImpl

@Overridepublic Page selectPage(Long page, Long limit, HospitalSetQueryVo hospitalSetQueryVo) {    //分頁參數(shù)    Page pageParam = new Page<>(page, limit);    //查詢參數(shù)    QueryWrapper queryWrapper = new QueryWrapper<>();    String hosname = hospitalSetQueryVo.getHosname();    queryWrapper.like(!StringUtils.isEmpty(hosname),"hosname", hosname);    String hoscode = hospitalSetQueryVo.getHoscode();    queryWrapper.eq(!StringUtils.isEmpty(hoscode), "hoscode", hoscode);    //執(zhí)行查詢    baseMapper.selectPage(pageParam, queryWrapper);    return pageParam;}
第04章-統(tǒng)一日志1、Logback日志

spring boot內(nèi)部使用Logback作為日志實現(xiàn)的框架。

1.1、什么是日志

通過日志查看程序的運行過程,運行信息,異常信息等

統(tǒng)一日志處理的目的:

將日志記錄在文件中,方便運維和開發(fā)做錯誤排查文件日志需要做滾動輸出(輸出到更多的日志文件中),避免單日志體積過大,拖垮服務(wù)器可以方便的在開發(fā)環(huán)境和生產(chǎn)環(huán)境等環(huán)境中切換輸出方式,例如在控制臺和日志文件中靈活輸出1.2、設(shè)置日志級別

日志記錄器(Logger)的行為是分等級的。如下表所示:

從高到低分為:ERROR、WARN、INFO、DEBUG、TRACE

可以在service-hosp的application-dev.yml文件中,通過以下配置設(shè)置日志級別

logging:  level:    root: info
1.3、測試日志的輸出

啟動service-hosp微服務(wù),可以看到微服務(wù)的啟動日志在控制臺上輸出了info級別的內(nèi)容

也可以修改成debug、error等其他級別查看日志輸出情況

1.4、測試日志的打印

在AdminHospitalSetController類上添加注解:

@Slf4j

添加測試方法:

@ApiOperation(value = "日志測試")@GetMapping("/log")public Result log(){    log.trace("getHospSet trace");    log.debug("getHospSet debug");    log.info("getHospSet info");    log.warn("getHospSet warn");    log.error("getHospSet error");    return Result.ok();}

在application-dev.yml文件中修改日志級別,可以看到日志的輸出情況。

2、Logback日志文件

可以創(chuàng)建獨立的日志配置文件,配置更強大的日志功能

2.1、創(chuàng)建Logback日志文件

在service-util的resources目錄 中創(chuàng)建 logback-spring.xml(默認日志文件的名字)

2.2、控制臺日志配置

在logback-spring.xml中配置如下內(nèi)容:

        syt                                                                ${CONSOLE_LOG_PATTERN}            ${charset}                                        

啟動service-hosp,微服務(wù)的啟動信息在控制臺按照CONSOLE_LOG_PATTERN中設(shè)置的格式和顏色輸出,并且輸出的級別由root節(jié)點的level屬性指定

2.3、文件日志配置

控制臺日志只在開發(fā)環(huán)境下使用,生產(chǎn)環(huán)境下我們不使用控制臺日志,而是需要將日志輸出到文件中。

在logback-spring.xml中配置如下內(nèi)容:

        syt                                    true                    ${logging.level}                        ${logging.position}${logging.path}/syt-log.log                            %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n            ${charset}                                                ${logging.position}${logging.path}/syt-log-%d{yyyy-MM-dd}.%i.log                            1MB                                    30                                

在service-hosp的application-dev.yml文件中,通過以下配置設(shè)置日志級別和日志路徑

logging:  level:    root: info  file:    path: hosp

所以控制臺中將只會打印出Spring Boot的bannar之后就啥也不打印了,所有的啟動信息都會被打印在日志文件syt-log.log中。

但是實際上我們不希望業(yè)務(wù)日志中包括這些啟動信息。所以這個時候我們就需要通過logger標簽來搞事情了。將上面的配置文件進行簡單修改:將標簽改為標簽

    
2.4、只打印error的appender

通過如下的方式設(shè)置節(jié)點,可以只打印一個級別的日志在指定的日志文件中,這里設(shè)置只打印error級別:

    true                ERROR        ACCEPT        DENY            ${logging.position}${logging.path}/syt-error-log.log                %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n        ${charset}                            ${logging.position}${logging.path}/syt-error-log-%d{yyyy-MM-dd}.%i.log                    1MB                        30    
2.5、完整的日志配置文件

可以從資料文件夾中復(fù)制完整的日志配置文件到service-util中

資料:資料>醫(yī)院設(shè)置微服務(wù)>logback-spring.xml

文件中添加了節(jié)點,表示應(yīng)用于特定的環(huán)境的日志配置,如下:

                                                

修改service-hosp中的application.yml配置文件如下:則日志輸出在控制臺

spring:  application:    name: service-hosp  profiles:    active: dev,redis

修改service-hosp中的application.yml配置文件如下:則日志輸出在文件中

spring:  application:    name: service-hosp  profiles:    active: prod,redis

在service-system中的application-dev中添加如下配置:

logging:  level:    root: info  file:    path: system

源碼:https://gitee.com/dengyaojava/guigu-syt-parent

標簽:

講解百科 利潤分配為什么增加記在借方

利潤分配增加記在借方原因如下:利潤分配科目屬于權(quán)益類科目,而權(quán)益類科目的貸方核算增加數(shù),借方核算減少數(shù)。利潤分配是借方記減少,貸方

2022-12-18

科普知識 出口貨物的發(fā)票應(yīng)該如何開

出口貨物發(fā)票開具方法如下:1、商業(yè)發(fā)票,是自制發(fā)票,直接打印在A4紙上,每個出口企業(yè)都有自己的發(fā)票格式,商業(yè)發(fā)票包含商品名稱、數(shù)量、單

2022-12-18

知識庫 居委會職責(zé)

1、在政府有關(guān)部門指導(dǎo)下,組織社區(qū)成員進行自治管理,搞好社區(qū)的衛(wèi)生物業(yè),計生,流動人口和治安管理,完成社區(qū)成員代表大會,社區(qū)議事委

2022-12-18

知識大全 七阿姨到底是什么人

七阿姨是屬于抖音上面的一個紅人,根據(jù)資料顯示七阿姨就是娛樂圈內(nèi)的人,她的爸爸是一家娛樂公司的老板,所以因為爸爸的關(guān)系能有很多機會見

2022-12-18

知識領(lǐng)域 怎么學(xué)習(xí)炒股

1、首先要知道自己的策略到底是在短線、中線、長線中,自己是哪一種,只有這樣你才可以集中在是看公司、趨勢還是主力。不同的主線所采取的

2022-12-18

知識探索 微信朋友圈怎么只發(fā)文字

1、步驟:打開微信點擊【發(fā)現(xiàn)】->點擊【朋友圈】->按住右上角的【相機圖標】1秒左右就可以進入發(fā)純文字界面,然后輸入發(fā)布的文字信息點擊發(fā)

2022-12-18

探索百科 推薦幾部一點都不虐的總裁甜文

1、《早安,檢察官嬌妻》,作者:月七兒。2、《杉杉來吃》,作者:顧漫。3、《霸寵甜甜妻》,作者:雪籬笆。4、《首領(lǐng)霸愛:癡戀灰姑娘》,

2022-12-18

百科大全 什么是高等職業(yè)學(xué)院

高等職業(yè)技術(shù)學(xué)院是根椐教育部相關(guān)規(guī)定,從上世紀末起非師范、非醫(yī)學(xué)、非公安類??茖哟稳罩破胀ǜ叩葘W(xué)校逐步規(guī)范校名為"職業(yè)技術(shù)學(xué)院",

2022-12-18

百科全書 廣州哪有寵物市場我想買只寵物狗

1、清平市場 :如果在廣州火車站,可以乘坐開往文化公園、南方大廈方向的公交車,在文化公園或南方大廈下車,然后步行5分鐘即可到達。 如

2022-12-18

知識智庫 海參怎么發(fā)最好

1、把購買回來的干海參,先浸泡,后煮制是發(fā)海參的最佳方法。發(fā)海參是需要準備不帶油的不銹鋼鍋或者陶瓷鍋,把干海參放進去,加入清水浸泡3

2022-12-18

X 關(guān)閉

X 關(guān)閉