Init Repo

This commit is contained in:
root
2019-09-06 23:53:10 +08:00
commit f0ef89dfbb
7905 changed files with 914138 additions and 0 deletions
.DS_Store._.DS_Store.gitignore.htaccess.user.ini404.html
addons
admin.phpcash.lockdemo.php
extend
.htaccess
alipay
AlipayNotify.phpAlipaySubmit.phpCorefunction.phpMd5function.php
aop
AlipayMobilePublicMultiMediaClient.phpAlipayMobilePublicMultiMediaExecute.phpAopClient.phpAopEncrypt.phpEncryptParseItem.phpEncryptResponseData.phpSignData.php
request
AlipayAccountExrateAdviceAcceptRequest.phpAlipayAccountExrateAllclientrateQueryRequest.phpAlipayAccountExrateRatequeryRequest.phpAlipayAccountExrateTraderequestCreateRequest.phpAlipayAcquireCancelRequest.phpAlipayAcquireCloseRequest.phpAlipayAcquireCreateandpayRequest.phpAlipayAcquirePrecreateRequest.phpAlipayAcquireQueryRequest.phpAlipayAcquireRefundRequest.phpAlipayAppTokenGetRequest.phpAlipayAssetAccountBindRequest.phpAlipayAssetAccountGetRequest.phpAlipayAssetAccountUnbindRequest.phpAlipayAssetPointBalanceQueryRequest.phpAlipayAssetPointBudgetQueryRequest.phpAlipayAssetPointOrderCreateRequest.phpAlipayAssetPointOrderQueryRequest.phpAlipayBossCsChannelQueryRequest.phpAlipayBossProdArrangementOfflineQueryRequest.phpAlipayCommerceCityfacilitatorCityQueryRequest.phpAlipayCommerceCityfacilitatorDepositCancelRequest.phpAlipayCommerceCityfacilitatorDepositConfirmRequest.phpAlipayCommerceCityfacilitatorDepositQueryRequest.phpAlipayCommerceCityfacilitatorFunctionQueryRequest.phpAlipayCommerceCityfacilitatorScriptQueryRequest.phpAlipayCommerceCityfacilitatorStationQueryRequest.phpAlipayCommerceCityfacilitatorVoucherBatchqueryRequest.phpAlipayCommerceCityfacilitatorVoucherCancelRequest.phpAlipayCommerceCityfacilitatorVoucherConfirmRequest.phpAlipayCommerceCityfacilitatorVoucherGenerateRequest.phpAlipayCommerceCityfacilitatorVoucherQueryRequest.phpAlipayCommerceCityfacilitatorVoucherRefundRequest.phpAlipayCommerceCityfacilitatorVoucherUploadRequest.phpAlipayCommerceDataMonitordataSyncRequest.phpAlipayCommerceEducateStudentinfoShareRequest.phpAlipayCommerceLotteryPresentSendRequest.phpAlipayCommerceLotteryPresentlistQueryRequest.phpAlipayCommerceLotteryTypelistQueryRequest.phpAlipayCommerceMedicalInstcardBindRequest.phpAlipayCommerceTransportOfflinepayKeyQueryRequest.phpAlipayCommerceTransportOfflinepayRecordVerifyRequest.phpAlipayCommerceTransportOfflinepayUserblacklistQueryRequest.phpAlipayDaoweiOrderCancelRequest.phpAlipayDaoweiOrderConfirmRequest.phpAlipayDaoweiOrderModifyRequest.phpAlipayDaoweiOrderQueryRequest.phpAlipayDaoweiOrderRefundRequest.phpAlipayDaoweiOrderRefuseRequest.phpAlipayDaoweiOrderSpModifyRequest.phpAlipayDaoweiOrderTransferRequest.phpAlipayDaoweiServiceModifyRequest.phpAlipayDaoweiServicePriceModifyRequest.phpAlipayDaoweiSpModifyRequest.phpAlipayDaoweiSpScheduleModifyRequest.phpAlipayDataBillDownloadurlGetRequest.phpAlipayDataDataexchangeSfasdfRequest.phpAlipayDataDataserviceBillDownloadurlQueryRequest.phpAlipayDataDataserviceChinaremodelQueryRequest.phpAlipayDataDataserviceCodeRecoRequest.phpAlipayDataDataserviceSdfsdfRequest.phpAlipayDataDataserviceShoppingmallrecShopQueryRequest.phpAlipayDataDataserviceShoppingmallrecVoucherQueryRequest.phpAlipayDataDataserviceUserlevelZrankGetRequest.phpAlipayEbppBillAddRequest.phpAlipayEbppBillBatchPayurlGetRequest.phpAlipayEbppBillGetRequest.phpAlipayEbppBillPayRequest.phpAlipayEbppBillPayurlGetRequest.phpAlipayEbppBillSearchRequest.phpAlipayEbppInvoiceTitleListGetRequest.phpAlipayEbppMerchantConfigGetRequest.phpAlipayEbppPdeductBillPayStatusRequest.phpAlipayEbppPdeductPayRequest.phpAlipayEbppPdeductSignAddRequest.phpAlipayEbppPdeductSignCancelRequest.phpAlipayEbppPdeductSignQueryRequest.phpAlipayEbppPdeductSignValidateRequest.phpAlipayEcapiprodCreditGetRequest.phpAlipayEcapiprodDataPutRequest.phpAlipayEcapiprodDrawndnContractGetRequest.phpAlipayEcapiprodDrawndnDrawndnlistQueryRequest.phpAlipayEcapiprodDrawndnFeerecordQueryRequest.phpAlipayEcapiprodDrawndnLendingrecordQueryRequest.phpAlipayEcapiprodDrawndnPaymentscheduleGetRequest.phpAlipayEcapiprodDrawndnRepaymentrecordQueryRequest.phpAlipayEcardEduPublicBindRequest.phpAlipayEcoCplifeBasicserviceInitializeRequest.phpAlipayEcoCplifeBasicserviceModifyRequest.phpAlipayEcoCplifeBillBatchUploadRequest.phpAlipayEcoCplifeBillBatchqueryRequest.phpAlipayEcoCplifeBillDeleteRequest.phpAlipayEcoCplifeBillModifyRequest.phpAlipayEcoCplifeBillSyncRequest.phpAlipayEcoCplifeCommunityBatchqueryRequest.phpAlipayEcoCplifeCommunityCreateRequest.phpAlipayEcoCplifeCommunityDetailsQueryRequest.phpAlipayEcoCplifeCommunityModifyRequest.phpAlipayEcoCplifeNoticeDeleteRequest.phpAlipayEcoCplifeNoticePublishRequest.phpAlipayEcoCplifeRepairStatusUpdateRequest.phpAlipayEcoCplifeResidentinfoDeleteRequest.phpAlipayEcoCplifeResidentinfoUploadRequest.phpAlipayEcoCplifeRoominfoDeleteRequest.phpAlipayEcoCplifeRoominfoQueryRequest.phpAlipayEcoCplifeRoominfoUploadRequest.phpAlipayEcoCplifeRooominfoQueryRequest.phpAlipayEcoCplifeUseridentityStatusUpdateRequest.phpAlipayEcoEduKtBillingModifyRequest.phpAlipayEcoEduKtBillingQueryRequest.phpAlipayEcoEduKtBillingSendRequest.phpAlipayEcoEduKtSchoolinfoModifyRequest.phpAlipayEcoEduKtStudentModifyRequest.phpAlipayEcoEduKtStudentQueryRequest.phpAlipayEcoMycarCarlibInfoPushRequest.phpAlipayEcoMycarCarmodelModifyRequest.phpAlipayEcoMycarDataExternalQueryRequest.phpAlipayEcoMycarDataExternalSendRequest.phpAlipayEcoMycarDataserviceViolationinfoShareRequest.phpAlipayEcoMycarMaintainDataUpdateRequest.phpAlipayEcoMycarMaintainOrderCreateRequest.phpAlipayEcoMycarMaintainOrderstatusUpdateRequest.phpAlipayEcoMycarOrderStatusQueryRequest.phpAlipayEcoMycarParkingCardbarcodeCreateRequest.phpAlipayEcoMycarParkingConfigQueryRequest.phpAlipayEcoMycarParkingConfigSetRequest.phpAlipayEcoMycarParkingEnterinfoSyncRequest.phpAlipayEcoMycarParkingExitinfoSyncRequest.phpAlipayEcoMycarParkingLotbarcodeCreateRequest.phpAlipayEcoMycarParkingOrderSyncRequest.phpAlipayEcoMycarParkingOrderUpdateRequest.phpAlipayEcoMycarParkingOrderstatusQueryRequest.phpAlipayEcoMycarParkingParkinglotinfoCreateRequest.phpAlipayEcoMycarParkingParkinglotinfoUpdateRequest.phpAlipayEcoMycarParkingVehicleQueryRequest.phpAlipayEcoMycarPromoTicketPushRequest.phpAlipayEcoMycarPromoTicketSyncRequest.phpAlipayEcoMycarPromoVoucherVerifyRequest.phpAlipayEcoMycarTradeRefundRequest.phpAlipayEcoMycarViolationCityPushRequest.phpAlipayEcoMycarViolationInfoPushRequest.phpAlipayEcoWelfareCodeSyncRequest.phpAlipayExscUserCurrentsignGetRequest.phpAlipayExscUserFirstfundinpourGetRequest.phpAlipayExscUserFirstsignGetRequest.phpAlipayFlashsalesStockSyncUpdateRequest.phpAlipayFundAuthOperationCancelRequest.phpAlipayFundAuthOperationDetailQueryRequest.phpAlipayFundAuthOrderFreezeRequest.phpAlipayFundAuthOrderUnfreezeRequest.phpAlipayFundAuthOrderVoucherCreateRequest.phpAlipayFundCouponOperationQueryRequest.phpAlipayFundCouponOrderAgreementPayRequest.phpAlipayFundCouponOrderAppPayRequest.phpAlipayFundCouponOrderDisburseRequest.phpAlipayFundCouponOrderPagePayRequest.phpAlipayFundCouponOrderRefundRequest.phpAlipayFundTransOrderQueryRequest.phpAlipayFundTransToaccountTransferRequest.phpAlipayInsAutoCarSaveRequest.phpAlipayInsSceneApplicationIssueConfirmRequest.phpAlipayInsSceneCouponReceiveRequest.phpAlipayInsSceneCouponSendRequest.phpAlipayMarketingCampaignActivityOfflineCreateRequest.phpAlipayMarketingCampaignActivityOfflineTriggerRequest.phpAlipayMarketingCampaignCashCreateRequest.phpAlipayMarketingCampaignCashDetailQueryRequest.phpAlipayMarketingCampaignCashListQueryRequest.phpAlipayMarketingCampaignCashStatusModifyRequest.phpAlipayMarketingCampaignCashTriggerRequest.phpAlipayMarketingCampaignCertCreateRequest.phpAlipayMarketingCampaignDiscountBudgetAppendRequest.phpAlipayMarketingCampaignDiscountBudgetCreateRequest.phpAlipayMarketingCampaignDiscountBudgetQueryRequest.phpAlipayMarketingCampaignDiscountOperateRequest.phpAlipayMarketingCampaignDiscountQueryRequest.phpAlipayMarketingCampaignDiscountStatusUpdateRequest.phpAlipayMarketingCampaignDiscountWhitelistQueryRequest.phpAlipayMarketingCampaignDiscountWhitelistUpdateRequest.phpAlipayMarketingCampaignDrawcampCreateRequest.phpAlipayMarketingCampaignDrawcampQueryRequest.phpAlipayMarketingCampaignDrawcampStatusUpdateRequest.phpAlipayMarketingCampaignDrawcampTriggerRequest.phpAlipayMarketingCampaignDrawcampUpdateRequest.phpAlipayMarketingCampaignDrawcampWhitelistCreateRequest.phpAlipayMarketingCampaignPrizeAmountQueryRequest.phpAlipayMarketingCardActivateformQueryRequest.phpAlipayMarketingCardActivateurlApplyRequest.phpAlipayMarketingCardBenefitCreateRequest.phpAlipayMarketingCardBenefitDeleteRequest.phpAlipayMarketingCardBenefitModifyRequest.phpAlipayMarketingCardBenefitQueryRequest.phpAlipayMarketingCardConsumeSyncRequest.phpAlipayMarketingCardDeleteRequest.phpAlipayMarketingCardFormtemplateSetRequest.phpAlipayMarketingCardOpenRequest.phpAlipayMarketingCardQueryRequest.phpAlipayMarketingCardTemplateCreateRequest.phpAlipayMarketingCardTemplateModifyRequest.phpAlipayMarketingCardTemplateQueryRequest.phpAlipayMarketingCardUpdateRequest.phpAlipayMarketingCashlessvoucherTemplateCreateRequest.phpAlipayMarketingCashlessvoucherTemplateModifyRequest.phpAlipayMarketingCashvoucherTemplateCreateRequest.phpAlipayMarketingCashvoucherTemplateModifyRequest.phpAlipayMarketingCdpAdvertiseCreateRequest.phpAlipayMarketingCdpAdvertiseModifyRequest.phpAlipayMarketingCdpAdvertiseOperateRequest.phpAlipayMarketingCdpAdvertiseQueryRequest.phpAlipayMarketingCdpAdvertiseReportQueryRequest.phpAlipayMarketingCdpRecommendQueryRequest.phpAlipayMarketingExchangevoucherUseRequest.phpAlipayMarketingToolFengdieActivityCreateRequest.phpAlipayMarketingToolFengdieActivityQueryRequest.phpAlipayMarketingToolFengdieEditorQueryRequest.phpAlipayMarketingToolFengdieTemplateQueryRequest.phpAlipayMarketingUserulePidQueryRequest.phpAlipayMarketingVoucherAuthSendRequest.phpAlipayMarketingVoucherConfirmRequest.phpAlipayMarketingVoucherListQueryRequest.phpAlipayMarketingVoucherSendRequest.phpAlipayMarketingVoucherTemplateDeleteRequest.phpAlipayMarketingVoucherTemplatedetailQueryRequest.phpAlipayMarketingVoucherTemplatelistQueryRequest.phpAlipayMdataTagGetRequest.phpAlipayMemberCouponQuerylistRequest.phpAlipayMicropayOrderConfirmpayurlGetRequest.phpAlipayMicropayOrderDirectPayRequest.phpAlipayMicropayOrderFreezeRequest.phpAlipayMicropayOrderFreezepayurlGetRequest.phpAlipayMicropayOrderGetRequest.phpAlipayMicropayOrderUnfreezeRequest.phpAlipayMobileBeaconDeviceAddRequest.phpAlipayMobileBeaconDeviceDeleteRequest.phpAlipayMobileBeaconDeviceModifyRequest.phpAlipayMobileBeaconDeviceQueryRequest.phpAlipayMobileBeaconMessageSendRequest.phpAlipayMobileBksigntokenVerifyRequest.phpAlipayMobileCodeCreateRequest.phpAlipayMobileCodeQueryRequest.phpAlipayMobilePublicAccountAddRequest.phpAlipayMobilePublicAccountDeleteRequest.phpAlipayMobilePublicAccountQueryRequest.phpAlipayMobilePublicAccountResetRequest.phpAlipayMobilePublicAppinfoUpdateRequest.phpAlipayMobilePublicContactFollowListRequest.phpAlipayMobilePublicFollowListRequest.phpAlipayMobilePublicGisGetRequest.phpAlipayMobilePublicInfoModifyRequest.phpAlipayMobilePublicInfoQueryRequest.phpAlipayMobilePublicLabelAddRequest.phpAlipayMobilePublicLabelDeleteRequest.phpAlipayMobilePublicLabelQueryRequest.phpAlipayMobilePublicLabelUpdateRequest.phpAlipayMobilePublicLabelUserAddRequest.phpAlipayMobilePublicLabelUserDeleteRequest.phpAlipayMobilePublicLabelUserQueryRequest.phpAlipayMobilePublicMenuAddRequest.phpAlipayMobilePublicMenuDeleteRequest.phpAlipayMobilePublicMenuGetRequest.phpAlipayMobilePublicMenuQueryRequest.phpAlipayMobilePublicMenuUpdateRequest.phpAlipayMobilePublicMenuUserQueryRequest.phpAlipayMobilePublicMenuUserUpdateRequest.phpAlipayMobilePublicMessageCustomSendRequest.phpAlipayMobilePublicMessageLabelSendRequest.phpAlipayMobilePublicMessagePushRequest.phpAlipayMobilePublicMessageSingleSendRequest.phpAlipayMobilePublicMessageTotalSendRequest.phpAlipayMobilePublicMessagebatchPushRequest.phpAlipayMobilePublicMessagespecifyPushRequest.phpAlipayMobilePublicMockListsmlistApiRequest.phpAlipayMobilePublicQrcodeCreateRequest.phpAlipayMobilePublicShortlinkCreateRequest.phpAlipayMobilePublicStdMockListsmlistApiRequest.phpAlipayMobilePublicTemplateMessageDeleteRequest.phpAlipayMobilePublicTemplateMessageGetRequest.phpAlipayMobilePublicTemplateMessageModifyRequest.phpAlipayMobilePublicTemplateMessageQueryRequest.phpAlipayMobileRecommendGetRequest.phpAlipayMobileShakeUserQueryRequest.phpAlipayMobileStdPublicAccountQueryRequest.phpAlipayMobileStdPublicExpressUserQueryRequest.phpAlipayMobileStdPublicFollowListRequest.phpAlipayMobileStdPublicMenuQueryRequest.phpAlipayMobileStdPublicMessageCustomSendRequest.phpAlipayMpointprodBenefitDetailGetRequest.phpAlipayMsaasMediarecogVoiceMediaaudioUploadRequest.phpAlipayMsaasPromotionCpainfoCreateRequest.phpAlipayOfflineMarketApplyorderBatchqueryRequest.phpAlipayOfflineMarketItemCreateRequest.phpAlipayOfflineMarketItemModifyRequest.phpAlipayOfflineMarketItemStateRequest.phpAlipayOfflineMarketLeadsBatchqueryRequest.phpAlipayOfflineMarketLeadsQrcodeQueryRequest.phpAlipayOfflineMarketMcommentQueryRequest.phpAlipayOfflineMarketProductBatchqueryRequest.phpAlipayOfflineMarketProductQuerydetailRequest.phpAlipayOfflineMarketReportGetRequest.phpAlipayOfflineMarketReporterrorCreateRequest.phpAlipayOfflineMarketShopApplyorderCancelRequest.phpAlipayOfflineMarketShopBatchqueryRequest.phpAlipayOfflineMarketShopCategoryQueryRequest.phpAlipayOfflineMarketShopCreateRequest.phpAlipayOfflineMarketShopDiscountQueryRequest.phpAlipayOfflineMarketShopModifyRequest.phpAlipayOfflineMarketShopPublicBindRequest.phpAlipayOfflineMarketShopPublicUnbindRequest.phpAlipayOfflineMarketShopQuerydetailRequest.phpAlipayOfflineMarketShopSummaryBatchqueryRequest.phpAlipayOfflineMarketingVoucherCodeUploadRequest.phpAlipayOfflineMarketingVoucherCreateRequest.phpAlipayOfflineMarketingVoucherModifyRequest.phpAlipayOfflineMarketingVoucherOfflineRequest.phpAlipayOfflineMarketingVoucherStatusQueryRequest.phpAlipayOfflineMarketingVoucherUseRequest.phpAlipayOfflineMaterialImageDownloadRequest.phpAlipayOfflineMaterialImageModifyRequest.phpAlipayOfflineMaterialImageQueryRequest.phpAlipayOfflineMaterialImageUploadRequest.phpAlipayOfflineProviderDishQueryRequest.phpAlipayOfflineProviderEquipmentAuthQuerybypageRequest.phpAlipayOfflineProviderEquipmentAuthRemoveRequest.phpAlipayOfflineProviderMonitorLogSyncRequest.phpAlipayOfflineProviderShopactionRecordRequest.phpAlipayOfflineProviderStaffUpdateRequest.phpAlipayOfflineProviderUseractionRecordRequest.phpAlipayOpenAppCodetesttestRequest.phpAlipayOpenAppPackagetestRequest.phpAlipayOpenAppQrcodeCreateRequest.phpAlipayOpenAppXwbtestBatchqueryRequest.phpAlipayOpenAppXwbtestpreCreateRequest.phpAlipayOpenAppYufanlingsanyaowuYufalingsanyaowuQueryRequest.phpAlipayOpenAuthIndustryPlatformCreateTokenRequest.phpAlipayOpenAuthTokenAppQueryRequest.phpAlipayOpenAuthTokenAppRequest.phpAlipayOpenPublicAccountCreateRequest.phpAlipayOpenPublicAccountDeleteRequest.phpAlipayOpenPublicAccountQueryRequest.phpAlipayOpenPublicAccountResetRequest.phpAlipayOpenPublicContactFollowBatchqueryRequest.phpAlipayOpenPublicDefaultExtensionCreateRequest.phpAlipayOpenPublicFollowBatchqueryRequest.phpAlipayOpenPublicGisQueryRequest.phpAlipayOpenPublicGroupBatchqueryRequest.phpAlipayOpenPublicGroupCreateRequest.phpAlipayOpenPublicGroupCrowdQueryRequest.phpAlipayOpenPublicGroupDeleteRequest.phpAlipayOpenPublicGroupModifyRequest.phpAlipayOpenPublicInfoModifyRequest.phpAlipayOpenPublicInfoQueryRequest.phpAlipayOpenPublicLabelCreateRequest.phpAlipayOpenPublicLabelDeleteRequest.phpAlipayOpenPublicLabelModifyRequest.phpAlipayOpenPublicLabelQueryRequest.phpAlipayOpenPublicLabelUserCreateRequest.phpAlipayOpenPublicLabelUserDeleteRequest.phpAlipayOpenPublicLabelUserQueryRequest.phpAlipayOpenPublicLifeAboardApplyRequest.phpAlipayOpenPublicLifeAccountCreateRequest.phpAlipayOpenPublicLifeAgentCreateRequest.phpAlipayOpenPublicLifeAgentcreateQueryRequest.phpAlipayOpenPublicLifeCreateRequest.phpAlipayOpenPublicLifeDebarkApplyRequest.phpAlipayOpenPublicLifeLabelBatchqueryRequest.phpAlipayOpenPublicLifeLabelCreateRequest.phpAlipayOpenPublicLifeLabelDeleteRequest.phpAlipayOpenPublicLifeLabelModifyRequest.phpAlipayOpenPublicLifeModifyRequest.phpAlipayOpenPublicLifeMsgRecallRequest.phpAlipayOpenPublicLifeMsgSendRequest.phpAlipayOpenPublicMatchuserLabelCreateRequest.phpAlipayOpenPublicMatchuserLabelDeleteRequest.phpAlipayOpenPublicMenuBatchqueryRequest.phpAlipayOpenPublicMenuCreateRequest.phpAlipayOpenPublicMenuModifyRequest.phpAlipayOpenPublicMenuQueryRequest.phpAlipayOpenPublicMessageCustomSendRequest.phpAlipayOpenPublicMessageGroupSendRequest.phpAlipayOpenPublicMessageLabelSendRequest.phpAlipayOpenPublicMessageSingleSendRequest.phpAlipayOpenPublicMessageTotalSendRequest.phpAlipayOpenPublicMultimediaDownloadProxyRequest.phpAlipayOpenPublicPartnerMenuOperateRequest.phpAlipayOpenPublicPartnerMenuQueryRequest.phpAlipayOpenPublicPartnerSubscribeSyncRequest.phpAlipayOpenPublicPersonalizedExtensionBatchqueryRequest.phpAlipayOpenPublicPersonalizedExtensionCreateRequest.phpAlipayOpenPublicPersonalizedExtensionDeleteRequest.phpAlipayOpenPublicPersonalizedExtensionSetRequest.phpAlipayOpenPublicPersonalizedMenuCreateRequest.phpAlipayOpenPublicPersonalizedMenuDeleteRequest.phpAlipayOpenPublicQrcodeCreateRequest.phpAlipayOpenPublicShortlinkCreateRequest.phpAlipayOpenPublicTemplateMessageGetRequest.phpAlipayOpenPublicTemplateMessageIndustryModifyRequest.phpAlipayOpenPublicThirdCustomerServiceRequest.phpAlipayOpenServicemarketCommodityShopOfflineRequest.phpAlipayOpenServicemarketCommodityShopOnlineRequest.phpAlipayOpenServicemarketOrderAcceptRequest.phpAlipayOpenServicemarketOrderItemCancelRequest.phpAlipayOpenServicemarketOrderItemCompleteRequest.phpAlipayOpenServicemarketOrderItemConfirmRequest.phpAlipayOpenServicemarketOrderNotifyRequest.phpAlipayOpenServicemarketOrderQueryRequest.phpAlipayOpenServicemarketOrderRejectRequest.phpAlipayOpenWangyanTestDeleteRequest.phpAlipayOperatorMobileBindRequest.phpAlipayPassCodeAddRequest.phpAlipayPassCodeVerifyRequest.phpAlipayPassFileAddRequest.phpAlipayPassInstanceAddRequest.phpAlipayPassInstanceUpdateRequest.phpAlipayPassSyncAddRequest.phpAlipayPassSyncUpdateRequest.phpAlipayPassTemplateAddRequest.phpAlipayPassTemplateUpdateRequest.phpAlipayPassTplAddRequest.phpAlipayPassTplContentAddRequest.phpAlipayPassTplContentUpdateRequest.phpAlipayPassTplUpdateRequest.phpAlipayPassVerifyQueryRequest.phpAlipayPcreditHuabeiPromoQueryRequest.phpAlipayPcreditLoanApplyCreateRequest.phpAlipayPcreditLoanRefundCreateRequest.phpAlipayPlatformOpenidGetRequest.phpAlipayPlatformUseridGetRequest.phpAlipayPointBalanceGetRequest.phpAlipayPointBudgetGetRequest.phpAlipayPointOrderAddRequest.phpAlipayPointOrderGetRequest.phpAlipayPromorulecenterRuleAnalyzeRequest.phpAlipaySecurityInfoAnalysisRequest.phpAlipaySecurityProdAlipaySecurityProdTestRequest.phpAlipaySecurityProdAmlriskQueryRequest.phpAlipaySecurityProdFacerepoAddRequest.phpAlipaySecurityProdFacerepoSearchRequest.phpAlipaySecurityProdFingerprintApplyInitializeRequest.phpAlipaySecurityProdFingerprintApplyRequest.phpAlipaySecurityProdFingerprintDeleteRequest.phpAlipaySecurityProdFingerprintVerifyInitializeRequest.phpAlipaySecurityProdFingerprintVerifyRequest.phpAlipaySecurityProdSignatureFileUploadRequest.phpAlipaySecurityProdSignatureTaskApplyRequest.phpAlipaySecurityProdSignatureTaskCancelRequest.phpAlipaySecurityProdSignatureTaskQueryRequest.phpAlipaySecurityRiskDetectRequest.phpAlipaySecurityRiskHideDeviceidQueryRequest.phpAlipaySecurityRiskRainscoreQueryRequest.phpAlipaySystemOauthTokenRequest.phpAlipayTradeAppPayRequest.phpAlipayTradeCancelRequest.phpAlipayTradeCloseRequest.phpAlipayTradeCreateRequest.phpAlipayTradeCustomsDeclareRequest.phpAlipayTradeCustomsQueryRequest.phpAlipayTradeFastpayRefundQueryRequest.phpAlipayTradeOrderSettleRequest.phpAlipayTradePagePayRequest.phpAlipayTradePayRequest.phpAlipayTradePrecreateRequest.phpAlipayTradeQueryRequest.phpAlipayTradeRefundRequest.phpAlipayTradeVendorpayDevicedataUploadRequest.phpAlipayTradeWapPayRequest.phpAlipayTransferThirdpartyBillCreateRequest.phpAlipayTrustUserAuthSendRequest.phpAlipayTrustUserReportGetRequest.phpAlipayTrustUserRiskSummaryGetRequest.phpAlipayTrustUserRiskidentifyGetRequest.phpAlipayTrustUserScoreGetRequest.phpAlipayTrustUserStandardVerifyGetRequest.phpAlipayTrustUserTokenGetRequest.phpAlipayTrustUserZminfoPairGetRequest.phpAlipayUserAccountFreezeGetRequest.phpAlipayUserAccountGetRequest.phpAlipayUserAccountSearchRequest.phpAlipayUserAccountUseridBatchqueryRequest.phpAlipayUserContractGetRequest.phpAlipayUserFinanceinfoShareRequest.phpAlipayUserGetRequest.phpAlipayUserInfoAuthRequest.phpAlipayUserInfoShareRequest.phpAlipayUserTestRequest.phpAlipayUserTradeSearchRequest.phpAlipayUserUserinfoShareRequest.phpAlipayZdataassetsEasyserviceRequest.phpAlipayZdataassetsFcdatalabZdatamergetaskRequest.phpAlipayZdataassetsMetadataRequest.phpAlipayZdatafrontCommonQueryRequest.phpAlipayZdatafrontDatatransferedFileuploadRequest.phpAlipayZdatafrontDatatransferedSendRequest.phpAlipayZdataserviceUnidataQueryRequest.phpAlipayZmscoreZrankGetRequest.phpAntMerchantExpandContractFacetofaceQueryRequest.phpAntMerchantExpandContractFacetofaceSignRequest.phpAntMerchantExpandEnterpriseApplyRequest.phpAntMerchantExpandImageUploadRequest.phpAntMerchantExpandMapplyorderQueryRequest.phpAntMerchantExpandMerchantStorelistQueryRequest.phpAntMerchantExpandPersonalApplyRequest.phpKoubeiCateringTablecodeQueryRequest.phpKoubeiCateringTablelistQueryRequest.phpKoubeiContentCommentDataBatchqueryRequest.phpKoubeiContentCommentReplyCreateRequest.phpKoubeiCraftsmanDataProviderBatchqueryRequest.phpKoubeiCraftsmanDataProviderCreateRequest.phpKoubeiCraftsmanDataProviderModifyRequest.phpKoubeiCraftsmanDataWorkBatchqueryRequest.phpKoubeiCraftsmanDataWorkCreateRequest.phpKoubeiCraftsmanDataWorkDeleteRequest.phpKoubeiCraftsmanDataWorkModifyRequest.phpKoubeiItemBatchqueryRequest.phpKoubeiItemCategoryChildrenBatchqueryRequest.phpKoubeiItemCreateRequest.phpKoubeiItemExtitemBatchqueryRequest.phpKoubeiItemExtitemBrandQueryRequest.phpKoubeiItemExtitemCategoryQueryRequest.phpKoubeiItemExtitemCreateRequest.phpKoubeiItemExtitemExistedQueryRequest.phpKoubeiItemExtitemQueryRequest.phpKoubeiItemExtitemUpdateRequest.phpKoubeiItemModifyRequest.phpKoubeiItemStateRequest.phpKoubeiMarketingCampaignActivityBatchqueryRequest.phpKoubeiMarketingCampaignActivityCreateRequest.phpKoubeiMarketingCampaignActivityModifyRequest.phpKoubeiMarketingCampaignActivityOfflineRequest.phpKoubeiMarketingCampaignActivityQueryRequest.phpKoubeiMarketingCampaignAssetDetailQueryRequest.phpKoubeiMarketingCampaignCrowdBatchqueryRequest.phpKoubeiMarketingCampaignCrowdCountRequest.phpKoubeiMarketingCampaignCrowdCreateRequest.phpKoubeiMarketingCampaignCrowdDeleteRequest.phpKoubeiMarketingCampaignCrowdDetailQueryRequest.phpKoubeiMarketingCampaignCrowdModifyRequest.phpKoubeiMarketingCampaignDetailInfoQueryRequest.phpKoubeiMarketingCampaignRecruitApplyQueryRequest.phpKoubeiMarketingCampaignRecruitShopQueryRequest.phpKoubeiMarketingCampaignTagsQueryRequest.phpKoubeiMarketingCampaignUserAssetQueryRequest.phpKoubeiMarketingDataActivityBillDownloadRequest.phpKoubeiMarketingDataActivityReportQueryRequest.phpKoubeiMarketingDataAlisisReportBatchqueryRequest.phpKoubeiMarketingDataAlisisReportQueryRequest.phpKoubeiMarketingDataBizadviserMemberprofileQueryRequest.phpKoubeiMarketingDataBizadviserMyddsreportQueryRequest.phpKoubeiMarketingDataBizadviserMyreportQueryRequest.phpKoubeiMarketingDataCustomreportBatchqueryRequest.phpKoubeiMarketingDataCustomreportDeleteRequest.phpKoubeiMarketingDataCustomreportDetailQueryRequest.phpKoubeiMarketingDataCustomreportQueryRequest.phpKoubeiMarketingDataCustomreportSaveRequest.phpKoubeiMarketingDataDishdiagnoseBatchqueryRequest.phpKoubeiMarketingDataDishdiagnosetypeBatchqueryRequest.phpKoubeiMarketingDataEnterpriseStaffinfoUploadRequest.phpKoubeiMarketingDataIndicatorQueryRequest.phpKoubeiMarketingDataIsvShopQueryRequest.phpKoubeiMarketingDataMemberReportQueryRequest.phpKoubeiMarketingDataMessageDeliverRequest.phpKoubeiMarketingDataRetailDmQueryRequest.phpKoubeiMarketingDataSmartactivityConfigRequest.phpKoubeiMarketingDataSmartactivityForecastRequest.phpKoubeiMarketingDataSmartmanagementDiagnoseRequest.phpKoubeiMarketingDataTradeHabbitQueryRequest.phpKoubeiMarketingToolIsvMerchantQueryRequest.phpKoubeiMarketingToolPointsQueryRequest.phpKoubeiMarketingToolPointsUpdateRequest.phpKoubeiMarketingToolPrizesendAuthRequest.phpKoubeiMemberBrandownerNameQueryRequest.phpKoubeiMemberDataOauthQueryRequest.phpKoubeiMemberRetailerQueryRequest.phpKoubeiQualityTestCloudacptActivityQueryRequest.phpKoubeiQualityTestCloudacptBatchQueryRequest.phpKoubeiQualityTestCloudacptCheckresultSubmitRequest.phpKoubeiQualityTestCloudacptItemQueryRequest.phpKoubeiRetailShopitemBatchqueryRequest.phpKoubeiRetailShopitemModifyRequest.phpKoubeiRetailShopitemUploadRequest.phpKoubeiTradeItemBuyRequest.phpKoubeiTradeOrderConsultRequest.phpKoubeiTradeOrderQueryRequest.phpKoubeiTradeTicketTicketcodeQueryRequest.phpKoubeiTradeTicketTicketcodeUseRequest.phpMonitorHeartbeatSynRequest.phpMybankCreditLoanapplyDataUploadRequest.phpMybankFinanceYulibaoAccountQueryRequest.phpMybankFinanceYulibaoCapitalPurchaseRequest.phpMybankFinanceYulibaoCapitalRansomRequest.phpMybankFinanceYulibaoPriceQueryRequest.phpMybankFinanceYulibaoTransHistoryQueryRequest.phpSsdataDataserviceRiskAlixiaohaoQueryRequest.phpSsdataDataserviceRiskAntifraudVerifyRequest.phpSsdataDataserviceRiskAntifraudintegrationQueryRequest.phpSsdataDataserviceRiskAntifraudlistQueryRequest.phpSsdataDataserviceRiskAntifraudscoreQueryRequest.phpSsdataDataserviceRiskRainscoreQueryRequest.phpZhimaAuthInfoAuthqueryRequest.phpZhimaCreditAntifraudVerifyRequest.phpZhimaCreditScoreBriefGetRequest.phpZhimaCreditScoreGetRequest.phpZhimaCreditWatchlistBriefGetRequest.phpZhimaCreditWatchlistiiGetRequest.phpZhimaCustomerCertificationCertifyRequest.phpZhimaCustomerCertificationInitializeRequest.phpZhimaCustomerCertificationQueryRequest.phpZhimaDataBatchFeedbackRequest.phpZhimaDataFeedbackurlQueryRequest.phpZhimaMerchantBorrowEntityUploadRequest.phpZhimaMerchantCloseloopDataUploadRequest.phpZhimaMerchantDataUploadInitializeRequest.phpZhimaMerchantOrderRentCancelRequest.phpZhimaMerchantOrderRentCompleteRequest.phpZhimaMerchantOrderRentCreateRequest.phpZhimaMerchantOrderRentModifyRequest.phpZhimaMerchantOrderRentQueryRequest.phpZhimaMerchantSingleDataUploadRequest.phpZhimaMerchantTestPracticeRequest.phpZhimaOpenAppKeyanLqlCreateRequest.php
app_alipay
AopSdk.php
aop
AlipayMobilePublicMultiMediaClient.phpAlipayMobilePublicMultiMediaExecute.phpAopClient.phpAopEncrypt.phpEncryptParseItem.phpEncryptResponseData.phpSignData.php
request
AlipayAccountExrateAdviceAcceptRequest.phpAlipayAccountExrateAllclientrateQueryRequest.phpAlipayAccountExrateRatequeryRequest.phpAlipayAccountExrateTraderequestCreateRequest.phpAlipayAcquireCancelRequest.phpAlipayAcquireCloseRequest.phpAlipayAcquireCreateandpayRequest.phpAlipayAcquirePrecreateRequest.phpAlipayAcquireQueryRequest.phpAlipayAcquireRefundRequest.phpAlipayAppTokenGetRequest.phpAlipayAssetPointBalanceQueryRequest.phpAlipayAssetPointBudgetQueryRequest.phpAlipayAssetPointOrderCreateRequest.phpAlipayAssetPointOrderQueryRequest.phpAlipayBossCsChannelQueryRequest.phpAlipayBossFncXwbtestRetModifyRequest.phpAlipayBossProdArrangementOfflineQueryRequest.phpAlipayCommerceAirXfgDsgModifyRequest.phpAlipayCommerceCityfacilitatorCityQueryRequest.phpAlipayCommerceCityfacilitatorDepositCancelRequest.phpAlipayCommerceCityfacilitatorDepositConfirmRequest.phpAlipayCommerceCityfacilitatorDepositQueryRequest.phpAlipayCommerceCityfacilitatorFunctionQueryRequest.phpAlipayCommerceCityfacilitatorScriptQueryRequest.phpAlipayCommerceCityfacilitatorStationQueryRequest.phpAlipayCommerceCityfacilitatorVoucherBatchqueryRequest.phpAlipayCommerceCityfacilitatorVoucherCancelRequest.phpAlipayCommerceCityfacilitatorVoucherConfirmRequest.phpAlipayCommerceCityfacilitatorVoucherGenerateRequest.phpAlipayCommerceCityfacilitatorVoucherQueryRequest.phpAlipayCommerceCityfacilitatorVoucherRefundRequest.phpAlipayCommerceCityfacilitatorVoucherUploadRequest.phpAlipayCommerceDataMonitordataSyncRequest.phpAlipayCommerceEducateStudentinfoShareRequest.phpAlipayCommerceIotDeviceserviceCancelRequest.phpAlipayCommerceLotteryPresentSendRequest.phpAlipayCommerceLotteryPresentlistQueryRequest.phpAlipayCommerceLotteryTypelistQueryRequest.phpAlipayCommerceTransportOfflinepayKeyQueryRequest.phpAlipayCommerceTransportOfflinepayRecordVerifyRequest.phpAlipayCommerceTransportOfflinepayUserblacklistQueryRequest.phpAlipayDaoweiOrderCancelRequest.phpAlipayDaoweiOrderConfirmRequest.phpAlipayDaoweiOrderModifyRequest.phpAlipayDaoweiOrderQueryRequest.phpAlipayDaoweiOrderRefundRequest.phpAlipayDaoweiOrderRefuseRequest.phpAlipayDaoweiOrderSpModifyRequest.phpAlipayDaoweiOrderTransferRequest.phpAlipayDaoweiServiceModifyRequest.phpAlipayDaoweiServicePriceModifyRequest.phpAlipayDaoweiSpModifyRequest.phpAlipayDaoweiSpScheduleModifyRequest.phpAlipayDataBillDownloadurlGetRequest.phpAlipayDataDataexchangeSfasdfRequest.phpAlipayDataDataserviceBillDownloadurlQueryRequest.phpAlipayDataDataserviceChinaremodelQueryRequest.phpAlipayDataDataserviceCodeRecoRequest.phpAlipayDataDataserviceSdfsdfRequest.phpAlipayDataDataserviceShoppingmallrecShopQueryRequest.phpAlipayDataDataserviceShoppingmallrecVoucherQueryRequest.phpAlipayDataDataserviceUserlevelZrankGetRequest.phpAlipayEbppBillAddRequest.phpAlipayEbppBillGetRequest.phpAlipayEbppBillSearchRequest.phpAlipayEbppInvoiceInfoSendRequest.phpAlipayEbppInvoiceMerchantlistEnterApplyRequest.phpAlipayEbppInvoiceTitleListGetRequest.phpAlipayEbppMerchantConfigGetRequest.phpAlipayEbppPdeductBillPayStatusRequest.phpAlipayEbppPdeductPayRequest.phpAlipayEbppPdeductSignAddRequest.phpAlipayEbppPdeductSignCancelRequest.phpAlipayEbppPdeductSignQueryRequest.phpAlipayEbppPdeductSignValidateRequest.phpAlipayEcapiprodCreditGetRequest.phpAlipayEcapiprodDataPutRequest.phpAlipayEcapiprodDrawndnContractGetRequest.phpAlipayEcapiprodDrawndnDrawndnlistQueryRequest.phpAlipayEcapiprodDrawndnFeerecordQueryRequest.phpAlipayEcapiprodDrawndnLendingrecordQueryRequest.phpAlipayEcapiprodDrawndnPaymentscheduleGetRequest.phpAlipayEcapiprodDrawndnRepaymentrecordQueryRequest.phpAlipayEcardEduPublicBindRequest.phpAlipayEcoCplifeBasicserviceInitializeRequest.phpAlipayEcoCplifeBasicserviceModifyRequest.phpAlipayEcoCplifeBillBatchUploadRequest.phpAlipayEcoCplifeBillBatchqueryRequest.phpAlipayEcoCplifeBillDeleteRequest.phpAlipayEcoCplifeBillModifyRequest.phpAlipayEcoCplifeBillSyncRequest.phpAlipayEcoCplifeCommunityBatchqueryRequest.phpAlipayEcoCplifeCommunityCreateRequest.phpAlipayEcoCplifeCommunityDetailsQueryRequest.phpAlipayEcoCplifeCommunityModifyRequest.phpAlipayEcoCplifeNoticeDeleteRequest.phpAlipayEcoCplifeNoticePublishRequest.phpAlipayEcoCplifePayResultQueryRequest.phpAlipayEcoCplifeRepairStatusUpdateRequest.phpAlipayEcoCplifeResidentinfoDeleteRequest.phpAlipayEcoCplifeResidentinfoUploadRequest.phpAlipayEcoCplifeRoominfoDeleteRequest.phpAlipayEcoCplifeRoominfoQueryRequest.phpAlipayEcoCplifeRoominfoUploadRequest.phpAlipayEcoCplifeRooominfoQueryRequest.phpAlipayEcoCplifeUseridentityStatusUpdateRequest.phpAlipayEcoEduKtBillingModifyRequest.phpAlipayEcoEduKtBillingQueryRequest.phpAlipayEcoEduKtBillingSendRequest.phpAlipayEcoEduKtSchoolinfoModifyRequest.phpAlipayEcoEduKtStudentModifyRequest.phpAlipayEcoEduKtStudentQueryRequest.phpAlipayEcoMycarCarlibInfoPushRequest.phpAlipayEcoMycarCarmodelModifyRequest.phpAlipayEcoMycarDataExternalQueryRequest.phpAlipayEcoMycarDataExternalSendRequest.phpAlipayEcoMycarDataserviceViolationinfoShareRequest.phpAlipayEcoMycarMaintainDataUpdateRequest.phpAlipayEcoMycarMaintainOrderCreateRequest.phpAlipayEcoMycarMaintainOrderstatusUpdateRequest.phpAlipayEcoMycarOrderStatusQueryRequest.phpAlipayEcoMycarParkingCardbarcodeCreateRequest.phpAlipayEcoMycarParkingConfigQueryRequest.phpAlipayEcoMycarParkingConfigSetRequest.phpAlipayEcoMycarParkingEnterinfoSyncRequest.phpAlipayEcoMycarParkingExitinfoSyncRequest.phpAlipayEcoMycarParkingLotbarcodeCreateRequest.phpAlipayEcoMycarParkingOrderSyncRequest.phpAlipayEcoMycarParkingOrderUpdateRequest.phpAlipayEcoMycarParkingOrderstatusQueryRequest.phpAlipayEcoMycarParkingParkinglotinfoCreateRequest.phpAlipayEcoMycarParkingParkinglotinfoUpdateRequest.phpAlipayEcoMycarParkingVehicleQueryRequest.phpAlipayEcoMycarPromoTicketPushRequest.phpAlipayEcoMycarPromoTicketSyncRequest.phpAlipayEcoMycarPromoVoucherVerifyRequest.phpAlipayEcoMycarTradeRefundRequest.phpAlipayEcoMycarViolationCityPushRequest.phpAlipayEcoMycarViolationInfoPushRequest.phpAlipayEcoWelfareCodeSyncRequest.phpAlipayExscUserCurrentsignGetRequest.phpAlipayExscUserFirstfundinpourGetRequest.phpAlipayExscUserFirstsignGetRequest.phpAlipayFlashsalesStockSyncUpdateRequest.phpAlipayFundAuthOperationCancelRequest.phpAlipayFundAuthOperationDetailQueryRequest.phpAlipayFundAuthOrderFreezeRequest.phpAlipayFundAuthOrderUnfreezeRequest.phpAlipayFundAuthOrderVoucherCreateRequest.phpAlipayFundCouponOperationQueryRequest.phpAlipayFundCouponOrderAgreementPayRequest.phpAlipayFundCouponOrderAppPayRequest.phpAlipayFundCouponOrderDisburseRequest.phpAlipayFundCouponOrderPagePayRequest.phpAlipayFundCouponOrderRefundRequest.phpAlipayFundTransOrderQueryRequest.phpAlipayFundTransToaccountTransferRequest.phpAlipayInsAutoAutoinsprodCommonConsultRequest.phpAlipayInsAutoAutoinsprodEnquriyApplyRequest.phpAlipayInsAutoAutoinsprodPolicyApplyRequest.phpAlipayInsAutoAutoinsprodPolicyCancelRequest.phpAlipayInsAutoAutoinsprodQuoteApplyRequest.phpAlipayInsAutoAutoinsprodQuoteQueryRequest.phpAlipayInsAutoAutoinsprodUserCertifyRequest.phpAlipayInsAutoCarSaveRequest.phpAlipayInsCooperationProductOfflineBatchqueryRequest.phpAlipayInsCooperationProductQrcodeApplyRequest.phpAlipayInsCooperationRegionQrcodeApplyRequest.phpAlipayInsSceneApplicationIssueConfirmRequest.phpAlipayInsSceneCouponReceiveRequest.phpAlipayInsSceneCouponSendRequest.phpAlipayMarketingCampaignActivityOfflineCreateRequest.phpAlipayMarketingCampaignActivityOfflineTriggerRequest.phpAlipayMarketingCampaignCashCreateRequest.phpAlipayMarketingCampaignCashDetailQueryRequest.phpAlipayMarketingCampaignCashListQueryRequest.phpAlipayMarketingCampaignCashStatusModifyRequest.phpAlipayMarketingCampaignCashTriggerRequest.phpAlipayMarketingCampaignCertCreateRequest.phpAlipayMarketingCampaignDiscountBudgetAppendRequest.phpAlipayMarketingCampaignDiscountBudgetCreateRequest.phpAlipayMarketingCampaignDiscountBudgetQueryRequest.phpAlipayMarketingCampaignDiscountOperateRequest.phpAlipayMarketingCampaignDiscountQueryRequest.phpAlipayMarketingCampaignDiscountStatusUpdateRequest.phpAlipayMarketingCampaignDiscountWhitelistQueryRequest.phpAlipayMarketingCampaignDiscountWhitelistUpdateRequest.phpAlipayMarketingCampaignDrawcampCreateRequest.phpAlipayMarketingCampaignDrawcampQueryRequest.phpAlipayMarketingCampaignDrawcampStatusUpdateRequest.phpAlipayMarketingCampaignDrawcampUpdateRequest.phpAlipayMarketingCampaignDrawcampWhitelistCreateRequest.phpAlipayMarketingCampaignPrizeAmountQueryRequest.phpAlipayMarketingCardActivateformQueryRequest.phpAlipayMarketingCardActivateurlApplyRequest.phpAlipayMarketingCardBenefitCreateRequest.phpAlipayMarketingCardBenefitDeleteRequest.phpAlipayMarketingCardBenefitModifyRequest.phpAlipayMarketingCardBenefitQueryRequest.phpAlipayMarketingCardConsumeSyncRequest.phpAlipayMarketingCardDeleteRequest.phpAlipayMarketingCardFormtemplateSetRequest.phpAlipayMarketingCardOpenRequest.phpAlipayMarketingCardQueryRequest.phpAlipayMarketingCardTemplateCreateRequest.phpAlipayMarketingCardTemplateModifyRequest.phpAlipayMarketingCardTemplateQueryRequest.phpAlipayMarketingCardUpdateRequest.phpAlipayMarketingCashlessvoucherTemplateCreateRequest.phpAlipayMarketingCashlessvoucherTemplateModifyRequest.phpAlipayMarketingCashvoucherTemplateCreateRequest.phpAlipayMarketingCashvoucherTemplateModifyRequest.phpAlipayMarketingCdpAdvertiseCreateRequest.phpAlipayMarketingCdpAdvertiseModifyRequest.phpAlipayMarketingCdpAdvertiseOperateRequest.phpAlipayMarketingCdpAdvertiseQueryRequest.phpAlipayMarketingCdpAdvertiseReportQueryRequest.phpAlipayMarketingCdpRecommendQueryRequest.phpAlipayMarketingExchangevoucherUseRequest.phpAlipayMarketingToolFengdieActivityCreateRequest.phpAlipayMarketingToolFengdieActivityQueryRequest.phpAlipayMarketingToolFengdieEditorQueryRequest.phpAlipayMarketingToolFengdieMemberCreateRequest.phpAlipayMarketingToolFengdieSitesBatchqueryRequest.phpAlipayMarketingToolFengdieSitesConfirmRequest.phpAlipayMarketingToolFengdieSitesCreateRequest.phpAlipayMarketingToolFengdieSitesDeleteRequest.phpAlipayMarketingToolFengdieSitesQueryRequest.phpAlipayMarketingToolFengdieSitesSyncRequest.phpAlipayMarketingToolFengdieSpaceBatchqueryRequest.phpAlipayMarketingToolFengdieSpaceCreateRequest.phpAlipayMarketingToolFengdieSpaceQueryRequest.phpAlipayMarketingToolFengdieTemplateBatchqueryRequest.phpAlipayMarketingToolFengdieTemplateQueryRequest.phpAlipayMarketingToolFengdieTemplateSendRequest.phpAlipayMarketingUserulePidQueryRequest.phpAlipayMarketingVoucherAuthSendRequest.phpAlipayMarketingVoucherConfirmRequest.phpAlipayMarketingVoucherListQueryRequest.phpAlipayMarketingVoucherQueryRequest.phpAlipayMarketingVoucherSendRequest.phpAlipayMarketingVoucherStockUseRequest.phpAlipayMarketingVoucherTemplateDeleteRequest.phpAlipayMarketingVoucherTemplatedetailQueryRequest.phpAlipayMarketingVoucherTemplatelistQueryRequest.phpAlipayMdataTagGetRequest.phpAlipayMemberCouponQuerylistRequest.phpAlipayMicropayOrderConfirmpayurlGetRequest.phpAlipayMicropayOrderDirectPayRequest.phpAlipayMicropayOrderFreezeRequest.phpAlipayMicropayOrderFreezepayurlGetRequest.phpAlipayMicropayOrderGetRequest.phpAlipayMicropayOrderUnfreezeRequest.phpAlipayMobileBeaconDeviceAddRequest.phpAlipayMobileBeaconDeviceDeleteRequest.phpAlipayMobileBeaconDeviceModifyRequest.phpAlipayMobileBeaconDeviceQueryRequest.phpAlipayMobileBeaconMessageSendRequest.phpAlipayMobileBksigntokenVerifyRequest.phpAlipayMobileCodeCreateRequest.phpAlipayMobileCodeQueryRequest.phpAlipayMobilePublicAccountAddRequest.phpAlipayMobilePublicAccountDeleteRequest.phpAlipayMobilePublicAccountQueryRequest.phpAlipayMobilePublicAccountResetRequest.phpAlipayMobilePublicAppinfoUpdateRequest.phpAlipayMobilePublicContactFollowListRequest.phpAlipayMobilePublicFollowListRequest.phpAlipayMobilePublicGisGetRequest.phpAlipayMobilePublicInfoModifyRequest.phpAlipayMobilePublicInfoQueryRequest.phpAlipayMobilePublicLabelAddRequest.phpAlipayMobilePublicLabelDeleteRequest.phpAlipayMobilePublicLabelQueryRequest.phpAlipayMobilePublicLabelUpdateRequest.phpAlipayMobilePublicLabelUserAddRequest.phpAlipayMobilePublicLabelUserDeleteRequest.phpAlipayMobilePublicLabelUserQueryRequest.phpAlipayMobilePublicMenuAddRequest.phpAlipayMobilePublicMenuDeleteRequest.phpAlipayMobilePublicMenuGetRequest.phpAlipayMobilePublicMenuQueryRequest.phpAlipayMobilePublicMenuUpdateRequest.phpAlipayMobilePublicMenuUserQueryRequest.phpAlipayMobilePublicMenuUserUpdateRequest.phpAlipayMobilePublicMessageCustomSendRequest.phpAlipayMobilePublicMessageLabelSendRequest.phpAlipayMobilePublicMessagePushRequest.phpAlipayMobilePublicMessageSingleSendRequest.phpAlipayMobilePublicMessageTotalSendRequest.phpAlipayMobilePublicMessagebatchPushRequest.phpAlipayMobilePublicMessagespecifyPushRequest.phpAlipayMobilePublicQrcodeCreateRequest.phpAlipayMobilePublicShortlinkCreateRequest.phpAlipayMobilePublicTemplateMessageDeleteRequest.phpAlipayMobilePublicTemplateMessageGetRequest.phpAlipayMobilePublicTemplateMessageModifyRequest.phpAlipayMobilePublicTemplateMessageQueryRequest.phpAlipayMobileRecommendGetRequest.phpAlipayMobileShakeUserQueryRequest.phpAlipayMobileStdPublicAccountQueryRequest.phpAlipayMobileStdPublicExpressUserQueryRequest.phpAlipayMobileStdPublicFollowListRequest.phpAlipayMobileStdPublicMenuQueryRequest.phpAlipayMobileStdPublicMessageCustomSendRequest.phpAlipayMpointprodBenefitDetailGetRequest.phpAlipayMsaasMediarecogVoiceMediaaudioUploadRequest.phpAlipayMsaasPromotionCpainfoCreateRequest.phpAlipayOfflineMarketApplyorderBatchqueryRequest.phpAlipayOfflineMarketItemCreateRequest.phpAlipayOfflineMarketItemModifyRequest.phpAlipayOfflineMarketItemStateRequest.phpAlipayOfflineMarketMcommentQueryRequest.phpAlipayOfflineMarketProductBatchqueryRequest.phpAlipayOfflineMarketProductQuerydetailRequest.phpAlipayOfflineMarketReporterrorCreateRequest.phpAlipayOfflineMarketShopApplyorderCancelRequest.phpAlipayOfflineMarketShopBatchqueryRequest.phpAlipayOfflineMarketShopCategoryQueryRequest.phpAlipayOfflineMarketShopCreateRequest.phpAlipayOfflineMarketShopDiscountQueryRequest.phpAlipayOfflineMarketShopModifyRequest.phpAlipayOfflineMarketShopPublicBindRequest.phpAlipayOfflineMarketShopPublicUnbindRequest.phpAlipayOfflineMarketShopQuerydetailRequest.phpAlipayOfflineMarketShopSummaryBatchqueryRequest.phpAlipayOfflineMarketingVoucherCodeUploadRequest.phpAlipayOfflineMarketingVoucherCreateRequest.phpAlipayOfflineMarketingVoucherModifyRequest.phpAlipayOfflineMarketingVoucherOfflineRequest.phpAlipayOfflineMarketingVoucherStatusQueryRequest.phpAlipayOfflineMarketingVoucherUseRequest.phpAlipayOfflineMaterialImageDownloadRequest.phpAlipayOfflineMaterialImageUploadRequest.phpAlipayOfflineProviderDishQueryRequest.phpAlipayOfflineProviderEquipmentAuthQuerybypageRequest.phpAlipayOfflineProviderEquipmentAuthRemoveRequest.phpAlipayOfflineProviderMonitorLogSyncRequest.phpAlipayOfflineProviderShopactionRecordRequest.phpAlipayOfflineProviderUseractionRecordRequest.phpAlipayOpenAgentCancelRequest.phpAlipayOpenAgentConfirmRequest.phpAlipayOpenAgentCreateRequest.phpAlipayOpenAgentFacetofaceSignRequest.phpAlipayOpenAgentMiniCreateRequest.phpAlipayOpenAgentMobilepaySignRequest.phpAlipayOpenAgentOrderQueryRequest.phpAlipayOpenAgentZhimabriefSignRequest.phpAlipayOpenAppCodetesttestRequest.phpAlipayOpenAppLingjiuyisiCreateRequest.phpAlipayOpenAppLingjiuyiwuBatchqueryRequest.phpAlipayOpenAppMembersCreateRequest.phpAlipayOpenAppMembersDeleteRequest.phpAlipayOpenAppMembersQueryRequest.phpAlipayOpenAppMiniTemplatemessageSendRequest.phpAlipayOpenAppNotifyVerifyRequest.phpAlipayOpenAppQrcodeCreateRequest.phpAlipayOpenAppXwbtestabcQueryRequest.phpAlipayOpenAppYiyiyiwuQueryRequest.phpAlipayOpenAppYufanlingsanyaowuYufalingsanyaowuQueryRequest.phpAlipayOpenAuthIndustryPlatformCreateTokenRequest.phpAlipayOpenAuthTokenAppQueryRequest.phpAlipayOpenAuthTokenAppRequest.phpAlipayOpenMiniBaseinfoModifyRequest.phpAlipayOpenMiniBaseinfoQueryRequest.phpAlipayOpenMiniExperienceCancelRequest.phpAlipayOpenMiniExperienceCreateRequest.phpAlipayOpenMiniExperienceQueryRequest.phpAlipayOpenMiniSafedomainCreateRequest.phpAlipayOpenMiniSafedomainDeleteRequest.phpAlipayOpenMiniTemplateUsageQueryRequest.phpAlipayOpenMiniVersionAuditApplyRequest.phpAlipayOpenMiniVersionAuditedCancelRequest.phpAlipayOpenMiniVersionBuildQueryRequest.phpAlipayOpenMiniVersionDeleteRequest.phpAlipayOpenMiniVersionDetailQueryRequest.phpAlipayOpenMiniVersionGrayCancelRequest.phpAlipayOpenMiniVersionGrayOnlineRequest.phpAlipayOpenMiniVersionListQueryRequest.phpAlipayOpenMiniVersionOfflineRequest.phpAlipayOpenMiniVersionOnlineRequest.phpAlipayOpenMiniVersionRollbackRequest.phpAlipayOpenMiniVersionUploadRequest.phpAlipayOpenPublicAccountCreateRequest.phpAlipayOpenPublicAccountDeleteRequest.phpAlipayOpenPublicAccountQueryRequest.phpAlipayOpenPublicAccountResetRequest.phpAlipayOpenPublicAdvertBatchqueryRequest.phpAlipayOpenPublicAdvertCreateRequest.phpAlipayOpenPublicAdvertDeleteRequest.phpAlipayOpenPublicAdvertModifyRequest.phpAlipayOpenPublicArticlesummaryDataBatchqueryRequest.phpAlipayOpenPublicContactFollowBatchqueryRequest.phpAlipayOpenPublicDefaultExtensionCreateRequest.phpAlipayOpenPublicFollowBatchqueryRequest.phpAlipayOpenPublicGisQueryRequest.phpAlipayOpenPublicGroupBatchqueryRequest.phpAlipayOpenPublicGroupCreateRequest.phpAlipayOpenPublicGroupCrowdQueryRequest.phpAlipayOpenPublicGroupDeleteRequest.phpAlipayOpenPublicGroupModifyRequest.phpAlipayOpenPublicInfoModifyRequest.phpAlipayOpenPublicInfoQueryRequest.phpAlipayOpenPublicLabelCreateRequest.phpAlipayOpenPublicLabelDeleteRequest.phpAlipayOpenPublicLabelModifyRequest.phpAlipayOpenPublicLabelQueryRequest.phpAlipayOpenPublicLabelUserCreateRequest.phpAlipayOpenPublicLabelUserDeleteRequest.phpAlipayOpenPublicLabelUserQueryRequest.phpAlipayOpenPublicLifeAboardApplyRequest.phpAlipayOpenPublicLifeAccountCreateRequest.phpAlipayOpenPublicLifeAgentCreateRequest.phpAlipayOpenPublicLifeAgentcreateQueryRequest.phpAlipayOpenPublicLifeCreateRequest.phpAlipayOpenPublicLifeDebarkApplyRequest.phpAlipayOpenPublicLifeLabelBatchqueryRequest.phpAlipayOpenPublicLifeLabelCreateRequest.phpAlipayOpenPublicLifeLabelDeleteRequest.phpAlipayOpenPublicLifeLabelModifyRequest.phpAlipayOpenPublicLifeModifyRequest.phpAlipayOpenPublicLifeMsgRecallRequest.phpAlipayOpenPublicLifeMsgSendRequest.phpAlipayOpenPublicMatchuserLabelCreateRequest.phpAlipayOpenPublicMatchuserLabelDeleteRequest.phpAlipayOpenPublicMenuBatchqueryRequest.phpAlipayOpenPublicMenuCreateRequest.phpAlipayOpenPublicMenuDataBatchqueryRequest.phpAlipayOpenPublicMenuModifyRequest.phpAlipayOpenPublicMenuQueryRequest.phpAlipayOpenPublicMessageCustomSendRequest.phpAlipayOpenPublicMessageGroupSendRequest.phpAlipayOpenPublicMessageLabelSendRequest.phpAlipayOpenPublicMessageQueryRequest.phpAlipayOpenPublicMessageSingleSendRequest.phpAlipayOpenPublicMessageTotalSendRequest.phpAlipayOpenPublicMultimediaDownloadProxyRequest.phpAlipayOpenPublicPartnerMenuOperateRequest.phpAlipayOpenPublicPartnerMenuQueryRequest.phpAlipayOpenPublicPartnerSubscribeSyncRequest.phpAlipayOpenPublicPersonalizedExtensionBatchqueryRequest.phpAlipayOpenPublicPersonalizedExtensionCreateRequest.phpAlipayOpenPublicPersonalizedExtensionDeleteRequest.phpAlipayOpenPublicPersonalizedExtensionSetRequest.phpAlipayOpenPublicPersonalizedMenuCreateRequest.phpAlipayOpenPublicPersonalizedMenuDeleteRequest.phpAlipayOpenPublicQrcodeCreateRequest.phpAlipayOpenPublicSettingCategoryQueryRequest.phpAlipayOpenPublicShortlinkCreateRequest.phpAlipayOpenPublicSinglearticleDataBatchqueryRequest.phpAlipayOpenPublicTemplateMessageGetRequest.phpAlipayOpenPublicTemplateMessageIndustryModifyRequest.phpAlipayOpenPublicThirdCustomerServiceRequest.phpAlipayOpenPublicTopicBatchqueryRequest.phpAlipayOpenPublicTopicCreateRequest.phpAlipayOpenPublicTopicDeleteRequest.phpAlipayOpenPublicTopicModifyRequest.phpAlipayOpenPublicUserDataBatchqueryRequest.phpAlipayOpenPublicUserFollowQueryRequest.phpAlipayOpenPublicXwbtestabcdBatchqueryRequest.phpAlipayOpenServicemarketCommodityShopOfflineRequest.phpAlipayOpenServicemarketCommodityShopOnlineRequest.phpAlipayOpenServicemarketOrderAcceptRequest.phpAlipayOpenServicemarketOrderItemCancelRequest.phpAlipayOpenServicemarketOrderItemCompleteRequest.phpAlipayOpenServicemarketOrderItemConfirmRequest.phpAlipayOpenServicemarketOrderNotifyRequest.phpAlipayOpenServicemarketOrderQueryRequest.phpAlipayOpenServicemarketOrderRejectRequest.phpAlipayOperatorMobileBindRequest.phpAlipayPassCodeAddRequest.phpAlipayPassCodeVerifyRequest.phpAlipayPassFileAddRequest.phpAlipayPassInstanceAddRequest.phpAlipayPassInstanceUpdateRequest.phpAlipayPassSyncAddRequest.phpAlipayPassSyncUpdateRequest.phpAlipayPassTemplateAddRequest.phpAlipayPassTemplateUpdateRequest.phpAlipayPassTplAddRequest.phpAlipayPassTplContentAddRequest.phpAlipayPassTplContentUpdateRequest.phpAlipayPassTplUpdateRequest.phpAlipayPassVerifyQueryRequest.phpAlipayPcreditHuabeiPromoQueryRequest.phpAlipayPcreditLoanApplyCreateRequest.phpAlipayPcreditLoanRefundCreateRequest.phpAlipayPlatformOpenidGetRequest.phpAlipayPlatformUseridGetRequest.phpAlipayPointBalanceGetRequest.phpAlipayPointBudgetGetRequest.phpAlipayPointOrderAddRequest.phpAlipayPointOrderGetRequest.phpAlipayPromorulecenterRuleAnalyzeRequest.phpAlipaySecurityInfoAnalysisRequest.phpAlipaySecurityProdAlipaySecurityProdTestRequest.phpAlipaySecurityProdAmlriskQueryRequest.phpAlipaySecurityProdFacerepoAddRequest.phpAlipaySecurityProdFacerepoSearchRequest.phpAlipaySecurityProdFingerprintApplyInitializeRequest.phpAlipaySecurityProdFingerprintApplyRequest.phpAlipaySecurityProdFingerprintDeleteRequest.phpAlipaySecurityProdFingerprintRiskcontrolQueryRequest.phpAlipaySecurityProdFingerprintVerifyInitializeRequest.phpAlipaySecurityProdFingerprintVerifyRequest.phpAlipaySecurityProdSignatureFileUploadRequest.phpAlipaySecurityProdSignatureTaskApplyRequest.phpAlipaySecurityProdSignatureTaskCancelRequest.phpAlipaySecurityProdSignatureTaskQueryRequest.phpAlipaySecurityProdXwbtestabcAbcQueryRequest.phpAlipaySecurityRiskDetectRequest.phpAlipaySecurityRiskHideDeviceidQueryRequest.phpAlipaySecurityRiskRainscoreQueryRequest.phpAlipaySystemOauthTokenRequest.phpAlipayTradeAppPayRequest.phpAlipayTradeCancelRequest.phpAlipayTradeCloseRequest.phpAlipayTradeCreateRequest.phpAlipayTradeCustomsDeclareRequest.phpAlipayTradeCustomsQueryRequest.phpAlipayTradeFastpayRefundQueryRequest.phpAlipayTradeOrderSettleRequest.phpAlipayTradePagePayRequest.phpAlipayTradePayRequest.phpAlipayTradePrecreateRequest.phpAlipayTradeQueryRequest.phpAlipayTradeRefundRequest.phpAlipayTradeVendorpayDevicedataUploadRequest.phpAlipayTradeWapPayRequest.phpAlipayTransferThirdpartyBillCreateRequest.phpAlipayTrustUserAuthSendRequest.phpAlipayTrustUserReportGetRequest.phpAlipayTrustUserRiskidentifyGetRequest.phpAlipayTrustUserScoreGetRequest.phpAlipayTrustUserTokenGetRequest.phpAlipayUserAccountFreezeGetRequest.phpAlipayUserAccountGetRequest.phpAlipayUserAccountSearchRequest.phpAlipayUserAccountUseridBatchqueryRequest.phpAlipayUserAuthZhimaorgIdentityApplyRequest.phpAlipayUserContractGetRequest.phpAlipayUserFinanceinfoShareRequest.phpAlipayUserGetRequest.phpAlipayUserInfoAuthRequest.phpAlipayUserInfoShareRequest.phpAlipayUserTestRequest.phpAlipayUserTradeSearchRequest.phpAlipayUserUserinfoShareRequest.phpAlipayZdataassetsEasyserviceRequest.phpAlipayZdataassetsFcdatalabZdatamergetaskRequest.phpAlipayZdataassetsMetadataRequest.phpAlipayZdatafrontCommonQueryRequest.phpAlipayZdatafrontDatatransferedFileuploadRequest.phpAlipayZdatafrontDatatransferedSendRequest.phpAlipayZdataserviceUnidataQueryRequest.phpAlipayZmscoreZrankGetRequest.phpAntMerchantExpandContractFacetofaceQueryRequest.phpAntMerchantExpandContractFacetofaceSignRequest.phpAntMerchantExpandEnterpriseApplyRequest.phpAntMerchantExpandImageUploadRequest.phpAntMerchantExpandMapplyorderQueryRequest.phpAntMerchantExpandMerchantStorelistQueryRequest.phpAntMerchantExpandPersonalApplyRequest.phpKoubeiCateringTablecodeQueryRequest.phpKoubeiCateringTablelistQueryRequest.phpKoubeiCraftsmanDataProviderBatchqueryRequest.phpKoubeiCraftsmanDataProviderCreateRequest.phpKoubeiCraftsmanDataProviderModifyRequest.phpKoubeiCraftsmanDataWorkBatchqueryRequest.phpKoubeiCraftsmanDataWorkCreateRequest.phpKoubeiCraftsmanDataWorkDeleteRequest.phpKoubeiCraftsmanDataWorkModifyRequest.phpKoubeiItemBatchqueryRequest.phpKoubeiItemCategoryChildrenBatchqueryRequest.phpKoubeiItemCreateRequest.phpKoubeiItemExtitemBatchqueryRequest.phpKoubeiItemExtitemBrandQueryRequest.phpKoubeiItemExtitemCategoryQueryRequest.phpKoubeiItemExtitemCreateRequest.phpKoubeiItemExtitemExistedQueryRequest.phpKoubeiItemExtitemQueryRequest.phpKoubeiItemExtitemUpdateRequest.phpKoubeiItemModifyRequest.phpKoubeiItemStateRequest.phpKoubeiMarketingCampaignActivityBatchqueryRequest.phpKoubeiMarketingCampaignActivityCreateRequest.phpKoubeiMarketingCampaignActivityModifyRequest.phpKoubeiMarketingCampaignActivityOfflineRequest.phpKoubeiMarketingCampaignActivityQueryRequest.phpKoubeiMarketingCampaignAssetDetailQueryRequest.phpKoubeiMarketingCampaignCrowdBatchqueryRequest.phpKoubeiMarketingCampaignCrowdCountRequest.phpKoubeiMarketingCampaignCrowdCreateRequest.phpKoubeiMarketingCampaignCrowdDeleteRequest.phpKoubeiMarketingCampaignCrowdDetailQueryRequest.phpKoubeiMarketingCampaignCrowdModifyRequest.phpKoubeiMarketingCampaignDetailInfoQueryRequest.phpKoubeiMarketingCampaignIntelligentPromoBatchqueryRequest.phpKoubeiMarketingCampaignIntelligentPromoConsultRequest.phpKoubeiMarketingCampaignIntelligentPromoCreateRequest.phpKoubeiMarketingCampaignIntelligentPromoDeleteRequest.phpKoubeiMarketingCampaignIntelligentPromoModifyRequest.phpKoubeiMarketingCampaignIntelligentPromoQueryRequest.phpKoubeiMarketingCampaignIntelligentShopConsultRequest.phpKoubeiMarketingCampaignIntelligentTemplateConsultRequest.phpKoubeiMarketingCampaignRecruitApplyQueryRequest.phpKoubeiMarketingCampaignRecruitShopQueryRequest.phpKoubeiMarketingCampaignTagsQueryRequest.phpKoubeiMarketingCampaignUserAssetQueryRequest.phpKoubeiMarketingDataActivityBillDownloadRequest.phpKoubeiMarketingDataActivityReportQueryRequest.phpKoubeiMarketingDataAlisisReportBatchqueryRequest.phpKoubeiMarketingDataAlisisReportQueryRequest.phpKoubeiMarketingDataBizadviserMemberprofileQueryRequest.phpKoubeiMarketingDataBizadviserMyddsreportQueryRequest.phpKoubeiMarketingDataBizadviserMyreportQueryRequest.phpKoubeiMarketingDataCustomreportBatchqueryRequest.phpKoubeiMarketingDataCustomreportDeleteRequest.phpKoubeiMarketingDataCustomreportDetailQueryRequest.phpKoubeiMarketingDataCustomreportQueryRequest.phpKoubeiMarketingDataCustomreportSaveRequest.phpKoubeiMarketingDataDishdiagnoseBatchqueryRequest.phpKoubeiMarketingDataDishdiagnosetypeBatchqueryRequest.phpKoubeiMarketingDataEnterpriseStaffinfoUploadRequest.phpKoubeiMarketingDataIndicatorQueryRequest.phpKoubeiMarketingDataIntelligentEffectQueryRequest.phpKoubeiMarketingDataIntelligentIndicatorQueryRequest.phpKoubeiMarketingDataIsvShopQueryRequest.phpKoubeiMarketingDataMemberReportQueryRequest.phpKoubeiMarketingDataMessageDeliverRequest.phpKoubeiMarketingDataRetailDmQueryRequest.phpKoubeiMarketingDataSmartactivityConfigRequest.phpKoubeiMarketingDataSmartactivityForecastRequest.phpKoubeiMarketingDataSmartmanagementDiagnoseRequest.phpKoubeiMarketingDataTradeHabbitQueryRequest.phpKoubeiMarketingToolIsvMerchantQueryRequest.phpKoubeiMarketingToolPointsQueryRequest.phpKoubeiMarketingToolPointsUpdateRequest.phpKoubeiMarketingToolPrizesendAuthRequest.phpKoubeiMemberBrandownerNameQueryRequest.phpKoubeiMemberDataOauthQueryRequest.phpKoubeiMemberRetailerQueryRequest.phpKoubeiQualityTestCloudacptActivityQueryRequest.phpKoubeiQualityTestCloudacptBatchQueryRequest.phpKoubeiQualityTestCloudacptCheckresultSubmitRequest.phpKoubeiQualityTestCloudacptItemQueryRequest.phpKoubeiRetailShopitemBatchqueryRequest.phpKoubeiRetailShopitemModifyRequest.phpKoubeiRetailShopitemUploadRequest.phpKoubeiTradeItemBuyRequest.phpKoubeiTradeOrderConsultRequest.phpKoubeiTradeOrderQueryRequest.phpKoubeiTradeTicketTicketcodeQueryRequest.phpKoubeiTradeTicketTicketcodeUseRequest.phpMonitorHeartbeatSynRequest.phpMybankCreditLoanapplyDataUploadRequest.phpMybankFinanceYulibaoAccountQueryRequest.phpMybankFinanceYulibaoCapitalPurchaseRequest.phpMybankFinanceYulibaoCapitalRansomRequest.phpMybankFinanceYulibaoPriceQueryRequest.phpMybankFinanceYulibaoTransHistoryQueryRequest.phpSsdataDataserviceRiskAlixiaohaoQueryRequest.phpSsdataDataserviceRiskAntifraudVerifyRequest.phpSsdataDataserviceRiskAntifraudintegrationQueryRequest.phpSsdataDataserviceRiskAntifraudlistQueryRequest.phpSsdataDataserviceRiskAntifraudscoreQueryRequest.phpSsdataDataserviceRiskRainscoreQueryRequest.phpZhimaAuthInfoAuthqueryRequest.phpZhimaCreditAntifraudRiskListRequest.phpZhimaCreditAntifraudScoreGetRequest.phpZhimaCreditAntifraudVerifyRequest.phpZhimaCreditEpInfoGetRequest.phpZhimaCreditEpLawsuitDetailGetRequest.phpZhimaCreditEpLawsuitRecordGetRequest.phpZhimaCreditEpScoreGetRequest.phpZhimaCreditPeLawsuitDetailQueryRequest.phpZhimaCreditPeLawsuitRecordGetRequest.phpZhimaCreditScoreBriefGetRequest.phpZhimaCreditScoreGetRequest.phpZhimaCreditWatchlistBriefGetRequest.phpZhimaCreditWatchlistiiGetRequest.phpZhimaCustomerCertificationCertifyRequest.phpZhimaCustomerCertificationInitializeRequest.phpZhimaCustomerCertificationMaterialCertifyRequest.phpZhimaCustomerCertificationQueryRequest.phpZhimaCustomerContractInitializeRequest.phpZhimaCustomerEpCertificationCertifyRequest.phpZhimaCustomerEpCertificationInitializeRequest.phpZhimaCustomerEpCertificationQueryRequest.phpZhimaDataBatchFeedbackRequest.phpZhimaDataFeedbackurlQueryRequest.phpZhimaMerchantBorrowEntityUploadRequest.phpZhimaMerchantCloseloopDataUploadRequest.phpZhimaMerchantDataUploadInitializeRequest.phpZhimaMerchantOrderRentCancelRequest.phpZhimaMerchantOrderRentCompleteRequest.phpZhimaMerchantOrderRentCreateRequest.phpZhimaMerchantOrderRentModifyRequest.phpZhimaMerchantOrderRentQueryRequest.phpZhimaMerchantSingleDataUploadRequest.phpZhimaMerchantTestPracticeRequest.phpZhimaOpenAppKeyanLqlCreateRequest.php
test
demo.php
lotusphp_runtime
Autoloader
Cache
Captcha
Config.phpConfigExpression.php
Cookie
DB
Inflector
Logger
Lotus.php
MVC
ObjectUtil
Pagination
RBAC
Router
Session
Store.phpStoreFile.phpStoreMemory.php
Url
Validator
XML
shortcut.php
version.txt╦╡├ў.txt
image
org
phpexcel
PHPExcel.php
PHPExcel
Autoloader.php
CachedObjectStorage
CachedObjectStorageFactory.php
CalcEngine
Calculation.php
Calculation
Cell.php
Cell
Chart.php
Chart
Comment.phpDocumentProperties.phpDocumentSecurity.phpException.phpHashTable.phpIComparable.phpIOFactory.phpNamedRange.php
Reader
ReferenceHelper.phpRichText.php
RichText
Settings.php
Shared
Style.php
Style
Worksheet.php
Worksheet
WorksheetIterator.php
Writer
locale
phpmailer
unionpay
verify
wechat
wxpay
get_startup.phpget_version.phpget_version_new.php
hyhproject
.DS_Store._.DS_Store.htaccess
admin
.DS_Store._.DS_Store
behavior
common
conf
controller
model
validate
view
accreds
addons
adgoods
adpositions
ads
areas
articlecats
articles
attributes
banks
base.html
brands
carts
cashdraws
chargeitems
css
datas
ectday
ectdeal
ecttarget
enter_license.html
express
friendlinks
goods
goodsappraises
goodscats
goodsclassify
goodsconsult
homemenus
hooks
images
img
index.html
informs
js
bootstrap
common.js
images
index.jsjquery.min.jslicense.js
ligerui
js
skins
Aqua
css
images
common
controls
dateeditor
form
grid
icon
layout
menu
panel
tree
ui
win
icons
ligerui-icons.css
login.jsmain.js
mmgrid
wstgridtree.js
ztree
login.html
logmoneys
logoperates
logsms
logstafflogins
main.html
member
menus
messages
mobilebtns
navs
ordercomplains
orderrefunds
orders
payments
platform
recommends
reports
roles
settlements
shops
shops_back
speccats
staffs
styles
sysconfigs
templatemsgs
userranks
users
userscores
wsysconfigs
wxmenus
wxpassivereplys
wxtemplatemsgs
wxusers
app
command.php
common
home
behavior
common
conf
controller
model
validate
view
default
base.html
css
footer.htmlheader.htmlheader_lite.html
img
alipays.pngapply-ok.pngapply.pngarrow.pngbgimg_error_spcc.pngbgimg_error_xtcc.pngbgimg_error_ymcc.pngbtn_80x80.pngbtn_QQ.pngbtn_focus.pngbtn_pay.pngbtn_search_red.pngbtn_slide_left.pngbtn_slide_right.pngbtn_sqkd_back.pngbtn_wechat.pngclose_ads.gifcontrast.pngcoupon_bg.pngcoupon_item1.pngcoupon_item2.pngcoupon_item_bg.pngcut_bg.pngdetail_qr_icon.pngerror_1.pngexamine.pngf1_bg.pngf3_bg.pngf5_bg.pngf7_bg.pngflag-each-69x26.pngfooter_icon.pnggoods_detail_arrow_r.pnggoodsdetails_iconг▀jrdp.pnggoodsdetails_iconя╝┐jrdp.pnggoodspay_img.pnggroupon_bg.pngic_volume_24x24.pngicon-mjzxsy.pngicon_class_zydp.pngicon_dianpujie_01.pngicon_dianpujie_02.pngicon_dianpujie_03.pngicon_dianpujie_04.pngicon_dianpujie_09.pngicon_fenlei.pngicon_fenleitubiao.pngicon_goodsclass_list.pngicon_gouwuche.pngicon_hdfk.pngicon_jinggao.pngicon_left.pngicon_login.pngicon_login02.pngicon_mfps.pngicon_name.pngicon_name2.pngicon_no.pngicon_number.pngicon_passard.pngicon_passard2.pngicon_play.pngicon_qianbaoyue.pngicon_register.pngicon_right.pngicon_sidernemu.pngicon_success.pngicon_thwy.pngicon_time.pngicon_tstb.pngicon_wyz.pngicon_yanzhengma.pngicon_yanzhengma5.pngicon_zhengpin.pngicon_zixun.pngiconfont_fotter.pngiconfont_guanzhu_nor.pngiconfont_guanzhu_sel.pngimg_bg_dlzc.pngimg_bg_goodslist_tjrm.pngimg_bg_search.pngimg_bg_xiala.pngimg_bg_xpjssel.pngimg_cart_bg.pngimg_dztj_bg.pngimg_floor10_titlebg.pngimg_floor1_titlebg.pngimg_floor2_titlebg.pngimg_floor3_titlebg.pngimg_floor4_titlebg.pngimg_floor5_titlebg.pngimg_floor6_titlebg.pngimg_floor7_titlebg.pngimg_floor8_titlebg.pngimg_floor9_titlebg.pngimg_floor_titlebg.pngimg_gd_sel.pngimg_icon.pngimg_jrpp.pngimg_login01.pngimg_logintitle_bg.pngimg_majz_titlebg.pngimg_mrtx_yh.pngimg_openshop_bg.pngimg_regist.pngimg_register_main_bg.jpgimg_scdp.pngimg_seller_ggjt.pngimg_shop.pngimg_sjck.pngimg_top_list.pngimg_user.pngimg_userlogin_left.pngimg_yingyin.pngindex_distribute_bg.pngindex_distribute_price_bg.pngindex_link_bg.pngintegral_bg.pngintro-bg.pngloading.giflogo_10.pngmember_pics.pngnocite_deliver.pngnotice.pngorder_source_1.pngorder_source_2.pngorder_source_3.pngorder_source_4.pngorder_source_5.pngpay_caifutong.pngpay_liucheng.pngpay_wangyin.pngright_cart.pngscreenshot.pngsearch.pngself_shop_f1_bg.pngself_shop_f2_bg.pngself_shop_f3_bg.pngself_shop_f4_bg.pngself_shop_f5_bg.pngself_shop_f6_bg.pngself_shop_rec_bg.pngseller_icon_cz.pngseller_icon_error.pngseller_icon_pf_nor.pngseller_icon_pf_sel.pngseller_icon_right.pngseller_icon_sq.pngseller_icon_xz.pngseller_icon_zk.pngseller_img_bgnav.pngshop_item_bg.jpgshop_street_bg.pngshopstreet_bg.pngsprite@1x.pngstar.pngstore_icon_sq.pngstore_icon_sx.pngstore_icon_sx_sel.pngstore_icon_sx_sel_up.pngstore_icon_zk.pngtop_icon_cartdown.pngunionpays.pnguser_bg_nav.pnguser_btn_search.pnguser_icon_cart.pnguser_icon_hyp.pnguser_icon_info.pnguser_icon_num.pnguser_icon_rzxx.pnguser_icon_sider_zhankai.pnguser_icon_yyz.pngwallets.pngweixinpays.pngwst_qr_code.jpg┤Є╣│.png
index.html
js
right_cart.htmlself_shop.htmlself_shop_header.html
shops
top.html
home2
behavior
common
conf
controller
model
validate
view
default
articles
base.htmlbase_js.htmlbox_login.htmlbrands_list.htmlcarts.html
css
error_lost.htmlerror_msg.htmlerror_switch.htmlerror_sys.htmlfooter.htmlforget_pass.htmlforget_pass2.htmlforget_pass3.htmlforget_pass4.htmlgoods_contrast.htmlgoods_detail.htmlgoods_list.htmlgoods_search.htmlheader.htmlheader_lite.html
img
alipays.pngapply-ok.pngapply.pngarrow.pngbgimg_error_spcc.pngbgimg_error_xtcc.pngbgimg_error_ymcc.pngbtn_80x80.pngbtn_QQ.pngbtn_focus.pngbtn_pay.pngbtn_search_red.pngbtn_slide_left.pngbtn_slide_right.pngbtn_sqkd_back.pngbtn_wechat.pngclose_ads.gifcontrast.pngcoupon_bg.pngcoupon_item1.pngcoupon_item2.pngcoupon_item_bg.pngcut_bg.pngdetail_qr_icon.pngerror_1.pngexamine.pngf1_bg.pngf3_bg.pngf5_bg.pngf7_bg.pngflag-each-69x26.pngfooter_icon.pnggoods_detail_arrow_r.pnggoodsdetails_iconг▀jrdp.pnggoodsdetails_iconя╝┐jrdp.pnggoodsdetails_icon褟鈺濃攼jrdp.pnggoodsdetails_icon谐鈻€jrdp.pnggoodspay_img.pnggroupon_bg.pngic_volume_24x24.pngicon-mjzxsy.pngicon_class_zydp.pngicon_dianpujie_01.pngicon_dianpujie_02.pngicon_dianpujie_03.pngicon_dianpujie_04.pngicon_dianpujie_09.pngicon_fenlei.pngicon_fenleitubiao.pngicon_goodsclass_list.pngicon_gouwuche.pngicon_hdfk.pngicon_jinggao.pngicon_left.pngicon_login.pngicon_login02.pngicon_mfps.pngicon_name.pngicon_name2.pngicon_no.pngicon_number.pngicon_passard.pngicon_passard2.pngicon_play.pngicon_qianbaoyue.pngicon_register.pngicon_right.pngicon_sidernemu.pngicon_success.pngicon_thwy.pngicon_time.pngicon_tstb.pngicon_wyz.pngicon_yanzhengma.pngicon_yanzhengma5.pngicon_zhengpin.pngicon_zixun.pngiconfont_fotter.pngiconfont_guanzhu_nor.pngiconfont_guanzhu_sel.pngimg_bg_dlzc.pngimg_bg_goodslist_tjrm.pngimg_bg_search.pngimg_bg_xiala.pngimg_bg_xpjssel.pngimg_cart_bg.pngimg_dztj_bg.pngimg_floor10_titlebg.pngimg_floor1_titlebg.pngimg_floor2_titlebg.pngimg_floor3_titlebg.pngimg_floor4_titlebg.pngimg_floor5_titlebg.pngimg_floor6_titlebg.pngimg_floor7_titlebg.pngimg_floor8_titlebg.pngimg_floor9_titlebg.pngimg_floor_titlebg.pngimg_gd_sel.pngimg_icon.pngimg_jrpp.pngimg_login01.pngimg_logintitle_bg.pngimg_majz_titlebg.pngimg_mrtx_yh.pngimg_openshop_bg.pngimg_regist.pngimg_register_main_bg.jpgimg_scdp.pngimg_seller_ggjt.pngimg_shop.pngimg_sjck.pngimg_top_list.pngimg_user.pngimg_userlogin_left.pngimg_yingyin.pngindex_distribute_bg.pngindex_distribute_price_bg.pngindex_link_bg.pngintegral_bg.pngintro-bg.pngloading.giflogo_10.pngmember_pics.pngnocite_deliver.pngnotice.pngorder_source_1.pngorder_source_2.pngorder_source_3.pngorder_source_4.pngorder_source_5.pngpay_caifutong.pngpay_liucheng.pngpay_wangyin.pngright_cart.pngscreenshot.pngsearch.pngself_shop_f1_bg.pngself_shop_f2_bg.pngself_shop_f3_bg.pngself_shop_f4_bg.pngself_shop_f5_bg.pngself_shop_f6_bg.pngself_shop_rec_bg.pngseller_icon_cz.pngseller_icon_error.pngseller_icon_pf_nor.pngseller_icon_pf_sel.pngseller_icon_right.pngseller_icon_sq.pngseller_icon_xz.pngseller_icon_zk.pngseller_img_bgnav.pngshop_item_bg.jpgshop_street_bg.pngshopstreet_bg.pngsprite@1x.pngstar.pngstore_icon_sq.pngstore_icon_sx.pngstore_icon_sx_sel.pngstore_icon_sx_sel_up.pngstore_icon_zk.pngtop_icon_cartdown.pngunionpays.pnguser_bg_nav.pnguser_btn_search.pnguser_icon_cart.pnguser_icon_hyp.pnguser_icon_info.pnguser_icon_num.pnguser_icon_rzxx.pnguser_icon_sider_zhankai.pnguser_icon_yyz.pngwallets.pngweixinpays.pngwst_qr_code.jpg┤Є╣│.png鈹ば勨暎鈹_png
index.htmlinvoices.html
js
order_pay.htmlorder_pay_step1.htmlorder_pay_step2.htmlorder_pay_step3.htmlorder_pay_wallets.htmlorder_success.htmlregist.htmlright_cart.htmlself_shop.htmlself_shop_header.htmlsettlement.htmlsettlement2.htmlsettlement_quick.htmlshop_apply.htmlshop_home.htmlshop_join.htmlshop_join_step1.htmlshop_join_step2.htmlshop_join_step3.htmlshop_join_step35.htmlshop_join_step4.htmlshop_join_step5.htmlshop_join_success.htmlshop_login.htmlshop_street.html
shops
sql
top.htmluser_login.htmluser_protocol.html
users
mobile2
common
conf
controller
model
validate
view
default
articles
base.htmlbash.htmlbrands.htmlcarts.html
css
day_new.htmldemo.htmldialog.htmlerror_lost.htmlerror_switch.htmlerror_sys.htmlfooter.htmlforget_pass.htmlforget_pass2.htmlforget_pass3.html
frozenui
goods_category.htmlgoods_detail.htmlgoods_detail2.htmlgoods_list.htmlgoods_search.html
goodsconsult
header.html
img
1.jpg2.jpg232323.jpg3.jpg4.jpg5.jpg5656.jpg66666.jpg8585.jpgQA-icon.pngQQ20170814092939.jpgQQ20170914154124.pngac2_bg1.pngac2_footer.pngac2_sanjiao.pngac2_title_bg.pngac2_zdzb_bg.pngac2activity_bg.pngac3_bg1.pngac3_bg2.pngac3_bg3.pngac3_bg4.pngac3_bg5.pngac3_button.pngac3_button1.pngac3_header_bg.pngac3_title.pngac3_title1.pngac3_title2.pngac3_title3.pngac3_yhq.pngactivity2_head.pngaiguangjie.pngbaikuan.jpgbanner1.pngbanner2.pngbimaiqingdan.pngbk_bg1.pngbk_bg2.pngbk_bg3.pngbk_bg4.pngbktj.pngbrand.pngcainixihuan.pngcart.pngcbd.jpgchaoshihui.pngchaoshihui2.pngclassify.pngclassify2.pngcopy.pngcustom.pngdefault_shopbanner.jpgdefault_shopbanner.pngemail.pngevaluate.pngeye.pngfaxianhaohuo1.pngfeichangdapai.pngfeichangdapai1.jpgfollow-shop.pnggoods-list.pnggoods-list2.pnggua.jpgguangshangchang.pngguangshangchang1.pngguochan_con_bg.pngguochanjingxuan.pnghistory-icon.pnghome.pnghome2.pnghot.pnghot2.pnghuigou.pnghuiyuankuaibao.pnghuiyuanmiaosha.pnghuiyuanzhuanhui1.pngicon-integral.pngicon_add_money.pngicon_adds_users.pngicon_bottomnav.pngicon_bottomnav2.pngicon_bottomnav3.pngicon_bottomnav4.pngicon_bottomnavv.pngicon_cart.pngicon_cart_money.pngicon_cd.pngicon_down.pngicon_dp.pngicon_dpsp.pngicon_gz.pngicon_gzspcart.pngicon_indextop.pngicon_indextop1.pngicon_kf.pngicon_like1.pngicon_like2.pngicon_logmoney.pngicon_more.pngicon_news1.pngicon_out_money.pngicon_record.pngicon_right.pngicon_s.pngicon_select.pngicon_select1.pngicon_shop.pngicon_spxq.pngicon_tishi.pngicon_tixian.pngicon_user_about.pngicon_user_adds.pngicon_user_info.pngicon_user_safety.pngicon_userscores.pngicon_zhanghuanquan.pngicon_zhifu.pngimail.pngimail2.pngimg_dpbg.pngimg_dpjpj.pngimg_error_2.pngimg_error_3.pngimg_fenxiangtishi.pngimg_gd_sel.pngimg_jgsx.pngimg_titlebg.pngimg_users_icon.pngimg_wdye.pngindex-icon.pnginfo_icon.pngjia.pngjiagou.pngjian.pngjxyh.pngkafei.jpglanmei.jpgline-address.pngljqg.pngluhua.jpgme.pngme2.pngmessage-icon.pngmiaosha_bg.pngmine-icon.pngmuwu.jpgmy_bg.pngnaicha.jpgnocite_deliver.pngnothing-account.pngnothing-address.pngnothing-cart.pngnothing-complaint.pngnothing-evaluate.pngnothing-follow-goods.pngnothing-follow-shps.pngnothing-goods.pngnothing-history.pngnothing-message.pngnothing-order.pngnothing-relevant.pngnotice.pngorder.pngpaihangbang.pngpays-ali.pngpays-cod.pngpays-union.pngpays-wallets.pngpays-weixin.pngpinzhishishang.pngqianggou.pngqq.pngsaoyisao.pngscreenshot.pngself.pngshan.pngshangpin1.pngshangxin.pngshaung11jianianhua.pngshop.pngshop2.pngshopstreet.pngshuijiao.jpgsign-icon.pngsign-icon2.pngsousuo.pngtime_limit.pngtop.pnguser-order-icon.pnguser-tool-icon.pnguser-tool-icon2.pnguser-wallet-icon.pnguser.pnguser_grade.pnguser_line.pngusers_icon.pngusers_icon1.pngxianshitehui.pngxinpinshangshi.pngxinpinshoufa.pngxpbk.pngxrx.jpgyouhaohuo.pngyouhuiquan1.pngyouhuiquan2.pngyouzi.jpgyuantiao.jpgzan1.pngzan2.pngzdzb2_bg.pngzk_banner.png╬┤▒ъ╠т-14.png鈺敜鈻捬娾暊褌-14.png
index.htmlindex2.htmlindex3.htmlindex┤°╧▐╩▒├ы╔▒.htmlindex鈹ぢ扳暓鈻愨暕鈻掆敎褘鈺斺枓.html
js
juhui.htmllogin.htmlrebate.htmlreg.htmlregister.htmlself_shop.htmlsettlement.htmlsettlement_quick.htmlshop_goods_list.htmlshop_home.htmlshop_index.htmlshop_street.html
users
wechat2
behavior
common
conf
controller
model
validate
view
default
articles
base.htmlbrands.htmlcarts.html
css
dialog.htmlerror_lost.htmlerror_switch.htmlerror_sys.htmlfooter.html
frozenui
goods_category.htmlgoods_detail.htmlgoods_list.htmlgoods_search.html
goodsconsult
header.html
img
index.html
js
login.htmlself_shop.htmlsettlement.htmlsettlement_quick.htmlshop_goods_list.htmlshop_home.htmlshop_index.htmlshop_street.html
users
index.htmlindex.php
mobile
oss
reg.lockrobots.txt
runtime
static
app
css
img
1.png2.png3.8acbg.png3.png4.png5.pngac1yhqbg1.pngac1yhqbg2.pngac1yhqbg3.pngac1yhqbg4.pngac2_ac3_bg.pngac2_bg1.pngac2_footer.pngac2_sanjiao.pngac2_title_bg.pngac2_zdzb_bg.pngac2_zdzb_zzc.pngac2activity_bg.pngac2yhqbg.pngac3_bg.pngac3_bg1.pngac3_bg2.pngac3_bg3.pngac3_bg4.pngac3_bg5.pngac3_button.pngac3_button1.pngac3_header_bg.pngac3_title.pngac3_title1.pngac3_title2.pngac3_title3.pngac5_bg1.pngac5_title.pngactivity1_head.pngactivity2_head.pngaiguangjie.pngbimaiqingdan.pngbktj1.pngbktj2.pngbktj3.pngbktj4.pngbktj_bg.pngcainixihuan.pngchaoshihui.pngchaoshihui2.pngclassmenu.pngclose.pngcost1.pngcost2.pngcost3.pngdingwei1.pngeye.pngfaxianhaohuo1.pngfeichangdapai.pngfenlei.pnggouwuquan.pngguangshangchang.pngguangshangchang1.pngguochan_con_bg.pngguochanjingxuan.pnghaitunlogo.pngheart.pnghome.pnghome2.pnghot.pnghot2.pnghui.pnghuigou.pnghuiyuankuaibao.pnghuiyuankuangbao.pnghuiyuanmiaosha.pnghuiyuanzhuanhui1.pnghyhflfs.pnghyz_bg.pngicon_back.pngicon_clock.pngicon_down.pngicon_menu.pngicon_phone1.pngicon_pwd1.pngicon_right.pngicon_s.pngicon_select.pngicon_select1.pngicon_shop.pngicon_user1.pngimail.pngimail2.pngjia.pngjian.pngjifen.pngjingpintuijian.pngjxyh.pnglikelogo.pnglikelogo1.pnglikelogoon.pngljjg_bg.pngme.pngme2.pngmeirigengxin.pngmenu.pngmenu_dian.pngmiaoshabg.pngmy_bg.pngorder-icons.pngpaihangbang.pngphone1.pngpingpaijie.pngpinzhishishang.pngpjhx.pngpjhx1.pngpjimg.pngsanjiaoshang.pngsanjiaoxia.pngsaoyisao.pngsearch1.pngsetting_lock1.pngsetting_user1.pngshan.pngshan1.pngshangxin.pngshaung11jianianhua.pngshop.pngshop2.pngshoplogo.pngsousuo.pngstore_home.pngstore_home_on.pngstore_huodong.pngstore_huodong_on.pngstore_shangpin.pngstore_shangpin_on.pngstore_shangxin.pngstore_shangxin_on.pngstoretopbg.pngthq_bg.pngtime_limit.pngtuijianbaokuan1.pngxianshiqianggou.pngxianshitehui.pngxinpinshangshi1.pngxinpinshoufa.pngxpss_bg.pngyouhaohuo.pngyouhuiquan1.pngyouhuiquan2.pngyoujiantou.pngyuan.pngzan1.pngzan2.pngzdzb2_bg.png
js
app2
css
img
1.png10.1.png2.png3.8acbg.png3.png4.png5.pngac1yhqbg1.pngac1yhqbg2.pngac1yhqbg3.pngac1yhqbg4.pngac2_ac3_bg.pngac2_bg1.pngac2_footer.pngac2_sanjiao.pngac2_title_bg.pngac2_zdzb_bg.pngac2_zdzb_zzc.pngac2activity_bg.pngac2yhqbg.pngac3_bg.pngac3_bg1.pngac3_bg2.pngac3_bg3.pngac3_bg4.pngac3_bg5.pngac3_button.pngac3_button1.pngac3_header_bg.pngac3_title.pngac3_title1.pngac3_title2.pngac3_title3.pngac5_bg1.pngac5_title.pngactivity1_head.pngactivity2_head.pngaiguangjie.pngbimaiqingdan.pngbktj1.pngbktj2.pngbktj3.pngbktj4.pngbktj_bg.pngcainixihuan.pngchaoshihui.pngchaoshihui2.pngclassmenu.pngclose.pngcost1.pngcost2.pngcost3.pngcountdown.pngdingwei1.pnge1.pnge2.pnge3.pnge4.pnge5.pngect.pngect101-1.pngect101-2.pngect101-3.pngect101-4.pngect101-5.pngectb.pngeye.pngfaxianhaohuo1.pngfeichangdapai.pngfenlei.pnggouwuquan.pngguangshangchang.pngguangshangchang1.pngguochan_con_bg.pngguochanjingxuan.pnghaitunlogo.pngheart.pnghome.pnghome2.pnghot.pnghot2.pnghui.pnghuigou.pnghuiyuankuaibao.pnghuiyuankuangbao.pnghuiyuanmiaosha.pnghuiyuanzhuanhui1.pnghyhflfs.pnghyz_bg.pngicon_back.pngicon_cart.pngicon_clock.pngicon_down.pngicon_menu.pngicon_phone1.pngicon_pwd1.pngicon_right.pngicon_s.pngicon_select.pngicon_select1.pngicon_shop.pngicon_user1.pngimail.pngimail2.pngjia.pngjian.pngjifen.pngjingpintuijian.pngjxyh.pnglikelogo.pnglikelogo1.pnglikelogoon.pngljjg_bg.pngme.pngme2.pngmeirigengxin.pngmenu.pngmenu_dian.pngmiaoshabg.pngmy_bg.pngnav_0_0.pngnav_0_1.pngnav_1_0.pngnav_1_1.pngnav_3_0.pngnav_3_1.pngnav_4_0.pngnav_4_1.pngorder-icons.pngpaihangbang.pngphone1.pngpingpaijie.pngpinzhishishang.pngpjhx.pngpjhx1.pngpjimg.pngsanjiaoshang.pngsanjiaoxia.pngsaoyisao.pngsearch1.pngsetting_lock1.pngsetting_user1.pngshan.pngshan1.pngshangxin.pngshaung11jianianhua.pngshop.pngshop2.pngshoplogo.pngsousuo.pngstore_home.pngstore_home_on.pngstore_huodong.pngstore_huodong_on.pngstore_shangpin.pngstore_shangpin_on.pngstore_shangxin.pngstore_shangxin_on.pngstoretopbg.pngthq_bg.pngtime_limit.pngtuijianbaokuan1.pngxianshiqianggou.pngxianshitehui.pngxinpinshangshi1.pngxinpinshoufa.pngxpss_bg.pngyouhaohuo.pngyouhuiquan1.pngyouhuiquan2.pngyoujiantou.pngyuan.pngzan1.pngzan2.pngzdzb2_bg.png
js
1.jsac1111next.jsac1111next_.jsac2.jsac3.jsactivity1.jsactivity10.jsactivity1111.jsactivity2.jsactivity3.jsactivity4.jsactivity5.jsactivity6.jsactivity7.jsactivity8.jsactivity9.jsaddessay.jsaddgoods.1.jsaddgoods.2.jsaddgoods.jsaddhhrrz.jsaddmemorandum.jsaddproperties.jsaddqrbb.jsaddqrrz.jsaddshopping.jsaddyhk.jsapplicationopen.jsappraise.jsbill.jsbinaryajax.jscanvasResize.jscash-out.jschoiceness.jsclassify.jscollect.jscollect_commodity.jscollect_store.jscommercial.jscommon.jscommon_home.jscompare.jscomplain.jsconfirmOrder.jscooperative.jsdetails.jsdetails_ac.jsdiscount.jsdiscounts.jsdistribution.jsdynamic.jsect_address.jsect_area.jsect_index.jsect_list.jsect_pre_.jsect_recharge.jsect_recharge_list.jsect_transfer_accounts.html.jsect_transfer_accounts.jsect_withdraw.jsect_withdraw_deposit.jseditAddress.jsessay.jsessaylist.jsexif.jsfamily.jsfriends.jsfriendsList.jsgod_ect.jsgoodsList.jsguide.jshhrrz.jshome.jshome_new.jsincome-details.jsindent.jsindentcon.jsindex.jsindividual.jsinvest.jsinvestdetail.jsjournalism.jsjournalism_con.jsjquery-3.2.1.min.jsjquery-ui.min.jsjquery.cookie.jsjquery.qtip.min.jsjquery.validate.min.jsjuan_goods.jsjuan_index.jslogin.jslogistics.jslogisticscon.jslrz.bundle.jsmain_guide.jsmapcommon.jsmemorandumlist.jsmsg.jsmsg_con.jsmui.jsmui.min.jsmy.jsmyshop.jsmyshops.jsnew_product.jsnewuser.jsorder_con.jsorder_out.jsorsupermarket.jspaymentVoucher.jsperfect-scrollbar.min.jsphotoswipe-ui-default.min.jsphotoswipe.jspj.jsplupload.full.min.jsproperties.jsqrbb.jsqrcode.jsqrrz.jsrecommend.jsreg.jsregister.jsregister1.jsreviewsmanage.jsrul.jssaoyisao.jsscrollToTop.jsself_shop.jssetting.jssetting_address.jssetting_fogetPayPwd.jssetting_fogetPwd.jssetting_loginInfo.jssetting_payPwd.jssetting_phone.jssetting_pwd.jssetting_user.jsshangdu.jsshare.jsshare_user_list.jsshopGoodsList.jsshop_decorate.jsshop_indent.jsshop_indentcon.jsshoperUploadVoucher.jsshopgoodlist.jsshoppingcart.jsshopsList.jsshopsetting.jsstart.jsstore_activity.jsstore_class.jsstore_commodity.jsstore_home.1.jsstore_home.jsstore_info.jsstore_new.jsstoreout.jssupermarket.jsswiper.min.jstest.jstime.jstime_limit.jsupload.jsupload1.jsuploadVoucher.jsuploader.jsuploaderBatch.jsuploadqiniu.jsvouchers.jsyhk.jszepto.min.jszhuweiba.js╕┤╓╞ activity7.js╕┤╓╞ confirmOrder.js╕┤╓╞ home.js╕┤╓╞ indentcon.js
images
js
plugins
colpick
echarts
font-awesome
jcrop
kindeditor
kindeditor-all.jskindeditor.js
lang
license.txt
php
plugins
anchor
autoheight
baidumap
clearhtml
code
emoticons
filemanager
fixtoolbar
flash
image
insertfile
lineheight
link
map
media
multiimage
pagebreak
plainpaste
preview
quickformat
table
template
wordpaste
themes
layer
layui
lazyload
raty
slide
validator
webuploader
src
template
thinkphp
.htaccessLICENSE.txtREADME.mdbase.phpconvention.phphelper.php
lang
library
think
traits
logo.pngstart.php
tpl
upload
2018-06
accreds
adspic
2017-06
2017-09
2017-10
2017-11
2017-12
2018-01
2018-02
2018-03
txt.txt
appraises
articles
brands
complains
2017-12
5a24cadf3864d.png5a24cadf3864d_m.png5a24cadf3864d_m_thumb.png5a24cadf3864d_thumb.png5a24cae02ea44.png5a24cae02ea44_m.png5a24cae02ea44_m_thumb.png5a24cae02ea44_thumb.png5a24cb57d903a.png5a24cb57d903a_m.png5a24cb57d903a_m_thumb.png5a24cb57d903a_thumb.png5a24cb676d524.png5a24cb676d524_m.png5a24cb676d524_m_thumb.png5a24cb676d524_thumb.png5a24cba71a785.jpg5a24cba71a785_m.jpg5a24cba71a785_m_thumb.jpg5a24cba71a785_thumb.jpg5a24cbbb3fdc6.jpg5a24cbbb3fdc6_m.jpg5a24cbbb3fdc6_m_thumb.jpg5a24cbbb3fdc6_thumb.jpg5a24ef4a8ea3e.png5a24ef4a8ea3e_m.png5a24ef4a8ea3e_m_thumb.png5a24ef4a8ea3e_thumb.png5a24ef6dcf18f.jpg5a24ef6dcf18f_m.jpg5a24ef6dcf18f_m_thumb.jpg5a24ef6dcf18f_thumb.jpg5a24f0e0ebb7a.png5a24f0e0ebb7a_m.png5a24f0e0ebb7a_m_thumb.png5a24f0e0ebb7a_thumb.png5a24f43fc6732.png5a24f43fc6732_m.png5a24f43fc6732_m_thumb.png5a24f43fc6732_thumb.png5a24fd9d9951d.png5a24fd9d9951d_m.png5a24fd9d9951d_m_thumb.png5a24fd9d9951d_thumb.png5a24fdbb66b5d.png5a24fdbb66b5d_m.png5a24fdbb66b5d_m_thumb.png5a24fdbb66b5d_thumb.png5a24fe608e9d4.png5a24fe608e9d4_m.png5a24fe608e9d4_m_thumb.png5a24fe608e9d4_thumb.png5a25028514375.png5a25028514375_m.png5a25028514375_m_thumb.png5a25028514375_thumb.png5a2502ffa8e6a.png5a2502ffa8e6a_m.png5a2502ffa8e6a_m_thumb.png5a2502ffa8e6a_thumb.png5a250325da04b.png5a250325da04b_m.png5a250325da04b_m_thumb.png5a250325da04b_thumb.png5a2503338d0fa.png5a2503338d0fa_m.png5a2503338d0fa_m_thumb.png5a2503338d0fa_thumb.png5a25033b4bfbc.jpg5a25033b4bfbc_m.jpg5a25033b4bfbc_m_thumb.jpg5a25033b4bfbc_thumb.jpg5a25039cb74d1.png5a25039cb74d1_m.png5a25039cb74d1_m_thumb.png5a25039cb74d1_thumb.png5a2503c279158.png5a2503c279158_m.png5a2503c279158_m_thumb.png5a2503c279158_thumb.png5a2503e99a96f.png5a2503e99a96f_m.png5a2503e99a96f_m_thumb.png5a2503e99a96f_thumb.png5a25045f80676.png5a25045f80676_m.png5a25045f80676_m_thumb.png5a25045f80676_thumb.png5a25046409538.png5a25046409538_m.png5a25046409538_m_thumb.png5a25046409538_thumb.png5a25047243a16.png5a25047243a16_m.png5a25047243a16_m_thumb.png5a25047243a16_thumb.png5a2504764eac6.png5a2504764eac6_m.png5a2504764eac6_m_thumb.png5a2504764eac6_thumb.png5a250491e6ea2.png5a250491e6ea2_m.png5a250491e6ea2_m_thumb.png5a250491e6ea2_thumb.png5a2504b85dc18.png5a2504b85dc18_m.png5a2504b85dc18_m_thumb.png5a2504b85dc18_thumb.png5a2504e15395f.png5a2504e15395f_m.png5a2504e15395f_m_thumb.png5a2504e15395f_thumb.png5a250ae3ece83.png5a250ae3ece83_m.png5a250ae3ece83_m_thumb.png5a250ae3ece83_thumb.png5a250b0396ec5.jpeg5a250b0396ec5_m.jpeg5a250b0396ec5_m_thumb.jpeg5a250b0396ec5_thumb.jpeg5a250c51884ca.png5a250c51884ca_m.png5a250c51884ca_m_thumb.png5a250c51884ca_thumb.png5a250c548048b.jpg5a250c548048b_m.jpg5a250c548048b_m_thumb.jpg5a250c548048b_thumb.jpg
txt.txt
friendlinks
goods
2017-09
59cf01e0b7300.jpg59cf01e0b7300_m.jpg59cf01e0b7300_m_thumb.jpg59cf01e0b7300_thumb.jpg59cf02d89d713.jpg59cf02d89d713_m.jpg59cf02d89d713_m_thumb.jpg59cf02d89d713_thumb.jpg59cf0353b35f8.jpg59cf0353b35f8_m.jpg59cf0353b35f8_m_thumb.jpg59cf0353b35f8_thumb.jpg59cf046758d02.jpg59cf046758d02_m.jpg59cf046758d02_m_thumb.jpg59cf046758d02_thumb.jpg59cf053d59dc4.jpg59cf053d59dc4_m.jpg59cf053d59dc4_m_thumb.jpg59cf053d59dc4_thumb.jpg59cf05c60f9ea.jpg59cf05c60f9ea_m.jpg59cf05c60f9ea_m_thumb.jpg59cf05c60f9ea_thumb.jpg59cf06674cf96.jpg59cf06674cf96_m.jpg59cf06674cf96_m_thumb.jpg59cf06674cf96_thumb.jpg59cf06d1e6004.jpg59cf06d1e6004_m.jpg59cf06d1e6004_m_thumb.jpg59cf06d1e6004_thumb.jpg59cf074e3d3e9.jpg59cf074e3d3e9_m.jpg59cf074e3d3e9_m_thumb.jpg59cf074e3d3e9_thumb.jpg59cf07d5b494c.jpg59cf07d5b494c_m.jpg59cf07d5b494c_m_thumb.jpg59cf07d5b494c_thumb.jpg59cf08aaad0d8.jpg59cf08aaad0d8_m.jpg59cf08aaad0d8_m_thumb.jpg59cf08aaad0d8_thumb.jpg59cf0afd1a968.jpg59cf0afd1a968_m.jpg59cf0afd1a968_m_thumb.jpg59cf0afd1a968_thumb.jpg59cf0b9643cb2.jpg59cf0b9643cb2_m.jpg59cf0b9643cb2_m_thumb.jpg59cf0b9643cb2_thumb.jpg59cf0b9a1040d.jpg59cf0b9a1040d_m.jpg59cf0b9a1040d_m_thumb.jpg59cf0b9a1040d_thumb.jpg59cf0ba59838e.jpg59cf0ba59838e_m.jpg59cf0ba59838e_m_thumb.jpg59cf0ba59838e_thumb.jpg59cf337177ed1.jpg59cf337177ed1_m.jpg59cf337177ed1_m_thumb.jpg59cf337177ed1_thumb.jpg59cf3447c05e8.jpg59cf3447c05e8_m.jpg59cf3447c05e8_m_thumb.jpg59cf3447c05e8_thumb.jpg59cf3447df581.jpg59cf3447df581_m.jpg59cf3447df581_m_thumb.jpg59cf3447df581_thumb.jpg59cf355955800.jpg59cf355955800_m.jpg59cf355955800_m_thumb.jpg59cf355955800_thumb.jpg59cf35d82c51a.jpg59cf35d82c51a_m.jpg59cf35d82c51a_m_thumb.jpg59cf35d82c51a_thumb.jpg59cf3686189f3.jpg59cf3686189f3_m.jpg59cf3686189f3_m_thumb.jpg59cf3686189f3_thumb.jpg59cf37605d6c2.jpg59cf37605d6c2_m.jpg59cf37605d6c2_m_thumb.jpg59cf37605d6c2_thumb.jpg59cf3c867d0d8.jpg59cf3c867d0d8_m.jpg59cf3c867d0d8_m_thumb.jpg59cf3c867d0d8_thumb.jpg59cf3d302774f.jpg59cf3d302774f_m.jpg59cf3d302774f_m_thumb.jpg59cf3d302774f_thumb.jpg59cf3e45398c0.jpg59cf3e45398c0_m.jpg59cf3e45398c0_m_thumb.jpg59cf3e45398c0_thumb.jpg59cf3ed28adb1.jpg59cf3ed28adb1_m.jpg59cf3ed28adb1_m_thumb.jpg59cf3ed28adb1_thumb.jpg59cf3fb9f078f.jpg59cf3fb9f078f_m.jpg59cf3fb9f078f_m_thumb.jpg59cf3fb9f078f_thumb.jpg59cf4062cbfa8.jpg59cf4062cbfa8_m.jpg59cf4062cbfa8_m_thumb.jpg59cf4062cbfa8_thumb.jpg59cf4151c3d8e.jpg59cf4151c3d8e_m.jpg59cf4151c3d8e_m_thumb.jpg59cf4151c3d8e_thumb.jpg59cf41d2d4ea9.jpg59cf41d2d4ea9_m.jpg59cf41d2d4ea9_m_thumb.jpg59cf41d2d4ea9_thumb.jpg59cf4601cdbca.jpg59cf4601cdbca_m.jpg59cf4601cdbca_m_thumb.jpg59cf4601cdbca_thumb.jpg59cf476e805ae.jpg59cf476e805ae_m.jpg59cf476e805ae_m_thumb.jpg59cf476e805ae_thumb.jpg59cf49e65c901.jpg59cf49e65c901_m.jpg59cf49e65c901_m_thumb.jpg59cf49e65c901_thumb.jpg59cf4e1843c6b.jpg59cf4e1843c6b_m.jpg59cf4e1843c6b_m_thumb.jpg59cf4e1843c6b_thumb.jpg59cf5051e900b.jpg59cf5051e900b_m.jpg59cf5051e900b_m_thumb.jpg59cf5051e900b_thumb.jpg59cf58746268f.jpg59cf58746268f_m.jpg59cf58746268f_m_thumb.jpg59cf58746268f_thumb.jpg59cf5bec52d23.jpg59cf5bec52d23_m.jpg59cf5bec52d23_m_thumb.jpg59cf5bec52d23_thumb.jpg59cf5c7789276.jpg59cf5c7789276_m.jpg59cf5c7789276_m_thumb.jpg59cf5c7789276_thumb.jpg59cf5d65a5520.jpg59cf5d65a5520_m.jpg59cf5d65a5520_m_thumb.jpg59cf5d65a5520_thumb.jpg59cf5e0690f68.jpg59cf5e0690f68_m.jpg59cf5e0690f68_m_thumb.jpg59cf5e0690f68_thumb.jpg59cf5e7276127.jpg59cf5e7276127_m.jpg59cf5e7276127_m_thumb.jpg59cf5e7276127_thumb.jpg59cf5f21e6cd2.jpg59cf5f21e6cd2_m.jpg59cf5f21e6cd2_m_thumb.jpg59cf5f21e6cd2_thumb.jpg59cf5f31a5a9b.jpg59cf5f31a5a9b_m.jpg59cf5f31a5a9b_m_thumb.jpg59cf5f31a5a9b_thumb.jpg59cf5fb82d84c.jpg59cf5fb82d84c_m.jpg59cf5fb82d84c_m_thumb.jpg59cf5fb82d84c_thumb.jpg59cf6018af903.jpg59cf6018af903_m.jpg59cf6018af903_m_thumb.jpg59cf6018af903_thumb.jpg59cf606864269.jpg59cf606864269_m.jpg59cf606864269_m_thumb.jpg59cf606864269_thumb.jpg59cf606d10c7b.jpg59cf606d10c7b_m.jpg59cf606d10c7b_m_thumb.jpg59cf606d10c7b_thumb.jpg59cf60c5ae54f.jpg59cf60c5ae54f_m.jpg59cf60c5ae54f_m_thumb.jpg59cf60c5ae54f_thumb.jpg59cf615185a94.jpg59cf615185a94_m.jpg59cf615185a94_m_thumb.jpg59cf615185a94_thumb.jpg59cf6158bed03.jpg59cf6158bed03_m.jpg59cf6158bed03_m_thumb.jpg59cf6158bed03_thumb.jpg59cf61c035aa3.jpg59cf61c035aa3_m.jpg59cf61c035aa3_m_thumb.jpg59cf61c035aa3_thumb.jpg59cf62191db9a.jpg59cf62191db9a_m.jpg59cf62191db9a_m_thumb.jpg59cf62191db9a_thumb.jpg59cf62619d29f.jpg59cf62619d29f_m.jpg59cf62619d29f_m_thumb.jpg59cf62619d29f_thumb.jpg59cf6389534af.jpg59cf6389534af_m.jpg59cf6389534af_m_thumb.jpg59cf6389534af_thumb.jpg59cf645a0d1aa.jpg59cf645a0d1aa_m.jpg59cf645a0d1aa_m_thumb.jpg59cf645a0d1aa_thumb.jpg59cf64a62237e.jpg59cf64a62237e_m.jpg59cf64a62237e_m_thumb.jpg59cf64a62237e_thumb.jpg59cf64da11550.jpg59cf64da11550_m.jpg59cf64da11550_m_thumb.jpg59cf64da11550_thumb.jpg59cf65190ff87.jpg59cf65190ff87_m.jpg59cf65190ff87_m_thumb.jpg59cf65190ff87_thumb.jpg59cf65a4b1649.jpg59cf65a4b1649_m.jpg59cf65a4b1649_m_thumb.jpg59cf65a4b1649_thumb.jpg59cf665e5890a.jpg59cf665e5890a_m.jpg59cf665e5890a_m_thumb.jpg59cf665e5890a_thumb.jpg59cf67798753c.jpg59cf67798753c_m.jpg59cf67798753c_m_thumb.jpg59cf67798753c_thumb.jpg59cf6797347e0.jpg59cf6797347e0_m.jpg59cf6797347e0_m_thumb.jpg59cf6797347e0_thumb.jpg59cf67c7de29d.jpg59cf67c7de29d_m.jpg59cf67c7de29d_m_thumb.jpg59cf67c7de29d_thumb.jpg59cf680da7246.jpg59cf680da7246_m.jpg59cf680da7246_m_thumb.jpg59cf680da7246_thumb.jpg59cf6863d0ee7.jpg59cf6863d0ee7_m.jpg59cf6863d0ee7_m_thumb.jpg59cf6863d0ee7_thumb.jpg59cf690ab38ac.jpg59cf690ab38ac_m.jpg59cf690ab38ac_m_thumb.jpg59cf690ab38ac_thumb.jpg59cf69a6affcb.jpg59cf69a6affcb_m.jpg59cf69a6affcb_m_thumb.jpg59cf69a6affcb_thumb.jpg59cf6b883f197.jpg59cf6b883f197_m.jpg59cf6b883f197_m_thumb.jpg59cf6b883f197_thumb.jpg59cf6bebb4931.jpg59cf6bebb4931_m.jpg59cf6bebb4931_m_thumb.jpg59cf6bebb4931_thumb.jpg
2017-11
2017-12
2018-01
2018-02
5a93a5cf4626a.jpg5a93a5cf4626a_m.jpg5a93a5cf4626a_m_thumb.jpg5a93a5cf4626a_thumb.jpg5a93ae38b0e1c.jpg5a93ae38b0e1c_m.jpg5a93ae38b0e1c_m_thumb.jpg5a93ae38b0e1c_thumb.jpg5a94a441deeca.jpg5a94a441deeca_m.jpg5a94a441deeca_m_thumb.jpg5a94a441deeca_thumb.jpg5a94a44f87396.jpg5a94a44f87396_m.jpg5a94a44f87396_m_thumb.jpg5a94a44f87396_thumb.jpg5a94a4ee9df42.jpg5a94a4ee9df42_m.jpg5a94a4ee9df42_m_thumb.jpg5a94a4ee9df42_thumb.jpg5a94acf237fca.jpg5a94acf237fca_m.jpg5a94acf237fca_m_thumb.jpg5a94acf237fca_thumb.jpg5a94acf991b07.jpg5a94acf991b07_m.jpg5a94acf991b07_m_thumb.jpg5a94acf991b07_thumb.jpg5a94ad1319eda.jpg5a94ad1319eda_m.jpg5a94ad1319eda_m_thumb.jpg5a94ad1319eda_thumb.jpg5a94b4d02a5c9.png5a94b4d02a5c9_m.png5a94b4d02a5c9_m_thumb.png5a94b4d02a5c9_thumb.png5a94b4d6d80a0.jpg5a94b4d6d80a0_m.jpg5a94b4d6d80a0_m_thumb.jpg5a94b4d6d80a0_thumb.jpg5a94cbbd30e0a.png5a94cc8290e54.png5a94cca554588.png5a94ccb881891.jpg5a94ccb881891_m.jpg5a94ccb881891_m_thumb.jpg5a94ccb881891_thumb.jpg5a94cccb551ed.png5a94cccb551ed_m.png5a94cccb551ed_m_thumb.png5a94cccb551ed_thumb.png5a94ccfbe3280.png5a94ccfbe3280_m.png5a94ccfbe3280_m_thumb.png5a94ccfbe3280_thumb.png5a94cdca5e0d9.jpg5a94cdeccf53c.jpg5a94cdeccf53c_m.jpg5a94cdeccf53c_m_thumb.jpg5a94cdeccf53c_thumb.jpg5a94ce053cb1f.jpg5a94ce053cb1f_m.jpg5a94ce053cb1f_m_thumb.jpg5a94ce053cb1f_thumb.jpg5a94ce1b4fcd6.jpg5a94ce1b4fcd6_m.jpg5a94ce1b4fcd6_m_thumb.jpg5a94ce1b4fcd6_thumb.jpg5a94d1c10bc94.jpg5a95114b244a4.jpeg5a95114b244a4_m.jpeg5a95114b244a4_m_thumb.jpeg5a95114b244a4_thumb.jpeg5a951166afd5d.jpg5a951166afd5d_m.jpg5a951166afd5d_m_thumb.jpg5a951166afd5d_thumb.jpg5a96205b0d99c.png5a96205b0d99c_m.png5a96205b0d99c_m_thumb.png5a96205b0d99c_thumb.png5a96206ddf94a.png5a96206ddf94a_m.png5a96206ddf94a_m_thumb.png5a96206ddf94a_thumb.png5a9620e314620.png5a9620e314620_m.png5a9620e314620_m_thumb.png5a9620e314620_thumb.png5a9643621f26b.png5a9643621f26b_m.png5a9643621f26b_m_thumb.png5a9643621f26b_thumb.png
2018-03
5a9755ca72ff1.png5a9755ca72ff1_m.png5a9755ca72ff1_m_thumb.png5a9755ca72ff1_thumb.png5a975683063ed.jpg5a975683063ed_m.jpg5a975683063ed_m_thumb.jpg5a975683063ed_thumb.jpg5a97576844875.png5a97576844875_m.png5a97576844875_m_thumb.png5a97576844875_thumb.png5a975bb86835f.png5a975bb86835f_m.png5a975bb86835f_m_thumb.png5a975bb86835f_thumb.png5a9760acc368a.jpg5a9760acc368a_m.jpg5a9760acc368a_m_thumb.jpg5a9760acc368a_thumb.jpg5a9760cf22ffe.jpg5a9760cf22ffe_m.jpg5a9760cf22ffe_m_thumb.jpg5a9760cf22ffe_thumb.jpg5a9760ed2f235.jpg5a9760ed2f235_m.jpg5a9760ed2f235_m_thumb.jpg5a9760ed2f235_thumb.jpg5a9761481b695.jpg5a9761481b695_m.jpg5a9761481b695_m_thumb.jpg5a9761481b695_thumb.jpg5a97614d8fb2e.jpg5a97614d8fb2e_m.jpg5a97614d8fb2e_m_thumb.jpg5a97614d8fb2e_thumb.jpg5a97618a99572.png5a97618a99572_m.png5a97618a99572_m_thumb.png5a97618a99572_thumb.png5a9764cd7004f.jpg5a9764cd7004f_m.jpg5a9764cd7004f_m_thumb.jpg5a9764cd7004f_thumb.jpg5a9768f4edf45.png5a9768f4edf45_m.png5a9768f4edf45_m_thumb.png5a9768f4edf45_thumb.png5a976a16f1459.png5a976a16f1459_m.png5a976a16f1459_m_thumb.png5a976a16f1459_thumb.png5a976f8e0a51e.jpg5a976f8e0a51e_m.jpg5a976f8e0a51e_m_thumb.jpg5a976f8e0a51e_thumb.jpg5a97ad68b4a7b.jpg5a97adeb50ac0.jpg5a97ae645aa9b.jpg5a97af94e5ae8.jpg5a97afc17488b.png5a99e8a54a446.jpg5ab21d2d1f9d5.jpg5ab21d495c8e5.jpg5ab477676fccc.jpg5ab8acbb9e95c.png5ab8acbb9e95c_m.png5ab8acbb9e95c_m_thumb.png5ab8acbb9e95c_thumb.png5ab8acce98039.png5ab8acce98039_m.png5ab8acce98039_m_thumb.png5ab8acce98039_thumb.png5ab8ad0c8e619.png5ab8ad0c8e619_m.png5ab8ad0c8e619_m_thumb.png5ab8ad0c8e619_thumb.png
2018-04
txt.txt
goodscats
2017-10
59e5ab5457a59.jpg59e5ab960488e.jpg59e5abb3ef9a6.jpg59e5abd69e1e3.jpg59e5abf38832c.jpg59e5ac0fd000e.jpg59e5ac896d8dc.jpg59e5acada6bdf.jpg59e5acd918291.jpg59e5acf326322.jpg59e5ad7154bc3.jpg59e5ada5ca883.jpg59e5ae12e66d2.jpg59e5ae8e1af9a.jpg59e5aedaf073f.jpg59e5aef5aad74.jpg59e5af13407de.jpg59e5af5d99168.jpg59e5af8f393ab.jpg59e5afd8d0230.jpg59e5b03218b56.jpg59e5b09360ee7.jpg59e5b0f02e824.jpg59e5b1131f187.jpg59e5b130e8be0.jpg59e5b155854a3.jpg59e5b1993e3b8.jpg59e5b1e82fb8a.jpg59e5b207becea.jpg59e5b24668997.jpg59e5b288bf070.jpg59e5b2a383629.jpg59e5b2bb3ced5.jpg59e5b3234cd6f.jpg59e5b36759f78.jpg59e5b492bdfe6.jpg59e5b4cad093c.jpg59e5b53f1b425.jpg59e5b5806ab90.jpg59e5b5b0d28d0.jpg59e5ba0a1ba8e.jpg59e5ba4f56223.jpg59e5ba71e0236.jpg59e5bada180fc.jpg59e6b5f7b45d0.jpg59e6b61595aab.jpg59e6b648c15a4.jpg59e6b91e80d52.jpg59e6b93ddf2e5.jpg59e6b9592fdc6.jpg59e6b971c0e31.jpg59e6b9d89886f.jpg59e6ba055d717.jpg59e6ba30c53bd.jpg59e6bad67bb72.jpg59e6bb35e948a.jpg59e6bb5543f3b.jpg59e6bb7a2681b.jpg59e6bb9654634.jpg59e6bbeb97b85.jpg59e6bc3c91c86.jpg59e6bc8384d59.jpg59e6bccf2de0b.jpg59e6bcf13bd24.jpg59e6bd22d1247.jpg59e6bd6c701d4.jpg59e6bdd0e4c3c.jpg59e6be895c035.jpg59e6beca84e46.jpg59e6bf07c445d.jpg59e6bf33d83e8.jpg59e6bf68df79c.jpg59e6bf8e56f79.jpg59e6bfeb8f86d.jpg59e6c1899c168.jpg59e6c1dfaeae9.jpg59e6c25be7a29.jpg59e6c28fa3c3e.jpg59e6c2b3109a8.jpg59e6c2cb5146f.jpg59e6c34e91ce2.jpg59e6c3a17aa85.jpg59e6c3cc87e26.jpg59e6c3ffe5daf.jpg59e6c482312fe.jpg59e6c49d1fac0.jpg59e6c4b129a77.jpg59e6c4e8c4330.jpg59e6c4ef429cb.jpg59e6c4f6778ce.jpg59e6c5358c6ab.jpg59e6c5562b305.jpg59e6c5f33fae5.jpg59e6c60504efe.jpg59e6c628d4a9c.jpg59e6c63d12b56.jpg59e6c65a0fc14.jpg59e6c67b56728.jpg59e6c69301799.jpg59e6c6d259f3c.jpg59e6c704019ba.jpg59e6c75b04289.jpg59e6c8e223ff9.jpg59e6c98d250b4.jpg59e6c9bc3d20f.jpg59e6c9d725ff4.jpg59e6c9f9663bf.jpg59e6ca11d3a58.jpg59e6ca656e67a.jpg59e6ca8b6302f.jpg59e6caad8cf73.jpg59e6cae157100.jpg59e6cb0738d55.jpg59e6cb47e109e.jpg59e6cba8aa02d.jpg59e6cc0c88802.jpg59e6cdb200ada.jpg59e6cdd71c212.jpg59e6cdfa60e91.jpg59e6ce23b41e3.jpg59e6ce536eba2.jpg59e6ce8864259.jpg59e6ceae510dc.jpg59e6cec96e527.jpg59e6cef36a97e.jpg59e6cf16ab282.jpg59e6cf531dac9.jpg59e6d01a5a672.jpg59e6d0305ecc2.jpg59e6d0521c303.jpg59e6d076e0ad5.jpg59e6d0a4def34.jpg59e6d0f0d58b4.jpg59e6d10f57a5d.jpg59e6d126a8d43.jpg59e6d13d71b07.jpg59e6d1884ce51.jpg59e6d1c179356.jpg59e6d1ee3855c.jpg59e6d22379da4.jpg59e6f81b1f215.jpg59e6f8426ef76.jpg59e6f85b11761.jpg59e6f876c3f79.jpg59e6f895ce664.jpg59e6f8b13c0c4.jpg59e6f8c99c1b2.jpg59e6f8e2f21e5.jpg59e6f8fd15cdd.jpg59e6f91136363.jpg59e6f92d263c4.jpg59e6f94ac7159.jpg59e6f9846e491.jpg59e6f9b95de18.jpg59e6fa05e58ba.jpg59e6fa1daa76d.jpg59e6fb435985e.jpg59e6fb8b607cd.jpg59e6fc71c7d11.jpg59e6fc8791e7b.jpg59e6fca6290df.jpg59e6fcbc3d263.jpg59e6fcd638349.jpg59e6fd2266fc2.jpg59e6fd44dc061.jpg59e6fd60d2cea.jpg59e6fda5f10b4.jpg59e6fdcb63432.jpg59e6fdee43fde.jpg59e6fe2db0c63.jpg59e6fe4e69ecd.jpg59e6fe6cb4447.jpg59e6febdf36e4.jpg59e6fef434a47.jpg59e6ff3b7dc93.jpg59e6ff5a7ef75.jpg59e6ffb2af2bc.jpg59e6fffa1bac8.jpg59e9a01ba0afa.jpg59e9a0a521a03.jpg59e9a0c6a2e03.jpg59e9a1c04e8c4.jpg59e9a1e9acf8b.jpg59e9a21b1afc3.jpg59e9a23eeaa3c.jpg59e9a27eebda4.jpg59e9a2d7e0ed9.jpg59e9a2f666c89.jpg59e9a34f205cd.jpg
image
shopcats
shopconfigs
shops
staffs
sysconfigs
temp
userranks
users
vendor
.htaccess
5ini99
autoload.php
composer
oss-sdk
.coveralls.yml.gitignore.travis.ymlCHANGELOG.mdLICENSE.mdREADME-CN.mdREADME.mdautoload.phpbuild-phar.shcomposer.jsonexample.jpgindex.phpphpunit.xml
samples
src
tests
swoole
.github
.gitignore.gitmodules.travis.ymlCMakeLists.txtCREDITSLICENSEREADME.mdVersion2.md
benchmark
build.shclear.shconfig.m4
examples
async
atomic
buffer.phpc10k.phpchannel.php
channel
client
client2.php
coroutine
db_pool.php
eof
event
get_local_ip.phphot_update_class.php
http
http2
ipv6
length
lock
memory
mmap
multi_port_server.php
multicast
mysql
mysql_proxy_server.php
namespace
php
postgresql
process
proxy_sync.phprecv_1m_client.phprecv_file.php
redis
redis_pool.phpreflection_test.phpringqueue.php
runtime
send_1m_svr.phpsendfile_server.phpserialize.phpserialize2.phpserver.cserver.php
server
server_hot_update_opcache.phpset_cpu_affinity.php
socket_coro
ssl
swoole_http_client.php
table
task
test.jpgtest_buffer.phptest_server.c
timer
udp
unixsock
version.phpweather_server.php
websocket
include
make.shpackage.xmlphp7_wrapper.hphp_swoole.h
src
swoole.cswoole_async.cswoole_atomic.cswoole_buffer.cswoole_channel.cswoole_channel_coro.ccswoole_client.cswoole_client_coro.cswoole_config.hswoole_coroutine.ccswoole_coroutine.hswoole_coroutine_util.cswoole_event.cswoole_http.hswoole_http_client.cswoole_http_client.hswoole_http_client_coro.cswoole_http_server.cswoole_http_v2_client.cswoole_http_v2_client.hswoole_http_v2_client_coro.cswoole_http_v2_server.cswoole_lock.cswoole_memory_pool.cswoole_mmap.cswoole_msgqueue.cswoole_mysql.cswoole_mysql.hswoole_mysql_coro.cswoole_postgresql_coro.cswoole_postgresql_coro.hswoole_process.cswoole_process_pool.cswoole_redis.cswoole_redis_coro.cswoole_redis_server.cswoole_ringqueue.cswoole_runtime.ccswoole_serialize.cswoole_serialize.hswoole_server.cswoole_server_port.cswoole_socket_coro.cswoole_table.cswoole_timer.cswoole_trace.cswoole_websocket_server.c
tests
CONTRIBUTIONREADME.mdcleancoro_test.sh
include
api
http_server.php
swoole_async
swoole_async_old
swoole_callback
swoole_client
swoole_http_client
swoole_http_server
swoole_mysql
swoole_redis
swoole_server
swoole_timer
swoole_utils
swoole_websocket_server
tcp_server.php
lib
macos
memoryleak
redis
skipif.incskipifDarwin.incswoole.inc
toolkit
new.shrun-testsstart.sh
swoole_async
swoole_atomic
swoole_buffer
swoole_channel
swoole_client_async
swoole_client_coro
swoole_client_sync
swoole_coroutine
swoole_coroutine_channel
swoole_coroutine_util
swoole_event
swoole_function
swoole_http2_client
swoole_http2_client_coro
swoole_http_cilent_coro
swoole_http_client
swoole_http_server
swoole_https_client
swoole_lock
swoole_memory_pool
swoole_mysql
swoole_mysql_coro
swoole_process
swoole_redis
swoole_redis_coro
swoole_redis_server
swoole_serialize
swoole_server
swoole_server_port
swoole_socket_coro
swoole_table
swoole_timer
swoole_websocket_server
template.phpttest-all-version.shtest.sql
thirdparty
tools
travis
wechat
wxtmp

@ -0,0 +1,219 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think\model\relation;
use think\db\Query;
use think\Loader;
use think\Model;
class BelongsTo extends OneToOne
{
/**
* 构造函数
* @access public
* @param Model $parent 上级模型对象
* @param string $model 模型名
* @param string $foreignKey 关联外键
* @param string $localKey 关联主键
* @param string $joinType JOIN类型
* @param string $relation 关联名
*/
public function __construct(Model $parent, $model, $foreignKey, $localKey, $joinType = 'INNER', $relation = null)
{
$this->parent = $parent;
$this->model = $model;
$this->foreignKey = $foreignKey;
$this->localKey = $localKey;
$this->joinType = $joinType;
$this->query = (new $model)->db();
$this->relation = $relation;
}
/**
* 延迟获取关联数据
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包查询条件
* @access public
* @return array|false|\PDOStatement|string|Model
*/
public function getRelation($subRelation = '', $closure = null)
{
$foreignKey = $this->foreignKey;
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
}
$relationModel = $this->query
->where($this->localKey, $this->parent->$foreignKey)
->relation($subRelation)
->find();
if ($relationModel) {
$relationModel->setParent(clone $this->parent);
}
return $relationModel;
}
/**
* 根据关联条件查询当前模型
* @access public
* @param string $operator 比较操作符
* @param integer $count 个数
* @param string $id 关联表的统计字段
* @return Query
*/
public function has($operator = '>=', $count = 1, $id = '*')
{
return $this->parent;
}
/**
* 根据关联条件查询当前模型
* @access public
* @param mixed $where 查询条件(数组或者闭包)
* @return Query
*/
public function hasWhere($where = [])
{
$table = $this->query->getTable();
$model = basename(str_replace('\\', '/', get_class($this->parent)));
$relation = basename(str_replace('\\', '/', $this->model));
if (is_array($where)) {
foreach ($where as $key => $val) {
if (false === strpos($key, '.')) {
$where[$relation . '.' . $key] = $val;
unset($where[$key]);
}
}
}
return $this->parent->db()->alias($model)
->field($model . '.*')
->join($table . ' ' . $relation, $model . '.' . $this->foreignKey . '=' . $relation . '.' . $this->localKey, $this->joinType)
->where($where);
}
/**
* 预载入关联查询(数据集)
* @access public
* @param array $resultSet 数据集
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
protected function eagerlySet(&$resultSet, $relation, $subRelation, $closure)
{
$localKey = $this->localKey;
$foreignKey = $this->foreignKey;
$range = [];
foreach ($resultSet as $result) {
// 获取关联外键列表
if (isset($result->$foreignKey)) {
$range[] = $result->$foreignKey;
}
}
if (!empty($range)) {
$data = $this->eagerlyWhere($this, [
$localKey => [
'in',
$range,
],
], $localKey, $relation, $subRelation, $closure);
// 关联属性名
$attr = Loader::parseName($relation);
// 关联数据封装
foreach ($resultSet as $result) {
// 关联模型
if (!isset($data[$result->$foreignKey])) {
$relationModel = null;
} else {
$relationModel = $data[$result->$foreignKey];
$relationModel->setParent(clone $result);
$relationModel->isUpdate(true);
}
if (!empty($this->bindAttr)) {
// 绑定关联属性
$this->bindAttr($relationModel, $result, $this->bindAttr);
} else {
// 设置关联属性
$result->setRelation($attr, $relationModel);
}
}
}
}
/**
* 预载入关联查询(数据)
* @access public
* @param Model $result 数据对象
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
protected function eagerlyOne(&$result, $relation, $subRelation, $closure)
{
$localKey = $this->localKey;
$foreignKey = $this->foreignKey;
$data = $this->eagerlyWhere($this, [$localKey => $result->$foreignKey], $localKey, $relation, $subRelation, $closure);
// 关联模型
if (!isset($data[$result->$foreignKey])) {
$relationModel = null;
} else {
$relationModel = $data[$result->$foreignKey];
$relationModel->setParent(clone $result);
$relationModel->isUpdate(true);
}
if (!empty($this->bindAttr)) {
// 绑定关联属性
$this->bindAttr($relationModel, $result, $this->bindAttr);
} else {
// 设置关联属性
$result->setRelation(Loader::parseName($relation), $relationModel);
}
}
/**
* 添加关联数据
* @access public
* @param Model $model 关联模型对象
* @return Model
*/
public function associate($model)
{
$foreignKey = $this->foreignKey;
$pk = $model->getPk();
$this->parent->setAttr($foreignKey, $model->$pk);
$this->parent->save();
return $this->parent->setRelation($this->relation, $model);
}
/**
* 注销关联数据
* @access public
* @return Model
*/
public function dissociate()
{
$foreignKey = $this->foreignKey;
$this->parent->setAttr($foreignKey, null);
$this->parent->save();
return $this->parent->setRelation($this->relation, null);
}
}

@ -0,0 +1,579 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think\model\relation;
use think\Collection;
use think\db\Query;
use think\Exception;
use think\Loader;
use think\Model;
use think\model\Pivot;
use think\model\Relation;
use think\Paginator;
class BelongsToMany extends Relation
{
// 中间表表名
protected $middle;
// 中间表模型名称
protected $pivotName;
// 中间表模型对象
protected $pivot;
/**
* 构造函数
* @access public
* @param Model $parent 上级模型对象
* @param string $model 模型名
* @param string $table 中间表名
* @param string $foreignKey 关联模型外键
* @param string $localKey 当前模型关联键
*/
public function __construct(Model $parent, $model, $table, $foreignKey, $localKey)
{
$this->parent = $parent;
$this->model = $model;
$this->foreignKey = $foreignKey;
$this->localKey = $localKey;
if (false !== strpos($table, '\\')) {
$this->pivotName = $table;
$this->middle = basename(str_replace('\\', '/', $table));
} else {
$this->middle = $table;
}
$this->query = (new $model)->db();
$this->pivot = $this->newPivot();
}
/**
* 设置中间表模型
* @param $pivot
* @return $this
*/
public function pivot($pivot)
{
$this->pivotName = $pivot;
return $this;
}
/**
* 实例化中间表模型
* @param $data
* @return Pivot
* @throws Exception
*/
protected function newPivot($data = [])
{
$class = $this->pivotName ?: '\\think\\model\\Pivot';
$pivot = new $class($this->parent, $data, $this->middle);
if ($pivot instanceof Pivot) {
return $pivot;
} else {
throw new Exception('pivot model must extends: \think\model\Pivot');
}
}
/**
* 合成中间表模型
* @param array|Collection|Paginator $models
*/
protected function hydratePivot($models)
{
foreach ($models as $model) {
$pivot = [];
foreach ($model->getData() as $key => $val) {
if (strpos($key, '__')) {
list($name, $attr) = explode('__', $key, 2);
if ('pivot' == $name) {
$pivot[$attr] = $val;
unset($model->$key);
}
}
}
$model->setRelation('pivot', $this->newPivot($pivot));
}
}
/**
* 创建关联查询Query对象
* @return Query
*/
protected function buildQuery()
{
$foreignKey = $this->foreignKey;
$localKey = $this->localKey;
$pk = $this->parent->getPk();
// 关联查询
$condition['pivot.' . $localKey] = $this->parent->$pk;
return $this->belongsToManyQuery($foreignKey, $localKey, $condition);
}
/**
* 延迟获取关联数据
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包查询条件
* @return false|\PDOStatement|string|\think\Collection
*/
public function getRelation($subRelation = '', $closure = null)
{
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
}
$result = $this->buildQuery()->relation($subRelation)->select();
$this->hydratePivot($result);
return $result;
}
/**
* 重载select方法
* @param null $data
* @return false|\PDOStatement|string|Collection
*/
public function select($data = null)
{
$result = $this->buildQuery()->select($data);
$this->hydratePivot($result);
return $result;
}
/**
* 重载paginate方法
* @param null $listRows
* @param bool $simple
* @param array $config
* @return Paginator
*/
public function paginate($listRows = null, $simple = false, $config = [])
{
$result = $this->buildQuery()->paginate($listRows, $simple, $config);
$this->hydratePivot($result);
return $result;
}
/**
* 重载find方法
* @param null $data
* @return array|false|\PDOStatement|string|Model
*/
public function find($data = null)
{
$result = $this->buildQuery()->find($data);
if ($result) {
$this->hydratePivot([$result]);
}
return $result;
}
/**
* 查找多条记录 如果不存在则抛出异常
* @access public
* @param array|string|Query|\Closure $data
* @return array|\PDOStatement|string|Model
*/
public function selectOrFail($data = null)
{
return $this->failException(true)->select($data);
}
/**
* 查找单条记录 如果不存在则抛出异常
* @access public
* @param array|string|Query|\Closure $data
* @return array|\PDOStatement|string|Model
*/
public function findOrFail($data = null)
{
return $this->failException(true)->find($data);
}
/**
* 根据关联条件查询当前模型
* @access public
* @param string $operator 比较操作符
* @param integer $count 个数
* @param string $id 关联表的统计字段
* @param string $joinType JOIN类型
* @return Query
*/
public function has($operator = '>=', $count = 1, $id = '*', $joinType = 'INNER')
{
return $this->parent;
}
/**
* 根据关联条件查询当前模型
* @access public
* @param mixed $where 查询条件(数组或者闭包)
* @return Query
* @throws Exception
*/
public function hasWhere($where = [])
{
throw new Exception('relation not support: hasWhere');
}
/**
* 设置中间表的查询条件
* @param $field
* @param null $op
* @param null $condition
* @return $this
*/
public function wherePivot($field, $op = null, $condition = null)
{
$field = 'pivot.' . $field;
$this->query->where($field, $op, $condition);
return $this;
}
/**
* 预载入关联查询(数据集)
* @access public
* @param array $resultSet 数据集
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResultSet(&$resultSet, $relation, $subRelation, $closure)
{
$localKey = $this->localKey;
$foreignKey = $this->foreignKey;
$pk = $resultSet[0]->getPk();
$range = [];
foreach ($resultSet as $result) {
// 获取关联外键列表
if (isset($result->$pk)) {
$range[] = $result->$pk;
}
}
if (!empty($range)) {
// 查询关联数据
$data = $this->eagerlyManyToMany([
'pivot.' . $localKey => [
'in',
$range,
],
], $relation, $subRelation);
// 关联属性名
$attr = Loader::parseName($relation);
// 关联数据封装
foreach ($resultSet as $result) {
if (!isset($data[$result->$pk])) {
$data[$result->$pk] = [];
}
$result->setRelation($attr, $this->resultSetBuild($data[$result->$pk]));
}
}
}
/**
* 预载入关联查询(单个数据)
* @access public
* @param Model $result 数据对象
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResult(&$result, $relation, $subRelation, $closure)
{
$pk = $result->getPk();
if (isset($result->$pk)) {
$pk = $result->$pk;
// 查询管理数据
$data = $this->eagerlyManyToMany(['pivot.' . $this->localKey => $pk], $relation, $subRelation);
// 关联数据封装
if (!isset($data[$pk])) {
$data[$pk] = [];
}
$result->setRelation(Loader::parseName($relation), $this->resultSetBuild($data[$pk]));
}
}
/**
* 关联统计
* @access public
* @param Model $result 数据对象
* @param \Closure $closure 闭包
* @return integer
*/
public function relationCount($result, $closure)
{
$pk = $result->getPk();
$count = 0;
if (isset($result->$pk)) {
$pk = $result->$pk;
$count = $this->belongsToManyQuery($this->foreignKey, $this->localKey, ['pivot.' . $this->localKey => $pk])->count();
}
return $count;
}
/**
* 获取关联统计子查询
* @access public
* @param \Closure $closure 闭包
* @return string
*/
public function getRelationCountQuery($closure)
{
return $this->belongsToManyQuery($this->foreignKey, $this->localKey, [
'pivot.' . $this->localKey => [
'exp',
'=' . $this->parent->getTable() . '.' . $this->parent->getPk(),
],
])->fetchSql()->count();
}
/**
* 多对多 关联模型预查询
* @access public
* @param array $where 关联预查询条件
* @param string $relation 关联名
* @param string $subRelation 子关联
* @return array
*/
protected function eagerlyManyToMany($where, $relation, $subRelation = '')
{
// 预载入关联查询 支持嵌套预载入
$list = $this->belongsToManyQuery($this->foreignKey, $this->localKey, $where)->with($subRelation)->select();
// 组装模型数据
$data = [];
foreach ($list as $set) {
$pivot = [];
foreach ($set->getData() as $key => $val) {
if (strpos($key, '__')) {
list($name, $attr) = explode('__', $key, 2);
if ('pivot' == $name) {
$pivot[$attr] = $val;
unset($set->$key);
}
}
}
$set->setRelation('pivot', $this->newPivot($pivot));
$data[$pivot[$this->localKey]][] = $set;
}
return $data;
}
/**
* BELONGS TO MANY 关联查询
* @access public
* @param string $foreignKey 关联模型关联键
* @param string $localKey 当前模型关联键
* @param array $condition 关联查询条件
* @return Query
*/
protected function belongsToManyQuery($foreignKey, $localKey, $condition = [])
{
// 关联查询封装
$tableName = $this->query->getTable();
$table = $this->pivot->getTable();
$fields = $this->getQueryFields($tableName);
$query = $this->query->field($fields)
->field(true, false, $table, 'pivot', 'pivot__');
if (empty($this->baseQuery)) {
$relationFk = $this->query->getPk();
$query->join($table . ' pivot', 'pivot.' . $foreignKey . '=' . $tableName . '.' . $relationFk)
->where($condition);
}
return $query;
}
/**
* 保存(新增)当前关联数据对象
* @access public
* @param mixed $data 数据 可以使用数组 关联模型对象 和 关联对象的主键
* @param array $pivot 中间表额外数据
* @return integer
*/
public function save($data, array $pivot = [])
{
// 保存关联表/中间表数据
return $this->attach($data, $pivot);
}
/**
* 批量保存当前关联数据对象
* @access public
* @param array $dataSet 数据集
* @param array $pivot 中间表额外数据
* @param bool $samePivot 额外数据是否相同
* @return integer
*/
public function saveAll(array $dataSet, array $pivot = [], $samePivot = false)
{
$result = false;
foreach ($dataSet as $key => $data) {
if (!$samePivot) {
$pivotData = isset($pivot[$key]) ? $pivot[$key] : [];
} else {
$pivotData = $pivot;
}
$result = $this->attach($data, $pivotData);
}
return $result;
}
/**
* 附加关联的一个中间表数据
* @access public
* @param mixed $data 数据 可以使用数组、关联模型对象 或者 关联对象的主键
* @param array $pivot 中间表额外数据
* @return array|Pivot
* @throws Exception
*/
public function attach($data, $pivot = [])
{
if (is_array($data)) {
if (key($data) === 0) {
$id = $data;
} else {
// 保存关联表数据
$model = new $this->model;
$model->save($data);
$id = $model->getLastInsID();
}
} elseif (is_numeric($data) || is_string($data)) {
// 根据关联表主键直接写入中间表
$id = $data;
} elseif ($data instanceof Model) {
// 根据关联表主键直接写入中间表
$relationFk = $data->getPk();
$id = $data->$relationFk;
}
if ($id) {
// 保存中间表数据
$pk = $this->parent->getPk();
$pivot[$this->localKey] = $this->parent->$pk;
$ids = (array) $id;
foreach ($ids as $id) {
$pivot[$this->foreignKey] = $id;
$this->pivot->insert($pivot, true);
$result[] = $this->newPivot($pivot);
}
if (count($result) == 1) {
// 返回中间表模型对象
$result = $result[0];
}
return $result;
} else {
throw new Exception('miss relation data');
}
}
/**
* 解除关联的一个中间表数据
* @access public
* @param integer|array $data 数据 可以使用关联对象的主键
* @param bool $relationDel 是否同时删除关联表数据
* @return integer
*/
public function detach($data = null, $relationDel = false)
{
if (is_array($data)) {
$id = $data;
} elseif (is_numeric($data) || is_string($data)) {
// 根据关联表主键直接写入中间表
$id = $data;
} elseif ($data instanceof Model) {
// 根据关联表主键直接写入中间表
$relationFk = $data->getPk();
$id = $data->$relationFk;
}
// 删除中间表数据
$pk = $this->parent->getPk();
$pivot[$this->localKey] = $this->parent->$pk;
if (isset($id)) {
$pivot[$this->foreignKey] = is_array($id) ? ['in', $id] : $id;
}
$this->pivot->where($pivot)->delete();
// 删除关联表数据
if (isset($id) && $relationDel) {
$model = $this->model;
$model::destroy($id);
}
}
/**
* 数据同步
* @param array $ids
* @param bool $detaching
* @return array
*/
public function sync($ids, $detaching = true)
{
$changes = [
'attached' => [],
'detached' => [],
'updated' => [],
];
$pk = $this->parent->getPk();
$current = $this->pivot->where($this->localKey, $this->parent->$pk)
->column($this->foreignKey);
$records = [];
foreach ($ids as $key => $value) {
if (!is_array($value)) {
$records[$value] = [];
} else {
$records[$key] = $value;
}
}
$detach = array_diff($current, array_keys($records));
if ($detaching && count($detach) > 0) {
$this->detach($detach);
$changes['detached'] = $detach;
}
foreach ($records as $id => $attributes) {
if (!in_array($id, $current)) {
$this->attach($id, $attributes);
$changes['attached'][] = $id;
} elseif (count($attributes) > 0 &&
$this->attach($id, $attributes)
) {
$changes['updated'][] = $id;
}
}
return $changes;
}
/**
* 执行基础查询(进执行一次)
* @access protected
* @return void
*/
protected function baseQuery()
{
if (empty($this->baseQuery) && $this->parent->getData()) {
$pk = $this->parent->getPk();
$table = $this->pivot->getTable();
$this->query->join($table . ' pivot', 'pivot.' . $this->foreignKey . '=' . $this->query->getTable() . '.' . $this->query->getPk())->where('pivot.' . $this->localKey, $this->parent->$pk);
$this->baseQuery = true;
}
}
}

@ -0,0 +1,294 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think\model\relation;
use think\db\Query;
use think\Loader;
use think\Model;
use think\model\Relation;
class HasMany extends Relation
{
/**
* 构造函数
* @access public
* @param Model $parent 上级模型对象
* @param string $model 模型名
* @param string $foreignKey 关联外键
* @param string $localKey 当前模型主键
*/
public function __construct(Model $parent, $model, $foreignKey, $localKey)
{
$this->parent = $parent;
$this->model = $model;
$this->foreignKey = $foreignKey;
$this->localKey = $localKey;
$this->query = (new $model)->db();
}
/**
* 延迟获取关联数据
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包查询条件
* @return false|\PDOStatement|string|\think\Collection
*/
public function getRelation($subRelation = '', $closure = null)
{
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
}
$list = $this->relation($subRelation)->select();
$parent = clone $this->parent;
foreach ($list as &$model) {
$model->setParent($parent);
}
return $list;
}
/**
* 预载入关联查询
* @access public
* @param array $resultSet 数据集
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResultSet(&$resultSet, $relation, $subRelation, $closure)
{
$localKey = $this->localKey;
$range = [];
foreach ($resultSet as $result) {
// 获取关联外键列表
if (isset($result->$localKey)) {
$range[] = $result->$localKey;
}
}
if (!empty($range)) {
$data = $this->eagerlyOneToMany(new $this->model, [
$this->foreignKey => [
'in',
$range,
],
], $relation, $subRelation, $closure);
// 关联属性名
$attr = Loader::parseName($relation);
// 关联数据封装
foreach ($resultSet as $result) {
if (!isset($data[$result->$localKey])) {
$data[$result->$localKey] = [];
}
foreach ($data[$result->$localKey] as &$relationModel) {
$relationModel->setParent(clone $result);
}
$result->setRelation($attr, $this->resultSetBuild($data[$result->$localKey]));
}
}
}
/**
* 预载入关联查询
* @access public
* @param Model $result 数据对象
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResult(&$result, $relation, $subRelation, $closure)
{
$localKey = $this->localKey;
if (isset($result->$localKey)) {
$data = $this->eagerlyOneToMany(new $this->model, [$this->foreignKey => $result->$localKey], $relation, $subRelation, $closure);
// 关联数据封装
if (!isset($data[$result->$localKey])) {
$data[$result->$localKey] = [];
}
foreach ($data[$result->$localKey] as &$relationModel) {
$relationModel->setParent(clone $result);
}
$result->setRelation(Loader::parseName($relation), $this->resultSetBuild($data[$result->$localKey]));
}
}
/**
* 关联统计
* @access public
* @param Model $result 数据对象
* @param \Closure $closure 闭包
* @return integer
*/
public function relationCount($result, $closure)
{
$localKey = $this->localKey;
$count = 0;
if (isset($result->$localKey)) {
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
}
$count = $this->query->where([$this->foreignKey => $result->$localKey])->count();
}
return $count;
}
/**
* 创建关联统计子查询
* @access public
* @param \Closure $closure 闭包
* @return string
*/
public function getRelationCountQuery($closure)
{
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
}
$localKey = $this->localKey ?: $this->parent->getPk();
return $this->query->where([
$this->foreignKey => [
'exp',
'=' . $this->parent->getTable() . '.' . $localKey,
],
])->fetchSql()->count();
}
/**
* 一对多 关联模型预查询
* @access public
* @param object $model 关联模型对象
* @param array $where 关联预查询条件
* @param string $relation 关联名
* @param string $subRelation 子关联
* @param bool $closure
* @return array
*/
protected function eagerlyOneToMany($model, $where, $relation, $subRelation = '', $closure = false)
{
$foreignKey = $this->foreignKey;
// 预载入关联查询 支持嵌套预载入
if ($closure) {
call_user_func_array($closure, [ & $model]);
}
$list = $model->where($where)->with($subRelation)->select();
// 组装模型数据
$data = [];
foreach ($list as $set) {
$data[$set->$foreignKey][] = $set;
}
return $data;
}
/**
* 保存(新增)当前关联数据对象
* @access public
* @param mixed $data 数据 可以使用数组 关联模型对象 和 关联对象的主键
* @return Model|false
*/
public function save($data)
{
if ($data instanceof Model) {
$data = $data->getData();
}
// 保存关联表数据
$model = new $this->model;
$data[$this->foreignKey] = $this->parent->{$this->localKey};
return $model->save($data) ? $model : false;
}
/**
* 批量保存当前关联数据对象
* @access public
* @param array $dataSet 数据集
* @return integer
*/
public function saveAll(array $dataSet)
{
$result = false;
foreach ($dataSet as $key => $data) {
$result = $this->save($data);
}
return $result;
}
/**
* 根据关联条件查询当前模型
* @access public
* @param string $operator 比较操作符
* @param integer $count 个数
* @param string $id 关联表的统计字段
* @param string $joinType JOIN类型
* @return Query
*/
public function has($operator = '>=', $count = 1, $id = '*', $joinType = 'INNER')
{
$table = $this->query->getTable();
$model = basename(str_replace('\\', '/', get_class($this->parent)));
$relation = basename(str_replace('\\', '/', $this->model));
return $this->parent->db()
->alias($model)
->field($model . '.*')
->join($table . ' ' . $relation, $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey, $joinType)
->group($relation . '.' . $this->foreignKey)
->having('count(' . $id . ')' . $operator . $count);
}
/**
* 根据关联条件查询当前模型
* @access public
* @param mixed $where 查询条件(数组或者闭包)
* @return Query
*/
public function hasWhere($where = [])
{
$table = $this->query->getTable();
$model = basename(str_replace('\\', '/', get_class($this->parent)));
$relation = basename(str_replace('\\', '/', $this->model));
if (is_array($where)) {
foreach ($where as $key => $val) {
if (false === strpos($key, '.')) {
$where[$relation . '.' . $key] = $val;
unset($where[$key]);
}
}
}
return $this->parent->db()->alias($model)
->field($model . '.*')
->join($table . ' ' . $relation, $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey)
->where($where);
}
/**
* 执行基础查询(进执行一次)
* @access protected
* @return void
*/
protected function baseQuery()
{
if (empty($this->baseQuery)) {
if (isset($this->parent->{$this->localKey})) {
// 关联查询带入关联条件
$this->query->where($this->foreignKey, $this->parent->{$this->localKey});
}
$this->baseQuery = true;
}
}
}

@ -0,0 +1,144 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think\model\relation;
use think\db\Query;
use think\Exception;
use think\Loader;
use think\Model;
use think\model\Relation;
class HasManyThrough extends Relation
{
// 中间关联表外键
protected $throughKey;
// 中间表模型
protected $through;
/**
* 构造函数
* @access public
* @param Model $parent 上级模型对象
* @param string $model 模型名
* @param string $through 中间模型名
* @param string $foreignKey 关联外键
* @param string $throughKey 关联外键
* @param string $localKey 关联主键
*/
public function __construct(Model $parent, $model, $through, $foreignKey, $throughKey, $localKey)
{
$this->parent = $parent;
$this->model = $model;
$this->through = $through;
$this->foreignKey = $foreignKey;
$this->throughKey = $throughKey;
$this->localKey = $localKey;
$this->query = (new $model)->db();
}
/**
* 延迟获取关联数据
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包查询条件
* @return false|\PDOStatement|string|\think\Collection
*/
public function getRelation($subRelation = '', $closure = null)
{
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
}
return $this->relation($subRelation)->select();
}
/**
* 根据关联条件查询当前模型
* @access public
* @param string $operator 比较操作符
* @param integer $count 个数
* @param string $id 关联表的统计字段
* @param string $joinType JOIN类型
* @return Query
*/
public function has($operator = '>=', $count = 1, $id = '*', $joinType = 'INNER')
{
return $this->parent;
}
/**
* 根据关联条件查询当前模型
* @access public
* @param mixed $where 查询条件(数组或者闭包)
* @return Query
*/
public function hasWhere($where = [])
{
throw new Exception('relation not support: hasWhere');
}
/**
* 预载入关联查询
* @access public
* @param array $resultSet 数据集
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResultSet(&$resultSet, $relation, $subRelation, $closure)
{}
/**
* 预载入关联查询 返回模型对象
* @access public
* @param Model $result 数据对象
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResult(&$result, $relation, $subRelation, $closure)
{}
/**
* 关联统计
* @access public
* @param Model $result 数据对象
* @param \Closure $closure 闭包
* @return integer
*/
public function relationCount($result, $closure)
{}
/**
* 执行基础查询(进执行一次)
* @access protected
* @return void
*/
protected function baseQuery()
{
if (empty($this->baseQuery) && $this->parent->getData()) {
$through = $this->through;
$alias = Loader::parseName(basename(str_replace('\\', '/', $this->model)));
$throughTable = $through::getTable();
$pk = (new $through)->getPk();
$throughKey = $this->throughKey;
$modelTable = $this->parent->getTable();
$this->query->field($alias . '.*')->alias($alias)
->join($throughTable, $throughTable . '.' . $pk . '=' . $alias . '.' . $throughKey)
->join($modelTable, $modelTable . '.' . $this->localKey . '=' . $throughTable . '.' . $this->foreignKey)
->where($throughTable . '.' . $this->foreignKey, $this->parent->{$this->localKey});
$this->baseQuery = true;
}
}
}

@ -0,0 +1,189 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think\model\relation;
use think\db\Query;
use think\Loader;
use think\Model;
class HasOne extends OneToOne
{
/**
* 构造函数
* @access public
* @param Model $parent 上级模型对象
* @param string $model 模型名
* @param string $foreignKey 关联外键
* @param string $localKey 当前模型主键
* @param string $joinType JOIN类型
*/
public function __construct(Model $parent, $model, $foreignKey, $localKey, $joinType = 'INNER')
{
$this->parent = $parent;
$this->model = $model;
$this->foreignKey = $foreignKey;
$this->localKey = $localKey;
$this->joinType = $joinType;
$this->query = (new $model)->db();
}
/**
* 延迟获取关联数据
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包查询条件
* @return array|false|\PDOStatement|string|Model
*/
public function getRelation($subRelation = '', $closure = null)
{
// 执行关联定义方法
$localKey = $this->localKey;
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
}
// 判断关联类型执行查询
$relationModel = $this->query->where($this->foreignKey, $this->parent->$localKey)->relation($subRelation)->find();
if ($relationModel) {
$relationModel->setParent(clone $this->parent);
}
return $relationModel;
}
/**
* 根据关联条件查询当前模型
* @access public
* @return Query
*/
public function has()
{
$table = $this->query->getTable();
$model = basename(str_replace('\\', '/', get_class($this->parent)));
$relation = basename(str_replace('\\', '/', $this->model));
$localKey = $this->localKey;
$foreignKey = $this->foreignKey;
return $this->parent->db()
->alias($model)
->whereExists(function ($query) use ($table, $model, $relation, $localKey, $foreignKey) {
$query->table([$table => $relation])->field($relation . '.' . $foreignKey)->whereExp($model . '.' . $localKey, '=' . $relation . '.' . $foreignKey);
});
}
/**
* 根据关联条件查询当前模型
* @access public
* @param mixed $where 查询条件(数组或者闭包)
* @return Query
*/
public function hasWhere($where = [])
{
$table = $this->query->getTable();
$model = basename(str_replace('\\', '/', get_class($this->parent)));
$relation = basename(str_replace('\\', '/', $this->model));
if (is_array($where)) {
foreach ($where as $key => $val) {
if (false === strpos($key, '.')) {
$where[$relation . '.' . $key] = $val;
unset($where[$key]);
}
}
}
return $this->parent->db()->alias($model)
->field($model . '.*')
->join($table . ' ' . $relation, $model . '.' . $this->localKey . '=' . $relation . '.' . $this->foreignKey, $this->joinType)
->where($where);
}
/**
* 预载入关联查询(数据集)
* @access public
* @param array $resultSet 数据集
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
protected function eagerlySet(&$resultSet, $relation, $subRelation, $closure)
{
$localKey = $this->localKey;
$foreignKey = $this->foreignKey;
$range = [];
foreach ($resultSet as $result) {
// 获取关联外键列表
if (isset($result->$localKey)) {
$range[] = $result->$localKey;
}
}
if (!empty($range)) {
$data = $this->eagerlyWhere($this, [
$foreignKey => [
'in',
$range,
],
], $foreignKey, $relation, $subRelation, $closure);
// 关联属性名
$attr = Loader::parseName($relation);
// 关联数据封装
foreach ($resultSet as $result) {
// 关联模型
if (!isset($data[$result->$localKey])) {
$relationModel = null;
} else {
$relationModel = $data[$result->$localKey];
$relationModel->setParent(clone $result);
$relationModel->isUpdate(true);
}
if (!empty($this->bindAttr)) {
// 绑定关联属性
$this->bindAttr($relationModel, $result, $this->bindAttr);
} else {
// 设置关联属性
$result->setRelation($attr, $relationModel);
}
}
}
}
/**
* 预载入关联查询(数据)
* @access public
* @param Model $result 数据对象
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
protected function eagerlyOne(&$result, $relation, $subRelation, $closure)
{
$localKey = $this->localKey;
$foreignKey = $this->foreignKey;
$data = $this->eagerlyWhere($this, [$foreignKey => $result->$localKey], $foreignKey, $relation, $subRelation, $closure);
// 关联模型
if (!isset($data[$result->$localKey])) {
$relationModel = null;
} else {
$relationModel = $data[$result->$localKey];
$relationModel->setParent(clone $result);
$relationModel->isUpdate(true);
}
if (!empty($this->bindAttr)) {
// 绑定关联属性
$this->bindAttr($relationModel, $result, $this->bindAttr);
} else {
$result->setRelation(Loader::parseName($relation), $relationModel);
}
}
}

@ -0,0 +1,285 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think\model\relation;
use think\db\Query;
use think\Exception;
use think\Loader;
use think\Model;
use think\model\Relation;
class MorphMany extends Relation
{
// 多态字段
protected $morphKey;
protected $morphType;
// 多态类型
protected $type;
/**
* 构造函数
* @access public
* @param Model $parent 上级模型对象
* @param string $model 模型名
* @param string $morphKey 关联外键
* @param string $morphType 多态字段名
* @param string $type 多态类型
*/
public function __construct(Model $parent, $model, $morphKey, $morphType, $type)
{
$this->parent = $parent;
$this->model = $model;
$this->type = $type;
$this->morphKey = $morphKey;
$this->morphType = $morphType;
$this->query = (new $model)->db();
}
/**
* 延迟获取关联数据
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包查询条件
* @return false|\PDOStatement|string|\think\Collection
*/
public function getRelation($subRelation = '', $closure = null)
{
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
}
$list = $this->relation($subRelation)->select();
$parent = clone $this->parent;
foreach ($list as &$model) {
$model->setParent($parent);
}
return $list;
}
/**
* 根据关联条件查询当前模型
* @access public
* @param string $operator 比较操作符
* @param integer $count 个数
* @param string $id 关联表的统计字段
* @param string $joinType JOIN类型
* @return Query
*/
public function has($operator = '>=', $count = 1, $id = '*', $joinType = 'INNER')
{
throw new Exception('relation not support: has');
}
/**
* 根据关联条件查询当前模型
* @access public
* @param mixed $where 查询条件(数组或者闭包)
* @return Query
*/
public function hasWhere($where = [])
{
throw new Exception('relation not support: hasWhere');
}
/**
* 预载入关联查询
* @access public
* @param array $resultSet 数据集
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResultSet(&$resultSet, $relation, $subRelation, $closure)
{
$morphType = $this->morphType;
$morphKey = $this->morphKey;
$type = $this->type;
$range = [];
foreach ($resultSet as $result) {
$pk = $result->getPk();
// 获取关联外键列表
if (isset($result->$pk)) {
$range[] = $result->$pk;
}
}
if (!empty($range)) {
$data = $this->eagerlyMorphToMany([
$morphKey => ['in', $range],
$morphType => $type,
], $relation, $subRelation, $closure);
// 关联属性名
$attr = Loader::parseName($relation);
// 关联数据封装
foreach ($resultSet as $result) {
if (!isset($data[$result->$pk])) {
$data[$result->$pk] = [];
}
foreach ($data[$result->$pk] as &$relationModel) {
$relationModel->setParent(clone $result);
$relationModel->isUpdate(true);
}
$result->setRelation($attr, $this->resultSetBuild($data[$result->$pk]));
}
}
}
/**
* 预载入关联查询
* @access public
* @param Model $result 数据对象
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResult(&$result, $relation, $subRelation, $closure)
{
$pk = $result->getPk();
if (isset($result->$pk)) {
$data = $this->eagerlyMorphToMany([
$this->morphKey => $result->$pk,
$this->morphType => $this->type,
], $relation, $subRelation, $closure);
if (!isset($data[$result->$pk])) {
$data[$result->$pk] = [];
}
foreach ($data[$result->$pk] as &$relationModel) {
$relationModel->setParent(clone $result);
$relationModel->isUpdate(true);
}
$result->setRelation(Loader::parseName($relation), $this->resultSetBuild($data[$result->$pk]));
}
}
/**
* 关联统计
* @access public
* @param Model $result 数据对象
* @param \Closure $closure 闭包
* @return integer
*/
public function relationCount($result, $closure)
{
$pk = $result->getPk();
$count = 0;
if (isset($result->$pk)) {
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
}
$count = $this->query->where([$this->morphKey => $result->$pk, $this->morphType => $this->type])->count();
}
return $count;
}
/**
* 获取关联统计子查询
* @access public
* @param \Closure $closure 闭包
* @return string
*/
public function getRelationCountQuery($closure)
{
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
}
return $this->query->where([
$this->morphKey => [
'exp',
'=' . $this->parent->getTable() . '.' . $this->parent->getPk(),
],
$this->morphType => $this->type,
])->fetchSql()->count();
}
/**
* 多态一对多 关联模型预查询
* @access public
* @param array $where 关联预查询条件
* @param string $relation 关联名
* @param string $subRelation 子关联
* @param bool|\Closure $closure 闭包
* @return array
*/
protected function eagerlyMorphToMany($where, $relation, $subRelation = '', $closure = false)
{
// 预载入关联查询 支持嵌套预载入
if ($closure) {
call_user_func_array($closure, [ & $this]);
}
$list = $this->query->where($where)->with($subRelation)->select();
$morphKey = $this->morphKey;
// 组装模型数据
$data = [];
foreach ($list as $set) {
$data[$set->$morphKey][] = $set;
}
return $data;
}
/**
* 保存(新增)当前关联数据对象
* @access public
* @param mixed $data 数据 可以使用数组 关联模型对象 和 关联对象的主键
* @return Model|false
*/
public function save($data)
{
if ($data instanceof Model) {
$data = $data->getData();
}
// 保存关联表数据
$pk = $this->parent->getPk();
$model = new $this->model;
$data[$this->morphKey] = $this->parent->$pk;
$data[$this->morphType] = $this->type;
return $model->save($data) ? $model : false;
}
/**
* 批量保存当前关联数据对象
* @access public
* @param array $dataSet 数据集
* @return integer
*/
public function saveAll(array $dataSet)
{
$result = false;
foreach ($dataSet as $key => $data) {
$result = $this->save($data);
}
return $result;
}
/**
* 执行基础查询(进执行一次)
* @access protected
* @return void
*/
protected function baseQuery()
{
if (empty($this->baseQuery) && $this->parent->getData()) {
$pk = $this->parent->getPk();
$map[$this->morphKey] = $this->parent->$pk;
$map[$this->morphType] = $this->type;
$this->query->where($map);
$this->baseQuery = true;
}
}
}

@ -0,0 +1,229 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think\model\relation;
use think\db\Query;
use think\Exception;
use think\Loader;
use think\Model;
use think\model\Relation;
class MorphOne extends Relation
{
// 多态字段
protected $morphKey;
protected $morphType;
// 多态类型
protected $type;
/**
* 构造函数
* @access public
* @param Model $parent 上级模型对象
* @param string $model 模型名
* @param string $morphKey 关联外键
* @param string $morphType 多态字段名
* @param string $type 多态类型
*/
public function __construct(Model $parent, $model, $morphKey, $morphType, $type)
{
$this->parent = $parent;
$this->model = $model;
$this->type = $type;
$this->morphKey = $morphKey;
$this->morphType = $morphType;
$this->query = (new $model)->db();
}
/**
* 延迟获取关联数据
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包查询条件
* @return false|\PDOStatement|string|\think\Collection
*/
public function getRelation($subRelation = '', $closure = null)
{
if ($closure) {
call_user_func_array($closure, [ & $this->query]);
}
$relationModel = $this->relation($subRelation)->find();
if ($relationModel) {
$relationModel->setParent(clone $this->parent);
}
return $relationModel;
}
/**
* 根据关联条件查询当前模型
* @access public
* @param string $operator 比较操作符
* @param integer $count 个数
* @param string $id 关联表的统计字段
* @param string $joinType JOIN类型
* @return Query
*/
public function has($operator = '>=', $count = 1, $id = '*', $joinType = 'INNER')
{
return $this->parent;
}
/**
* 根据关联条件查询当前模型
* @access public
* @param mixed $where 查询条件(数组或者闭包)
* @return Query
*/
public function hasWhere($where = [])
{
throw new Exception('relation not support: hasWhere');
}
/**
* 预载入关联查询
* @access public
* @param array $resultSet 数据集
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResultSet(&$resultSet, $relation, $subRelation, $closure)
{
$morphType = $this->morphType;
$morphKey = $this->morphKey;
$type = $this->type;
$range = [];
foreach ($resultSet as $result) {
$pk = $result->getPk();
// 获取关联外键列表
if (isset($result->$pk)) {
$range[] = $result->$pk;
}
}
if (!empty($range)) {
$data = $this->eagerlyMorphToOne([
$morphKey => ['in', $range],
$morphType => $type,
], $relation, $subRelation, $closure);
// 关联属性名
$attr = Loader::parseName($relation);
// 关联数据封装
foreach ($resultSet as $result) {
if (!isset($data[$result->$pk])) {
$relationModel = null;
} else {
$relationModel = $data[$result->$pk];
$relationModel->setParent(clone $result);
$relationModel->isUpdate(true);
}
$result->setRelation($attr, $relationModel);
}
}
}
/**
* 预载入关联查询
* @access public
* @param Model $result 数据对象
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResult(&$result, $relation, $subRelation, $closure)
{
$pk = $result->getPk();
if (isset($result->$pk)) {
$pk = $result->$pk;
$data = $this->eagerlyMorphToOne([
$this->morphKey => $pk,
$this->morphType => $this->type,
], $relation, $subRelation, $closure);
if (isset($data[$pk])) {
$relationModel = $data[$pk];
$relationModel->setParent(clone $result);
$relationModel->isUpdate(true);
} else {
$relationModel = null;
}
$result->setRelation(Loader::parseName($relation), $relationModel);
}
}
/**
* 多态一对一 关联模型预查询
* @access public
* @param array $where 关联预查询条件
* @param string $relation 关联名
* @param string $subRelation 子关联
* @param bool|\Closure $closure 闭包
* @return array
*/
protected function eagerlyMorphToOne($where, $relation, $subRelation = '', $closure = false)
{
// 预载入关联查询 支持嵌套预载入
if ($closure) {
call_user_func_array($closure, [ & $this]);
}
$list = $this->query->where($where)->with($subRelation)->find();
$morphKey = $this->morphKey;
// 组装模型数据
$data = [];
foreach ($list as $set) {
$data[$set->$morphKey][] = $set;
}
return $data;
}
/**
* 保存(新增)当前关联数据对象
* @access public
* @param mixed $data 数据 可以使用数组 关联模型对象 和 关联对象的主键
* @return Model|false
*/
public function save($data)
{
if ($data instanceof Model) {
$data = $data->getData();
}
// 保存关联表数据
$pk = $this->parent->getPk();
$model = new $this->model;
$data[$this->morphKey] = $this->parent->$pk;
$data[$this->morphType] = $this->type;
return $model->save($data) ? $model : false;
}
/**
* 执行基础查询(进执行一次)
* @access protected
* @return void
*/
protected function baseQuery()
{
if (empty($this->baseQuery) && $this->parent->getData()) {
$pk = $this->parent->getPk();
$map[$this->morphKey] = $this->parent->$pk;
$map[$this->morphType] = $this->type;
$this->query->where($map);
$this->baseQuery = true;
}
}
}

@ -0,0 +1,275 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think\model\relation;
use think\Exception;
use think\Loader;
use think\Model;
use think\model\Relation;
class MorphTo extends Relation
{
// 多态字段
protected $morphKey;
protected $morphType;
// 多态别名
protected $alias;
protected $relation;
/**
* 构造函数
* @access public
* @param Model $parent 上级模型对象
* @param string $morphType 多态字段名
* @param string $morphKey 外键名
* @param array $alias 多态别名定义
* @param string $relation 关联名
*/
public function __construct(Model $parent, $morphType, $morphKey, $alias = [], $relation = null)
{
$this->parent = $parent;
$this->morphType = $morphType;
$this->morphKey = $morphKey;
$this->alias = $alias;
$this->relation = $relation;
}
/**
* 延迟获取关联数据
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包查询条件
* @return mixed
*/
public function getRelation($subRelation = '', $closure = null)
{
$morphKey = $this->morphKey;
$morphType = $this->morphType;
// 多态模型
$model = $this->parseModel($this->parent->$morphType);
// 主键数据
$pk = $this->parent->$morphKey;
$relationModel = (new $model)->relation($subRelation)->find($pk);
if ($relationModel) {
$relationModel->setParent(clone $this->parent);
}
return $relationModel;
}
/**
* 根据关联条件查询当前模型
* @access public
* @param string $operator 比较操作符
* @param integer $count 个数
* @param string $id 关联表的统计字段
* @param string $joinType JOIN类型
* @return Query
*/
public function has($operator = '>=', $count = 1, $id = '*', $joinType = 'INNER')
{
return $this->parent;
}
/**
* 根据关联条件查询当前模型
* @access public
* @param mixed $where 查询条件(数组或者闭包)
* @return Query
*/
public function hasWhere($where = [])
{
throw new Exception('relation not support: hasWhere');
}
/**
* 解析模型的完整命名空间
* @access public
* @param string $model 模型名(或者完整类名)
* @return string
*/
protected function parseModel($model)
{
if (isset($this->alias[$model])) {
$model = $this->alias[$model];
}
if (false === strpos($model, '\\')) {
$path = explode('\\', get_class($this->parent));
array_pop($path);
array_push($path, Loader::parseName($model, 1));
$model = implode('\\', $path);
}
return $model;
}
/**
* 设置多态别名
* @access public
* @param array $alias 别名定义
* @return $this
*/
public function setAlias($alias)
{
$this->alias = $alias;
return $this;
}
/**
* 移除关联查询参数
* @access public
* @return $this
*/
public function removeOption()
{
return $this;
}
/**
* 预载入关联查询
* @access public
* @param array $resultSet 数据集
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
* @throws Exception
*/
public function eagerlyResultSet(&$resultSet, $relation, $subRelation, $closure)
{
$morphKey = $this->morphKey;
$morphType = $this->morphType;
$range = [];
foreach ($resultSet as $result) {
// 获取关联外键列表
if (!empty($result->$morphKey)) {
$range[$result->$morphType][] = $result->$morphKey;
}
}
if (!empty($range)) {
// 关联属性名
$attr = Loader::parseName($relation);
foreach ($range as $key => $val) {
// 多态类型映射
$model = $this->parseModel($key);
$obj = new $model;
$pk = $obj->getPk();
$list = $obj->all($val, $subRelation);
$data = [];
foreach ($list as $k => $vo) {
$data[$vo->$pk] = $vo;
}
foreach ($resultSet as $result) {
if ($key == $result->$morphType) {
// 关联模型
if (!isset($data[$result->$morphKey])) {
throw new Exception('relation data not exists :' . $this->model);
} else {
$relationModel = $data[$result->$morphKey];
$relationModel->setParent(clone $result);
$relationModel->isUpdate(true);
$result->setRelation($attr, $relationModel);
}
}
}
}
}
}
/**
* 预载入关联查询
* @access public
* @param Model $result 数据对象
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResult(&$result, $relation, $subRelation, $closure)
{
$morphKey = $this->morphKey;
$morphType = $this->morphType;
// 多态类型映射
$model = $this->parseModel($result->{$this->morphType});
$this->eagerlyMorphToOne($model, $relation, $result, $subRelation);
}
/**
* 关联统计
* @access public
* @param Model $result 数据对象
* @param \Closure $closure 闭包
* @return integer
*/
public function relationCount($result, $closure)
{
}
/**
* 多态MorphTo 关联模型预查询
* @access public
* @param object $model 关联模型对象
* @param string $relation 关联名
* @param $result
* @param string $subRelation 子关联
* @return void
*/
protected function eagerlyMorphToOne($model, $relation, &$result, $subRelation = '')
{
// 预载入关联查询 支持嵌套预载入
$pk = $this->parent->{$this->morphKey};
$data = (new $model)->with($subRelation)->find($pk);
if ($data) {
$data->setParent(clone $result);
$data->isUpdate(true);
}
$result->setRelation(Loader::parseName($relation), $data ?: null);
}
/**
* 添加关联数据
* @access public
* @param Model $model 关联模型对象
* @param string $type 多态类型
* @return Model
*/
public function associate($model, $type = '')
{
$morphKey = $this->morphKey;
$morphType = $this->morphType;
$pk = $model->getPk();
$this->parent->setAttr($morphKey, $model->$pk);
$this->parent->setAttr($morphType, $type ?: get_class($model));
$this->parent->save();
return $this->parent->setRelation($this->relation, $model);
}
/**
* 注销关联数据
* @access public
* @return Model
*/
public function dissociate()
{
$morphKey = $this->morphKey;
$morphType = $this->morphType;
$this->parent->setAttr($morphKey, null);
$this->parent->setAttr($morphType, null);
$this->parent->save();
return $this->parent->setRelation($this->relation, null);
}
}

@ -0,0 +1,324 @@
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2017 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think\model\relation;
use think\db\Query;
use think\Exception;
use think\Loader;
use think\Model;
use think\model\Relation;
/**
* Class OneToOne
* @package think\model\relation
*
*/
abstract class OneToOne extends Relation
{
// 预载入方式 0 -JOIN 1 -IN
protected $eagerlyType = 1;
// 当前关联的JOIN类型
protected $joinType;
// 要绑定的属性
protected $bindAttr = [];
// 关联方法名
protected $relation;
/**
* 设置join类型
* @access public
* @param string $type JOIN类型
* @return $this
*/
public function joinType($type)
{
$this->joinType = $type;
return $this;
}
/**
* 预载入关联查询(JOIN方式)
* @access public
* @param Query $query 查询对象
* @param string $relation 关联名
* @param string $subRelation 子关联
* @param \Closure $closure 闭包条件
* @param bool $first
* @return void
*/
public function eagerly(Query $query, $relation, $subRelation, $closure, $first)
{
$name = Loader::parseName(basename(str_replace('\\', '/', $query->getModel())));
$alias = $name;
if ($first) {
$table = $query->getTable();
$query->table([$table => $alias]);
if ($query->getOptions('field')) {
$field = $query->getOptions('field');
$query->removeOption('field');
} else {
$field = true;
}
$query->field($field, false, $table, $alias);
$field = null;
}
// 预载入封装
$joinTable = $this->query->getTable();
$joinAlias = $relation;
$query->via($joinAlias);
if ($this instanceof BelongsTo) {
$query->join($joinTable . ' ' . $joinAlias, $alias . '.' . $this->foreignKey . '=' . $joinAlias . '.' . $this->localKey, $this->joinType);
} else {
$query->join($joinTable . ' ' . $joinAlias, $alias . '.' . $this->localKey . '=' . $joinAlias . '.' . $this->foreignKey, $this->joinType);
}
if ($closure) {
// 执行闭包查询
call_user_func_array($closure, [ & $query]);
// 使用withField指定获取关联的字段,如
// $query->where(['id'=>1])->withField('id,name');
if ($query->getOptions('with_field')) {
$field = $query->getOptions('with_field');
$query->removeOption('with_field');
}
} elseif (isset($this->option['field'])) {
$field = $this->option['field'];
}
$query->field(isset($field) ? $field : true, false, $joinTable, $joinAlias, $relation . '__');
}
/**
* 预载入关联查询(数据集)
* @param array $resultSet
* @param string $relation
* @param string $subRelation
* @param \Closure $closure
* @return mixed
*/
abstract protected function eagerlySet(&$resultSet, $relation, $subRelation, $closure);
/**
* 预载入关联查询(数据)
* @param Model $result
* @param string $relation
* @param string $subRelation
* @param \Closure $closure
* @return mixed
*/
abstract protected function eagerlyOne(&$result, $relation, $subRelation, $closure);
/**
* 预载入关联查询(数据集)
* @access public
* @param array $resultSet 数据集
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResultSet(&$resultSet, $relation, $subRelation, $closure)
{
if (1 == $this->eagerlyType) {
// IN查询
$this->eagerlySet($resultSet, $relation, $subRelation, $closure);
} else {
// 模型关联组装
foreach ($resultSet as $result) {
$this->match($this->model, $relation, $result);
}
}
}
/**
* 预载入关联查询(数据)
* @access public
* @param Model $result 数据对象
* @param string $relation 当前关联名
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @return void
*/
public function eagerlyResult(&$result, $relation, $subRelation, $closure)
{
if (1 == $this->eagerlyType) {
// IN查询
$this->eagerlyOne($result, $relation, $subRelation, $closure);
} else {
// 模型关联组装
$this->match($this->model, $relation, $result);
}
}
/**
* 保存(新增)当前关联数据对象
* @access public
* @param mixed $data 数据 可以使用数组 关联模型对象 和 关联对象的主键
* @return Model|false
*/
public function save($data)
{
if ($data instanceof Model) {
$data = $data->getData();
}
$model = new $this->model;
// 保存关联表数据
$data[$this->foreignKey] = $this->parent->{$this->localKey};
return $model->save($data) ? $model : false;
}
/**
* 设置预载入方式
* @access public
* @param integer $type 预载入方式 0 JOIN查询 1 IN查询
* @return $this
*/
public function setEagerlyType($type)
{
$this->eagerlyType = $type;
return $this;
}
/**
* 获取预载入方式
* @access public
* @return integer
*/
public function getEagerlyType()
{
return $this->eagerlyType;
}
/**
* 绑定关联表的属性到父模型属性
* @access public
* @param mixed $attr 要绑定的属性列表
* @return $this
*/
public function bind($attr)
{
if (is_string($attr)) {
$attr = explode(',', $attr);
}
$this->bindAttr = $attr;
return $this;
}
/**
* 获取绑定属性
* @access public
* @return array
*/
public function getBindAttr()
{
return $this->bindAttr;
}
/**
* 关联统计
* @access public
* @param Model $result 数据对象
* @param \Closure $closure 闭包
* @return integer
*/
public function relationCount($result, $closure)
{
}
/**
* 一对一 关联模型预查询拼装
* @access public
* @param string $model 模型名称
* @param string $relation 关联名
* @param Model $result 模型对象实例
* @return void
*/
protected function match($model, $relation, &$result)
{
// 重新组装模型数据
foreach ($result->getData() as $key => $val) {
if (strpos($key, '__')) {
list($name, $attr) = explode('__', $key, 2);
if ($name == $relation) {
$list[$name][$attr] = $val;
unset($result->$key);
}
}
}
if (isset($list[$relation])) {
$relationModel = new $model($list[$relation]);
$relationModel->setParent(clone $result);
$relationModel->isUpdate(true);
if (!empty($this->bindAttr)) {
$this->bindAttr($relationModel, $result, $this->bindAttr);
}
} else {
$relationModel = null;
}
$result->setRelation(Loader::parseName($relation), $relationModel);
}
/**
* 绑定关联属性到父模型
* @access protected
* @param Model $model 关联模型对象
* @param Model $result 父模型对象
* @param array $bindAttr 绑定属性
* @return void
* @throws Exception
*/
protected function bindAttr($model, &$result, $bindAttr)
{
foreach ($bindAttr as $key => $attr) {
$key = is_numeric($key) ? $attr : $key;
if (isset($result->$key)) {
throw new Exception('bind attr has exists:' . $key);
} else {
$result->setAttr($key, $model ? $model->$attr : null);
}
}
}
/**
* 一对一 关联模型预查询(IN方式)
* @access public
* @param object $model 关联模型对象
* @param array $where 关联预查询条件
* @param string $key 关联键名
* @param string $relation 关联名
* @param string $subRelation 子关联
* @param bool|\Closure $closure
* @return array
*/
protected function eagerlyWhere($model, $where, $key, $relation, $subRelation = '', $closure = false)
{
// 预载入关联查询 支持嵌套预载入
if ($closure) {
call_user_func_array($closure, [ & $model]);
if ($field = $model->getOptions('with_field')) {
$model->field($field)->removeOption('with_field');
}
}
$list = $model->where($where)->with($subRelation)->select();
// 组装模型数据
$data = [];
foreach ($list as $set) {
$data[$set->$key] = $set;
}
return $data;
}
}