From 81dcf814d1736d07b9045488a858557a812c3c70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=81=B0=E7=81=B0?= Date: Mon, 31 Oct 2022 05:28:16 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=BE=AE=E4=BF=A1=E6=89=AB=E7=A0=81=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=AF=B9=E6=8E=A5PC=E7=AB=AF?= =?UTF-8?q?=E3=80=82=20=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0DTO=E7=B1=BB=E5=BA=93=EF=BC=8C=E5=B0=86=E9=80=90?= =?UTF-8?q?=E6=AD=A5=E5=AE=8C=E5=96=84dto=E5=B1=82=E3=80=82=20=E3=80=90?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E3=80=91=E4=BF=AE=E5=A4=8D=E3=80=90=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E3=80=91=E5=88=87=E6=8D=A2=E5=90=8E=EF=BC=8C=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E5=9B=9E=E6=9D=A5=E6=9C=AA=E6=B8=85=E9=9B=B6=E5=8E=9F?= =?UTF-8?q?=E5=A7=8B=E6=95=B0=E6=8D=AE=EF=BC=8C=E5=AF=BC=E8=87=B4=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=95=B0=E6=8D=AE=E9=87=8D=E5=A4=8D=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82=20=E3=80=90=E8=B0=83=E6=95=B4=E3=80=91?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=A8=A1=E6=9D=BF=E5=BA=93=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E9=98=B2=E6=AD=A2=E5=87=BA=E7=8E=B0=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E6=A8=A1=E6=9D=BF=E5=BA=93=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E8=80=8C=E5=AF=BC=E8=87=B4=E7=9A=84=E5=AE=A1?= =?UTF-8?q?=E6=A0=B8=E5=A4=B1=E8=B4=A5=E3=80=82=E6=9A=82=E5=B0=86=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=BA=93=E7=9A=84=E4=BB=A3=E7=A0=81=E5=AD=98=E6=94=BE?= =?UTF-8?q?=E5=88=B0=E4=BC=9A=E5=91=98QQ=E7=BE=A4=E5=86=85=EF=BC=8C?= =?UTF-8?q?=E6=96=B9=E4=BE=BF=E4=B8=8B=E8=BD=BD=E4=BD=BF=E7=94=A8=E3=80=82?= =?UTF-8?q?=20=E3=80=90=E8=B0=83=E6=95=B4=E3=80=91=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=99=A8=E3=80=90Repository.tpl=E3=80=91?= =?UTF-8?q?=E7=A7=BB=E9=99=A4Cache=E6=89=8B=E5=8A=A8=E5=A2=9E=E5=88=A0?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E3=80=90SqlSugarSetup=E3=80=91=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0sqlsugar=E8=87=AA=E5=8A=A8=E6=A3=80=E6=B5=8B=E5=A2=9E?= =?UTF-8?q?=E5=88=A0=E6=94=B9=E5=90=8E=E6=B8=85=E7=90=86=E4=BA=8C=E7=BA=A7?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E3=80=82=20=E3=80=90=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E3=80=91=E5=90=8E=E7=AB=AF=E6=96=B0=E5=A2=9E=E7=A7=92=E6=9D=80?= =?UTF-8?q?=E7=8B=AC=E7=AB=8B=E7=BB=84=E4=BB=B6=EF=BC=8C=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E5=8C=BA=E5=88=86=E5=9B=A2=E8=B4=AD=E5=8F=8A=E7=A7=92=E6=9D=80?= =?UTF-8?q?=E7=9A=84=E5=B7=AE=E5=BC=82=EF=BC=8C=E9=A6=96=E9=A1=B5=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=A7=92=E6=9D=80=E7=BB=84=E4=BB=B6=E3=80=82=20?= =?UTF-8?q?=E3=80=90=E4=BC=98=E5=8C=96=E3=80=91=E9=87=8D=E5=86=99=E9=A6=96?= =?UTF-8?q?=E9=A1=B5=E6=89=80=E6=9C=89=E7=BB=84=E4=BB=B6=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E5=8F=8A=E6=8E=A5=E5=8F=A3=E6=95=B0=E6=8D=AE=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=95=88=E7=8E=87=E3=80=82=20=E3=80=90=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E4=BC=98=E5=8C=96=E6=8B=BC=E5=9B=A2=EF=BC=8C=E7=A7=92?= =?UTF-8?q?=E6=9D=80=EF=BC=8C=E5=9B=A2=E8=B4=AD=EF=BC=8C=E6=8E=A5=E9=BE=99?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E5=8D=87=E5=88=97=E8=A1=A8=E5=8F=8A=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE=E8=8E=B7=E5=8F=96=E6=95=88?= =?UTF-8?q?=E7=8E=87=E3=80=82=20=E3=80=90=E4=BC=98=E5=8C=96=E3=80=91?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=8B=BC=E5=9B=A2=EF=BC=8C=E7=A7=92=E6=9D=80?= =?UTF-8?q?=EF=BC=8C=E5=9B=A2=E8=B4=AD=EF=BC=8C=E6=9C=8D=E5=8A=A1=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=8E=A8=E5=B9=BF=E6=B5=B7=E6=8A=A5=E4=B8=BA=E6=96=B0?= =?UTF-8?q?=E5=BC=8F=E6=B5=B7=E6=8A=A5=E6=95=88=E6=9E=9C=E3=80=82=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=9C=8D=E5=8A=A1=E5=95=86=E5=93=81=E6=8E=A8=E5=B9=BF?= =?UTF-8?q?=E6=B5=B7=E6=8A=A5=E3=80=82=20=E3=80=90=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E6=B8=85=E7=90=86h5=E7=9B=B8=E5=85=B3=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=88=A4=E6=96=AD=EF=BC=8C=E7=A7=BB=E9=99=A4h5?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E7=BB=84=E4=BB=B6=EF=BC=8C=E6=8F=90=E9=AB=98?= =?UTF-8?q?=E5=93=8D=E5=BA=94=E9=80=9F=E5=BA=A6=E3=80=82=20=E3=80=90?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E3=80=91=E7=A7=BB=E9=99=A4=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E5=89=8D=E7=AB=AF=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=82=E5=8A=A0=E5=BF=AB=E4=BB=A3=E7=A0=81=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E6=95=88=E7=8E=87=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CrudTemplete/Repositories/Repository.tpl | 10 +- CoreCms.Net.Configuration/GlobalEnumVars.cs | 39 +- CoreCms.Net.Core/Config/SqlSugarSetup.cs | 7 +- CoreCms.Net.DTO/CoreCms.Net.DTO.csproj | 9 + CoreCms.Net.DTO/GroupPurchaseSeckillDTO.cs | 112 +++ CoreCms.Net.DTO/PinTuanListDTO.cs | 120 +++ .../Article/ICoreCmsArticleTypeRepository.cs | 38 +- .../CoreCms.Net.IRepository.csproj | 1 + .../Good/ICoreCmsGoodsRepository.cs | 13 + .../Pintuan/ICoreCmsPintuanRuleRepository.cs | 16 + .../Shop/ICoreCmsNoticeRepository.cs | 10 +- .../Article/ICoreCmsArticleTypeServices.cs | 35 +- .../CoreCms.Net.IServices.csproj | 1 + .../Good/ICoreCmsGoodsServices.cs | 16 +- .../Pintuan/ICoreCmsPintuanRuleServices.cs | 18 +- .../Promotion/ICoreCmsPromotionServices.cs | 4 +- .../Shop/ICoreCmsNoticeServices.cs | 10 +- .../Promotion/CoreCmsPromotionCondition.cs | 2 +- .../Promotion/CoreCmsPromotionResult.cs | 2 +- .../Service/CoreCmsServicesPartial.cs | 7 + CoreCms.Net.Model/FromBody/FMGroup.cs | 7 +- CoreCms.Net.Model/ViewModels/DTO/OrderDTO.cs | 4 +- CoreCms.Net.Model/ViewModels/DTO/UserDto.cs | 2 +- .../Agent/CoreCmsAgentGradeRepository.cs | 10 +- .../Api/CoreCmsPrinterRepository.cs | 6 +- .../Article/CoreCmsArticleTypeRepository.cs | 81 +- ...CoreCmsContinuousCheckInRulesRepository.cs | 8 +- .../CoreCmsDistributionGradeRepository.cs | 14 +- .../CoreCmsDistributionResultRepository.cs | 10 +- .../Good/CoreCmsGoodsCategoryRepository.cs | 6 +- .../Good/CoreCmsGoodsRepository.cs | 133 ++- .../Good/CoreCmsGoodsTypeSpecRepository.cs | 14 +- .../Order/CoreCmsOrderRepository.cs | 1 - .../Pintuan/CoreCmsPintuanRuleRepository.cs | 67 ++ .../Shop/CoreCmsAreaRepository.cs | 6 +- .../Shop/CoreCmsNoticeRepository.cs | 32 +- ...CoreCmsOrderDistributionModelRepository.cs | 6 +- .../CoreCmsServiceDescriptionRepository.cs | 6 +- .../CoreCmsSolitaireItemsRepository.cs | 8 +- .../System/SysMenuRepository.cs | 8 +- .../Article/CoreCmsArticleTypeServices.cs | 50 +- .../CoreCms.Net.Services.csproj | 1 + .../Good/CoreCmsGoodsServices.cs | 15 +- .../Order/CoreCmsOrderServices.cs | 1 + CoreCms.Net.Services/Pay/AliPayServices.cs | 3 +- CoreCms.Net.Services/Pay/WeChatPayServices.cs | 67 +- .../Pintuan/CoreCmsPintuanGoodsServices.cs | 6 +- .../Pintuan/CoreCmsPintuanRuleServices.cs | 70 +- .../Promotion/CoreCmsPromotionServices.cs | 141 +-- .../Share/CoreCmsShareServices.cs | 58 +- .../Shop/CoreCmsNoticeServices.cs | 12 +- .../Shop/CoreCmsPagesServices.cs | 918 +++++++++--------- CoreCms.Net.Uni-App/CoreShop/App.vue | 21 +- .../CoreShop/common/mixins/mixinsHelper.js | 33 +- .../CoreShop/common/request/http.api.js | 17 +- .../CoreShop/common/request/request.js | 8 +- .../common/setting/constVarsHelper.js | 61 +- .../common/setting/coreThemeHelper.js | 25 - .../CoreShop/common/utils/commonHelper.js | 73 -- .../coreshop-login-modal.vue | 2 +- .../coreshop-page/coreshop-article.vue | 55 +- .../coreshop-articleClassify.vue | 47 +- .../coreshop-page/coreshop-blank.vue | 13 +- .../coreshop-page/coreshop-content.vue | 9 - .../coreshop-page/coreshop-coupon.vue | 127 +-- .../coreshop-page/coreshop-goodTabBar.vue | 245 +++-- .../coreshop-page/coreshop-goods.vue | 198 ++-- .../coreshop-page/coreshop-groupPurchase.vue | 132 ++- .../coreshop-page/coreshop-imgSingle.vue | 24 +- .../coreshop-page/coreshop-imgSlide.vue | 24 +- .../coreshop-page/coreshop-imgWindow.vue | 59 +- .../coreshop-page/coreshop-navBar.vue | 13 +- .../coreshop-page/coreshop-notice.vue | 22 +- .../coreshop-page/coreshop-page.vue | 166 ++-- .../coreshop-page/coreshop-pinTuan.vue | 104 +- .../coreshop-page/coreshop-record.vue | 12 +- .../coreshop-page/coreshop-search.vue | 21 +- .../coreshop-page/coreshop-seckill.vue | 141 +++ .../coreshop-page/coreshop-serviceGood.vue | 125 +++ .../coreshop-page/coreshop-tabbar.vue | 9 - .../coreshop-page/coreshop-textarea.vue | 16 +- .../coreshop-page/coreshop-video.vue | 8 +- .../coreshop-share-h5/coreshop-share-h5.vue | 185 ---- .../coreshop-share-wx/coreshop-share-wx.vue | 65 +- .../components/fy-dropdown/fy-dropdown.vue | 11 +- CoreCms.Net.Uni-App/CoreShop/main.js | 4 - CoreCms.Net.Uni-App/CoreShop/manifest.json | 339 ++++--- CoreCms.Net.Uni-App/CoreShop/pages.json | 7 - .../activity/checkIn/checkIn/checkIn.vue | 2 +- .../groupBuyingDetails/groupBuyingDetails.vue | 50 +- .../pages/activity/groupBuying/list/list.vue | 115 ++- .../pages/activity/pinTuan/list/list.vue | 75 +- .../pinTuan/pinTuanDetails/details.scss | 7 +- .../pinTuan/pinTuanDetails/pinTuanDetails.vue | 194 ++-- .../pages/activity/seckill/list/list.vue | 144 ++- .../seckill/seckillDetails/seckillDetails.vue | 74 +- .../pages/activity/solitaire/list/list.vue | 11 +- .../solitaireDetails/solitaireDetails.vue | 53 +- .../pages/article/details/details.vue | 10 +- .../CoreShop/pages/category/index/index.scss | 2 +- .../CoreShop/pages/category/index/index.vue | 12 +- .../CoreShop/pages/category/list/list.vue | 16 +- .../CoreShop/pages/form/details/details.vue | 25 +- .../pages/goods/goodComments/goodComments.vue | 2 +- .../pages/goods/goodDetails/goodDetails.vue | 77 +- .../CoreShop/pages/index/cart/cart.vue | 4 +- .../CoreShop/pages/index/custom/custom.vue | 29 +- .../CoreShop/pages/index/default/default.vue | 19 +- .../CoreShop/pages/index/member/member.vue | 12 +- .../pages/login/loginBySMS/loginBySMS.vue | 4 +- .../pages/member/address/list/list.vue | 2 +- .../CoreShop/pages/member/address/map/map.vue | 28 +- .../pages/member/afterSales/list/list.vue | 2 +- .../pages/member/afterSales/submit/submit.vue | 2 +- .../pages/member/agent/myStore/myStore.vue | 45 +- .../pages/member/agent/panel/panel.vue | 32 +- .../member/balance/bankcard/bankcard.vue | 2 +- .../member/distribution/myStore/myStore.vue | 50 +- .../pages/member/distribution/panel/panel.vue | 33 +- .../CoreShop/pages/member/invite/index.vue | 90 +- .../pages/member/merchant/detail/detail.vue | 6 +- .../pages/member/merchant/index/index.vue | 11 - .../pages/member/merchant/search/index.vue | 8 +- .../merchant/serviceVerification/index.vue | 2 +- .../member/merchant/takeDelivery/index.vue | 2 +- .../member/merchant/takeDelivery/list.vue | 2 +- .../pages/member/order/detail/detail.scss | 1 + .../pages/member/order/detail/detail.vue | 34 +- .../pages/member/order/evaluate/evaluate.vue | 9 +- .../pages/member/order/index/index.vue | 5 +- .../order/invitationGroup/invitationGroup.vue | 26 +- .../pages/member/serviceOrder/index/index.vue | 2 +- .../CoreShop/pages/notice/details/details.vue | 10 +- .../components/coreshop-paymentsByApp.vue | 3 +- .../components/coreshop-paymentsByH5.vue | 334 ------- .../components/coreshop-paymentsByWx.vue | 9 +- .../CoreShop/pages/payment/pay/pay.vue | 21 +- .../pages/payment/waiting/waiting.scss | 6 - .../pages/payment/waiting/waiting.vue | 135 --- .../CoreShop/pages/placeOrder/index/index.vue | 15 +- .../pages/placeOrder/invoice/invoice.vue | 4 +- .../pages/placeOrder/storeList/storeList.vue | 6 +- .../pages/serviceGoods/details/details.vue | 173 +++- .../pages/serviceGoods/index/index.scss | 7 - .../pages/serviceGoods/index/index.vue | 88 +- .../CoreShop/pages/share/jump/jump.vue | 50 +- .../share/shareNewPoster/shareNewPoster.vue | 133 ++- .../pages/share/sharePoster/sharePoster.vue | 12 +- .../CoreShop/pages/storeMap/storeMap.scss | 2 +- .../CoreShop/static/style/coreCommon.scss | 9 +- .../style/{style.vue.scss => style.app.scss} | 27 + .../CoreShop/static/style/style.mp.scss | 22 +- .../CoreShop/static/style/tags.scss | 2 +- .../Article/CoreCmsArticleTypeController.cs | 20 +- .../Controllers/Com/ToolsController.cs | 4 +- CoreCms.Net.Web.Admin/appsettings.json | 2 +- .../wwwroot/lib/custom/css/style.css | 18 +- .../wwwroot/lib/custom/css/style.less | 2 +- .../wwwroot/lib/custom/css/style.min.css | 2 +- .../wwwroot/lib/custom/js/main.js | 63 +- .../wwwroot/lib/layuiAdmin/config.js | 2 +- .../wwwroot/lib/layuiAdmin/index.js | 2 +- .../wwwroot/views/common/getGroupIds.html | 6 +- .../wwwroot/views/common/getSeckillIds.html | 132 +++ .../wwwroot/views/shop/pages/design.html | 68 +- .../Controllers/GroupController.cs | 8 +- .../Controllers/OrderController.cs | 54 +- .../Controllers/PageController.cs | 54 +- .../Controllers/PinTuanController.cs | 4 +- .../Controllers/ServiceController.cs | 59 +- .../Controllers/StoreController.cs | 6 +- CoreCms.Net.Web.WebApi/appsettings.json | 2 +- CoreShopProfessional.sln | 11 +- 173 files changed, 4172 insertions(+), 3408 deletions(-) create mode 100644 CoreCms.Net.DTO/CoreCms.Net.DTO.csproj create mode 100644 CoreCms.Net.DTO/GroupPurchaseSeckillDTO.cs create mode 100644 CoreCms.Net.DTO/PinTuanListDTO.cs delete mode 100644 CoreCms.Net.Uni-App/CoreShop/common/setting/coreThemeHelper.js create mode 100644 CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-seckill.vue create mode 100644 CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-serviceGood.vue delete mode 100644 CoreCms.Net.Uni-App/CoreShop/components/coreshop-share-h5/coreshop-share-h5.vue delete mode 100644 CoreCms.Net.Uni-App/CoreShop/pages/payment/components/coreshop-paymentsByH5.vue delete mode 100644 CoreCms.Net.Uni-App/CoreShop/pages/payment/waiting/waiting.scss delete mode 100644 CoreCms.Net.Uni-App/CoreShop/pages/payment/waiting/waiting.vue delete mode 100644 CoreCms.Net.Uni-App/CoreShop/pages/serviceGoods/index/index.scss rename CoreCms.Net.Uni-App/CoreShop/static/style/{style.vue.scss => style.app.scss} (91%) create mode 100644 CoreCms.Net.Web.Admin/wwwroot/views/common/getSeckillIds.html diff --git a/CoreCms.Net.CodeGenerator/CrudTemplete/Repositories/Repository.tpl b/CoreCms.Net.CodeGenerator/CrudTemplete/Repositories/Repository.tpl index 7c67548a..1b2b795e 100644 --- a/CoreCms.Net.CodeGenerator/CrudTemplete/Repositories/Repository.tpl +++ b/CoreCms.Net.CodeGenerator/CrudTemplete/Repositories/Repository.tpl @@ -45,7 +45,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Insertable(entity).RemoveDataCache().ExecuteReturnIdentityAsync() > 0; + var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0; jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; @@ -71,7 +71,7 @@ namespace CoreCms.Net.Repository {% for field in ModelFields %}oldModel.{{field.DbColumnName}} = entity.{{field.DbColumnName}}; {% endfor %} //事物处理过程结束 - var bl = await DbClient.Updateable(oldModel).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; @@ -87,7 +87,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Updateable(entity).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(entity).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; @@ -103,7 +103,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable<{{ModelClassName}}>(id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable<{{ModelClassName}}>(id).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; @@ -119,7 +119,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable<{{ModelClassName}}>().In(ids).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable<{{ModelClassName}}>().In(ids).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; diff --git a/CoreCms.Net.Configuration/GlobalEnumVars.cs b/CoreCms.Net.Configuration/GlobalEnumVars.cs index 70e13a7e..b27df945 100644 --- a/CoreCms.Net.Configuration/GlobalEnumVars.cs +++ b/CoreCms.Net.Configuration/GlobalEnumVars.cs @@ -417,19 +417,19 @@ namespace CoreCms.Net.Configuration public enum OrderStatus { /// - /// 订单正常 + /// 进行中 /// - [Description("")] + [Description("")] Normal = 1, /// - /// 订单完成 + /// 已完结 /// - [Description("")] + [Description("")] Complete = 2, /// - /// 订单取消 + /// 已取消 /// - [Description("")] + [Description("")] Cancel = 3 } @@ -439,19 +439,19 @@ namespace CoreCms.Net.Configuration public enum OrderStatusDescription { /// - /// 订单正常 + /// 进行中 /// - [Description("正常(-)")] + [Description("进行中(-)")] Normal = 1, /// - /// 订单完成 + /// 已完结 /// - [Description("完成(√)")] + [Description("已完结(√)")] Complete = 2, /// - /// 订单取消 + /// 已取消 /// - [Description("取消(×)")] + [Description("已取消(×)")] Cancel = 3 } @@ -1696,15 +1696,15 @@ namespace CoreCms.Net.Configuration /// public enum WeiChatPayTradeType { - [Description("JSAPI")] + [Description("JSAPI(小程序支付)")] JSAPI = 1, - [Description("JSAPI_OFFICIAL")] + [Description("JSAPI_OFFICIAL(公众号支付)")] JSAPI_OFFICIAL = 2, - [Description("NATIVE")] + [Description("NATIVE(扫码支付)")] NATIVE = 3, - [Description("APP")] + [Description("APP(APP支付)")] APP = 4, - [Description("MWEB")] + [Description("MWEB(H5支付)")] MWEB = 5 } @@ -1944,6 +1944,11 @@ namespace CoreCms.Net.Configuration /// [Description("12接龙")] Solitaire = 12, + /// + /// 13服务商品 + /// + [Description("13服务商品")] + ServiceGoods = 13, } /// diff --git a/CoreCms.Net.Core/Config/SqlSugarSetup.cs b/CoreCms.Net.Core/Config/SqlSugarSetup.cs index 6cf727c0..0ee70a9c 100644 --- a/CoreCms.Net.Core/Config/SqlSugarSetup.cs +++ b/CoreCms.Net.Core/Config/SqlSugarSetup.cs @@ -39,7 +39,7 @@ namespace CoreCms.Net.Core.Config //判断数据库类型 DbType = AppSettingsConstVars.DbDbType == IocDbType.MySql.ToString() ? IocDbType.MySql : IocDbType.SqlServer, //是否开启自动关闭数据库连接 - IsAutoCloseConnection = true, + IsAutoCloseConnection = true }); //设置参数 @@ -51,6 +51,11 @@ namespace CoreCms.Net.Core.Config //判断是否开启redis设置二级缓存方式 DataInfoCacheService = AppSettingsConstVars.RedisUseCache ? (ICacheService)new SqlSugarRedisCache() : new SqlSugarMemoryCache() }; + db.CurrentConnectionConfig.MoreSettings = new ConnMoreSettings() + { + //所有 增、删 、改 会自动调用.RemoveDataCache()清理二级缓存 + IsAutoRemoveDataCache = true + }; //执行SQL 错误事件,可监控sql(暂时屏蔽,需要可开启) //db.Aop.OnLogExecuting = (sql, p) => diff --git a/CoreCms.Net.DTO/CoreCms.Net.DTO.csproj b/CoreCms.Net.DTO/CoreCms.Net.DTO.csproj new file mode 100644 index 00000000..132c02c5 --- /dev/null +++ b/CoreCms.Net.DTO/CoreCms.Net.DTO.csproj @@ -0,0 +1,9 @@ + + + + net6.0 + enable + enable + + + diff --git a/CoreCms.Net.DTO/GroupPurchaseSeckillDTO.cs b/CoreCms.Net.DTO/GroupPurchaseSeckillDTO.cs new file mode 100644 index 00000000..38691e7d --- /dev/null +++ b/CoreCms.Net.DTO/GroupPurchaseSeckillDTO.cs @@ -0,0 +1,112 @@ +using System.ComponentModel.DataAnnotations; + +namespace CoreCms.Net.DTO +{ + /// + /// 秒杀列表返回dto数据层 + /// + public class GroupPurchaseSeckillDTO + { + + /// + /// 序列 + /// + public System.Int32 id { get; set; } + /// + /// 促销名称 + /// + public System.String name { get; set; } + /// + /// 类型 + /// + public System.Int32 type { get; set; } + /// + /// 排序 + /// + public System.Int32 sort { get; set; } + /// + /// 每人限购数量 + /// + public System.Int32 maxNums { get; set; } + /// + /// 每个商品活动数量 + /// + public System.Int32 maxGoodsNums { get; set; } + /// + /// 最大领取数量 + /// + public System.Int32 maxRecevieNums { get; set; } + /// + /// 开始时间 + /// + public System.DateTime startTime { get; set; } + /// + /// 结束时间 + /// + public System.DateTime endTime { get; set; } + /// + /// 是否排他 + /// + public System.Boolean isExclusive { get; set; } + /// + /// 是否自动领取 + /// + public System.Boolean isAutoReceive { get; set; } + /// + /// 是否开启 + /// + public System.Boolean isEnable { get; set; } + /// + /// 有效天数 + /// + public System.Int32 effectiveDays { get; set; } + /// + /// 有效小时 + /// + public System.Int32 effectiveHours { get; set; } + /// + /// 倒计时 + /// + public System.Int32 timestamp { get; set; } + /// + /// 状态 + /// + public System.Int32 startStatus { get; set; } + /// + /// 商品描述 + /// + public string goodBrief { get; set; } + /// + /// 商品名称 + /// + public string goodName { get; set; } + /// + /// 商品缩略图 + /// + public string goodThumbnail { get; set; } + /// + /// 商品图集 + /// + public string goodImages { get; set; } + /// + /// 商品库存 + /// + public int goodStock { get; set; } + /// + /// 商品浏览量 + /// + public int goodViewCount { get; set; } + /// + /// 商品单位 + /// + public string goodUnit { get; set; } + /// + /// 商品市场价 + /// + public decimal mktPrice { get; set; } + /// + /// 商品价格 + /// + public decimal price { get; set; } + } +} \ No newline at end of file diff --git a/CoreCms.Net.DTO/PinTuanListDTO.cs b/CoreCms.Net.DTO/PinTuanListDTO.cs new file mode 100644 index 00000000..832969a7 --- /dev/null +++ b/CoreCms.Net.DTO/PinTuanListDTO.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace CoreCms.Net.DTO +{ + /// + /// 拼团列表返回 + /// + public class PinTuanListDTO + { + /// + /// 拼团序列 + /// + public System.Int32 id { get; set; } + + /// + /// 商品序列 + /// + public System.Int32 goodsId { get; set; } + + /// + /// 拼团排序 + /// + public System.Int32 sortId { get; set; } + + /// + /// 拼团名称 + /// + public string name { get; set; } + + /// + /// 拼团单数 + /// + public System.Int32 pinTuanRecordNums { get; set; } + + /// + /// 拼团销量 + /// + public System.Int32 buyPinTuanCount { get; set; } + + /// + /// 多少人团 + /// + public System.Int32 peopleNumber { get; set; } + + /// + /// 倒计时 + /// + public System.Int32 timestamp { get; set; } + + /// + /// 开始时间 + /// + public System.DateTime startTime { get; set; } + + /// + /// 结束时间 + /// + public System.DateTime endTime { get; set; } + + /// + /// 优惠金额 + /// + public System.Decimal discountAmount { get; set; } + /// + /// 每人限购数量 + /// + public System.Int32 maxNums { get; set; } + /// + /// 每个商品活动数量 + /// + public System.Int32 maxGoodsNums { get; set; } + + /// + /// 状态 + /// + public System.Int32 startStatus { get; set; } + /// + /// 商品描述 + /// + public string goodBrief { get; set; } + /// + /// 商品名称 + /// + public string goodName { get; set; } + /// + /// 商品缩略图 + /// + public string goodThumbnail { get; set; } + /// + /// 商品图集 + /// + public string goodImages { get; set; } + /// + /// 商品库存 + /// + public int goodStock { get; set; } + /// + /// 商品浏览量 + /// + public int goodViewCount { get; set; } + /// + /// 商品单位 + /// + public string goodUnit { get; set; } + /// + /// 商品市场价 + /// + public decimal mktPrice { get; set; } + /// + /// 拼团价格 + /// + public decimal pinTuanPrice { get; set; } + } +} diff --git a/CoreCms.Net.IRepository/Article/ICoreCmsArticleTypeRepository.cs b/CoreCms.Net.IRepository/Article/ICoreCmsArticleTypeRepository.cs index 26a9bd9c..67302658 100644 --- a/CoreCms.Net.IRepository/Article/ICoreCmsArticleTypeRepository.cs +++ b/CoreCms.Net.IRepository/Article/ICoreCmsArticleTypeRepository.cs @@ -4,19 +4,49 @@ * Web: https://www.corecms.net * Author: 大灰灰 * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 + * CreateTime: 2022/10/24 3:54:14 * Description: 暂无 ***********************************************************************/ - +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Threading.Tasks; using CoreCms.Net.Model.Entities; +using CoreCms.Net.Model.ViewModels.Basics; +using CoreCms.Net.Model.ViewModels.UI; +using SqlSugar; + namespace CoreCms.Net.IRepository { /// - /// 文章分类表 工厂接口 + /// 文章分类表 工厂接口 /// public interface ICoreCmsArticleTypeRepository : IBaseRepository { + + /// + /// 重写异步插入方法 + /// + /// + /// + Task InsertAsync(CoreCmsArticleType entity); + + + /// + /// 重写异步更新方法 + /// + /// + /// + Task UpdateAsync(CoreCmsArticleType entity); + + /// + /// 重写删除指定ID的数据 + /// + /// + /// + Task DeleteByIdAsync(object id); + } -} \ No newline at end of file +} diff --git a/CoreCms.Net.IRepository/CoreCms.Net.IRepository.csproj b/CoreCms.Net.IRepository/CoreCms.Net.IRepository.csproj index 656d6675..fe8ae3d8 100644 --- a/CoreCms.Net.IRepository/CoreCms.Net.IRepository.csproj +++ b/CoreCms.Net.IRepository/CoreCms.Net.IRepository.csproj @@ -5,6 +5,7 @@ + diff --git a/CoreCms.Net.IRepository/Good/ICoreCmsGoodsRepository.cs b/CoreCms.Net.IRepository/Good/ICoreCmsGoodsRepository.cs index f5982ed3..1ebf7237 100644 --- a/CoreCms.Net.IRepository/Good/ICoreCmsGoodsRepository.cs +++ b/CoreCms.Net.IRepository/Good/ICoreCmsGoodsRepository.cs @@ -170,5 +170,18 @@ namespace CoreCms.Net.IRepository /// /// Task> QueryEnumEntityAsync(); + + + /// + /// 获取商品及默认货品信息 + /// + /// + /// + /// + /// 是否使用WITH(NOLOCK) + /// + Task> QueryGoodWithDefaultProductAsync(Expression> predicate, + Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false); + } } \ No newline at end of file diff --git a/CoreCms.Net.IRepository/Pintuan/ICoreCmsPintuanRuleRepository.cs b/CoreCms.Net.IRepository/Pintuan/ICoreCmsPintuanRuleRepository.cs index 525f5050..07e656e0 100644 --- a/CoreCms.Net.IRepository/Pintuan/ICoreCmsPintuanRuleRepository.cs +++ b/CoreCms.Net.IRepository/Pintuan/ICoreCmsPintuanRuleRepository.cs @@ -12,6 +12,7 @@ using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Threading.Tasks; +using CoreCms.Net.DTO; using CoreCms.Net.Model.Entities; using CoreCms.Net.Model.ViewModels.Basics; using CoreCms.Net.Model.ViewModels.DTO; @@ -53,5 +54,20 @@ namespace CoreCms.Net.IRepository /// 规则序列 /// Task GetPinTuanInfo(int ruleId); + + + /// + /// 根据规则ID数组获取拼团相关信息 + /// + /// 规则序列 + /// + /// + /// + /// + /// + Task> GetPinTuanInfos(int[] ruleIds, + Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, + int pageSize = 20); + } } \ No newline at end of file diff --git a/CoreCms.Net.IRepository/Shop/ICoreCmsNoticeRepository.cs b/CoreCms.Net.IRepository/Shop/ICoreCmsNoticeRepository.cs index 320e77ff..1572ee58 100644 --- a/CoreCms.Net.IRepository/Shop/ICoreCmsNoticeRepository.cs +++ b/CoreCms.Net.IRepository/Shop/ICoreCmsNoticeRepository.cs @@ -38,16 +38,10 @@ namespace CoreCms.Net.IRepository /// - /// 获取列表首页用 + /// 获取首页组件数据 /// /// 判断集合 - /// 排序方式 - /// 当前页面索引 - /// 分布大小 - /// /// - Task> QueryListAsync(Expression> predicate, - Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, - int pageSize = 20); + Task> QueryComponentAsync(Expression> predicate); } } \ No newline at end of file diff --git a/CoreCms.Net.IServices/Article/ICoreCmsArticleTypeServices.cs b/CoreCms.Net.IServices/Article/ICoreCmsArticleTypeServices.cs index 63484665..d5c7e316 100644 --- a/CoreCms.Net.IServices/Article/ICoreCmsArticleTypeServices.cs +++ b/CoreCms.Net.IServices/Article/ICoreCmsArticleTypeServices.cs @@ -4,18 +4,47 @@ * Web: https://www.corecms.net * Author: 大灰灰 * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 + * CreateTime: 2022/10/24 3:54:14 * Description: 暂无 ***********************************************************************/ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Threading.Tasks; using CoreCms.Net.Model.Entities; +using CoreCms.Net.Model.ViewModels.Basics; +using CoreCms.Net.Model.ViewModels.UI; +using SqlSugar; namespace CoreCms.Net.IServices { /// - /// 文章分类表 服务工厂接口 + /// 文章分类表 服务工厂接口 /// public interface ICoreCmsArticleTypeServices : IBaseServices { + + /// + /// 重写异步插入方法 + /// + /// + /// + Task InsertAsync(CoreCmsArticleType entity); + + /// + /// 重写异步更新方法 + /// + /// + /// + Task UpdateAsync(CoreCmsArticleType entity); + + /// + /// 重写删除指定ID的数据 + /// + /// + /// + Task DeleteByIdAsync(object id); + } -} \ No newline at end of file +} diff --git a/CoreCms.Net.IServices/CoreCms.Net.IServices.csproj b/CoreCms.Net.IServices/CoreCms.Net.IServices.csproj index 63b74790..44769607 100644 --- a/CoreCms.Net.IServices/CoreCms.Net.IServices.csproj +++ b/CoreCms.Net.IServices/CoreCms.Net.IServices.csproj @@ -10,6 +10,7 @@ + diff --git a/CoreCms.Net.IServices/Good/ICoreCmsGoodsServices.cs b/CoreCms.Net.IServices/Good/ICoreCmsGoodsServices.cs index 8fb5452b..91cd455e 100644 --- a/CoreCms.Net.IServices/Good/ICoreCmsGoodsServices.cs +++ b/CoreCms.Net.IServices/Good/ICoreCmsGoodsServices.cs @@ -114,8 +114,7 @@ namespace CoreCms.Net.IServices /// /// /// - Task GetGoodsDetail(int id, int userId = 0, bool isPromotion = false, string type = "goods", - int groupId = 0, bool needSku = false); + Task GetGoodsDetail(int id, int userId = 0, bool isPromotion = false, string type = "goods", int groupId = 0, bool needSku = false); /// /// 通过商品序列获取sku列表 @@ -263,5 +262,18 @@ namespace CoreCms.Net.IServices Task DeleteByIdsAsync(int[] ids); #endregion + + + /// + /// 获取商品及默认货品信息 + /// + /// + /// + /// + /// 是否使用WITH(NOLOCK) + /// + Task> QueryGoodWithDefaultProductAsync(Expression> predicate, + Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false); + } } \ No newline at end of file diff --git a/CoreCms.Net.IServices/Pintuan/ICoreCmsPintuanRuleServices.cs b/CoreCms.Net.IServices/Pintuan/ICoreCmsPintuanRuleServices.cs index 833cc47f..1195bb9c 100644 --- a/CoreCms.Net.IServices/Pintuan/ICoreCmsPintuanRuleServices.cs +++ b/CoreCms.Net.IServices/Pintuan/ICoreCmsPintuanRuleServices.cs @@ -12,6 +12,7 @@ using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Threading.Tasks; +using CoreCms.Net.DTO; using CoreCms.Net.Model.Entities; using CoreCms.Net.Model.ViewModels.Basics; using CoreCms.Net.Model.ViewModels.DTO; @@ -37,7 +38,7 @@ namespace CoreCms.Net.IServices /// 接口上获取拼团所有商品 /// /// - Task GetPinTuanList(int userId = 0); + Task GetPinTuanList(int userId = 0, int pageIndex = 1, int pageSize = 20); /// @@ -60,5 +61,20 @@ namespace CoreCms.Net.IServices /// 规则序列 /// Task GetPinTuanInfo(int ruleId); + + + + /// + /// 根据规则ID数组获取拼团相关信息 + /// + /// 规则序列 + /// + /// + /// + /// + /// + Task> GetPinTuanInfos(int[] ruleIds, + Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, + int pageSize = 20); } } \ No newline at end of file diff --git a/CoreCms.Net.IServices/Promotion/ICoreCmsPromotionServices.cs b/CoreCms.Net.IServices/Promotion/ICoreCmsPromotionServices.cs index 82cf3874..98c7bf67 100644 --- a/CoreCms.Net.IServices/Promotion/ICoreCmsPromotionServices.cs +++ b/CoreCms.Net.IServices/Promotion/ICoreCmsPromotionServices.cs @@ -51,13 +51,13 @@ namespace CoreCms.Net.IServices /// 获取团购列表数据 /// /// - Task GetGroupList(int type, int userId, int status, int pageIndex, int pageSize); + Task GetGroupList(int type, int status, int pageIndex, int pageSize); /// /// 获取团购/秒杀商品详情 /// /// - Task GetGroupDetail(int goodId = 0, int userId = 0, int type = (int)GlobalEnumVars.PromotionType.Group, int groupId = 0, bool needSku = false); + Task GetGroupDetail(int goodId, int userId, int type, bool needSku); /// /// 获取可领取的优惠券 diff --git a/CoreCms.Net.IServices/Shop/ICoreCmsNoticeServices.cs b/CoreCms.Net.IServices/Shop/ICoreCmsNoticeServices.cs index 3389cab3..2fa88129 100644 --- a/CoreCms.Net.IServices/Shop/ICoreCmsNoticeServices.cs +++ b/CoreCms.Net.IServices/Shop/ICoreCmsNoticeServices.cs @@ -38,16 +38,10 @@ namespace CoreCms.Net.IServices /// - /// 获取列表首页用 + /// 获取首页组件数据 /// /// 判断集合 - /// 排序方式 - /// 当前页面索引 - /// 分布大小 - /// /// - Task> QueryListAsync(Expression> predicate, - Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, - int pageSize = 20); + Task> QueryComponentAsync(Expression> predicate); } } \ No newline at end of file diff --git a/CoreCms.Net.Model/Entities/Promotion/CoreCmsPromotionCondition.cs b/CoreCms.Net.Model/Entities/Promotion/CoreCmsPromotionCondition.cs index 8b0f85ef..59958b4c 100644 --- a/CoreCms.Net.Model/Entities/Promotion/CoreCmsPromotionCondition.cs +++ b/CoreCms.Net.Model/Entities/Promotion/CoreCmsPromotionCondition.cs @@ -37,7 +37,7 @@ namespace CoreCms.Net.Model.Entities /// [Display(Name = "促销ID")] [SugarColumn(ColumnDescription = "促销ID", IsNullable = true)] - public System.Int32? promotionId { get; set; } + public System.Int32 promotionId { get; set; } /// /// 促销条件编码 /// diff --git a/CoreCms.Net.Model/Entities/Promotion/CoreCmsPromotionResult.cs b/CoreCms.Net.Model/Entities/Promotion/CoreCmsPromotionResult.cs index 07ef6c88..e49bb1b9 100644 --- a/CoreCms.Net.Model/Entities/Promotion/CoreCmsPromotionResult.cs +++ b/CoreCms.Net.Model/Entities/Promotion/CoreCmsPromotionResult.cs @@ -37,7 +37,7 @@ namespace CoreCms.Net.Model.Entities /// [Display(Name = "促销ID")] [SugarColumn(ColumnDescription = "促销ID", IsNullable = true)] - public System.Int32? promotionId { get; set; } + public System.Int32 promotionId { get; set; } /// /// 促销条件编码 /// diff --git a/CoreCms.Net.Model/Entities/Service/CoreCmsServicesPartial.cs b/CoreCms.Net.Model/Entities/Service/CoreCmsServicesPartial.cs index db0469d8..fb8fb9c7 100644 --- a/CoreCms.Net.Model/Entities/Service/CoreCmsServicesPartial.cs +++ b/CoreCms.Net.Model/Entities/Service/CoreCmsServicesPartial.cs @@ -26,6 +26,13 @@ namespace CoreCms.Net.Model.Entities [SugarColumn(IsIgnore = true)] public int timestamp { get; set; } = 0; + /// + /// 开启状态 + /// + [Display(Name = "开启状态")] + [SugarColumn(IsIgnore = true)] + public int openStatus { get; set; } = 0; + /// /// 允许购买用户等级 /// diff --git a/CoreCms.Net.Model/FromBody/FMGroup.cs b/CoreCms.Net.Model/FromBody/FMGroup.cs index 7ddb55fc..baf81090 100644 --- a/CoreCms.Net.Model/FromBody/FMGroup.cs +++ b/CoreCms.Net.Model/FromBody/FMGroup.cs @@ -38,17 +38,16 @@ namespace CoreCms.Net.Model.FromBody public int status { get; set; } = 0; } + /// + /// 获取团购秒杀商品详情 + /// public class FMGetGoodsDetial { public int id { get; set; } - public int groupId { get; set; } public int type { get; set; } public bool needSku { get; set; } = false; - - - } } \ No newline at end of file diff --git a/CoreCms.Net.Model/ViewModels/DTO/OrderDTO.cs b/CoreCms.Net.Model/ViewModels/DTO/OrderDTO.cs index 68fc9ed3..09b38065 100644 --- a/CoreCms.Net.Model/ViewModels/DTO/OrderDTO.cs +++ b/CoreCms.Net.Model/ViewModels/DTO/OrderDTO.cs @@ -54,7 +54,7 @@ namespace CoreCms.Net.Model.ViewModels.DTO public int areaId { get; set; } /// - /// 购物车货品数据 + /// 购物车序列 /// public string cartIds { get; set; } @@ -109,7 +109,7 @@ namespace CoreCms.Net.Model.ViewModels.DTO public int storeId { get; set; } = 0; /// - /// 订单类型,1是普通订单,2是拼团订单 + /// 订单类型[对应CoreCmsOrder表orderType字段]/也对应购物车cart订单类型 /// public int orderType { get; set; } = 1; diff --git a/CoreCms.Net.Model/ViewModels/DTO/UserDto.cs b/CoreCms.Net.Model/ViewModels/DTO/UserDto.cs index 62a59b2a..0612bdcd 100644 --- a/CoreCms.Net.Model/ViewModels/DTO/UserDto.cs +++ b/CoreCms.Net.Model/ViewModels/DTO/UserDto.cs @@ -38,7 +38,7 @@ namespace CoreCms.Net.Model.ViewModels.DTO public decimal orderMoney { get; set; } /// - /// 购物车货品序列号 + /// 购物车序列号 /// public string ids { get; set; } diff --git a/CoreCms.Net.Repository/Agent/CoreCmsAgentGradeRepository.cs b/CoreCms.Net.Repository/Agent/CoreCmsAgentGradeRepository.cs index 8cf783a4..cda8e82e 100644 --- a/CoreCms.Net.Repository/Agent/CoreCmsAgentGradeRepository.cs +++ b/CoreCms.Net.Repository/Agent/CoreCmsAgentGradeRepository.cs @@ -49,7 +49,7 @@ namespace CoreCms.Net.Repository return jm; } - var id = await DbClient.Insertable(entity).RemoveDataCache().ExecuteReturnIdentityAsync(); + var id = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync(); var bl = id > 0; jm.code = bl ? 0 : 1; @@ -58,7 +58,7 @@ namespace CoreCms.Net.Repository { if (entity.isDefault) { - await DbClient.Updateable().SetColumns(p => p.isDefault == false).Where(p => p.isDefault == true && p.id != id).RemoveDataCache().ExecuteCommandAsync(); + await DbClient.Updateable().SetColumns(p => p.isDefault == false).Where(p => p.isDefault == true && p.id != id).ExecuteCommandAsync(); } } return jm; @@ -106,7 +106,7 @@ namespace CoreCms.Net.Repository oldModel.description = entity.description; //事物处理过程结束 - var bl = await DbClient.Updateable(oldModel).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; if (bl) @@ -114,7 +114,7 @@ namespace CoreCms.Net.Repository //其他处理 if (entity.isDefault) { - await DbClient.Updateable().SetColumns(it => it.isDefault == false).Where(p => p.isDefault == true && p.id != entity.id).RemoveDataCache().ExecuteCommandAsync(); + await DbClient.Updateable().SetColumns(it => it.isDefault == false).Where(p => p.isDefault == true && p.id != entity.id).ExecuteCommandAsync(); } } @@ -141,7 +141,7 @@ namespace CoreCms.Net.Repository jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; if (bl) { - await DbClient.Deleteable().Where(p => p.agentGradeId == id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + await DbClient.Deleteable().Where(p => p.agentGradeId == id).ExecuteCommandHasChangeAsync(); } return jm; } diff --git a/CoreCms.Net.Repository/Api/CoreCmsPrinterRepository.cs b/CoreCms.Net.Repository/Api/CoreCmsPrinterRepository.cs index b51aff62..3ad064c8 100644 --- a/CoreCms.Net.Repository/Api/CoreCmsPrinterRepository.cs +++ b/CoreCms.Net.Repository/Api/CoreCmsPrinterRepository.cs @@ -45,7 +45,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); entity.createTime = DateTime.Now; - var bl = await DbClient.Insertable(entity).RemoveDataCache().ExecuteReturnIdentityAsync() > 0; + var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0; jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; @@ -88,7 +88,7 @@ namespace CoreCms.Net.Repository oldModel.storeId = entity.storeId; //事物处理过程结束 - var bl = await DbClient.Updateable(oldModel).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; @@ -104,7 +104,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable(id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; diff --git a/CoreCms.Net.Repository/Article/CoreCmsArticleTypeRepository.cs b/CoreCms.Net.Repository/Article/CoreCmsArticleTypeRepository.cs index 8aa4865d..464cb0ad 100644 --- a/CoreCms.Net.Repository/Article/CoreCmsArticleTypeRepository.cs +++ b/CoreCms.Net.Repository/Article/CoreCmsArticleTypeRepository.cs @@ -4,23 +4,96 @@ * Web: https://www.corecms.net * Author: 大灰灰 * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 + * CreateTime: 2022/10/24 3:54:14 * Description: 暂无 ***********************************************************************/ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Threading.Tasks; +using CoreCms.Net.Caching.Manual; +using CoreCms.Net.Configuration; +using CoreCms.Net.Model.Entities; +using CoreCms.Net.Model.ViewModels.Basics; using CoreCms.Net.IRepository; using CoreCms.Net.IRepository.UnitOfWork; -using CoreCms.Net.Model.Entities; +using CoreCms.Net.Model.ViewModels.UI; +using SqlSugar; namespace CoreCms.Net.Repository { /// - /// 文章分类表 接口实现 + /// 文章分类表 接口实现 /// public class CoreCmsArticleTypeRepository : BaseRepository, ICoreCmsArticleTypeRepository { + private readonly IUnitOfWork _unitOfWork; public CoreCmsArticleTypeRepository(IUnitOfWork unitOfWork) : base(unitOfWork) { + _unitOfWork = unitOfWork; } + + /// + /// 重写异步插入方法 + /// + /// 实体数据 + /// + public async Task InsertAsync(CoreCmsArticleType entity) + { + var jm = new AdminUiCallBack(); + + var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0; + jm.code = bl ? 0 : 1; + jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; + + return jm; + } + + /// + /// 重写异步更新方法 + /// + /// + /// + public async Task UpdateAsync(CoreCmsArticleType entity) + { + var jm = new AdminUiCallBack(); + + var oldModel = await DbClient.Queryable().In(entity.id).SingleAsync(); + if (oldModel == null) + { + jm.msg = "不存在此信息"; + return jm; + } + //事物处理过程开始 + //oldModel.id = entity.id; + oldModel.name = entity.name; + oldModel.parentId = entity.parentId; + oldModel.sort = entity.sort; + + //事物处理过程结束 + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); + jm.code = bl ? 0 : 1; + jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; + + return jm; + } + + /// + /// 重写删除指定ID的数据 + /// + /// + /// + public async Task DeleteByIdAsync(object id) + { + var jm = new AdminUiCallBack(); + + var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync(); + jm.code = bl ? 0 : 1; + jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; + + return jm; + } + } -} \ No newline at end of file +} diff --git a/CoreCms.Net.Repository/CheckIn/CoreCmsContinuousCheckInRulesRepository.cs b/CoreCms.Net.Repository/CheckIn/CoreCmsContinuousCheckInRulesRepository.cs index aa724d09..adf5468d 100644 --- a/CoreCms.Net.Repository/CheckIn/CoreCmsContinuousCheckInRulesRepository.cs +++ b/CoreCms.Net.Repository/CheckIn/CoreCmsContinuousCheckInRulesRepository.cs @@ -66,8 +66,8 @@ namespace CoreCms.Net.Repository _unitOfWork.BeginTran(); //先清理掉数据,因为是配置数据,可直接删除添加新的 - await DbClient.Deleteable().Where(p => p.id > 0).RemoveDataCache().ExecuteCommandAsync(); - await DbClient.Deleteable().Where(p => p.id > 0).RemoveDataCache().ExecuteCommandAsync(); + await DbClient.Deleteable().Where(p => p.id > 0).ExecuteCommandAsync(); + await DbClient.Deleteable().Where(p => p.id > 0).ExecuteCommandAsync(); //遍历数据存值 foreach (var item in entity) @@ -77,13 +77,13 @@ namespace CoreCms.Net.Repository days = item.days }; - var id = await DbClient.Insertable(continuous).RemoveDataCache().ExecuteReturnIdentityAsync(); + var id = await DbClient.Insertable(continuous).ExecuteReturnIdentityAsync(); if (id <= 0) continue; foreach (var detail in item.details) { detail.ruleId = id; } - await DbClient.Insertable(item.details).RemoveDataCache().ExecuteReturnIdentityAsync(); + await DbClient.Insertable(item.details).ExecuteReturnIdentityAsync(); } _unitOfWork.CommitTran(); diff --git a/CoreCms.Net.Repository/Distribution/CoreCmsDistributionGradeRepository.cs b/CoreCms.Net.Repository/Distribution/CoreCmsDistributionGradeRepository.cs index 3b45eb7e..d2b568af 100644 --- a/CoreCms.Net.Repository/Distribution/CoreCmsDistributionGradeRepository.cs +++ b/CoreCms.Net.Repository/Distribution/CoreCmsDistributionGradeRepository.cs @@ -49,7 +49,7 @@ namespace CoreCms.Net.Repository return jm; } - var id = await DbClient.Insertable(entity).RemoveDataCache().ExecuteReturnIdentityAsync(); + var id = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync(); var bl = id > 0; jm.code = bl ? 0 : 1; @@ -58,7 +58,7 @@ namespace CoreCms.Net.Repository { if (entity.isDefault == true) { - await DbClient.Updateable().SetColumns(p => p.isDefault == false).Where(p => p.isDefault == true && p.id != id).RemoveDataCache().ExecuteCommandAsync(); + await DbClient.Updateable().SetColumns(p => p.isDefault == false).Where(p => p.isDefault == true && p.id != id).ExecuteCommandAsync(); } } return jm; @@ -103,7 +103,7 @@ namespace CoreCms.Net.Repository oldModel.description = entity.description; //事物处理过程结束 - var bl = await DbClient.Updateable(oldModel).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; if (bl) @@ -111,7 +111,7 @@ namespace CoreCms.Net.Repository //其他处理 if (entity.isDefault) { - await DbClient.Updateable().SetColumns(it => it.isDefault == false).Where(p => p.isDefault == true && p.id != entity.id).RemoveDataCache().ExecuteCommandAsync(); + await DbClient.Updateable().SetColumns(it => it.isDefault == false).Where(p => p.isDefault == true && p.id != entity.id).ExecuteCommandAsync(); } } @@ -133,13 +133,13 @@ namespace CoreCms.Net.Repository jm.msg = "存在关联的分销用户数据,禁止删除"; return jm; } - var bl = await DbClient.Deleteable(id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; if (bl) { - await DbClient.Deleteable().Where(p => p.gradeId == id).RemoveDataCache().ExecuteCommandAsync(); - await DbClient.Deleteable().Where(p => p.gradeId == id).RemoveDataCache().ExecuteCommandAsync(); + await DbClient.Deleteable().Where(p => p.gradeId == id).ExecuteCommandAsync(); + await DbClient.Deleteable().Where(p => p.gradeId == id).ExecuteCommandAsync(); } return jm; diff --git a/CoreCms.Net.Repository/Distribution/CoreCmsDistributionResultRepository.cs b/CoreCms.Net.Repository/Distribution/CoreCmsDistributionResultRepository.cs index d5069806..ac8b24db 100644 --- a/CoreCms.Net.Repository/Distribution/CoreCmsDistributionResultRepository.cs +++ b/CoreCms.Net.Repository/Distribution/CoreCmsDistributionResultRepository.cs @@ -49,7 +49,7 @@ namespace CoreCms.Net.Repository return jm; } - var bl = await DbClient.Insertable(entity).RemoveDataCache().ExecuteReturnIdentityAsync() > 0; + var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0; jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; @@ -84,7 +84,7 @@ namespace CoreCms.Net.Repository oldModel.parameters = entity.parameters; //事物处理过程结束 - var bl = await DbClient.Updateable(oldModel).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; return jm; @@ -99,7 +99,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Updateable(entity).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(entity).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; @@ -115,7 +115,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable(id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; @@ -131,7 +131,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable().In(ids).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable().In(ids).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; diff --git a/CoreCms.Net.Repository/Good/CoreCmsGoodsCategoryRepository.cs b/CoreCms.Net.Repository/Good/CoreCmsGoodsCategoryRepository.cs index 053874c7..d79b2e9d 100644 --- a/CoreCms.Net.Repository/Good/CoreCmsGoodsCategoryRepository.cs +++ b/CoreCms.Net.Repository/Good/CoreCmsGoodsCategoryRepository.cs @@ -39,7 +39,7 @@ namespace CoreCms.Net.Repository public async Task InsertAsync(CoreCmsGoodsCategory entity) { var jm = new AdminUiCallBack(); - var bl = await DbClient.Insertable(entity).RemoveDataCache().ExecuteReturnIdentityAsync() > 0; + var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0; jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; @@ -56,7 +56,7 @@ namespace CoreCms.Net.Repository var jm = new AdminUiCallBack(); //事物处理过程结束 - var bl = await DbClient.Updateable(entity).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(entity).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; @@ -72,7 +72,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable(id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; diff --git a/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs b/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs index b9bee871..ef597743 100644 --- a/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs +++ b/CoreCms.Net.Repository/Good/CoreCmsGoodsRepository.cs @@ -36,6 +36,7 @@ namespace CoreCms.Net.Repository } + #region 重写异步插入方法 /// /// 重写异步插入方法 /// @@ -285,6 +286,9 @@ namespace CoreCms.Net.Repository return jm; } + #endregion + + #region 重写异步更新方法方法 /// /// 重写异步更新方法方法 /// @@ -734,7 +738,7 @@ namespace CoreCms.Net.Repository return jm; } - + #endregion #region 重写删除指定ID集合的数据(批量删除) /// @@ -1923,5 +1927,132 @@ namespace CoreCms.Net.Repository } #endregion + #region 获取商品及默认货品信息 + + /// + /// 获取商品及默认货品信息 + /// + /// + /// + /// + /// 是否使用WITH(NOLOCK) + /// + public async Task> QueryGoodWithDefaultProductAsync(Expression> predicate, Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false) + { + List listData; + if (blUseNoLock) + { + listData = await DbClient.Queryable((good, pd) => new JoinQueryInfos(JoinType.Left, good.id == pd.goodsId)) + .Where((good, pd) => pd.isDefalut == true && pd.isDel == false) + .Select((good, pd) => new CoreCmsGoods + { + id = good.id, + bn = good.bn, + name = good.name, + brief = good.brief, + image = good.image, + images = good.images, + video = good.video, + productsDistributionType = good.productsDistributionType, + goodsCategoryId = good.goodsCategoryId, + goodsTypeId = good.goodsTypeId, + brandId = good.brandId, + isNomalVirtual = good.isNomalVirtual, + isMarketable = good.isMarketable, + unit = good.unit, + //intro = good.intro, + spesDesc = good.spesDesc, + parameters = good.parameters, + commentsCount = good.commentsCount, + viewCount = good.viewCount, + buyCount = good.buyCount, + uptime = good.uptime, + downtime = good.downtime, + sort = good.sort, + labelIds = good.labelIds, + newSpec = good.newSpec, + openSpec = good.openSpec, + createTime = good.createTime, + updateTime = good.updateTime, + isRecommend = good.isRecommend, + isHot = good.isHot, + isDel = good.isDel, + sn = pd.sn, + price = pd.price, + costprice = pd.costprice, + mktprice = pd.mktprice, + stock = pd.stock, + freezeStock = pd.freezeStock, + pointsDeduction = pd.pointsDeduction, + points = pd.points, + weight = pd.weight, + initialSales = good.initialSales, + }) + .With(SqlWith.NoLock) + .MergeTable() + .WhereIF(predicate != null, predicate) + .OrderByIF(orderByPredicate != null, orderByPredicate, orderByType) + .ToListAsync(); + } + else + { + listData = await DbClient.Queryable((good, pd) => new JoinQueryInfos( + JoinType.Left, good.id == pd.goodsId)) + .Where((good, pd) => pd.isDefalut == true && pd.isDel == false) + .Select((good, pd) => new CoreCmsGoods + { + id = good.id, + bn = good.bn, + name = good.name, + brief = good.brief, + image = good.image, + images = good.images, + video = good.video, + productsDistributionType = good.productsDistributionType, + goodsCategoryId = good.goodsCategoryId, + goodsTypeId = good.goodsTypeId, + brandId = good.brandId, + isNomalVirtual = good.isNomalVirtual, + isMarketable = good.isMarketable, + unit = good.unit, + //intro = good.intro, + spesDesc = good.spesDesc, + parameters = good.parameters, + commentsCount = good.commentsCount, + viewCount = good.viewCount, + buyCount = good.buyCount, + uptime = good.uptime, + downtime = good.downtime, + sort = good.sort, + labelIds = good.labelIds, + newSpec = good.newSpec, + openSpec = good.openSpec, + createTime = good.createTime, + updateTime = good.updateTime, + isRecommend = good.isRecommend, + isHot = good.isHot, + isDel = good.isDel, + sn = pd.sn, + price = pd.price, + costprice = pd.costprice, + mktprice = pd.mktprice, + stock = pd.stock, + freezeStock = pd.freezeStock, + pointsDeduction = pd.pointsDeduction, + points = pd.points, + weight = pd.weight, + initialSales = good.initialSales, + }) + .MergeTable() + .WhereIF(predicate != null, predicate) + .OrderByIF(orderByPredicate != null, orderByPredicate, orderByType) + .ToListAsync(); + } + return listData; + } + + + #endregion + } } diff --git a/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeSpecRepository.cs b/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeSpecRepository.cs index 46963763..db66fe6c 100644 --- a/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeSpecRepository.cs +++ b/CoreCms.Net.Repository/Good/CoreCmsGoodsTypeSpecRepository.cs @@ -64,10 +64,10 @@ namespace CoreCms.Net.Repository var goodsTypeSpec = new CoreCmsGoodsTypeSpec(); goodsTypeSpec.name = entity.name; goodsTypeSpec.sort = entity.sort; - var specId = await DbClient.Insertable(goodsTypeSpec).RemoveDataCache().ExecuteReturnIdentityAsync(); + var specId = await DbClient.Insertable(goodsTypeSpec).ExecuteReturnIdentityAsync(); if (specId <= 0 || entity.value is not { Count: > 0 }) return jm; var list = entity.value.Select((item, index) => new CoreCmsGoodsTypeSpecValue() { specId = specId, value = item, sort = index + 1 }).ToList(); - var bl = await DbClient.Insertable(list).RemoveDataCache().ExecuteCommandAsync() > 0; + var bl = await DbClient.Insertable(list).ExecuteCommandAsync() > 0; jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; @@ -107,7 +107,7 @@ namespace CoreCms.Net.Repository } oldModel.name = entity.name; oldModel.sort = entity.sort; - var bl = await DbClient.Updateable(oldModel).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); if (bl) { var oldValues = await DbClient.Queryable().OrderBy(p => p.sort).Where(p => p.specId == oldModel.id).ToListAsync(); @@ -115,7 +115,7 @@ namespace CoreCms.Net.Repository //获取需要删除的数据库数据 var deleteValues = oldValues.Where(p => !entity.value.Contains(p.value)).ToList(); //删除旧数据 - if (deleteValues.Any()) bl = await DbClient.Deleteable(deleteValues).RemoveDataCache().ExecuteCommandHasChangeAsync(); + if (deleteValues.Any()) bl = await DbClient.Deleteable(deleteValues).ExecuteCommandHasChangeAsync(); //新数据 var values = oldValues.Select(p => p.value).ToList(); @@ -125,7 +125,7 @@ namespace CoreCms.Net.Repository if (newValues.Any()) { var newList = newValues.Select((t, index) => new CoreCmsGoodsTypeSpecValue() { specId = oldModel.id, value = t, sort = oldValues.Count + index }).ToList(); - bl = await DbClient.Insertable(newList).RemoveDataCache().ExecuteCommandAsync() > 0; + bl = await DbClient.Insertable(newList).ExecuteCommandAsync() > 0; } } jm.code = bl ? 0 : 1; @@ -144,12 +144,12 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable(id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; if (bl) { - await DbClient.Deleteable(p => p.specId == (int)id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + await DbClient.Deleteable(p => p.specId == (int)id).ExecuteCommandHasChangeAsync(); } return jm; diff --git a/CoreCms.Net.Repository/Order/CoreCmsOrderRepository.cs b/CoreCms.Net.Repository/Order/CoreCmsOrderRepository.cs index ac3eba9a..6937776a 100644 --- a/CoreCms.Net.Repository/Order/CoreCmsOrderRepository.cs +++ b/CoreCms.Net.Repository/Order/CoreCmsOrderRepository.cs @@ -150,7 +150,6 @@ namespace CoreCms.Net.Repository #endregion - #region 根据用户id和商品id获取下了多少订单 /// /// 根据用户id和商品id获取下了多少订单 diff --git a/CoreCms.Net.Repository/Pintuan/CoreCmsPintuanRuleRepository.cs b/CoreCms.Net.Repository/Pintuan/CoreCmsPintuanRuleRepository.cs index 6853d1ed..f4445ddf 100644 --- a/CoreCms.Net.Repository/Pintuan/CoreCmsPintuanRuleRepository.cs +++ b/CoreCms.Net.Repository/Pintuan/CoreCmsPintuanRuleRepository.cs @@ -14,6 +14,7 @@ using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; using CoreCms.Net.Configuration; +using CoreCms.Net.DTO; using CoreCms.Net.IRepository; using CoreCms.Net.IRepository.UnitOfWork; using CoreCms.Net.Model.Entities; @@ -176,5 +177,71 @@ namespace CoreCms.Net.Repository #endregion + #region 根据规则ID数组获取拼团相关信息 + + /// + /// 根据规则ID数组获取拼团相关信息 + /// + /// 规则序列 + /// + /// + /// + /// + /// + public async Task> GetPinTuanInfos(int[] ruleIds, Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, int pageSize = 20) + { + var dt = DateTime.Now; + RefAsync totalCount = 0; + var reuslt = await DbClient.Queryable( + (prModel, pgModel, goodModel, productsModel) => new object[] + { + JoinType.Inner, prModel.id ==pgModel.ruleId , + JoinType.Inner, pgModel.goodsId == goodModel.id, + JoinType.Left, goodModel.id == productsModel.goodsId + }) + .Where((prModel, pgModel, goodModel, productsModel) => prModel.isStatusOpen == true && ruleIds.Contains(prModel.id) && prModel.endTime > dt && productsModel.isDefalut == true && productsModel.isDel == false) + .Select((prModel, pgModel, goodModel, productsModel) => new PinTuanListDTO + { + id = prModel.id, + goodsId = pgModel.goodsId, + sortId = prModel.sort, + name = prModel.name, + pinTuanRecordNums = SqlFunc.Subqueryable().Where(s => s.objectId == prModel.id).Count(), + + buyPinTuanCount = SqlFunc.Subqueryable() + .LeftJoin((sOrderItem, sOrder) => sOrder.orderId == sOrderItem.orderId) + .Where((sOrderItem, sOrder) => sOrderItem.goodsId == pgModel.goodsId + && sOrder.orderType == (int)GlobalEnumVars.OrderType.PinTuan + && sOrder.objectId == prModel.id) + .Sum(p => p.nums), + + peopleNumber = prModel.peopleNumber, + timestamp = 0, + startStatus = 0, + goodBrief = goodModel.brief, + goodName = goodModel.name, + goodThumbnail = goodModel.image, + goodImages = goodModel.images, + goodStock = productsModel.stock, + goodViewCount = goodModel.viewCount, + goodUnit = goodModel.unit, + mktPrice = productsModel.mktprice, + pinTuanPrice = productsModel.price, + startTime = prModel.startTime, + endTime = prModel.endTime, + discountAmount = prModel.discountAmount, + maxGoodsNums = prModel.maxGoodsNums, + maxNums = prModel.maxNums, + + }).MergeTable() + .OrderByIF(orderByExpression != null, orderByExpression, orderByType) + .With(SqlWith.Null).ToPageListAsync(pageIndex, pageSize, totalCount); + + var list = new PageList(reuslt, pageIndex, pageSize, totalCount); + return list; + } + + #endregion + } } diff --git a/CoreCms.Net.Repository/Shop/CoreCmsAreaRepository.cs b/CoreCms.Net.Repository/Shop/CoreCmsAreaRepository.cs index edc16397..fb947b5e 100644 --- a/CoreCms.Net.Repository/Shop/CoreCmsAreaRepository.cs +++ b/CoreCms.Net.Repository/Shop/CoreCmsAreaRepository.cs @@ -42,7 +42,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Insertable(entity).RemoveDataCache().ExecuteReturnIdentityAsync() > 0; + var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0; jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; @@ -69,7 +69,7 @@ namespace CoreCms.Net.Repository oldModel.sort = entity.sort; //事物处理过程结束 - var bl = await DbClient.Updateable(oldModel).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; @@ -85,7 +85,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable(id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; diff --git a/CoreCms.Net.Repository/Shop/CoreCmsNoticeRepository.cs b/CoreCms.Net.Repository/Shop/CoreCmsNoticeRepository.cs index f6595b71..c0e95f2a 100644 --- a/CoreCms.Net.Repository/Shop/CoreCmsNoticeRepository.cs +++ b/CoreCms.Net.Repository/Shop/CoreCmsNoticeRepository.cs @@ -54,35 +54,31 @@ namespace CoreCms.Net.Repository sort = p.sort, isDel = p.isDel, createTime = p.createTime - }).ToPageListAsync(pageIndex, pageSize, totalCount); + }).WithCache().ToPageListAsync(pageIndex, pageSize, totalCount); var list = new PageList(page, pageIndex, pageSize, totalCount); return list; } /// - /// 获取列表首页用 + /// 获取首页组件数据 /// /// 判断集合 - /// 排序方式 - /// 当前页面索引 - /// 分布大小 - /// /// - public async Task> QueryListAsync(Expression> predicate, - Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, - int pageSize = 20) + public async Task> QueryComponentAsync(Expression> predicate) { - var list = await DbClient.Queryable().OrderByIF(orderByExpression != null, orderByExpression, orderByType) - .WhereIF(predicate != null, predicate).Select(p => new CoreCmsNotice + var list = await DbClient.Queryable() + .WhereIF(predicate != null, predicate) + .OrderBy(p => p.sort) + .Select(p => (dynamic)new { - id = p.id, - title = p.title, - type = p.type, - sort = p.sort, - isDel = p.isDel, - createTime = p.createTime - }).ToPageListAsync(pageIndex, pageSize); + p.id, + p.title, + p.type, + p.sort, + p.createTime + }) + .WithCache().ToListAsync(); return list; } diff --git a/CoreCms.Net.Repository/Shop/CoreCmsOrderDistributionModelRepository.cs b/CoreCms.Net.Repository/Shop/CoreCmsOrderDistributionModelRepository.cs index f10043ea..3dea07f2 100644 --- a/CoreCms.Net.Repository/Shop/CoreCmsOrderDistributionModelRepository.cs +++ b/CoreCms.Net.Repository/Shop/CoreCmsOrderDistributionModelRepository.cs @@ -45,7 +45,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Insertable(entity).RemoveDataCache().ExecuteReturnIdentityAsync() > 0; + var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0; jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; @@ -76,7 +76,7 @@ namespace CoreCms.Net.Repository oldModel.isOpenSelfDelivery = entity.isOpenSelfDelivery; //事物处理过程结束 - var bl = await DbClient.Updateable(oldModel).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; @@ -92,7 +92,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable(id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; diff --git a/CoreCms.Net.Repository/Shop/CoreCmsServiceDescriptionRepository.cs b/CoreCms.Net.Repository/Shop/CoreCmsServiceDescriptionRepository.cs index 423268af..01830546 100644 --- a/CoreCms.Net.Repository/Shop/CoreCmsServiceDescriptionRepository.cs +++ b/CoreCms.Net.Repository/Shop/CoreCmsServiceDescriptionRepository.cs @@ -43,7 +43,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Insertable(entity).RemoveDataCache().ExecuteReturnIdentityAsync() > 0; + var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0; jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; @@ -73,7 +73,7 @@ namespace CoreCms.Net.Repository oldModel.sortId = entity.sortId; //事物处理过程结束 - var bl = await DbClient.Updateable(oldModel).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; @@ -89,7 +89,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable(id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; diff --git a/CoreCms.Net.Repository/Solitaire/CoreCmsSolitaireItemsRepository.cs b/CoreCms.Net.Repository/Solitaire/CoreCmsSolitaireItemsRepository.cs index cb93d312..5e53a2aa 100644 --- a/CoreCms.Net.Repository/Solitaire/CoreCmsSolitaireItemsRepository.cs +++ b/CoreCms.Net.Repository/Solitaire/CoreCmsSolitaireItemsRepository.cs @@ -43,7 +43,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Insertable(entity).RemoveDataCache().ExecuteReturnIdentityAsync() > 0; + var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0; jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; @@ -76,7 +76,7 @@ namespace CoreCms.Net.Repository oldModel.isDelete = entity.isDelete; //事物处理过程结束 - var bl = await DbClient.Updateable(oldModel).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; @@ -92,7 +92,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable(id).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable(id).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; @@ -108,7 +108,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Deleteable().In(ids).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable().In(ids).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; diff --git a/CoreCms.Net.Repository/System/SysMenuRepository.cs b/CoreCms.Net.Repository/System/SysMenuRepository.cs index 1be99f71..28570261 100644 --- a/CoreCms.Net.Repository/System/SysMenuRepository.cs +++ b/CoreCms.Net.Repository/System/SysMenuRepository.cs @@ -42,7 +42,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Insertable(entity).RemoveDataCache().ExecuteReturnIdentityAsync() > 0; + var bl = await DbClient.Insertable(entity).ExecuteReturnIdentityAsync() > 0; jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.CreateSuccess : GlobalConstVars.CreateFailure; @@ -83,7 +83,7 @@ namespace CoreCms.Net.Repository oldModel.identificationCode = entity.identificationCode; //事物处理过程结束 - var bl = await DbClient.Updateable(oldModel).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(oldModel).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; @@ -99,7 +99,7 @@ namespace CoreCms.Net.Repository { var jm = new AdminUiCallBack(); - var bl = await DbClient.Updateable(entity).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Updateable(entity).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.EditSuccess : GlobalConstVars.EditFailure; @@ -126,7 +126,7 @@ namespace CoreCms.Net.Repository var ids = new List() { id }; GetIds(all, id, ids); - var bl = await DbClient.Deleteable().In(ids).RemoveDataCache().ExecuteCommandHasChangeAsync(); + var bl = await DbClient.Deleteable().In(ids).ExecuteCommandHasChangeAsync(); jm.code = bl ? 0 : 1; jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure; diff --git a/CoreCms.Net.Services/Article/CoreCmsArticleTypeServices.cs b/CoreCms.Net.Services/Article/CoreCmsArticleTypeServices.cs index eceb1118..468a99d7 100644 --- a/CoreCms.Net.Services/Article/CoreCmsArticleTypeServices.cs +++ b/CoreCms.Net.Services/Article/CoreCmsArticleTypeServices.cs @@ -4,19 +4,28 @@ * Web: https://www.corecms.net * Author: 大灰灰 * Email: jianweie@163.com - * CreateTime: 2021/1/31 21:45:10 + * CreateTime: 2022/10/24 3:54:14 * Description: 暂无 ***********************************************************************/ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Threading.Tasks; +using CoreCms.Net.Configuration; using CoreCms.Net.IRepository; using CoreCms.Net.IRepository.UnitOfWork; using CoreCms.Net.IServices; using CoreCms.Net.Model.Entities; +using CoreCms.Net.Model.ViewModels.Basics; +using CoreCms.Net.Model.ViewModels.UI; +using SqlSugar; + namespace CoreCms.Net.Services { /// - /// 文章分类表 接口实现 + /// 文章分类表 接口实现 /// public class CoreCmsArticleTypeServices : BaseServices, ICoreCmsArticleTypeServices { @@ -25,9 +34,40 @@ namespace CoreCms.Net.Services public CoreCmsArticleTypeServices(IUnitOfWork unitOfWork, ICoreCmsArticleTypeRepository dal) { - _dal = dal; - BaseDal = dal; + this._dal = dal; + base.BaseDal = dal; _unitOfWork = unitOfWork; } + + /// + /// 重写异步插入方法 + /// + /// 实体数据 + /// + public async Task InsertAsync(CoreCmsArticleType entity) + { + return await _dal.InsertAsync(entity); + } + + /// + /// 重写异步更新方法方法 + /// + /// + /// + public async Task UpdateAsync(CoreCmsArticleType entity) + { + return await _dal.UpdateAsync(entity); + } + + /// + /// 重写删除指定ID的数据 + /// + /// + /// + public async Task DeleteByIdAsync(object id) + { + return await _dal.DeleteByIdAsync(id); + } + } -} \ No newline at end of file +} diff --git a/CoreCms.Net.Services/CoreCms.Net.Services.csproj b/CoreCms.Net.Services/CoreCms.Net.Services.csproj index c1f555bc..2469aed7 100644 --- a/CoreCms.Net.Services/CoreCms.Net.Services.csproj +++ b/CoreCms.Net.Services/CoreCms.Net.Services.csproj @@ -13,6 +13,7 @@ + diff --git a/CoreCms.Net.Services/Good/CoreCmsGoodsServices.cs b/CoreCms.Net.Services/Good/CoreCmsGoodsServices.cs index 186b1953..6075c8c3 100644 --- a/CoreCms.Net.Services/Good/CoreCmsGoodsServices.cs +++ b/CoreCms.Net.Services/Good/CoreCmsGoodsServices.cs @@ -998,7 +998,6 @@ namespace CoreCms.Net.Services } #endregion - /// /// 根据条件查询代理池商品分页数据 /// @@ -1045,5 +1044,19 @@ namespace CoreCms.Net.Services #endregion + /// + /// 获取商品及默认货品信息 + /// + /// + /// + /// + /// 是否使用WITH(NOLOCK) + /// + public async Task> QueryGoodWithDefaultProductAsync(Expression> predicate, + Expression> orderByPredicate, OrderByType orderByType, bool blUseNoLock = false) + { + return await _dal.QueryGoodWithDefaultProductAsync(predicate, orderByPredicate, orderByType, blUseNoLock); + } + } } diff --git a/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs b/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs index d271f39e..32d5569d 100644 --- a/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs +++ b/CoreCms.Net.Services/Order/CoreCmsOrderServices.cs @@ -185,6 +185,7 @@ namespace CoreCms.Net.Services #endregion + #region 获取税号 /// /// 获取税号 diff --git a/CoreCms.Net.Services/Pay/AliPayServices.cs b/CoreCms.Net.Services/Pay/AliPayServices.cs index e8ad23e4..9f6b2aca 100644 --- a/CoreCms.Net.Services/Pay/AliPayServices.cs +++ b/CoreCms.Net.Services/Pay/AliPayServices.cs @@ -17,6 +17,7 @@ using Newtonsoft.Json; using System.Threading.Tasks; using NLog; using System; +using System.Globalization; using Essensoft.Paylink.Alipay; using Essensoft.Paylink.Alipay.Domain; using Essensoft.Paylink.Alipay.Request; @@ -67,7 +68,7 @@ namespace CoreCms.Net.Services OutTradeNo = entity.paymentId, Subject = entity.payTitle.Length > 40 ? entity.payTitle[..40] : entity.payTitle, ProductCode = entity.paymentCode, - TotalAmount = entity.money.ToString(), + TotalAmount = entity.money.ToString(CultureInfo.InvariantCulture), Body = entity.payTitle.Length > 40 ? entity.payTitle[..40] : entity.payTitle }; var req = new AlipayTradeAppPayRequest(); diff --git a/CoreCms.Net.Services/Pay/WeChatPayServices.cs b/CoreCms.Net.Services/Pay/WeChatPayServices.cs index 9dcddc6b..5c3e03a8 100644 --- a/CoreCms.Net.Services/Pay/WeChatPayServices.cs +++ b/CoreCms.Net.Services/Pay/WeChatPayServices.cs @@ -19,6 +19,7 @@ using CoreCms.Net.Model.Entities; using CoreCms.Net.Model.ViewModels.UI; using CoreCms.Net.Utility.Extensions; using CoreCms.Net.WeChat.Service.HttpClients; +using Essensoft.Paylink.Alipay.Domain; using Essensoft.Paylink.WeChatPay; using Essensoft.Paylink.WeChatPay.V2; using Essensoft.Paylink.WeChatPay.V2.Request; @@ -26,6 +27,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using QRCoder; using SKIT.FlurlHttpClient.Wechat.Api; using SKIT.FlurlHttpClient.Wechat.Api.Models; @@ -178,36 +180,69 @@ namespace CoreCms.Net.Services var response = await _client.ExecuteAsync(orderRequest, _optionsAccessor.Value); if (response.ReturnCode == WeChatPayCode.Success && response.ResultCode == WeChatPayCode.Success) { - var req = new WeChatPayJsApiSdkRequest - { - Package = "prepay_id=" + response.PrepayId - }; - WeChatPayDictionary parameter; + //App微信支付 if (tradeType == GlobalEnumVars.WeiChatPayTradeType.APP.ToString()) { var reqApp = new WeChatPayAppSdkRequest() { PrepayId = response.PrepayId }; - parameter = await _client.ExecuteAsync(reqApp, _optionsAccessor.Value); + var parameter = await _client.ExecuteAsync(reqApp, _optionsAccessor.Value); + parameter.Add("paymentId", entity.paymentId); + jm.status = true; + jm.msg = "创建微信APP支付环境成功"; + jm.data = parameter; + jm.otherData = response; } - else + //JsApi通用微信支付 + else if (tradeType == GlobalEnumVars.WeiChatPayTradeType.JSAPI.ToString()) { - parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value); + // 将参数(parameter)给 公众号前端 让他在微信内H5调起支付(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6) + var req = new WeChatPayJsApiSdkRequest + { + Package = "prepay_id=" + response.PrepayId + }; + var parameter = await _client.ExecuteAsync(req, _optionsAccessor.Value); + parameter.Add("paymentId", entity.paymentId); + jm.status = true; + jm.msg = "创建JSAPI支付环境成功"; + jm.data = parameter; + //jm.otherData = response; + } + //扫码支付 + else if (tradeType == GlobalEnumVars.WeiChatPayTradeType.NATIVE.ToString()) + { + jm.status = true; + jm.msg = "创建微信扫码支付环境成功"; + jm.data = new + { + response, + entity.paymentId + }; + //确定是否存在扫码的图片,然后转成base64到前端进行扫码支付 + if (!string.IsNullOrEmpty(response.CodeUrl) && response.CodeUrl.Contains("weixin://wxpay/bizpayurl?pr=")) + { + using var qrGenerator = new QRCodeGenerator(); + using var qrCodeData = qrGenerator.CreateQrCode(response.CodeUrl, QRCodeGenerator.ECCLevel.L); + using var pngByteQrCode = new PngByteQRCode(qrCodeData); + var pngBytes = pngByteQrCode.GetGraphic(20, false); + var stringBase64Str = Convert.ToBase64String(pngBytes); + jm.otherData = stringBase64Str; + } + } + //H5支付 + else if (tradeType == GlobalEnumVars.WeiChatPayTradeType.MWEB.ToString()) + { + jm.status = true; + jm.msg = "创建H5支付环境成功"; + jm.data = response; } - // 将参数(parameter)给 公众号前端 让他在微信内H5调起支付(https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6) - parameter.Add("paymentId", entity.paymentId); - - jm.status = true; - //jm.msg = "创建支付环境成功"; - jm.data = parameter; - jm.otherData = response; } else { jm.status = false; jm.msg = "微信建立支付请求失败"; - jm.otherData = response; + //jm.otherData = response; } return jm; } diff --git a/CoreCms.Net.Services/Pintuan/CoreCmsPintuanGoodsServices.cs b/CoreCms.Net.Services/Pintuan/CoreCmsPintuanGoodsServices.cs index 4e356693..4ad8bdb2 100644 --- a/CoreCms.Net.Services/Pintuan/CoreCmsPintuanGoodsServices.cs +++ b/CoreCms.Net.Services/Pintuan/CoreCmsPintuanGoodsServices.cs @@ -63,9 +63,7 @@ namespace CoreCms.Net.Services using var container = _serviceProvider.CreateScope(); var goodsServices = container.ServiceProvider.GetService(); - var pinTuanRuleServices = container.ServiceProvider.GetService(); var pinTuanRecordServices = container.ServiceProvider.GetService(); - var pinTuanGoodsServices = container.ServiceProvider.GetService(); var orderServices = container.ServiceProvider.GetService(); var goodsInfo = await goodsServices.GetGoodsDetail(goodsId, userId, false, "goods", 0, needGoodSku); @@ -83,14 +81,14 @@ namespace CoreCms.Net.Services { goodsInfo.pinTuanRule.pinTuanStartStatus = (int)GlobalEnumVars.PinTuanRuleStatus.notBegun; - TimeSpan ts = goodsInfo.pinTuanRule.startTime.Subtract(dt); + var ts = goodsInfo.pinTuanRule.startTime.Subtract(dt); goodsInfo.pinTuanRule.lastTime = (int)ts.TotalSeconds; } else if (goodsInfo.pinTuanRule.startTime <= dt && goodsInfo.pinTuanRule.endTime > dt) { goodsInfo.pinTuanRule.pinTuanStartStatus = (int)GlobalEnumVars.PinTuanRuleStatus.begin; - TimeSpan ts = goodsInfo.pinTuanRule.endTime.Subtract(dt); + var ts = goodsInfo.pinTuanRule.endTime.Subtract(dt); goodsInfo.pinTuanRule.lastTime = (int)ts.TotalSeconds; } else diff --git a/CoreCms.Net.Services/Pintuan/CoreCmsPintuanRuleServices.cs b/CoreCms.Net.Services/Pintuan/CoreCmsPintuanRuleServices.cs index 743f971d..a51ed146 100644 --- a/CoreCms.Net.Services/Pintuan/CoreCmsPintuanRuleServices.cs +++ b/CoreCms.Net.Services/Pintuan/CoreCmsPintuanRuleServices.cs @@ -14,6 +14,7 @@ using System.Linq; using System.Linq.Expressions; using System.Threading.Tasks; using CoreCms.Net.Configuration; +using CoreCms.Net.DTO; using CoreCms.Net.IRepository; using CoreCms.Net.IRepository.UnitOfWork; using CoreCms.Net.IServices; @@ -23,6 +24,7 @@ using CoreCms.Net.Model.Entities.Expression; using CoreCms.Net.Model.ViewModels.Basics; using CoreCms.Net.Model.ViewModels.DTO; using CoreCms.Net.Model.ViewModels.UI; +using Essensoft.Paylink.Alipay.Domain; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using SqlSugar; @@ -65,15 +67,18 @@ namespace CoreCms.Net.Services /// 接口上获取拼团所有商品 /// /// - public async Task GetPinTuanList(int userId = 0) + public async Task GetPinTuanList(int userId = 0, int pageIndex = 1, int pageSize = 20) { var jm = new WebApiCallBack(); using var container = _serviceProvider.CreateScope(); var pinTuanGoodsServices = container.ServiceProvider.GetService(); var pinTuanRuleServices = container.ServiceProvider.GetService(); + var goodsServices = container.ServiceProvider.GetService(); - var pinTuanRules = await pinTuanRuleServices.QueryListByClauseAsync(p => p.isStatusOpen == true, p => p.sort, OrderByType.Asc, true, true, 24 * 60); + //从缓存中获取有效的数据 + var dt = DateTime.Now; + var pinTuanRules = await pinTuanRuleServices.QueryListByClauseAsync(p => p.isStatusOpen == true && p.startTime < dt && p.endTime > dt, p => p.sort, OrderByType.Asc, true, true, 24 * 60); if (pinTuanRules == null && !pinTuanRules.Any()) { jm.status = true; @@ -81,30 +86,35 @@ namespace CoreCms.Net.Services return jm; } //获取开启的规则集序列 - var pinTuanRuleIds = pinTuanRules.Select(p => p.id).ToList(); - //获取下级商品数据 - var pinTuanGoods = await pinTuanGoodsServices.QueryListByClauseAsync(p => pinTuanRuleIds.Contains(p.ruleId), p => p.ruleId, OrderByType.Asc, true, true); - //从缓存中获取有效的数据 - var dt = DateTime.Now; - var list = pinTuanRules.Where(p => p.startTime < dt && p.endTime > dt).OrderBy(p => p.sort).ToList(); + var pinTuanRuleIds = pinTuanRules.Select(p => p.id).ToArray(); - if (list.Any()) + + var dtoData = await _dal.GetPinTuanInfos(pinTuanRuleIds, p => p.sortId, OrderByType.Asc, pageIndex, pageSize); + foreach (var item in dtoData) { - var goods = new List(); - foreach (var item in list) + //判断拼团状态 + var dtNow = DateTime.Now; + if (item.startTime > dt) { - var pinTuanGood = pinTuanGoods.Find(p => p.ruleId == item.id); - if (pinTuanGood != null) - { - var g = await pinTuanGoodsServices.GetGoodsInfo(item, pinTuanGood.goodsId, userId, false, - false, false); - if (g == null) continue; - goods.Add(g); - } + item.startStatus = (int)GlobalEnumVars.PinTuanRuleStatus.notBegun; + var ts = item.startTime.Subtract(dt); + item.timestamp = (int)ts.TotalSeconds; } - jm.data = goods; + else if (item.startTime <= dt && item.endTime > dt) + { + item.startStatus = (int)GlobalEnumVars.PinTuanRuleStatus.begin; + var ts = item.endTime.Subtract(dt); + item.timestamp = (int)ts.TotalSeconds; + } + else + { + item.startStatus = (int)GlobalEnumVars.PinTuanRuleStatus.haveExpired; + } + + item.pinTuanPrice -= item.discountAmount; } + jm.data = dtoData; jm.status = true; return jm; } @@ -136,5 +146,25 @@ namespace CoreCms.Net.Services { return await _dal.GetPinTuanInfo(ruleId); } + + + /// + /// 根据规则ID数组获取拼团相关信息 + /// + /// 规则序列 + /// + /// + /// + /// + /// + public async Task> GetPinTuanInfos(int[] ruleIds, + Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, + int pageSize = 20) + { + + return await _dal.GetPinTuanInfos(ruleIds, orderByExpression, orderByType, pageIndex, pageSize); + + } + } } diff --git a/CoreCms.Net.Services/Promotion/CoreCmsPromotionServices.cs b/CoreCms.Net.Services/Promotion/CoreCmsPromotionServices.cs index e0f52059..d94d0023 100644 --- a/CoreCms.Net.Services/Promotion/CoreCmsPromotionServices.cs +++ b/CoreCms.Net.Services/Promotion/CoreCmsPromotionServices.cs @@ -13,6 +13,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using CoreCms.Net.Configuration; +using CoreCms.Net.DTO; using CoreCms.Net.IRepository; using CoreCms.Net.IRepository.UnitOfWork; using CoreCms.Net.IServices; @@ -175,17 +176,17 @@ namespace CoreCms.Net.Services #endregion - - - - #region 获取团购列表数据 /// /// 获取团购列表数据 /// /// - public async Task GetGroupList(int type, int userId, int status, int pageIndex, int pageSize) + public async Task GetGroupList(int type, int status, int pageIndex, int pageSize) { + using var container = _serviceProvider.CreateScope(); + + var goodsServices = container.ServiceProvider.GetService(); + var orderServices = container.ServiceProvider.GetService(); var jm = new WebApiCallBack { status = true }; @@ -207,51 +208,75 @@ namespace CoreCms.Net.Services { where = where.And(p => p.endTime < dt); } - var goods = new List(); - var list = await _dal.QueryPageAsync(where, p => p.endTime, OrderByType.Desc, pageIndex, pageSize); - if (list != null && list.Any()) + var promotions = await _dal.QueryPageAsync(where, p => p.endTime, OrderByType.Desc, pageIndex, pageSize, true, true, 60); + var dtoData = new List(); + if (promotions != null && promotions.Any()) { - foreach (var item in list) + //获取团购序列 + var pIds = promotions.Select(p => p.id).ToList(); + //获取规则参数 + var conditions = await _promotionConditionServices.QueryListByClauseAsync(p => pIds.Contains(p.promotionId), p => p.id, OrderByType.Asc, true, true); + //获取规则结果集 + var results = await _promotionResultServices.QueryListByClauseAsync(p => pIds.Contains(p.promotionId), p => p.id, OrderByType.Asc, true, true); + + var goodIds = (from condition in conditions where condition != null && condition.parameters.Contains("goodsId") select (JObject)JsonConvert.DeserializeObject(condition.parameters) into parameters select parameters["goodsId"].ObjectToInt(0)).ToList(); + + var goodData = await goodsServices.QueryGoodWithDefaultProductAsync(p => goodIds.Contains(p.id), p => p.id, OrderByType.Asc, true); + + foreach (var item in promotions) { - var promotionId = item.id; - var condition = await _promotionConditionServices.QueryByClauseAsync(p => p.promotionId == promotionId); + var dtNow = DateTime.Now; + + var dto = new GroupPurchaseSeckillDTO(); + + //事物处理过程开始 + dto.id = item.id; + dto.name = item.name; + dto.type = item.type; + dto.sort = item.sort; + dto.maxNums = item.maxNums; + dto.maxGoodsNums = item.maxGoodsNums; + dto.maxRecevieNums = item.maxRecevieNums; + dto.startTime = item.startTime; + dto.endTime = item.endTime; + dto.isEnable = item.isEnable; + dto.isExclusive = item.isExclusive; + dto.isAutoReceive = item.isAutoReceive; + dto.effectiveDays = item.effectiveDays; + dto.effectiveHours = item.effectiveHours; + dto.startStatus = status; + + var condition = conditions.Find(p => p.promotionId == item.id); if (condition != null && condition.parameters.Contains("goodsId")) { - JObject parameters = (JObject)JsonConvert.DeserializeObject(condition.parameters); - - - var res = await GetGroupDetail(parameters["goodsId"].ObjectToInt(0), userId, type, item.id); - if (res.status) + var parameters = (JObject)JsonConvert.DeserializeObject(condition.parameters); + var goodId = parameters["goodsId"].ObjectToInt(0); + var good = goodData.Find(p => p.id == goodId); + if (good != null) { - var good = res.data as CoreCmsGoods; + dto.goodBrief = good.brief; + dto.goodName = good.name; + dto.goodThumbnail = good.image; + dto.goodImages = good.images; + dto.goodStock = good.stock; + dto.goodViewCount = good.viewCount; + dto.goodUnit = good.unit; + dto.mktPrice = good.mktprice; + dto.price = good.price; - good.groupId = item.id; - good.groupType = item.type; - good.groupStatus = item.isEnable; - good.groupTime = DateTime.Now; - good.groupStartTime = item.startTime; - good.groupEndTime = item.endTime; - - TimeSpan ts = item.endTime.Subtract(dt); - good.groupTimestamp = (int)ts.TotalSeconds; - - goods.Add(good); - } - else - { - item.expression1 = res.msg; + TimeSpan ts = item.endTime.Subtract(dtNow); + dto.timestamp = (int)ts.TotalSeconds; } } + dtoData.Add(dto); } } - jm.data = new { - goods, - list.TotalCount, - list.TotalPages, - list, + promotions.TotalCount, + promotions.TotalPages, + list = dtoData, pageIndex, pageSize }; @@ -266,7 +291,7 @@ namespace CoreCms.Net.Services /// /// - public async Task GetGroupDetail(int goodId = 0, int userId = 0, int type = (int)GlobalEnumVars.PromotionType.Group, int groupId = 0, bool needSku = false) + public async Task GetGroupDetail(int groupId, int userId, int type, bool needSku) { using var container = _serviceProvider.CreateScope(); @@ -275,31 +300,40 @@ namespace CoreCms.Net.Services var jm = new WebApiCallBack() { msg = "关键参数丢失" }; - if (goodId == 0) + if (groupId == 0) { return jm; } - //判断商品是否参加团购 - var isInGroup = _dal.IsInGroup(goodId, out var promotionId, type); - if (!isInGroup) - { - jm.msg = "商品未参加团购"; - return jm; - } - - var promotion = await _dal.QueryByClauseAsync(p => p.isDel == false && p.isEnable == true && p.id == promotionId); + var promotion = await _dal.QueryByClauseAsync(p => p.isDel == false && p.isEnable == true && p.id == groupId, true, true); if (promotion == null) { jm.msg = "无此活动"; - jm.otherData = promotionId; + jm.otherData = groupId; + return jm; + } + + var goodId = 0; + var condition = await _promotionConditionServices.QueryByClauseAsync(p => p.promotionId == groupId, true, true); + if (condition != null) + { + var obj = (JObject)JsonConvert.DeserializeObject(condition.parameters); + if (obj.ContainsKey("goodsId") && obj["goodsId"].ObjectToInt(0) > 0) + { + goodId = obj["goodsId"].ObjectToInt(0); + } + } + + if (goodId == 0) + { + jm.msg = "未提交商品信息"; + jm.otherData = groupId; return jm; } - var goods = new CoreCmsGoods(); string typeStr = type == (int)GlobalEnumVars.PromotionType.Group ? GlobalEnumVars.PromotionType.Group.ToString().ToLowerInvariant() : GlobalEnumVars.PromotionType.Seckill.ToString().ToLowerInvariant(); - goods = await goodsServices.GetGoodsDetail(goodId, userId, true, typeStr, groupId, needSku); + var goods = await goodsServices.GetGoodsDetail(goodId, userId, true, typeStr, groupId, needSku); if (goods == null) { jm.msg = "商品不存在"; @@ -315,8 +349,6 @@ namespace CoreCms.Net.Services //调整前台显示数量 var checkOrder = orderServices.FindLimitOrder(goods.product.id, userId, promotion.startTime, promotion.endTime, promotion.type); - var productStock = goods.product.stock; - //如果最大为设置值 if (promotion.maxGoodsNums > 0) { @@ -335,10 +367,8 @@ namespace CoreCms.Net.Services goods.product.stock = checkOrder.TotalOrders - promotion.maxNums >= 0 ? 0 : promotion.maxNums - checkOrder.TotalOrders; } - goods.buyPromotionCount = checkOrder.TotalOrders; - var dt = DateTime.Now; goods.groupId = promotion.id; @@ -351,7 +381,6 @@ namespace CoreCms.Net.Services TimeSpan ts = promotion.endTime.Subtract(dt); goods.groupTimestamp = (int)ts.TotalSeconds; - //进行促销后要更换原销售价替换原市场价 var originPrice = Math.Round(goods.product.price + goods.product.promotionAmount, 2); goods.product.mktprice = originPrice; diff --git a/CoreCms.Net.Services/Share/CoreCmsShareServices.cs b/CoreCms.Net.Services/Share/CoreCmsShareServices.cs index 0f88587d..98c95f18 100644 --- a/CoreCms.Net.Services/Share/CoreCmsShareServices.cs +++ b/CoreCms.Net.Services/Share/CoreCmsShareServices.cs @@ -532,9 +532,9 @@ namespace CoreCms.Net.Services } break; case (int)GlobalEnumVars.UrlSharePageType.PinTuan: - if (parameter.ContainsKey("goodsId") && parameter.ContainsKey("teamId") && parameter.ContainsKey("groupId")) + if (parameter.ContainsKey("teamId") && parameter.ContainsKey("groupId")) { - str = parameter["goodsId"] + "_" + parameter["groupId"] + "_" + parameter["teamId"]; + str = parameter["groupId"] + "_" + parameter["teamId"]; } else { @@ -565,9 +565,9 @@ namespace CoreCms.Net.Services } break; case (int)GlobalEnumVars.UrlSharePageType.AddPinTuan: - if (parameter.ContainsKey("goodsId") && parameter.ContainsKey("groupId") && parameter.ContainsKey("teamId")) + if (parameter.ContainsKey("groupId") && parameter.ContainsKey("teamId")) { - str = parameter["goodsId"] + "_" + parameter["groupId"] + "_" + parameter["teamId"]; + str = parameter["groupId"] + "_" + parameter["teamId"]; } else { @@ -598,24 +598,24 @@ namespace CoreCms.Net.Services } break; case (int)GlobalEnumVars.UrlSharePageType.Group: - if (parameter.ContainsKey("goodsId") || parameter.ContainsKey("groupId")) + if (parameter.ContainsKey("groupId")) { - str = parameter["goodsId"] + "_" + parameter["groupId"]; + str = parameter["groupId"].ToString(); } else { - jm.msg = "参数必须传goodsId,groupId"; + jm.msg = "参数必须传groupId"; return jm; } break; case (int)GlobalEnumVars.UrlSharePageType.Seckill: - if (parameter.ContainsKey("goodsId") || parameter.ContainsKey("groupId")) + if (parameter.ContainsKey("groupId")) { - str = parameter["goodsId"] + "_" + parameter["groupId"]; + str = parameter["groupId"].ToString(); } else { - jm.msg = "参数必须传goodsId,groupId"; + jm.msg = "参数必须传groupId"; return jm; } break; @@ -641,6 +641,17 @@ namespace CoreCms.Net.Services return jm; } break; + case (int)GlobalEnumVars.UrlSharePageType.ServiceGoods: + if (parameter.ContainsKey("serviceGoodsId")) + { + str = parameter["serviceGoodsId"]?.ToString(); + } + else + { + jm.msg = "参数必须传id"; + return jm; + } + break; default: jm.msg = GlobalErrorCodeVars.Code10000; return jm; @@ -682,9 +693,8 @@ namespace CoreCms.Net.Services { jm.data = new { - goodsId = arr[0], - groupId = arr[1], - teamId = arr[2] + groupId = arr[0], + teamId = arr[1] }; jm.status = true; } @@ -712,9 +722,8 @@ namespace CoreCms.Net.Services { jm.data = new { - goodsId = arr[0], - groupId = arr[1], - teamId = arr[2] + groupId = arr[0], + teamId = arr[1] }; jm.status = true; } @@ -734,23 +743,21 @@ namespace CoreCms.Net.Services } break; case (int)GlobalEnumVars.UrlSharePageType.Group: - if (arr.Length == 2) + if (arr.Length == 1) { jm.data = new { - goodsId = arr[0], - groupId = arr[1], + groupId = arr[0], }; jm.status = true; } break; case (int)GlobalEnumVars.UrlSharePageType.Seckill: - if (arr.Length == 2) + if (arr.Length == 1) { jm.data = new { - goodsId = arr[0], - groupId = arr[1], + groupId = arr[0], }; jm.status = true; } @@ -769,6 +776,13 @@ namespace CoreCms.Net.Services jm.status = true; } break; + case (int)GlobalEnumVars.UrlSharePageType.ServiceGoods: + if (arr.Length == 1) + { + jm.data = new { serviceGoodsId = arr[0] }; + jm.status = true; + } + break; default: jm.msg = GlobalErrorCodeVars.Code10000; return jm; diff --git a/CoreCms.Net.Services/Shop/CoreCmsNoticeServices.cs b/CoreCms.Net.Services/Shop/CoreCmsNoticeServices.cs index 5a97bd3e..88436482 100644 --- a/CoreCms.Net.Services/Shop/CoreCmsNoticeServices.cs +++ b/CoreCms.Net.Services/Shop/CoreCmsNoticeServices.cs @@ -57,19 +57,13 @@ namespace CoreCms.Net.Services /// - /// 获取列表首页用 + /// 获取首页组件数据 /// /// 判断集合 - /// 排序方式 - /// 当前页面索引 - /// 分布大小 - /// /// - public async Task> QueryListAsync(Expression> predicate, - Expression> orderByExpression, OrderByType orderByType, int pageIndex = 1, - int pageSize = 20) + public async Task> QueryComponentAsync(Expression> predicate) { - return await _dal.QueryListAsync(predicate, orderByExpression, orderByType, pageIndex, pageSize); + return await _dal.QueryComponentAsync(predicate); } } } diff --git a/CoreCms.Net.Services/Shop/CoreCmsPagesServices.cs b/CoreCms.Net.Services/Shop/CoreCmsPagesServices.cs index 2736f2f4..5ad1376b 100644 --- a/CoreCms.Net.Services/Shop/CoreCmsPagesServices.cs +++ b/CoreCms.Net.Services/Shop/CoreCmsPagesServices.cs @@ -23,6 +23,7 @@ using CoreCms.Net.Model.FromBody; using CoreCms.Net.Model.ViewModels.DTO; using CoreCms.Net.Model.ViewModels.UI; using CoreCms.Net.Utility.Extensions; +using Essensoft.Paylink.Alipay.Domain; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SqlSugar; @@ -43,6 +44,7 @@ namespace CoreCms.Net.Services private readonly ICoreCmsSettingServices _settingServices; private readonly ICoreCmsGoodsServices _goodsServices; private readonly ICoreCmsArticleServices _articleServices; + private readonly ICoreCmsArticleTypeServices _articleTypeServices; private readonly ICoreCmsPromotionConditionServices _promotionConditionServices; private readonly ICoreCmsPinTuanRuleServices _pinTuanRuleServices; private readonly ICoreCmsServicesServices _servicesServices; @@ -51,7 +53,7 @@ namespace CoreCms.Net.Services private readonly IUnitOfWork _unitOfWork; public CoreCmsPagesServices(IUnitOfWork unitOfWork , ICoreCmsPagesRepository dal - , ICoreCmsPagesItemsRepository pagesItemsRepository, ICoreCmsPromotionServices promotionServices, ICoreCmsNoticeServices noticeServices, ICoreCmsGoodsCategoryServices goodsCategoryServices, ICoreCmsSettingServices settingServices, ICoreCmsGoodsServices goodsServices, ICoreCmsArticleServices articleServices, ICoreCmsPromotionConditionServices promotionConditionServices, ICoreCmsPinTuanRuleServices pinTuanRuleServices, ICoreCmsServicesServices servicesServices) + , ICoreCmsPagesItemsRepository pagesItemsRepository, ICoreCmsPromotionServices promotionServices, ICoreCmsNoticeServices noticeServices, ICoreCmsGoodsCategoryServices goodsCategoryServices, ICoreCmsSettingServices settingServices, ICoreCmsGoodsServices goodsServices, ICoreCmsArticleServices articleServices, ICoreCmsPromotionConditionServices promotionConditionServices, ICoreCmsPinTuanRuleServices pinTuanRuleServices, ICoreCmsServicesServices servicesServices, ICoreCmsArticleTypeServices articleTypeServices) { this._dal = dal; _pagesItemsRepository = pagesItemsRepository; @@ -64,6 +66,7 @@ namespace CoreCms.Net.Services _promotionConditionServices = promotionConditionServices; _pinTuanRuleServices = pinTuanRuleServices; _servicesServices = servicesServices; + _articleTypeServices = articleTypeServices; base.BaseDal = dal; _unitOfWork = unitOfWork; } @@ -136,13 +139,13 @@ namespace CoreCms.Net.Services wherePage = code == "mobile_home" ? wherePage.And(p => p.type == 1) : wherePage.And(p => p.code == code); - var model = await _dal.QueryByClauseAsync(wherePage); + var model = await _dal.QueryByClauseAsync(wherePage, true, true); if (model == null) { return jm; } jm.status = true; - var items = await _pagesItemsRepository.QueryListByClauseAsync(p => p.pageCode == model.code, p => p.sort, OrderByType.Asc); + var items = await _pagesItemsRepository.QueryListByClauseAsync(p => p.pageCode == model.code, p => p.sort, OrderByType.Asc, true, true); var itemsDto = new List(); foreach (var item in items) @@ -156,143 +159,220 @@ namespace CoreCms.Net.Services item.parameters = item.parameters.Replace("/images/empty-banner.png", "/static/images/common/empty-banner.png"); - if (item.widgetCode == "search") //搜索 + switch (item.widgetCode) { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else if (item.widgetCode == "tabBar") - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else if (item.widgetCode == "notice") - { - JObject parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - - if (parameters != null && parameters.ContainsKey("type") && parameters["type"].ToString() == "auto") - { - var list = await _noticeServices.QueryListAsync(p => p.isDel == false, p => p.createTime, OrderByType.Desc, 1, 20); - if (list != null && list.Any()) + //搜索 + case "search": + case "tabBar": + dto.parameters = JsonConvert.DeserializeObject(item.parameters); + break; + case "notice": { - JArray result = JArray.FromObject(list); - parameters.Remove("list"); - parameters.Add("list", result); - } - } - else if (parameters != null && parameters.ContainsKey("type") && parameters["type"].ToString() == "choose") - { - - var where = PredicateBuilder.True(); - - var orderBy = string.Empty; - var noticeIdsStr = string.Empty; - if (parameters != null && parameters.ContainsKey("list")) - { - JArray result = JArray.Parse(parameters["list"].ToString()); - var noticeIds = new List(); - foreach (var ss in result) //查找某个字段与值 + var parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); + if (parameters != null && parameters.ContainsKey("type") && parameters["type"].ToString() == "auto") { - var noticeId = ((JObject)ss)["id"].ObjectToInt(0); - if (noticeId > 0) + var list = await _noticeServices.QueryComponentAsync(p => p.isDel == false); + if (list != null && list.Any()) { - noticeIds.Add(noticeId); + var result = JArray.FromObject(list); + parameters.Remove("list"); + parameters.Add("list", result); } } - where = where.And(p => noticeIds.Contains(p.id)); - if (noticeIds.Any()) + else if (parameters != null && parameters.ContainsKey("type") && parameters["type"].ToString() == "choose") { - noticeIdsStr = string.Join(",", noticeIdsStr); - //按照固定的序列id进行排序 - if (AppSettingsConstVars.DbDbType == DbType.SqlServer.ToString()) + + var where = PredicateBuilder.True(); + + var orderBy = string.Empty; + var noticeIdsStr = string.Empty; + if (parameters != null && parameters.ContainsKey("list")) { - orderBy = " CHARINDEX(RTRIM(CAST(id as NCHAR)),'" + noticeIdsStr + "') "; + var result = JArray.Parse(parameters["list"].ToString()); + var noticeIds = result.Select(ss => ((JObject)ss)["id"].ObjectToInt(0)).Where(noticeId => noticeId > 0).ToList(); + where = where.And(p => noticeIds.Contains(p.id)); + if (noticeIds.Any()) + { + noticeIdsStr = string.Join(",", noticeIdsStr); + //按照固定的序列id进行排序 + if (AppSettingsConstVars.DbDbType == DbType.SqlServer.ToString()) + { + orderBy = " CHARINDEX(RTRIM(CAST(id as NCHAR)),'" + noticeIdsStr + "') "; + } + else if (AppSettingsConstVars.DbDbType == DbType.MySql.ToString()) + { + orderBy = " find_in_set(id,'" + noticeIdsStr + "') "; + } + } } - else if (AppSettingsConstVars.DbDbType == DbType.MySql.ToString()) + var notices = await _noticeServices.QueryListByClauseAsync(where, orderBy); + if (notices != null && notices.Any()) { - orderBy = " find_in_set(id,'" + noticeIdsStr + "') "; + var result = JArray.FromObject(notices); + parameters.Remove("list"); + parameters.Add("list", result); + } + else + { + parameters.Remove("list"); + parameters.Add("list", new JArray()); } } - } - var notices = await _noticeServices.QueryListByClauseAsync(where, orderBy); - if (notices != null && notices.Any()) - { - JArray result = JArray.FromObject(notices); - parameters.Remove("list"); - parameters.Add("list", result); - } - else - { - parameters.Remove("list"); - parameters.Add("list", new JArray()); - } - } - dto.parameters = parameters; - } - else if (item.widgetCode == "imgSlide") - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else if (item.widgetCode == "coupon") - { - JObject parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - - if (parameters != null && parameters.ContainsKey("limit") && parameters["limit"].ObjectToInt(0) != 0) - { - var list = await _promotionServices.ReceiveCouponList(parameters["limit"].ObjectToInt(0)); - if (list != null && list.Any()) - { - JArray result = JArray.FromObject(list); - parameters.Remove("list"); - parameters.Add("list", result); + dto.parameters = parameters; + break; } - } - - dto.parameters = parameters; - } - else if (item.widgetCode == "blank") - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else if (item.widgetCode == "textarea") - { - JObject parameters = new JObject(); - parameters["value"] = item.parameters; - dto.parameters = parameters; - } - else if (item.widgetCode == "video") - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else if (item.widgetCode == "imgWindow") - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else if (item.widgetCode == "imgSingle") - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else if (item.widgetCode == "goodTabBar") - { - JObject parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - - if (parameters != null && parameters.ContainsKey("list")) - { - var list = JArray.Parse(parameters["list"].ToString()); - var newList = new JArray(); - var count = 0; - foreach (var jToken in list) + case "imgSlide": + dto.parameters = JsonConvert.DeserializeObject(item.parameters); + break; + case "coupon": { - var child = (JObject)jToken; + var parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); + if (parameters != null && parameters.ContainsKey("limit") && parameters["limit"].ObjectToInt(0) != 0) + { + var list = await _promotionServices.ReceiveCouponList(parameters["limit"].ObjectToInt(0)); + if (list != null && list.Any()) + { + var result = JArray.FromObject(list); + parameters.Remove("list"); + parameters.Add("list", result); + } + } + + dto.parameters = parameters; + break; + } + case "blank": + dto.parameters = JsonConvert.DeserializeObject(item.parameters); + break; + case "textarea": + { + var parameters = new JObject(); + parameters["value"] = item.parameters; + dto.parameters = parameters; + break; + } + case "video": + case "imgWindow": + case "imgSingle": + dto.parameters = JsonConvert.DeserializeObject(item.parameters); + break; + case "goodTabBar": + { + var parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); + if (parameters != null && parameters.ContainsKey("list")) + { + var list = JArray.Parse(parameters["list"].ToString()); + var newList = new JArray(); + foreach (var jToken in list) + { + var child = (JObject)jToken; + var where = PredicateBuilder.True(); + where = where.And(p => p.isDel == false); + where = where.And(p => p.isMarketable == true); + + if (child != null && child.ContainsKey("type") && child["type"].ToString() == "auto") + { + //商品分类,同时取所有子分类 + if (child.ContainsKey("classifyId") && child["classifyId"].ObjectToInt(0) > 0) + { + var classifyId = child["classifyId"].ObjectToInt(0); + var gc = await _goodsCategoryServices.GetCaChe(); + var childCats = gc.Where(p => p.parentId == classifyId).ToList(); + var catIds = childCats != null && childCats.Any() + ? childCats.Select(p => p.id).ToList() + : new List(); + catIds.Add(classifyId); + + where = where.And(p => catIds.Contains(p.goodsCategoryId)); + //扩展分类 CoreCmsGoodsCategory + } + //品牌筛选 + if (child.ContainsKey("brandId") && child["brandId"].ObjectToInt(0) > 0) + { + var brandId = child["brandId"].ObjectToInt(0); + where = where.And(p => p.brandId == brandId); + } + + var limit = 0; + if (child.ContainsKey("limit") && child["limit"].ObjectToInt(0) > 0) + { + limit = child["limit"].ObjectToInt(0); + } + limit = limit > 0 ? limit : 10; + + var goods = await _goodsServices.QueryListByClauseAsync(where, limit, p => p.createTime, OrderByType.Desc, true); + if (goods != null && goods.Any()) + { + var result = JArray.FromObject(goods); + child.Remove("list"); + child.Add("list", result); + } + else + { + child.Remove("list"); + child.Add("list", new JArray()); + } + } + else + { + var orderBy = string.Empty; + string goodidsStr; + if (child != null && child.ContainsKey("list")) + { + var result = JArray.Parse(child["list"].ToString()); + var goodids = result.Select(ss => ((JObject)ss)["id"].ObjectToInt(0)).Where(goodid => goodid > 0).ToList(); + where = where.And(p => goodids.Contains(p.id)); + if (goodids.Any()) + { + goodidsStr = string.Join(",", goodids); + //按照id序列打乱后的顺序排序 + if (AppSettingsConstVars.DbDbType == DbType.SqlServer.ToString()) + { + orderBy = " CHARINDEX(RTRIM(CAST(id as NCHAR)),'" + goodidsStr + "') "; + } + else if (AppSettingsConstVars.DbDbType == DbType.MySql.ToString()) + { + orderBy = " find_in_set(id,'" + goodidsStr + "') "; + } + } + } + var goods = await _goodsServices.QueryListByClauseAsync(where, orderBy, true); + if (goods != null && goods.Any()) + { + var result = JArray.FromObject(goods); + child.Remove("list"); + child.Add("list", result); + } + else + { + child.Remove("list"); + child.Add("list", new JArray()); + } + } + newList.Add(child); + } + if (newList != null && newList.Any()) + { + parameters.Remove("list"); + parameters.Add("list", newList); + } + } + dto.parameters = parameters; + break; + } + case "goods": + { + var parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); var where = PredicateBuilder.True(); where = where.And(p => p.isDel == false); where = where.And(p => p.isMarketable == true); - - if (child != null && child.ContainsKey("type") && child["type"].ToString() == "auto") + if (parameters != null && parameters.ContainsKey("type") && parameters["type"].ToString() == "auto") { //商品分类,同时取所有子分类 - if (child.ContainsKey("classifyId") && child["classifyId"].ObjectToInt(0) > 0) + if (parameters.ContainsKey("classifyId") && parameters["classifyId"].ObjectToInt(0) > 0) { - var classifyId = child["classifyId"].ObjectToInt(0); + var classifyId = parameters["classifyId"].ObjectToInt(0); var gc = await _goodsCategoryServices.GetCaChe(); var childCats = gc.Where(p => p.parentId == classifyId).ToList(); var catIds = childCats != null && childCats.Any() @@ -304,39 +384,39 @@ namespace CoreCms.Net.Services //扩展分类 CoreCmsGoodsCategory } //品牌筛选 - if (child.ContainsKey("brandId") && child["brandId"].ObjectToInt(0) > 0) + if (parameters.ContainsKey("brandId") && parameters["brandId"].ObjectToInt(0) > 0) { - var brandId = child["brandId"].ObjectToInt(0); + var brandId = parameters["brandId"].ObjectToInt(0); where = where.And(p => p.brandId == brandId); } - + //数量 var limit = 0; - if (child.ContainsKey("limit") && child["limit"].ObjectToInt(0) > 0) + if (parameters.ContainsKey("limit") && parameters["limit"].ObjectToInt(0) > 0) { - limit = child["limit"].ObjectToInt(0); + limit = parameters["limit"].ObjectToInt(0); } limit = limit > 0 ? limit : 10; - var goods = await _goodsServices.QueryListByClauseAsync(where, limit, p => p.createTime, OrderByType.Desc, true); + var goods = await _goodsServices.QueryPageAsync(where, " sort desc,id desc ", 1, limit, true); if (goods != null && goods.Any()) { - JArray result = JArray.FromObject(goods); - child.Remove("list"); - child.Add("list", result); + var result = JArray.FromObject(goods); + parameters.Remove("list"); + parameters.Add("list", result); } else { - child.Remove("list"); - child.Add("list", new JArray()); + parameters.Remove("list"); + parameters.Add("list", new JArray()); } } else { var orderBy = string.Empty; string goodidsStr; - if (child != null && child.ContainsKey("list")) + if (parameters != null && parameters.ContainsKey("list")) { - JArray result = JArray.Parse(child["list"].ToString()); + JArray result = JArray.Parse(parameters["list"].ToString()); var goodids = new List(); foreach (var ss in result) //查找某个字段与值 { @@ -361,390 +441,294 @@ namespace CoreCms.Net.Services } } } - var goods = await _goodsServices.QueryListByClauseAsync(where, orderBy); + var goods = await _goodsServices.QueryListByClauseAsync(where, orderBy, true); if (goods != null && goods.Any()) { JArray result = JArray.FromObject(goods); - child.Remove("list"); - child.Add("list", result); + parameters.Remove("list"); + parameters.Add("list", result); } else { - child.Remove("list"); - child.Add("list", new JArray()); + parameters.Remove("list"); + parameters.Add("list", new JArray()); } } - count++; - newList.Add(child); - } - if (newList != null && newList.Any()) - { - parameters.Remove("list"); - parameters.Add("list", newList); + dto.parameters = parameters; + break; } - } - dto.parameters = parameters; - } - else if (item.widgetCode == "goods") - { - JObject parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - - var where = PredicateBuilder.True(); - where = where.And(p => p.isDel == false); - where = where.And(p => p.isMarketable == true); - if (parameters != null && parameters.ContainsKey("type") && parameters["type"].ToString() == "auto") - { - //商品分类,同时取所有子分类 - if (parameters.ContainsKey("classifyId") && parameters["classifyId"].ObjectToInt(0) > 0) + case "article": + dto.parameters = JsonConvert.DeserializeObject(item.parameters); + break; + case "articleClassify": { - var classifyId = parameters["classifyId"].ObjectToInt(0); - var gc = await _goodsCategoryServices.GetCaChe(); - var childCats = gc.Where(p => p.parentId == classifyId).ToList(); - var catIds = childCats != null && childCats.Any() - ? childCats.Select(p => p.id).ToList() - : new List(); - catIds.Add(classifyId); - - where = where.And(p => catIds.Contains(p.goodsCategoryId)); - //扩展分类 CoreCmsGoodsCategory - } - //品牌筛选 - if (parameters.ContainsKey("brandId") && parameters["brandId"].ObjectToInt(0) > 0) - { - var brandId = parameters["brandId"].ObjectToInt(0); - where = where.And(p => p.brandId == brandId); - } - - var limit = 0; - if (parameters.ContainsKey("limit") && parameters["limit"].ObjectToInt(0) > 0) - { - limit = parameters["limit"].ObjectToInt(0); - } - limit = limit > 0 ? limit : 10; - - var goods = await _goodsServices.QueryPageAsync(where, " sort desc,id desc ", 1, limit, true); - if (goods != null && goods.Any()) - { - JArray result = JArray.FromObject(goods); - parameters.Remove("list"); - parameters.Add("list", result); - } - else - { - parameters.Remove("list"); - parameters.Add("list", new JArray()); - } - } - else - { - var orderBy = string.Empty; - string goodidsStr; - if (parameters != null && parameters.ContainsKey("list")) - { - JArray result = JArray.Parse(parameters["list"].ToString()); - var goodids = new List(); - foreach (var ss in result) //查找某个字段与值 + var parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); + if (parameters != null) { - var goodid = ((JObject)ss)["id"].ObjectToInt(0); - if (goodid > 0) + if (parameters.ContainsKey("articleClassifyId") && parameters["articleClassifyId"].ObjectToInt(0) > 0) { - goodids.Add(goodid); - } - } - where = where.And(p => goodids.Contains(p.id)); - if (goodids.Any()) - { - goodidsStr = string.Join(",", goodids); - //按照id序列打乱后的顺序排序 - if (AppSettingsConstVars.DbDbType == DbType.SqlServer.ToString()) - { - orderBy = " CHARINDEX(RTRIM(CAST(id as NCHAR)),'" + goodidsStr + "') "; - } - else if (AppSettingsConstVars.DbDbType == DbType.MySql.ToString()) - { - orderBy = " find_in_set(id,'" + goodidsStr + "') "; - } - } - } - var goods = await _goodsServices.QueryListByClauseAsync(where, orderBy); - if (goods != null && goods.Any()) - { - JArray result = JArray.FromObject(goods); - parameters.Remove("list"); - parameters.Add("list", result); - } - else - { - parameters.Remove("list"); - parameters.Add("list", new JArray()); - } - } + var articleClassifyId = parameters["articleClassifyId"].ObjectToInt(0); + var limit = parameters["limit"].ObjectToInt(0); + limit = limit > 0 ? limit : 20; + var articleClassifyObj = await _articleTypeServices.QueryByClauseAsync(p => p.id == articleClassifyId, true, true); + var articleClassifyObjJson = JsonConvert.SerializeObject(articleClassifyObj); - dto.parameters = parameters; + parameters.Add("articleClassifyObj", JToken.Parse(articleClassifyObjJson)); - } - else if (item.widgetCode == "article") - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else if (item.widgetCode == "articleClassify") - { - JObject parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - - if (parameters != null) - { - if (parameters.ContainsKey("articleClassifyId") && parameters["articleClassifyId"].ObjectToInt(0) > 0) - { - var articleClassifyId = parameters["articleClassifyId"].ObjectToInt(0); - var limit = parameters["limit"].ObjectToInt(0); - limit = limit > 0 ? limit : 20; - var list = await _articleServices.QueryPageAsync(p => p.typeId == articleClassifyId && p.isPub == true, - p => p.createTime, OrderByType.Desc, 1, limit); - if (list != null && list.Any()) - { - JArray result = JArray.FromObject(list); - parameters.Remove("list"); - parameters.Add("list", result); - } - } - } - - dto.parameters = parameters; - } - else if (item.widgetCode == "navBar") - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else if (item.widgetCode == "groupPurchase") - { - JObject parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - - if (parameters != null && parameters.ContainsKey("list")) - { - JArray result = JArray.Parse(parameters["list"].ToString()); - var newReslut = new JArray(); - foreach (var jToken in result) - { - var ss = (JObject)jToken; - if (ss.ContainsKey("id")) - { - //判断拼团状态 - var dt = DateTime.Now; - - var promotionId = ((JObject)ss)["id"].ObjectToInt(0); - if (promotionId > 0) - { - var promotionModel = await _promotionServices.QueryByClauseAsync(p => p.id == promotionId && p.isEnable == true && p.startTime <= dt && p.endTime > dt, true); - if (promotionModel != null) + var list = await _articleServices.QueryPageAsync(p => p.typeId == articleClassifyId && p.isPub == true, p => p.createTime, OrderByType.Desc, 1, limit, true, true); + if (list != null && list.Any()) { - var condition = await _promotionConditionServices.QueryByClauseAsync(p => p.promotionId == promotionId, true); - if (condition != null) - { - var obj = (JObject)JsonConvert.DeserializeObject(condition.parameters); - if (obj.ContainsKey("goodsId") && obj["goodsId"].ObjectToInt(0) > 0) - { - var goodsId = obj["goodsId"].ObjectToInt(0); - var goods = await _promotionServices.GetGroupDetail(goodsId, 0, (int)GlobalEnumVars.PromotionType.Group, promotionId); - if (goods.status) - { - var goodJson = JsonConvert.SerializeObject(goods.data); - ((JObject)ss).Add("goods", JToken.Parse(goodJson)); - } - } - } - - var startStatus = 1; - int lastTime = 0; - bool isOverdue = false; - - if (promotionModel.startTime > dt) - { - startStatus = (int)GlobalEnumVars.GroupSeckillStatus.Upcoming; - - TimeSpan ts = promotionModel.startTime.Subtract(dt); - lastTime = (int)ts.TotalSeconds; - isOverdue = lastTime > 0; - } - else if (promotionModel.startTime <= dt && promotionModel.endTime > dt) - { - startStatus = (int)GlobalEnumVars.GroupSeckillStatus.InProgress; - - TimeSpan ts = promotionModel.endTime.Subtract(dt); - lastTime = (int)ts.TotalSeconds; - isOverdue = lastTime > 0; - } - else - { - startStatus = (int)GlobalEnumVars.GroupSeckillStatus.Finished; - } - - ((JObject)ss).Add("startStatus", startStatus); - ((JObject)ss).Add("lastTime", lastTime); - ((JObject)ss).Add("isOverdue", isOverdue); - - newReslut.Add(ss); + var result = JArray.FromObject(list); + parameters.Remove("list"); + parameters.Add("list", result); } } } + + dto.parameters = parameters; + break; } - parameters.Remove("list"); - parameters.Add("list", newReslut); - } - - dto.parameters = parameters; - } - else if (item.widgetCode == "record") - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else if (item.widgetCode == "pinTuan") - { - JObject parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - - if (parameters != null && parameters.ContainsKey("list")) - { - JArray result = JArray.Parse(parameters["list"].ToString()); - var newReslut = new JArray(); - foreach (JObject ss in result) + case "navBar": + dto.parameters = JsonConvert.DeserializeObject(item.parameters); + break; + case "groupPurchase": { - if (ss.ContainsKey("goodsId")) + var parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); + if (parameters != null && parameters.ContainsKey("list")) { - var ruleId = ((JObject)ss)["id"].ObjectToInt(0); - if (ruleId > 0) + var result = JArray.Parse(parameters["list"].ToString()); + var newReslut = new JArray(); + foreach (var jToken in result) { - var goodsInfo = await _pinTuanRuleServices.GetPinTuanInfo(ruleId); - if (goodsInfo != null) + var ss = (JObject)jToken; + if (ss.ContainsKey("id")) + { + //判断拼团状态 + var dt = DateTime.Now; + var promotionId = ss["id"].ObjectToInt(0); + if (promotionId > 0) + { + var promotionModel = await _promotionServices.QueryByClauseAsync(p => p.id == promotionId && p.isEnable == true && p.startTime <= dt && p.endTime > dt, true, true); + if (promotionModel != null) + { + var condition = await _promotionConditionServices.QueryByClauseAsync(p => p.promotionId == promotionId, true, true); + if (condition != null) + { + var goods = await _promotionServices.GetGroupDetail(promotionId, 0, (int)GlobalEnumVars.PromotionType.Group, false); + if (goods.status) + { + var goodJson = JsonConvert.SerializeObject(goods.data); + ss.Add("goods", JToken.Parse(goodJson)); + } + } + int startStatus; + var lastTime = 0; + if (promotionModel.startTime > dt) + { + startStatus = (int)GlobalEnumVars.GroupSeckillStatus.Upcoming; + var ts = promotionModel.startTime.Subtract(dt); + lastTime = (int)ts.TotalSeconds; + } + else if (promotionModel.startTime <= dt && promotionModel.endTime > dt) + { + startStatus = (int)GlobalEnumVars.GroupSeckillStatus.InProgress; + var ts = promotionModel.endTime.Subtract(dt); + lastTime = (int)ts.TotalSeconds; + } + else + { + startStatus = (int)GlobalEnumVars.GroupSeckillStatus.Finished; + } + + ss.Add("startStatus", startStatus); + ss.Add("lastTime", lastTime); + newReslut.Add(ss); + } + } + } + } + parameters.Remove("list"); + parameters.Add("list", newReslut); + } + + dto.parameters = parameters; + break; + } + case "seckill": + { + var parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); + if (parameters != null && parameters.ContainsKey("list")) + { + var result = JArray.Parse(parameters["list"].ToString()); + var newReslut = new JArray(); + foreach (var jToken in result) + { + var ss = (JObject)jToken; + if (ss.ContainsKey("id")) + { + //判断拼团状态 + var dt = DateTime.Now; + var promotionId = ss["id"].ObjectToInt(0); + if (promotionId > 0) + { + var promotionModel = await _promotionServices.QueryByClauseAsync(p => p.id == promotionId && p.isEnable == true && p.startTime <= dt && p.endTime > dt, true, true); + if (promotionModel != null) + { + var condition = await _promotionConditionServices.QueryByClauseAsync(p => p.promotionId == promotionId, true, true); + if (condition != null) + { + var goods = await _promotionServices.GetGroupDetail(promotionId, 0, (int)GlobalEnumVars.PromotionType.Seckill, false); + if (goods.status) + { + var goodJson = JsonConvert.SerializeObject(goods.data); + ss.Add("goods", JToken.Parse(goodJson)); + } + } + + int startStatus; + int lastTime = 0; + + if (promotionModel.startTime > dt) + { + startStatus = (int)GlobalEnumVars.GroupSeckillStatus.Upcoming; + + var ts = promotionModel.startTime.Subtract(dt); + lastTime = (int)ts.TotalSeconds; + } + else if (promotionModel.startTime <= dt && promotionModel.endTime > dt) + { + startStatus = (int)GlobalEnumVars.GroupSeckillStatus.InProgress; + + var ts = promotionModel.endTime.Subtract(dt); + lastTime = (int)ts.TotalSeconds; + } + else + { + startStatus = (int)GlobalEnumVars.GroupSeckillStatus.Finished; + } + + ss.Add("startStatus", startStatus); + ss.Add("lastTime", lastTime); + newReslut.Add(ss); + } + } + } + } + parameters.Remove("list"); + parameters.Add("list", newReslut); + } + + dto.parameters = parameters; + break; + } + case "record": + dto.parameters = JsonConvert.DeserializeObject(item.parameters); + break; + case "pinTuan": + { + var parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); + if (parameters != null && parameters.ContainsKey("list")) + { + var result = JArray.Parse(parameters["list"].ToString()); + var newReslut = new JArray(); + + var ruleIdIds = (from JObject ss in result where ss.ContainsKey("goodsId") select ss["id"].ObjectToInt(0)).ToArray(); + + if (ruleIdIds.Any()) + { + var dtoData = await _pinTuanRuleServices.GetPinTuanInfos(ruleIdIds, p => p.sortId, OrderByType.Asc, 1, result.Count); + foreach (var itemDto in dtoData) { - var pinTuanStartStatus = 1; - int lastTime = 0; - bool isOverdue = false; //判断拼团状态 var dt = DateTime.Now; - if (goodsInfo.startTime > dt) + if (itemDto.startTime > dt) { - pinTuanStartStatus = (int)GlobalEnumVars.PinTuanRuleStatus.notBegun; - - TimeSpan ts = goodsInfo.startTime.Subtract(dt); - lastTime = (int)ts.TotalSeconds; - isOverdue = lastTime > 0; + itemDto.startStatus = (int)GlobalEnumVars.PinTuanRuleStatus.notBegun; + itemDto.timestamp = (int)itemDto.startTime.Subtract(dt).TotalSeconds; } - else if (goodsInfo.startTime <= dt && goodsInfo.endTime > dt) + else if (itemDto.startTime <= dt && itemDto.endTime > dt) { - pinTuanStartStatus = (int)GlobalEnumVars.PinTuanRuleStatus.begin; - - TimeSpan ts = goodsInfo.endTime.Subtract(dt); - lastTime = (int)ts.TotalSeconds; - isOverdue = lastTime > 0; + itemDto.startStatus = (int)GlobalEnumVars.PinTuanRuleStatus.begin; + itemDto.timestamp = (int)itemDto.endTime.Subtract(dt).TotalSeconds; } else { - pinTuanStartStatus = (int)GlobalEnumVars.PinTuanRuleStatus.haveExpired; + itemDto.startStatus = (int)GlobalEnumVars.PinTuanRuleStatus.haveExpired; } - decimal pinTuanPrice = goodsInfo.goodsPrice - goodsInfo.discountAmount; - if (pinTuanPrice < 0) pinTuanPrice = 0; + itemDto.pinTuanPrice -= itemDto.discountAmount; + if (itemDto.pinTuanPrice < 0) itemDto.pinTuanPrice = 0; - var obj = new JObject(); - ((JObject)obj).Add("pinTuanStartStatus", pinTuanStartStatus); - ((JObject)obj).Add("lastTime", lastTime); - ((JObject)obj).Add("isOverdue", isOverdue); - ((JObject)obj).Add("pinTuanPrice", pinTuanPrice); - - ((JObject)obj).Add("createTime", goodsInfo.createTime); - ((JObject)obj).Add("discountAmount", goodsInfo.discountAmount); - ((JObject)obj).Add("endTime", goodsInfo.endTime); - ((JObject)obj).Add("goodsId", goodsInfo.goodsId); - ((JObject)obj).Add("goodsImage", goodsInfo.goodsImage); - ((JObject)obj).Add("goodsName", goodsInfo.goodsName); - ((JObject)obj).Add("goodsPrice", goodsInfo.goodsPrice); - ((JObject)obj).Add("id", goodsInfo.id); - ((JObject)obj).Add("isStatusOpen", goodsInfo.isStatusOpen); - ((JObject)obj).Add("maxGoodsNums", goodsInfo.maxGoodsNums); - ((JObject)obj).Add("maxNums", goodsInfo.maxNums); - ((JObject)obj).Add("name", goodsInfo.name); - ((JObject)obj).Add("peopleNumber", goodsInfo.peopleNumber); - ((JObject)obj).Add("significantInterval", goodsInfo.significantInterval); - ((JObject)obj).Add("sort", goodsInfo.sort); - ((JObject)obj).Add("startTime", goodsInfo.startTime); - ((JObject)obj).Add("updateTime", goodsInfo.updateTime); - - //((JObject)ss).Add("goodsInfo", JToken.FromObject(goodsInfo)); - newReslut.Add(obj); + newReslut.Add(JObject.FromObject(itemDto)); } + parameters.Remove("list"); + parameters.Add("list", newReslut); } } + dto.parameters = parameters; + break; } - parameters.Remove("list"); - parameters.Add("list", newReslut); - } - - dto.parameters = parameters; - - } - else if (item.widgetCode == "service") - { - var parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - - if (parameters != null && parameters.ContainsKey("list")) - { - var result = JArray.Parse(parameters["list"].ToString()); - var ids = (from JObject ss in result where ss.ContainsKey("id") select ((JObject)ss)["id"].ObjectToInt(0) into id where id > 0 select id).ToList(); - - if (ids.Any()) + case "service": { - var serviceObj = await _servicesServices.QueryListByClauseAsync(p => ids.Contains(p.id)); - foreach (var jToken in result) + var parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); + + if (parameters != null && parameters.ContainsKey("list")) { - var ss = (JObject) jToken; - var id = ((JObject)ss)["id"].ObjectToInt(0); - var serviceInfo = serviceObj.Find(p => p.id == id); - if (serviceInfo != null) + var result = JArray.Parse(parameters["list"].ToString()); + var ids = (from JObject ss in result where ss.ContainsKey("id") select ((JObject)ss)["id"].ObjectToInt(0) into id where id > 0 select id).ToList(); + + if (ids.Any()) { - var openStatus = 1; - int lastTime = 0; - var dt = DateTime.Now; - if (serviceInfo.startTime > dt) + var serviceObj = await _servicesServices.QueryListByClauseAsync(p => ids.Contains(p.id), p => p.id, OrderByType.Asc, true, true); + foreach (var jToken in result) { - openStatus = (int)GlobalEnumVars.ServicesOpenStatus.notBegun; - TimeSpan ts = serviceInfo.startTime.Subtract(dt); - lastTime = (int)ts.TotalSeconds; - } - else if (serviceInfo.startTime <= dt && serviceInfo.endTime > dt) - { - openStatus = (int)GlobalEnumVars.ServicesOpenStatus.begin; + var ss = (JObject)jToken; + var id = ss["id"].ObjectToInt(0); + var serviceInfo = serviceObj.Find(p => p.id == id); + if (serviceInfo != null) + { + int openStatus; + int lastTime = 0; + var dt = DateTime.Now; + if (serviceInfo.startTime > dt) + { + openStatus = (int)GlobalEnumVars.ServicesOpenStatus.notBegun; + var ts = serviceInfo.startTime.Subtract(dt); + lastTime = (int)ts.TotalSeconds; + } + else if (serviceInfo.startTime <= dt && serviceInfo.endTime > dt) + { + openStatus = (int)GlobalEnumVars.ServicesOpenStatus.begin; - TimeSpan ts = serviceInfo.endTime.Subtract(dt); - lastTime = (int)ts.TotalSeconds; + var ts = serviceInfo.endTime.Subtract(dt); + lastTime = (int)ts.TotalSeconds; + } + else + { + openStatus = (int)GlobalEnumVars.ServicesOpenStatus.haveExpired; + } + ss.Add("openStatus", openStatus); + ss.Add("lastTime", lastTime); + } } - else - { - openStatus = (int)GlobalEnumVars.ServicesOpenStatus.haveExpired; - } - ss.Add("openStatus", openStatus); - ss.Add("lastTime", lastTime); } + + parameters.Remove("list"); + parameters.Add("list", result); } + + dto.parameters = parameters; + break; } - - parameters.Remove("list"); - parameters.Add("list", result); - } - - dto.parameters = parameters; - } - else if (item.widgetCode == "adpop") - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else if (item.widgetCode == "topImgSlide") - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); - } - else - { - dto.parameters = (JObject)JsonConvert.DeserializeObject(item.parameters); + case "adpop": + case "topImgSlide": + dto.parameters = JsonConvert.DeserializeObject(item.parameters); + break; + default: + dto.parameters = JsonConvert.DeserializeObject(item.parameters); + break; } itemsDto.Add(dto); } diff --git a/CoreCms.Net.Uni-App/CoreShop/App.vue b/CoreCms.Net.Uni-App/CoreShop/App.vue index ec6d6dc6..7c3b8ab9 100644 --- a/CoreCms.Net.Uni-App/CoreShop/App.vue +++ b/CoreCms.Net.Uni-App/CoreShop/App.vue @@ -10,6 +10,14 @@ showLoginTip: false, }, onLaunch() { + + // 此版本发布于2022-10-23 + const version = '0.6.4' + // 开发环境才提示,生产环境不会提示 + if (process.env.NODE_ENV === 'development') { + console.log(`\n %c \u6838\u5fc3\u5546\u57ce\u7cfb\u7edf\u0020\u0043\u006f\u0072\u0065\u0053\u0068\u006f\u0070 V${version} %c \u0068\u0074\u0074\u0070\u0073\u003a\u002f\u002f\u0077\u0077\u0077\u002e\u0063\u006f\u0072\u0065\u0073\u0068\u006f\u0070\u002e\u0063\u006e\u002f \n\n`, 'color: #ffffff; background: #3c9cff; padding:5px 0;', 'color: #3c9cff;background: #f1f1f1; padding:5px 0;'); + } + // #ifdef MP-WEIXIN this.autoUpdate(); // #endif @@ -21,14 +29,6 @@ // 获取店铺配置信息 全局只请求一次 this.$u.api.shopConfigV2().then(res => { this.$store.commit('config', res.data) - // #ifdef H5 - //百度统计 - if (res.data.statistics) { - var script = document.createElement("script"); - script.innerHTML = res.data.statistics; - document.getElementsByTagName("body")[0].appendChild(script); - } - // #endif }) //获取三级联动城市信息 this.$u.api.getAreaList().then(res => { @@ -36,12 +36,11 @@ this.$db.set('areaList', res.data) } }); - }, onShow: function (obj) { // #ifdef MP-WEIXIN this.$store.commit('scene', obj.scene) - console.log(obj); + //console.log(obj); // #endif //console.log('App Show') }, @@ -170,7 +169,7 @@ // vue App的样式 /* #ifdef APP-PLUS */ - @import "@/static/style/style.vue.scss"; + @import "@/static/style/style.app.scss"; /* #endif */ // 小程序特有的样式 diff --git a/CoreCms.Net.Uni-App/CoreShop/common/mixins/mixinsHelper.js b/CoreCms.Net.Uni-App/CoreShop/common/mixins/mixinsHelper.js index afa00815..97569ef2 100644 --- a/CoreCms.Net.Uni-App/CoreShop/common/mixins/mixinsHelper.js +++ b/CoreCms.Net.Uni-App/CoreShop/common/mixins/mixinsHelper.js @@ -160,21 +160,25 @@ module.exports = { this.$u.route(url) }, // 秒杀详情 - goSeckillDetail(id, groupId) { - this.$u.route('/pages/activity/seckill/seckillDetails/seckillDetails', { id: id, groupId: groupId, }); + goSeckillDetail(id) { + this.$u.route('/pages/activity/seckill/seckillDetails/seckillDetails', { id: id }); }, // 团购详情 - goGroupBuyingDetail(id, groupId) { - this.$u.route('/pages/activity/groupBuying/groupBuyingDetails/groupBuyingDetails', { id: id, groupId: groupId, }); + goGroupBuyingDetail(id) { + this.$u.route('/pages/activity/groupBuying/groupBuyingDetails/groupBuyingDetails', { id: id }); }, //拼团详情页 - goPinTuanDetail(id, pinTuanId, teamId) { + goPinTuanDetail(id, teamId) { if (teamId) { - this.$u.route('/pages/activity/pinTuan/pinTuanDetails/pinTuanDetails', { id: id, pinTuanId: pinTuanId, teamId: teamId, }); + this.$u.route('/pages/activity/pinTuan/pinTuanDetails/pinTuanDetails', { id: id, teamId: teamId, }); } else { - this.$u.route('/pages/activity/pinTuan/pinTuanDetails/pinTuanDetails', { id: id, pinTuanId: pinTuanId }); + this.$u.route('/pages/activity/pinTuan/pinTuanDetails/pinTuanDetails', { id: id }); } }, + // 查看团购列表 + goGroupPurchase() { + this.$u.route('/pages/activity/groupBuying/list/list') + }, // 查看秒杀列表 goSeckillList() { this.$u.route('/pages/activity/seckill/list/list') @@ -189,7 +193,10 @@ module.exports = { * 文章接口 */ - // 查看文章总列表 + // 查看文章分类 + goArticleClassify(id) { + this.$u.route('/pages/article/list/list', { id: id }); + }, goArticleList() { this.$u.route('/pages/article/list/list') }, @@ -231,7 +238,7 @@ module.exports = { * 接龙接口信息 */ - // 查看服务详情 + // 查看接龙详情 goSolitaireDetail(id) { this.$u.route('/pages/activity/solitaire/solitaireDetails/solitaireDetails', { id: id }); }, @@ -241,7 +248,6 @@ module.exports = { }, //服务接口信息 - // 查看服务详情 goServicesDetail(serviceId) { this.$u.route('/pages/serviceGoods/details/details', { id: serviceId }); }, @@ -266,14 +272,11 @@ module.exports = { } if (type == navLinkType.urlLink) { if (val.indexOf('http') != -1) { - // #ifdef H5 - window.location.href = val - // #endif - // #ifdef H5 || APP-PLUS || APP-PLUS-NVUE || MP + // #ifdef APP-PLUS || APP-PLUS-NVUE || MP this.$u.route('/pages/webview/webview', { src: val }); // #endif } else { - // #ifdef H5 || APP-PLUS || APP-PLUS-NVUE || MP + // #ifdef APP-PLUS || APP-PLUS-NVUE || MP if (val == '/pages/index/default/default' || val == '/pages/category/index/index' || val == '/pages/index/cart/cart' || val == '/pages/index/member/member') { this.$u.route({ type: 'switchTab', url: val }); return; diff --git a/CoreCms.Net.Uni-App/CoreShop/common/request/http.api.js b/CoreCms.Net.Uni-App/CoreShop/common/request/http.api.js index 25658444..26c03d1e 100644 --- a/CoreCms.Net.Uni-App/CoreShop/common/request/http.api.js +++ b/CoreCms.Net.Uni-App/CoreShop/common/request/http.api.js @@ -5,7 +5,6 @@ const install = (Vue, vm) => { // 获取店铺配置 - //let shopConfig = (params, config = {}) => http.post('/Api/Common/GetConfig', params, { custom: { methodName: 'common.shopConfig', needToken: false } }); let shopConfigV2 = (params, config = {}) => http.post('/Api/Common/GetConfigV2', params, { custom: { methodName: 'common.shopConfigV2', needToken: false } }); //获取商城关键词说明 let getServiceDescription = (params, config = {}) => http.post('/Api/Common/GetServiceDescription', params, { custom: { methodName: 'common.getServiceDescription', needToken: false } }); @@ -399,24 +398,11 @@ const install = (Vue, vm) => { let serviceVerificationTicket = (params, config = {}) => http.post('/Api/Service/VerificationTicket', params, { custom: { methodName: 'service.verificationTicket', needToken: true } }); - //获取接龙列表 let getSolitairePageList = (params, config = {}) => http.post('/Api/Solitaire/GetList', params, { custom: { methodName: 'solitaire.getList', needToken: false } }); let getSolitaireDetail = (params, config = {}) => http.post('/Api/Solitaire/GetDetail', params, { custom: { methodName: 'solitaire.getDetail', needToken: false } }); - - // 用户注册(废弃,改为自动获取app数据及使用短信验证码登录)建议直接使用smsLogin接口 - //let reg = (params, config = {}) => http.post('/Api/Common/InterFaceTest', params, { custom: { methodName: 'user.reg', needToken: true } }); - // 用户登录(废弃,改为短信验证码登录) - //let login = (params, config = {}) => http.post('/Api/Common/InterFaceTest', params, { custom: { methodName: 'user.login', needToken: true } }); - // 获取用户信息(废弃) - // let trustLogin = (params, config = {}) => http.post('/Api/Common/InterFaceTest', params, { custom: { methodName: 'user.trustcallback', needToken: true } }); - // 订单售后状态(废弃方法,建议直接用order.details接口) - // let afterSalesStatus = (params, config = {}) => http.post('/Api/Common/InterFaceTest', params, { custom: { methodName: 'order.aftersalesstatus', needToken: true } }); - // 我的积分(弃用) - //let myPoint = (params, config = {}) => http.post('/Api/Common/InterFaceTest', params, { custom: { methodName: 'user.mypoint', needToken: true } }); - // 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下 vm.$u.api = { shopConfigV2, @@ -485,8 +471,7 @@ const install = (Vue, vm) => { paymentInfo, pay, orderEvaluate, - //isSign, - //sign, + userCheckIn, getUserCheckByMonth, getUserCheckCount, diff --git a/CoreCms.Net.Uni-App/CoreShop/common/request/request.js b/CoreCms.Net.Uni-App/CoreShop/common/request/request.js index dd08fca9..63f5879f 100644 --- a/CoreCms.Net.Uni-App/CoreShop/common/request/request.js +++ b/CoreCms.Net.Uni-App/CoreShop/common/request/request.js @@ -17,16 +17,12 @@ module.exports = (vm) => { // #endif // 注:如果局部custom与全局custom有同名属性,则后面的属性会覆盖前面的属性,相当于Object.assign(全局,局部) //defaultConfig.custom = {}; // 全局自定义参数默认值 - // #ifdef H5 || APP-PLUS || MP-ALIPAY || MP-WEIXIN + // #ifdef APP-PLUS || MP-ALIPAY || MP-WEIXIN defaultConfig.timeout = 60000; // #endif // #ifdef APP-PLUS defaultConfig.sslVerify = true; // #endif - // #ifdef H5 - // 跨域请求时是否携带凭证(cookies)仅H5支持(HBuilderX 2.6.15+) - defaultConfig.withCredentials = false; - // #endif // #ifdef APP-PLUS defaultConfig.firstIpv4 = false; // DNS解析时优先使用ipv4 仅 App-Android 支持 (HBuilderX 2.8.0+) // #endif @@ -84,7 +80,7 @@ module.exports = (vm) => { //console.log(page.route); // 登录信息过期或者未登录 if (data.data === 14007 || data.data === 14006) { - // #ifdef H5 || APP-PLUS || APP-PLUS-NVUE + // #ifdef APP-PLUS || APP-PLUS-NVUE if (page.route.indexOf('pages/login/loginBySMS/loginBySMS') < 0) { db.del("userToken"); uni.showToast({ diff --git a/CoreCms.Net.Uni-App/CoreShop/common/setting/constVarsHelper.js b/CoreCms.Net.Uni-App/CoreShop/common/setting/constVarsHelper.js index 6fa977b1..5e1bab94 100644 --- a/CoreCms.Net.Uni-App/CoreShop/common/setting/constVarsHelper.js +++ b/CoreCms.Net.Uni-App/CoreShop/common/setting/constVarsHelper.js @@ -1,20 +1,14 @@ /** * 全局配置文件 - * @version 0.6.2 + * @version 1.0.0 */ //接口请求地址,如果需要不部署接口端的情况下测试uni-app,可以直接替换为官方测试接口:https://api.demo.coreshop.cn -//export const apiBaseUrl = 'https://api.pro.coreshop.cn'; -export const apiBaseUrl = 'http://localhost:2015'; +export const apiBaseUrl = process.env.NODE_ENV === 'development' ? 'https://api.nsts.mvccms.cn' : 'https://api.nsts.mvccms.cn'; + //项目静态资源请求地址,如果使用官方的静态文件地址可以直接替换为:https://files.cdn.coreshop.cn export const apiFilesUrl = 'https://files.cdn.coreshop.cn'; -export const h5Url = apiBaseUrl + "/wap/"; //H5端网站地址, - -// #ifdef H5 -export const baseUrl = process.env.NODE_ENV === 'development' ? window.location.origin + '/' : apiBaseUrl -// #endif - //支付单类型 export const paymentType = { //普通订单 @@ -25,7 +19,6 @@ export const paymentType = { group: 3, //秒杀订单 seckill: 4, - //砍价 bargain: 6, //赠品 @@ -34,10 +27,8 @@ export const paymentType = { solitaire: 8, //交易组件 transactionComponent: 10, - //充值 recharge: 201, - //服务订单 serviceOrder: 501, //表单付款码 @@ -46,7 +37,6 @@ export const paymentType = { formOrder: 302, }; - //分享链接及海报类型 export const shareType = { // 首页 @@ -55,7 +45,7 @@ export const shareType = { goods: 2, // 3拼团详情页 pinTuan: 3, - // 4店铺邀请 + // 4分销店铺 inv: 4, // 5文章页面 article: 5, @@ -69,15 +59,54 @@ export const shareType = { group: 9, // 10秒杀 seckill: 10, - // 11代理 + // 11代理店铺 agent: 11, // 12接龙 solitaire: 12, + // 13 服务商品 + serviceGoods: 13 +}; + +//分享终端 +export const shareClient = { + // 普通h5 + h5: 1, + // 微信小程序 + wxMiNiProgram: 2, + // 微信公众号(h5) + wxOfficial: 3, + // 头条系小程序 + ttMiNiProgram: 4, + // 电脑pc端 + pc: 5, + // 阿里小程序 + aLiMiNiProgram: 6, +}; + + +//分享终端 +export const shareModel = { + // 链接分享 + url: 1, + // 二维码 + qrCode: 2, + // 海报 + poster: 3, }; export const shareUrl = 'pages/share/jump/jump'; //分享初始化地址 +//列表加载状态 +export const loadStatus = { + // 加载前的状态 + loadMore: 'loadmore', + // 加载中的状态 + loading: 'loading', + // 没有更多的状态 + noMore: 'nomore', +}; + //nav页面导航类型 export const navLinkType = { @@ -87,3 +116,5 @@ export const navLinkType = { articleCategory: 4,// "文章分类", intelligentForms: 5// "智能表单" }; + + diff --git a/CoreCms.Net.Uni-App/CoreShop/common/setting/coreThemeHelper.js b/CoreCms.Net.Uni-App/CoreShop/common/setting/coreThemeHelper.js deleted file mode 100644 index 900f00c7..00000000 --- a/CoreCms.Net.Uni-App/CoreShop/common/setting/coreThemeHelper.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * 很多无法css实现的换肤效果,通过此模块实现 - * 使用方法,在代码中直接使用 this.$coreTheme.mainNabBar.background - * @version 1.0.0 - */ - -//通用头部背景样式 -export const mainNabBar = { - background: { - //颜色 - backgroundColor: '#e54d42', - // 导航栏背景图 - // background: 'url(https://cdn.uviewui.com/uview/swiper/1.jpg) no-repeat', - // 还可以设置背景图size属性 - // backgroundSize: 'cover', - - // 渐变色 - //backgroundImage: 'linear-gradient(45deg, rgb(28, 187, 180), rgb(141, 198, 63))' - }, - //通用头部文字颜色 - titleColor: "#fff", - //通用头部文字颜色 - backIconColor: "#fff", -}; - diff --git a/CoreCms.Net.Uni-App/CoreShop/common/utils/commonHelper.js b/CoreCms.Net.Uni-App/CoreShop/common/utils/commonHelper.js index c2518ec8..cc42459d 100644 --- a/CoreCms.Net.Uni-App/CoreShop/common/utils/commonHelper.js +++ b/CoreCms.Net.Uni-App/CoreShop/common/utils/commonHelper.js @@ -29,26 +29,8 @@ function modelShow( }; -//时间差转倒计时数据 -function timeToDateObj(micro_second) { - var time = {} - // 总秒数 - var second = Math.floor(micro_second) - // 天数 - time.day = Math.floor(second / 3600 / 24) - // 小时 - time.hour = Math.floor((second / 3600) % 24) - // 分钟 - time.minute = Math.floor((second / 60) % 60) - // 秒 - time.second = Math.floor(second % 60) - return time -}; - //货币格式化 function formatMoney(number, places, symbol, thousand, decimal) { - // console.log(number) - // console.log(places) number = number || 0 places = !isNaN((places = Math.abs(places))) ? places : 2 symbol = symbol !== undefined ? symbol : '¥' @@ -71,41 +53,6 @@ function formatMoney(number, places, symbol, thousand, decimal) { ) } -/** - * 获取url参数 - * - * @param {*} name - * @param {*} [url=window.location.serach] - * @returns - */ -function getQueryString(name, url) { - var url = url || window.location.href - var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i') - var r = url.substr(1).match(reg) - if (r != null) { - return r[2] - } - return null -} - -/** - * - * 判断是否在微信浏览器 true是 - */ -function isWeiXinBrowser() { - // #ifdef H5 - // window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息,这个属性可以用来判断浏览器类型 - let ua = window.navigator.userAgent.toLowerCase() - // 通过正则表达式匹配ua中是否含有MicroMessenger字符串 - if (ua.match(/MicroMessenger/i) == 'micromessenger') { - return true - } else { - return false - } - // #endif - return false -} - /** * 金额相加 * @param {Object} value1 @@ -125,29 +72,9 @@ function moneySub(value1, value2) { } -//设置手机通知栏字体颜色 -function setBarColor(black = false) { - if (black) { - uni.setNavigationBarColor({ - frontColor: '#000000', - backgroundColor: '#FAFAFA' - }); - } else { - uni.setNavigationBarColor({ - frontColor: '#ffffff', - backgroundColor: '#FAFAFA' - }); - } -} - - export { formatMoney, modelShow, - isWeiXinBrowser, - getQueryString, - timeToDateObj, moneySum, moneySub, - setBarColor } diff --git a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-login-modal/coreshop-login-modal.vue b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-login-modal/coreshop-login-modal.vue index 729c025f..0f4356b1 100644 --- a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-login-modal/coreshop-login-modal.vue +++ b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-login-modal/coreshop-login-modal.vue @@ -98,7 +98,7 @@ * @property {Boolean} value=showLoginTip - 由v-model控制显示隐藏。 * @property {Boolean} forceOauth - 小程序端特制的全屏登录提示。 */ - import { mapMutations, mapActions, mapState } from 'vuex'; + import { mapState } from 'vuex'; export default { name: 'coreshopLoginModal', components: {}, diff --git a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-article.vue b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-article.vue index ac7b79e8..68c59a28 100644 --- a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-article.vue +++ b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-article.vue @@ -1,33 +1,57 @@ + \ No newline at end of file diff --git a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-content.vue b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-content.vue index 4d31b9a2..f121485b 100644 --- a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-content.vue +++ b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-content.vue @@ -12,15 +12,6 @@ content: { required: true, } - }, - created() { }, - methods: { - preview(src, e) { - // do something - }, - navigate(href, e) { - // do something - } } } diff --git a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-coupon.vue b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-coupon.vue index 9803076a..40757c7c 100644 --- a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-coupon.vue +++ b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-coupon.vue @@ -1,94 +1,71 @@ diff --git a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-goods.vue b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-goods.vue index 7fe5767e..8a4bb129 100644 --- a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-goods.vue +++ b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-goods.vue @@ -1,16 +1,19 @@ - - - - - - - + + + {{coreshopData.parameters.title}} + - - - - - - - {{item.name}} - - - {{item.price}}元 {{item.mktprice}}元 - - - 推荐 - - - 热门 - - - - {{ pointShowName}}兑换价: - - - {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ item.price - item.pointsDeduction}}元 - - - - - 购买赠送: - - - {{item.points}}{{ pointShowName}} - - + + + + + + + + + + {{ item.name }} + {{ item.brief }} + + 已售{{item.buyCount}}{{item.unit}} + {{item.viewCount}}人访问 - - + + + ¥{{ item.price }} + ¥{{ item.mktprice }} + + 马上抢 + + + + + {{ pointShowName}}兑换价: + + + {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ parseFloat(item.price,item.pointsDeduction).toFixed(2)}} 元 + + + + + 购买赠送: + + + {{item.points}}{{ pointShowName}} + + + @@ -136,18 +146,21 @@ - - - + + + {{coreshopData.parameters.title}} + - - + + + + + - - + + - + {{item.name}} @@ -166,7 +179,7 @@ {{ pointShowName}}兑换价: - {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ item.price - item.pointsDeduction}}元 + {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ parseFloat(item.price,item.pointsDeduction).toFixed(2)}} 元 @@ -186,12 +199,15 @@ - + - + + + + @@ -204,20 +220,9 @@ count: false }; }, - filters: { - substr(val) { - if (val.length == 0 || val == undefined) { - return false; - } else if (val.length > 13) { - return val.substring(0, 13) + "..."; - } else { - return val; - } - } - }, - name: "coreshopgoods", + name: "coreshopGoods", props: { - coreshopdata: { + coreshopData: { // type: Array, required: true, } @@ -243,9 +248,9 @@ }, }, created() { - this.count = this.coreshopdata.parameters.list.length > 0; - var page = Number(this.coreshopdata.parameters.list.length / this.coreshopdata.parameters.column).toFixed(0); - if (this.coreshopdata.parameters.column * page < this.coreshopdata.parameters.list.length) { + this.count = this.coreshopData.parameters.list.length > 0; + var page = Number(this.coreshopData.parameters.list.length / this.coreshopData.parameters.column).toFixed(0); + if (this.coreshopData.parameters.column * page < this.coreshopData.parameters.list.length) { page = Number(page) + 1; } for (var i = 0; i < page; i++) { @@ -256,20 +261,17 @@ + .mainWindow { width: 100%; height: 200px; + .left { width: 50%; height: 200px; } + .right { width: 50%; height: 200px; } + .minBox { width: 50%; } + } + diff --git a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-navBar.vue b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-navBar.vue index 6c47f3a2..3d4eabed 100644 --- a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-navBar.vue +++ b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-navBar.vue @@ -1,9 +1,9 @@  diff --git a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-record.vue b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-record.vue index 4070fc19..13e2b583 100644 --- a/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-record.vue +++ b/CoreCms.Net.Uni-App/CoreShop/components/coreshop-page/coreshop-record.vue @@ -1,5 +1,5 @@ diff --git a/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/list/list.vue b/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/list/list.vue index 3b6e4db7..daadd6e0 100644 --- a/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/list/list.vue +++ b/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/list/list.vue @@ -17,36 +17,36 @@ 爆款推荐 省钱省心限时拼 - - + + TOP{{ index + 1 }} - + - - {{ item.pinTuanRule.name }} - {{ item.name }} + + {{ item.name }} + {{ item.goodName }} - - - + 已拼{{item.buyPinTuanCount}}单 + 已售{{item.pinTuanRecordNums}}{{item.goodUnit}} + {{item.peopleNumber}}人团 ¥{{ item.pinTuanPrice }} - ¥{{ item.price }} + ¥{{ item.mktPrice }} - 马上拼 + 马上拼 - - - - - + + + + + @@ -62,7 +62,9 @@ export default { data() { return { - goodsList: [], + page: 1, + limit: 10, + list: [], status: 'loadmore', iconType: 'flower', loadText: { @@ -72,12 +74,41 @@ } }; }, - //加载执行 - onShow: function () { - _this = this - _this.getGoods(); + onLoad() { + this.getPinTuanlist() + }, + onShow() { + }, + onReachBottom() { + if (this.status === 'loadmore') { + this.getPinTuanlist() + } }, methods: { + getPinTuanlist() { + let _this = this; + let data = { + page: this.page, + limit: this.limit + } + this.status = 'loading' + this.$u.api.pinTuanList(data).then(res => { + if (res.status) { + if (res.data) { + let _list = res.data + this.list = [...this.list, ..._list] + } + if (res.code >= _this.list.length) { + _this.page++ + _this.status = 'loadmore' + } else { + _this.status = 'nomore' + } + } else { + _this.$u.toast(res.msg) + } + }) + }, //取得列表数据 getGoods: function () { uni.showLoading({ @@ -93,7 +124,7 @@ if (item.pinTuanPrice <= 0) { item.pinTuanPrice = '0.00'; } else { - item.pinTuanPrice = _this.$common.moneySub(item.price, item.pinTuanRule.discountAmount); + item.pinTuanPrice = parseFloat(item.price - item.pinTuanRule.discountAmount).toFixed(2); } }); } diff --git a/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/pinTuanDetails/details.scss b/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/pinTuanDetails/details.scss index bdff3fd9..c8636c30 100644 --- a/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/pinTuanDetails/details.scss +++ b/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/pinTuanDetails/details.scss @@ -1,7 +1,7 @@ .groupHeight { height: 61px !important; } .group-swiper-c { height: 121px; } - .group-swiper-c .swiper-item .coreshop-cell-item { height: 50%; } + .group-swiper-c .swiper-item .coreshop-cell-item { height: 50%; padding: 10px 0px; } .group-swiper-c .swiper-item .coreshop-cell-item .user-head-img { width: 40px; height: 40px; border-radius: 50%; } .group-swiper-c .swiper-item .coreshop-cell-item .coreshop-cell-hd-title { max-width: 100px; width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; } .group-swiper-c .swiper-item .coreshop-cell-item .coreshop-cell-item-bd { min-width: 75px; text-align: center; display: block; } @@ -33,3 +33,8 @@ .coreshop-lower-shelf .coreshop-cell-item-bd { opacity: 0.4; } .coreshop-lower-shelf .coreshop-cell-item-ft { opacity: 0.4; } .coreshop-lower-shelf .coreshop-lower-box { position: absolute; height: calc(100% - 20px); width: calc(100% - 10px); background-color: rgba(0, 0, 0, 0.6); text-align: center; font-size: 14px; color: #dedede; -webkit-transition: left .15s; transition: left .15s; z-index: 999; -webkit-transition: all .15s; transition: all .15s; line-height: 40px; } + + +.u-count-down { + .u-count-down__text { font-size: 12px; } +} diff --git a/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/pinTuanDetails/pinTuanDetails.vue b/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/pinTuanDetails/pinTuanDetails.vue index 8177e1c4..ef6299c7 100644 --- a/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/pinTuanDetails/pinTuanDetails.vue +++ b/CoreCms.Net.Uni-App/CoreShop/pages/activity/pinTuan/pinTuanDetails/pinTuanDetails.vue @@ -5,9 +5,7 @@ - - - + @@ -24,7 +22,7 @@ ¥ {{ price || '0.00' }} - + @@ -34,7 +32,7 @@ - {{ timeData.hours>10?timeData.hours:'0'+timeData.hours}} + {{ timeData.hours>=10?timeData.hours:'0'+timeData.hours}} : @@ -56,7 +54,7 @@ - {{ timeData.hours>10?timeData.hours:'0'+timeData.hours}} + {{ timeData.hours>=10?timeData.hours:'0'+timeData.hours}} : @@ -70,12 +68,7 @@ - - - - - {{ goodsInfo.name || '' }} @@ -94,12 +87,11 @@ {{ goodsInfo.buyPinTuanCount || '0' }} - 累计销售: - {{ goodsInfo.buyCount || '0' }} + - 库存: - {{product.stock}} + + @@ -140,76 +132,70 @@ 开团信息 - - - - - {{ teamCount || '0' }}人在拼单,可直接参与 - - - - - - - - 已结束 - - - {{ item[0].nickName || '' }} - - - - - 还差 - {{ item[0].teamNums || '' }}人 - 拼成 - - - - 剩余: - - - - - 去拼单 - 已结束 - - - - 已结束 - - - {{ item[1].nickName || '' }} - - - - - 还差 - {{ item[1].teamNums || '' }}人 - 拼成 - - - - - 剩余: - - - - - - 去拼单 - 已结束 - - - - - + + + + {{ teamCount || '0' }}人在拼单,可直接参与 - - - 暂无开团信息 - + + + + + + + + + 还差 + {{ item[0].teamNums || '' }}人 + 拼成 + + + + 剩余: + + + + 已结束 + + + + + 去拼单 + 已结束 + + + + + + + 还差 + {{ item[1].teamNums || '' }}人 + 拼成 + + + + 剩余: + + + + 已结束 + + + + + 去拼单 + 已结束 + + + + + + + + + + 暂无开团信息 @@ -306,7 +292,7 @@ 还差 - {{ teamInfo.teamNums || '' }} + {{ teamInfo.teamNums || '' }} 人,赶快拼单吧 @@ -317,9 +303,6 @@ - - - @@ -378,7 +361,7 @@ {{ pointShowName}}兑换价: - {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ parseFloat(item.price - item.pointsDeduction).toFixed(2)}}元 + {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ parseFloat(item.price,item.pointsDeduction).toFixed(2)}} 元 @@ -415,7 +398,7 @@ {{ pointShowName}}兑换价: - {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ parseFloat(item.price - item.pointsDeduction).toFixed(2)}}元 + {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ parseFloat(item.price,item.pointsDeduction).toFixed(2)}} 元 @@ -440,7 +423,7 @@ - + - 立即秒杀 @@ -407,7 +392,7 @@ - diff --git a/CoreCms.Net.Uni-App/CoreShop/pages/payment/components/coreshop-paymentsByWx.vue b/CoreCms.Net.Uni-App/CoreShop/pages/payment/components/coreshop-paymentsByWx.vue index 03b4acd8..66286a61 100644 --- a/CoreCms.Net.Uni-App/CoreShop/pages/payment/components/coreshop-paymentsByWx.vue +++ b/CoreCms.Net.Uni-App/CoreShop/pages/payment/components/coreshop-paymentsByWx.vue @@ -13,7 +13,7 @@ 当前余额:{{userInfo.balance}}元 - + {{item.memo}} @@ -39,7 +39,7 @@ - - diff --git a/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/index/index.vue b/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/index/index.vue index f63e527c..b09afc11 100644 --- a/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/index/index.vue +++ b/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/index/index.vue @@ -119,7 +119,7 @@ ({{ pointShowName}}兑换价: - {{pointDiscountedProportion * item.products.pointsDeduction }}{{ pointShowName}}+{{ item.products.price - item.products.pointsDeduction}}元 + {{pointDiscountedProportion * item.products.pointsDeduction }}{{ pointShowName}}+{{ parseFloat(item.products.price - item.products.pointsDeduction).toFixed(2)}}元 @@ -133,7 +133,7 @@ {{ pointShowName}}兑换价合计: - {{pointDiscountedProportion * item.products.pointsDeduction * item.nums }}{{ pointShowName}}+{{(item.products.price - item.products.pointsDeduction)*item.nums }}元 + {{pointDiscountedProportion * item.products.pointsDeduction * item.nums }}{{ pointShowName}}+{{parseFloat((item.products.price - item.products.pointsDeduction)*item.nums).toFixed(2) }}元 @@ -354,18 +354,16 @@ onLoad(options) { var _this = this; //下单前置检查,自定义交易组件检测场景是否需要推送订单到微信服务。 - // #ifdef H5|APP-PLUS|APP-PLUS-NVUE + // #ifdef APP-PLUS|APP-PLUS-NVUE _this.getOrderDistributionModel() // #endif // #ifdef MP wx.checkBeforeAddOrder({ success(res) { - console.log('下单前置检查', res); if (res.errMsg == 'checkBeforeAddOrder:ok') { _this.requireOrder = res.data.requireOrder; _this.requiredFundType = res.data.requiredFundType; _this.traceId = res.data.traceId; - // 获取不同类型营销下单支持的配送方式 _this.getOrderDistributionModel() } @@ -429,7 +427,7 @@ this.$db.del('userStore', true); } // #endif - // #ifdef H5 || APP-PLUS || APP-PLUS-NVUE + // #ifdef APP-PLUS || APP-PLUS-NVUE let userShip = this.$store.state.userShip; if (userShip) { this.userShip = userShip; @@ -781,9 +779,6 @@ data['taxType'] = this.invoice.type data['taxName'] = this.invoice.name data['taxCode'] = this.invoice.code - // #ifdef H5 - data['source'] = 2; - // #endif // #ifdef MP-WEIXIN data['source'] = 3; // #endif @@ -818,7 +813,6 @@ }, //发起订阅 subscription() { - let _this = this; this.$u.api.getSubscriptionTmplIds(null).then(res => { if (res.status) { console.log(res.data); @@ -857,7 +851,6 @@ // 获取默认店铺 getDefaultStore() { if (this.storeSwitch == 1) { - console.log("获取默认店铺"); this.$u.api.defaultStore().then(res => { if (res.status) { if (res.data && res.data.id) { diff --git a/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/invoice/invoice.vue b/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/invoice/invoice.vue index 331dafd2..878f32d6 100644 --- a/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/invoice/invoice.vue +++ b/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/invoice/invoice.vue @@ -113,7 +113,7 @@ let pre = pages[pages.length - 2] console.log(pre); if (pre != undefined) { - // #ifdef H5 || APP-PLUS || APP-PLUS-NVUE + // #ifdef APP-PLUS || APP-PLUS-NVUE invoice = pre.invoice // #endif // #ifdef MP-WEIXIN @@ -193,7 +193,7 @@ // #ifdef MP-WEIXIN beforePage.$vm.invoice = data; // #endif - // #ifdef H5 || APP-PLUS || APP-PLUS-NVUE + // #ifdef APP-PLUS || APP-PLUS-NVUE // beforePage.invoice = data; this.$store.commit('invoice', data) // #endif diff --git a/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/storeList/storeList.vue b/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/storeList/storeList.vue index b4daf07e..a37a7242 100644 --- a/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/storeList/storeList.vue +++ b/CoreCms.Net.Uni-App/CoreShop/pages/placeOrder/storeList/storeList.vue @@ -90,6 +90,10 @@ _this.latitude = res.latitude; }, complete: function (res) { + if (!_this.longitude || !_this.latitude) { + _this.longitude = '0'; + _this.latitude = '0'; + } let data = { 'key': _this.key, 'longitude': _this.longitude, @@ -126,7 +130,7 @@ pre.$vm.store = store // #endif - // #ifdef H5 || APP-PLUS || APP-PLUS-NVUE + // #ifdef APP-PLUS || APP-PLUS-NVUE pre.store = store // #endif diff --git a/CoreCms.Net.Uni-App/CoreShop/pages/serviceGoods/details/details.vue b/CoreCms.Net.Uni-App/CoreShop/pages/serviceGoods/details/details.vue index 25ec37d2..1f1cffa4 100644 --- a/CoreCms.Net.Uni-App/CoreShop/pages/serviceGoods/details/details.vue +++ b/CoreCms.Net.Uni-App/CoreShop/pages/serviceGoods/details/details.vue @@ -7,13 +7,15 @@ + + - + @@ -23,8 +25,8 @@ {{ info.money || '0.00' }} - - + + 仅剩: @@ -32,7 +34,7 @@ - {{ timeData.hours>10?timeData.hours:'0'+timeData.hours}} + {{ timeData.hours>=10?timeData.hours:'0'+timeData.hours}} : @@ -45,16 +47,16 @@ - - + + - 仅剩: + 即将开始: {{ timeData.days }} - {{ timeData.hours>10?timeData.hours:'0'+timeData.hours}} + {{ timeData.hours>=10?timeData.hours:'0'+timeData.hours}} : @@ -67,7 +69,7 @@ - 已结束 + 已结束 @@ -174,7 +176,6 @@ - {{item.name}} @@ -192,7 +193,7 @@ {{ pointShowName}}兑换价: - {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ item.price - item.pointsDeduction}}元 + {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ parseFloat(item.price,item.pointsDeduction).toFixed(2)}} 元 @@ -211,7 +212,6 @@ - {{item.name}} @@ -229,7 +229,7 @@ {{ pointShowName}}兑换价: - {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ item.price - item.pointsDeduction}}元 + {{pointDiscountedProportion * item.pointsDeduction }}{{ pointShowName}}+{{ parseFloat(item.price,item.pointsDeduction).toFixed(2)}} 元 @@ -247,6 +247,18 @@ + + + + + + + + + + +
+
@@ -255,7 +267,7 @@ - +