MrShi
2 天以前 0fc9c0d48dccf86855a1210d97649dde38422a92
小程序 | app
已添加23个文件
已删除382个文件
已修改34个文件
已重命名1个文件
15413 ■■■■ 文件已修改
admin/.env 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/public/gtxljz_share.html 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/appversion.js 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaAppversionWindow.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaDriverEditWindow.vue 353 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/appversion.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/driverList.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin/src/main/java/com/doumee/api/business/AppVersionController.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin/src/main/java/com/doumee/api/business/DriverInfoController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/admin/src/main/java/com/doumee/api/business/ShopInfoController.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/db/db_change.sql 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/HashSignUtil.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/XyyConfig.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/AddPrinterRequest.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/AddPrinterRequestItem.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/DelPrinterRequest.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/OrderStatusType.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/PrintRequest.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/PrinterRequest.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/PrinterStatusType.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/PrintersRequest.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/QueryOrderStateRequest.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/QueryOrderStatisRequest.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/RestRequest.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/SetVoiceTypeRequest.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/UpdPrinterRequest.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/dto/VoiceRequest.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/vo/ObjectRestResponse.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/vo/OrderStatisResult.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/config/xyy/vo/PrinterResult.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/core/constants/Constants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/core/utils/xpyun/XpyunPrintService.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/core/utils/xpyun/XpyunResponse.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/AppVersion.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/DriverInfo.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/dto/DriverVerifyRequest.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/dto/PrinterBindDTO.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/dto/ShopPrinterDTO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/vo/DriverCenterVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/vo/OrderDetailVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/vo/ShopWebDetailVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/AppVersionService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/AreasService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/DriverInfoService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/OrdersService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/ShopInfoService.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/AppVersionServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java 99 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/OrdersRefundServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java 151 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/PrintService.java 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/PrinterInfoServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/resources/application-dev.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/resources/application-pro.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/ConfigApi.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/DriverInfoApi.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/ShopInfoApi.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.automator/mp-weixin/.automator.json 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/components/auth-login/auth-login.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/components/custom-tabbar/custom-tabbar.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-search/u-search.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/address/address.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/all-orders/all-orders.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/delivery-order-detail/delivery-order-detail.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/evaluate/evaluate.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/itinerary/itinerary.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/luggage-storage/luggage-storage.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/message/message.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/mine.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/orders/orders.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/payment-success/payment-success.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/rich-text/rich-text.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/select-city/select-city.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/settings/settings.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/storage-order-detail/storage-order-detail.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/storage-point-detail/storage-point-detail.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/storage-point/storage-point.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/store-apply/store-apply.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/common/vendor.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/article-details/article-details.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/change-binding/change-binding.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/change-password/change-password.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/login/login.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/message/message.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/mine/mine.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/order-details/order-details.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/orders/orders.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/qualification/qualification.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/select/select.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/settings/settings.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/store-home/store-home.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/store-info/store-info.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/wallet/wallet.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/webview/webview.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/withdraw-success/withdraw-success.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/withdraw/withdraw.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/write-off-a/write-off-a.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/write-off/write-off.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/app.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/app.json 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/app.wxss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/common/main.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/common/main.wxss 379 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/common/runtime.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/common/vendor.js 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/components/auth-login/auth-login.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/components/auth-login/auth-login.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/components/auth-login/auth-login.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/components/auth-login/auth-login.wxss 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/components/custom-tabbar/custom-tabbar.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/components/custom-tabbar/custom-tabbar.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/components/custom-tabbar/custom-tabbar.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/components/custom-tabbar/custom-tabbar.wxss 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.wxss 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.wxss 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.wxss 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.wxss 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.wxss 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-line/u-line.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-line/u-line.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-line/u-line.wxss 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.wxss 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.wxss 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.wxss 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.wxss 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.wxss 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.wxss 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-search/u-search.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-search/u-search.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-search/u-search.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-search/u-search.wxss 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.wxss 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.wxss 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.wxss 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.wxss 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.wxss 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/address/address.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/address/address.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/address/address.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/address/address.wxss 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/all-orders/all-orders.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/all-orders/all-orders.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/all-orders/all-orders.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/all-orders/all-orders.wxss 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/delivery-order-detail/delivery-order-detail.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/delivery-order-detail/delivery-order-detail.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/delivery-order-detail/delivery-order-detail.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/delivery-order-detail/delivery-order-detail.wxss 493 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/details-entry/details-entry.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/details-entry/details-entry.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/details-entry/details-entry.wxss 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/evaluate/evaluate.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/evaluate/evaluate.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/evaluate/evaluate.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/evaluate/evaluate.wxss 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/index/index.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/index/index.json 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/index/index.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/index/index.wxss 317 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/itinerary/itinerary.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/itinerary/itinerary.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/itinerary/itinerary.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/itinerary/itinerary.wxss 488 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/luggage-storage/luggage-storage.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/luggage-storage/luggage-storage.json 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/luggage-storage/luggage-storage.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/luggage-storage/luggage-storage.wxss 902 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/message/message.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/message/message.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/message/message.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/message/message.wxss 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/mine/mine.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/mine/mine.json 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/mine/mine.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/mine/mine.wxss 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/new-address/new-address.json 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/new-address/new-address.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/new-address/new-address.wxss 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/orders/orders.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/orders/orders.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/orders/orders.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/orders/orders.wxss 332 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/payment-success/payment-success.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/payment-success/payment-success.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/payment-success/payment-success.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/payment-success/payment-success.wxss 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/rich-text/rich-text.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/rich-text/rich-text.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/rich-text/rich-text.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/rich-text/rich-text.wxss 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/select-city/select-city.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/select-city/select-city.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/select-city/select-city.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/select-city/select-city.wxss 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/settings/settings.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/settings/settings.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/settings/settings.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/settings/settings.wxss 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-order-detail/storage-order-detail.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-order-detail/storage-order-detail.json 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-order-detail/storage-order-detail.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-order-detail/storage-order-detail.wxss 403 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point-detail/storage-point-detail.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point-detail/storage-point-detail.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point-detail/storage-point-detail.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point-detail/storage-point-detail.wxss 442 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point/storage-point.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point/storage-point.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point/storage-point.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point/storage-point.wxss 448 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/store-apply/store-apply.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/store-apply/store-apply.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/store-apply/store-apply.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/pages/store-apply/store-apply.wxss 406 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/project.config.json 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/project.private.config.json 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/common/vendor.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/article-details/article-details.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/article-details/article-details.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/article-details/article-details.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/article-details/article-details.wxss 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-binding/change-binding.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-binding/change-binding.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-binding/change-binding.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-binding/change-binding.wxss 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-password/change-password.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-password/change-password.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-password/change-password.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-password/change-password.wxss 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/login/login.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/login/login.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/login/login.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/login/login.wxss 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/message/message.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/message/message.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/message/message.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/message/message.wxss 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/mine/mine.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/mine/mine.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/mine/mine.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/mine/mine.wxss 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/order-details/order-details.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/order-details/order-details.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/order-details/order-details.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/order-details/order-details.wxss 515 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/orders/orders.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/orders/orders.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/orders/orders.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/orders/orders.wxss 422 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/qualification/qualification.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/qualification/qualification.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/qualification/qualification.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/qualification/qualification.wxss 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/select/select.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/select/select.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/select/select.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/select/select.wxss 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/settings/settings.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/settings/settings.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/settings/settings.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/settings/settings.wxss 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-home/store-home.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-home/store-home.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-home/store-home.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-home/store-home.wxss 327 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-info/store-info.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-info/store-info.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-info/store-info.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-info/store-info.wxss 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/wallet/wallet.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/wallet/wallet.json 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/wallet/wallet.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/wallet/wallet.wxss 433 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/webview/webview.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/webview/webview.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/webview/webview.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/webview/webview.wxss 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw-success/withdraw-success.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw-success/withdraw-success.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw-success/withdraw-success.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw-success/withdraw-success.wxss 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw/withdraw.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw/withdraw.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw/withdraw.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw/withdraw.wxss 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off-a/write-off-a.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off-a/write-off-a.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off-a/write-off-a.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off-a/write-off-a.wxss 645 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off/write-off.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off/write-off.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off/write-off.wxml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off/write-off.wxss 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/static/icon/ic_dingdanguanli@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/static/icon/ic_paysuccess@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/static/icon/ic_wodezizhi@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/static/icon/ic_zhuanshuhaibao@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/static/icon/ic_zitihexiao@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/static/images/ic_alipay@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/shop/static/images/ic_saoma@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/address_ic_edit@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ar_jicundian@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ar_map@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ar_open1@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ar_open_sel@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/default2.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/diancan_ic_success@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/dizhi.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/end.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/home1_ic_location@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/home_ic_daizhifu@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/home_ic_location3@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/home_ic_location@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/home_ic_search@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_accept@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_accept_sel@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_address@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_alipay@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_call@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_camera@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_city@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_cppy@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_fail@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_home@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_jia@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_jian@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_list@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_map@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_notice@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_option@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_pass@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_paysuccess@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_renzhengzhong@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_search2@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_shouru@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_store@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_tips@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_tixian@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_tuikuan@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_visible@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_waring@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/mine_ic_daifukuan@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/mine_ic_daishouhuo@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/mine_ic_tuikuan@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_home@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_home_sel@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_ic_back.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_qianbao@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_qianbao_sel@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_wode@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_wode_sel@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_xiaoxi@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_xiaoxi_sel@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_xingcheng@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_xingcheng_sel@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/start.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/icon/xiaoxi_ic_tongzhi3@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/image/bg_card@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/image/bg_home@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/image/btn_upload@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/image/default_nodata_white@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/image/home_ic_jicun@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/image/home_ic_qujian@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/image/logo@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/image/share@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
small-program/unpackage/dist/dev/mp-weixin/static/image/tx@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env
@@ -7,7 +7,7 @@
VUE_APP_ROUTER_MODE = 'hash'
# é¡¹ç›®ä¸Šä¸‹æ–‡è·¯å¾„
VUE_APP_CONTEXT_PATH = './'
VUE_APP_CONTEXT_PATH = '/'
# æŽ¥å£å‰ç¼€
VUE_APP_API_PREFIX = '/nyx_admin'
admin/public/gtxljz_share.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
<html>
    <title> é«˜é“ç«™è¡ŒæŽå¯„存管理系统 </title>
    <body>
        <div id="content">ss</div>
    </body>
</html>
<script type="text/javascript">
    var ifr = document.createElement('iframe');
    ifr.style.display = 'none';
    var flag = getPlatform();
    if (flag == 1) {
        android_download();
    }
    if (flag == 2) {
        ios_download();
    }
    function getPlatform() {
        var result = 0;
        var url = window.location.search;
        if (url.indexOf("?") != -1) {
            result = url.substr(url.indexOf("=") + 1);
        }
        document.getElementById("content").innerHTML=result
        return result;
    }
    /*var ua = navigator.userAgent.split("(")[1].split(")")[0];
    document.getElementById("content").innerHTML=ua
    var brand = "";
    var phone = [/IPHONE/gi, /huawei/gi, /mi/gi, /v1/gi, /OPPO/gi, /vivo/gi, /pcg/gi, /vivo/gi,];
    if (phone[0].test(ua)) {
        brand = "iPhone";
        window.location.href = "https://apps.apple.com/cn/app/xxxxxxxxxx";
    } else if (phone[1].test(ua)) {
        brand = "HUAWEI";
        ifr.src = 'appmarket://details?id=你的应用包名';
    } else if (phone[2].test(ua)) {
        brand = "小米";
        ifr.src = 'mimarket://details?id=你的应用包名';
    } else if (phone[3].test(ua) || phone[5].test(ua) || phone[7].test(ua)) {
        brand = "vivo";
        ifr.src = 'vivomarket://details?id=你的应用包名';
    } else if (phone[4].test(ua) || phone[6].test(ua)) {
        brand = "OPPO";
        ifr.src = 'oppomarket://details?packagename=你的应用包名';
    } else {
        brand = "Android";
        ifr.src = '';
    }*/
    function ios_download() {
        window.location.href = "https://apps.apple.com/cn/app/xxxxxxx";
    }
    function is_weixin() {
        var ua = navigator.userAgent.toLowerCase();
        if (ua.match(/MicroMessenger/i) == "micromessenger") {
            return true;
        } else {
            return false;
        }
    }
    function android_download() {
        if (is_weixin()) {
            ICEICE(".weixin_notice").style.display = "block";
            var url = window.location.href;
            if (url.indexOf("source") <= 0) {
                history.pushState("", "", url + "?source=1");
            }
        } else {
            if (ifr.src.indexOf('hgxx') > -1) {
                document.body.appendChild(ifr);
                setTimeout(function() {
                    if(ifr.src.indexOf('appmarket') > -1){
                        window.location.href = "https://appstore.huawei.com/app/xxxxxxx";
                    } else if(ifr.src.indexOf('mimarket') > -1){
                        window.location.href = "http://app.mi.com/details?id=你的应用包名&ref=search";
                    }else {
                        window.location.href = "https://a.app.qq.com/o/simple.jsp?pkgname=你的应用包名";
                    }
                },1000);
            } else {
                window.location.href = "https://a.app.qq.com/o/simple.jsp?pkgname=你的应用包名";
            }
        }
    }
</script>
admin/src/api/business/appversion.js
admin/src/components/business/OperaAppversionWindow.vue
@@ -7,11 +7,14 @@
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="版本名称" prop="versionNum">
        <el-input v-model="form.title"  placeholder="请输入版本名称" v-trim/>
      </el-form-item>
      <el-form-item label="版本号" prop="versionNum">
        <el-input v-model="form.versionNum" type="number" placeholder="请输入版本号" v-trim/>
      </el-form-item>
      <el-form-item label="版本名称" prop="versionInfo">
        <el-input v-model="form.versionInfo" placeholder="请输入版本号" v-trim/>
      <el-form-item label="版本号显示名称" prop="versionInfo">
        <el-input v-model="form.versionInfo" placeholder="版本号显示名称" v-trim/>
      </el-form-item>
      <el-form-item label="安装包" prop="fileUrl">
        <div style="width: 100%; height: 1px;"></div>
@@ -50,15 +53,16 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaJkVersionWindow',
  name: 'OperaAppversionWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload',
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/business/appVersion/uploadFile',
      // è¡¨å•数据
      form: {
        id: null,
        title: '',
        versionInfo: '',
        fileUrl: '',
        content: '',
@@ -69,11 +73,14 @@
      },
      // éªŒè¯è§„则
      rules: {
        title: [
          { required: true, message: '请输入版本名称', trigger: 'blur' }
        ],
        versionNum: [
          { required: true, message: '请输入版本号', trigger: 'blur' }
        ],
        versionInfo: [
          { required: true, message: '请输入版本名称', trigger: 'blur' }
          { required: true, message: '请输入版本号显示名称', trigger: 'blur' }
        ],
        fileUrl: [
          { required: true, message: '请上传安装包', trigger: 'blur' }
admin/src/components/business/OperaDriverEditWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,353 @@
<template>
  <GlobalWindow
      :title="title"
      :visible.sync="visible"
      width="900px"
      :withFooter="false"
  >
    <div class="driver-approval">
      <div class="section">
        <div class="section-header">
          <span class="section-title">司机信息</span>
          <div class="approval-status">
            <el-tag v-if="detailInfo.auditStatus === 0" type="warning" class="status-tag">待审核</el-tag>
          </div>
        </div>
        <div class="info-grid">
          <div class="info-item">
            <span class="label">司机姓名:</span>
            <span class="value">{{ detailInfo.name || '-' }}</span>
          </div>
          <div class="info-item">
            <span class="label">授权手机号:</span>
            <span class="value">{{ detailInfo.telephone || '-' }}</span>
          </div>
          <div class="info-item">
            <span class="label">身份证号:</span>
            <span class="value">{{ detailInfo.idcard || '-' }}</span>
          </div>
          <div class="info-item">
            <span class="label">婚姻情况:</span>
            <span class="value" v-if="detailInfo.maritalStatus === 3">丧偶</span>
            <span class="value" v-else-if="detailInfo.maritalStatus === 2">离异</span>
            <span class="value" v-else-if="detailInfo.maritalStatus === 1">已婚</span>
            <span class="value" v-else-if="detailInfo.maritalStatus === 0">未婚</span>
            <span class="value" v-else>-</span>
          </div>
          <div class="info-item">
            <span class="label">性别:</span>
            <span class="value">{{ detailInfo.gender === 1 ? '男' : detailInfo.gender === 2 ? '女' : '-' }}</span>
          </div>
          <div class="info-item">
            <span class="label">现居住地址:</span>
            <span class="value">{{ detailInfo.livePlace || '-' }}</span>
          </div>
          <div class="info-item"  v-if="detailInfo.auditStatus === 3 || detailInfo.auditStatus === 1" >
            <span class="label">评级:</span>
            <span class="value" v-if="detailInfo.driverLevel ==5">S</span>
            <span class="value" v-else-if="detailInfo.driverLevel ==4">A</span>
            <span class="value" v-else-if="detailInfo.driverLevel ==3">B</span>
            <span class="value" v-else-if="detailInfo.driverLevel ==2">C</span>
            <span class="value" v-else-if="detailInfo.driverLevel ==1">D</span>
            <span class="value" v-else>-</span>
          </div>
          <div class="info-item">
            <span class="label">状态:</span>
            <span class="value">{{ detailInfo.status === 0 ? '启用' : '禁用' }}</span>
          </div>
        </div>
      </div>
      <div class="section">
        <div class="section-header">
          <span class="section-title">车辆信息</span>
        </div>
        <div class="info-grid">
          <div class="info-item">
            <span class="label">车牌号:</span>
            <span class="value">{{ detailInfo.carCode || '-' }}</span>
          </div>
          <div class="info-item">
            <span class="label">车辆类型:</span>
            <span class="value">{{ detailInfo.carTypeName || '-' }}</span>
          </div>
          <div class="info-item">
            <span class="label">车辆颜色:</span>
            <span class="value">{{ detailInfo.carColor || '-' }}</span>
          </div>
          <div class="info-item">
            <span class="label">驾驶证有效期:</span>
            <span class="value">{{ detailInfo.cardStartDate || '-' }} è‡³ {{ detailInfo.cardEndDate || '-' }}</span>
          </div>
        </div>
      </div>
      <div class="section">
        <div class="section-header">
          <span class="section-title">附件材料</span>
        </div>
        <div class="info-grid">
          <div class="info-item">
            <span class="label">身份证正面:</span>
            <el-image
                v-if="detailInfo.idcardImg"
                style="width: 80px; height: 80px"
                :src="detailInfo.imgPrefix + detailInfo.idcardImg"
                :preview-src-list="[detailInfo.imgPrefix + detailInfo.idcardImg]"
                fit="cover"
            ></el-image>
            <span v-else>-</span>
          </div>
          <div class="info-item">
            <span class="label">身份证反面:</span>
            <el-image
                v-if="detailInfo.idcardImgBack"
                style="width: 80px; height: 80px"
                :src="detailInfo.imgPrefix + detailInfo.idcardImgBack"
                :preview-src-list="[detailInfo.imgPrefix + detailInfo.idcardImgBack]"
                fit="cover"
            ></el-image>
            <span v-else>-</span>
          </div>
          <div class="info-item full-width">
            <span class="label">车辆照片:</span>
            <span v-if="!detailInfo.carImgList">-</span>
            <div v-else class="image-list">
              <el-image
                  v-for="(img, index) in detailInfo.carImgList"
                  :key="index"
                  style="width: 80px; height: 80px; margin-right: 10px"
                  :src="img.fileurlFull"
                  :preview-src-list="detailInfo.carImgList.map(item => item.fileurlFull)"
                  fit="cover"
              ></el-image>
            </div>
          </div>
          <div class="info-item full-width">
            <span class="label">驾驶证照片:</span>
            <span v-if="!detailInfo.licenseImgList">-</span>
            <div v-else class="image-list">
              <el-image
                  v-for="(img, index) in detailInfo.licenseImgList"
                  :key="index"
                  style="width: 80px; height: 80px; margin-right: 10px"
                  :src="img.fileurlFull"
                  :preview-src-list="detailInfo.licenseImgList.map(item => item.fileurlFull)"
                  fit="cover"
              ></el-image>
            </div>
          </div>
          <div class="info-item full-width">
            <span class="label">其它材料:</span>
            <span v-if="!detailInfo.otherImgList">-</span>
            <div v-else class="image-list">
              <el-image
                  v-for="(img, index) in detailInfo.otherImgList"
                  :key="index"
                  style="width: 80px; height: 80px; margin-right: 10px"
                  :src="img.fileurlFull"
                  :preview-src-list="detailInfo.otherImgList.map(item => item.fileurlFull)"
                  fit="cover"
              ></el-image>
            </div>
          </div>
        </div>
      </div>
      <div class="approval-form" v-if="detailInfo.auditStatus === 0" >
        <el-form ref="approvalForm" :model="approvalForm" :rules="approvalForm.auditStatus ===0?approvalRules:approvalRules1">
          <el-form-item label="审批结果" prop="auditStatus">
            <el-radio-group v-model="approvalForm.auditStatus" @change="changeRadio">
              <el-radio :label="0">通过</el-radio>
              <el-radio :label="1">拒绝</el-radio>
            </el-radio-group>
          </el-form-item>
          <el-form-item label="司机评级" prop="driverLevel" v-if="approvalForm.auditStatus ===0">
            <el-select v-model="approvalForm.driverLevel" placeholder="请选择司机评级" style="width: 300px">
              <el-option label="S" :value="5"></el-option>
              <el-option label="A" :value="4"></el-option>
              <el-option label="B" :value="3"></el-option>
              <el-option label="C" :value="2"></el-option>
              <el-option label="D" :value="1"></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="审批意见" prop="auditRemark"  >
            <el-input
                type="textarea"
                v-model="approvalForm.auditRemark"
                placeholder="请输入审批意见"
                :rows="3"
                style="width: 400px"
            ></el-input>
          </el-form-item>
        </el-form>
        <div class="approval-buttons">
          <el-button @click="close">取消</el-button>
          <el-button type="primary" @click="handleConfirm" :loading="isWorking">确定</el-button>
        </div>
      </div>
    </div>
  </GlobalWindow>
</template>
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import { getById, audit } from '@/api/business/driver'
export default {
  name: 'OperaDriverApproval',
  components: { GlobalWindow },
  data () {
    return {
      title: '司机审核',
      visible: false,
      isWorking: false,
      detailInfo: {},
      approvalForm: {
        id: null,
        auditStatus: 0,
        driverLevel: '',
        auditRemark: ''
      },
      approvalRules: {
        auditStatus: [{ required: true, message: '请选择审批结果', trigger: 'change' }],
        driverLevel: [{ required: true, message: '请选择司机评级', trigger: 'change' }]
      },
      approvalRules1: {
        auditStatus: [{ required: true, message: '请选择审批结果', trigger: 'change' }],
        auditRemark: [{ required: true, message: '请输入审批意见', trigger: 'blur' }]
      }
    }
  },
  methods: {
    changeRadio(){
      this.$refs.approvalForm.clearValidate()
    },
    open (title, row) {
      this.title = title
      this.approvalForm = {
        id: row.id,
        auditStatus: 0,
        driverLevel: '',
        auditRemark: ''
      }
      this.$nextTick(() => {
        this.$refs.approvalForm && this.$refs.approvalForm.clearValidate()
      })
      getById(row.id).then(res => {
        this.detailInfo = res
        this.visible = true
      }).catch(e => {
        this.$tip.apiFailed(e)
      })
    },
    close () {
      this.visible = false
    },
    handleConfirm () {
      this.$refs.approvalForm.validate(valid => {
        if (!valid) return
        if (this.approvalForm.status === 2 && !this.approvalForm.remark) {
          this.$message.warning('请输入审批意见')
          return
        }
        this.isWorking = true
        audit({
          id: this.approvalForm.id,
          auditStatus: this.approvalForm.auditStatus,
          driverLevel: this.approvalForm.driverLevel,
          auditRemark: this.approvalForm.auditRemark
        }).then(res => {
          this.$tip.apiSuccess(res || '审核成功')
          this.$emit('success', this.approvalForm)
          this.visible = false
        }).catch(e => {
          this.$tip.apiFailed(e)
        }).finally(() => {
          this.isWorking = false
        })
      })
    }
  }
}
</script>
<style scoped>
.driver-approval {
}
.section {
  margin-bottom: 25px;
}
.checkinfo {
  align-items:start   !important;
  display: flex !important;
  flex-direction: column   !important;
  background-color: rgb(254 242 242);
  min-height: 100px;
  margin-bottom: 30px;
  padding: 20px;
}
.section-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 15px;
  flex-wrap: wrap;
}
.section-title {
  font-size: 16px;
  font-weight: bold;
  color: #303133;
  padding-left: 10px;
  border-left: 4px solid #2E68EC;
}
.approval-status {
  margin-left: auto;
}
.status-tag {
  font-size: 14px;
  padding: 4px 12px;
}
.info-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 15px;
  padding: 0 10px;
}
.info-item {
  display: flex;
  font-size: 14px;
}
.info-item.full-width {
  grid-column: span 2;
}
.info-item .label {
  color: #909399;
  min-width: 110px;
}
.info-item .value {
  color: #606266;
  word-break: break-all;
}
.image-list {
  display: flex;
  flex-wrap: wrap;
}
.approval-form {
  padding: 20px;
  background: #f5f7fa;
  border-top: 1px solid #eee;
}
.approval-form /deep/ .el-form-item {
  margin-bottom: 15px;
}
.approval-form /deep/ .el-form-item:last-child {
  margin-bottom: 0;
}
.approval-buttons {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 15px;
}
</style>
admin/src/views/business/appversion.vue
@@ -1,5 +1,5 @@
<template>
  <TableLayout :permissions="['business:appversion:query']">
  <TableLayout :permissions="['business:appVersion:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="版本号" prop="versionInfo">
@@ -19,8 +19,8 @@
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:appversion:create', 'business:appversion:delete']">
        <li><el-button type="primary" @click="$refs.operaAppversionWindow.open('新建版本')" icon="el-icon-plus" v-permissions="['business:appversion:create']">新建</el-button></li>
      <ul class="toolbar" v-permissions="['business:appVersion:create', 'business:appVersion:delete']">
        <li><el-button type="primary" @click="$refs.operaAppversionWindow.open('新建版本')" icon="el-icon-plus" v-permissions="['business:appVersion:create']">新建</el-button></li>
      </ul>
      <el-table
        :height="tableHeightNew"
@@ -28,8 +28,9 @@
        :data="tableData.list"
        stripe
      >
        <el-table-column prop="title" label="版本名称" min-width="100px"></el-table-column>
        <el-table-column prop="versionNum" label="版本号" min-width="100px"></el-table-column>
        <el-table-column prop="versionInfo" label="版本名称" min-width="100px"></el-table-column>
        <el-table-column prop="versionInfo" label="版本号显示名称" min-width="100px"></el-table-column>
        <el-table-column label="平台类型" min-width="100px">
          <template slot-scope="{row}">
            <span v-if="row.type === 0">Android</span>
@@ -49,17 +50,16 @@
            <span v-if="row.isForce === 1">是</span>
          </template>
        </el-table-column>
        <el-table-column prop="createUserName" label="创建者" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="updateTime" label="最近更新时间" min-width="150px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:appversion:update', 'business:appversion:delete'])"
          v-if="containPermissions(['business:appVersion:update', 'business:appVersion:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaAppversionWindow.open('编辑版本', row)" icon="el-icon-edit" v-permissions="['business:appversion:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:appversion:delete']">删除</el-button>
            <el-button type="text" @click="$refs.operaAppversionWindow.open('编辑版本', row)" icon="el-icon-edit" v-permissions="['business:appVersion:update']">编辑</el-button>
            <el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:appVersion:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -81,7 +81,7 @@
import Pagination from '@/components/common/Pagination'
import OperaAppversionWindow from '@/components/business/OperaAppversionWindow'
export default {
  name: 'JkVersion',
  name: 'appversion',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaAppversionWindow },
  data () {
admin/src/views/business/driverList.vue
@@ -61,7 +61,8 @@
        </el-table-column>
        <el-table-column label="操作" min-width="100" fixed="right">
          <template slot-scope="{row}">
            <el-button type="text"   @click="handleDetail(row)">详情</el-button>
            <el-button type="text" @click="handleEdit(row)">编辑</el-button>
            <el-button type="text"   @click="handleDetail(row)">司机详情</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -72,6 +73,7 @@
      ></pagination>
    </template>
    <OperaDriverDetail ref="operaDriverDetail" />
    <OperaDriverEditWindow ref="operaDriverEditWindow" @success="handlePageChange" />
  </TableLayout>
</template>
@@ -80,12 +82,13 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaDriverDetail from '@/components/business/OperaDriverDetail'
import OperaDriverEditWindow from '@/components/business/OperaDriverEditWindow'
import { updateStatus, exportExcel } from '@/api/business/driver'
export default {
  name: 'DriverList',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaDriverDetail },
  components: { TableLayout, Pagination, OperaDriverDetail, OperaDriverEditWindow },
  data () {
    return {
      searchForm: {
@@ -108,6 +111,9 @@
    this.search()
  },
  methods: {
    handleEdit (row) {
      this.$refs.operaDriverEditWindow.open('编辑门店', row)
    },
    handleDateChange (val) {
      this.searchForm.startTime = val ? val[0] : ''
      this.searchForm.endTime = val ? val[1] : ''
server/admin/src/main/java/com/doumee/api/business/AppVersionController.java
@@ -14,11 +14,14 @@
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.io.PrintWriter;
import java.util.*;
/**
 * APP版本管理
@@ -100,4 +103,44 @@
        return ApiResponse.success(appVersionService.findById(id));
    }
    @ApiOperation("上传APP文件")
    @PostMapping(value = "/uploadFile", headers = "content-type=multipart/form-data")
    public void uploadFile(HttpServletRequest request, HttpServletResponse response) throws Exception {
        Map<String, Object> context = new HashMap<>();
        try {
            CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
            if (multipartResolver.isMultipart(request)) {
                MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
                Iterator<String> it = multipartRequest.getFileNames();
                while (it.hasNext()) {
                    MultipartFile file = multipartRequest.getFile(it.next());
                    if (file != null && !file.isEmpty()) {
                        Map<String, Object> data = appVersionService.uploadFile(file);
                        context.put("success", true);
                        context.put("code", 200);
                        context.put("errno", 0);
                        context.put("data", data);
                        context.put("message", "请求成功");
                        response.setCharacterEncoding("UTF-8");
                        response.setContentType("application/json");
                        PrintWriter out = response.getWriter();
                        out.print(com.alibaba.fastjson.JSONObject.toJSONString(context));
                        out.flush();
                        out.close();
                        return;
                    }
                }
            }
        } catch (Exception e) {
            context.put("code", 0);
            context.put("message", "上传失败");
        }
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/json");
        PrintWriter out = response.getWriter();
        out.print(com.alibaba.fastjson.JSONObject.toJSONString(context));
        out.flush();
        out.close();
    }
}
server/admin/src/main/java/com/doumee/api/business/DriverInfoController.java
@@ -9,6 +9,7 @@
import com.doumee.dao.business.model.DriverInfo;
import com.doumee.dao.dto.AuditDTO;
import com.doumee.dao.dto.ChangeStatusDTO;
import com.doumee.dao.dto.DriverVerifyRequest;
import com.doumee.service.business.DriverInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -99,6 +100,13 @@
        return ApiResponse.success(driverInfoService.getDetail(id));
    }
    @ApiOperation("修改司机注册信息")
    @PostMapping("/updateDriverInfo")
    @RequiresPermissions("business:driverInfo:update")
    public ApiResponse updateDriverInfo(@RequestBody DriverVerifyRequest request) {
        return ApiResponse.success(driverInfoService.updateDriverInfo(request));
    }
    @ApiOperation("审批司机实名认证")
    @PostMapping("/audit")
    @RequiresPermissions("business:driverInfo:update")
server/admin/src/main/java/com/doumee/api/business/ShopInfoController.java
@@ -9,8 +9,8 @@
import com.doumee.dao.business.model.ShopInfo;
import com.doumee.dao.dto.AuditDTO;
import com.doumee.dao.dto.ChangeStatusDTO;
import com.doumee.dao.dto.PrinterBindDTO;
import com.doumee.dao.dto.ResetPasswordDTO;
import com.doumee.dao.dto.ShopPrinterDTO;
import com.doumee.dao.dto.ShopUpdateDTO;
import com.doumee.dao.vo.ShopDetailVO;
import com.doumee.service.business.ShopInfoService;
@@ -136,27 +136,12 @@
        return ApiResponse.success("修改成功");
    }
    @ApiOperation("绑定打印机")
    @PostMapping("/bindPrinter")
    @ApiOperation("维护门店打印机SN")
    @PostMapping("/maintainPrinter")
    @RequiresPermissions("business:shopInfo:update")
    public ApiResponse bindPrinter(@RequestBody @javax.validation.Valid PrinterBindDTO dto) {
        shopInfoService.bindPrinter(dto);
        return ApiResponse.success("绑定成功");
    }
    @ApiOperation("解绑打印机")
    @PostMapping("/unbindPrinter/{shopId}")
    @RequiresPermissions("business:shopInfo:update")
    public ApiResponse unbindPrinter(@PathVariable Integer shopId) {
        shopInfoService.unbindPrinter(shopId);
        return ApiResponse.success("解绑成功");
    }
    @ApiOperation("查询打印机状态")
    @GetMapping("/printerStatus/{shopId}")
    @RequiresPermissions("business:shopInfo:query")
    public ApiResponse queryPrinterStatus(@PathVariable Integer shopId) {
        return ApiResponse.success(shopInfoService.queryPrinterStatus(shopId));
    public ApiResponse maintainPrinter(@RequestBody ShopPrinterDTO dto) {
        shopInfoService.maintainPrinterSn(dto);
        return ApiResponse.success("操作成功");
    }
}
server/services/db/db_change.sql
@@ -5,9 +5,10 @@
-- ============================================================
-- 2026/04/28 APP版本文件路径字典
-- 2026/04/30 APP版本文件上传字典配置
-- ============================================================
INSERT INTO `system_dict_data` (`DICT_ID`, `CODE`, `LABEL`, `REMARK`, `SORT`, `DISABLED`, `CREATE_USER`, `CREATE_TIME`, `DELETED`) VALUES ((SELECT `id` FROM `system_dict` WHERE `code` = 'OSS'), '', 'APP_FILES', 'APP版本文件路径', 0, 0, 1, NOW(), 0);
INSERT INTO `system_dict_data` (`DICT_ID`, `CODE`, `LABEL`, `REMARK`, `SORT`, `DISABLED`, `CREATE_USER`, `CREATE_TIME`, `DELETED`) VALUES ((SELECT `id` FROM `system_dict` WHERE `code` = 'OSS'), '', 'APP_FILES', 'APP版本文件存储路径', 0, 0, 1, NOW(), 0);
INSERT INTO `system_dict_data` (`DICT_ID`, `CODE`, `LABEL`, `REMARK`, `SORT`, `DISABLED`, `CREATE_USER`, `CREATE_TIME`, `DELETED`) VALUES ((SELECT `id` FROM `system_dict` WHERE `code` = 'OSS'), '', 'APP_FILES_URL', 'APP版本文件访问路径前缀', 0, 0, 1, NOW(), 0);
-- ============================================================
@@ -20,15 +21,14 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `MODULE`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:printerInfo:query', '查询打印机', '打印机信息', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
-- ============================================================
-- 2026/04/28 èŠ¯çƒ¨äº‘æ‰“å°æœºé›†æˆï¼šé—¨åº—è¡¨å¢žåŠ æ‰“å°æœºSN字段
-- 2026/04/29 å¸æœºè¡¨å¢žåŠ æžå…‰æŽ¨é€åˆ«åå­—æ®µ
-- ============================================================
ALTER TABLE `shop_info` ADD COLUMN `PRINTER_SN` VARCHAR(64) DEFAULT NULL COMMENT '芯烨云打印机SN编号' AFTER `BUSINESS_TYPE`;
ALTER TABLE `driver_info` ADD COLUMN `JPUSH_ALIAS` VARCHAR(64) DEFAULT NULL COMMENT '极光推送别名' AFTER `AUDIT_REMARK`;
-- ============================================================
-- 2026/04/28 èŠ¯çƒ¨äº‘æ‰“å°æœºé…ç½®å­—å…¸ï¼ˆè´¦å·ä¿¡æ¯åŽç»­æ‰‹åŠ¨ç»´æŠ¤CODE值)
-- 2026/04/28 èŠ¯çƒ¨äº‘æ‰“å°æœºé…ç½®å­—å…¸
-- ============================================================
INSERT INTO `system_dict` (`id`, `code`, `name`, `disabled`, `deleted`) VALUES (106, 'XPYUN_CONFIG', '芯烨云配置', 0, 0);
INSERT INTO `system_dict_data` (`DICT_ID`, `CODE`, `LABEL`, `REMARK`, `SORT`, `DISABLED`, `CREATE_USER`, `CREATE_TIME`, `DELETED`) VALUES (106, '', 'XPYUN_USER', '芯烨云开发者ID', 0, 0, 1, NOW(), 0);
server/services/src/main/java/com/doumee/config/xyy/HashSignUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
package com.doumee.config.xyy;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Formatter;
/**
 * å“ˆç¨€ç­¾åå·¥å…·ç±»
 *
 * @author RabyGao
 * @date Aug 9, 2019
 */
public class HashSignUtil {
    /**
     * å“ˆç¨€ç­¾å
     * @param signSource - æºå­—符串
     * @return
     */
    public static String sign(String signSource) {
        String signature = "";
        try {
            MessageDigest crypt = MessageDigest.getInstance("SHA-1");
            crypt.reset();
            crypt.update(signSource.getBytes("UTF-8"));
            signature = byteToHex(crypt.digest());
        }
        catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return signature;
    }
    private static String byteToHex(final byte[] hash) {
        Formatter formatter = new Formatter();
        for (byte b : hash)
        {
            formatter.format("%02x", b);
        }
        String result = formatter.toString();
        formatter.close();
        return result;
    }
}
server/services/src/main/java/com/doumee/config/xyy/XyyConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.doumee.config.xyy;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.xyy.dto.RestRequest;
import com.doumee.core.constants.Constants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
 * èŠ¯çƒ¨äº‘å…¬å…±é…ç½®ç±»
 */
@Component
public class XyyConfig {
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    /**
     * ç”Ÿæˆé€šç”¨çš„请求头
     */
    public void createRequestHeader(RestRequest request) {
        String user = systemDictDataBiz.queryByCode(Constants.XPYUN_CONFIG, Constants.XPYUN_USER).getCode();
        String userKey = systemDictDataBiz.queryByCode(Constants.XPYUN_CONFIG, Constants.XPYUN_USER_KEY).getCode();
        request.setUser(user);
        request.setTimestamp(System.currentTimeMillis() + "");
        request.setSign(HashSignUtil.sign(request.getUser() + userKey + request.getTimestamp()));
        request.setDebug("0");
    }
}
server/services/src/main/java/com/doumee/config/xyy/dto/AddPrinterRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.doumee.config.xyy.dto;
import lombok.Data;
/**
 * æ·»åŠ æ‰“å°æœºè¯·æ±‚å‚æ•°
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
@Data
public class AddPrinterRequest extends RestRequest {
    /**
     * è¯·æ±‚项集合
     */
    private AddPrinterRequestItem[] items;
}
server/services/src/main/java/com/doumee/config/xyy/dto/AddPrinterRequestItem.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.doumee.config.xyy.dto;
import lombok.Data;
/**
 * æ·»åŠ æ‰“å°æœºè¯·æ±‚é¡¹
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
@Data
public class AddPrinterRequestItem {
    /**
     * æ‰“印机编号
     */
    private String sn;
    /**
     * æ‰“印机名称
     */
    private String name;
}
server/services/src/main/java/com/doumee/config/xyy/dto/DelPrinterRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.doumee.config.xyy.dto;
import lombok.Data;
/**
 * åˆ é™¤æ‰“印机请求参数
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
@Data
public class DelPrinterRequest extends RestRequest {
    /**
     * æ‰“印机编号集合
     */
    private String[] snlist;
}
server/services/src/main/java/com/doumee/config/xyy/dto/OrderStatusType.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.doumee.config.xyy.dto;
/**
 * è®¢å•状态
 *
 * @author RabyGao
 * @date Aug 8, 2019
 */
public enum OrderStatusType {
    /**
     * å¤„理中
     */
    Processing(0),
    /**
     * å®Œæˆ
     */
    Completed(1),
    /**
     * å¤±è´¥
     */
    Failed(2);
    private final int val;
    public int getVal() {
        return val;
    }
    OrderStatusType(int num) {
        this.val = num;
    }
    public static OrderStatusType getOrderStatusType(int val) {
        for (OrderStatusType type : OrderStatusType.values()) {
            if (type.getVal() == val) {
                return type;
            }
        }
        return Processing;
    }
}
server/services/src/main/java/com/doumee/config/xyy/dto/PrintRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package com.doumee.config.xyy.dto;
import lombok.Data;
/**
 * æ‰“印机打印请求参数
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
@Data
public class PrintRequest extends RestRequest {
    /**
     * æ‰“印机编号
     */
    private String sn;
    /**
     * æ‰“印内容,不能超过5000字节
     */
    private String content;
    /**
     * æ‰“印份数,默认为1
     */
    private int copies = 1;
    /**
     * æ‰“印模式,默认为0
     */
    private int mode = 0;
    /**
     * æ”¯ä»˜æ–¹å¼41~55:支付宝 å¾®ä¿¡ ...
     */
    private Integer payType;
    /**
     * æ”¯ä»˜ä¸Žå¦59~61:退款 åˆ°è´¦ æ¶ˆè´¹
     */
    private Integer payMode;
    /**
     * æ”¯ä»˜é‡‘额
     */
    private Double money;
    /**
     * å£°éŸ³æ’­æ”¾æ¨¡å¼ï¼Œ0 ä¸ºå–消订单模式,1 ä¸ºé™éŸ³æ¨¡å¼ï¼Œ2 ä¸ºæ¥å•播放模式,默认为 2 æ¥å•播放模式
     */
    private Integer voice;
    /**
     * æ‰“印接口回调地址对应标识(取值范围 [ 1 - 5 ] çš„æ•´æ•°),对于web管理后台 â€œåŠŸèƒ½è®¾ç½®â€ èœå•设置界面的打印接口回调标识。
     */
    private Integer backurlFlag;
}
server/services/src/main/java/com/doumee/config/xyy/dto/PrinterRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.doumee.config.xyy.dto;
/**
 * æ‰“印机请求参数
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
public class PrinterRequest extends RestRequest {
    /**
     * æ‰“印机编号
     */
    private String sn;
    public String getSn() {
        return sn;
    }
    public void setSn(String sn) {
        this.sn = sn;
    }
}
server/services/src/main/java/com/doumee/config/xyy/dto/PrinterStatusType.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package com.doumee.config.xyy.dto;
/**
 * æ‰“印机状态
 *
 * @author RabyGao
 * @date Aug 8, 2019
 */
public enum PrinterStatusType {
    /**
     * ç¦»çº¿
     */
    Offline(0),
    /**
     * åœ¨çº¿æ­£å¸¸
     */
    OnlinNormal(1),
    /**
     * åœ¨çº¿ç¼ºçº¸
     */
    OnlineMissingPaper(2);
    private final int val;
    public int getVal() {
        return val;
    }
    private PrinterStatusType(int num) {
        this.val = num;
    }
    public static PrinterStatusType getPrinterStatusType(int val) {
        for (PrinterStatusType type : PrinterStatusType.values()) {
            if (type.getVal() == val) {
                return type;
            }
        }
        return Offline;
    }
}
server/services/src/main/java/com/doumee/config/xyy/dto/PrintersRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.config.xyy.dto;
import java.util.List;
/**
 * @author LylJavas
 * @create 2021/4/14 18:01
 * @description æ‰¹é‡æ‰“印机请求参数
 */
public class PrintersRequest extends RestRequest {
    /**
     * æ‰“印机编号列表
     */
    private List<String> snlist;
    public List<String> getSnlist() {
        return snlist;
    }
    public void setSnlist(List<String> snlist) {
        this.snlist = snlist;
    }
}
server/services/src/main/java/com/doumee/config/xyy/dto/QueryOrderStateRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.doumee.config.xyy.dto;
/**
 * æŸ¥è¯¢è®¢å•状态请求参数
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
public class QueryOrderStateRequest extends RestRequest {
    /**
     * è®¢å•编号
     */
    private String orderId;
    public String getOrderId() {
        return orderId;
    }
    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }
}
server/services/src/main/java/com/doumee/config/xyy/dto/QueryOrderStatisRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.doumee.config.xyy.dto;
/**
 * æŸ¥è¯¢è®¢å•统计请求参数
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
public class QueryOrderStatisRequest extends RestRequest {
    /**
     * æ‰“印机编号
     */
    private String sn;
    /**
     * æŸ¥è¯¢æ—¥æœŸï¼Œæ ¼å¼YY-MM-DD,如:2016-09-20
     */
    private String date;
    public String getSn() {
        return sn;
    }
    public void setSn(String sn) {
        this.sn = sn;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
}
server/services/src/main/java/com/doumee/config/xyy/dto/RestRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package com.doumee.config.xyy.dto;
/**
 * è¯·æ±‚公共参数
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
public class RestRequest {
    /**
     * èŠ¯çƒ¨äº‘åŽå°æ³¨å†Œç”¨æˆ·å
     */
    private String user;
    /**
     * å½“前UNIX时间戳,10位,精确到秒
     */
    private String timestamp;
    /**
     * å¯¹å‚æ•° user + UKEY + timestamp æ‹¼æŽ¥åŽï¼ˆ+号表示连接符)进行SHA1加密得到签名,值为40位小写字符串
     */
    private String sign;
    /**
     * debug=1返回非json格式的数据。仅测试时候使用
     */
    private String debug;
    public String getUser() {
        return user;
    }
    public void setUser(String user) {
        this.user = user;
    }
    public String getTimestamp() {
        return timestamp;
    }
    public void setTimestamp(String timestamp) {
        this.timestamp = timestamp;
    }
    public String getSign() {
        return sign;
    }
    public void setSign(String sign) {
        this.sign = sign;
    }
    public String getDebug() {
        return debug;
    }
    public void setDebug(String debug) {
        this.debug = debug;
    }
}
server/services/src/main/java/com/doumee/config/xyy/dto/SetVoiceTypeRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.doumee.config.xyy.dto;
/**
 * è®¾ç½®æ‰“印机语音类型请求参数
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
public class SetVoiceTypeRequest extends RestRequest {
    /**
     * æ‰“印机编号
     */
    private String sn;
    /**
     * å£°éŸ³ç±»åž‹ï¼š 0真人语音(大) 1真人语音(中) 2真人语音(小) 3 å˜€å˜€å£°  4 é™éŸ³
     */
    private Integer voiceType;
    public String getSn() {
        return sn;
    }
    public void setSn(String sn) {
        this.sn = sn;
    }
    public Integer getVoiceType() {
        return voiceType;
    }
    public void setVoiceType(Integer voiceType) {
        this.voiceType = voiceType;
    }
}
server/services/src/main/java/com/doumee/config/xyy/dto/UpdPrinterRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.doumee.config.xyy.dto;
/**
 * ä¿®æ”¹æ‰“印机请求参数
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
public class UpdPrinterRequest extends RestRequest {
    /**
     * æ‰“印机编号
     */
    private String sn;
    /**
     * æ‰“印机名称
     */
    private String name;
    /**
     * æ‰“印机识别码
     */
    private String idcode;
    /**
     * æµé‡å¡å·ç 
     */
    private String cardno;
    public String getSn() {
        return sn;
    }
    public void setSn(String sn) {
        this.sn = sn;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getIdcode() {
        return idcode;
    }
    public void setIdcode(String idcode) {
        this.idcode = idcode;
    }
    public String getCardno() {
        return cardno;
    }
    public void setCardno(String cardno) {
        this.cardno = cardno;
    }
}
server/services/src/main/java/com/doumee/config/xyy/dto/VoiceRequest.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package com.doumee.config.xyy.dto;
/**
 * äº‘喇叭播放语音请求参数
 *
 * @author RabyGao
 * @date Aug 5, 2020
 */
public class VoiceRequest extends RestRequest {
    /**
     * æ‰“印机编号
     */
    private String sn;
    /**
     * æ”¯ä»˜æ–¹å¼41~55:支付宝 å¾®ä¿¡ ...
     */
    private Integer payType;
    /**
     * æ”¯ä»˜ä¸Žå¦59~61:退款 åˆ°è´¦ æ¶ˆè´¹
     */
    private Integer payMode;
    /**
     * æ”¯ä»˜é‡‘额
     */
    private Double money;
    public String getSn() {
        return sn;
    }
    public void setSn(String sn) {
        this.sn = sn;
    }
    public Integer getPayType() {
        return payType;
    }
    public void setPayType(Integer payType) {
        this.payType = payType;
    }
    public Integer getPayMode() {
        return payMode;
    }
    public void setPayMode(Integer payMode) {
        this.payMode = payMode;
    }
    public Double getMoney() {
        return money;
    }
    public void setMoney(Double money) {
        this.money = money;
    }
}
server/services/src/main/java/com/doumee/config/xyy/vo/ObjectRestResponse.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package com.doumee.config.xyy.vo;
import lombok.Data;
/**
 * è¿”回公共参数
 *
 * @param <T>
 * @author RabyGao
 * @date Aug 7, 2019
 */
@Data
public class ObjectRestResponse<T> {
    public static final String REST_RESPONSE_OK = "ok";
    /**
     * è¿”回码,正确返回0,【注意:结果正确与否的判断请用此返回参数】,错误返回非零
     */
    private int code;
    /**
     * ç»“果提示信息,正确返回”ok”,如果有错误,返回错误信息
     */
    private String msg;
    /**
     * æ•°æ®ç±»åž‹å’Œå†…容详看私有返回参数data,如果有错误,返回null
     */
    private T data;
    /**
     * æœåŠ¡å™¨ç¨‹åºæ‰§è¡Œæ—¶é—´ï¼Œå•ä½ï¼šæ¯«ç§’
     */
    private long serverExecutedTime;
    public ObjectRestResponse() {
        this.setCode(0);
        this.setMsg(REST_RESPONSE_OK);
    }
    public ObjectRestResponse code(int code) {
        this.setCode(code);
        return this;
    }
    public ObjectRestResponse data(T data) {
        this.setData(data);
        return this;
    }
    public ObjectRestResponse msg(String msg) {
        this.setMsg(msg);
        return this;
    }
    public ObjectRestResponse setResult(int code, T data) {
        this.setCode(code);
        this.setData(data);
        return this;
    }
    public ObjectRestResponse setResult(int code, T data, String msg) {
        this.setCode(code);
        this.setData(data);
        this.setMsg(msg);
        return this;
    }
}
server/services/src/main/java/com/doumee/config/xyy/vo/OrderStatisResult.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.doumee.config.xyy.vo;
/**
 * è®¢å•统计结果
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
public class OrderStatisResult {
    /**
     * å·²æ‰“印订单数
     */
    private int printed;
    /**
     * ç­‰å¾…打印订单数
     */
    private int waiting;
    public int getPrinted() {
        return printed;
    }
    public void setPrinted(int printed) {
        this.printed = printed;
    }
    public int getWaiting() {
        return waiting;
    }
    public void setWaiting(int waiting) {
        this.waiting = waiting;
    }
}
server/services/src/main/java/com/doumee/config/xyy/vo/PrinterResult.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.doumee.config.xyy.vo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
 * æ‰¹é‡æ·»åŠ æˆ–åˆ é™¤æ‰“å°æœºç»“æžœ
 *
 * @author RabyGao
 * @date Aug 7, 2019
 */
@Data
public class PrinterResult {
    public PrinterResult() {
        success = new ArrayList<>();
        fail = new ArrayList<>();
        failMsg=new ArrayList<>();
    }
    /**
     * æˆåŠŸçš„æ‰“å°æœºç¼–å·é›†åˆ
     */
    private List<String> success;
    /**
     * å¤±è´¥çš„æ‰“印机编号集合
     */
    private List<String> fail;
    /**
     * å¤±è´¥åŽŸå› é›†åˆ  è®¾å¤‡ç¼–号:失败原因
     */
    private List<String> failMsg ;
}
server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -89,6 +89,7 @@
    public static final String BANNER_FILES = "BANNER_FILES";
    public static final String ORDERS_FILES = "ORDERS_FILES";
    public static final String APP_FILES = "APP_FILES";
    public static final String APP_FILES_URL = "APP_FILES_URL";
    // è¿è¥é…ç½®
    public static final String OPERATION_CONFIG = "OPERATION_CONFIG";
server/services/src/main/java/com/doumee/core/utils/xpyun/XpyunPrintService.java
ÎļþÒÑɾ³ý
server/services/src/main/java/com/doumee/core/utils/xpyun/XpyunResponse.java
ÎļþÒÑɾ³ý
server/services/src/main/java/com/doumee/dao/business/model/AppVersion.java
@@ -96,4 +96,8 @@
    @TableField(exist = false)
    private String createUserName;
    @ApiModelProperty(value = "APP文件全路径")
    @TableField(exist = false)
    private String fileFullUrl;
}
server/services/src/main/java/com/doumee/dao/business/model/DriverInfo.java
@@ -186,6 +186,10 @@
    private Long memberAmount;
    @TableField(exist = false)
    @ApiModelProperty(value = "驾驶车辆类型: æœºåŠ¨è½¦ = driving éžæœºåŠ¨è½¦ = bicycling")
    private String driverType;
    @TableField(exist = false)
    @ApiModelProperty(value = "图片前缀地址")
    private String imgPrefix;
@@ -233,4 +237,7 @@
    @ApiModelProperty(value = "审批人名称")
    private String auditUserName;
    @ApiModelProperty(value = "极光推送别名")
    private String jpushAlias;
}
server/services/src/main/java/com/doumee/dao/dto/DriverVerifyRequest.java
@@ -20,6 +20,9 @@
@ApiModel("司机实名认证请求类")
public class DriverVerifyRequest implements Serializable {
    @ApiModelProperty(value = "司机主键(管理端修改时必传)")
    private Integer id;
    @NotEmpty(message = "姓名不能为空")
    @ApiModelProperty(value = "姓名", required = true)
    private String name;
server/services/src/main/java/com/doumee/dao/dto/PrinterBindDTO.java
ÎļþÒÑɾ³ý
server/services/src/main/java/com/doumee/dao/dto/ShopPrinterDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.doumee.dao.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("门店打印机维护请求")
public class ShopPrinterDTO {
    @ApiModelProperty(value = "门店主键", required = true)
    private Integer id;
    @ApiModelProperty(value = "打印机SN编号(不传则为删除)")
    private String printerSn;
}
server/services/src/main/java/com/doumee/dao/vo/DriverCenterVO.java
@@ -31,6 +31,10 @@
    @ApiModelProperty(value = "司机定级:5=S 4=A 3=B 2=C 1=D")
    private Integer driverLevel;
    @ApiModelProperty(value = "驾驶车辆类型: æœºåŠ¨è½¦ = driving éžæœºåŠ¨è½¦ = bicycling")
    private String driverType;
    @ApiModelProperty(value = "司机定级名称:S/A/B/C/D")
    private String driverLevelName;
server/services/src/main/java/com/doumee/dao/vo/OrderDetailVO.java
@@ -53,7 +53,7 @@
    @ApiModelProperty(value = "司机完成图片")
    private List<String> driverDoneImages;
    @ApiModelProperty(value = "门店入库图片")
    @ApiModelProperty(value = "取件门店入库图片")
    private List<String> storeInImages;
    @ApiModelProperty(value = "门店出库图片")
server/services/src/main/java/com/doumee/dao/vo/ShopWebDetailVO.java
@@ -45,4 +45,7 @@
    @ApiModelProperty(value = "门店经度")
    private Double longitude;
    @ApiModelProperty(value = "门店联系电话")
    private String linkPhone;
}
server/services/src/main/java/com/doumee/service/business/AppVersionService.java
@@ -5,6 +5,7 @@
import com.doumee.dao.business.model.AppVersion;
import java.util.List;
import java.util.Map;
/**
 * APP版本Service定义
@@ -104,4 +105,13 @@
     */
    AppVersion getLatestVersion(Integer type);
    /**
     * ä¸Šä¼ æ–‡ä»¶åˆ°æœåŠ¡å™¨æœ¬åœ°ç›®å½•
     *
     * @param file   æ–‡ä»¶
     * @param folder æ–‡ä»¶å¤¹å
     * @return æ–‡ä»¶ä¿¡æ¯
     */
    Map<String, Object> uploadFile(org.springframework.web.multipart.MultipartFile file) throws Exception;
}
server/services/src/main/java/com/doumee/service/business/AreasService.java
@@ -150,6 +150,8 @@
     */
    Areas getOpenedCityByName(String cityName);
    Areas getOpenedCityByCode(String code);
    /**
     * ä¿®æ”¹çŠ¶æ€
     *
server/services/src/main/java/com/doumee/service/business/DriverInfoService.java
@@ -162,6 +162,15 @@
    DriverInfo getDetail(Integer id);
    /**
     * ç®¡ç†ç«¯ä¿®æ”¹å¸æœºæ³¨å†Œä¿¡æ¯ï¼ˆå«é™„件)
     *
     * @param id      å¸æœºä¸»é”®
     * @param request ä¿®æ”¹è¯·æ±‚
     * @return æ›´æ–°åŽçš„司机详情(含附件)
     */
    DriverInfo updateDriverInfo(DriverVerifyRequest request);
    /**
     * ä¿®æ”¹å¸æœºçŠ¶æ€ï¼ˆå¯ç”¨/禁用)
     *
     * @param dto ä¿®æ”¹çŠ¶æ€è¯·æ±‚
@@ -300,4 +309,9 @@
     */
    boolean checkDriverToken(String token);
    /**
     * æ³¨å†Œæžå…‰æŽ¨é€åˆ«å
     */
    void registerJpushAlias(Integer driverId, String jpushAlias);
}
server/services/src/main/java/com/doumee/service/business/OrdersService.java
@@ -426,4 +426,9 @@
     */
    int autoCompleteOrders();
    /**
     * æ‰“印订单标签
     */
    void printOrderLabel(Integer orderId, Integer shopId);
}
server/services/src/main/java/com/doumee/service/business/ShopInfoService.java
@@ -220,18 +220,9 @@
    void changePassword(Integer shopId, String oldPassword, String newPassword, String token);
    /**
     * ç»‘定打印机
     * ç»´æŠ¤é—¨åº—打印机SN
     * @param dto é—¨åº—打印机维护请求
     */
    void bindPrinter(com.doumee.dao.dto.PrinterBindDTO dto);
    /**
     * è§£ç»‘打印机
     */
    void unbindPrinter(Integer shopId);
    /**
     * æŸ¥è¯¢æ‰“印机状态
     */
    Object queryPrinterStatus(Integer shopId);
    void maintainPrinterSn(ShopPrinterDTO dto);
}
server/services/src/main/java/com/doumee/service/business/impl/AppVersionServiceImpl.java
@@ -4,11 +4,13 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.AppVersionMapper;
import com.doumee.dao.business.model.AppVersion;
@@ -17,9 +19,10 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Objects;
import java.io.File;
import java.util.*;
/**
 * APP版本Service实现
@@ -32,13 +35,15 @@
    @Autowired
    private AppVersionMapper appVersionMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Override
    public Integer create(AppVersion appVersion) {
        if (StringUtils.isBlank(appVersion.getVersionInfo())
                || StringUtils.isBlank(appVersion.getFileUrl())
                || StringUtils.isBlank(appVersion.getName())
                || StringUtils.isBlank(appVersion.getContent())
                || StringUtils.isBlank(appVersion.getTitle())
                || Objects.isNull(appVersion.getIsForce())
                || Objects.isNull(appVersion.getType())
                || Objects.isNull(appVersion.getFileSize())
@@ -132,7 +137,14 @@
            wrapper.eq(AppVersion::getType, model.getType());
        }
        wrapper.orderByDesc(AppVersion::getId);
        return PageData.from(appVersionMapper.selectJoinPage(page, AppVersion.class, wrapper));
        PageData<AppVersion> pageData = PageData.from(appVersionMapper.selectJoinPage(page, AppVersion.class, wrapper));
        String urlPrefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.APP_FILES_URL).getCode();
        for (AppVersion vo : pageData.getRecords()) {
            if (StringUtils.isNotBlank(vo.getFileUrl())) {
                vo.setFileFullUrl(urlPrefix + vo.getFileUrl());
            }
        }
        return pageData;
    }
    @Override
@@ -152,4 +164,34 @@
        return appVersionMapper.selectOne(qw);
    }
    @Override
    public Map<String, Object> uploadFile(MultipartFile file) throws Exception {
        if (file == null || file.isEmpty()) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "上传文件不能为空");
        }
        String rootPath = systemDictDataBiz.queryByCode(Constants.OSS, Constants.APP_FILES).getCode();
        String urlPrefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.APP_FILES_URL).getCode();
        String originName = file.getOriginalFilename();
        String ext = ".apk";
        if (originName != null && originName.indexOf(".") > 0) {
            ext = originName.substring(originName.lastIndexOf("."));
        }
        String fileName =  UUID.randomUUID() + ext;
        File dest = new File(rootPath + fileName);
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();
        }
        try {
            file.transferTo(dest);
        } catch (Exception e) {
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "文件上传失败: " + e.getMessage());
        }
        Map<String, Object> data = new HashMap<>();
        data.put("url", urlPrefix + fileName);
        data.put("imgaddr", fileName);
        data.put("imgname", fileName);
        data.put("originname", originName);
        return data;
    }
}
server/services/src/main/java/com/doumee/service/business/impl/AreasServiceImpl.java
@@ -553,6 +553,7 @@
        return list;
    }
    @Override
    public Areas getOpenedCityByName(String cityName) {
        if (StringUtils.isBlank(cityName)) {
@@ -568,6 +569,24 @@
        return areasMapper.selectOne(qw);
    }
    @Override
    public Areas getOpenedCityByCode(String code) {
        if (StringUtils.isBlank(code)) {
            return null;
        }
        Areas areas = areasMapper.selectById(code);
        if(Objects.isNull(areas)||Objects.isNull(areas.getParentId())){
            return null;
        }
        Areas city = areasMapper.selectById(areas.getParentId());
        if(Objects.isNull(city)||Constants.equalsInteger(city.getIsdeleted(),Constants.ONE)||
            Constants.equalsInteger(city.getStatus(),Constants.ZERO)){
            return null;
        }
        return city;
    }
    @Override
    public void updateStatus(Areas areas) {
        if (areas == null || areas.getId() == null) {
server/services/src/main/java/com/doumee/service/business/impl/DriverInfoServiceImpl.java
@@ -406,6 +406,7 @@
            driverInfo.setMemberId(member.getId());
            driverInfo.setStatus(Constants.ZERO);
            driverInfo.setAuditStatus(99);
            driverInfo.setJpushAlias(org.springframework.util.DigestUtils.md5DigestAsHex(telephone.getBytes()));
            driverInfoMapper.insert(driverInfo);
        }
@@ -581,6 +582,7 @@
            if (Objects.nonNull(category)) {
                driverInfo.setCarTypeName(category.getName());
                driverInfo.setNeedLicense(Constants.equalsInteger(Integer.valueOf(category.getOtherField()), Constants.ONE) ? Constants.ONE : Constants.ZERO);
                driverInfo.setDriverType(category.getDetail());
            }
        }
        // æŸ¥è¯¢çœå¸‚区信息
@@ -730,6 +732,55 @@
    }
    @Override
    public DriverInfo updateDriverInfo(DriverVerifyRequest request) {
        Integer id = request.getId();
        if (id == null) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "司机主键不能为空");
        }
        DriverInfo driverInfo = driverInfoMapper.selectById(id);
        if (Objects.isNull(driverInfo) || Constants.equalsInteger(driverInfo.getDeleted(), Constants.ONE)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        Date now = new Date();
        driverInfoMapper.update(new UpdateWrapper<DriverInfo>().lambda()
                .set(DriverInfo::getName, request.getName())
                .set(DriverInfo::getIdcard, request.getIdcard())
                .set(DriverInfo::getMaritalStatus, request.getMaritalStatus())
                .set(DriverInfo::getAreaId, request.getAreaId())
                .set(DriverInfo::getLivePlace, request.getLivePlace())
                .set(DriverInfo::getCarCode, request.getCarCode())
                .set(DriverInfo::getCarType, request.getCarType())
                .set(DriverInfo::getCarColor, request.getCarColor())
                .set(DriverInfo::getCardStartDate, request.getCardStartDate())
                .set(DriverInfo::getCardEndDate, request.getCardEndDate())
                .set(DriverInfo::getIdcardImg, request.getIdcardImg())
                .set(DriverInfo::getIdcardImgBack, request.getIdcardImgBack())
                .set(DriverInfo::getAliAccount, request.getAliAccount())
                .set(DriverInfo::getAliName, request.getAliName())
                .set(DriverInfo::getUpdateTime, now)
                .eq(DriverInfo::getId, id));
        // åˆ é™¤æ—§çš„照片记录并保存新的
        multifileMapper.delete(new QueryWrapper<Multifile>().lambda()
                .eq(Multifile::getObjId, id)
                .in(Multifile::getObjType,
                        Constants.FileType.DRIVER_CAR.getKey(),
                        Constants.FileType.DRIVER_LICENSE.getKey(),
                        Constants.FileType.DRIVER_OTHER.getKey()));
        if (!CollectionUtils.isEmpty(request.getCarImgUrls())) {
            saveMultifileList(id, Constants.FileType.DRIVER_CAR.getKey(), request.getCarImgUrls(), now);
        }
        if (!CollectionUtils.isEmpty(request.getLicenseImgUrls())) {
            saveMultifileList(id, Constants.FileType.DRIVER_LICENSE.getKey(), request.getLicenseImgUrls(), now);
        }
        if (!CollectionUtils.isEmpty(request.getOtherImgUrls())) {
            saveMultifileList(id, Constants.FileType.DRIVER_OTHER.getKey(), request.getOtherImgUrls(), now);
        }
        return getDetail(id);
    }
    @Override
    public void changeStatus(ChangeStatusDTO dto) {
        if (dto.getId() == null) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "主键不能为空");
@@ -833,7 +884,10 @@
                    + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILES).getCode();
            vo.setFullImgUrl(imgPrefix + driver.getImgurl());
        }
        Category category = categoryMapper.selectById(driver.getCarType());
        if(Objects.nonNull(category)&&StringUtils.isNotBlank(category.getDetail())){
            vo.setDriverType(category.getDetail());
        }
        // ä»Šæ—¥é¢„计佣金:今日接单的司机佣金 + å¹³å°å¥–励金
        Date now = new Date();
        Calendar cal = Calendar.getInstance();
@@ -1075,14 +1129,15 @@
                .select("s1.address", Orders::getDepositShopAddress)
                .select("s2.name", Orders::getTakeShopName)
                .select("s2.address", Orders::getTakeShopAddress)
                .select("s1.link_phone", Orders::getDepositShopLinkPhone)
                .select("s2.link_phone as takeShopLinkPhone")
                .select("c2.other_field as c2OtherField")
                .select("c2.name as goodLevelName")
                .select("IF(EXISTS(SELECT 1 FROM orders_detail od JOIN category c3 ON c3.id = od.LUGGAGE_ID AND c3.TYPE = 4 AND c3.OTHER_FIELD = '1' WHERE od.ORDER_ID = t.ID AND od.DELETED = 0), 1, 0) as hasOversized")
                .leftJoin("shop_info s1 on s1.id = t.DEPOSIT_SHOP_ID and s1.DELETED = 0")
                .leftJoin("shop_info s2 on s2.id = t.TAKE_SHOP_ID and s2.DELETED = 0")
                .leftJoin("category c1 on c1.id = t.GOOD_TYPE and c1.DELETED = 0")
                .leftJoin("category c2 on c2.id = c1.RELATION_ID and c2.DELETED = 0 and c2.TYPE = 3")
                .leftJoin("shop_info s1 on s1.id = t.DEPOSIT_SHOP_ID ")
                .leftJoin("shop_info s2 on s2.id = t.TAKE_SHOP_ID    ")
                .leftJoin("category c1 on c1.id = t.GOOD_TYPE   ")
                .leftJoin("category c2 on c2.id = c1.RELATION_ID and  c2.TYPE = 3")
                .eq(Orders::getAcceptDriver, driver.getId())
                .eq(Orders::getType, Constants.ONE)
                .eq(Objects.nonNull(dto.getStatus()),Orders::getStatus, dto.getStatus())
@@ -1120,11 +1175,11 @@
        wrapper.selectAll(Orders.class)
                .select("s1.name", Orders::getDepositShopName)
                .select("s1.address", Orders::getDepositShopAddress)
                .select("s1.telephone", Orders::getDepositShopLinkPhone)
                .select("s1.link_phone", Orders::getDepositShopLinkPhone)
                .select("s2.name", Orders::getTakeShopName)
                .select("s2.address", Orders::getTakeShopAddress)
                .select("s2.telephone", Orders::getTakeShopLinkPhone)
                .select("c2.other_field as c2OtherField")
                .select("s2.link_phone", Orders::getTakeShopLinkPhone)
                .select("c1.other_field as c2OtherField")
                .select("c1.name as goodTypeName")
                .select("IF(EXISTS(SELECT 1 FROM orders_detail od JOIN category c3 ON c3.id = od.LUGGAGE_ID AND c3.TYPE = 4 AND c3.OTHER_FIELD = '1' WHERE od.ORDER_ID = t.ID AND od.DELETED = 0), 1, 0) as hasOversized")
                .leftJoin("shop_info s1 on s1.id = t.DEPOSIT_SHOP_ID and s1.DELETED = 0")
@@ -1738,17 +1793,15 @@
            vo.setDepositDistance(formatDistance(distKm));
        }
        // å–件信息 + è”系电话(使用Orders自带坐标)
        // å–件信息(使用Orders自带坐标)
        boolean hasTakeShop = order.getTakeShopId() != null && StringUtils.isNotBlank(order.getTakeShopName());
        if (hasTakeShop) {
            vo.setTakeName(order.getTakeShopName());
            vo.setTakeAddress(order.getTakeShopAddress());
            vo.setTakeShopId(order.getTakeShopId());
            vo.setContactPhone(order.getTakeShopLinkPhone());
        } else {
            vo.setTakeName(order.getTakeLocation());
            vo.setTakeAddress(order.getTakeLocationRemark());
            vo.setContactPhone(order.getTakePhone());
        }
        vo.setTakeLng(order.getTakeLgt() != null ? order.getTakeLgt().doubleValue() : null);
        vo.setTakeLat(order.getTakeLat() != null ? order.getTakeLat().doubleValue() : null);
@@ -1773,6 +1826,19 @@
        vo.setStatus(order.getStatus());
        vo.setStatusDesc(getStatusDesc(order.getStatus()));
        vo.setCreateTime(order.getCreateTime());
        // è”系电话(按订单状态)
        if (Constants.equalsInteger(order.getStatus(), Constants.THREE)) {
            vo.setContactPhone(order.getDepositShopLinkPhone());
        } else if (Constants.equalsInteger(order.getStatus(), Constants.FOUR)) {
            if (hasTakeShop) {
                vo.setContactPhone(order.getTakeShopLinkPhone());
            } else {
                vo.setContactPhone(order.getTakePhone());
            }
        } else if (Constants.equalsInteger(order.getStatus(), Constants.FIVE)) {
            vo.setContactPhone(order.getTakePhone());
        }
        // ç‰©å“æ˜Žç»†
        List<OrdersDetail> details = detailMap.getOrDefault(order.getId(), Collections.emptyList());
@@ -1930,7 +1996,8 @@
                .select("s1.name", Orders::getDepositShopName)
                .select("s1.address", Orders::getDepositShopAddress)
                .select("s2.name", Orders::getTakeShopName)
                .select("s2.address", Orders::getTakeShopAddress)
                .select("s2.address", Orders::getDepositShopAddress)
                .select("s1.link_phone as takeShopLinkPhone")
                .select("s2.link_phone as takeShopLinkPhone")
                .select("c2.other_field as c2OtherField")
                .select("c2.name as goodLevelName")
@@ -2038,4 +2105,12 @@
        }
    }
    @Override
    public void registerJpushAlias(Integer driverId, String jpushAlias) {
        DriverInfo update = new DriverInfo();
        update.setId(driverId);
        update.setJpushAlias(jpushAlias);
        driverInfoMapper.updateById(update);
    }
}
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -625,7 +625,10 @@
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        //判断新手机号是否已被使用
        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda().eq(Member::getTelephone,request.getPhone()))>Constants.ZERO){
        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda()
                        .eq(Member::getDeleted,Constants.ZERO)
                        .eq(Member::getUserType,Constants.ZERO)
                .eq(Member::getTelephone,request.getPhone()))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,新手机号已被绑定,无法进行换绑!");
        }
        Member member = memberMapper.selectById(request.getMemberId());
server/services/src/main/java/com/doumee/service/business/impl/OrdersRefundServiceImpl.java
@@ -151,7 +151,7 @@
                .select("o.total_amount as totalAmount")
                .select("o.pay_amount as payAmount")
                .select("c2.name as goodLevelName")
                .leftJoin("orders o on o.id = t.ORDER_ID and o.DELETED = 0")
                .innerJoin("orders o on o.id = t.ORDER_ID ")
                .leftJoin("category c1 on c1.id = o.GOOD_TYPE and c1.DELETED = 0")
                .leftJoin("category c2 on c2.id = c1.RELATION_ID and c2.DELETED = 0 and c2.TYPE = 3")
                .eq(OrdersRefund::getDeleted, 0);
server/services/src/main/java/com/doumee/service/business/impl/OrdersServiceImpl.java
@@ -1,15 +1,19 @@
package com.doumee.service.business.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.biz.system.AreasBiz;
import com.doumee.config.xyy.XyyConfig;
import com.doumee.config.xyy.dto.PrintRequest;
import com.doumee.biz.system.OperationConfigBiz;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.wx.WxMiniConfig;
import com.doumee.config.wx.WxPayProperties;
import com.doumee.config.wx.WxPayV3Service;
import com.doumee.core.utils.jpush.JPushUtil;
import com.wechat.pay.java.service.refund.model.Refund;
import com.doumee.core.constants.Constants;
import com.doumee.core.constants.ResponseStatus;
@@ -55,6 +59,7 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.text.SimpleDateFormat;
import java.util.concurrent.TimeUnit;
/**
@@ -129,6 +134,9 @@
    private AreasService areasService;
    @Autowired
    private AreasMapper aareasMapper;
    @Autowired
    private NoticeService noticeService;
    @Autowired
@@ -139,6 +147,12 @@
    @Autowired
    private WxPayProperties wxPayProperties;
    @Autowired
    private XyyConfig xyyConfig;
    @Autowired
    private PrintService printService;
    @Override
    public Integer create(Orders orders) {
@@ -216,7 +230,6 @@
                .leftJoin("shop_info s2 on s2.id = t.TAKE_SHOP_ID");
                ;
        Utils.MP.blankToNull(pageWrap.getModel());
        pageWrap.getModel().setDeleted(Constants.ZERO);
        queryWrapper.eq(pageWrap.getModel().getDeleted() != null, Orders::getDeleted, pageWrap.getModel().getDeleted());
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCode()), Orders::getCode, pageWrap.getModel().getCode());
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getDepositShopName()), "s1.name", pageWrap.getModel().getDepositShopName());
@@ -234,13 +247,7 @@
        queryWrapper.eq(pageWrap.getModel().getAcceptDriver() != null, Orders::getAcceptDriver, pageWrap.getModel().getAcceptDriver());
        queryWrapper.and(pageWrap.getModel().getShopId() != null, i -> i.eq(Orders::getDepositShopId, pageWrap.getModel().getShopId())
                .or().eq(Orders::getTakeShopId, pageWrap.getModel().getShopId()));
        for (PageWrap.SortData sortData : pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        queryWrapper.orderByDesc(Orders::getId);
        PageData<Orders> pageData = PageData.from(ordersMapper.selectJoinPage(page, Orders.class, queryWrapper));
        for (Orders o : pageData.getRecords()) {
            if (o.getStatus() != null) {
@@ -368,7 +375,7 @@
        for (Category c : categories) {
            categoryNameMap.put(c.getId(), c.getName());
            categoryDetailMap.put(c.getId(), c.getDetail());
            categoryOtherFieldMap.put(c.getId(),c.getOtherField());
            categoryOtherFieldMap.put(c.getId(),c.getRemark());
        }
        // è®¡ç®—每项物品费用:小计 = å•ä»· Ã— æ•°é‡ Ã— å¤©æ•°
@@ -490,7 +497,7 @@
        for (Category c : categories) {
            categoryNameMap.put(c.getId(), c.getName());
            categoryDetailMap.put(c.getId(), c.getDetail());
            categoryOtherFieldMap.put(c.getId(),c.getOtherField());
            categoryOtherFieldMap.put(c.getId(),c.getRemark());
        }
        // 3. é€é¡¹è®¡ç®—运费:起步价 + è¶…出部分阶梯价
@@ -1600,12 +1607,13 @@
        // é—¨åº—待处理订单:按业务环节区分门店角色
        if (combinedStatus != null && Constants.equalsInteger(combinedStatus, Constants.SEVEN)) {
            wrapper.and(w -> w
                    .and(w1 -> w1.eq(Orders::getDepositShopId, shopId)
                    .and(w1 -> w1.eq(Orders::getType, Constants.ZERO).eq(Orders::getDepositShopId, shopId)
                            .in(Orders::getStatus, Constants.OrderStatus.waitDeposit.getStatus(),
                                    Constants.OrderStatus.deposited.getStatus()))
                    .or(w2 -> w2.eq(Orders::getTakeShopId, shopId)
                            .in(Orders::getStatus, Constants.OrderStatus.delivering.getStatus(),
                                    Constants.OrderStatus.arrived.getStatus()))
                                    Constants.OrderStatus.arrived.getStatus())
                    .or(w3-> w3.eq(Orders::getType, Constants.ONE).eq(Orders::getDepositShopId, shopId)
                            .eq(Orders::getStatus, Constants.OrderStatus.waitDeposit.getStatus()))
                    .or(w2 -> w2.eq(Orders::getType, Constants.ONE).eq(Orders::getTakeShopId, shopId)
                            .eq(Orders::getStatus, Constants.OrderStatus.arrived.getStatus())))
            );
        } else {
            wrapper.and(w -> w.eq(Orders::getDepositShopId, shopId).or().eq(Orders::getTakeShopId, shopId));
@@ -2414,13 +2422,13 @@
        // 6. æŠ¼é‡‘支付完成后,若城市未开通则自动开通
        if (shopInfo.getAreaId() != null) {
            Areas shopArea = areasService.getById(shopInfo.getAreaId());
            Areas shopArea = aareasMapper.selectById(shopInfo.getAreaId());
            if (shopArea != null && shopArea.getParentId() != null) {
                Areas cityArea = areasService.getById(shopArea.getParentId());
                Areas cityArea = aareasMapper.selectById(shopArea.getParentId());
                if (cityArea != null && !Constants.equalsInteger(cityArea.getStatus(), Constants.ONE)) {
                    cityArea.setStatus(Constants.ONE);
                    cityArea.setEditDate(now);
                    areasService.updateById(cityArea);
                    aareasMapper.updateById(cityArea);
                    areasService.cacheData();
                }
            }
@@ -2758,6 +2766,8 @@
                // å¼‚地寄存 â†’ å¾…抢单
                sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_GRAB, order.getId(),
                        "orderNo", order.getCode());
                // æŽ¨é€é€šçŸ¥å¸æœº
                pushDriverNewOrder(order);
            } else {
                // å°±åœ°å¯„å­˜ â†’ å¾…取件提醒
                sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_PICKUP_REMIND, order.getId(),
@@ -2917,6 +2927,8 @@
                // å¼‚地寄存 â†’ å¾…抢单
                sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_GRAB, order.getId(),
                        "orderNo", order.getCode());
                // æŽ¨é€é€šçŸ¥å¸æœº
                pushDriverNewOrder(order);
            } else {
                // å°±åœ°å¯„å­˜ â†’ å¾…取件提醒
                sendOrderNotice(order.getMemberId(), Constants.MemberOrderNotify.WAIT_PICKUP_REMIND, order.getId(),
@@ -3580,7 +3592,10 @@
     * ä¾›åˆ†é¡µç­‰å·²æŸ¥è¯¢æ˜Žç»†çš„业务场景复用,避免重复查询
     */
    private OverdueFeeVO calculateOverdueFeeInternal(Orders order, List<OrdersDetail> details) {
        if (CollectionUtils.isEmpty(details)) {
        if (CollectionUtils.isEmpty(details)||
                Constants.equalsInteger(order.getStatus(),Constants.ZERO)
        || Constants.equalsInteger(order.getStatus(),Constants.ONE)
        ) {
            OverdueFeeVO vo = new OverdueFeeVO();
            vo.setOverdue(false);
            vo.setOverdueDays(0);
@@ -4107,4 +4122,102 @@
        }
    }
    @Override
    public void printOrderLabel(Integer orderId, Integer shopId) {
        Orders orders = ordersMapper.selectById(orderId);
        if (orders == null) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "订单不存在");
        }
        if (!Constants.equalsInteger(orders.getDepositShopId(), shopId)) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "当前门店不是该订单的存件门店");
        }
        if (orders.getStatus() < 2 || orders.getStatus() > 5) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "当前订单状态不允许打印");
        }
        ShopInfo shop = shopInfoMapper.selectById(shopId);
        if (shop == null) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "存件门店不存在");
        }
        if (StringUtils.isBlank(shop.getPrinterSn())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "存件门店未绑定打印机");
        }
        List<OrdersDetail> detailList = ordersDetailMapper.selectList(
                new QueryWrapper<OrdersDetail>().lambda().eq(OrdersDetail::getOrderId, orderId));
        // æ‹¼æŽ¥å®¢æˆ·ä¿¡æ¯
        String userInfo = "";
        if (StringUtils.isNotBlank(orders.getTakeUser())) {
            String phone = orders.getTakePhone();
            userInfo = orders.getTakeUser();
            if (StringUtils.isNotBlank(phone) && phone.length() >= 4) {
                userInfo += "(" + phone.substring(phone.length() - 4) + ")";
            }
        }
        String content = printService.getPrintContent(shop.getName(), detailList, userInfo, orders.getCode(), orders.getRemark(),
                orders.getTakeLocationRemark(),
                orders.getPayTime() != null ? new SimpleDateFormat("yyyy-MM-dd HH:mm").format(orders.getPayTime()) : "",
                orders.getExpectedTakeTime() != null ? new SimpleDateFormat("yyyy-MM-dd HH:mm").format(orders.getExpectedTakeTime()) : "");
        if (StringUtils.isBlank(content)) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "打印内容为空");
        }
        PrintRequest request = new PrintRequest();
        xyyConfig.createRequestHeader(request);
        request.setSn(shop.getPrinterSn());
        request.setContent(content);
        request.setCopies(1);
        request.setVoice(2);
        request.setMode(0);
        com.doumee.config.xyy.vo.ObjectRestResponse<String> resp = printService.printLabel(request);
        if (resp.getCode() != 0) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "打印失败:" + resp.getMsg());
        }
        log.info("订单标签打印成功: orderId={}, orderIndex={}", orderId, resp.getData());
    }
    /**
     * å¼‚地订单寄存成功后推送通知给司机
     * 1、未加急:推送同城且门店配送范围内接单中的司机
     * 2、加急:推送同城所有接单中的司机
     * åŸŽå¸‚匹配:司机AREA_ID关联areas表,逐级parent_id找到城市级,与订单cityId匹配
     */
    private void pushDriverNewOrder(Orders order) {
        ShopInfo shop = shopInfoMapper.selectById(order.getDepositShopId());
        if (shop == null || shop.getLongitude() == null || shop.getLatitude() == null) {
            return;
        }
        String orderCityId = order.getCityId();
        if (StringUtils.isBlank(orderCityId)) {
            return;
        }
        String distSql = "(ST_Distance_Sphere(POINT(t.LONGITUDE, t.LATITUDE), POINT(" + shop.getLongitude() + ", " + shop.getLatitude() + ")) / 1000)";
        // MPJ关联查询:司机 â†’ areas(区县) â†’ areas_city(城市),匹配订单cityId
        MPJLambdaWrapper<DriverInfo> wrapper = new MPJLambdaWrapper<>();
        wrapper.selectAll(DriverInfo.class)
                .leftJoin(Areas.class,Areas::getId,DriverInfo::getAreaId)
                .eq(DriverInfo::getAcceptingStatus, Constants.ONE)
                .eq(DriverInfo::getStatus, Constants.ZERO)
                .eq(DriverInfo::getDeleted, Constants.ZERO)
                .eq(DriverInfo::getAuditStatus, Constants.THREE)
                .eq(Areas::getParentId, orderCityId);
        if (!Constants.equalsInteger(order.getIsUrgent(), Constants.ONE)) {
            // æœªåŠ æ€¥ï¼šé—¨åº—é…é€èŒƒå›´å†…
            double rangeKm = shop.getDeliveryArea() != null ? shop.getDeliveryArea().doubleValue() : 5.0;
            wrapper.apply(distSql + " <= {0}", rangeKm);
        }
        List<DriverInfo> drivers = driverInfoMapper.selectJoinList(DriverInfo.class, wrapper);
        if (drivers.isEmpty()) {
            return;
        }
        List<String> aliases = new ArrayList<>();
        for (DriverInfo d : drivers) {
            aliases.add(org.springframework.util.DigestUtils.md5DigestAsHex(d.getTelephone().getBytes()));
        }
        String title = Constants.equalsInteger(order.getIsUrgent(), Constants.ONE) ? "新加急订单" : "新订单";
        String content = "订单号:" + order.getCode();
        java.util.Map<String, String> extras = new java.util.HashMap<>();
        extras.put("orderId", String.valueOf(order.getId()));
        extras.put("orderCode", order.getCode());
        extras.put("type", "new_order");
        JPushUtil.sendByAliases(aliases, title, content, extras);
    }
}
server/services/src/main/java/com/doumee/service/business/impl/PrintService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,297 @@
package com.doumee.service.business.impl;
import cn.binarywang.wx.miniapp.bean.intractiy.WxMaStoreBalance;
import com.alibaba.druid.sql.visitor.functions.Concat;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.alipay.v3.model.GoodsDetail;
import com.doumee.config.xyy.dto.*;
import com.doumee.config.xyy.vo.ObjectRestResponse;
import com.doumee.config.xyy.vo.OrderStatisResult;
import com.doumee.config.xyy.vo.PrinterResult;
import com.doumee.core.constants.Constants;
import com.doumee.core.utils.HttpsUtil;
import com.doumee.dao.business.model.OrdersDetail;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
/**
 * äº‘打印相关接口封装类
 * @author JavaLyl
 */
@Service
public class PrintService {
    private static String BASE_URL = "https://open.xpyun.net/api/openapi";
    public String getPrintContent(String shopName, List<OrdersDetail> detailList, String userInfo, String orderCode, String remark, String takeLocationRemark, String payTime, String expectedTakeTime){
        StringBuilder printContent = new StringBuilder();
        if(CollectionUtils.isNotEmpty(detailList)){
            Integer num = detailList.stream().map(i->i.getNum()).reduce(Constants.ZERO, Integer::sum);
            Integer index = 1;
            for (OrdersDetail detail:detailList) {
                for (int i = 1; i <= detail.getNum(); i++) {
                    int y = 160;
                    StringBuilder page = new StringBuilder();
                    page.append("<PAGE>").append("<SIZE>60,60</SIZE>");
                    page.append("<TEXT x=\"30\" y=\"10\" w=\"1\" h=\"1\" r=\"0\">")
                            .append(detail.getLuggageName()).append("(").append(i).append("/").append(detail.getNum()).append(")")
                            .append("</TEXT>");
                    page.append("<BC128 x=\"50\" y=\"60\" h=\"64\" s=\"1\" n=\"2\" w=\"2\" r=\"0\">")
                            .append(orderCode)
                            .append("</BC128>");
                    // å®¢æˆ·ä¿¡æ¯
                    page.append("<TEXT x=\"30\" y=\"").append(y).append("\" w=\"1\" h=\"1\" r=\"0\">")
                            .append("客户信息:").append(userInfo).append(StringUtils.repeat(" ", 4))
                            .append("</TEXT>");
                    y += 40;
                    // ä¸‹å•时间(支付时间)
                    page.append("<TEXT x=\"30\" y=\"").append(y).append("\" w=\"1\" h=\"1\" r=\"0\">")
                            .append("下单时间:").append(payTime)
                            .append("</TEXT>");
                    y += 40;
                    // å–件地址(最多2行)
                    y = appendMultiLine(page, "取件地址:", takeLocationRemark, y, 2);
                    y += 10;
                    // é€è¾¾æ—¶é—´
                    page.append("<TEXT x=\"30\" y=\"").append(y).append("\" w=\"1\" h=\"1\" r=\"0\">")
                            .append("客户预计取件时间:").append(expectedTakeTime)
                            .append("</TEXT>");
                    y += 40;
                    // è®¢å•备注(最多2行)
                    y = appendMultiLine(page, "订单备注:", remark, y, 2);
                    // é—¨åº—名 + åºå·ï¼ˆå›ºå®šåœ¨åº•部)
                    page.append("<TEXT x=\"30\" y=\"440\" w=\"1\" h=\"1\" r=\"0\">")
                            .append(shopName).append(StringUtils.repeat(" ", 18))
                            .append(index).append("/").append(num)
                            .append("</TEXT>");
                    page.append("</PAGE>");
                    printContent.append(page);
                    index =  index+1;
                }
            }
        }
        return printContent.toString();
    }
    /**
     * è¿½åŠ å¯èƒ½æ¢è¡Œçš„æ–‡æœ¬ï¼ˆæ ‡é¢˜+内容),超过maxChars个字符换行,最多maxLines行
     * @return æ¶ˆè€—çš„y偏移后的下一个y坐标
     */
    private int appendMultiLine(StringBuilder sb, String title, String content, int startY, int maxLines) {
        String fullText = title + (StringUtils.isNotBlank(content) ? content : "");
        int maxChars = 18;
        int line = 0;
        int pos = 0;
        int y = startY;
        while (pos < fullText.length() && line < maxLines) {
            String lineText;
            int end = Math.min(pos + maxChars, fullText.length());
            lineText = fullText.substring(pos, end);
            pos = end;
            line++;
            sb.append("<TEXT x=\"30\" y=\"").append(y).append("\" w=\"1\" h=\"1\" r=\"0\">")
                    .append(lineText).append(StringUtils.repeat(" ", 4))
                    .append("</TEXT>");
            y += 35;
        }
        return y;
    }
    /**
     * 1.批量添加打印机
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<PrinterResult> addPrinters(AddPrinterRequest restRequest) {
        String url = BASE_URL + "/xprinter/addPrinters";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<PrinterResult> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<PrinterResult>>(){});
        return result;
    }
    /**
     * 2.设置打印机语音类型
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<Boolean> setPrinterVoiceType(SetVoiceTypeRequest restRequest) {
        String url = BASE_URL + "/xprinter/setVoiceType";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<Boolean> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<Boolean>>(){});
        return result;
    }
    /**
     * 3.打印小票订单
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<String> print(PrintRequest restRequest) {
        String url = BASE_URL + "/xprinter/print";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<String> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<String>>(){});
        return result;
    }
    /**
     * 4.打印标签订单
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<String> printLabel(PrintRequest restRequest) {
        String url = BASE_URL + "/xprinter/printLabel";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<String> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<String>>(){});
        return result;
    }
    /**
     * 5.批量删除打印机
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<PrinterResult> delPrinters(DelPrinterRequest restRequest) {
        String url = BASE_URL + "/xprinter/delPrinters";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<PrinterResult> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<PrinterResult>>(){});
        return result;
    }
    /**
     * 6.修改打印机信息
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<Boolean> updPrinter(UpdPrinterRequest restRequest) {
        String url = BASE_URL + "/xprinter/updPrinter";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<Boolean> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<Boolean>>(){});
        return result;
    }
    /**
     * 7.清空待打印队列
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<Boolean> delPrinterQueue(PrinterRequest restRequest) {
        String url = BASE_URL + "/xprinter/delPrinterQueue";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<Boolean> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<Boolean>>(){});
        return result;
    }
    /**
     * 8.查询订单是否打印成功
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<Boolean> queryOrderState(QueryOrderStateRequest restRequest) {
        String url = BASE_URL + "/xprinter/queryOrderState";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<Boolean> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<Boolean>>(){});
        return result;
    }
    /**
     * 9.查询打印机某天的订单统计数
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<OrderStatisResult> queryOrderStatis(QueryOrderStatisRequest restRequest) {
        String url = BASE_URL + "/xprinter/queryOrderStatis";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<OrderStatisResult> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<OrderStatisResult>>(){});
        return result;
    }
    /**
     * 10.查询打印机状态
     *
     * 0、离线 1、在线正常 2、在线不正常
     * å¤‡æ³¨ï¼šå¼‚常一般是无纸,离线的判断是打印机与服务器失去联系超过30秒
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<Integer> queryPrinterStatus(PrinterRequest restRequest) {
        String url = BASE_URL + "/xprinter/queryPrinterStatus";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<Integer> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<Integer>>(){});
        return result;
    }
    /**
     * 10.批量查询打印机状态
     *
     * 0、离线 1、在线正常 2、在线不正常
     * å¤‡æ³¨ï¼šå¼‚常一般是无纸,离线的判断是打印机与服务器失去联系超过30秒
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<List<Integer>> queryPrintersStatus(PrintersRequest restRequest) {
        String url = BASE_URL + "/xprinter/queryPrintersStatus";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<List<Integer>> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<List<Integer>>>(){});
        return result;
    }
    /**
     * 11.云喇叭播放语音
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<String> playVoice(VoiceRequest restRequest) {
        String url = BASE_URL + "/xprinter/playVoice";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<String> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<String>>(){});
        return result;
    }
    /**
     * 12.POS指令
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<String> pos(PrintRequest restRequest) {
        String url = BASE_URL + "/xprinter/pos";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<String> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<String>>(){});
        return result;
    }
    /**
     * 13.钱箱控制
     * @param restRequest
     * @return
     */
    public ObjectRestResponse<String> controlBox(PrintRequest restRequest) {
        String url = BASE_URL + "/xprinter/controlBox";
        String jsonRequest = JSON.toJSONString(restRequest);
        String resp = HttpsUtil.postJson(url, jsonRequest);
        ObjectRestResponse<String> result = JSON.parseObject(resp, new TypeReference<ObjectRestResponse<String>>(){});
        return result;
    }
}
server/services/src/main/java/com/doumee/service/business/impl/PrinterInfoServiceImpl.java
@@ -3,16 +3,11 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.xpyun.XpyunPrintService;
import com.doumee.core.utils.xpyun.XpyunResponse;
import com.doumee.dao.business.PrinterInfoMapper;
import com.doumee.dao.business.model.PrinterInfo;
import com.doumee.service.business.PrinterInfoService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -30,21 +25,8 @@
    @Autowired
    private PrinterInfoMapper printerInfoMapper;
    @Autowired
    private XpyunPrintService xpyunPrintService;
    @Override
    public Integer create(PrinterInfo printerInfo) {
        if (StringUtils.isBlank(printerInfo.getSn())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "打印机SN不能为空");
        }
        if (StringUtils.isBlank(printerInfo.getName())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "打印机名称不能为空");
        }
        XpyunResponse response = xpyunPrintService.addPrinter(printerInfo.getSn(), printerInfo.getName());
        if (response.getCode() != 0) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "芯烨云添加打印机失败:" + response.getMsg());
        }
        printerInfoMapper.insert(printerInfo);
        return printerInfo.getId();
    }
server/services/src/main/java/com/doumee/service/business/impl/ShopInfoServiceImpl.java
@@ -26,6 +26,12 @@
import com.doumee.dao.business.model.Orders;
import com.doumee.dao.business.model.PricingRule;
import com.doumee.dao.business.model.ShopInfo;
import com.doumee.config.xyy.XyyConfig;
import com.doumee.config.xyy.dto.AddPrinterRequest;
import com.doumee.config.xyy.dto.AddPrinterRequestItem;
import com.doumee.config.xyy.dto.DelPrinterRequest;
import com.doumee.config.xyy.vo.ObjectRestResponse;
import com.doumee.config.xyy.vo.PrinterResult;
import com.doumee.dao.dto.*;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.system.SystemUserMapper;
@@ -93,6 +99,12 @@
    @Autowired
    private SmsrecordMapper smsrecordMapper;
    @Autowired
    private PrintService printService;
    @Autowired
    private XyyConfig xyyConfig;
    @Override
    public Integer create(ShopInfo shopInfo) {
        shopInfoMapper.insert(shopInfo);
@@ -870,6 +882,7 @@
        vo.setFeeStandard(shop.getFeeStandard());
        vo.setLatitude(shop.getLatitude());
        vo.setLongitude(shop.getLongitude());
        vo.setLinkPhone(shop.getLinkPhone());
        // é—¨å¤´ç…§ + å†…部照 å…¨è·¯å¾„集合
        String imgPrefix = getShopPrefix();
@@ -1082,6 +1095,7 @@
        // å­˜ä»¶é—¨åº—
        List<Orders> depositSalesOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
                .eq(Orders::getDeleted, Constants.ZERO)
                .notIn(Orders::getStatus,Constants.OrderStatus.cancelled.getStatus(),Constants.OrderStatus.waitPay.getStatus())
                .ge(Orders::getCreateTime, startTime)
                .lt(Orders::getCreateTime, endTime)
                .eq(Orders::getDepositShopId, shopId));
@@ -1089,6 +1103,7 @@
        List<Orders> takeSalesOrders = ordersMapper.selectList(new QueryWrapper<Orders>().lambda()
                .eq(Orders::getDeleted, Constants.ZERO)
                .eq(Orders::getType,Constants.ONE)
                .notIn(Orders::getStatus,Constants.OrderStatus.cancelled.getStatus(),Constants.OrderStatus.waitPay.getStatus())
                .ge(Orders::getCreateTime, startTime)
                .lt(Orders::getCreateTime, endTime)
                .eq(Orders::getTakeShopId, shopId));
@@ -1161,7 +1176,10 @@
                .last("limit 1")
        );
        if(shop==null){
            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"请核对登录手机号是否正确");
        }
        if(Constants.equalsInteger(shop.getStatus(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"门店已禁用,请联系管理员");
        }
        if(!Constants.equalsInteger(shop.getAuditStatus(),Constants.THREE)){
            if(Constants.equalsInteger(shop.getAuditStatus(),Constants.ONE)){
@@ -1219,6 +1237,9 @@
                .last("limit 1"));
        if (shop == null) {
            return null;
        }
        if(Constants.equalsInteger(shop.getStatus(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"门店已禁用,请联系管理员");
        }
        // åˆ›å»ºtoken(generateTokenForRedis å·²è‡ªåŠ¨æ¸…é™¤è¯¥ç”¨æˆ·æ—§token,保证唯一有效)
        String token = JwtTokenUtil.generateTokenForRedis(shop.getId(), Constants.TWO, JSONObject.toJSONString(shop), redisTemplate);
@@ -1418,56 +1439,57 @@
        }
    }
    @Autowired
    private com.doumee.core.utils.xpyun.XpyunPrintService xpyunPrintService;
    @Override
    public void bindPrinter(com.doumee.dao.dto.PrinterBindDTO dto) {
        ShopInfo shop = shopInfoMapper.selectById(dto.getShopId());
    public void maintainPrinterSn(ShopPrinterDTO dto) {
        ShopInfo shop = shopInfoMapper.selectById(dto.getId());
        if (shop == null || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        // è°ƒç”¨èŠ¯çƒ¨äº‘æ³¨å†Œæ‰“å°æœº
        com.doumee.core.utils.xpyun.XpyunResponse resp = xpyunPrintService.addPrinter(
                dto.getPrinterSn(), shop.getName());
        if (resp.getCode() != null && resp.getCode() == 0) {
            log.info("芯烨云打印机注册成功: sn={}", dto.getPrinterSn());
        } else {
            log.warn("芯烨云打印机注册返回非0: sn={}, code={}, msg={}",
                    dto.getPrinterSn(), resp.getCode(), resp.getMsg());
        String oldSn = shop.getPrinterSn();
        String newSn = dto.getPrinterSn();
        boolean hasNewSn = StringUtils.isNotBlank(newSn);
        boolean hasOldSn = StringUtils.isNotBlank(oldSn);
        if (!hasNewSn) {
            // æœªä¼ æ‰“印机SN â†’ åˆ é™¤é€»è¾‘
            if (hasOldSn) {
                delPrinterFromXyy(oldSn);
                shop.setPrinterSn(null);
                shopInfoMapper.updateById(shop);
            }
            return;
        }
        // æ— è®ºäº‘端是否成功,都绑定到门店(可后续重试云端注册)
        ShopInfo update = new ShopInfo();
        update.setId(dto.getShopId());
        update.setPrinterSn(dto.getPrinterSn());
        shopInfoMapper.updateById(update);
        // ä¼ äº†æ‰“印机SN â†’ å¦‚果旧绑定存在,先删除
        if (hasOldSn) {
            delPrinterFromXyy(oldSn);
        }
        // ç»‘定新打印机
        AddPrinterRequest addReq = new AddPrinterRequest();
        xyyConfig.createRequestHeader(addReq);
        addReq.setItems(new AddPrinterRequestItem[]{new AddPrinterRequestItem() {{
            setSn(newSn);
            setName(shop.getName());
        }}});
        ObjectRestResponse<PrinterResult> addResp = printService.addPrinters(addReq);
        if (addResp.getCode() != 0) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "绑定打印机失败:" + addResp.getMsg());
        }
        log.info("绑定成功:{}", newSn);
        shop.setPrinterSn(newSn);
        shopInfoMapper.updateById(shop);
    }
    @Override
    public void unbindPrinter(Integer shopId) {
        ShopInfo shop = shopInfoMapper.selectById(shopId);
        if (shop == null || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
    private void delPrinterFromXyy(String sn) {
        DelPrinterRequest delReq = new DelPrinterRequest();
        xyyConfig.createRequestHeader(delReq);
        delReq.setSnlist(new String[]{sn});
        ObjectRestResponse<PrinterResult> delResp = printService.delPrinters(delReq);
        if (delResp.getCode() != 0) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "解绑打印机失败:" + delResp.getMsg());
        }
        if (StringUtils.isNotBlank(shop.getPrinterSn())) {
            xpyunPrintService.deletePrinter(shop.getPrinterSn());
        }
        ShopInfo update = new ShopInfo();
        update.setId(shopId);
        update.setPrinterSn(null);
        shopInfoMapper.updateById(update);
    }
    @Override
    public Object queryPrinterStatus(Integer shopId) {
        ShopInfo shop = shopInfoMapper.selectById(shopId);
        if (shop == null || Constants.equalsInteger(shop.getDeleted(), Constants.ONE)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if (StringUtils.isBlank(shop.getPrinterSn())) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "该门店未绑定打印机");
        }
        return xpyunPrintService.queryPrinterStatus(shop.getPrinterSn());
        log.info("解绑成功:{}", sn);
    }
}
server/services/src/main/resources/application-dev.yml
@@ -64,8 +64,8 @@
des_pwd: 123456SDFKDJF
jpush:
  appKey:
  masterSecret:
  appKey: bb8fd4bd06c8dcb004f4ee1e
  masterSecret: 569a75763aa5a59377c46fbb
  apnsProduction: false
knife4j:
server/services/src/main/resources/application-pro.yml
@@ -30,6 +30,11 @@
          ssl:
            enable: true
debug_model: false
########################极光推送配置########################
jpush:
  appKey: bb8fd4bd06c8dcb004f4ee1e
  masterSecret: 569a75763aa5a59377c46fbb
  apnsProduction: false
# Swagger配置
swagger:
server/web/src/main/java/com/doumee/api/web/ConfigApi.java
@@ -173,6 +173,15 @@
        return ApiResponse.success("查询成功", areasService.getOpenedCityByName(cityName));
    }
    @ApiOperation(value = "根据城市编码查询城市信息", notes = "仅返回已开通的城市,未开通返回空")
    @GetMapping("/getCityByCode")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "城市编码", required = true)
    })
    public ApiResponse<Areas> getCityByCode(@RequestParam String code) {
        return ApiResponse.success("查询成功", areasService.getOpenedCityByCode(code));
    }
    @LoginRequired
    @ApiOperation(value = "会员通知消息分页", notes = "未读优先,时间倒序")
    @PostMapping("/memberNoticePage")
server/web/src/main/java/com/doumee/api/web/DriverInfoApi.java
@@ -24,6 +24,7 @@
import com.doumee.dao.vo.DriverCenterVO;
import com.doumee.dao.vo.DriverGrabOrderVO;
import com.doumee.dao.vo.DriverOrderDetailVO;
import com.doumee.core.utils.jpush.JPushUtil;
import com.doumee.service.business.DriverInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -286,4 +287,26 @@
        return ApiResponse.success(driverInfoService.checkDriverToken(token));
    }
    @LoginDriverRequired
    @ApiOperation("注册极光推送别名")
    @PostMapping("/registerJpushAlias")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "司机token值", required = true)
    })
    public ApiResponse registerJpushAlias(@RequestParam String jpushAlias) {
        driverInfoService.registerJpushAlias(this.getDriverId(), jpushAlias);
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("极光推送测试")
    @GetMapping("/testJpush")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "title", value = "通知标题", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "content", value = "通知内容", required = true)
    })
    public ApiResponse<Boolean> testJpush(@RequestParam String telephone, @RequestParam String title, @RequestParam String content) {
        boolean result = JPushUtil.sendByAlias(org.springframework.util.DigestUtils.md5DigestAsHex(telephone.getBytes()), title, content, null);
        return ApiResponse.success("推送" + (result ? "成功" : "失败"), result);
    }
}
server/web/src/main/java/com/doumee/api/web/ShopInfoApi.java
@@ -144,4 +144,16 @@
        return ApiResponse.success("密码修改成功,请重新登录");
    }
    @LoginShopRequired
    @ApiOperation("门店打印订单标签")
    @GetMapping("/printOrderLabel/{orderId}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "门店token值", required = true),
            @ApiImplicitParam(paramType = "path", dataType = "Integer", name = "orderId", value = "订单主键", required = true)
    })
    public ApiResponse printOrderLabel(@PathVariable Integer orderId) {
        ordersService.printOrderLabel(orderId, this.getShopId());
        return ApiResponse.success("打印成功");
    }
}
server/web/src/main/resources/application.yml
@@ -6,7 +6,7 @@
  name: é«˜é“è¡ŒæŽå¯„å­˜
  version: 1.0.0
  # çŽ¯å¢ƒï¼Œç”Ÿäº§çŽ¯å¢ƒproduction,开发环境development
  env: development
  env: production
  # æ¨¡å¼ï¼Œtesting测试模式
  mode: testing
small-program/unpackage/dist/dev/.automator/mp-weixin/.automator.json
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/components/auth-login/auth-login.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/components/custom-tabbar/custom-tabbar.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-search/u-search.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/address/address.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/all-orders/all-orders.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/delivery-order-detail/delivery-order-detail.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/evaluate/evaluate.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/itinerary/itinerary.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/luggage-storage/luggage-storage.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/message/message.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/mine/mine.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/orders/orders.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/payment-success/payment-success.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/rich-text/rich-text.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/select-city/select-city.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/settings/settings.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/storage-order-detail/storage-order-detail.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/storage-point-detail/storage-point-detail.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/storage-point/storage-point.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/pages/store-apply/store-apply.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/common/vendor.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/article-details/article-details.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/change-binding/change-binding.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/change-password/change-password.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/login/login.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/message/message.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/mine/mine.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/order-details/order-details.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/orders/orders.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/qualification/qualification.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/select/select.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/settings/settings.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/store-home/store-home.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/store-info/store-info.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/wallet/wallet.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/webview/webview.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/withdraw-success/withdraw-success.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/withdraw/withdraw.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/write-off-a/write-off-a.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/.sourcemap/mp-weixin/shop/pages/write-off/write-off.js.map
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/app.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/app.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/app.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/common/main.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/common/main.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/common/runtime.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/common/vendor.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/components/auth-login/auth-login.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/components/auth-login/auth-login.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/components/auth-login/auth-login.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/components/auth-login/auth-login.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/components/custom-tabbar/custom-tabbar.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/components/custom-tabbar/custom-tabbar.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/components/custom-tabbar/custom-tabbar.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/components/custom-tabbar/custom-tabbar.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-action-sheet/u-action-sheet.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-badge/u-badge.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-datetime-picker/u-datetime-picker.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-gap/u-gap.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-icon/u-icon.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-line/u-line.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-line/u-line.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-line/u-line.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-line/u-line.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-loading-icon/u-loading-icon.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-modal/u-modal.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-overlay/u-overlay.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-picker/u-picker.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-popup/u-popup.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-safe-bottom/u-safe-bottom.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-search/u-search.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-search/u-search.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-search/u-search.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-search/u-search.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-status-bar/u-status-bar.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-switch/u-switch.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-tabs/u-tabs.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-toolbar/u-toolbar.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/node-modules/uview-ui/components/u-transition/u-transition.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/address/address.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/address/address.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/address/address.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/address/address.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/all-orders/all-orders.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/all-orders/all-orders.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/all-orders/all-orders.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/all-orders/all-orders.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/delivery-order-detail/delivery-order-detail.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/delivery-order-detail/delivery-order-detail.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/delivery-order-detail/delivery-order-detail.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/delivery-order-detail/delivery-order-detail.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/details-entry/details-entry.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/details-entry/details-entry.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/details-entry/details-entry.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/evaluate/evaluate.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/evaluate/evaluate.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/evaluate/evaluate.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/evaluate/evaluate.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/index/index.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/index/index.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/index/index.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/index/index.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/itinerary/itinerary.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/itinerary/itinerary.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/itinerary/itinerary.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/itinerary/itinerary.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/luggage-storage/luggage-storage.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/luggage-storage/luggage-storage.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/luggage-storage/luggage-storage.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/luggage-storage/luggage-storage.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/message/message.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/message/message.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/message/message.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/message/message.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/mine/mine.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/mine/mine.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/mine/mine.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/mine/mine.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/new-address/new-address.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/new-address/new-address.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/new-address/new-address.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/orders/orders.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/orders/orders.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/orders/orders.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/orders/orders.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/payment-success/payment-success.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/payment-success/payment-success.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/payment-success/payment-success.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/payment-success/payment-success.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/rich-text/rich-text.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/rich-text/rich-text.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/rich-text/rich-text.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/rich-text/rich-text.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/select-city/select-city.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/select-city/select-city.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/select-city/select-city.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/select-city/select-city.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/settings/settings.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/settings/settings.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/settings/settings.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/settings/settings.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-order-detail/storage-order-detail.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-order-detail/storage-order-detail.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-order-detail/storage-order-detail.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-order-detail/storage-order-detail.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point-detail/storage-point-detail.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point-detail/storage-point-detail.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point-detail/storage-point-detail.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point-detail/storage-point-detail.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point/storage-point.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point/storage-point.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point/storage-point.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/storage-point/storage-point.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/store-apply/store-apply.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/store-apply/store-apply.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/store-apply/store-apply.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/pages/store-apply/store-apply.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/project.config.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/project.private.config.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/common/vendor.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/article-details/article-details.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/article-details/article-details.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/article-details/article-details.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/article-details/article-details.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-binding/change-binding.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-binding/change-binding.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-binding/change-binding.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-binding/change-binding.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-password/change-password.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-password/change-password.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-password/change-password.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/change-password/change-password.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/login/login.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/login/login.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/login/login.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/login/login.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/message/message.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/message/message.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/message/message.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/message/message.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/mine/mine.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/mine/mine.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/mine/mine.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/mine/mine.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/order-details/order-details.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/order-details/order-details.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/order-details/order-details.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/order-details/order-details.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/orders/orders.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/orders/orders.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/orders/orders.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/orders/orders.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/qualification/qualification.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/qualification/qualification.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/qualification/qualification.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/qualification/qualification.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/select/select.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/select/select.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/select/select.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/select/select.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/settings/settings.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/settings/settings.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/settings/settings.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/settings/settings.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-home/store-home.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-home/store-home.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-home/store-home.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-home/store-home.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-info/store-info.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-info/store-info.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-info/store-info.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/store-info/store-info.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/wallet/wallet.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/wallet/wallet.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/wallet/wallet.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/wallet/wallet.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/webview/webview.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/webview/webview.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/webview/webview.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/webview/webview.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw-success/withdraw-success.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw-success/withdraw-success.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw-success/withdraw-success.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw-success/withdraw-success.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw/withdraw.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw/withdraw.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw/withdraw.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/withdraw/withdraw.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off-a/write-off-a.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off-a/write-off-a.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off-a/write-off-a.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off-a/write-off-a.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off/write-off.js
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off/write-off.json
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off/write-off.wxml
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/pages/write-off/write-off.wxss
ÎļþÒÑɾ³ý
small-program/unpackage/dist/dev/mp-weixin/shop/static/icon/ic_dingdanguanli@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/shop/static/icon/ic_paysuccess@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/shop/static/icon/ic_wodezizhi@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/shop/static/icon/ic_zhuanshuhaibao@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/shop/static/icon/ic_zitihexiao@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/shop/static/images/ic_alipay@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/shop/static/images/ic_saoma@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/address_ic_edit@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ar_jicundian@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ar_map@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ar_open1@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ar_open_sel@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/default2.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/diancan_ic_success@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/dizhi.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/end.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/home1_ic_location@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/home_ic_daizhifu@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/home_ic_location3@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/home_ic_location@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/home_ic_search@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_accept@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_accept_sel@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_address@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_alipay@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_call@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_camera@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_city@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_cppy@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_fail@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_home@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_jia@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_jian@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_list@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_map@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_notice@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_option@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_pass@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_paysuccess@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_renzhengzhong@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_search2@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_shouru@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_store@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_tips@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_tixian@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_tuikuan@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_visible@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/ic_waring@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/mine_ic_daifukuan@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/mine_ic_daishouhuo@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/mine_ic_tuikuan@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_home@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_home_sel@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_ic_back.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_qianbao@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_qianbao_sel@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_wode@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_wode_sel@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_xiaoxi@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_xiaoxi_sel@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_xingcheng@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/nav_xingcheng_sel@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/start.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/icon/xiaoxi_ic_tongzhi3@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/image/bg_card@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/image/bg_home@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/image/btn_upload@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/image/default_nodata_white@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/image/home_ic_jicun@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/image/home_ic_qujian@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/image/logo@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/image/share@2x.png
Binary files differ
small-program/unpackage/dist/dev/mp-weixin/static/image/tx@2x.png
Binary files differ