liujie
2026-09-01 445696e2c7dd1f6dc36f7bff7ab426187019b2de
update
37个文件已删除
13个文件已修改
155 ■■■■■ 已修改文件
backend/src/main/resources/application-dev.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
backend/src/main/resources/application.yml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontend/src/api/http.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontend/src/components/AmapMeetingPointMap.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontend/src/utils/amap.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontend/src/views/LoginView.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
frontend/vite.config.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/agreement.Dn1TaZo5.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/auth.sSv-6BNA.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/guide-dialog.C1_h9lTz.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/guide-nav-bar-D9G7jPxG.css 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/guide-nav-bar.CdGXZ8hp.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/guide.D8_p_WZo.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/index-BDUKd0C3.css 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/index-CLuiL-s0.css 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/index-Cnzloz63.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/index-W-5OIi5y.css 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/map.eVpiEFhk.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/message.Cf-63Lua.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/order.55smtjqb.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-agreement-detail-index.D5X-TTXw.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-agreements-index.TsTpF83p.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-certification-index.BUEBPBJW.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-change-phone-new-index.BM-1cnsT.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-change-phone-old-index.DnAU5LJv.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-earnings-index.CIiX_8E2.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-feedback-index.BUUdWWVA.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-login-index.MsaXKcbF.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-meeting-point-index.C3UWuaHX.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-messages-index.aGE04O4A.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-order-detail-index.CS5Pez2t.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-orders-index.DQI49x7y.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-profile-index.BzHcbG-m.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-rating-index.DJ9dC45S.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-receiving-index.BI9ll9bX.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-register-phone-index.CNqB7vh1.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-register-profile-index.BduMZNAo.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-settings-index.BUqNtPvb.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-workbench-index.Bn-hlctg.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/registration.DUS_8LO2.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/router.B6AZNmwg.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/system.97bIT92Y.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/uni-app.es.CVSLwAiy.js 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/assets/uni.9c680c6b.css 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/dist/build/h5/index.html 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/docs/接口文档.md 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_guide_app/utils/request.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/config/api.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/services/profile.js 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/utils/request.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
backend/src/main/resources/application-dev.yml
@@ -3,11 +3,13 @@
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: ${MYSQL_URL:jdbc:mysql://127.0.0.1:3306/tour_guide?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true}
    username: ${MYSQL_USERNAME:root}
    password: ${MYSQL_PASSWORD:123456}
#    password: ${MYSQL_PASSWORD:123456}
    password: ${MYSQL_PASSWORD:Mingdaojingjiang_2026@!.}
  redis:
    host: ${REDIS_HOST:127.0.0.1}
    port: ${REDIS_PORT:6379}
    password: ${REDIS_PASSWORD:123456}
#    password: ${REDIS_PASSWORD:123456}
    password: ${REDIS_PASSWORD:mingdaojingjiang2026@!}
    database: ${REDIS_DATABASE:0}
    timeout: 3s
backend/src/main/resources/application.yml
@@ -73,4 +73,4 @@
  rsa-public-key: ${HUIFU_RSA_PUBLIC_KEY:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgxOuXt1UEdZNPk6sntqiIlcs7e+0fZ3CVgKMV2Qv4ixwKmha5etL5WyIONmjoGEHePHpanYkXvm0kHkbbDkjpyHDFdEshuP1eGx5tRUTISRvXY/iFuD3xyeWSsvvjW6hS29OvqVCPcnBUC7jcRj15dJS2IpYR0iDGNS+/M0TyOFwRQME07At+qO+MSjKu4aRIjlglukjD7YbE2s35uV066nsBUCZUNpGPuju1pieUW4zyoIW6K70dyXCQy61oRI6JmA4JRCOJV1BE80N3GrLI4Pbq1C3ZBTgOPi5RWYNq1hfu807BDkPLc3dJKYt22Ea1jPJsg6e/B9Xbzh6JaUNAQIDAQAB}
  huifu-id: ${HUIFU_ID:6666000212191071}
  upper-huifu-id: ${HUIFU_UPPER_HUIFU_ID:6666000212191071}
  callback-path: ${HUIFU_CALLBACK_PATH:http://221.182.45.100:8011}
  callback-path: ${HUIFU_CALLBACK_PATH:https://www.mingdao123.com/api}
frontend/src/api/http.js
@@ -3,7 +3,7 @@
/** 后台前端只读取 admin_token,避免误带小程序端或导游端 Token。 */
const http = axios.create({
  baseURL: '/api/admin',
  baseURL: 'https://www.mingdao123.com/api/admin',
  timeout: 10000,
})
frontend/src/components/AmapMeetingPointMap.vue
@@ -20,9 +20,13 @@
let AMap
let map
let autoComplete
let placeSearch
let markers = []
let hasFittedPoints = false
let suggestTimer
let suggestionRequestId = 0
let skipNextSuggestion = false
const isMarking = computed(() => Number.isInteger(props.activeIndex))
const hasPosition = (point) => (
@@ -92,6 +96,34 @@
  })
}
const updateSearchCity = () => {
  const city = props.cityName || '全国'
  autoComplete?.setCity(city)
  placeSearch?.setCity(city)
}
const loadSuggestions = (value) => {
  window.clearTimeout(suggestTimer)
  if (skipNextSuggestion) {
    skipNextSuggestion = false
    return
  }
  const query = value.trim()
  const requestId = ++suggestionRequestId
  if (!query || !autoComplete) {
    searchResults.value = []
    return
  }
  suggestTimer = window.setTimeout(() => {
    autoComplete.search(query, (status, result) => {
      if (requestId !== suggestionRequestId || keyword.value.trim() !== query) return
      searchResults.value = status === 'complete' ? (result.tips || []).filter((tip) => tip.name) : []
    })
  }, 300)
}
const searchLocation = () => {
  if (!placeSearch) return
  const value = keyword.value.trim()
@@ -99,9 +131,10 @@
    ElMessage.warning('请输入景区、地址或地标')
    return
  }
  window.clearTimeout(suggestTimer)
  suggestionRequestId += 1
  searching.value = true
  searchResults.value = []
  placeSearch.setCity(props.cityName || '全国')
  placeSearch.search(value, (status, result) => {
    searching.value = false
    if (status !== 'complete' || !result.poiList?.pois?.length) {
@@ -113,9 +146,19 @@
}
const locateSearchResult = (poi) => {
  if (!poi.location) return
  map.setZoomAndCenter(17, poi.location)
  skipNextSuggestion = true
  keyword.value = poi.name
  searchResults.value = []
  if (poi.location) {
    map.setZoomAndCenter(17, poi.location)
    return
  }
  searchLocation()
}
const clearSearch = () => {
  suggestionRequestId += 1
  window.clearTimeout(suggestTimer)
  searchResults.value = []
}
@@ -130,7 +173,9 @@
    })
    map.addControl(new AMap.Scale())
    map.addControl(new AMap.ToolBar({ position: { right: '14px', bottom: '38px' } }))
    autoComplete = new AMap.AutoComplete({ city: props.cityName || '全国', citylimit: Boolean(props.cityName) })
    placeSearch = new AMap.PlaceSearch({ pageSize: 8, pageIndex: 1, extensions: 'base' })
    updateSearchCity()
    map.on('click', handleMapClick)
    refreshMarkers()
    if (!markers.length) moveToCity()
@@ -147,11 +192,14 @@
  focusCurrentPoint()
})
watch(() => props.cityName, () => {
  if (placeSearch) placeSearch.setCity(props.cityName || '全国')
  updateSearchCity()
  moveToCity()
})
watch(keyword, loadSuggestions)
onBeforeUnmount(() => {
  window.clearTimeout(suggestTimer)
  suggestionRequestId += 1
  clearMarkers()
  map?.destroy()
  map = null
@@ -166,13 +214,13 @@
        clearable
        placeholder="搜索景区、地址或地标"
        @keyup.enter="searchLocation"
        @clear="searchResults = []"
        @clear="clearSearch"
      />
      <el-button type="primary" :icon="Search" :loading="searching" :disabled="loading || Boolean(loadError)" @click="searchLocation">搜索</el-button>
      <div v-if="searchResults.length" class="search-results">
        <button v-for="(poi, index) in searchResults" :key="poi.id || `${poi.name}-${index}`" type="button" @click="locateSearchResult(poi)">
          <strong>{{ poi.name }}</strong>
          <span>{{ poi.address || poi.district }}</span>
          <span>{{ [poi.district, poi.address].filter(Boolean).join(' · ') || '暂无详细地址' }}</span>
        </button>
      </div>
    </div>
frontend/src/utils/amap.js
@@ -15,7 +15,7 @@
    loaderPromise = AMapLoader.load({
      key: amapKey,
      version: '2.0',
      plugins: ['AMap.PlaceSearch', 'AMap.Scale', 'AMap.ToolBar'],
      plugins: ['AMap.AutoComplete', 'AMap.PlaceSearch', 'AMap.Scale', 'AMap.ToolBar'],
    })
  }
  return loaderPromise
frontend/src/views/LoginView.vue
@@ -8,7 +8,7 @@
const router = useRouter()
const authStore = useAuthStore()
const loading = ref(false)
const form = reactive({ username: 'admin', password: 'Admin@123456' })
const form = reactive({ username: '', password: '' })
const submit = async () => {
  loading.value = true
frontend/vite.config.js
@@ -15,7 +15,7 @@
    port: 5173,
    proxy: {
      '/api': {
        target: 'http://127.0.0.1:8011',
        target: 'https://www.mingdao123.com/api',
        changeOrigin: true,
      },
    },
mingdaojingjiang_guide_app/dist/build/h5/assets/agreement.Dn1TaZo5.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/auth.sSv-6BNA.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/guide-dialog.C1_h9lTz.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/guide-nav-bar-D9G7jPxG.css
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/guide-nav-bar.CdGXZ8hp.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/guide.D8_p_WZo.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/index-BDUKd0C3.css
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/index-CLuiL-s0.css
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/index-Cnzloz63.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/index-W-5OIi5y.css
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/map.eVpiEFhk.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/message.Cf-63Lua.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/order.55smtjqb.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-agreement-detail-index.D5X-TTXw.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-agreements-index.TsTpF83p.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-certification-index.BUEBPBJW.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-change-phone-new-index.BM-1cnsT.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-change-phone-old-index.DnAU5LJv.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-earnings-index.CIiX_8E2.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-feedback-index.BUUdWWVA.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-login-index.MsaXKcbF.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-meeting-point-index.C3UWuaHX.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-messages-index.aGE04O4A.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-order-detail-index.CS5Pez2t.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-orders-index.DQI49x7y.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-profile-index.BzHcbG-m.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-rating-index.DJ9dC45S.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-receiving-index.BI9ll9bX.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-register-phone-index.CNqB7vh1.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-register-profile-index.BduMZNAo.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-settings-index.BUqNtPvb.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/pages-workbench-index.Bn-hlctg.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/registration.DUS_8LO2.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/router.B6AZNmwg.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/system.97bIT92Y.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/uni-app.es.CVSLwAiy.js
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/assets/uni.9c680c6b.css
File was deleted
mingdaojingjiang_guide_app/dist/build/h5/index.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <link rel="stylesheet" href="/assets/uni.9c680c6b.css">
    <link rel="stylesheet" href="/assets/uni.42d2b68e.css">
    <meta charset="UTF-8" />
    <script>
@@ -14,7 +14,7 @@
    <title>com.mingdao.guide</title>
    <!--preload-links-->
    <!--app-context-->
    <script type="module" crossorigin src="/assets/index-Cnzloz63.js"></script>
    <script type="module" crossorigin src="/assets/index-BZBMaWtC.js"></script>
    <link rel="stylesheet" crossorigin href="/assets/index-C1LkI29h.css">
  </head>
  <body>
mingdaojingjiang_guide_app/docs/接口文档.md
@@ -10,7 +10,7 @@
/api/guide/**
```
前端请求层通过 `VITE_API_BASE_URL` 配置后端地址,默认值为 `http://127.0.0.1:8011/api`。
前端请求层通过 `VITE_API_BASE_URL` 配置后端地址,默认值为 `https://www.mingdao123.com/api`。
### 1.2 响应格式
mingdaojingjiang_guide_app/utils/request.js
@@ -1,6 +1,6 @@
import { GUIDE_LOGIN_KEY } from '../constants/mock'
export const API_BASE_URL = (import.meta.env.VITE_API_BASE_URL || 'http://221.182.45.100:8011/api').replace(/\/$/, '')
export const API_BASE_URL = (import.meta.env.VITE_API_BASE_URL || 'https://www.mingdao123.com/api').replace(/\/$/, '')
const API_ORIGIN = API_BASE_URL.replace(/\/api$/, '')
const LOGIN_PAGE = '/pages/login/index'
let authRedirecting = false
mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/config/api.js
@@ -1 +1,2 @@
export const API_BASE_URL = 'http://221.182.45.100:8011'
export const API_BASE_URL = 'https://www.mingdao123.com/api'
export const API_ORIGIN = API_BASE_URL.replace(/\/api\/?$/, '')
mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/services/profile.js
@@ -1,4 +1,4 @@
import { API_BASE_URL } from '@/config/api'
import { API_ORIGIN } from '@/config/api'
import { apiRequest, apiUploadFile } from '@/utils/request'
export function getCurrentProfile() {
@@ -35,7 +35,7 @@
export function resolveProfileAssetUrl(path) {
  if (!path) return ''
  if (/^https?:\/\//i.test(path)) return path
  return `${API_BASE_URL}${path.startsWith('/') ? path : `/${path}`}`
  return `${API_ORIGIN}${path.startsWith('/') ? path : `/${path}`}`
}
export function maskMobile(mobile) {
mingdaojingjiang_uniapp/mingdaojingjiang_uniapp/utils/request.js
@@ -13,7 +13,8 @@
  if (/^https?:\/\//i.test(url)) {
    return url
  }
  return `${API_BASE_URL}${url.startsWith('/') ? url : `/${url}`}`
  const path = url === '/api' ? '' : url.replace(/^\/api(?=\/|$)/i, '')
  return `${API_BASE_URL}${path.startsWith('/') || !path ? path : `/${path}`}`
}
export function request(options) {