├── App.vue ├── README.md ├── app.config.js ├── common ├── css │ ├── app.scss │ └── uni.scss ├── function │ └── myPubFunction.js └── scss │ └── common.scss ├── components ├── comment │ └── zjs-comment.vue ├── uni-fab │ └── uni-fab.vue └── watch-login │ ├── css │ └── icon.css │ ├── watch-button.vue │ └── watch-input.vue ├── js_sdk └── u-charts │ ├── component.vue │ ├── u-charts.js │ └── u-charts.min.js ├── main.js ├── manifest.json ├── package.json ├── pages.json ├── pages ├── archives │ └── archives.vue ├── firendCircle │ └── firendCircle.vue ├── index │ └── index.vue ├── login │ ├── css │ │ └── main.css │ ├── login.vue │ └── register.vue └── my │ └── my.vue ├── static └── img │ ├── find.png │ ├── findActive.png │ ├── guidang.png │ ├── guidangActive.png │ ├── home.png │ ├── homeActive.png │ ├── my.png │ └── myActive.png ├── store ├── index.js └── modules │ ├── $app.js │ └── $user.js ├── subPackages ├── archivesSelect │ └── archivesSelect.vue ├── articleDetail │ └── articleDetail.vue ├── comment │ ├── index.vue │ └── reply.vue ├── editUser │ └── editUser.vue ├── error │ └── 404 │ │ └── 404.vue ├── releaseFirendCircle │ └── releaseFirendCircle.vue ├── search │ └── search.vue └── tags │ └── tags.vue ├── template.h5.html ├── uni.scss ├── uniCloud-aliyun ├── cloudfunctions │ └── router │ │ ├── config.js │ │ ├── dao │ │ ├── index.js │ │ └── modules │ │ │ └── userDao.js │ │ ├── index.js │ │ ├── middleware │ │ ├── index.js │ │ └── modules │ │ │ ├── customFilter1.js │ │ │ ├── customFilter2.js │ │ │ └── returnUserInfoFilter.js │ │ ├── package.json │ │ ├── router.param.json │ │ ├── service │ │ ├── admin │ │ │ ├── article │ │ │ │ └── sys │ │ │ │ │ ├── add.js │ │ │ │ │ ├── delete.js │ │ │ │ │ ├── getCategoryAndTag.js │ │ │ │ │ ├── getCountByMonth.js │ │ │ │ │ ├── getList.js │ │ │ │ │ └── update.js │ │ │ ├── category │ │ │ │ └── sys │ │ │ │ │ ├── add.js │ │ │ │ │ ├── delete.js │ │ │ │ │ ├── getList.js │ │ │ │ │ └── update.js │ │ │ ├── comment │ │ │ │ └── sys │ │ │ │ │ ├── delete.js │ │ │ │ │ └── getList.js │ │ │ ├── dashboard │ │ │ │ └── sys │ │ │ │ │ ├── getAllCount.js │ │ │ │ │ └── getAllCountByMonth.js │ │ │ ├── friend │ │ │ │ └── sys │ │ │ │ │ ├── delete.js │ │ │ │ │ └── getList.js │ │ │ ├── select │ │ │ │ └── kh │ │ │ │ │ └── user.js │ │ │ ├── system │ │ │ │ ├── app │ │ │ │ │ ├── sys │ │ │ │ │ │ ├── add.js │ │ │ │ │ │ ├── delete.js │ │ │ │ │ │ ├── getInfo.js │ │ │ │ │ │ ├── getList.js │ │ │ │ │ │ └── update.js │ │ │ │ │ └── util │ │ │ │ │ │ └── formRules.js │ │ │ │ ├── menu │ │ │ │ │ ├── sys │ │ │ │ │ │ ├── add.js │ │ │ │ │ │ ├── adds.js │ │ │ │ │ │ ├── bindPermission.js │ │ │ │ │ │ ├── delete.js │ │ │ │ │ │ ├── getAll.js │ │ │ │ │ │ ├── getCascader.js │ │ │ │ │ │ └── update.js │ │ │ │ │ └── util │ │ │ │ │ │ └── formRules.js │ │ │ │ ├── permission │ │ │ │ │ ├── sys │ │ │ │ │ │ ├── add.js │ │ │ │ │ │ ├── delete.js │ │ │ │ │ │ ├── getAll.js │ │ │ │ │ │ ├── update.js │ │ │ │ │ │ ├── updateCategory.js │ │ │ │ │ │ └── updateLevel.js │ │ │ │ │ └── util │ │ │ │ │ │ └── formRules.js │ │ │ │ ├── role │ │ │ │ │ ├── sys │ │ │ │ │ │ ├── add.js │ │ │ │ │ │ ├── bindMenu.js │ │ │ │ │ │ ├── bindPermission.js │ │ │ │ │ │ ├── delete.js │ │ │ │ │ │ ├── getList.js │ │ │ │ │ │ └── update.js │ │ │ │ │ └── util │ │ │ │ │ │ └── formRules.js │ │ │ │ └── user │ │ │ │ │ ├── sys │ │ │ │ │ ├── add.js │ │ │ │ │ ├── batchUpdateAppLogin.js │ │ │ │ │ ├── batchUpdateInviterUid.js │ │ │ │ │ ├── batchUpdateStatus.js │ │ │ │ │ ├── bindRole.js │ │ │ │ │ ├── delete.js │ │ │ │ │ ├── getList.js │ │ │ │ │ ├── resetPassword.js │ │ │ │ │ └── update.js │ │ │ │ │ └── util │ │ │ │ │ └── formRules.js │ │ │ ├── system_uni │ │ │ │ ├── admin-log │ │ │ │ │ └── sys │ │ │ │ │ │ └── getList.js │ │ │ │ ├── components-dynamic │ │ │ │ │ └── sys │ │ │ │ │ │ ├── add.js │ │ │ │ │ │ ├── delete.js │ │ │ │ │ │ ├── getList.js │ │ │ │ │ │ └── update.js │ │ │ │ ├── global-data │ │ │ │ │ ├── sys │ │ │ │ │ │ ├── add.js │ │ │ │ │ │ ├── delete.js │ │ │ │ │ │ ├── getList.js │ │ │ │ │ │ └── update.js │ │ │ │ │ └── util │ │ │ │ │ │ └── formRules.js │ │ │ │ ├── uni-id-files │ │ │ │ │ ├── categories │ │ │ │ │ │ ├── kh │ │ │ │ │ │ │ └── getList.js │ │ │ │ │ │ └── sys │ │ │ │ │ │ │ ├── add.js │ │ │ │ │ │ │ ├── delete.js │ │ │ │ │ │ │ └── update.js │ │ │ │ │ └── files │ │ │ │ │ │ └── kh │ │ │ │ │ │ ├── delete.js │ │ │ │ │ │ ├── getList.js │ │ │ │ │ │ └── update.js │ │ │ │ └── uni-id-log │ │ │ │ │ └── sys │ │ │ │ │ └── getList.js │ │ │ ├── tag │ │ │ │ └── sys │ │ │ │ │ ├── add.js │ │ │ │ │ ├── delete.js │ │ │ │ │ ├── getList.js │ │ │ │ │ └── update.js │ │ │ └── user │ │ │ │ ├── pub │ │ │ │ └── test.js │ │ │ │ └── sys │ │ │ │ └── test.js │ │ ├── client │ │ │ ├── article │ │ │ │ └── kh │ │ │ │ │ └── getList.js │ │ │ ├── comment │ │ │ │ └── kh │ │ │ │ │ ├── addComment.js │ │ │ │ │ ├── getComment.js │ │ │ │ │ └── updateComment.js │ │ │ ├── friendCircle │ │ │ │ └── kh │ │ │ │ │ ├── addFriendCircle.js │ │ │ │ │ ├── addFriendComment.js │ │ │ │ │ ├── addFriendLike.js │ │ │ │ │ └── getFriendList.js │ │ │ ├── reply │ │ │ │ └── kh │ │ │ │ │ └── addReply.js │ │ │ └── tag │ │ │ │ └── kh │ │ │ │ └── tagCoutByName.js │ │ ├── plugs │ │ │ └── components_dynamic │ │ │ │ └── client │ │ │ │ └── pub │ │ │ │ ├── getComponentsDynamicData.js │ │ │ │ ├── init.js │ │ │ │ └── update.js │ │ ├── template │ │ │ ├── db_api │ │ │ │ ├── pub │ │ │ │ │ ├── Promise.all.js │ │ │ │ │ ├── add.js │ │ │ │ │ ├── adds.js │ │ │ │ │ ├── avg.js │ │ │ │ │ ├── count.js │ │ │ │ │ ├── del.js │ │ │ │ │ ├── deleteById.js │ │ │ │ │ ├── findById.js │ │ │ │ │ ├── findByWhereJson.js │ │ │ │ │ ├── geo.js │ │ │ │ │ ├── getList.js │ │ │ │ │ ├── groupCount.js │ │ │ │ │ ├── max.js │ │ │ │ │ ├── min.js │ │ │ │ │ ├── sample.js │ │ │ │ │ ├── select.js │ │ │ │ │ ├── select2.js │ │ │ │ │ ├── selects.js │ │ │ │ │ ├── selects_geo.js │ │ │ │ │ ├── selects_getOne.js │ │ │ │ │ ├── selects_mode_2.js │ │ │ │ │ ├── selects_mode_3.js │ │ │ │ │ ├── sum.js │ │ │ │ │ ├── update.js │ │ │ │ │ ├── updateAndReturn.js │ │ │ │ │ └── updateById.js │ │ │ │ └── sys │ │ │ │ │ ├── add.js │ │ │ │ │ ├── delete.js │ │ │ │ │ ├── getList.js │ │ │ │ │ └── update.js │ │ │ ├── openapi │ │ │ │ └── weixin │ │ │ │ │ └── pub │ │ │ │ │ ├── imgSecCheck.js │ │ │ │ │ ├── msgSecCheck.js │ │ │ │ │ └── sendMessage.js │ │ │ └── test │ │ │ │ ├── pub │ │ │ │ ├── addition.js │ │ │ │ ├── findGoodsInfo.js │ │ │ │ └── temporaryCache.js │ │ │ │ └── sys │ │ │ │ └── test.js │ │ └── user │ │ │ ├── kh │ │ │ ├── acceptInvite.js │ │ │ ├── addUploadRecord.js │ │ │ ├── bindAlipay.js │ │ │ ├── bindEmail.js │ │ │ ├── bindMobile.js │ │ │ ├── bindNewEmail.js │ │ │ ├── bindNewMobile.js │ │ │ ├── bindQQ.js │ │ │ ├── bindWeixin.js │ │ │ ├── getInvitedUser.js │ │ │ ├── getMenu.js │ │ │ ├── getMyUserInfo.js │ │ │ ├── getWeixinMPqrcode.js │ │ │ ├── getWeixinMPscheme.js │ │ │ ├── resetPwd.js │ │ │ ├── setAvatar.js │ │ │ ├── setUserInviteCode.js │ │ │ ├── unbindAlipay.js │ │ │ ├── unbindEmail.js │ │ │ ├── unbindMobile.js │ │ │ ├── unbindQQ.js │ │ │ ├── unbindWeixin.js │ │ │ ├── updatePwd.js │ │ │ └── updateUser.js │ │ │ ├── pub │ │ │ ├── checkToken.js │ │ │ ├── code2SessionAlipay.js │ │ │ ├── code2SessionWeixin.js │ │ │ ├── getPhoneNumber.js │ │ │ ├── getUserInfoByInviteCode.js │ │ │ ├── login.js │ │ │ ├── loginByAlipay.js │ │ │ ├── loginByEmail.js │ │ │ ├── loginByQQ.js │ │ │ ├── loginBySms.js │ │ │ ├── loginByUniverify.js │ │ │ ├── loginByWeixin.js │ │ │ ├── loginByWeixinPhoneNumber.js │ │ │ ├── logout.js │ │ │ ├── register.js │ │ │ ├── resetPasswordByEmail.js │ │ │ ├── resetPasswordByMobile.js │ │ │ ├── sendEmailCode.js │ │ │ └── sendSmsCode.js │ │ │ ├── sys │ │ │ ├── encryptPwd.js │ │ │ └── setVerifyCode.js │ │ │ └── util │ │ │ └── login_log.js │ │ └── util │ │ ├── pubFunction.js │ │ └── urlrewrite.js └── database │ ├── blog-article-category.schema.json │ ├── blog-article-comment.schema.json │ ├── blog-article-tag.schema.json │ ├── blog-article.schema.json │ ├── blog-comment-reply.schema.json │ ├── blog-friend-like.schema.json │ ├── blog-friend-reply.schema.json │ ├── blog-friend.schema.json │ ├── opendb-admin-menus.schema.json │ ├── opendb-app-list.schema.json │ ├── opendb-verify-codes.schema.json │ ├── uni-id-log.schema.json │ ├── uni-id-permissions.schema.json │ ├── uni-id-roles.schema.json │ └── uni-id-users.schema.json ├── uni_modules ├── uni-config-center │ ├── package.json │ └── uniCloud │ │ └── cloudfunctions │ │ └── common │ │ └── uni-config-center │ │ ├── index.js │ │ ├── package.json │ │ ├── uni-id │ │ └── config.json │ │ └── vk-unicloud │ │ └── index.js ├── uni-file-picker │ ├── components │ │ └── uni-file-picker │ │ │ ├── choose-and-upload-file.js │ │ │ ├── uni-file-picker.vue │ │ │ ├── upload-file.vue │ │ │ ├── upload-image.vue │ │ │ └── utils.js │ └── package.json ├── uni-id │ ├── package.json │ └── uniCloud │ │ └── cloudfunctions │ │ └── common │ │ └── uni-id │ │ ├── index.js │ │ └── package.json ├── vk-unicloud │ ├── components │ │ └── vk-data-verification-code │ │ │ └── vk-data-verification-code.vue │ ├── index.js │ ├── package.json │ ├── uniCloud │ │ └── cloudfunctions │ │ │ └── common │ │ │ └── vk-unicloud │ │ │ ├── LICENSE.md │ │ │ ├── index.js │ │ │ └── package.json │ └── vk_modules │ │ └── vk-unicloud-page │ │ ├── index.js │ │ └── libs │ │ ├── function │ │ ├── aliyunOSSUtil.js │ │ ├── debounce.js │ │ ├── deepClone.js │ │ ├── deepMerge.js │ │ ├── index.js │ │ ├── modal.js │ │ ├── permission.js │ │ ├── queryParams.js │ │ ├── setClipboardData.js │ │ ├── throttle.js │ │ ├── timeUtil.js │ │ ├── treeUtil.js │ │ ├── updateManager.js │ │ ├── vk.filters.js │ │ ├── vk.h5.js │ │ ├── vk.importObject.js │ │ ├── vk.localStorage.js │ │ ├── vk.navigate.js │ │ ├── vk.request.js │ │ └── weixin-js-sdk.js │ │ ├── install │ │ └── console.log.js │ │ ├── mixin │ │ └── mixin.js │ │ ├── openapi │ │ ├── baidu │ │ │ └── index.js │ │ └── index.js │ │ ├── store │ │ ├── libs │ │ │ └── error.js │ │ └── mixin │ │ │ └── mixin.js │ │ └── vk-unicloud │ │ ├── vk-unicloud-callFunctionUtil.js │ │ └── vk-unicloud-user-center.js └── vk-uview-ui │ ├── changelog.md │ ├── components │ ├── u-action-sheet │ │ └── u-action-sheet.vue │ ├── u-alert-tips │ │ └── u-alert-tips.vue │ ├── u-avatar-cropper │ │ ├── u-avatar-cropper.vue │ │ └── weCropper.js │ ├── u-avatar │ │ └── u-avatar.vue │ ├── u-back-top │ │ └── u-back-top.vue │ ├── u-badge │ │ └── u-badge.vue │ ├── u-button │ │ └── u-button.vue │ ├── u-calendar │ │ └── u-calendar.vue │ ├── u-car-keyboard │ │ └── u-car-keyboard.vue │ ├── u-card │ │ └── u-card.vue │ ├── u-cell-group │ │ └── u-cell-group.vue │ ├── u-cell-item │ │ └── u-cell-item.vue │ ├── u-checkbox-group │ │ └── u-checkbox-group.vue │ ├── u-checkbox │ │ └── u-checkbox.vue │ ├── u-circle-progress │ │ └── u-circle-progress.vue │ ├── u-col │ │ └── u-col.vue │ ├── u-collapse-item │ │ └── u-collapse-item.vue │ ├── u-collapse │ │ └── u-collapse.vue │ ├── u-column-notice │ │ └── u-column-notice.vue │ ├── u-count-down │ │ ├── u-count-down.vue │ │ └── utils.js │ ├── u-count-to │ │ └── u-count-to.vue │ ├── u-divider │ │ └── u-divider.vue │ ├── u-dropdown-item │ │ └── u-dropdown-item.vue │ ├── u-dropdown │ │ └── u-dropdown.vue │ ├── u-empty │ │ └── u-empty.vue │ ├── u-field │ │ └── u-field.vue │ ├── u-form-item │ │ └── u-form-item.vue │ ├── u-form │ │ └── u-form.vue │ ├── u-full-screen │ │ └── u-full-screen.vue │ ├── u-gap │ │ └── u-gap.vue │ ├── u-grid-item │ │ └── u-grid-item.vue │ ├── u-grid │ │ └── u-grid.vue │ ├── u-icon │ │ └── u-icon.vue │ ├── u-image │ │ └── u-image.vue │ ├── u-index-anchor │ │ └── u-index-anchor.vue │ ├── u-index-list │ │ └── u-index-list.vue │ ├── u-input │ │ └── u-input.vue │ ├── u-keyboard │ │ └── u-keyboard.vue │ ├── u-lazy-load │ │ └── u-lazy-load.vue │ ├── u-line-progress │ │ └── u-line-progress.vue │ ├── u-line │ │ └── u-line.vue │ ├── u-link │ │ └── u-link.vue │ ├── u-loading-page │ │ └── u-loading-page.vue │ ├── u-loading │ │ └── u-loading.vue │ ├── u-loadmore │ │ └── u-loadmore.vue │ ├── u-mask │ │ └── u-mask.vue │ ├── u-message-input │ │ └── u-message-input.vue │ ├── u-modal │ │ └── u-modal.vue │ ├── u-navbar │ │ └── u-navbar.vue │ ├── u-no-network │ │ └── u-no-network.vue │ ├── u-notice-bar │ │ └── u-notice-bar.vue │ ├── u-number-box │ │ └── u-number-box.vue │ ├── u-number-keyboard │ │ └── u-number-keyboard.vue │ ├── u-parse │ │ ├── libs │ │ │ ├── CssHandler.js │ │ │ ├── MpHtmlParser.js │ │ │ ├── config.js │ │ │ └── trees.vue │ │ └── u-parse.vue │ ├── u-picker │ │ └── u-picker.vue │ ├── u-popup │ │ └── u-popup.vue │ ├── u-radio-group │ │ └── u-radio-group.vue │ ├── u-radio │ │ └── u-radio.vue │ ├── u-rate │ │ └── u-rate.vue │ ├── u-read-more │ │ └── u-read-more.vue │ ├── u-row-notice │ │ └── u-row-notice.vue │ ├── u-row │ │ └── u-row.vue │ ├── u-search │ │ └── u-search.vue │ ├── u-section │ │ └── u-section.vue │ ├── u-select │ │ └── u-select.vue │ ├── u-skeleton │ │ └── u-skeleton.vue │ ├── u-slider │ │ └── u-slider.vue │ ├── u-steps │ │ └── u-steps.vue │ ├── u-sticky │ │ └── u-sticky.vue │ ├── u-subsection │ │ └── u-subsection.vue │ ├── u-swipe-action │ │ └── u-swipe-action.vue │ ├── u-swiper │ │ └── u-swiper.vue │ ├── u-switch │ │ └── u-switch.vue │ ├── u-tabbar │ │ └── u-tabbar.vue │ ├── u-table │ │ └── u-table.vue │ ├── u-tabs-swiper │ │ └── u-tabs-swiper.vue │ ├── u-tabs │ │ └── u-tabs.vue │ ├── u-tag │ │ └── u-tag.vue │ ├── u-td │ │ └── u-td.vue │ ├── u-th │ │ └── u-th.vue │ ├── u-time-line-item │ │ └── u-time-line-item.vue │ ├── u-time-line │ │ └── u-time-line.vue │ ├── u-toast │ │ └── u-toast.vue │ ├── u-top-tips │ │ └── u-top-tips.vue │ ├── u-tr │ │ └── u-tr.vue │ ├── u-upload │ │ └── u-upload.vue │ ├── u-verification-code │ │ └── u-verification-code.vue │ ├── u-waterfall │ │ └── u-waterfall.vue │ └── vk-uview-ui │ │ └── vk-uview-ui.vue │ ├── iconfont.css │ ├── index.js │ ├── index.scss │ ├── libs │ ├── address │ │ ├── areas.json │ │ ├── citys.json │ │ └── provinces.json │ ├── config │ │ ├── config.js │ │ └── zIndex.js │ ├── css │ │ ├── color.scss │ │ ├── common.scss │ │ ├── style.components.scss │ │ ├── style.h5.scss │ │ ├── style.mp.scss │ │ ├── style.nvue.scss │ │ └── style.vue.scss │ ├── function │ │ ├── $parent.js │ │ ├── addUnit.js │ │ ├── bem.js │ │ ├── color.js │ │ ├── colorGradient.js │ │ ├── debounce.js │ │ ├── deepClone.js │ │ ├── deepMerge.js │ │ ├── getParent.js │ │ ├── guid.js │ │ ├── md5.js │ │ ├── queryParams.js │ │ ├── random.js │ │ ├── randomArray.js │ │ ├── route.js │ │ ├── sys.js │ │ ├── test.js │ │ ├── throttle.js │ │ ├── timeFormat.js │ │ ├── timeFrom.js │ │ ├── toast.js │ │ ├── trim.js │ │ └── type2icon.js │ ├── mixin │ │ ├── mixin.js │ │ └── mpShare.js │ ├── request │ │ └── index.js │ ├── store │ │ └── index.js │ └── util │ │ ├── async-validator.js │ │ └── emitter.js │ ├── package.json │ ├── readme.md │ └── theme.scss └── untils └── index.js /App.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 32 | -------------------------------------------------------------------------------- /common/css/app.scss: -------------------------------------------------------------------------------- 1 | /* 这里是你自己写的全局css样式 */ 2 | /* #ifdef H5 */ 3 | .uni-mask, 4 | .uni-modal, 5 | uni-toast, 6 | uni-modal, 7 | .uni-actionsheet { 8 | z-index: 999999 !important; 9 | } 10 | /* #endif */ 11 | -------------------------------------------------------------------------------- /common/function/myPubFunction.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 自定义公共函数 3 | */ 4 | var myfn = {}; 5 | /** 6 | * 测试函数test1 7 | * vk.myfn.test1(); 8 | */ 9 | myfn.test1 = function(obj = {}) { 10 | let vk = uni.vk; 11 | console.log("执行了自定义公共函数test1"); 12 | return obj; 13 | }; 14 | 15 | export default myfn; 16 | -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | import App from './App' 2 | import store from './store' 3 | import config from '@/app.config.js' 4 | 5 | // 引入 uView UI 6 | import uView from './uni_modules/vk-uview-ui'; 7 | // 引入 vk框架前端 8 | import vk from './uni_modules/vk-unicloud'; 9 | // #ifndef VUE3 10 | import Vue from 'vue' 11 | 12 | // 引入 uView UI 13 | Vue.use(uView); 14 | 15 | // 引入 vk框架前端 16 | Vue.use(vk); 17 | 18 | // 初始化 vk框架 19 | Vue.prototype.vk.init({ 20 | Vue, // Vue实例 21 | config, // 配置 22 | }); 23 | 24 | Vue.config.productionTip = false 25 | 26 | App.mpType = 'app' 27 | 28 | const app = new Vue({ 29 | store, 30 | ...App 31 | }); 32 | 33 | app.$mount(); 34 | // #endif 35 | 36 | // #ifdef VUE3 37 | import { createSSRApp } from 'vue' 38 | 39 | export function createApp() { 40 | const app = createSSRApp(App) 41 | 42 | // 引入vuex 43 | app.use(store) 44 | 45 | // 引入 uView UI 46 | // app.use(uView) 47 | 48 | // 引入 vk框架前端 49 | app.use(vk); 50 | 51 | // 初始化 vk框架 52 | app.config.globalProperties.vk.init({ 53 | Vue: app, // Vue实例 54 | config, // 配置 55 | }); 56 | 57 | return { app } 58 | } 59 | // #endif -------------------------------------------------------------------------------- /pages/login/css/main.css: -------------------------------------------------------------------------------- 1 | .content { 2 | display: flex; 3 | flex-direction: column; 4 | justify-content:center; 5 | /* margin-top: 128rpx; */ 6 | } 7 | 8 | /* 头部 logo */ 9 | .header { 10 | border-radius:50%; 11 | margin-top: 128rpx; 12 | margin-bottom: 72rpx; 13 | margin-left: auto; 14 | margin-right: auto; 15 | } 16 | .header image{ 17 | width:161rpx; 18 | height:161rpx; 19 | border-radius:50%; 20 | } 21 | 22 | /* 主体 */ 23 | .main { 24 | display: flex; 25 | flex-direction: column; 26 | padding-left: 70rpx; 27 | padding-right: 70rpx; 28 | } 29 | .tips { 30 | color: #999999; 31 | font-size: 28rpx; 32 | margin-top: 64rpx; 33 | margin-left: 48rpx; 34 | } 35 | 36 | /* 登录按钮 */ 37 | .wbutton{ 38 | margin-top: 96rpx; 39 | } 40 | 41 | /* 其他登录方式 */ 42 | .other_login{ 43 | display: flex; 44 | flex-direction: row; 45 | justify-content: center; 46 | align-items: center; 47 | margin-top: 256rpx; 48 | text-align: center; 49 | } 50 | .login_icon{ 51 | border: none; 52 | font-size: 64rpx; 53 | margin: 0 64rpx 0 64rpx; 54 | color: rgba(0,0,0,0.7) 55 | } 56 | .wechat_color{ 57 | color: #83DC42; 58 | } 59 | .weibo_color{ 60 | color: #F9221D; 61 | } 62 | .github_color{ 63 | color: #24292E; 64 | } 65 | 66 | /* 底部 */ 67 | .footer{ 68 | display: flex; 69 | flex-direction: row; 70 | justify-content: center; 71 | align-items: center; 72 | font-size: 28rpx; 73 | margin-top: 64rpx; 74 | color: rgba(0,0,0,0.7); 75 | text-align: center; 76 | height: 40rpx; 77 | line-height: 40rpx; 78 | } 79 | .footer text{ 80 | font-size: 24rpx; 81 | margin-left: 15rpx; 82 | margin-right: 15rpx; 83 | } -------------------------------------------------------------------------------- /static/img/find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MotainZhang/uniBlog/0b678ad1e1876efe5b304e51dbc313fda63114cb/static/img/find.png -------------------------------------------------------------------------------- /static/img/findActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MotainZhang/uniBlog/0b678ad1e1876efe5b304e51dbc313fda63114cb/static/img/findActive.png -------------------------------------------------------------------------------- /static/img/guidang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MotainZhang/uniBlog/0b678ad1e1876efe5b304e51dbc313fda63114cb/static/img/guidang.png -------------------------------------------------------------------------------- /static/img/guidangActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MotainZhang/uniBlog/0b678ad1e1876efe5b304e51dbc313fda63114cb/static/img/guidangActive.png -------------------------------------------------------------------------------- /static/img/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MotainZhang/uniBlog/0b678ad1e1876efe5b304e51dbc313fda63114cb/static/img/home.png -------------------------------------------------------------------------------- /static/img/homeActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MotainZhang/uniBlog/0b678ad1e1876efe5b304e51dbc313fda63114cb/static/img/homeActive.png -------------------------------------------------------------------------------- /static/img/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MotainZhang/uniBlog/0b678ad1e1876efe5b304e51dbc313fda63114cb/static/img/my.png -------------------------------------------------------------------------------- /static/img/myActive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MotainZhang/uniBlog/0b678ad1e1876efe5b304e51dbc313fda63114cb/static/img/myActive.png -------------------------------------------------------------------------------- /store/modules/$app.js: -------------------------------------------------------------------------------- 1 | /** 2 | * vuex 系统状态管理模块 3 | */ 4 | import config from '@/app.config.js' 5 | 6 | let lifeData = uni.getStorageSync('lifeData') || {}; 7 | 8 | let $app = lifeData.$app || {}; 9 | 10 | export default { 11 | // 通过添加 namespaced: true 的方式使其成为带命名空间的模块 12 | namespaced: true, 13 | /** 14 | * vuex的基本数据,用来存储变量 15 | */ 16 | state: { 17 | /** 18 | * 是否已经初始化 19 | * js调用示例 20 | * vk.getVuex('$app.inited'); 21 | * 页面上直接使用示例 22 | * {{ vk.getVuex('$app.inited') }} 23 | * js更新示例 24 | * vk.setVuex('$app.inited', true); 25 | */ 26 | inited: $app.inited || false, 27 | config:{ 28 | ...config 29 | } 30 | }, 31 | /** 32 | * 从基本数据(state)派生的数据,相当于state的计算属性 33 | */ 34 | getters: { 35 | 36 | }, 37 | /** 38 | * 提交更新数据的方法,必须是同步的(如果需要异步使用action)。 39 | * 每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。 40 | * 回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数,提交载荷作为第二个参数。 41 | */ 42 | mutations: { 43 | 44 | }, 45 | /** 46 | * 和mutation的功能大致相同,不同之处在于 ==》 47 | * 1. Action 提交的是 mutation,而不是直接变更状态。 48 | * 2. Action 可以包含任意异步操作。 49 | */ 50 | actions: { 51 | 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /store/modules/$user.js: -------------------------------------------------------------------------------- 1 | /** 2 | * vuex 用户状态管理模块 3 | */ 4 | let lifeData = uni.getStorageSync('lifeData') || {}; 5 | 6 | let $user = lifeData.$user || {}; 7 | 8 | export default { 9 | // 通过添加 namespaced: true 的方式使其成为带命名空间的模块 10 | namespaced: true, 11 | /** 12 | * vuex的基本数据,用来存储变量 13 | */ 14 | state: { 15 | /** 16 | * 登录用户信息 17 | * js调用示例 18 | * (推荐) vk.getVuex('$user.userInfo'); 19 | * 或 vk.vuex.get('$user.userInfo'); 20 | * 页面上直接使用示例 21 | * {{ vk.getVuex('$user.userInfo') }} 22 | * js更新示例 23 | * vk.setVuex('$user.userInfo.avatar', avatar); 24 | */ 25 | userInfo: $user.userInfo || {}, 26 | permission:$user.permission || [], 27 | }, 28 | /** 29 | * 从基本数据(state)派生的数据,相当于state的计算属性 30 | */ 31 | getters: { 32 | /** 33 | * 获取用户信息(使用计算属性获取) 34 | * js调用示例 35 | * vk.vuex.getters('$user/getUserInfo'); 36 | * 或 37 | * that.$store.getters['$user/getUserInfo']; 38 | */ 39 | getUserInfo: (state) => { 40 | return state.userInfo; 41 | } 42 | }, 43 | /** 44 | * 提交更新数据的方法,必须是同步的(如果需要异步使用action)。 45 | * 每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。 46 | * 回调函数就是我们实际进行状态更改的地方,并且它会接受 state 作为第一个参数,提交载荷作为第二个参数。 47 | */ 48 | mutations: { 49 | 50 | }, 51 | /** 52 | * 和mutation的功能大致相同,不同之处在于 ==》 53 | * 1. Action 提交的是 mutation,而不是直接变更状态。 54 | * 2. Action 可以包含任意异步操作。 55 | */ 56 | actions: { 57 | 58 | } 59 | } -------------------------------------------------------------------------------- /subPackages/error/404/404.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 44 | -------------------------------------------------------------------------------- /template.h5.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 |
22 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /uni.scss: -------------------------------------------------------------------------------- 1 | @import "@/common/css/uni.scss"; 2 | @import "@/uni_modules/vk-uview-ui/theme.scss"; 3 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/config.js: -------------------------------------------------------------------------------- 1 | const requireFn = function(path) { 2 | return require(path); 3 | } 4 | const initConfig = { 5 | baseDir: __dirname, // 云函数根目录地址 6 | requireFn, 7 | customUtil :{ 8 | // 你自己的工具包,写这里后即可听过customUtil.mynpm1调用 9 | // mynpm1:mynpm1 10 | } 11 | }; 12 | module.exports = initConfig; -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/dao/index.js: -------------------------------------------------------------------------------- 1 | // 加载模块 - 数据库dao层 API 请勿改动此文件----------------------------------- 2 | const modulesPath = __dirname+"/modules"; 3 | const fs = require('fs'); 4 | const fileList = fs.readdirSync(modulesPath); 5 | const moduleObj = {}; 6 | const modulesNames = []; 7 | fileList.map((file, index) => { 8 | if(file.indexOf("Dao.js") > -1){ 9 | modulesNames.push(file.substring(0,file.length-3)); 10 | } 11 | }); 12 | modulesNames.map((modulesName, index) => { 13 | moduleObj[modulesName] = require(modulesPath+"/"+modulesName); 14 | }); 15 | moduleObj.init = function(obj){ 16 | modulesNames.map((modulesName, index) => { 17 | if(typeof moduleObj[modulesName].init === "function"){ 18 | moduleObj[modulesName].init(obj); 19 | } 20 | }); 21 | } 22 | module.exports = moduleObj; 23 | // 加载模块 - 数据库dao层 API 请勿改动此文件----------------------------------- -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | // 注意:此为云函数路由入口文件,请勿修改此文件代码,你自己的云函数逻辑应写在service目录下 3 | const vk = require('vk-unicloud'); // vk-unicloud 工具包 4 | vk.init(require('./config.js')); 5 | exports.main = async (event, context) => { 6 | return await vk.router({ event, context, vk }); 7 | }; -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/middleware/index.js: -------------------------------------------------------------------------------- 1 | // 加载模块 - 中间件 请勿改动此文件----------------------------------- 2 | const modulesPath = __dirname+"/modules"; 3 | const fs = require('fs'); 4 | const fileList = fs.readdirSync(modulesPath); 5 | var moduleList = []; 6 | var modulesNames = []; 7 | 8 | fileList.map((file, index) => { 9 | if(file.indexOf(".js") > -1){ 10 | modulesNames.push(file.substring(0,file.length-3)); 11 | } 12 | }); 13 | 14 | modulesNames.map((modulesName, index) => { 15 | moduleList.push(require(modulesPath+"/"+modulesName)); 16 | }); 17 | 18 | var middlewareList = []; 19 | moduleList.map((moduleItem, index) => { 20 | middlewareList = middlewareList.concat(moduleItem); 21 | }); 22 | module.exports = middlewareList; 23 | // 加载模块 - 中间件 请勿改动此文件----------------------------------- -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/middleware/modules/customFilter1.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 自定义过滤器 - 前置 3 | */ 4 | 5 | module.exports = [ 6 | { 7 | id: "xxxx1", 8 | regExp: "^xxx1/kh", // 正则匹配规则,这个是以^xxx1/kh/开头的云函数会被拦截 9 | description: "这里是你过滤器1号的描述", 10 | index: 310,// 此处必须>300 因为检测用户是否登录的过滤器的index是200(sys是300,因此为了能通用,建议填大于300的值)(越小越先执行) 11 | mode:"onActionExecuting", // 可选 onActionExecuting onActionExecuted 12 | main: async function(event) { 13 | // 这里是拦截规则,可以查数据库,最终code:0 代表通过,其他均为未通过,msg是被拦截的原因 14 | let { data = {}, util } = event; 15 | let { vk } = util; 16 | return { 17 | code: -1, 18 | msg: "被自定义过滤器1号拦截了" 19 | } 20 | } 21 | } 22 | ] 23 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/middleware/modules/customFilter2.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 自定义过滤器 - 后置 3 | */ 4 | 5 | module.exports = [ 6 | { 7 | id: "xxxx2", 8 | regExp: "^xxx2/kh", // 正则匹配规则,这个是以^xxx2/kh/开头的云函数会被拦截 9 | description: "这里是你过滤器2号的描述", 10 | index: 310,// 此处必须>300 因为检测用户是否登录的过滤器的index是200(sys是300,因此为了能通用,建议填大于300的值)(越小越先执行) 11 | mode:"onActionExecuted", // 可选 onActionExecuting onActionExecuted 12 | main: async function(event, serviceRes) { 13 | let { data = {}, util } = event; 14 | let { vk } = util; 15 | serviceRes.msg = "被过滤器修改后的值"; 16 | return serviceRes; 17 | } 18 | } 19 | ] 20 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "router", 3 | "version": "1.0.0", 4 | "description": "【开箱即用】vk-uniCloud-router - 云函数路由模式 - uniCloud开发框架 - 已集成uni-id", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "uni-config-center": "file:../../../uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center", 14 | "uni-id": "file:../../../uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id", 15 | "uni-pay": "file:../../../uni_modules/uni-pay/uniCloud/cloudfunctions/common/uni-pay", 16 | "vk-unicloud": "file:../../../uni_modules/vk-unicloud/uniCloud/cloudfunctions/common/vk-unicloud" 17 | }, 18 | "private": true, 19 | "cloudfunction-config": { 20 | "concurrency": 1, 21 | "memorySize": 256, 22 | "path": "", 23 | "timeout": 60, 24 | "triggers": [], 25 | "runtime": "Nodejs12" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/router.param.json: -------------------------------------------------------------------------------- 1 | 2 | // 运行方法:右键云函数根目录(如router目录),并点击【运行-本地云函数】即可。 3 | // 若函数需要登录才能访问,则填写uni_id_token的值,值为对应用户的token(可直接从数据库中复制1个过来) 4 | // $url 是 云函数运行路径,如 user/pub/checkToken 5 | // data 是 请求参数,为标准json格式(属性名需要加双引号) 6 | 7 | { 8 | "uni_id_token":"", 9 | "$url":"client/pub.test.test2", 10 | "data":{ 11 | "username":"admin", 12 | "password":"123456" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/article/sys/add.js: -------------------------------------------------------------------------------- 1 | const { 2 | error 3 | } = require("console"); 4 | 5 | module.exports = { 6 | /** 7 | * 添加单条数据 8 | * @url admin/kong/sys/add 前端调用的url参数地址 9 | * data 请求参数 说明 10 | * res 返回参数说明 11 | * @param {Number} code 错误码,0表示成功 12 | * @param {String} msg 详细信息 13 | */ 14 | main: async (event) => { 15 | let { 16 | data = {}, userInfo, util, filterResponse, originalParam 17 | } = event; 18 | let { 19 | customUtil, 20 | uniID, 21 | config, 22 | pubFun, 23 | vk, 24 | db, 25 | _ 26 | } = util; 27 | let { 28 | uid 29 | } = data; 30 | let res = { 31 | code: 0, 32 | msg: 'ok' 33 | }; 34 | // 业务逻辑开始----------------------------------------------------------- 35 | let dbName = "blog-article"; 36 | res.id = await vk.baseDao.add({ 37 | dbName, 38 | dataJson: data 39 | }); 40 | // 业务逻辑结束----------------------------------------------------------- 41 | return res; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/article/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 数据删除 4 | * @url admin/kong/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { _id } = data; 17 | if(vk.pubfn.isNull(_id)){ 18 | return { code : -1, msg : 'id不能为空' }; 19 | } 20 | let dbName = "blog-article"; 21 | await vk.baseDao.deleteById({ 22 | dbName, 23 | id:_id 24 | }); 25 | // 业务逻辑结束----------------------------------------------------------- 26 | return res; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/article/sys/getCountByMonth.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 查询多条记录 分页 4 | * @url admin/kong/sys/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { 17 | data = {}, userInfo, util, filterResponse, originalParam 18 | } = event; 19 | let { 20 | customUtil, 21 | uniID, 22 | config, 23 | pubFun, 24 | vk, 25 | db, 26 | _ 27 | } = util; 28 | let { 29 | uid, 30 | monthTimeArr 31 | } = data; 32 | let res = { 33 | code: 0, 34 | msg: '' 35 | }; 36 | // 业务逻辑开始----------------------------------------------------------- 37 | let dbName = "blog-article"; 38 | let countArr = [] 39 | for(let i =0;i< monthTimeArr.length;i++){ 40 | let time = monthTimeArr[i] 41 | let count = await vk.baseDao.count({ 42 | dbName, 43 | whereJson: { 44 | _add_time_str: new RegExp('^'+time) 45 | } 46 | }); 47 | countArr.push(count) 48 | } 49 | res.countList = countArr 50 | res.monthList = monthTimeArr 51 | return res; 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/article/sys/update.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改数据 4 | * @url admin/kong/sys/update 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let{ 17 | _id, 18 | title, 19 | content, 20 | _add_time, 21 | _add_time_str 22 | } = data 23 | // 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段 24 | if(vk.pubfn.isNullOne(_id)){ 25 | return { code : -1, msg : '参数错误' }; 26 | } 27 | let dbName = "blog-article"; 28 | await vk.baseDao.updateById({ 29 | dbName, 30 | id:_id, 31 | dataJson:{ 32 | title, 33 | content, 34 | _add_time, 35 | _add_time_str 36 | } 37 | }); 38 | // 业务逻辑结束----------------------------------------------------------- 39 | return res; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/category/sys/add.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 添加单条数据 4 | * @url admin/kong/sys/add 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { 12 | data = {}, userInfo, util, filterResponse, originalParam 13 | } = event; 14 | let { 15 | customUtil, 16 | uniID, 17 | config, 18 | pubFun, 19 | vk, 20 | db, 21 | _ 22 | } = util; 23 | let res = { 24 | code: 0, 25 | msg: 'ok' 26 | }; 27 | // 业务逻辑开始----------------------------------------------------------- 28 | // 取articleId 29 | let articleId = data[0].articleId 30 | let dbName = "blog-article-category"; 31 | await vk.baseDao.del({ 32 | dbName, 33 | whereJson: { 34 | articleId: articleId 35 | } 36 | }); 37 | res.id = await vk.baseDao.adds({ 38 | dbName, 39 | cancelAddTime: true, 40 | dataJson: data 41 | }); 42 | // 业务逻辑结束----------------------------------------------------------- 43 | return res; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/category/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 数据删除 4 | * @url admin/kong/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { _id } = data; 17 | if(vk.pubfn.isNull(_id)){ 18 | return { code : -1, msg : 'id不能为空' }; 19 | } 20 | let dbName = "blog-article-category"; 21 | await vk.baseDao.deleteById({ 22 | dbName, 23 | id:_id 24 | }); 25 | // 业务逻辑结束----------------------------------------------------------- 26 | return res; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/category/sys/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 查询多条记录 分页 4 | * @url admin/kong/sys/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { 17 | data = {}, userInfo, util, filterResponse, originalParam 18 | } = event; 19 | let { 20 | customUtil, 21 | uniID, 22 | config, 23 | pubFun, 24 | vk, 25 | db, 26 | _ 27 | } = util; 28 | let { 29 | uid 30 | } = data; 31 | let res = { 32 | code: 0, 33 | msg: '' 34 | }; 35 | // 业务逻辑开始----------------------------------------------------------- 36 | let dbName = "blog-article-category"; 37 | res = await vk.baseDao.getTableData({ 38 | dbName, 39 | data, 40 | groupJson: { 41 | _id: "$name", 42 | id: _.$.first("$_id"), 43 | type:_.$.first("info"), 44 | articleId: _.$.first("$articleId"), 45 | }, 46 | }); 47 | return res; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/category/sys/update.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改数据 4 | * @url admin/kong/sys/update 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { 17 | name, 18 | articleId, 19 | } = data; 20 | // 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段 21 | if(vk.pubfn.isNullOne(_id)){ 22 | return { code : -1, msg : '参数错误' }; 23 | } 24 | let dbName = "blog-article-category"; 25 | await vk.baseDao.update({ 26 | dbName, 27 | whereJson:{ // 条件 28 | _id:data._id, 29 | }, 30 | dataJson:{ 31 | name, 32 | articleId 33 | } 34 | }); 35 | // 业务逻辑结束----------------------------------------------------------- 36 | return res; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/comment/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 数据删除 4 | * @url admin/kong/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { 12 | data = {}, userInfo, util, filterResponse, originalParam 13 | } = event; 14 | let { 15 | customUtil, 16 | uniID, 17 | config, 18 | pubFun, 19 | vk, 20 | db, 21 | _ 22 | } = util; 23 | let { 24 | uid 25 | } = data; 26 | let res = { 27 | code: 0, 28 | msg: 'ok' 29 | }; 30 | // 业务逻辑开始----------------------------------------------------------- 31 | // 删除评论 32 | if (data.commentId) { 33 | await vk.baseDao.deleteById({ 34 | dbName:"blog-comment-reply", 35 | id:data._id 36 | }); 37 | console.log("=============评论删除成功") 38 | } else { 39 | // 删除朋友圈加评论 40 | await vk.baseDao.deleteById({ 41 | dbName:"blog-article-comment", 42 | id:data._id 43 | }); 44 | console.log("=============评论删除成功") 45 | await vk.baseDao.del({ 46 | dbName:"blog-comment-reply", 47 | whereJson:{ 48 | commentId:data._id 49 | } 50 | }); 51 | console.log("=============回复删除成功") 52 | } 53 | 54 | // 业务逻辑结束----------------------------------------------------------- 55 | return res; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/comment/sys/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 查询多条记录 分页 4 | * @url admin/kong/sys/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { 17 | data = {}, userInfo, util, filterResponse, originalParam 18 | } = event; 19 | let { 20 | customUtil, 21 | uniID, 22 | config, 23 | pubFun, 24 | vk, 25 | db, 26 | _ 27 | } = util; 28 | let { 29 | uid 30 | } = data; 31 | let res = { 32 | code: 0, 33 | msg: '' 34 | }; 35 | // 业务逻辑开始----------------------------------------------------------- 36 | let dbName = "blog-article-comment"; 37 | res = await vk.baseDao.getTableData({ 38 | dbName, 39 | data, 40 | // 副表列表 41 | foreignDB: [{ 42 | dbName: "blog-comment-reply", // 副表名 43 | localKey: "_id", // 主表外键字段名 44 | foreignKey: "commentId", // 副表外键字段名 45 | as: "children" 46 | } 47 | ] 48 | }); 49 | return res; 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/friend/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 数据删除 4 | * @url admin/kong/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { 12 | data = {}, userInfo, util, filterResponse, originalParam 13 | } = event; 14 | let { 15 | customUtil, 16 | uniID, 17 | config, 18 | pubFun, 19 | vk, 20 | db, 21 | _ 22 | } = util; 23 | let { 24 | uid 25 | } = data; 26 | let res = { 27 | code: 0, 28 | msg: 'ok' 29 | }; 30 | // 业务逻辑开始----------------------------------------------------------- 31 | // 删除评论 32 | if (data.friendId) { 33 | await vk.baseDao.deleteById({ 34 | dbName:"blog-friend-reply", 35 | id:data._id 36 | }); 37 | console.log("=============评论删除成功") 38 | } else { 39 | // 删除朋友圈加评论 40 | await vk.baseDao.deleteById({ 41 | dbName:"blog-friend", 42 | id:data._id 43 | }); 44 | console.log("=============圈子删除成功") 45 | await vk.baseDao.del({ 46 | dbName:"blog-friend-reply", 47 | whereJson:{ 48 | friendId:data._id 49 | } 50 | }); 51 | console.log("=============评论删除成功") 52 | } 53 | 54 | // 业务逻辑结束----------------------------------------------------------- 55 | return res; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/friend/sys/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 查询多条记录 分页 4 | * @url admin/kong/sys/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { 17 | data = {}, userInfo, util, filterResponse, originalParam 18 | } = event; 19 | let { 20 | customUtil, 21 | uniID, 22 | config, 23 | pubFun, 24 | vk, 25 | db, 26 | _ 27 | } = util; 28 | let { 29 | uid 30 | } = data; 31 | let res = { 32 | code: 0, 33 | msg: '' 34 | }; 35 | // 业务逻辑开始----------------------------------------------------------- 36 | let dbName = "blog-friend"; 37 | res = await vk.baseDao.getTableData({ 38 | dbName, 39 | data, 40 | // 副表列表 41 | foreignDB: [{ 42 | dbName: "blog-friend-reply", // 副表名 43 | localKey: "_id", // 主表外键字段名 44 | foreignKey: "friendId", // 副表外键字段名 45 | as: "children" 46 | } 47 | ] 48 | }); 49 | res.rows.forEach((item)=>{ 50 | if(item.images.indexOf(",")>0){ 51 | item.images = item.images.split(",") 52 | }else{ 53 | item.images =[item.images] 54 | } 55 | }) 56 | return res; 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 删除应用 4 | * @url admin/system/app/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} _id id 7 | * res 返回参数说明 8 | * @param {Number} code 错误码,0表示成功 9 | * @param {String} msg 详细信息 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 13 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 14 | let { uid } = data; 15 | let res = { code : 0, msg : 'ok' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | // 这里id不传默认设置成"___" 是为了防止因未传_id导致误删所有数据. 18 | let { _id } = data; 19 | if(vk.pubfn.isNull(_id)){ 20 | return { code : -1, msg : 'id不能为空' }; 21 | } 22 | let dbName = "opendb-app-list"; 23 | res.num = await vk.baseDao.deleteById({ 24 | dbName, 25 | id:_id 26 | }); 27 | // 业务逻辑结束----------------------------------------------------------- 28 | return res; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/sys/getInfo.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 根据id获取信息 5 | * @url admin/system/app/sys/getInfo 前端调用的url参数地址 6 | * data 请求参数 7 | * @param {String} params1 参数1 8 | */ 9 | main: async (event) => { 10 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 11 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 12 | let { uid } = data; 13 | let res = { code: 0, msg: "" }; 14 | // 业务逻辑开始----------------------------------------------------------- 15 | let { appid } = data; 16 | let dbName = "opendb-app-list"; 17 | res.info = await vk.baseDao.findByWhereJson({ 18 | dbName, 19 | whereJson:{ 20 | appid 21 | } 22 | }); 23 | // 业务逻辑结束----------------------------------------------------------- 24 | return res; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/app/sys/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 分页查询应用 4 | * @url admin/system/app/sys/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 17 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 18 | let { uid } = data; 19 | let res = { code: 0, msg: '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | // 可写与数据库的交互逻辑等等 22 | let dbName = "opendb-app-list"; 23 | res = await vk.baseDao.getTableData({ 24 | dbName, 25 | data, 26 | sortArr: [{ name: "_id", type: "asc" }] 27 | }); 28 | return res; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/sys/bindPermission.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 为菜单设置内置权限 4 | * 角色拥有菜单后,将同时拥有菜单内的所有内置权限 5 | * @url admin/system/menu/sys/bindPermission 前端调用的url参数地址 6 | * data 请求参数 说明 7 | * @param {String} menu_id 菜单id(menu_id) 8 | * @param {Array} permissionList 权限Id(permission_id)列表 9 | * @param {Boolean} reset 是否直接覆盖权限,true:直接将permissionList设置为权限,false:在菜单已有权限后追加权限 10 | * res 返回参数说明 11 | * @param {Number} code 错误码,0表示成功 12 | * @param {String} msg 详细信息 13 | */ 14 | main: async (event) => { 15 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 16 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 17 | let { uid } = data; 18 | let res = { code : 0, msg : '' }; 19 | // 业务逻辑开始----------------------------------------------------------- 20 | let { 21 | menu_id, 22 | permissionList, 23 | reset 24 | } = data; 25 | res = await vk.system.sysDao.menuBindPermission({ 26 | menu_id, 27 | permissionList, 28 | reset 29 | }); 30 | return res; 31 | } 32 | 33 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 删除 4 | * @url admin/system/menu/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} menu_id 菜单Id,唯一标识 7 | * res 返回参数说明 8 | * @param {Number} code 错误码,0表示成功 9 | * @param {String} msg 详细信息 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 13 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 14 | let { uid } = data; 15 | let res = { code : 0, msg : '' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | let { menu_id } = data; 18 | if(vk.pubfn.isNullOne(menu_id)){ 19 | return { code : -1, msg : 'menu_id不能为空' }; 20 | } 21 | // 检查是否有子项 22 | let num = await vk.baseDao.count({ 23 | dbName:"opendb-admin-menus", 24 | whereJson:{ 25 | parent_id : menu_id 26 | } 27 | }); 28 | if(num > 0){ 29 | return { code : -1, msg : '该项含有子项,请先删除子项!' }; 30 | } 31 | res.num = await vk.baseDao.del({ 32 | dbName:"opendb-admin-menus", 33 | whereJson:{ 34 | menu_id 35 | } 36 | }); 37 | return res; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/menu/sys/getAll.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 获取菜单列表(一次性获取全部) 5 | * @url admin/system/menu/sys/getAll 前端调用的url参数地址 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 13 | let { uid } = data; 14 | let res = { code: 0, msg: "" }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res = await vk.system.sysDao.listMenuToTree({ 17 | pageIndex: 1, 18 | pageSize: 500, 19 | whereJson: { 20 | parent_id: null 21 | } 22 | }); 23 | // 业务逻辑结束----------------------------------------------------------- 24 | return res; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 删除权限 4 | * @url admin/system/permission/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} permission_id 权限Id,唯一标识 7 | * res 返回参数说明 8 | * @param {Number} code 错误码,0表示成功 9 | * @param {String} msg 详细信息 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 13 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 14 | let { uid } = data; 15 | let res = { code: 0, msg: '' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | let { permission_id } = data; 18 | if (vk.pubfn.isNullOne(permission_id)) { 19 | return { code: -1, msg: 'permission_id不能为空' }; 20 | } 21 | let dbName = "uni-id-permissions"; 22 | // 检查是否有子项 23 | let num = await vk.baseDao.count({ 24 | dbName, 25 | whereJson: { 26 | parent_id: permission_id 27 | } 28 | }); 29 | if (num > 0) { 30 | return { code: -1, msg: '该项含有子项,请先删除子项!' }; 31 | } 32 | res = uniID.deletePermission({ 33 | permissionID: permission_id 34 | }); 35 | res.msg = res.message; 36 | return res; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/sys/getAll.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 获取权限列表 5 | * @url admin/system/permission/sys/getAll 前端调用的url参数地址 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 13 | let { uid } = data; 14 | let res = { code: 0, msg: "" }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res = await vk.system.sysDao.listPermissionToTree({ 17 | pageIndex: 1, 18 | pageSize: 500, 19 | whereJson: { 20 | parent_id: null 21 | } 22 | }); 23 | // 业务逻辑结束----------------------------------------------------------- 24 | return res; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/sys/updateCategory.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改权限分类 4 | * @url admin/system/permission/sys/updateCategory 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} _id 权限Id 7 | * @param {Number} curd_category 0:未分类 1:增 2:删 3:改 4:查 5:特殊 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 14 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 15 | let { uid } = data; 16 | let res = { code: 0, msg: '' }; 17 | // 业务逻辑开始----------------------------------------------------------- 18 | let { 19 | _id, 20 | curd_category=0, 21 | } = data; 22 | let dbName = "uni-id-permissions"; 23 | // 执行数据库API请求 24 | res.num = await vk.baseDao.updateById({ 25 | dbName, 26 | id:_id, 27 | dataJson:{ 28 | curd_category 29 | } 30 | }); 31 | return res; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/sys/updateLevel.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改权限等级 4 | * @url admin/system/permission/sys/updateLevel 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} _id 权限Id 7 | * @param {Number} level 0:未分类 1:子弹级 2:炸弹级 3:榴弹级 4:核弹级 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 14 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 15 | let { uid } = data; 16 | let res = { code: 0, msg: '' }; 17 | // 业务逻辑开始----------------------------------------------------------- 18 | let { 19 | _id, 20 | level=0, 21 | } = data; 22 | let dbName = "uni-id-permissions"; 23 | // 执行数据库API请求 24 | res.num = await vk.baseDao.updateById({ 25 | dbName, 26 | id:_id, 27 | dataJson:{ 28 | level 29 | } 30 | }); 31 | return res; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/permission/util/formRules.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | /** 3 | * 表单验证 4 | */ 5 | class Util { 6 | constructor() { 7 | 8 | } 9 | /** 10 | * 添加 11 | */ 12 | async add(event) { 13 | let { data = {}, userInfo, util } = event; 14 | let { vk } = util; 15 | let res = { code: 0, msg: '' }; 16 | 17 | // 验证规则开始 ----------------------------------------------------------- 18 | let rules = { 19 | permission_id: [ 20 | { required: true, message: '权限标识不能为空', trigger: 'blur' }, 21 | ], 22 | permission_name: [ 23 | { required: true, message: '权限名称不能为空', trigger: 'blur' }, 24 | ], 25 | sort: [ 26 | { type: 'number', message: '排序值必须为数字' } 27 | ] 28 | }; 29 | // 验证规则结束 ----------------------------------------------------------- 30 | 31 | // 开始进行验证 32 | res = vk.pubfn.formValidate({ 33 | data: data, 34 | rules: rules 35 | }); 36 | // 返回验证结果 37 | return res; 38 | } 39 | /** 40 | * 修改 41 | */ 42 | async update(event) { 43 | return this.add(event); 44 | } 45 | } 46 | module.exports = new Util 47 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/bindMenu.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 为角色绑定菜单 4 | * @url admin/system/role/sys/bindMenu 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Array} role_id 角色Id(role_id) 7 | * @param {Array} menuList 菜单Id(menu_id)列表 8 | * @param {Boolean} reset 是否直接覆盖菜单,true:直接将menuList设置为角色菜单,false:在角色已有菜单后追加菜单 9 | * @param {Boolean} addPermission 是否自动添加菜单内置的权限 默认false 10 | * res 返回参数说明 11 | * @param {Number} code 错误码,0表示成功 12 | * @param {String} msg 详细信息 13 | */ 14 | main: async (event) => { 15 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 16 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 17 | let { uid } = data; 18 | let res = { code: 0, msg: '' }; 19 | // 业务逻辑开始----------------------------------------------------------- 20 | let { role_id, menuList, reset, addPermission } = data; 21 | res = await vk.system.sysDao.roleBindMenu({ 22 | role_id, 23 | menuList, 24 | reset, 25 | addPermission 26 | }); 27 | let dbName = "uni-id-roles"; 28 | let roleInfo = await vk.baseDao.findByWhereJson({ 29 | dbName, 30 | whereJson: { 31 | role_id, 32 | } 33 | }); 34 | let count = roleInfo.menu ? roleInfo.menu.length : 0; 35 | // 修改stats_count_info统计信息 36 | await vk.baseDao.update({ 37 | dbName, 38 | whereJson: { 39 | role_id, 40 | }, 41 | dataJson: { 42 | ["stats_count_info.type.0.count"] : count 43 | } 44 | }); 45 | return res; 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/bindPermission.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 为角色绑定权限 4 | * @url admin/system/role/sys/bindPermission 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Array} role_id 角色Id(role_id) 7 | * @param {Array} permissionList 权限Id(permission_id)列表 8 | * @param {Boolean} reset 是否直接覆盖角色权限,true:直接将permissionList设置为角色权限,false:在角色已有权限后追加权限 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 15 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 16 | let { uid } = data; 17 | let res = { code: 0, msg: '' }; 18 | // 业务逻辑开始----------------------------------------------------------- 19 | let { role_id, permissionList, reset, stats_count_info = {} } = data; 20 | res = uniID.bindPermission({ 21 | roleID: role_id, 22 | permissionList, 23 | reset 24 | }); 25 | // 修改stats_count_info统计信息 26 | await vk.baseDao.update({ 27 | dbName: "uni-id-roles", 28 | whereJson: { 29 | role_id, 30 | }, 31 | dataJson: { 32 | stats_count_info: _.set(stats_count_info) 33 | } 34 | }); 35 | res.msg = res.message; 36 | return res; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 删除角色 4 | * @url admin/system/role/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} role_id 角色Id(role_id) 7 | * res 返回参数说明 8 | * @param {Number} code 错误码,0表示成功 9 | * @param {String} msg 详细信息 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 13 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 14 | let { uid } = data; 15 | let res = { code: 0, msg: '' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | let { role_id } = data; 18 | if (vk.pubfn.isNullOne(role_id)) { 19 | return { code: -1, msg: 'role_id不能为空' }; 20 | } 21 | res = uniID.deleteRole({ 22 | roleID: role_id 23 | }); 24 | res.msg = res.message; 25 | return res; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 查询角色列表 4 | * @url admin/system/role/sys/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 17 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 18 | let { uid } = data; 19 | let res = { code: 0, msg: '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | let dbName = "uni-id-roles"; 22 | res = await vk.baseDao.getTableData({ 23 | dbName, 24 | data 25 | }); 26 | // 业务逻辑结束----------------------------------------------------------- 27 | return res; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/sys/update.js: -------------------------------------------------------------------------------- 1 | const formRules = require("../util/formRules.js"); 2 | module.exports = { 3 | /** 4 | * 修改角色 5 | * @url admin/system/role/sys/update 前端调用的url参数地址 6 | * data 请求参数 说明 7 | * @param {String} role_id 角色Id(role_id) 8 | * @param {String} role_name 角色名称,展示用 9 | * @param {String} comment 备注 10 | * @param {Boolean} enable 是否启用 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 17 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 18 | let { uid } = data; 19 | let res = { code: 0, msg: '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | let { 22 | role_id, 23 | role_name, 24 | comment, 25 | enable = true, 26 | } = data; 27 | 28 | // 参数合法校验开始----------------------------------------------------------- 29 | let formRulesRes = await formRules.add(event); 30 | if (formRulesRes.code !== 0) { 31 | return formRulesRes; 32 | } 33 | // 参数合法校验结束----------------------------------------------------------- 34 | 35 | // 执行数据库API请求 36 | res.num = await vk.baseDao.update({ 37 | dbName: "uni-id-roles", 38 | whereJson: { 39 | role_id 40 | }, 41 | dataJson: { 42 | role_name, 43 | comment, 44 | enable 45 | } 46 | }); 47 | return res; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/role/util/formRules.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | /** 3 | * 表单验证 4 | */ 5 | class Util { 6 | constructor() { 7 | 8 | } 9 | /** 10 | * 添加 11 | */ 12 | async add(event) { 13 | let { data = {}, userInfo, util } = event; 14 | let { vk } = util; 15 | let res = { code: 0, msg: '' }; 16 | 17 | // 验证规则开始 ----------------------------------------------------------- 18 | let rules = { 19 | role_id: [ 20 | { required: true, message: '角色标识不能为空', trigger: 'blur' }, 21 | ], 22 | role_name: [ 23 | { required: true, message: '角色名称不能为空', trigger: 'change' } 24 | ] 25 | }; 26 | // 验证规则结束 ----------------------------------------------------------- 27 | 28 | // 开始进行验证 29 | res = vk.pubfn.formValidate({ 30 | data: data, 31 | rules: rules 32 | }); 33 | // 返回验证结果 34 | return res; 35 | } 36 | /** 37 | * 修改 38 | */ 39 | async update(event) { 40 | return this.add(event); 41 | } 42 | } 43 | module.exports = new Util 44 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/batchUpdateInviterUid.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改用户推荐人 4 | * @url admin/system/user/sys/batchUpdateInviterUid 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} user_id 用户ID 7 | * @param {String} parent_id 修改成的用户推荐人邀请码 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 14 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 15 | let { uid } = data; 16 | let res = { code: 0, msg: '' }; 17 | // 业务逻辑开始----------------------------------------------------------- 18 | let { user_id, parent_id } = data; 19 | // 参数非空检测 20 | if (vk.pubfn.isNullOne(user_id)) { 21 | return { code: -1, msg: '参数错误' }; 22 | } 23 | let parentUser = await vk.baseDao.findById({ 24 | dbName: "uni-id-users", 25 | id: parent_id, 26 | }); 27 | if (vk.pubfn.isNull(parentUser)) { 28 | return { code: -1, msg: '父标识对应的用户不存在!' }; 29 | } 30 | let { my_invite_code } = parentUser; 31 | if (vk.pubfn.isNull(my_invite_code)) { 32 | return { code: -1, msg: '父标识对应的用户无邀请码,无法邀请!' }; 33 | } 34 | // 执行数据库API请求 35 | res = await uniID.acceptInvite({ 36 | uid: user_id, 37 | inviteCode: my_invite_code 38 | }); 39 | res.msg = res.message; 40 | return res; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/batchUpdateStatus.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 批量修改用户状态 4 | * @url admin/system/user/sys/batchUpdateStatus 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Array} user_ids 用户id数组 7 | * @param {Integer} status 修改成的用户状态:0 正常 1 禁用 2 审核中 3 审核拒绝 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 14 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 15 | let { uid } = data; 16 | let res = { code: 0, msg: '' }; 17 | // 业务逻辑开始----------------------------------------------------------- 18 | let { user_ids, status } = data; 19 | // 参数非空检测 20 | if (vk.pubfn.isNullOne(user_ids, status)) { 21 | return { code: -1, msg: '参数错误' }; 22 | } 23 | if (user_ids.indexOf(uid) > -1 && status === 1) { 24 | return { code: -1, msg: '不可禁用自己' }; 25 | } 26 | // 执行数据库API请求 27 | res.num = await vk.baseDao.update({ 28 | dbName: "uni-id-users", 29 | whereJson: { 30 | _id: _.in(user_ids) 31 | }, 32 | dataJson: { 33 | status: status 34 | } 35 | }); 36 | 37 | return res; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/bindRole.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 为用户绑定角色 4 | * @url admin/system/user/sys/bindRole 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} user_id 用户id 7 | * @param {Array} roleList 角色Id(role_id)列表 8 | * @param {Boolean} reset 是否直接覆盖用户角色,true:直接将roleList设置为用户角色,false:在用户已有角色后追加角色 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 15 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 16 | let { uid } = data; 17 | let res = { code: 0, msg: '' }; 18 | // 业务逻辑开始----------------------------------------------------------- 19 | let { user_id, roleList, reset } = data; 20 | res = uniID.bindRole({ 21 | uid: user_id, 22 | roleList, 23 | reset 24 | }); 25 | res.msg = res.message; 26 | return res; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 删除用户 4 | * @url admin/system/user/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} _id 用户ID 7 | * res 返回参数说明 8 | * @param {Number} code 错误码,0表示成功 9 | * @param {String} msg 详细信息 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 13 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 14 | let { uid } = data; 15 | let res = { code: 0, msg: '' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | let { _id } = data; 18 | if (vk.pubfn.isNullOne(_id)) { 19 | return { code: -1, msg: '_id不能为空' }; 20 | } 21 | if (uid === _id) { 22 | return { code: -1, msg: '请勿删除当前登录账户!' }; 23 | } 24 | // 执行数据库API请求 25 | res.num = await vk.baseDao.deleteById({ 26 | dbName: "uni-id-users", 27 | id:_id 28 | }); 29 | return res; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system/user/sys/resetPassword.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 强制重置用户密码 4 | * @url admin/system/user/sys/resetPassword 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} user_id 用户ID 7 | * @param {String} password 重置后的密码 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 14 | let { uniID, customUtil, config, pubFun, vk, db, _ } = util; 15 | let { uid } = data; 16 | let res = { code: 0, msg: "" }; 17 | // 业务逻辑开始----------------------------------------------------------- 18 | let { user_id, password } = data; 19 | // 重置密码 20 | res = await uniID.resetPwd({ 21 | uid: user_id, 22 | password 23 | }); 24 | // 业务逻辑结束----------------------------------------------------------- 25 | return res; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/admin-log/sys/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 分页查询 4 | * @url admin/system_uni/admin-log/sys/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 17 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 18 | let { uid } = data; 19 | let res = { code : 0, msg : '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | let dbName = "opendb-admin-log"; 22 | res = await vk.baseDao.getTableData({ 23 | dbName, 24 | data, 25 | whereJson:{ 26 | 27 | } 28 | }); 29 | return res; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/components-dynamic/sys/add.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 添加 4 | * @url admin/system_uni/components-dynamic/sys/add 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} data_id 组件数据id 7 | * @param {String} title 数据标题 8 | * @param {Object} data 组件数据 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 15 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 16 | let { uid } = data; 17 | let res = { code : 0, msg : '' }; 18 | // 业务逻辑开始----------------------------------------------------------- 19 | let { 20 | data_id, 21 | title, 22 | description, 23 | data : components_dynamic_data 24 | } = data; 25 | // 参数非空检测 26 | if(vk.pubfn.isNullOne(data_id, data)){ 27 | return { code : -1, msg : '参数错误' }; 28 | } 29 | let dbName = "vk-components-dynamic"; 30 | // 检测key是否已存在 31 | let num = await vk.baseDao.count({ 32 | dbName:dbName, 33 | whereJson:{ 34 | data_id, 35 | } 36 | }); 37 | if(num > 0){ 38 | return { code : -1, msg : `组件数据id不能重复!` }; 39 | } 40 | // 执行数据库API请求 41 | res.id = await vk.baseDao.add({ 42 | dbName:dbName, 43 | dataJson:{ 44 | data: components_dynamic_data, 45 | data_id, 46 | title, 47 | description 48 | } 49 | }); 50 | return res; 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/components-dynamic/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 删除 4 | * @url admin/system_uni/components-dynamic/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} _id id 7 | * res 返回参数说明 8 | * @param {Number} code 错误码,0表示成功 9 | * @param {String} msg 详细信息 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 13 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 14 | let { uid } = data; 15 | let res = { code : 0, msg : '' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | let { _id } = data; 18 | // 参数非空检测 19 | if(vk.pubfn.isNullOne(_id)){ 20 | return { code : -1, msg : '_id不能为空' }; 21 | } 22 | // 执行数据库API请求 23 | let num = await vk.baseDao.del({ 24 | dbName:"vk-components-dynamic", 25 | whereJson:{ 26 | _id 27 | } 28 | }); 29 | return res; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/components-dynamic/sys/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 分页查询 4 | * @url admin/system_uni/components-dynamic/sys/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 17 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 18 | let { uid } = data; 19 | let res = { code : 0, msg : '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | let dbName = "vk-components-dynamic"; 22 | res = await vk.baseDao.getTableData({ 23 | dbName, 24 | data, 25 | whereJson:{ 26 | 27 | } 28 | }); 29 | return res; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/global-data/sys/add.js: -------------------------------------------------------------------------------- 1 | const formRules = require('../util/formRules.js'); 2 | module.exports = { 3 | /** 4 | * 添加 5 | * @url admin/system_uni/global-data/sys/add 前端调用的url参数地址 6 | * data 请求参数 说明 7 | * @param {String} key 键名 8 | * @param {不限制} value 键值 9 | * @param {不限制} comment 备注 10 | * res 返回参数说明 11 | * @param {Number} code 错误码,0表示成功 12 | * @param {String} msg 详细信息 13 | */ 14 | main: async (event) => { 15 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 16 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 17 | let { uid } = data; 18 | let res = { code : 0, msg : '' }; 19 | // 业务逻辑开始----------------------------------------------------------- 20 | let { 21 | key, 22 | value, 23 | comment 24 | } = data; 25 | // 参数合法校验 26 | let formRulesRes = await formRules.add(event); 27 | if(formRulesRes.code !== 0){ 28 | return formRulesRes; 29 | } 30 | 31 | let dbName = "vk-global-data"; 32 | // 检测key是否已存在 33 | let num = await vk.baseDao.count({ 34 | dbName:dbName, 35 | whereJson:{ 36 | key, 37 | } 38 | }); 39 | if(num > 0){ 40 | return { code : -1, msg : `键值【${key}】不能重复!` }; 41 | } 42 | // 执行数据库API请求 43 | res.id = await vk.baseDao.add({ 44 | dbName:dbName, 45 | dataJson:{ 46 | key, 47 | value, 48 | comment 49 | } 50 | }); 51 | return res; 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/global-data/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 删除 4 | * @url admin/system_uni/global-data/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} _id id 7 | * res 返回参数说明 8 | * @param {Number} code 错误码,0表示成功 9 | * @param {String} msg 详细信息 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 13 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 14 | let { uid } = data; 15 | let res = { code : 0, msg : '' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | let { _id } = data; 18 | // 参数非空检测 19 | if(vk.pubfn.isNullOne(_id)){ 20 | return { code : -1, msg : '_id不能为空' }; 21 | } 22 | let dbName = "vk-global-data"; 23 | // 执行数据库API请求 24 | let num = await vk.baseDao.del({ 25 | dbName:dbName, 26 | whereJson:{ 27 | _id 28 | } 29 | }); 30 | return res; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/global-data/sys/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 分页查询 4 | * @url admin/system_uni/global-data/sys/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 17 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 18 | let { uid } = data; 19 | let res = { code : 0, msg : '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | let dbName = "vk-global-data"; 22 | res = await vk.baseDao.getTableData({ 23 | dbName, 24 | data, 25 | whereJson:{ 26 | 27 | } 28 | }); 29 | return res; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/global-data/util/formRules.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | /** 3 | * 表单验证 4 | */ 5 | class Util { 6 | constructor() { 7 | 8 | } 9 | /** 10 | * 添加 11 | */ 12 | async add(event){ 13 | let { data = {}, userInfo, util } = event; 14 | let { vk } = util; 15 | let res = { code : 0, msg : '' }; 16 | 17 | // 验证规则开始 ----------------------------------------------------------- 18 | let rules = { 19 | key: [ 20 | { required: true, message: '健名不能为空', trigger: 'blur' }, 21 | ], 22 | value: [ 23 | { required: true, message: '健值不能为空', trigger: 'change' } 24 | ] 25 | }; 26 | // 验证规则结束 ----------------------------------------------------------- 27 | 28 | // 开始进行验证 29 | res = vk.pubfn.formValidate({ 30 | data : data, 31 | rules : rules 32 | }); 33 | // 返回验证结果 34 | return res; 35 | } 36 | /** 37 | * 修改 38 | */ 39 | async update(event){ 40 | return this.add(event); 41 | } 42 | } 43 | module.exports = new Util -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/categories/kh/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 分页查询 4 | * @url admin/system_uni/uni-id-files/categories/kh/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 17 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 18 | let { uid } = data; 19 | let res = { code : 0, msg : '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | let dbName = "vk-files-categories"; 22 | res = await vk.baseDao.getTableData({ 23 | dbName, 24 | data, 25 | whereJson:{ 26 | 27 | }, 28 | sortArr:[{ name:"_id", type:"asc" }] 29 | }); 30 | return res; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/categories/sys/add.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 添加 4 | * @url admin/system_uni/uni-id-files/categories/sys/add 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} name 分类名称 7 | * @param {String} description 数据描述 8 | * @param {Number} sort 排序值 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 15 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 16 | let { uid } = data; 17 | let res = { code : 0, msg : '' }; 18 | // 业务逻辑开始----------------------------------------------------------- 19 | let { 20 | name, 21 | description, 22 | sort, 23 | } = data; 24 | // 参数非空检测 25 | if(vk.pubfn.isNull(name)){ 26 | return { code : -1, msg : '名称不能为空' }; 27 | } 28 | let dbName = "vk-files-categories"; 29 | // 检测key是否已存在 30 | let num = await vk.baseDao.count({ 31 | dbName, 32 | whereJson:{ 33 | name, 34 | } 35 | }); 36 | if(num > 0){ 37 | return { code : -1, msg : `名称【${name}】不能重复!` }; 38 | } 39 | // 执行数据库API请求 40 | res.id = await vk.baseDao.add({ 41 | dbName, 42 | dataJson:{ 43 | name, 44 | description, 45 | sort 46 | } 47 | }); 48 | return res; 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/categories/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 删除 4 | * @url admin/system_uni/uni-id-files/categories/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} _id id 7 | * res 返回参数说明 8 | * @param {Number} code 错误码,0表示成功 9 | * @param {String} msg 详细信息 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 13 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 14 | let { uid } = data; 15 | let res = { code : 0, msg : '' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | let { _id } = data; 18 | // 参数非空检测 19 | if(vk.pubfn.isNullOne(_id)){ 20 | return { code : -1, msg : '_id不能为空' }; 21 | } 22 | let dbName = "vk-files-categories"; 23 | await vk.baseDao.deleteById({ 24 | dbName, 25 | id:_id 26 | }); 27 | return res; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/categories/sys/update.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改 4 | * @url admin/system_uni/uni-id-files/categories/sys/update 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} _id id 7 | * @param {String} name 分类名称 8 | * @param {String} description 数据描述 9 | * @param {Number} sort 排序值 10 | * @param {String} parent_id 父id 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 17 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 18 | let { uid } = data; 19 | let res = { code : 0, msg : '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | let { 22 | _id, 23 | name, 24 | description, 25 | sort 26 | } = data; 27 | // 参数非空检测 28 | if(vk.pubfn.isNull(name)){ 29 | return { code : -1, msg : '名称不能为空' }; 30 | } 31 | let dbName = "vk-files-categories"; 32 | 33 | // 检测data_id是否已存在 34 | let num = await vk.baseDao.count({ 35 | dbName, 36 | whereJson:{ 37 | name, 38 | _id : _.neq(_id) 39 | } 40 | }); 41 | if(num > 0){ 42 | return { code : -1, msg : `名称【${name}】不能重复!` }; 43 | } 44 | // 执行数据库API请求 45 | res.num = await vk.baseDao.updateById({ 46 | dbName, 47 | id:_id, 48 | dataJson:{ 49 | name, 50 | description, 51 | sort 52 | } 53 | }); 54 | return res; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/system_uni/uni-id-files/files/kh/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 分页查询 4 | * @url admin/system_uni/uni-id-files/files/kh/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 17 | let { customUtil, uniID, config, pubFun, vk, db, _ } = util; 18 | let { uid } = data; 19 | let res = { code: 0, msg: '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | let dbName = "vk-files"; 22 | let whereJson = {}; 23 | let { role = [] } = userInfo; 24 | let { formData = {} } = data; 25 | let { category_id } = formData; 26 | if (category_id == "null") { 27 | whereJson["category_id"] = null; 28 | } 29 | if (role.indexOf("admin") === -1) { 30 | // 如果不是admin角色用户,则只能查看自己上传的 31 | whereJson["user_id"] = uid; 32 | } 33 | res = await vk.baseDao.getTableData({ 34 | dbName, 35 | data, 36 | whereJson 37 | }); 38 | return res; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/tag/sys/add.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 添加单条数据 4 | * @url admin/kong/sys/add 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { 12 | data = {}, userInfo, util, filterResponse, originalParam 13 | } = event; 14 | let { 15 | customUtil, 16 | uniID, 17 | config, 18 | pubFun, 19 | vk, 20 | db, 21 | _ 22 | } = util; 23 | let res = { 24 | code: 0, 25 | msg: 'ok' 26 | }; 27 | // 业务逻辑开始----------------------------------------------------------- 28 | let articleId = data[0].articleId 29 | let dbName = "blog-article-tag"; 30 | await vk.baseDao.del({ 31 | dbName, 32 | whereJson: { 33 | articleId: articleId 34 | } 35 | }); 36 | res.id = await vk.baseDao.adds({ 37 | dbName, 38 | cancelAddTime: true, 39 | dataJson: data 40 | }); 41 | // 业务逻辑结束----------------------------------------------------------- 42 | return res; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/tag/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 数据删除 4 | * @url admin/kong/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { _id } = data; 17 | if(vk.pubfn.isNull(_id)){ 18 | return { code : -1, msg : 'id不能为空' }; 19 | } 20 | let dbName = "blog-article-category"; 21 | await vk.baseDao.deleteById({ 22 | dbName, 23 | id:_id 24 | }); 25 | // 业务逻辑结束----------------------------------------------------------- 26 | return res; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/tag/sys/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 查询多条记录 分页 4 | * @url admin/kong/sys/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { 17 | data = {}, userInfo, util, filterResponse, originalParam 18 | } = event; 19 | let { 20 | customUtil, 21 | uniID, 22 | config, 23 | pubFun, 24 | vk, 25 | db, 26 | _ 27 | } = util; 28 | let { 29 | uid 30 | } = data; 31 | let res = { 32 | code: 0, 33 | msg: '' 34 | }; 35 | // 业务逻辑开始----------------------------------------------------------- 36 | let dbName = "blog-article-tag"; 37 | res = await vk.baseDao.getTableData({ 38 | dbName, 39 | data, 40 | groupJson: { 41 | _id: "$name", 42 | id: _.$.first("$_id"), 43 | type:_.$.first("info"), 44 | articleId: _.$.first("$articleId"), 45 | }, 46 | }); 47 | return res; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/tag/sys/update.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改数据 4 | * @url admin/kong/sys/update 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { 17 | name, 18 | articleId, 19 | } = data; 20 | // 这里需要把 params1 params2 params3 改成你数据库里允许用户添加的字段 21 | if(vk.pubfn.isNullOne(_id)){ 22 | return { code : -1, msg : '参数错误' }; 23 | } 24 | let dbName = "blog-article-tag"; 25 | await vk.baseDao.update({ 26 | dbName, 27 | whereJson:{ // 条件 28 | _id:data._id, 29 | }, 30 | dataJson:{ 31 | name, 32 | articleId 33 | } 34 | }); 35 | // 业务逻辑结束----------------------------------------------------------- 36 | return res; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/user/pub/test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 此函数名称 5 | * @url user/pub/test1 前端调用的url参数地址 6 | * data 请求参数 7 | * @params {String} params1 参数1 8 | */ 9 | main: async (event) => { 10 | let { data = {}, userInfo, util, originalParam } = event; 11 | let { customUtil, config, pubFun, vk, db, _ } = util; 12 | let { uid } = data; 13 | let res = { code : 0, msg : '' }; 14 | // 业务逻辑开始----------------------------------------------------------- 15 | // 可写与数据库的交互逻辑等等 16 | 17 | 18 | 19 | 20 | // 业务逻辑结束----------------------------------------------------------- 21 | return res; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/admin/user/sys/test.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 此函数名称 5 | * @url user/pub/test1 前端调用的url参数地址 6 | * data 请求参数 7 | * @params {String} params1 参数1 8 | */ 9 | main: async (event) => { 10 | let { data = {}, userInfo, util, originalParam } = event; 11 | let { customUtil, config, pubFun, vk, db, _ } = util; 12 | let { uid } = data; 13 | let res = { code : 0, msg : '' }; 14 | // 业务逻辑开始----------------------------------------------------------- 15 | // 可写与数据库的交互逻辑等等 16 | 17 | 18 | 19 | 20 | // 业务逻辑结束----------------------------------------------------------- 21 | return res; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/client/comment/kh/addComment.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 此函数名称 5 | * @url user/pub/test1 前端调用的url参数地址 6 | * data 请求参数 7 | * @param {String} params1 参数1 8 | */ 9 | main: async (event) => { 10 | let { 11 | data = {}, userInfo, util, filterResponse, originalParam 12 | } = event; 13 | let { 14 | customUtil, 15 | config, 16 | pubFun, 17 | vk, 18 | db, 19 | _ 20 | } = util; 21 | let { 22 | uid 23 | } = data; 24 | let res = { 25 | code: 0, 26 | msg: "" 27 | }; 28 | // 业务逻辑开始----------------------------------------------------------- 29 | // 可写与数据库的交互逻辑等等 30 | let commentId = await vk.baseDao.add({ 31 | dbName: "blog-article-comment", 32 | cancelAddTime: false, // 通过设置 cancelAddTime:true 可以取消 _add_time 字段的添加 33 | dataJson: data 34 | }); 35 | res['commentId'] = commentId 36 | // 业务逻辑结束----------------------------------------------------------- 37 | return res; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/client/comment/kh/updateComment.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 此函数名称 5 | * @url user/pub/test1 前端调用的url参数地址 6 | * data 请求参数 7 | * @param {String} params1 参数1 8 | */ 9 | main: async (event) => { 10 | let { 11 | data = {}, userInfo, util, filterResponse, originalParam 12 | } = event; 13 | let { 14 | customUtil, 15 | config, 16 | pubFun, 17 | vk, 18 | db, 19 | _ 20 | } = util; 21 | let { 22 | uid 23 | } = data; 24 | let res = { 25 | code: 0, 26 | msg: "" 27 | }; 28 | // 业务逻辑开始----------------------------------------------------------- 29 | // 可写与数据库的交互逻辑等等 30 | res = await vk.baseDao.updateById({ 31 | dbName: "blog-article-comment", 32 | id: data._id, 33 | dataJson: { 34 | isLike: data.isLike, 35 | likeNum: data.likeNum, 36 | likeUserIds: data.likeUserIds 37 | }, 38 | getUpdateData: true, 39 | }); 40 | // 业务逻辑结束----------------------------------------------------------- 41 | return res; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/client/friendCircle/kh/addFriendCircle.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 此函数名称 5 | * @url user/pub/test1 前端调用的url参数地址 6 | * data 请求参数 7 | * @param {String} params1 参数1 8 | */ 9 | main: async (event) => { 10 | let { 11 | data = {}, userInfo, util, filterResponse, originalParam 12 | } = event; 13 | let { 14 | customUtil, 15 | config, 16 | pubFun, 17 | vk, 18 | db, 19 | _ 20 | } = util; 21 | let { 22 | uid 23 | } = data; 24 | let res = { 25 | code: 0, 26 | msg: "" 27 | }; 28 | let friendImages = [] 29 | if (data.images && data.images.length > 0) { 30 | data.images.forEach((item, index) => { 31 | friendImages.push(item.url); 32 | }); 33 | data.images = friendImages.join(',') 34 | } 35 | // 业务逻辑开始----------------------------------------------------------- 36 | // 可写与数据库的交互逻辑等等 37 | let friendId = await vk.baseDao.add({ 38 | dbName: "blog-friend", 39 | cancelAddTime: false, // 通过设置 cancelAddTime:true 可以取消 _add_time 字段的添加 40 | dataJson: data 41 | }); 42 | res['friendId'] = friendId 43 | // 业务逻辑结束----------------------------------------------------------- 44 | return res; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/client/friendCircle/kh/addFriendComment.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 此函数名称 5 | * @url user/pub/test1 前端调用的url参数地址 6 | * data 请求参数 7 | * @param {String} params1 参数1 8 | */ 9 | main: async (event) => { 10 | let { 11 | data = {}, userInfo, util, filterResponse, originalParam 12 | } = event; 13 | let { 14 | customUtil, 15 | config, 16 | pubFun, 17 | vk, 18 | db, 19 | _ 20 | } = util; 21 | let { 22 | uid 23 | } = data; 24 | let res = { 25 | code: 0, 26 | msg: "" 27 | }; 28 | // 业务逻辑开始----------------------------------------------------------- 29 | // 可写与数据库的交互逻辑等等 30 | let friendReplyId = await vk.baseDao.add({ 31 | dbName: "blog-friend-reply", 32 | cancelAddTime: false, // 通过设置 cancelAddTime:true 可以取消 _add_time 字段的添加 33 | dataJson: data 34 | }); 35 | res['friendReplyId'] = friendReplyId 36 | // 业务逻辑结束----------------------------------------------------------- 37 | return res; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/client/friendCircle/kh/addFriendLike.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 此函数名称 5 | * @url user/pub/test1 前端调用的url参数地址 6 | * data 请求参数 7 | * @param {String} params1 参数1 8 | */ 9 | main: async (event) => { 10 | let { 11 | data = {}, userInfo, util, filterResponse, originalParam 12 | } = event; 13 | let { 14 | customUtil, 15 | config, 16 | pubFun, 17 | vk, 18 | db, 19 | _ 20 | } = util; 21 | let { 22 | uid 23 | } = data; 24 | let res = { 25 | code: 0, 26 | msg: "" 27 | }; 28 | // 业务逻辑开始----------------------------------------------------------- 29 | // 可写与数据库的交互逻辑等等 30 | if (Number(data.isPraise) == 0) { 31 | data['isPraise'] = 1; 32 | // 插入friendLike表 33 | await vk.baseDao.add({ 34 | dbName: "blog-friend-like", 35 | cancelAddTime: false, // 通过设置 cancelAddTime:true 可以取消 _add_time 字段的添加 36 | dataJson: data 37 | }); 38 | } else { 39 | await vk.baseDao.del({ 40 | dbName: "blog-friend-like", 41 | whereJson: { 42 | uid: data.uid 43 | } 44 | }); 45 | } 46 | // 业务逻辑结束----------------------------------------------------------- 47 | return res; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/client/reply/kh/addReply.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 此函数名称 5 | * @url user/pub/test1 前端调用的url参数地址 6 | * data 请求参数 7 | * @param {String} params1 参数1 8 | */ 9 | main: async (event) => { 10 | let { 11 | data = {}, userInfo, util, filterResponse, originalParam 12 | } = event; 13 | let { 14 | customUtil, 15 | config, 16 | pubFun, 17 | vk, 18 | db, 19 | _ 20 | } = util; 21 | let { 22 | uid 23 | } = data; 24 | let res = { 25 | code: 0, 26 | msg: "" 27 | }; 28 | // 业务逻辑开始----------------------------------------------------------- 29 | // 可写与数据库的交互逻辑等等 30 | let commentId = await vk.baseDao.add({ 31 | dbName: "blog-comment-reply", 32 | cancelAddTime: false, // 通过设置 cancelAddTime:true 可以取消 _add_time 字段的添加 33 | dataJson: data 34 | }); 35 | res['commentId'] = commentId 36 | // 业务逻辑结束----------------------------------------------------------- 37 | return res; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/client/tag/kh/tagCoutByName.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 此函数名称 5 | * @url user/pub/test1 前端调用的url参数地址 6 | * data 请求参数 7 | * @param {String} params1 参数1 8 | */ 9 | main: async (event) => { 10 | let { 11 | data = {}, userInfo, util, filterResponse, originalParam 12 | } = event; 13 | let { 14 | customUtil, 15 | config, 16 | pubFun, 17 | vk, 18 | db, 19 | _ 20 | } = util; 21 | let { 22 | uid 23 | } = data; 24 | let res = { 25 | code: 0, 26 | msg: "" 27 | }; 28 | // 业务逻辑开始----------------------------------------------------------- 29 | // 可写与数据库的交互逻辑等等 30 | res = await vk.baseDao.selects({ 31 | dbName: "blog-article-tag", 32 | pageSize: -1, 33 | groupJson: { 34 | _id: "$name", 35 | count: _.$.sum(1) 36 | }, 37 | sortArr: [{ "name": "count","type": "desc" }], 38 | }); 39 | // 业务逻辑结束----------------------------------------------------------- 40 | return res; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/plugs/components_dynamic/client/pub/getComponentsDynamicData.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 此函数名称 4 | * @url plugs/components_dynamic/client/pub/getComponentsDynamicData 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @params {String} uid 当前登录用户id,若用户已登录且token有效,则data中会带uid参数 7 | * (此参数是后端过滤器通过token获取并添加到data中的,是可信任的)(只有kh函数才带此参数) 8 | * @params {Array} ids 需要获取的组件数据 id数组 9 | * res 返回参数说明 10 | * @params {Number} code 错误码,0表示成功 11 | * @params {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | let { data = {}, userInfo, util, originalParam } = event; 15 | let { uniID, config, pubFun, vk , db, _ } = util; 16 | let { uid, ids } = data; 17 | let res = { code : 0, msg : '' }; 18 | // 业务逻辑开始----------------------------------------------------------- 19 | // 根据ids获取组件动态数据列表 20 | let res_select = await vk.baseDao.select({ 21 | dbName:"vk-components-dynamic", 22 | getCount:false, 23 | pageSize:500, 24 | whereJson:{ 25 | data_id : _.in(ids) 26 | }, 27 | }); 28 | // 将数组形式 转换成 组件需要的格式 29 | res.componentsDynamic = {}; 30 | for(let i in res_select.rows){ 31 | let item = res_select.rows[i]; 32 | res.componentsDynamic[item.data_id] = item.data; 33 | } 34 | // 业务逻辑结束----------------------------------------------------------- 35 | return res; 36 | } 37 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/plugs/components_dynamic/client/pub/update.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改数据 4 | * @url plugs/components_dynamic/client/pub/update 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid, data_id, data_value } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res.num = await vk.baseDao.update({ 17 | dbName:"vk-components-dynamic", 18 | whereJson:{ 19 | data_id : data_id, 20 | }, 21 | dataJson:{ 22 | data : data_value 23 | } 24 | },event.util); 25 | // 业务逻辑结束----------------------------------------------------------- 26 | return res; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/add.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 添加单条数据 4 | * @url template/db_api/pub/add 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | // 随机定位开始----------------------------------------------------------- 17 | // 为了方便测试,这里固定在杭州市西湖区附近 18 | let longitude = 120.12792 + Math.floor(Math.random() * 500) / 10000; 19 | let latitude = 30.228932 + Math.floor(Math.random() * 500) / 10000; 20 | // 随机定位结束----------------------------------------------------------- 21 | res.id = await vk.baseDao.add({ 22 | dbName:"vk-test", 23 | dataJson:{ 24 | "money": Math.floor(Math.random() * 9 + 1), 25 | "user_id": "00"+Math.floor(Math.random() * 2 + 1), 26 | "location":new db.Geo.Point(longitude, latitude), 27 | "position":{ 28 | "longitude":longitude, 29 | "latitude":latitude, 30 | }, 31 | } 32 | }); 33 | // 业务逻辑结束----------------------------------------------------------- 34 | return res; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/avg.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * avg求平均值 4 | * @url template/db_api/pub/avg 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res.avg = await vk.baseDao.avg({ 17 | dbName:"vk-test", 18 | fieldName:"money", 19 | whereJson:{ 20 | 21 | } 22 | }); 23 | // 业务逻辑结束----------------------------------------------------------- 24 | return res; 25 | } 26 | 27 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/count.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * count求总记录条数 4 | * @url template/db_api/pub/count 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res.num = await vk.baseDao.count({ 17 | dbName:"vk-test", 18 | whereJson:{ 19 | 20 | } 21 | }); 22 | // 对应的sql: 23 | // count * from vk-test 24 | // 业务逻辑结束----------------------------------------------------------- 25 | return res; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/del.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 数据删除 4 | * @url template/db_api/pub/del 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | /** 17 | * 这里为了防止误删,故vk.baseDao.del API 18 | * 会判断如果whereJson为空,则不执行删除操作 19 | * 所以这里加了个_id: _.exists(true)条件来达到删除全部的功能(实际开发时慎用删除全部功能) 20 | */ 21 | res.num = await vk.baseDao.del({ 22 | dbName:"vk-test", 23 | whereJson:{ 24 | _id: _.exists(true) 25 | } 26 | }); 27 | // 对应的sql: 28 | // delete from vk-test where user_id != '___' 29 | // 业务逻辑结束----------------------------------------------------------- 30 | return res; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/deleteById.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 数据删除 4 | * @url template/db_api/pub/del 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { _id } = data; 17 | res.num = await vk.baseDao.deleteById({ 18 | dbName:"vk-test", 19 | id:_id 20 | }); 21 | // 业务逻辑结束----------------------------------------------------------- 22 | return res; 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/findById.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 根据id获取记录 4 | * @url template/db_api/pub/findById 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let startTime = new Date().getTime(); 17 | res.item = await vk.baseDao.findById({ 18 | dbName:"vk-test", 19 | id:data._id, 20 | fieldJson:{ 21 | 22 | } 23 | }); 24 | let endTime = new Date().getTime(); 25 | res.runTime = (endTime - startTime); 26 | // 上面的 fieldJson 可以设置 显示什么字段或设置不显示什么字段 如 money:false 代表不显示money字段 27 | // 对应的sql: 28 | // select * from vk-test where _id = "5f3a125b3d11c6000106d338" 29 | // 业务逻辑结束----------------------------------------------------------- 30 | return res; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/findByWhereJson.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 根据where条件获取单条记录(首条) 4 | * @url template/db_api/pub/findByWhereJson 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res.item = await vk.baseDao.findByWhereJson({ 17 | dbName:"vk-test", 18 | fieldJson:{ 19 | 20 | }, 21 | whereJson:{ 22 | _id:data._id, 23 | } 24 | }); 25 | // 上面的 fieldJson 可以设置 显示什么字段或设置不显示什么字段 如 money:false 代表不显示money字段 26 | // 对应的sql: 27 | // select * from vk-test where _id = "5f3a125b3d11c6000106d338" 28 | // 业务逻辑结束----------------------------------------------------------- 29 | return res; 30 | } 31 | 32 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/geo.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 根据地理位置获取列表数据信息 4 | * @url template/db_api/pub/geo 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res = await vk.baseDao.selects({ 17 | dbName:"vk-test", 18 | pageIndex:1, 19 | pageSize:100, 20 | whereJson:{ 21 | location: _.geoNear({ 22 | geometry: new db.Geo.Point(120.12792, 30.228932), // 点的地理位置,为了方便测试,这里固定在杭州市西湖区 23 | maxDistance: 4000, // 选填,最大距离,米为单位 24 | minDistance: 0 // 选填,最小距离,米为单位 25 | }) 26 | }, 27 | }); 28 | // 业务逻辑结束----------------------------------------------------------- 29 | return res; 30 | } 31 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/groupCount.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 分组求count 4 | * @url template/db_api/pub/groupCount 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { _id = "___" } = data; 17 | res = await vk.baseDao.selects({ 18 | dbName: "vk-test", 19 | pageIndex: 1, 20 | pageSize: 10, 21 | // 主表where条件 22 | whereJson: { 23 | 24 | }, 25 | groupJson: { 26 | _id: "$money", // _id是分组id, $ 后面接字段名,如按money字段进行分组 27 | count: _.$.addToSet("$user_id"), // $ 后面接字段名,如把user_id原样输出(去重) 28 | }, 29 | sortArr: [{ name: "money",type: "desc" }], // 对分组后的结果进行排序 30 | addFields:{ 31 | count: _.$.size("$count") 32 | } 33 | }); 34 | // 业务逻辑结束----------------------------------------------------------- 35 | return res; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/max.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * max求最大值 4 | * @url template/db_api/pub/max 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res.max = await vk.baseDao.max({ 17 | dbName:"vk-test", 18 | fieldName:"money", 19 | whereJson:{ 20 | 21 | } 22 | }); 23 | // 业务逻辑结束----------------------------------------------------------- 24 | return res; 25 | } 26 | 27 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/min.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * min求最小值 4 | * @url template/db_api/pub/min 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res.min = await vk.baseDao.min({ 17 | dbName:"vk-test", 18 | fieldName:"money", 19 | whereJson:{ 20 | 21 | } 22 | }); 23 | // 业务逻辑结束----------------------------------------------------------- 24 | return res; 25 | } 26 | 27 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/sample.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * sample随机获取N条数据 4 | * @url template/db_api/pub/sample 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res.list = await vk.baseDao.sample({ 17 | dbName:"vk-test", 18 | size:1, 19 | whereJson:{ 20 | 21 | }, 22 | }); 23 | // 业务逻辑结束----------------------------------------------------------- 24 | return res; 25 | } 26 | 27 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/select.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 查询多条记录 4 | * @url template/db_api/pub/select 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res = await vk.baseDao.select({ 17 | dbName:"vk-test", 18 | pageIndex:1, 19 | pageSize:100, 20 | whereJson:{ 21 | 22 | }, 23 | }); 24 | // 对应的sql: 25 | // select * from vk-test where user_id == '001' limit 0,100; 26 | // 业务逻辑结束----------------------------------------------------------- 27 | return res; 28 | } 29 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/select2.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 连表查询(仅限两表查询)(VK版本) 4 | * @url template/db_api/pub/select2 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | // 想要两表以上的连接,请使用vk.baseDao.selects 17 | res = await vk.baseDao.selects({ 18 | dbName:"uni-id-users", 19 | foreignKey:"_id", 20 | getCount:false, 21 | pageIndex:1, 22 | pageSize:10, 23 | // 主表where条件 24 | whereJson:{ 25 | 26 | }, 27 | // 主表字段显示规则 28 | fieldJson:{token:false, password:false}, 29 | // 主表排序规则 30 | sortArr:[{"name":"_id", "type":"desc"}], 31 | // 副表列表 32 | foreignDB:[ 33 | { 34 | dbName:"vk-test", 35 | foreignKey:"user_id", 36 | as:"testList", 37 | limit:1, 38 | // 副表where条件 39 | whereJson:{ }, 40 | // 副表字段显示规则 41 | fieldJson:{ }, 42 | // 副表排序规则 43 | sortArr:[{"name":"money", "type":"desc"}], 44 | } 45 | ] 46 | }); 47 | // 业务逻辑结束----------------------------------------------------------- 48 | return res; 49 | } 50 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/selects.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 多表查询(支持多张表连接查询)(VK版本) 4 | * @url template/db_api/pub/selects 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | // 演示3表连接 17 | res = await vk.baseDao.selects({ 18 | dbName:"uni-id-users", 19 | getCount:false, 20 | pageIndex:1, 21 | pageSize:10, 22 | // 主表where条件 23 | whereJson:{ 24 | 25 | }, 26 | // 主表字段显示规则 27 | fieldJson:{ token:false, password:false }, 28 | // 主表排序规则 29 | sortArr:[{ "name":"_id", "type":"desc" }], 30 | // 副表列表 31 | foreignDB:[ 32 | { 33 | dbName:"vk-test", 34 | localKey:"_id", 35 | foreignKey:"user_id", 36 | as:"testList", 37 | limit:1 38 | }, 39 | { 40 | dbName:"gy-shop", 41 | localKey:"_id", 42 | foreignKey:"user_id", 43 | as:"shopList", 44 | limit:1 45 | }, 46 | ] 47 | }); 48 | // 业务逻辑结束----------------------------------------------------------- 49 | return res; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/selects_geo.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 连表查询地理位置就近搜索示例 4 | * @url template/db_api/pub/selects_geo 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | // 演示3表连接 17 | res = await vk.baseDao.selects({ 18 | dbName:"vk-test", 19 | getCount:true, 20 | pageIndex:1, 21 | pageSize:10, 22 | // 主表where条件 23 | whereJson:{ 24 | location: _.geoNear({ 25 | geometry: new db.Geo.Point(120.12792, 30.228932), // 点的地理位置,为了方便测试,这里固定在杭州市西湖区 26 | maxDistance: 4000, // 选填,最大距离,米为单位 27 | minDistance: 0 , // 选填,最小距离,米为单位 28 | distanceMultiplier:1, // 返回时在距离上乘以该数字 1代表米 100 代表厘米 0.001 代表千米 29 | distanceField:"distance", // 输出的每个记录中 distance 即是与给定点的距离 30 | }), 31 | money:_.gt(0) 32 | }, 33 | // 副表列表 34 | foreignDB:[ 35 | { 36 | dbName:"uni-id-users", 37 | localKey:"user_id", 38 | foreignKey:"_id", 39 | as:"userInfo", 40 | limit:1 41 | } 42 | ] 43 | }); 44 | // 业务逻辑结束----------------------------------------------------------- 45 | return res; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/selects_getOne.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 连表查询,并返回第一条数据 4 | * @url template/db_api/pub/selects_getOne 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | // 演示3表连接 17 | res.info = await vk.baseDao.selects({ 18 | dbName:"uni-id-users", 19 | getOne:true, 20 | getMain:true, 21 | // 主表where条件 22 | whereJson:{ 23 | _id:"001" 24 | }, 25 | // 主表字段显示规则 26 | fieldJson:{ token:false, password:false }, 27 | // 副表列表 28 | foreignDB:[ 29 | { 30 | dbName:"vk-test", 31 | localKey:"_id", 32 | foreignKey:"user_id", 33 | as:"testList", 34 | limit:1 35 | }, 36 | { 37 | dbName:"gy-shop", 38 | localKey:"_id", 39 | foreignKey:"user_id", 40 | as:"shopList", 41 | limit:1 42 | }, 43 | ] 44 | }); 45 | // 业务逻辑结束----------------------------------------------------------- 46 | return res; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/selects_mode_2.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 多表查询(支持多张表连接查询)(VK2.0版本) 4 | * @url template/db_api/pub/selects_mode_2 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | /** 17 | * 此为简化版 18 | * 此版本支持无限张表和主表进行连接 19 | */ 20 | res = await vk.baseDao.selects({ 21 | dbName:"opendb-mall-comments", 22 | // 副表列表 23 | foreignDB:[ 24 | { 25 | dbName:"opendb-mall-goods", 26 | localKey:"goods_id", 27 | foreignKey:"_id", 28 | as:"goodsInfo", 29 | limit:1 30 | }, 31 | { 32 | dbName:"uni-id-users", 33 | localKey:"user_id", 34 | foreignKey:"_id", 35 | as:"userInfo", 36 | limit:1 37 | } 38 | ] 39 | }); 40 | // 业务逻辑结束----------------------------------------------------------- 41 | return res; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/selects_mode_3.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 多表查询(支持多张表连接查询)(VK3.0版本) 4 | * @url template/db_api/pub/selects_mode_3 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | /** 17 | * 此为演示竖向无限层连接 18 | */ 19 | res = await vk.baseDao.selects({ 20 | dbName:"opendb-mall-comments", 21 | // 副表列表 22 | foreignDB:[ 23 | { 24 | dbName:"uni-id-users", 25 | localKey:"user_id", 26 | foreignKey:"_id", 27 | as:"userInfo", 28 | limit:1, 29 | foreignDB:[ 30 | { 31 | dbName:"opendb-mall-orders", 32 | localKey:"_id", 33 | foreignKey:"user_id", 34 | as:"orderList", 35 | limit:3, 36 | }, 37 | ] 38 | } 39 | ] 40 | }); 41 | // 业务逻辑结束----------------------------------------------------------- 42 | return res; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/sum.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * sum求和 4 | * @url template/db_api/pub/sum 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res.sum = await vk.baseDao.sum({ 17 | dbName:"vk-test", 18 | fieldName:"money", 19 | whereJson:{ 20 | 21 | } 22 | }); 23 | // 对应的sql: 24 | // select sum(money) from vk-test 25 | // 业务逻辑结束----------------------------------------------------------- 26 | return res; 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/update.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改数据 4 | * @url template/db_api/pub/update 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { _id = "___" } = data; 17 | res.num = await vk.baseDao.update({ 18 | dbName:"vk-test", 19 | whereJson:{ 20 | _id:_id, 21 | }, 22 | dataJson:{ 23 | money:1 24 | } 25 | }); 26 | // 业务逻辑结束----------------------------------------------------------- 27 | return res; 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/pub/updateById.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改数据,并返回修改后的数据 4 | * @url template/db_api/pub/updateById 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { _id = "___" } = data; 17 | res.info = await vk.baseDao.updateById({ 18 | dbName:"vk-test", 19 | id:_id, 20 | dataJson:{ 21 | money:1 22 | }, 23 | getUpdateData:true 24 | }); 25 | // 业务逻辑结束----------------------------------------------------------- 26 | return res; 27 | } 28 | 29 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/sys/add.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 添加单条数据 4 | * @url template/db_api/sys/add 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { 17 | user_id, 18 | money, 19 | remark, 20 | } = data; 21 | let dbName = "vk-test"; 22 | res.id = await vk.baseDao.add({ 23 | dbName, 24 | dataJson:{ 25 | user_id, 26 | money, 27 | remark, 28 | } 29 | }); 30 | // 业务逻辑结束----------------------------------------------------------- 31 | return res; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/sys/delete.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 数据删除 4 | * @url template/db_api/sys/delete 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | // 这里id不传默认设置成"___" 是为了防止因未传_id导致误删所有数据. 17 | let { _id } = data; 18 | if(vk.pubfn.isNull(_id)){ 19 | return { code : -1, msg : 'id不能为空' }; 20 | } 21 | let dbName = "vk-test"; 22 | await vk.baseDao.deleteById({ 23 | dbName, 24 | id:_id 25 | }); 26 | // 业务逻辑结束----------------------------------------------------------- 27 | return res; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/sys/getList.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 查询多条记录 分页 4 | * @url template/db_api/sys/getList 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @params {Number} pageIndex 当前页码 7 | * @params {Number} pageSize 每页显示数量 8 | * @params {Array} sortRule 排序规则 9 | * @params {object} formData 查询条件数据源 10 | * @params {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @params {Number} code 错误码,0表示成功 13 | * @params {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 17 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 18 | let { uid } = data; 19 | let res = { code : 0, msg : '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | // 可写与数据库的交互逻辑等等 22 | let dbName = "vk-test"; 23 | res = await vk.baseDao.getTableData({ 24 | dbName, 25 | data 26 | }); 27 | return res; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/db_api/sys/update.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改数据 4 | * @url template/db_api/sys/update 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : 'ok' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { 17 | _id, 18 | user_id, 19 | money, 20 | remark, 21 | } = data; 22 | if(vk.pubfn.isNullOne(_id)){ 23 | return { code : -1, msg : '参数错误' }; 24 | } 25 | let dbName = "vk-test"; 26 | await vk.baseDao.updateById({ 27 | dbName, 28 | id:_id, 29 | dataJson:{ 30 | user_id, 31 | money, 32 | remark, 33 | } 34 | }); 35 | // 业务逻辑结束----------------------------------------------------------- 36 | return res; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/openapi/weixin/pub/imgSecCheck.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 图片违规检测示例 5 | * @url template/openapi/weixin/pub/imgSecCheck 前端调用的url参数地址 6 | * data 请求参数 说明 7 | * res 返回参数说明 8 | * @params {Number} code 错误码,0表示成功 9 | * @params {String} msg 详细信息 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util } = event; 13 | let { config, vk , db, _ } = util; 14 | let { uid } = data; 15 | let res = { code : 0, msg : 'ok' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | let { base64 } = data; 18 | /** 19 | * 实际开发中,图片可能是多张图,比如多达9张图 20 | * 如果在一个请求中循环检测,可能会超时。 21 | * 方案1:前端选择完图片就自动一张一张检测和上传(即9张图会有9个请求) 22 | * 方案2:使用Promise.all 23 | * 特别注意:目前微信小程序的这个API有1M大小的限制。(此为微信官方限制) 24 | */ 25 | let imgSecCheckRes = await vk.openapi.weixin.security.imgSecCheck({ 26 | base64 27 | }); 28 | if(imgSecCheckRes.code !== 0){ 29 | // 未通过检测 30 | return imgSecCheckRes; 31 | } 32 | // 若通过检测,则继续执行自己的业务 33 | // ... 34 | // ... 35 | 36 | // 业务逻辑结束----------------------------------------------------------- 37 | return res; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/openapi/weixin/pub/msgSecCheck.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 文本违规检测示例 5 | * @url template/openapi/weixin/pub/msgSecCheck 前端调用的url参数地址 6 | * data 请求参数 说明 7 | * res 返回参数说明 8 | * @params {Number} code 错误码,0表示成功 9 | * @params {String} msg 详细信息 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util } = event; 13 | let { config, vk , db, _ } = util; 14 | let { uid } = data; 15 | let res = { code : 0, msg : 'ok' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | let { content } = data; 18 | // 实际业务中,content可能是评论的内容等 19 | let msgSecCheckRes = await vk.openapi.weixin.security.msgSecCheck({ 20 | content 21 | }); 22 | if(msgSecCheckRes.code !== 0){ 23 | // 未通过检测 24 | return msgSecCheckRes; 25 | } 26 | // 若通过检测,则继续执行自己的业务 27 | // ... 28 | // ... 29 | 30 | // 业务逻辑结束----------------------------------------------------------- 31 | return res; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/openapi/weixin/pub/sendMessage.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 发送订阅消息 5 | * @url template/openapi/weixin/pub/sendMessage 前端调用的url参数地址 6 | * data 请求参数 说明 7 | * res 返回参数说明 8 | * @params {Number} code 错误码,0表示成功 9 | * @params {String} msg 详细信息 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util } = event; 13 | let { config, vk , db, _ } = util; 14 | let { uid } = data; 15 | let res = { code : 0, msg : 'ok' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | let { openid } = data; 18 | res = await vk.openapi.weixin.subscribeMessage.send({ 19 | touser : openid, // 接收者(用户)的 openid 20 | template_id : "UmINo5I6IcqktIwNt2TVorkU7f4dzd4eyNjfvOiwEC0", // 所需下发的订阅模板id 21 | page : "pages/index/index", // 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。 22 | data : { 23 | character_string1:{ 24 | value:"202008030930001" 25 | }, 26 | name2:{ 27 | value:"中通快递" 28 | }, 29 | character_string3:{ 30 | value:"ZT2019928321392931" 31 | }, 32 | thing6:{ 33 | value:"雪花秀滋盈生人生焕颜精华露" 34 | }, 35 | thing8:{ 36 | value:"杭州市xxxxxxxxx号" 37 | } 38 | }, 39 | miniprogram_state : "formal", // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 40 | }); 41 | 42 | // 业务逻辑结束----------------------------------------------------------- 43 | return res; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/test/pub/addition.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 此函数名称 4 | * @url template/test/pub/addition 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @params {String} uid 当前登录用户id,若用户已登录且token有效,则data中会带uid参数 7 | * (此参数是后端过滤器通过token获取并添加到data中的,是可信任的)(只有kh函数才带此参数) 8 | * res 返回参数说明 9 | * @params {Number} code 错误码,0表示成功 10 | * @params {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | let { data = {}, userInfo, util, originalParam } = event; 14 | let { uniID, config, pubFun, vk , db, _ } = util; 15 | let { uid } = data; 16 | let res = { code : 0, msg : '' }; 17 | // 业务逻辑开始----------------------------------------------------------- 18 | // 可写与数据库的交互逻辑等等 19 | let { num1 , num2 } = data; 20 | if(!num1 || !num2){ 21 | return { 22 | code : -1, 23 | msg : "参数不能为空!" 24 | } 25 | } 26 | num1 = parseFloat(num1); 27 | num2 = parseFloat(num2); 28 | res.value = parseFloat((num1 + num2).toFixed(2)); 29 | // 业务逻辑结束----------------------------------------------------------- 30 | return res; 31 | } 32 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/test/pub/temporaryCache.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 临时数据缓存 5 | * @url template/test/pub/getTemporaryCache 前端调用的url参数地址 6 | * data 请求参数 说明 7 | * @params {String} uid 当前登录用户id,若用户已登录且token有效,则data中会带uid参数 8 | * (此参数是后端过滤器通过token获取并添加到data中的,是可信任的)(只有kh函数才带此参数) 9 | * res 返回参数说明 10 | * @params {Number} code 错误码,0表示成功 11 | * @params {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | let { data = {}, userInfo, util, originalParam } = event; 15 | let { uniID, config, pubFun, vk , db, _ } = util; 16 | let { uid } = data; 17 | let res = { code : 0, msg : 'ok' }; 18 | // 业务逻辑开始----------------------------------------------------------- 19 | let { key, value, second, mode } = data; 20 | if(mode == "get"){ 21 | res.value = vk.temporaryCache.get(key); 22 | }else if(mode == "set"){ 23 | res.value = vk.temporaryCache.set(key, value, second); 24 | }else if(mode == "del"){ 25 | res.value = vk.temporaryCache.del(key); 26 | }else if(mode == "clear"){ 27 | res.value = vk.temporaryCache.clear(); 28 | }else if(mode == "isExpired"){ 29 | res.value = vk.temporaryCache.isExpired(key); 30 | }else if(mode == "getAll"){ 31 | res.value = vk.temporaryCache.getAll(); 32 | } 33 | // 业务逻辑结束----------------------------------------------------------- 34 | return res; 35 | } 36 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/template/test/sys/test.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 此函数名称 4 | * @url template/test/sys/test 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * res 返回参数说明 7 | * @params {Number} code 错误码,0表示成功 8 | * @params {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, originalParam } = event; 12 | let { uniID, config, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : '' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | res.msg = "ok"; 17 | // 业务逻辑结束----------------------------------------------------------- 18 | return res; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/acceptInvite.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 用户接受邀请 4 | * @url user/kh/acceptInvite 前端调用的url参数地址 5 | * @description 此接口用于在注册之后再填写邀请码的场景,多数情况下不会用到此接口而是在注册时填写邀请码 6 | * data 请求参数 说明 7 | * @param {String} inviteCode 邀请人的邀请码 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | let { data = {}, util, originalParam } = event; 14 | let { uniID } = util; 15 | let { uid, inviteCode = "" } = data; 16 | let res = {}; 17 | // 业务逻辑开始----------------------------------------------------------- 18 | res = await uniID.acceptInvite({ 19 | uid:uid, 20 | inviteCode:inviteCode 21 | }); 22 | // 业务逻辑结束----------------------------------------------------------- 23 | return res; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindAlipay.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 绑定支付宝 4 | * @url user/kh/bindAlipay 前端调用的url参数地址 5 | * @description 将当前登录用户绑定支付宝 6 | * data 请求参数 说明 7 | * @param {String} code 支付宝登录返回的code 8 | * @param {String} platform 客户端类型:mp-weixin、app-plus,默认uni-id会自动取客户端类型,但是在云函数url化等场景无法取到客户端类型,可以使用此参数指定 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | // 业务逻辑开始----------------------------------------------------------- 15 | let { data = {}, userInfo, util } = event; 16 | let { uniID, vk, _ } = util; 17 | let { uid } = data; 18 | let res = { code : 0, msg : '' }; 19 | // 绑定 20 | res = await uniID.bindAlipay(event.data); 21 | // 业务逻辑结束----------------------------------------------------------- 22 | return res; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindEmail.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 绑定邮箱 4 | * @url user/kh/bindEmail 前端调用的url参数地址 5 | * @description 将当前登录用户绑定邮箱 6 | * data 请求参数 说明 7 | * @param {String} email 用户邮箱 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | let { data = {}, util } = event; 14 | let { uniID } = util; 15 | let res = {}; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | if (!data.code) return { code: -1, msg: "验证码不能为空!" } 18 | // 绑定邮箱 19 | res = await uniID.bindEmail(event.data); 20 | // 业务逻辑结束----------------------------------------------------------- 21 | return res; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindMobile.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 绑定手机号 4 | * @url user/kh/bindMobile 前端调用的url参数地址 5 | * @description 将当前登录用户绑定手机号 6 | * data 请求参数 说明 7 | * @param {String} mobile 用户手机号 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | let { data = {}, util } = event; 14 | let { uniID } = util; 15 | let res = {}; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | if (!data.code) return { code: -1, msg: "验证码不能为空!" } 18 | // 绑定手机号 19 | res = await uniID.bindMobile(data); 20 | // 业务逻辑结束----------------------------------------------------------- 21 | return res; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindQQ.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 绑定QQ 4 | * @url user/kh/bindQQ 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} code QQ登录返回的code 7 | * @param {String} platform 客户端类型:mp-weixin、app-plus,默认uni-id会自动取客户端类型,但是在云函数url化等场景无法取到客户端类型,可以使用此参数指定 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | // 业务逻辑开始----------------------------------------------------------- 14 | let { data = {}, userInfo, util } = event; 15 | let { uniID, vk, _ } = util; 16 | let { uid } = data; 17 | let res = { code : 0, msg : '' }; 18 | // 绑定 19 | res = await uniID.bindQQ(event.data); 20 | // 业务逻辑结束----------------------------------------------------------- 21 | return res; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/bindWeixin.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 绑定微信 4 | * @url user/kh/bindWeixin 前端调用的url参数地址 5 | * @description 将当前登录用户绑定微信 6 | * data 请求参数 说明 7 | * @param {String} code 微信登录返回的code 8 | * @param {String} platform 客户端类型:mp-weixin、app-plus,默认uni-id会自动取客户端类型,但是在云函数url化等场景无法取到客户端类型,可以使用此参数指定 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | // 业务逻辑开始----------------------------------------------------------- 15 | let { data = {}, userInfo, util } = event; 16 | let { uniID, vk, _ } = util; 17 | let { uid } = data; 18 | let res = { code : 0, msg : '' }; 19 | // 绑定 20 | res = await uniID.bindWeixin(event.data); 21 | // 业务逻辑结束----------------------------------------------------------- 22 | return res; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/getInvitedUser.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 获取接受邀请的用户清单 4 | * @url user/kh/getInvitedUser 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {Number} pageIndex 当前页码 7 | * @param {Number} pageSize 每页显示数量 8 | * @param {Array} sortRule 排序规则 9 | * @param {object} formData 查询条件数据源 10 | * @param {Array} columns 查询条件规则 11 | * res 返回参数说明 12 | * @param {Number} code 错误码,0表示成功 13 | * @param {String} msg 详细信息 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 17 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 18 | let { uid } = data; 19 | let res = { code : 0, msg : '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | // 可写与数据库的交互逻辑等等 22 | let dbName = "uni-id-users"; 23 | let index = 0; 24 | res = await vk.baseDao.getTableData({ 25 | dbName, 26 | data, 27 | fieldJson:{ token:false, password:false }, 28 | whereJson:{ 29 | ['inviter_uid.' + index]:uid 30 | } 31 | }); 32 | return res; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/getMenu.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 获取我拥有的菜单列表 5 | * @url user/kh/getMenu 前端调用的url参数地址 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { data = {}, userInfo, util, filterResponse, originalParam } = event; 12 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : '' }; 15 | // 业务逻辑开始----------------------------------------------------------- 16 | let { 17 | role = [], 18 | } = userInfo; 19 | // 根据角色获取菜单 20 | res = await vk.system.sysDao.listMenuByRole({ 21 | role 22 | }); 23 | res.userInfo = userInfo; 24 | // 业务逻辑结束----------------------------------------------------------- 25 | return res; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/getMyUserInfo.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 获取我的用户信息 4 | * @url user/kh/getMyUserInfo 前端调用的url参数地址 5 | */ 6 | main: async (event) => { 7 | // 业务逻辑开始----------------------------------------------------------- 8 | let { data = {}, userInfo, util } = event; 9 | let { uniID, vk, _ } = util; 10 | let { uid } = data; 11 | let res = { code : 0, msg : '' }; 12 | res.userInfo = userInfo; 13 | // 业务逻辑结束----------------------------------------------------------- 14 | return res; 15 | } 16 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/getWeixinMPscheme.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 获取小程序scheme码,适用于短信、邮件、外部网页等拉起小程序的业务场景。通过该接口,可以选择生成到期失效和永久有效的小程序码,目前仅针对国内非个人主体的小程序开放 5 | * @url user/kh/getWeixinMPscheme 前端调用的url参数地址 6 | * data 请求参数 说明 7 | * @param {String} path 小程序页面路径 8 | * @param {String} query 小程序页面参数 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | let { data = {}, userInfo, util, originalParam } = event; 15 | let { uniID, pubFun, vk , db, _ } = util; 16 | let { uid } = data; 17 | let res = { code : 0, msg : '' }; 18 | // 业务逻辑开始----------------------------------------------------------- 19 | let { 20 | path, 21 | query 22 | } = data; 23 | res = await vk.openapi.weixin.urlscheme.generate({ 24 | // 跳转到的目标小程序信息。 25 | jump_wxa:{ 26 | path, // 小程序页面路径 27 | query // 小程序页面参数 28 | }, 29 | // 生成的scheme码类型,到期失效:true,永久有效:false。 30 | is_expire:true, 31 | // 到期失效的scheme码的失效时间,单位秒。最长有效期为1年。 32 | expire_time: 3600*24*30 33 | }); 34 | return res; 35 | // 业务逻辑结束----------------------------------------------------------- 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/resetPwd.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 重置密码 4 | * @url user/kh/resetPwd 前端调用的url参数地址 5 | * @description 重置当前登录用户的密码为123456 6 | * data 请求参数 说明 7 | * @param {String} uid 用户Id,可以通过checkToken返回 8 | * @param {String} password 重置后的密码 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | let { util, data={} } = event; 15 | let { uniID } = util; 16 | let res = {}; 17 | // 业务逻辑开始----------------------------------------------------------- 18 | let { uid, password= '123456' } = data; 19 | res = await uniID.resetPwd({ uid, password }); 20 | // 业务逻辑结束----------------------------------------------------------- 21 | return res; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/setAvatar.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 设置头像 4 | * @url user/kh/setAvatar 前端调用的url参数地址 5 | * @description 设置当前登录用户的头像 6 | * data 请求参数 说明 7 | * @param {String} avatar 用户头像URL 8 | * @param {Boolean} deleteOldFile 是否同时删除云储存内的头像文件 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | let { data = {}, userInfo, util, originalParam } = event; 15 | let { customUtil, uniID, config, pubFun, vk , db, _ } = util; 16 | let { uid } = data; 17 | let res = { code : 0, msg : '' }; 18 | // 业务逻辑开始----------------------------------------------------------- 19 | let { avatar, deleteOldFile } = data; 20 | // 设置头像 21 | res = await uniID.setAvatar(event.data); 22 | // 判断是否需要删除旧头像的云储存文件 23 | if(res.code ===0 && deleteOldFile && userInfo.avatar){ 24 | try { 25 | await uniCloud.deleteFile({ 26 | fileList: [ 27 | userInfo.avatar 28 | ] 29 | }); 30 | }catch(err){ 31 | res.deleteFileErr = err; 32 | } 33 | } 34 | // 业务逻辑结束----------------------------------------------------------- 35 | return res; 36 | } 37 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/setUserInviteCode.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 设置用户邀请码(自动生成) 4 | * @url user/kh/setUserInviteCode 前端调用的url参数地址 5 | * @description 针对未生成邀请码的用户使用此方法生成邀请码(自动生成) 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | * @param {String} myInviteCode 最终设置的邀请码 10 | */ 11 | main: async (event) => { 12 | let { data = {},userInfo, util, originalParam } = event; 13 | let { uniID } = util; 14 | let { uid } = data; 15 | let res = {}; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | // 判断下如果已经生成,则不再重新生成 18 | if(userInfo.my_invite_code){ 19 | res = { 20 | "code": 0, 21 | "msg": "无需重复设置", 22 | "myInviteCode": userInfo.my_invite_code 23 | } 24 | }else{ 25 | res = await uniID.setUserInviteCode({ 26 | uid:uid 27 | }); 28 | } 29 | // 业务逻辑结束----------------------------------------------------------- 30 | return res; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/unbindAlipay.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 解绑支付宝 4 | * @url user/kh/unbindAlipay 前端调用的url参数地址 5 | * @description 当前登录用户解绑支付宝 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | // 业务逻辑开始----------------------------------------------------------- 12 | let { data = {}, userInfo, util } = event; 13 | let { uniID, vk } = util; 14 | let { uid } = data; 15 | let res = { code : 0, msg : '' }; 16 | if(vk.pubfn.isNullAll(userInfo.mobile, userInfo.username)){ 17 | return { code : -1, msg : '为了您的账号安全,请绑定手机号后再解绑支付宝!' }; 18 | } 19 | // 解绑 20 | res = await uniID.unbindAlipay(uid); 21 | // 业务逻辑结束----------------------------------------------------------- 22 | return res; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/unbindEmail.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 解绑邮箱 4 | * @url user/kh/unbindEmail 前端调用的url参数地址 5 | * @description 当前登录用户解绑邮箱 6 | * data 请求参数 说明 7 | * @param {String} email 邮箱 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | let { data = {}, userInfo, util } = event; 14 | let { uniID, vk } = util; 15 | let res = { code : 0, msg : '' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | if(vk.pubfn.isNullAll(userInfo.mobile, userInfo.username, userInfo.wx_openid, userInfo.ali_openid, userInfo.qq_openid)){ 18 | return { code : -1, msg : '为了您的账号安全,请绑定手机号后再解绑邮箱!' }; 19 | } 20 | // 解绑 21 | res = await uniID.unbindEmail(data); 22 | // 业务逻辑结束----------------------------------------------------------- 23 | return res; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/unbindMobile.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 解绑邮箱 4 | * @url user/kh/unbindMobile 前端调用的url参数地址 5 | * @description 当前登录用户解绑手机号 6 | * data 请求参数 说明 7 | * @param {String} mobile 手机号 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | */ 12 | main: async (event) => { 13 | let { data = {}, userInfo, util } = event; 14 | let { uniID, vk } = util; 15 | let res = { code: 0, msg: '' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | if (vk.pubfn.isNullAll(userInfo.username, userInfo.wx_openid, userInfo.ali_openid, userInfo.qq_openid)) { 18 | return { code: -1, msg: '为了您的账号安全,请绑定微信或设置用户名后再解绑手机号!' }; 19 | } 20 | // 解绑 21 | res = await uniID.unbindMobile(data); 22 | // 业务逻辑结束----------------------------------------------------------- 23 | return res; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/unbindQQ.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 解绑QQ 4 | * @url user/kh/unbindQQ 前端调用的url参数地址 5 | * res 返回参数说明 6 | * @param {Number} code 错误码,0表示成功 7 | * @param {String} msg 详细信息 8 | */ 9 | main: async (event) => { 10 | // 业务逻辑开始----------------------------------------------------------- 11 | let { data = {}, userInfo, util } = event; 12 | let { uniID, vk } = util; 13 | let { uid } = data; 14 | let res = { code : 0, msg : '' }; 15 | if(vk.pubfn.isNullAll(userInfo.mobile, userInfo.username)){ 16 | return { code : -1, msg : '为了您的账号安全,请绑定手机号后再解绑QQ!' }; 17 | } 18 | // 解绑 19 | res = await uniID.unbindQQ(uid); 20 | // 业务逻辑结束----------------------------------------------------------- 21 | return res; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/unbindWeixin.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 解绑微信 4 | * @url user/kh/unbindWeixin 前端调用的url参数地址 5 | * @description 当前登录用户解绑微信 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | // 业务逻辑开始----------------------------------------------------------- 12 | let { data = {}, userInfo, util } = event; 13 | let { uniID, vk } = util; 14 | let { uid } = data; 15 | let res = { code : 0, msg : '' }; 16 | if(vk.pubfn.isNullAll(userInfo.mobile, userInfo.username)){ 17 | return { code : -1, msg : '为了您的账号安全,请绑定手机号后再解绑微信!' }; 18 | } 19 | // 解绑 20 | res = await uniID.unbindWeixin(uid); 21 | // 业务逻辑结束----------------------------------------------------------- 22 | return res; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/updatePwd.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改登录密码 4 | * @url user/kh/updatePwd 前端调用的url参数地址 5 | * @description 修改当前登录用户的登录密码 6 | * data 请求参数 说明 7 | * @param {String} oldPassword 旧密码 8 | * @param {String} newPassword 新密码 9 | * @param {String} passwordConfirmation 确认新密码 10 | * res 返回参数说明 11 | * @param {Number} code 错误码,0表示成功 12 | * @param {String} msg 详细信息 13 | */ 14 | main: async (event) => { 15 | let { data={}, util } = event; 16 | let { uniID } = util; 17 | let res = {}; 18 | // 业务逻辑开始----------------------------------------------------------- 19 | res = await uniID.updatePwd(data); 20 | // 业务逻辑结束----------------------------------------------------------- 21 | return res; 22 | } 23 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/kh/updateUser.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 修改用户信息 4 | * @url user/kh/updateUser 前端调用的url参数地址 5 | * @description 设置当前登录用户的昵称等用户信息 6 | * data 请求参数 说明 7 | * @param {String} nickname 用户的昵称 8 | * @param {String} avatar 用户的头像 9 | * @param {Number} gender 用户的性别 10 | * res 返回参数说明 11 | * @param {Number} code 错误码,0表示成功 12 | * @param {String} msg 详细信息 13 | */ 14 | main: async (event) => { 15 | let { data = {}, util, originalParam } = event; 16 | let { uniID, vk } = util; 17 | let { uid } = data; 18 | let res = {}; 19 | // 业务逻辑开始----------------------------------------------------------- 20 | // 允许修改的字段列表 21 | let updateKeys = ["nickname", "avatar", "gender", "social_info"]; 22 | let dataJson = {}; 23 | for (let i in updateKeys) { 24 | let key = updateKeys[i]; 25 | if (vk.pubfn.isNotNull(data[key])) dataJson[key] = data[key]; 26 | } 27 | dataJson.uid = uid; 28 | res = await uniID.updateUser(dataJson); 29 | // 业务逻辑结束----------------------------------------------------------- 30 | return res; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/checkToken.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 验证token是否有效 4 | * @url user/pub/checkToken 前端调用的url参数地址 5 | * @description 验证token是否有效(会返回uid) 6 | * @param {String} uniIdToken 用户token 7 | * res 返回参数说明 8 | * @param {Number} code 错误码,0表示成功 9 | * @param {String} msg 详细信息 10 | * @param {String} uid 当前token对应的用户uid 11 | * @param {Object} userInfo 当前用户信息 12 | * @param {Array} role 当前用户角色 13 | * @param {Array} permission 当前用户权限 14 | */ 15 | main: async (event) => { 16 | let { util } = event; 17 | let { uniID } = util; 18 | let res = {}; 19 | // 业务逻辑开始----------------------------------------------------------- 20 | res = await uniID.checkToken(event.uniIdToken,{ 21 | needPermission:true, 22 | needUserInfo:true 23 | }); 24 | // 业务逻辑结束----------------------------------------------------------- 25 | return res; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/code2SessionAlipay.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 获取支付宝openid 4 | * @url user/pub/code2SessionAlipay 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} code 支付宝登录返回的code 7 | * @param {String} platform 客户端类型:mp-weixin、app-plus,默认uni-id会自动取客户端类型,但是在云函数url化等场景无法取到客户端类型,可以使用此参数指定 8 | * res 返回参数说明 9 | * @param {Number} code 错误码,0表示成功 10 | * @param {String} msg 详细信息 11 | * @param {String} openid 用户openid 12 | * @param {String} accessToken 客户端为APP时返回 13 | * @param {String} expiresIn 客户端为APP时返回,accessToken 接口调用凭证超时时间,单位(秒) 14 | * @param {String} refreshToken 客户端为APP时返回,用于刷新accessToken 15 | * @param {String} reExpiresIn refreshToken超时时间,单位(秒) 16 | */ 17 | main: async (event) => { 18 | let { data = {}, userInfo, util, originalParam } = event; 19 | let { uniID, vk } = util; 20 | let { uid } = data; 21 | let res = { code : 0, msg : '' }; 22 | // 业务逻辑开始----------------------------------------------------------- 23 | // 用户登录(账号+密码) 24 | res = await uniID.code2SessionAlipay(data); 25 | if(res.code === 0){ 26 | let { needCache } = data; 27 | if(needCache){ 28 | await vk.globalDataCache.set(`sys-alipay-session2openid-${res.sessionKey}`, res, 60*5); 29 | } 30 | } 31 | // 业务逻辑结束----------------------------------------------------------- 32 | return res; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/getPhoneNumber.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 获取用户微信绑定的手机号 5 | * @url user/pub/getPhoneNumber 前端调用的url参数地址 6 | * data 请求参数 7 | * @param {String} encryptedData 8 | * @param {String} iv 9 | * @param {String} sessionKey 10 | */ 11 | main: async (event) => { 12 | let { data = {}, userInfo, util, originalParam } = event; 13 | let { customUtil, config, pubFun, vk, db, _ } = util; 14 | let { uid } = data; 15 | let res = { code : 0, msg : '' }; 16 | // 业务逻辑开始----------------------------------------------------------- 17 | // 若不指定appId,默认取config.uni.mp-weixin.oauth.weixin.appid; 18 | res = await vk.openapi.weixin.decrypt.getPhoneNumber(data); 19 | // 业务逻辑结束----------------------------------------------------------- 20 | return res; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/getUserInfoByInviteCode.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports = { 3 | /** 4 | * 根据邀请码获取用户社交信息 5 | * @url user/pub/getUserInfoByInviteCode 前端调用的url参数地址 6 | * data 请求参数 7 | * @param {String} code 8 | */ 9 | main: async (event) => { 10 | let { data = {}, util, originalParam } = event; 11 | let { customUtil, config, pubFun, vk, db, _ } = util; 12 | let { uid } = data; 13 | let res = { code : 0, msg : '' }; 14 | // 业务逻辑开始----------------------------------------------------------- 15 | let { code } = data; 16 | // 参数非空检测 17 | let nullKey = vk.pubfn.isNullOneByObject({ code }); 18 | if(nullKey) return { code:-1, msg:'参数 '+nullKey+' 不能为空' }; 19 | res.userInfo = await vk.baseDao.findByWhereJson({ 20 | dbName:"uni-id-users", 21 | fieldJson:{ 22 | _id:true, 23 | nickname:true, 24 | gender:true, 25 | avatar:true, 26 | my_invite_code:true, 27 | social_info:true 28 | }, 29 | whereJson:{ 30 | my_invite_code : code 31 | } 32 | }); 33 | return res; 34 | // 业务逻辑结束----------------------------------------------------------- 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/login.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 用户登录(账号+密码) 4 | * @url user/pub/login 前端调用的url参数地址 5 | * @description 用户登录(账号+密码) 6 | * data 请求参数 说明 7 | * @param {String} username 用户名 8 | * @param {String} password 密码 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | * @param {String} token 登录成功之后返回的token信息 13 | * @param {String} tokenExpired token过期时间 14 | */ 15 | main: async (event) => { 16 | let { data = {}, util, originalParam } = event; 17 | let { uniID, config, pubFun, vk, db, _ } = util; 18 | let { uid } = data; 19 | let res = {}; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | // 用户登录(账号+密码) 22 | 23 | res = await uniID.login({ 24 | ...event.data, 25 | // 不指定queryField的情况下只会查询username 26 | queryField: ['username', 'email', 'mobile'] 27 | }); 28 | if (res.token) { 29 | if (!res.msg) { 30 | res.msg = res.type === "register" ? "注册成功" : "登录成功"; 31 | } 32 | // 日志服务 33 | const loginLogService = vk.require("service/user/util/login_log"); 34 | await loginLogService.add({ 35 | type: "login", 36 | login_type: "password", 37 | user_id: res.uid, 38 | context: originalParam.context 39 | }, util); 40 | } 41 | // 业务逻辑结束----------------------------------------------------------- 42 | return res; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/loginByAlipay.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 用户登录(支付宝授权) 4 | * @url user/pub/loginByAlipay 前端调用的url参数地址 5 | * @description 用户登录(支付宝授权) 6 | * data 请求参数 说明 7 | * @param {String} code 支付宝登录返回的code 8 | * @param {String} platform 客户端类型:mp-weixin、app-plus,默认uni-id会自动取客户端类型,但是在云函数url化等场景无法取到客户端类型,可以使用此参数指定 9 | * @param {String} type login:登录 register:注册 10 | * res 返回参数说明 11 | * @param {Number} code 错误码,0表示成功 12 | * @param {String} msg 详细信息 13 | * @param {String} token 登录成功之后返回的token信息 14 | * @param {String} tokenExpired token过期时间 15 | */ 16 | main: async (event) => { 17 | let { data = {}, util, originalParam } = event; 18 | let { uniID, config, pubFun, vk, db, _ } = util; 19 | let { uid } = data; 20 | let res = {}; 21 | // 业务逻辑开始----------------------------------------------------------- 22 | res = await uniID.loginByAlipay(data); 23 | if (res.token) { 24 | if (!res.msg) { 25 | res.msg = res.type === "register" ? "注册成功" : "登录成功"; 26 | } 27 | // 日志服务 28 | const loginLogService = vk.require("service/user/util/login_log"); 29 | await loginLogService.add({ 30 | type: "login", 31 | login_type: "alipay", 32 | user_id: res.uid, 33 | context: originalParam.context 34 | }, util); 35 | } 36 | // 业务逻辑结束----------------------------------------------------------- 37 | return res; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/loginByEmail.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 用户登录(支付宝授权) 4 | * @url user/pub/loginByEmail 前端调用的url参数地址 5 | * @description 用户登录(支付宝授权) 6 | * data 请求参数 说明 7 | * @param {String} email 邮箱 8 | * @param {String} code 邮箱收到的验证码 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | * @param {String} token 登录成功之后返回的token信息 13 | * @param {String} tokenExpired token过期时间 14 | */ 15 | main: async (event) => { 16 | let { data = {}, util, originalParam } = event; 17 | let { uniID, config, pubFun, vk, db, _ } = util; 18 | let { uid } = data; 19 | let res = {}; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | let { email, code, type, password, needPermission } = data; 22 | res = await uniID.loginByEmail({ 23 | email, 24 | code, 25 | type, 26 | password, 27 | needPermission 28 | }); 29 | if (res.token) { 30 | if (!res.msg) { 31 | res.msg = res.type === "register" ? "注册成功" : "登录成功"; 32 | } 33 | // 日志服务 34 | const loginLogService = vk.require("service/user/util/login_log"); 35 | await loginLogService.add({ 36 | type: "login", 37 | login_type: "email", 38 | user_id: res.uid, 39 | context: originalParam.context 40 | }, util); 41 | } 42 | // 业务逻辑结束----------------------------------------------------------- 43 | return res; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/loginByQQ.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * QQ授权登录 4 | * @url user/pub/loginByQQ 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} code QQ小程序登录返回的code 7 | * @param {String} accessToken QQ APP登录返回的access_token 8 | * @param {String} type login:登录 register:注册 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | * @param {String} token 登录成功之后返回的token信息 13 | * @param {String} tokenExpired token过期时间 14 | */ 15 | main: async (event) => { 16 | let { data = {}, util, originalParam } = event; 17 | let { uniID, config, pubFun, vk, db, _ } = util; 18 | let { uid } = data; 19 | let res = {}; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | res = await uniID.loginByQQ(data); 22 | if (res.token) { 23 | if (!res.msg) { 24 | res.msg = res.type === "register" ? "注册成功" : "登录成功"; 25 | } 26 | // 日志服务 27 | const loginLogService = vk.require("service/user/util/login_log"); 28 | await loginLogService.add({ 29 | type: "login", 30 | login_type: "qq", 31 | user_id: res.uid, 32 | context: originalParam.context 33 | }, util); 34 | } 35 | // 业务逻辑结束----------------------------------------------------------- 36 | return res; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/logout.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 用户退出登录 4 | * @url user/pub/logout 前端调用的url参数地址 5 | * @description 用户退出登录 6 | * res 返回参数说明 7 | * @param {Number} code 错误码,0表示成功 8 | * @param {String} msg 详细信息 9 | */ 10 | main: async (event) => { 11 | let { util } = event; 12 | let { uniID } = util; 13 | let res = {}; 14 | // 业务逻辑开始----------------------------------------------------------- 15 | if(event.uniIdToken){ 16 | res = await uniID.logout(event.uniIdToken); 17 | }else{ 18 | res.code = 0; 19 | res.msg = "未登录"; 20 | } 21 | // 业务逻辑结束----------------------------------------------------------- 22 | return res; 23 | } 24 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/register.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 用户注册(账号+密码) 4 | * @url user/pub/register 前端调用的url参数地址 5 | * @description 用户注册(账号+密码) 6 | * data 请求参数 说明 7 | * @param {String} username 用户名,唯一 8 | * @param {String} password 密码 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | * @param {String} token 注册完成自动登录之后返回的token信息 13 | * @param {String} tokenExpired token过期时间 14 | * @param {Object} userInfo 用户信息 15 | */ 16 | main: async (event) => { 17 | let { data = {}, userInfo, util, originalParam } = event; 18 | let { uniID, config, pubFun, vk , db, _ } = util; 19 | let { uid } = data; 20 | let res = { code : -1, msg : '' }; 21 | // 业务逻辑开始----------------------------------------------------------- 22 | let { username, password, needPermission } = data; 23 | // username必须以字母开头,长度在6~18之间,只能包含字母、数字和下划线 24 | if(!vk.pubfn.test(username,"username")){ 25 | return { code : -1, msg : "账号必须以字母开头,长度在6~18之间,只能包含字母、数字和下划线" }; 26 | } 27 | // password 长度在6~18之间,只能包含字母、数字和下划线 28 | if(!vk.pubfn.test(password,"pwd")){ 29 | return { code : -1, msg : "密码长度在6~18之间,只能包含字母、数字和下划线" }; 30 | } 31 | res = await uniID.register({ 32 | username, password, needPermission 33 | }); 34 | // 业务逻辑结束----------------------------------------------------------- 35 | return res; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/resetPasswordByEmail.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 根据邮箱+验证码重置密码 4 | * @url user/pub/resetPasswordByEmail 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} password 重置后的密码 7 | * @param {String} code 验证码 8 | * @param {String} email 邮箱号码 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | let { data = {}, util, originalParam } = event; 15 | let { uniID, config, pubFun, vk , db, _ } = util; 16 | let { 17 | _id, 18 | password, 19 | code, 20 | email 21 | } = data; 22 | let res = { code : -1, msg : '' }; 23 | // 业务逻辑开始----------------------------------------------------------- 24 | // 可写与数据库的交互逻辑等等 25 | // 检查验证码是否正确 26 | res = await uniID.verifyCode({ 27 | email, 28 | code, 29 | type: 'reset' 30 | }); 31 | if(res.code !== 0){ 32 | return res; 33 | } 34 | // 根据email查询用户是否存在 35 | let userInfo = await vk.baseDao.findByWhereJson({ 36 | dbName:"uni-id-users", 37 | whereJson:{ 38 | email 39 | } 40 | }); 41 | if(!userInfo){ 42 | return { code : -1, msg : '邮箱号未注册!' }; 43 | } 44 | // 重置密码 45 | res = await uniID.resetPwd({ 46 | uid: userInfo._id, 47 | password 48 | }); 49 | // 业务逻辑结束----------------------------------------------------------- 50 | return res; 51 | } 52 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/resetPasswordByMobile.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 根据手机+验证码重置密码 4 | * @url user/pub/resetPasswordByMobile 前端调用的url参数地址 5 | * data 请求参数 说明 6 | * @param {String} password 重置后的密码 7 | * @param {String} code 验证码 8 | * @param {String} mobile 手机号 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | */ 13 | main: async (event) => { 14 | let { data = {}, util, originalParam } = event; 15 | let { uniID, config, pubFun, vk , db, _ } = util; 16 | let { 17 | _id, 18 | password, 19 | code, 20 | mobile 21 | } = data; 22 | let res = { code : -1, msg : '' }; 23 | // 业务逻辑开始----------------------------------------------------------- 24 | // 可写与数据库的交互逻辑等等 25 | // 检查验证码是否正确 26 | res = await uniID.verifyCode({ 27 | mobile, 28 | code, 29 | type: 'reset' 30 | }); 31 | if(res.code !== 0){ 32 | return res; 33 | } 34 | // 根据mobile查询用户是否存在 35 | let userInfo = await vk.baseDao.findByWhereJson({ 36 | dbName:"uni-id-users", 37 | whereJson:{ 38 | mobile 39 | } 40 | }); 41 | if(!userInfo){ 42 | return { code : -1, msg : '手机号未注册!' }; 43 | } 44 | // 重置密码 45 | res = await uniID.resetPwd({ 46 | uid: userInfo._id, 47 | password 48 | }); 49 | // 业务逻辑结束----------------------------------------------------------- 50 | return res; 51 | } 52 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/pub/sendSmsCode.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 发送短信的验证码 4 | * @url user/pub/sendSmsCode 前端调用的url参数地址 5 | * @description 发送验证码 6 | * data 请求参数 说明 7 | * @param {String} mobile 手机号 8 | * @param {String} type 验证码类型 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | * @param {Object} requestRes 原始返回数据 13 | * @param {Object} requestParam 包含服务供应商和发送的手机号 14 | */ 15 | main: async (event) => { 16 | let { data = {}, userInfo, util, originalParam } = event; 17 | let { uniID, config, pubFun, vk, db, _ } = util; 18 | let { uid } = data; 19 | let res = { code: 0, msg: '' }; 20 | // 业务逻辑开始----------------------------------------------------------- 21 | let { mobile, type } = data; 22 | if (vk.pubfn.isNull(mobile)) { 23 | return { code: -1, msg: '手机号不能为空' }; 24 | } 25 | const code = vk.pubfn.random(6, "0123456789"); 26 | let provider = "unicloud"; 27 | if (vk.pubfn.getData(config, "vk.service.sms.aliyun.enable")) { 28 | provider = "aliyun"; 29 | } 30 | res = await vk.system.smsUtil.sendSmsVerifyCode({ 31 | provider, 32 | code, 33 | type, 34 | phone: mobile, 35 | expiresIn: 180, // 验证码实际有效时间,必须是60的倍数 36 | }); 37 | // 业务逻辑结束----------------------------------------------------------- 38 | return res; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/sys/encryptPwd.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 密码加密测试 4 | * @url user/sys/encryptPwd 前端调用的url参数地址 5 | * @description 密码加密测试 6 | * @param {Object} data 请求参数 7 | * @param {String} uniIdToken 用户token 8 | * @param {Object} util 公共工具包 9 | * res 返回参数说明 10 | * @param {Number} code 错误码,0表示成功 11 | * @param {String} msg 详细信息 12 | * @param {String} password 加密后的字符串 13 | */ 14 | main: async (event) => { 15 | let { util } = event; 16 | let { uniID } = util; 17 | let res = {}; 18 | // 业务逻辑开始----------------------------------------------------------- 19 | const password = await uniID.encryptPwd('123456'); 20 | res = { 21 | code: 0, 22 | msg: '密码加密完成', 23 | password 24 | } 25 | // 业务逻辑结束----------------------------------------------------------- 26 | return res; 27 | } 28 | } -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/service/user/sys/setVerifyCode.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * 设置验证码 4 | * @url user/sys/setVerifyCode 前端调用的url参数地址 5 | * @description 设置验证码(此接口正式环境不要暴露,故写在了sys目录下) 6 | * data 请求参数 说明 7 | * @param {String} email 邮箱 8 | * @param {String} mobile 手机号 9 | * @param {String} type 验证码类型 10 | * res 返回参数说明 11 | * @param {Number} code 错误码,0表示成功 12 | * @param {String} msg 详细信息 13 | * @param {String} email 邮箱 14 | * @param {String} mobile 手机号 15 | * @param {String} verifyCode 验证码(uni 1.1.2开始不再返回verifyCode) 16 | */ 17 | main: async (event) => { 18 | let { data = {}, util } = event; 19 | let { uniID } = util; 20 | let { email, mobile, code, type } = data; 21 | let res = {code : -1, msg : ''}; 22 | // 业务逻辑开始----------------------------------------------------------- 23 | res = await uniID.setVerifyCode(data); 24 | // 业务逻辑结束----------------------------------------------------------- 25 | return res; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/util/pubFunction.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 自定义公共函数包 3 | * 这里可以写你自己的公共函数 4 | */ 5 | var pubFun = {}; 6 | var vk; // 全局vk实例 7 | /** 8 | * 初始化,请勿删除此代码 9 | */ 10 | pubFun.init = function(util) { 11 | vk = util.vk;// 也可以通过 uniCloud.vk 获取 vk对象 12 | } 13 | /** 14 | * 公共函数写法示例 15 | * pubFun.test(); 16 | */ 17 | pubFun.test = function(path) { 18 | // 逻辑 19 | // ... 20 | // 逻辑 21 | return "这是公共函数test的返回"; 22 | } 23 | 24 | 25 | module.exports = pubFun; 26 | -------------------------------------------------------------------------------- /uniCloud-aliyun/cloudfunctions/router/util/urlrewrite.js: -------------------------------------------------------------------------------- 1 | /** 2 | * URL重写 3 | * 如让 https://xxx.bspapp.com/http/router/aaa 指向云函数 template/db_api/pub/select 4 | */ 5 | module.exports = { 6 | "rule":{ 7 | "^findById/(.+)": "template/db_api/pub/findById?_id=$1", 8 | "^aaa$": "template/db_api/pub/select" 9 | }, 10 | "config":{ 11 | // 当设置为true时,只有符合url重写规则内的云函数才可以被url化访问。 12 | "accessOnlyInRule":false 13 | } 14 | }; 15 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/blog-article-category.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": [], 4 | "permission": { 5 | "read": false, 6 | "create": false, 7 | "update": false, 8 | "delete": false 9 | }, 10 | "properties": { 11 | "_id": { 12 | "description": "ID,系统自动生成" 13 | }, 14 | "name": { 15 | "description": "分类名称" 16 | }, 17 | "articleId": { 18 | "foreignKey": "blog-article.id", 19 | "description": "文章id" 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/blog-article-comment.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": [], 4 | "permission": { 5 | "read": false, 6 | "create": false, 7 | "update": false, 8 | "delete": false 9 | }, 10 | "properties": { 11 | "_id": { 12 | "description": "ID,系统自动生成" 13 | }, 14 | "id": { 15 | "bsonType": "Number", 16 | "description": "评论id" 17 | }, 18 | "articleId": { 19 | "bsonType": "Number", 20 | "foreignKey": "article.id", 21 | "description": "关联文章id" 22 | }, 23 | "content": { 24 | "description": "评论内容" 25 | }, 26 | "isLike": { 27 | "description": "是否点赞" 28 | }, 29 | "likeNum": { 30 | "description": "点赞次数" 31 | }, 32 | "likeUserIds": { 33 | "description": "所有点赞人的用户id数组" 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/blog-article-tag.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": [], 4 | "permission": { 5 | "read": false, 6 | "create": false, 7 | "update": false, 8 | "delete": false 9 | }, 10 | "properties": { 11 | "_id": { 12 | "description": "ID,系统自动生成" 13 | }, 14 | "name": { 15 | "description": "分类名称" 16 | }, 17 | "articleId": { 18 | "bsonType": "Number", 19 | "foreignKey": "blog-article.id", 20 | "description": "文章id" 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/blog-article.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": [], 4 | "permission": { 5 | "read": false, 6 | "create": false, 7 | "update": false, 8 | "delete": false 9 | }, 10 | "properties": { 11 | "_id": { // 字段名称,每个表都会带有_id字段 12 | "description": "ID,系统自动生成" 13 | // 这里还有很多字段属性可以设置 14 | }, 15 | "id": { 16 | "bsonType": "Number", 17 | "description": "文章ID" 18 | }, 19 | "title": { 20 | "description": "文章标题" 21 | 22 | }, 23 | "content": { 24 | "description": "文章内容" 25 | }, 26 | "viewCount": { 27 | "description": "浏览次数" 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/blog-comment-reply.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": [], 4 | "permission": { 5 | "read": false, 6 | "create": false, 7 | "update": false, 8 | "delete": false 9 | }, 10 | "properties": { 11 | "_id": { 12 | "description": "ID,系统自动生成" 13 | }, 14 | "id": { 15 | "bsonType": "Number", 16 | "description": "评论id" 17 | }, 18 | "commentId": { 19 | "bsonType": "Number", 20 | "foreignKey": "blog-article-comment.id", 21 | "description": "关联评论id" 22 | }, 23 | "articleId": { 24 | "bsonType": "Number", 25 | "foreignKey": "blog-article.id", 26 | "description": "关联文章id" 27 | }, 28 | "content": { 29 | "description": "评论内容" 30 | }, 31 | "isLike": { 32 | "description": "是否点赞" 33 | }, 34 | "likeNum": { 35 | "description": "点赞次数" 36 | }, 37 | "likeUserIds": { 38 | "description": "所有点赞人的用户id数组" 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/blog-friend-like.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": [], 4 | "permission": { 5 | "read": false, 6 | "create": false, 7 | "update": false, 8 | "delete": false 9 | }, 10 | "properties": { 11 | "_id": { 12 | "description": "ID,系统自动生成" 13 | }, 14 | "friendId": { 15 | "foreignKey": "blog-friend._id", 16 | "description": "关联主表id" 17 | }, 18 | "userName": { 19 | "description": "点赞用户名称" 20 | }, 21 | "isPraise": { 22 | "description": "是否点赞" 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/blog-friend-reply.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": [], 4 | "permission": { 5 | "read": false, 6 | "create": false, 7 | "update": false, 8 | "delete": false 9 | }, 10 | "properties": { 11 | "_id": { 12 | "description": "ID,系统自动生成" 13 | }, 14 | "friendId": { 15 | "foreignKey": "blog-friend._id", 16 | "description": "关联主表id" 17 | }, 18 | "replyUserId": { 19 | "description": "回复人的id" 20 | }, 21 | "replyUserName": { 22 | "description": "回复人的名字" 23 | }, 24 | "userId": { 25 | "description": "主人id" 26 | }, 27 | "userName": { 28 | "description": "主人名字" 29 | }, 30 | "content": { 31 | "description": "回复内容" 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/blog-friend.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": [], 4 | "permission": { 5 | "read": false, 6 | "create": false, 7 | "update": false, 8 | "delete": false 9 | }, 10 | "properties": { 11 | "_id": { 12 | "description": "ID,系统自动生成" 13 | }, 14 | "content": { 15 | "description": "评论内容" 16 | }, 17 | "images": { 18 | "description": "上传图片的地址字符串" 19 | }, 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/opendb-admin-menus.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": ["name", "menu_id"], 4 | "properties": { 5 | "_id": { 6 | "description": "存储文档 ID,系统自动生成" 7 | }, 8 | "menu_id": { 9 | "bsonType": "string", 10 | "description": "菜单项的ID,不可重复", 11 | "trim": "both" 12 | }, 13 | "name": { 14 | "bsonType": "string", 15 | "description": "菜单名称", 16 | "trim": "both" 17 | }, 18 | "icon": { 19 | "bsonType": "string", 20 | "description": "菜单图标", 21 | "trim": "both" 22 | }, 23 | "url": { 24 | "bsonType": "string", 25 | "description": "菜单url", 26 | "trim": "both" 27 | }, 28 | "comment": { 29 | "bsonType": "string", 30 | "description": "备注,菜单说明" 31 | }, 32 | "sort": { 33 | "bsonType": "int", 34 | "description": "菜单序号(越大越靠后)" 35 | }, 36 | "parent_id": { 37 | "bsonType": "string", 38 | "description": "父级菜单Id" 39 | }, 40 | "permission": { 41 | "bsonType": "array", 42 | "description": "菜单权限列表" 43 | }, 44 | "enable": { 45 | "bsonType": "bool", 46 | "description": "是否启用菜单,true启用、false禁用" 47 | }, 48 | "create_date": { 49 | "bsonType": "timestamp", 50 | "description": "菜单创建时间", 51 | "forceDefaultValue": { 52 | "$env": "now" 53 | } 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/opendb-verify-codes.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": [], 4 | "properties": { 5 | "_id": { 6 | "description": "ID,系统自动生成" 7 | }, 8 | "mobile": { 9 | "bsonType": "string", 10 | "description": "手机号码" 11 | }, 12 | "email": { 13 | "bsonType": "string", 14 | "description": "邮箱" 15 | }, 16 | "device_uuid": { 17 | "bsonType": "string", 18 | "description": "设备UUID,常用于图片验证码" 19 | }, 20 | "code": { 21 | "bsonType": "string", 22 | "description": "验证码" 23 | }, 24 | "scene": { 25 | "bsonType": "string", 26 | "description": "使用验证码的场景,如:login, bind, unbind, pay" 27 | }, 28 | "state": { 29 | "bsonType": "int", 30 | "description": "验证状态:0 未验证、1 已验证、2 已作废" 31 | }, 32 | "ip": { 33 | "bsonType": "string", 34 | "description": "请求时客户端IP地址" 35 | }, 36 | "create_date": { 37 | "bsonType": "timestamp", 38 | "description": "创建时间" 39 | }, 40 | "expired_date": { 41 | "bsonType": "timestamp", 42 | "description": "过期时间" 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/uni-id-log.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": [], 4 | "properties": { 5 | "_id": { 6 | "description": "ID,系统自动生成" 7 | }, 8 | "user_id": { 9 | "bsonType": "string", 10 | "foreignKey": "uni-id-users._id", 11 | "description": "用户id,参考uni-id-users表" 12 | }, 13 | "ua": { 14 | "bsonType": "string", 15 | "description": "userAgent" 16 | }, 17 | "device_uuid": { 18 | "bsonType": "string", 19 | "description": "设备唯一标识" 20 | }, 21 | "type": { 22 | "bsonType": "string", 23 | "enum": ["login", "logout"], 24 | "description": "登录类型" 25 | }, 26 | "state": { 27 | "bsonType": "int", 28 | "description": "结果:0 失败、1 成功" 29 | }, 30 | "ip": { 31 | "bsonType": "string", 32 | "description": "ip地址" 33 | }, 34 | "create_date": { 35 | "bsonType": "timestamp", 36 | "description": "创建时间", 37 | "forceDefaultValue": { 38 | "$env": "now" 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/uni-id-permissions.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": ["permission_id", "permission_name"], 4 | "properties": { 5 | "_id": { 6 | "description": "存储文档 ID,系统自动生成" 7 | }, 8 | "permission_id": { 9 | "bsonType": "string", 10 | "description": "权限唯一标识,不可修改,不允许重复", 11 | "label": "权限标识", 12 | "trim": "both", 13 | "title": "权限ID", 14 | "component": { 15 | "name": "input" 16 | } 17 | }, 18 | "permission_name": { 19 | "bsonType": "string", 20 | "description": "权限名称", 21 | "label": "权限名称", 22 | "title": "权限名称", 23 | "trim": "both", 24 | "component": { 25 | "name": "input" 26 | } 27 | }, 28 | "comment": { 29 | "bsonType": "string", 30 | "description": "备注", 31 | "label": "备注", 32 | "title": "备注", 33 | "trim": "both", 34 | "component": { 35 | "name": "textarea" 36 | } 37 | }, 38 | "create_date": { 39 | "bsonType": "timestamp", 40 | "description": "创建时间", 41 | "forceDefaultValue": { 42 | "$env": "now" 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /uniCloud-aliyun/database/uni-id-roles.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsonType": "object", 3 | "required": ["role_id"], 4 | "permission": { 5 | "read": false, 6 | "create": false, 7 | "update": false, 8 | "delete": false 9 | }, 10 | "properties": { 11 | "_id": { 12 | "description": "存储文档 ID,系统自动生成" 13 | }, 14 | "role_id": { 15 | "title": "唯一ID", 16 | "bsonType": "string", 17 | "description": "角色唯一标识,不可修改,不允许重复", 18 | "trim": "both" 19 | }, 20 | "role_name": { 21 | "title": "名称", 22 | "bsonType": "string", 23 | "description": "角色名称", 24 | "trim": "both" 25 | }, 26 | "permission": { 27 | "title": "权限", 28 | "bsonType": "array", 29 | "foreignKey": "uni-id-permissions.permission_id", 30 | "description": "角色拥有的权限列表" 31 | }, 32 | "comment": { 33 | "title": "备注", 34 | "bsonType": "string", 35 | "description": "备注", 36 | "trim": "both" 37 | }, 38 | "create_date": { 39 | "bsonType": "timestamp", 40 | "description": "创建时间", 41 | "forceDefaultValue": { 42 | "$env": "now" 43 | } 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /uni_modules/uni-config-center/uniCloud/cloudfunctions/common/uni-config-center/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "uni-config-center", 3 | "version": "0.0.2", 4 | "description": "配置中心", 5 | "main": "index.js", 6 | "keywords": [], 7 | "author": "DCloud", 8 | "license": "Apache-2.0" 9 | } -------------------------------------------------------------------------------- /uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "uni-id", 3 | "version": "3.3.23", 4 | "description": "uni-id for uniCloud", 5 | "main": "index.js", 6 | "homepage": "https://uniapp.dcloud.io/uniCloud/uni-id", 7 | "repository": { 8 | "type": "git", 9 | "url": "git+https://gitee.com/dcloud/uni-id.git" 10 | }, 11 | "author": "", 12 | "license": "Apache-2.0", 13 | "dependencies": { 14 | "uni-config-center": "file:../../../../../uni-config-center/uniCloud/cloudfunctions/common/uni-config-center" 15 | } 16 | } -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * vk-unicloud框架客户端(前端) 3 | * author VK 4 | */ 5 | import vk from './vk_modules/vk-unicloud-page' 6 | 7 | export default vk; -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/uniCloud/cloudfunctions/common/vk-unicloud/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vk-unicloud", 3 | "version": "2.9.1", 4 | "description": "【云函数端SDK】VK云函数路由模式uniCloud开发框架,在router目录下执行 npm i vk-unicloud 进行安装和升级", 5 | "main": "index.js", 6 | "homepage": "https://gitee.com/vk-uni/vk-uni-cloud-router.git", 7 | "repository": { 8 | "type": "git", 9 | "url": "git+https://gitee.com/vk-uni/vk-uni-cloud-router.git" 10 | }, 11 | "author": "VK", 12 | "license": "Apache-2.0" 13 | } -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/debounce.js: -------------------------------------------------------------------------------- 1 | let timeoutArr = []; 2 | /** 3 | * 防抖函数 4 | * 防抖原理:一定时间内,只有最后一次或第一次调用,回调函数才会执行 5 | * @param {Function} fn 要执行的回调函数 6 | * @param {Number} time 延时的时间 7 | * @param {Boolean} isImmediate 是否立即执行 默认true 8 | * @param {String} timeoutName 定时器ID 9 | * @return null 10 | vk.pubfn.debounce(function() { 11 | 12 | }, 1000); 13 | */ 14 | function debounce(fn, time = 500, isImmediate = true, timeoutName = "default") { 15 | // 清除定时器 16 | if(!timeoutArr[timeoutName]) timeoutArr[timeoutName] = null; 17 | if (timeoutArr[timeoutName] !== null) clearTimeout(timeoutArr[timeoutName]); 18 | // 立即执行一次 19 | if (isImmediate) { 20 | var callNow = !timeoutArr[timeoutName]; 21 | timeoutArr[timeoutName] = setTimeout(function() { 22 | timeoutArr[timeoutName] = null; 23 | }, time); 24 | if (callNow){ 25 | if(typeof fn === 'function') fn(); 26 | } 27 | } else { 28 | // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时time毫秒后执行fn回调方法 29 | timeoutArr[timeoutName] = setTimeout(function() { 30 | if(typeof fn === 'function') fn(); 31 | }, time); 32 | } 33 | } 34 | export default debounce 35 | -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/deepClone.js: -------------------------------------------------------------------------------- 1 | // 判断arr是否为一个数组,返回一个bool值 2 | function isArray (arr) { 3 | return Object.prototype.toString.call(arr) === '[object Array]'; 4 | } 5 | 6 | // 深度克隆 7 | function deepClone (obj) { 8 | // 对常见的“非”值,直接返回原来值 9 | if([null, undefined, NaN, false].includes(obj)) return obj; 10 | if(typeof obj !== "object" && typeof obj !== 'function') { 11 | //原始类型直接返回 12 | return obj; 13 | } 14 | var o = isArray(obj) ? [] : {}; 15 | for(let i in obj) { 16 | if(obj.hasOwnProperty(i)){ 17 | o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i]; 18 | } 19 | } 20 | return o; 21 | } 22 | 23 | export default deepClone; 24 | -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/deepMerge.js: -------------------------------------------------------------------------------- 1 | import deepClone from "./deepClone"; 2 | 3 | // JS对象深度合并 4 | function deepMerge(target = {}, source = {}) { 5 | target = deepClone(target); 6 | if (typeof target !== 'object' || typeof source !== 'object') return false; 7 | for (var prop in source) { 8 | if (!source.hasOwnProperty(prop)) continue; 9 | if (prop in target) { 10 | if (typeof target[prop] !== 'object') { 11 | target[prop] = source[prop]; 12 | } else { 13 | if (typeof source[prop] !== 'object') { 14 | target[prop] = source[prop]; 15 | } else { 16 | if (target[prop].concat && source[prop].concat) { 17 | target[prop] = target[prop].concat(source[prop]); 18 | } else { 19 | target[prop] = deepMerge(target[prop], source[prop]); 20 | } 21 | } 22 | } 23 | } else { 24 | target[prop] = source[prop]; 25 | } 26 | } 27 | return target; 28 | } 29 | 30 | export default deepMerge; -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/permission.js: -------------------------------------------------------------------------------- 1 | export default function(Vue){ 2 | // #ifndef VUE3 3 | Vue.prototype.$hasPermission = function hasPermission(name) { 4 | const permission = this.$store.state.$user.permission || [] 5 | return permission.indexOf(name) > -1 6 | } 7 | Vue.prototype.$hasRole = function hasRole(name) { 8 | const role = this.$store.state.$user.userInfo.role || [] 9 | return role.indexOf(name) > -1 10 | } 11 | // #endif 12 | 13 | // #ifdef VUE3 14 | Vue.config.globalProperties.$hasPermission = function hasPermission(name) { 15 | const permission = this.$store.state.$user.permission || [] 16 | return permission.indexOf(name) > -1 17 | } 18 | Vue.config.globalProperties.$hasRole = function hasRole(name) { 19 | const role = this.$store.state.$user.userInfo.role || [] 20 | return role.indexOf(name) > -1 21 | } 22 | // #endif 23 | } -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/setClipboardData.js: -------------------------------------------------------------------------------- 1 | 2 | // #ifdef H5 3 | uni.setClipboardData = function setClipboardData({ 4 | data, 5 | success, 6 | fail, 7 | complete 8 | } = {}) { 9 | try { 10 | const x = window.scrollX 11 | const y = window.scrollY 12 | const input = document.createElement('input') 13 | input.setAttribute('readonly', 'readonly') 14 | input.setAttribute('value', data) 15 | input.style.position = 'absolute' 16 | input.style.width = '100px' 17 | input.style.left = '-10000px' 18 | document.body.appendChild(input) 19 | input.focus() 20 | window.scrollTo(x, y) 21 | input.setSelectionRange(0, input.value.length) 22 | document.execCommand('copy') 23 | document.body.removeChild(input) 24 | setTimeout(() => { 25 | const res = { 26 | errMsg: 'setClipboardData:ok', 27 | data 28 | } 29 | success && success(res) 30 | complete && complete(res) 31 | }) 32 | } catch (e) { 33 | setTimeout(() => { 34 | const res = { 35 | errMsg: 'setClipboardData:fail' 36 | } 37 | fail && fail(res) 38 | complete && complete(res) 39 | }) 40 | } 41 | } 42 | // #endif 43 | 44 | // JS对象深度合并 45 | function setClipboardData(obj = {}) { 46 | uni.setClipboardData({ 47 | ...obj 48 | }); 49 | } 50 | 51 | export default setClipboardData; 52 | -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/throttle.js: -------------------------------------------------------------------------------- 1 | let timeoutArr = []; 2 | let flagArr = []; 3 | /** 4 | * 节流函数 5 | * 节流原理:在一定时间内,只能触发一次 6 | * @param {Function} fn 要执行的回调函数 7 | * @param {Number} time 延时的时间 8 | * @param {Boolean} isImmediate 是否立即执行 9 | * @param {String} timeoutName 定时器ID 10 | * @return null 11 | vk.pubfn.throttle(function() { 12 | 13 | }, 1000); 14 | */ 15 | function throttle(fn, time = 500, isImmediate = true, timeoutName = "default") { 16 | if(!timeoutArr[timeoutName]) timeoutArr[timeoutName] = null; 17 | if (isImmediate) { 18 | if (!flagArr[timeoutName]) { 19 | flagArr[timeoutName] = true; 20 | // 如果是立即执行,则在time毫秒内开始时执行 21 | if(typeof fn === 'function') fn(); 22 | timeoutArr[timeoutName] = setTimeout(() => { 23 | flagArr[timeoutName] = false; 24 | }, time); 25 | } 26 | } else { 27 | if (!flagArr[timeoutName]) { 28 | flagArr[timeoutName] = true; 29 | // 如果是非立即执行,则在time毫秒内的结束处执行 30 | timeoutArr[timeoutName] = setTimeout(() => { 31 | flagArr[timeoutName] = false; 32 | if(typeof fn === 'function') fn(); 33 | }, time); 34 | } 35 | } 36 | }; 37 | export default throttle -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/vk.h5.js: -------------------------------------------------------------------------------- 1 | // #ifdef H5 2 | /** 3 | * H5专用的一些函数,会涉及到window等H5专用的内置对象。 4 | */ 5 | var h5 = {}; 6 | 7 | // 引入 微信公众号 js_sdk 包 8 | import wx from './weixin-js-sdk' 9 | h5.wx = wx; 10 | 11 | /** 12 | * 获取当前H5所在的环境 13 | * let env = vk.h5.getEnv(); 14 | */ 15 | h5.getEnv = function() { 16 | let ua = window.navigator.userAgent.toLowerCase(); 17 | if (ua.match(/MicroMessenger/i) == 'micromessenger' && (ua.match(/miniprogram/i) == 'miniprogram')) { 18 | // 微信小程序 19 | return "mp-weixin"; 20 | } 21 | if (ua.match(/MicroMessenger/i) == 'micromessenger') { 22 | // 微信公众号 23 | return "h5-weixin"; 24 | } 25 | if (ua.match(/alipay/i) == 'alipay' && ua.match(/miniprogram/i) == 'miniprogram') { 26 | return "mp-alipay"; 27 | } 28 | if (ua.match(/alipay/i) == 'alipay') { 29 | return "h5-alipay"; 30 | } 31 | // 外部 H5 32 | return "h5"; 33 | }; 34 | 35 | export default h5; 36 | // #endif 37 | -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/function/vk.importObject.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 导出云对象实例 3 | * @param {String} name 云对象路径,如:client/pub 4 | * @example const pubObject = uni.vk.importObject('client/pub'); // 导入云对象 5 | * 注意,只能在声明 async 的函数内使用,如: 6 | async test(){ 7 | let res = await pubObject.getList({ 8 | title: "请求中", 9 | data: { 10 | a: 1, 11 | b: "2" 12 | } 13 | }); 14 | } 15 | */ 16 | var importObject = function(name) { 17 | const newObj = new Proxy(importObject, { 18 | get: function(target, key, receiver) { 19 | /** 20 | * 导出云对象内的某个方法 21 | * @param {Object} data 请求参数,如 { a:1, b:"2" } 云对象内可通过 let { a, b } = data; 获取参数 22 | * @param {String} title 遮罩层提示语,为空或不传则代表不显示遮罩层。 23 | * @param {Boolean} needAlert 为true代表请求错误时,会有弹窗提示。默认为true 24 | * @param {Object} loading 与title二选一,格式为 { name: "loading", that: that } name是变量名,that是数据源,当发起请求时,自动that[name] = true; 请求结束后,自动that[name] = false; 25 | */ 26 | return async function(options) { 27 | return uni.vk.callFunction({ 28 | ...options, 29 | url: `${name}.${key}` 30 | }); 31 | } 32 | }, 33 | // set: function(target, key, value, receiver) { 34 | // console.log("set"); 35 | // console.log("target",target); 36 | // console.log("key",key); 37 | // console.log("value",value); 38 | // console.log("receiver", receiver); 39 | // }, 40 | }); 41 | return newObj; 42 | }; 43 | 44 | export default importObject; 45 | -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/install/console.log.js: -------------------------------------------------------------------------------- 1 | let debug = process.env.NODE_ENV !== 'production'; 2 | const install = Vue => { 3 | let vk = Vue.prototype ? Vue.prototype.vk : Vue.config.globalProperties.vk; 4 | if (vk) { 5 | vk.log = console.log; 6 | if(!debug){ 7 | console.log = function(...obj){}; 8 | } 9 | } 10 | } 11 | 12 | export default { 13 | install 14 | } 15 | 16 | -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/mixin/mixin.js: -------------------------------------------------------------------------------- 1 | var isOnLaunch = true; 2 | export default { 3 | data() { 4 | return {} 5 | }, 6 | onLoad() { 7 | // 将vk实例挂载到app.globalData上,方便在非Vue页面自身函数中调用vk实例(因为获取不到this) 8 | let app = getApp({ allowDefault: true }); 9 | if (app && app.globalData && !app.globalData.vk) { 10 | app.globalData.vk = this.vk; 11 | } 12 | if (this.vk) { 13 | const url = this.vk.pubfn.getCurrentPageRoute(); 14 | // 检测是否可以分享(小程序专属) 15 | this.vk.navigate.checkAllowShare({ url }); 16 | // 检测是否需要登录,只有首次启动的页面才需要检测,其他页面通过 vk.navigateTo 跳转前会自动判断。 17 | if (isOnLaunch && !this.vk.checkToken() && getCurrentPages().length == 1) { 18 | isOnLaunch = false; // 重新标记为非首次页面 19 | const currentPage = this.vk.pubfn.getCurrentPage() || {}; 20 | this.vk.pubfn.checkLogin({ url: currentPage.fullPath || url, isOnLaunch: true }); // 检测是否需要登录 21 | } 22 | } 23 | }, 24 | created() { 25 | // 将vk实例挂载到app.globalData上,方便在非Vue页面自身函数中调用vk实例(因为获取不到this) 26 | let app = getApp({ allowDefault: true }); 27 | if (app && app.globalData && !app.globalData.vk) { 28 | app.globalData.vk = this.vk; 29 | } 30 | }, 31 | methods: { 32 | $getData(data, key, defaultValue) { 33 | let { vk } = this; 34 | return vk.pubfn.getData(data, key, defaultValue); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/openapi/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 开放API 3 | */ 4 | import baidu from './baidu' 5 | 6 | var openapi = {}; 7 | openapi.baidu = baidu; 8 | openapi.init = function(util){ 9 | openapi.baidu.init(util); 10 | } 11 | // 微信小程序API 12 | export default openapi; 13 | 14 | 15 | -------------------------------------------------------------------------------- /uni_modules/vk-unicloud/vk_modules/vk-unicloud-page/libs/store/libs/error.js: -------------------------------------------------------------------------------- 1 | 2 | const install = Vue => { 3 | const debug = process.env.NODE_ENV !== 'production'; 4 | let vk = Vue.prototype ? Vue.prototype.vk : Vue.config.globalProperties.vk; 5 | if (debug && vk) { 6 | const oldErrorHandler = Vue.config.errorHandler; 7 | Vue.config.errorHandler = function errorHandler(err, vm, info) { 8 | const route = vm.$page && vm.$page.route; 9 | let date = new Date(); 10 | let log = { 11 | err: err.toString(), 12 | info, 13 | route, 14 | time: date.getTime(), 15 | timeStr: date.toLocaleTimeString() 16 | }; 17 | if(vk.vuex) vk.vuex.dispatch('$error/add', log); 18 | return oldErrorHandler(err, vm, info); 19 | } 20 | } 21 | } 22 | 23 | export default { 24 | install 25 | } 26 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/components/u-full-screen/u-full-screen.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 38 | 39 | 53 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/components/u-gap/u-gap.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 51 | 52 | 55 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/components/u-loading-page/u-loading-page.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 22 | 23 | 26 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/components/u-time-line/u-time-line.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 23 | 24 | 44 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/components/u-tr/u-tr.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | 19 | 26 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/components/vk-uview-ui/vk-uview-ui.vue: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | 8 | 13 | 14 | 16 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/index.scss: -------------------------------------------------------------------------------- 1 | // 引入公共基础类 2 | @import "./libs/css/common.scss"; 3 | @import "./libs/css/color.scss"; 4 | 5 | // 非nvue的样式 6 | /* #ifndef APP-NVUE */ 7 | @import "./libs/css/style.vue.scss"; 8 | /* #endif */ 9 | 10 | // nvue的特有样式 11 | /* #ifdef APP-NVUE */ 12 | @import "./libs/css/style.nvue.scss"; 13 | /* #endif */ 14 | 15 | // 小程序特有的样式 16 | /* #ifdef MP */ 17 | @import "./libs/css/style.mp.scss"; 18 | /* #endif */ 19 | 20 | // H5特有的样式 21 | /* #ifdef H5 */ 22 | @import "./libs/css/style.h5.scss"; 23 | /* #endif */ -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/address/provinces.json: -------------------------------------------------------------------------------- 1 | [{"code":"110000","name":"北京市"},{"code":"120000","name":"天津市"},{"code":"130000","name":"河北省"},{"code":"140000","name":"山西省"},{"code":"150000","name":"内蒙古自治区"},{"code":"210000","name":"辽宁省"},{"code":"220000","name":"吉林省"},{"code":"230000","name":"黑龙江省"},{"code":"310000","name":"上海市"},{"code":"320000","name":"江苏省"},{"code":"330000","name":"浙江省"},{"code":"340000","name":"安徽省"},{"code":"350000","name":"福建省"},{"code":"360000","name":"江西省"},{"code":"370000","name":"山东省"},{"code":"410000","name":"河南省"},{"code":"420000","name":"湖北省"},{"code":"430000","name":"湖南省"},{"code":"440000","name":"广东省"},{"code":"450000","name":"广西壮族自治区"},{"code":"460000","name":"海南省"},{"code":"500000","name":"重庆市"},{"code":"510000","name":"四川省"},{"code":"520000","name":"贵州省"},{"code":"530000","name":"云南省"},{"code":"540000","name":"西藏自治区"},{"code":"610000","name":"陕西省"},{"code":"620000","name":"甘肃省"},{"code":"630000","name":"青海省"},{"code":"640000","name":"宁夏回族自治区"},{"code":"650000","name":"新疆维吾尔自治区"},{"code":"710000","name":"台湾省"},{"code":"810000","name":"香港特别行政区"},{"code":"820000","name":"澳门特别行政区"}] -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/config/config.js: -------------------------------------------------------------------------------- 1 | // 第一版 1.10.1 版本发布于2021-11-18 2 | let version = '1.10.1'; 3 | 4 | export default { 5 | v: version, 6 | version: version, 7 | // 主题名称 8 | type: [ 9 | 'primary', 10 | 'success', 11 | 'info', 12 | 'error', 13 | 'warning' 14 | ] 15 | } -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/config/zIndex.js: -------------------------------------------------------------------------------- 1 | // uniapp在H5中各API的z-index值如下: 2 | /** 3 | * actionsheet: 999 4 | * modal: 999 5 | * navigate: 998 6 | * tabbar: 998 7 | * toast: 999 8 | */ 9 | 10 | export default { 11 | toast: 10090, 12 | noNetwork: 10080, 13 | // popup包含popup,actionsheet,keyboard,picker的值 14 | popup: 10075, 15 | mask: 10070, 16 | navbar: 980, 17 | topTips: 975, 18 | sticky: 970, 19 | indexListSticky: 965, 20 | } -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/css/style.components.scss: -------------------------------------------------------------------------------- 1 | // 定义混入指令,用于在非nvue环境下的flex定义,因为nvue没有display属性,会报错 2 | @mixin vue-flex($direction: row) { 3 | /* #ifndef APP-NVUE */ 4 | display: flex; 5 | flex-direction: $direction; 6 | /* #endif */ 7 | } -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/css/style.h5.scss: -------------------------------------------------------------------------------- 1 | /* H5的时候,隐藏滚动条 */ 2 | ::-webkit-scrollbar { 3 | display: none; 4 | width: 0 !important; 5 | height: 0 !important; 6 | -webkit-appearance: none; 7 | background: transparent; 8 | } 9 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/css/style.mp.scss: -------------------------------------------------------------------------------- 1 | /* start--微信小程序编译后页面有组件名的元素,特别处理--start */ 2 | /* #ifdef MP-WEIXIN || MP-QQ */ 3 | u-td, u-th { 4 | flex: 1; 5 | align-self: stretch; 6 | } 7 | 8 | .u-td { 9 | height: 100%; 10 | } 11 | 12 | u-icon { 13 | display: inline-flex; 14 | align-items: center; 15 | } 16 | 17 | // 各家小程序宫格组件外层设置为100%,避免受到父元素display: flex;的影响 18 | u-grid { 19 | width: 100%; 20 | flex: 0 0 100%; 21 | } 22 | 23 | // 避免小程序线条组件因为父组件display: flex;而失效 24 | u-line { 25 | flex: 1; 26 | } 27 | 28 | u-switch { 29 | display: inline-flex; 30 | align-items: center; 31 | } 32 | 33 | u-dropdown { 34 | flex: 1; 35 | } 36 | /* #endif */ 37 | /* end-微信小程序编译后页面有组件名的元素,特别处理--end */ 38 | 39 | 40 | /* #ifdef MP-QQ || MP-TOUTIAO */ 41 | // 需要做这一切额外的兼容,都是因为TX的无能 42 | u-icon { 43 | line-height: 0; 44 | } 45 | /* #endif */ 46 | 47 | /* start--头条小程序编译后页面有组件名的元素,特别处理--start */ 48 | // 由于头条小程序不支持直接组件名形式写样式,目前只能在写组件的时候给组件加上对应的类名 49 | /* #ifdef MP-TOUTIAO */ 50 | .u-td, .u-th, .u-tr { 51 | flex: 1; 52 | align-self: stretch; 53 | } 54 | 55 | .u-row, .u-col { 56 | flex: 1; 57 | align-self: stretch; 58 | } 59 | 60 | // 避免小程序线条组件因为父组件display: flex;而失效 61 | .u-line { 62 | flex: 1; 63 | } 64 | 65 | .u-dropdown { 66 | flex: 1; 67 | } 68 | /* #endif */ 69 | /* end-头条小程序编译后页面有组件名的元素,特别处理--end */ 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/css/style.nvue.scss: -------------------------------------------------------------------------------- 1 | .nvue { 2 | font-size: 24rpx; 3 | } -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/$parent.js: -------------------------------------------------------------------------------- 1 | // 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法 2 | // this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx 3 | // 这里默认值等于undefined有它的含义,因为最顶层元素(组件)的$parent就是undefined,意味着不传name 4 | // 值(默认为undefined),就是查找最顶层的$parent 5 | export default function $parent(name = undefined) { 6 | let parent = this.$parent; 7 | // 通过while历遍,这里主要是为了H5需要多层解析的问题 8 | while (parent) { 9 | // 父组件 10 | if (parent.$options && parent.$options.name !== name) { 11 | // 如果组件的name不相等,继续上一级寻找 12 | parent = parent.$parent; 13 | } else { 14 | return parent; 15 | } 16 | } 17 | return false; 18 | } -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/addUnit.js: -------------------------------------------------------------------------------- 1 | import validation from './test.js'; 2 | 3 | // 添加单位,如果有rpx,%,px等单位结尾或者值为auto,直接返回,否则加上rpx单位结尾 4 | export default function addUnit(value = 'auto', unit = 'rpx') { 5 | value = String(value); 6 | // 用uView内置验证规则中的number判断是否为数值 7 | return validation.number(value) ? `${value}${unit}` : value; 8 | } -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/bem.js: -------------------------------------------------------------------------------- 1 | function bem(name, conf) { 2 | 3 | } 4 | export default { bem } 5 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/color.js: -------------------------------------------------------------------------------- 1 | // 为了让用户能够自定义主题,会逐步弃用此文件,各颜色通过css提供 2 | // 为了给某些特殊场景使用和向后兼容,无需删除此文件(2020-06-20) 3 | let color = { 4 | primary: "#2979ff", 5 | primaryDark: "#2b85e4", 6 | primaryDisabled: "#a0cfff", 7 | primaryLight: "#ecf5ff", 8 | bgColor: "#f3f4f6", 9 | 10 | info: "#909399", 11 | infoDark: "#82848a", 12 | infoDisabled: "#c8c9cc", 13 | infoLight: "#f4f4f5", 14 | 15 | warning: "#ff9900", 16 | warningDark: "#f29100", 17 | warningDisabled: "#fcbd71", 18 | warningLight: "#fdf6ec", 19 | 20 | error: "#fa3534", 21 | errorDark: "#dd6161", 22 | errorDisabled: "#fab6b6", 23 | errorLight: "#fef0f0", 24 | 25 | success: "#19be6b", 26 | successDark: "#18b566", 27 | successDisabled: "#71d5a1", 28 | successLight: "#dbf1e1", 29 | 30 | mainColor: "#303133", 31 | contentColor: "#606266", 32 | tipsColor: "#909399", 33 | lightColor: "#c0c4cc", 34 | borderColor: "#e4e7ed" 35 | } 36 | 37 | export default color; -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/debounce.js: -------------------------------------------------------------------------------- 1 | let timeout = null; 2 | 3 | /** 4 | * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数 5 | * 6 | * @param {Function} func 要执行的回调函数 7 | * @param {Number} wait 延时的时间 8 | * @param {Boolean} immediate 是否立即执行 9 | * @return null 10 | */ 11 | function debounce(func, wait = 500, immediate = false) { 12 | // 清除定时器 13 | if (timeout !== null) clearTimeout(timeout); 14 | // 立即执行,此类情况一般用不到 15 | if (immediate) { 16 | var callNow = !timeout; 17 | timeout = setTimeout(function() { 18 | timeout = null; 19 | }, wait); 20 | if (callNow) typeof func === 'function' && func(); 21 | } else { 22 | // 设置定时器,当最后一次操作后,timeout不会再被清除,所以在延时wait毫秒后执行func回调方法 23 | timeout = setTimeout(function() { 24 | typeof func === 'function' && func(); 25 | }, wait); 26 | } 27 | } 28 | 29 | export default debounce 30 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/deepClone.js: -------------------------------------------------------------------------------- 1 | // 判断arr是否为一个数组,返回一个bool值 2 | function isArray (arr) { 3 | return Object.prototype.toString.call(arr) === '[object Array]'; 4 | } 5 | 6 | // 深度克隆 7 | function deepClone (obj) { 8 | // 对常见的“非”值,直接返回原来值 9 | if([null, undefined, NaN, false].includes(obj)) return obj; 10 | if(typeof obj !== "object" && typeof obj !== 'function') { 11 | //原始类型直接返回 12 | return obj; 13 | } 14 | var o = isArray(obj) ? [] : {}; 15 | for(let i in obj) { 16 | if(obj.hasOwnProperty(i)){ 17 | o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i]; 18 | } 19 | } 20 | return o; 21 | } 22 | 23 | export default deepClone; 24 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/deepMerge.js: -------------------------------------------------------------------------------- 1 | import deepClone from "./deepClone"; 2 | 3 | // JS对象深度合并 4 | function deepMerge(target = {}, source = {}) { 5 | target = deepClone(target); 6 | if (typeof target !== 'object' || typeof source !== 'object') return false; 7 | for (var prop in source) { 8 | if (!source.hasOwnProperty(prop)) continue; 9 | if (prop in target) { 10 | if (typeof target[prop] !== 'object') { 11 | target[prop] = source[prop]; 12 | } else { 13 | if (typeof source[prop] !== 'object') { 14 | target[prop] = source[prop]; 15 | } else { 16 | if (target[prop].concat && source[prop].concat) { 17 | target[prop] = target[prop].concat(source[prop]); 18 | } else { 19 | target[prop] = deepMerge(target[prop], source[prop]); 20 | } 21 | } 22 | } 23 | } else { 24 | target[prop] = source[prop]; 25 | } 26 | } 27 | return target; 28 | } 29 | 30 | export default deepMerge; -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/getParent.js: -------------------------------------------------------------------------------- 1 | // 获取父组件的参数,因为支付宝小程序不支持provide/inject的写法 2 | // this.$parent在非H5中,可以准确获取到父组件,但是在H5中,需要多次this.$parent.$parent.xxx 3 | export default function getParent(name, keys) { 4 | let parent = this.$parent; 5 | // 通过while历遍,这里主要是为了H5需要多层解析的问题 6 | while (parent) { 7 | // 父组件 8 | if (parent.$options.name !== name) { 9 | // 如果组件的name不相等,继续上一级寻找 10 | parent = parent.$parent; 11 | } else { 12 | let data = {}; 13 | // 判断keys是否数组,如果传过来的是一个数组,那么直接使用数组元素值当做键值去父组件寻找 14 | if(Array.isArray(keys)) { 15 | keys.map(val => { 16 | data[val] = parent[val] ? parent[val] : ''; 17 | }) 18 | } else { 19 | // 历遍传过来的对象参数 20 | for(let i in keys) { 21 | // 如果子组件有此值则用,无此值则用父组件的值 22 | // 判断是否空数组,如果是,则用父组件的值,否则用子组件的值 23 | if(Array.isArray(keys[i])) { 24 | if(keys[i].length) { 25 | data[i] = keys[i]; 26 | } else { 27 | data[i] = parent[i]; 28 | } 29 | } else if(keys[i].constructor === Object) { 30 | // 判断是否对象,如果是对象,且有属性,那么使用子组件的值,否则使用父组件的值 31 | if(Object.keys(keys[i]).length) { 32 | data[i] = keys[i]; 33 | } else { 34 | data[i] = parent[i]; 35 | } 36 | } else { 37 | // 只要子组件有传值,即使是false值,也是“传值”了,也需要覆盖父组件的同名参数 38 | data[i] = (keys[i] || keys[i] === false) ? keys[i] : parent[i]; 39 | } 40 | } 41 | } 42 | return data; 43 | } 44 | } 45 | 46 | return {}; 47 | } -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/guid.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 本算法来源于简书开源代码,详见:https://www.jianshu.com/p/fdbf293d0a85 3 | * 全局唯一标识符(uuid,Globally Unique Identifier),也称作 uuid(Universally Unique IDentifier) 4 | * 一般用于多个组件之间,给它一个唯一的标识符,或者v-for循环的时候,如果使用数组的index可能会导致更新列表出现问题 5 | * 最可能的情况是左滑删除item或者对某条信息流"不喜欢"并去掉它的时候,会导致组件内的数据可能出现错乱 6 | * v-for的时候,推荐使用后端返回的id而不是循环的index 7 | * @param {Number} len uuid的长度 8 | * @param {Boolean} firstU 将返回的首字母置为"u" 9 | * @param {Nubmer} radix 生成uuid的基数(意味着返回的字符串都是这个基数),2-二进制,8-八进制,10-十进制,16-十六进制 10 | */ 11 | function guid(len = 32, firstU = true, radix = null) { 12 | let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); 13 | let uuid = []; 14 | radix = radix || chars.length; 15 | 16 | if (len) { 17 | // 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位 18 | for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]; 19 | } else { 20 | let r; 21 | // rfc4122标准要求返回的uuid中,某些位为固定的字符 22 | uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; 23 | uuid[14] = '4'; 24 | 25 | for (let i = 0; i < 36; i++) { 26 | if (!uuid[i]) { 27 | r = 0 | Math.random() * 16; 28 | uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; 29 | } 30 | } 31 | } 32 | // 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class 33 | if (firstU) { 34 | uuid.shift(); 35 | return 'u' + uuid.join(''); 36 | } else { 37 | return uuid.join(''); 38 | } 39 | } 40 | 41 | export default guid; 42 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/random.js: -------------------------------------------------------------------------------- 1 | function random(min, max) { 2 | if (min >= 0 && max > 0 && max >= min) { 3 | let gab = max - min + 1; 4 | return Math.floor(Math.random() * gab + min); 5 | } else { 6 | return 0; 7 | } 8 | } 9 | 10 | export default random; 11 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/randomArray.js: -------------------------------------------------------------------------------- 1 | // 打乱数组 2 | function randomArray(array = []) { 3 | // 原理是sort排序,Math.random()产生0<= x < 1之间的数,会导致x-0.05大于或者小于0 4 | return array.sort(() => Math.random() - 0.5); 5 | } 6 | 7 | export default randomArray 8 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/sys.js: -------------------------------------------------------------------------------- 1 | export function os() { 2 | return uni.getSystemInfoSync().platform; 3 | }; 4 | 5 | export function sys() { 6 | return uni.getSystemInfoSync(); 7 | } 8 | 9 | 10 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/throttle.js: -------------------------------------------------------------------------------- 1 | let timeoutArr = []; 2 | let flagArr = []; 3 | /** 4 | * 节流函数 5 | * 节流原理:在一定时间内,只能触发一次 6 | * @param {Function} fn 要执行的回调函数 7 | * @param {Number} time 延时的时间 8 | * @param {Boolean} isImmediate 是否立即执行 9 | * @param {String} timeoutName 定时器ID 10 | * @return null 11 | */ 12 | function throttle(fn, time = 500, isImmediate = true, timeoutName = "default") { 13 | if(!timeoutArr[timeoutName]) timeoutArr[timeoutName] = null; 14 | if (isImmediate) { 15 | if (!flagArr[timeoutName]) { 16 | flagArr[timeoutName] = true; 17 | // 如果是立即执行,则在time毫秒内开始时执行 18 | if(typeof fn === 'function') fn(); 19 | timeoutArr[timeoutName] = setTimeout(() => { 20 | flagArr[timeoutName] = false; 21 | }, time); 22 | } 23 | } else { 24 | if (!flagArr[timeoutName]) { 25 | flagArr[timeoutName] = true; 26 | // 如果是非立即执行,则在time毫秒内的结束处执行 27 | timeoutArr[timeoutName] = setTimeout(() => { 28 | flagArr[timeoutName] = false; 29 | if(typeof fn === 'function') fn(); 30 | }, time); 31 | } 32 | } 33 | }; 34 | export default throttle -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/timeFrom.js: -------------------------------------------------------------------------------- 1 | import timeFormat from '../../libs/function/timeFormat.js'; 2 | 3 | /** 4 | * 时间戳转为多久之前 5 | * @param String timestamp 时间戳 6 | * @param String | Boolean format 如果为时间格式字符串,超出一定时间范围,返回固定的时间格式; 7 | * 如果为布尔值false,无论什么时间,都返回多久以前的格式 8 | */ 9 | function timeFrom(dateTime = null, format = 'yyyy-mm-dd') { 10 | // 如果为null,则格式化当前时间 11 | if (!dateTime) dateTime = Number(new Date()); 12 | // 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式 13 | if (dateTime.toString().length == 10) dateTime *= 1000; 14 | let timestamp = + new Date(Number(dateTime)); 15 | 16 | let timer = (Number(new Date()) - timestamp) / 1000; 17 | // 如果小于5分钟,则返回"刚刚",其他以此类推 18 | let tips = ''; 19 | switch (true) { 20 | case timer < 300: 21 | tips = '刚刚'; 22 | break; 23 | case timer >= 300 && timer < 3600: 24 | tips = parseInt(timer / 60) + '分钟前'; 25 | break; 26 | case timer >= 3600 && timer < 86400: 27 | tips = parseInt(timer / 3600) + '小时前'; 28 | break; 29 | case timer >= 86400 && timer < 2592000: 30 | tips = parseInt(timer / 86400) + '天前'; 31 | break; 32 | default: 33 | // 如果format为false,则无论什么时间戳,都显示xx之前 34 | if(format === false) { 35 | if(timer >= 2592000 && timer < 365 * 86400) { 36 | tips = parseInt(timer / (86400 * 30)) + '个月前'; 37 | } else { 38 | tips = parseInt(timer / (86400 * 365)) + '年前'; 39 | } 40 | } else { 41 | tips = timeFormat(timestamp, format); 42 | } 43 | } 44 | return tips; 45 | } 46 | 47 | export default timeFrom; 48 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/toast.js: -------------------------------------------------------------------------------- 1 | function toast(title, duration = 1500) { 2 | uni.showToast({ 3 | title: title, 4 | icon: 'none', 5 | duration: duration 6 | }) 7 | } 8 | 9 | export default toast 10 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/trim.js: -------------------------------------------------------------------------------- 1 | function trim(str, pos = 'both') { 2 | if (pos == 'both') { 3 | return str.replace(/^\s+|\s+$/g, ""); 4 | } else if (pos == "left") { 5 | return str.replace(/^\s*/, ''); 6 | } else if (pos == 'right') { 7 | return str.replace(/(\s*$)/g, ""); 8 | } else if (pos == 'all') { 9 | return str.replace(/\s+/g, ""); 10 | } else { 11 | return str; 12 | } 13 | } 14 | 15 | export default trim 16 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/function/type2icon.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 根据主题type值,获取对应的图标 3 | * @param String type 主题名称,primary|info|error|warning|success 4 | * @param String fill 是否使用fill填充实体的图标 5 | */ 6 | function type2icon(type = 'success', fill = false) { 7 | // 如果非预置值,默认为success 8 | if (['primary', 'info', 'error', 'warning', 'success'].indexOf(type) == -1) type = 'success'; 9 | let iconName = ''; 10 | // 目前(2019-12-12),info和primary使用同一个图标 11 | switch (type) { 12 | case 'primary': 13 | iconName = 'info-circle'; 14 | break; 15 | case 'info': 16 | iconName = 'info-circle'; 17 | break; 18 | case 'error': 19 | iconName = 'close-circle'; 20 | break; 21 | case 'warning': 22 | iconName = 'error-circle'; 23 | break; 24 | case 'success': 25 | iconName = 'checkmark-circle'; 26 | break; 27 | default: 28 | iconName = 'checkmark-circle'; 29 | } 30 | // 是否是实体类型,加上-fill,在icon组件库中,实体的类名是后面加-fill的 31 | if (fill) iconName += '-fill'; 32 | return iconName; 33 | } 34 | 35 | export default type2icon 36 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/mixin/mpShare.js: -------------------------------------------------------------------------------- 1 | export default { 2 | onLoad() { 3 | // 设置默认的转发参数 4 | this.$u.mpShare = { 5 | title: '', // 默认为小程序名称 6 | path: '', // 默认为当前页面路径 7 | imageUrl: '' // 默认为当前页面的截图 8 | } 9 | }, 10 | onShareAppMessage() { 11 | return this.$u.mpShare 12 | }, 13 | // #ifdef MP-WEIXIN 14 | onShareTimeline() { 15 | return this.$u.mpShare 16 | } 17 | // #endif 18 | } 19 | -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/libs/store/index.js: -------------------------------------------------------------------------------- 1 | // 暂时不用vuex模块方式实现,将该方法直接放入到/store/index.js中 2 | const module = { 3 | actions: { 4 | $uStore({rootState}, params) { 5 | let nameArr = params.name.split('.'); 6 | if(nameArr.length >= 2) { 7 | let obj = rootState[nameArr[0]]; 8 | for(let i = 1; i < nameArr.length - 1; i ++) { 9 | obj = obj[nameArr[i]]; 10 | } 11 | obj[nameArr[nameArr.length - 1]] = params.value; 12 | } else { 13 | rootState[params.name] = params.value; 14 | } 15 | } 16 | } 17 | } 18 | 19 | export default module -------------------------------------------------------------------------------- /uni_modules/vk-uview-ui/theme.scss: -------------------------------------------------------------------------------- 1 | // 此文件为uView的主题变量,这些变量目前只能通过uni.scss引入才有效,另外由于 2 | // uni.scss中引入的样式会同时混入到全局样式文件和单独每一个页面的样式中,造成微信程序包太大, 3 | // 故uni.scss只建议放scss变量名相关样式,其他的样式可以通过main.js或者App.vue引入 4 | 5 | $u-main-color: #303133; 6 | $u-content-color: #606266; 7 | $u-tips-color: #909399; 8 | $u-light-color: #c0c4cc; 9 | $u-border-color: #e4e7ed; 10 | $u-bg-color: #f3f4f6; 11 | 12 | $u-type-primary: #2979ff; 13 | $u-type-primary-light: #ecf5ff; 14 | $u-type-primary-disabled: #a0cfff; 15 | $u-type-primary-dark: #2b85e4; 16 | 17 | $u-type-warning: #ff9900; 18 | $u-type-warning-disabled: #fcbd71; 19 | $u-type-warning-dark: #f29100; 20 | $u-type-warning-light: #fdf6ec; 21 | 22 | $u-type-success: #19be6b; 23 | $u-type-success-disabled: #71d5a1; 24 | $u-type-success-dark: #18b566; 25 | $u-type-success-light: #dbf1e1; 26 | 27 | $u-type-error: #fa3534; 28 | $u-type-error-disabled: #fab6b6; 29 | $u-type-error-dark: #dd6161; 30 | $u-type-error-light: #fef0f0; 31 | 32 | $u-type-info: #909399; 33 | $u-type-info-disabled: #c8c9cc; 34 | $u-type-info-dark: #82848a; 35 | $u-type-info-light: #f4f4f5; 36 | 37 | $u-form-item-height: 70rpx; 38 | $u-form-item-border-color: #dcdfe6; 39 | -------------------------------------------------------------------------------- /untils/index.js: -------------------------------------------------------------------------------- 1 | // 计算 评论数 2 | export const calcCommentsCount = commentList => { 3 | let count = commentList.length 4 | commentList.forEach(item => { 5 | count += item.replies.length 6 | }) 7 | return count 8 | } --------------------------------------------------------------------------------