From 63b6d78b7f906d7464eca710695bef600772651d Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期二, 05 九月 2023 12:01:15 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseCityServiceImpl.java | 20 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/DiscountList.java | 23 cloud-server-activity/logback-spring.xml | 0 cloud-server-activity/src/main/java/com/dsh/activity/model/request/PointMercharsVo.java | 4 cloud-server-management/mb-cloud-management.iml | 2 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageService.java | 5 cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_detail_two.html | 396 +++ cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/QueryDiscountList.java | 25 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/DiscountUpdateState.java | 14 .idea/workspace.xml | 733 +++-- cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml | 6 cloud-server-management/src/main/webapp/static/modular/system/tGoods/tPay_info.js | 9 cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js | 586 +++ cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/AuditDiscount.java | 16 cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageMapper.java | 6 cloud-server-management/src/main/resources/logback-spring.xml | 0 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java | 10 cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount.js | 358 ++ cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java | 38 cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandiseCity.java | 67 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TCity_edit.html | 98 cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java | 248 + cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java | 4 cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount_info.js | 320 ++ cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/coursePackageDiscount.js | 819 ++++++ cloud-server-competition/src/main/resources/logback-spring.xml | 10 cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/PointMercharsVo.java | 4 cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java | 7 cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java | 101 cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java | 5 cloud-server-activity/src/main/resources/mapper/PointsMerchandiseCityMapper.xml | 6 cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_edit.html | 28 cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tCity_info.js | 320 ++ cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java | 1 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TCity_edit.html | 98 cloud-server-course/src/main/java/com/dsh/course/model/AuditDiscount.java | 16 cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/PointsMerchandise.java | 172 + cloud-server-activity/src/main/java/com/dsh/activity/model/response/StoreVos.java | 16 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GoodsInfoOneVo.java | 78 cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_detail_one.html | 207 + cloud-server-activity/src/main/java/com/dsh/activity/model/response/GoodsInfoOneVo.java | 78 cloud-server-course/src/main/java/com/dsh/course/model/DiscountUpdateState.java | 14 cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java | 1 cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml | 38 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TDiscount.html | 79 cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods.js | 4 cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java | 35 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TCity_add.html | 83 cloud-server-course/src/main/java/com/dsh/course/model/DiscountList.java | 23 cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseCityMapper.java | 16 cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseCityService.java | 16 cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_add.html | 252 + cloud-server-course/src/main/java/com/dsh/course/model/QueryDiscountList.java | 25 cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java | 38 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/coursePackageDiscount.html | 105 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TDiscount.html | 80 cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount_info.js | 320 ++ cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageDiscountClient.java | 3 cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TCity_add.html | 83 cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount.js | 433 +++ cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageDiscountMapper.java | 8 cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageDiscountController.java | 6 cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/StoreVos.java | 18 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java | 382 ++ cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackageDiscount.java | 4 cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml | 3 /dev/null | 227 - cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html | 3 cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js | 2 cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java | 68 cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java | 240 + cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/coursePackageDiscount.html | 88 72 files changed, 6,898 insertions(+), 753 deletions(-) diff --git a/.idea/libraries/Maven__com_huaweicloud_esdk_obs_java_bundle_3_23_3.xml b/.idea/libraries/Maven__com_huaweicloud_esdk_obs_java_bundle_3_23_3.xml deleted file mode 100644 index 83bc299..0000000 --- a/.idea/libraries/Maven__com_huaweicloud_esdk_obs_java_bundle_3_23_3.xml +++ /dev/null @@ -1,13 +0,0 @@ -<component name="libraryTable"> - <library name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.3"> - <CLASSES> - <root url="jar://$MAVEN_REPOSITORY$/com/huaweicloud/esdk-obs-java-bundle/3.23.3/esdk-obs-java-bundle-3.23.3.jar!/" /> - </CLASSES> - <JAVADOC> - <root url="jar://$MAVEN_REPOSITORY$/com/huaweicloud/esdk-obs-java-bundle/3.23.3/esdk-obs-java-bundle-3.23.3-javadoc.jar!/" /> - </JAVADOC> - <SOURCES> - <root url="jar://$MAVEN_REPOSITORY$/com/huaweicloud/esdk-obs-java-bundle/3.23.3/esdk-obs-java-bundle-3.23.3-sources.jar!/" /> - </SOURCES> - </library> -</component> \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 15613af..f2ab91c 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,200 +1,39 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> + <component name="BranchesTreeState"> + <expand> + <path> + <item name="ROOT" type="e8cecc67:BranchNodeDescriptor" /> + <item name="LOCAL_ROOT" type="e8cecc67:BranchNodeDescriptor" /> + </path> + <path> + <item name="ROOT" type="e8cecc67:BranchNodeDescriptor" /> + <item name="REMOTE_ROOT" type="e8cecc67:BranchNodeDescriptor" /> + </path> + <path> + <item name="ROOT" type="e8cecc67:BranchNodeDescriptor" /> + <item name="REMOTE_ROOT" type="e8cecc67:BranchNodeDescriptor" /> + <item name="GROUP_NODE:origin" type="e8cecc67:BranchNodeDescriptor" /> + </path> + </expand> + <select /> + </component> <component name="ChangeListManager"> - <list default="true" id="f560b179-9233-4e76-92e7-a3f41cf84d9f" name="Default Changelist" comment=""> - <change afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/CoachTypeController.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/model/query/coachQuery/CoachQuery.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/model/vo/CoachChangeStateVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/model/vo/CoachSerchVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/controller/BodySideAppointmentsController.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/entity/BodySideAppointment.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BodySideAppointmentMapper.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVedioChangeStateVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/model/QueryBenefitsVedioVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/model/QueryBodySideAppointment.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/model/QueryBodySideAppointmentVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/model/TQueryBenefitsVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/BodySideAppointmentService.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BodySideAppointmentServiceImpl.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/resources/mapper/BodySideAppointmentsMapper.xml" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/model/dto/CourseChangeStateDTO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/model/dto/TQueryBenefitsVideosDTO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/model/vo/CoursePackageTypeVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/model/vo/TQueryBenefitsVideosVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/CoachTypeClient.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/StoreStaffClient.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/CoachSerchVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/CoachType.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/TStoreStaff.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/BenefitsVideoClient.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/BodySideAppointmentClient.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/BenefitsVedioChangeStateVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/BenefitsVideoClassification.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/BenefitsVideos.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/BodySideAppointment.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/QueryBenefitsVedioVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/QueryBodySideAppointment.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/QueryBodySideAppointmentVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CourseChangeStateDTO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackageTypeVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteClient.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/SiteLockClient.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/StoreClient.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/Site.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/SiteAddDTO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/SiteChangeStateVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/TSiteDTO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/other/model/TSiteLockDTO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachController.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoachTypeController.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TBodySideAppointmentsController.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCoursePackageTypeController.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoachChangeStateVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoachQuery.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/ExpireSiteSearchVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/SiteSearchVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/Store.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TQueryBenefitsVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TQueryBenefitsVideosDTO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TQueryBenefitsVideosVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/benefits/TBenefits.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/benefits/TBenefitsVideos.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/benefits/TBenefitsVideos_add.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/benefits/TBenefitsVideos_edit.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/benefits/TBenefitsVideos_info.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/benefits/TBenefits_add.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/benefits/TBenefits_edit.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/bodySideAppointment/TBodySideAppointment.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/bodySideAppointment/TBodySideAppointment_add.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/bodySideAppointment/TBodySideAppointment_edit.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/coursePackageType/CoursePackageType.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_add.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoach/TCoach_edit.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoachType/TCoachType.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_edit.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_lock.html" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/benefits/TBenefits.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/benefits/tBenefitsVideos.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/benefits/tBenefitsVideos_add.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/benefits/tBenefitsVideos_edit.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/bodySideAppointment/tBodySideAppointment.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/bodySideAppointment/tBodySideAppointment_edit.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/coursePackageType/coursePackageType.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tCoach/tCoach.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tCoach/tCoach_add.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tCoach/tCoach_info.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tCoachType/tCoachType.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSiteLock.js" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/SiteLockController.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/TSite.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/feignclient/account/CityManagerClient.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/feignclient/account/model/CityManager.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/SiteAddDTO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/feignclient/model/SiteChangeStateVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/model/dto/siteDto/TSiteDTO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/model/dto/siteDto/TSiteLockDTO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/model/vo/siteVo/ExpireSiteSearchVO.java" afterDir="false" /> - <change afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/model/vo/siteVo/SiteSearchVO.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/.idea/compiler.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/compiler.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/.idea/encodings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/encodings.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/modules.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" /> + <list default="true" id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="后台代码"> + <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tCity/tCity.js" afterDir="false" /> + <change afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tCity/tCity_info.js" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/cloud-server-account/mb-cloud-account.iml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/mb-cloud-account.iml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-account/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/pom.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/CityManagerController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/CityManagerController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/CoachController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/CoachController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/Coach.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/Coach.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/mapper/CoachMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/mapper/CoachMapper.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/CoachService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/CoachService.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/ICityManagerService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/ICityManagerService.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/CityManagerServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/CityManagerServiceImpl.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/CoachServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/service/impl/CoachServiceImpl.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/resources/mapper/CoachMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/resources/mapper/CoachMapper.xml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/CityController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/controller/CityController.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/TCityManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-account/src/main/java/com/dsh/account/entity/TCityManager.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/cloud-server-activity/mb-cloud-activity.iml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/mb-cloud-activity.iml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/pom.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/controller/BenefitVideoController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/controller/BenefitVideoController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideoClassification.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideoClassification.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/StoreClient.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Store.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/other/model/Store.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideoClassificationMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideoClassificationMapper.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideosMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideosMapper.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/IBenefitsVideoClassificationService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/IBenefitsVideoClassificationService.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideoClassificationServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideoClassificationServiceImpl.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideosServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideosServiceImpl.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/resources/mapper/BenefitsVideoClassificationMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/resources/mapper/BenefitsVideoClassificationMapper.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/cloud-server-auth/mb-cloud-auth.iml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-auth/mb-cloud-auth.iml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-competition/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-competition/pom.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-course/mb-cloud-course.iml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/mb-cloud-course.iml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-course/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/pom.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageTypeController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageTypeController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/TCourseMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/mapper/TCourseMapper.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/TCourseService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/TCourseService.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCourseServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCourseServiceImpl.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/TCourseMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-course/src/main/resources/mapper/TCourseMapper.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-gateway/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-gateway/pom.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/pom.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/CityManagerClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/CityManagerClient.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/CoachClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/CoachClient.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/Coach.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/Coach.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageTypeClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageTypeClient.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/QuestionController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/QuestionController.java" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/CityClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/course/feignClient/account/CityClient.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCouponController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TSiteController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TWelfareVideoController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TWelfareVideoController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/util/UploadUtil.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/util/UploadUtil.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/enums/RuleStatusEnum.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/enums/RuleStatusEnum.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSite.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TSite.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/common/_right.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/common/_right.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tQuestion/TQuestionAdd.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tQuestion/TQuestionAdd.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tQuestion/TQuestionEdit.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tQuestion/TQuestionEdit.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tQuestion/TQuestionInfo.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tQuestion/TQuestionInfo.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tShop/TShop_edit.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TShop_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite_add.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TShop_edit.html" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TShop_img.html" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TShop_imgAll.html" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tSite/TSite.html" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/js/common/ajax-object.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/js/common/ajax-object.js" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/js/common/web-upload-file.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/js/common/web-upload-file.js" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tQuestion/TQuestion.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tQuestion/TQuestion.js" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tSite/electricFence.js" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite_info.js" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/pom.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/SiteController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/controller/StoreController.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/Site.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/Site.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/SiteLock.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/entity/SiteLock.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/feignclient/HonorDeClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/feignclient/HonorDeClient.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/feignclient/SiteClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/feignclient/SiteClient.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteLockMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteLockMapper.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/mapper/SiteMapper.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/mapper/StoreMapper.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/mapper/StoreMapper.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/ISiteLockService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/ISiteLockService.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/ISiteService.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/ISiteTypeService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/ISiteTypeService.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/StoreService.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/StoreService.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteLockServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteLockServiceImpl.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteTypeServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteTypeServiceImpl.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/StoreServiceImpl.java" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/java/com/dsh/other/service/impl/StoreServiceImpl.java" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/SiteLockMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/SiteLockMapper.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/SiteMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/SiteMapper.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/StoreMapper.xml" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-other/src/main/resources/mapper/StoreMapper.xml" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCity/TCity.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCity/TCity.html" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCity/TCity_add.html" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCity/TCity_add.html" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tCar/tCar_info.js" beforeDir="false" afterPath="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system/tCar/tCar_info.js" afterDir="false" /> </list> - <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="SHOW_DIALOG" value="false" /> <option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> @@ -203,18 +42,37 @@ <component name="FileTemplateManagerImpl"> <option name="RECENT_TEMPLATES"> <list> - <option value="HTML File" /> + <option value="Interface" /> <option value="Class" /> - <option value="mybatis-mapper" /> </list> </option> </component> <component name="Git.Settings"> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> </component> - <component name="ProjectId" id="2Tjw32TibW9vX8W0bRu35zUVftR" /> + <component name="JsFlowSettings"> + <service-enabled>true</service-enabled> + <exe-path /> + <other-services-enabled>true</other-services-enabled> + <auto-save>true</auto-save> + </component> + <component name="MavenImportPreferences"> + <option name="generalSettings"> + <MavenGeneralSettings> + <option name="mavenHome" value="D:/apache-maven/apache-maven-3.6.1" /> + <option name="userSettingsFile" value="D:\apache-maven\apache-maven-3.6.1\conf\settings.xml" /> + </MavenGeneralSettings> + </option> + </component> + <component name="ProjectId" id="2T0poWYlZShlnPso29uxjn4gQQo" /> + <component name="ProjectLevelVcsManager" settingsEditedManually="true"> + <ConfirmationsSetting value="1" id="Add" /> + </component> + <component name="ProjectViewState"> + <option name="hideEmptyMiddlePackages" value="true" /> + <option name="showLibraryContents" value="true" /> + </component> <component name="PropertiesComponent"> - <property name="DefaultHtmlFileTemplate" value="HTML File" /> <property name="ExpandSpringBootJavaOptionsPanel" value="true" /> <property name="RequestMappingsPanelOrder0" value="0" /> <property name="RequestMappingsPanelOrder1" value="1" /> @@ -222,28 +80,33 @@ <property name="RequestMappingsPanelWidth1" value="75" /> <property name="WebServerToolWindowFactoryState" value="false" /> <property name="aspect.path.notification.shown" value="true" /> - <property name="last_opened_file_path" value="$PROJECT_DIR$/cloud-server-management/src/main/webapp/WEB-INF/view/system/bodySideAppointment" /> - <property name="nodejs_package_manager_path" value="npm" /> - <property name="project.structure.last.edited" value="Modules" /> + <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1686656087610" /> + <property name="last_opened_file_path" value="$PROJECT_DIR$/cloud-server-management/src/main/webapp/static/modular/system" /> + <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" /> + <property name="nodejs_npm_path_reset_for_default_project" value="true" /> + <property name="project.structure.last.edited" value="Global Libraries" /> <property name="project.structure.proportion" value="0.0" /> <property name="project.structure.side.proportion" value="0.2" /> - <property name="restartRequiresConfirmation" value="false" /> - <property name="settings.editor.selected.configurable" value="MavenSettings" /> + <property name="run.code.analysis.last.selected.profile" value="pProject Default" /> + <property name="settings.editor.selected.configurable" value="project.propVCSSupport.Mappings" /> + </component> + <component name="ReactorSettings"> + <option name="notificationShown" value="true" /> </component> <component name="RecentsManager"> <key name="CopyClassDialog.RECENTS_KEY"> - <recent name="com.dsh.activity.feignclient.other.model" /> - <recent name="com.dsh.course.feignClient.activity" /> - <recent name="com.dsh.guns.modular.system.controller.code" /> - <recent name="com.dsh.course.feignClient.activity.model" /> - <recent name="com.dsh.activity.model" /> + <recent name="com.dsh.course.feignClient.account.model" /> + <recent name="com.dsh.account.mapper" /> + <recent name="com.dsh.account.service.impl" /> + <recent name="com.dsh.account.service" /> + <recent name="com.dsh.account.controller" /> </key> <key name="CopyFile.RECENT_KEYS"> - <recent name="E:\IdeaProjects\PlayPai\cloud-server-management\src\main\webapp\WEB-INF\view\system\bodySideAppointment" /> - <recent name="E:\IdeaProjects\PlayPai\cloud-server-management\src\main\webapp\static\modular\system\bodySideAppointment" /> - <recent name="E:\IdeaProjects\PlayPai\cloud-server-management\src\main\java\com\dsh\course\feignClient\activity\model" /> - <recent name="E:\IdeaProjects\PlayPai\cloud-server-management\src\main\webapp\static\modular\system\benefits" /> - <recent name="E:\IdeaProjects\PlayPai\cloud-server-management\src\main\webapp\WEB-INF\view\system\benefits" /> + <recent name="F:\code\PlayPai\cloud-server-management\src\main\webapp\static\modular\system" /> + <recent name="F:\code\PlayPai\cloud-server-account\src\main\resources\mapper" /> + <recent name="F:\code\PlayPai\cloud-server-management\src\main\webapp\WEB-INF\view\system" /> + <recent name="F:\code\PlayPai\cloud-server-competition\src\main\java\com\dsh" /> + <recent name="F:\code\PlayPai\cloud-server-management\src\main\resources\mapper" /> </key> </component> <component name="RunDashboard"> @@ -252,18 +115,8 @@ <option value="SpringBootApplicationConfigurationType" /> </set> </option> - <option name="ruleStates"> - <list> - <RuleState> - <option name="name" value="ConfigurationTypeDashboardGroupingRule" /> - </RuleState> - <RuleState> - <option name="name" value="StatusDashboardGroupingRule" /> - </RuleState> - </list> - </option> </component> - <component name="RunManager" selected="Spring Boot.ManagementApplication"> + <component name="RunManager" selected="Spring Boot.AccountApplication"> <configuration name="AccountApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> <module name="mb-cloud-account" /> <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.AccountApplication" /> @@ -273,11 +126,17 @@ <option name="Make" enabled="true" /> </method> </configuration> + <configuration name="AccountApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> + <module name="mb-cloud-account" /> + <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.AccountApplication" /> + <option name="ALTERNATIVE_JRE_PATH" /> + <method v="2"> + <option name="Make" enabled="true" /> + </method> + </configuration> <configuration name="ActivityApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> <module name="mb-cloud-activity" /> <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ActivityApplication" /> - <option name="ALTERNATIVE_JRE_PATH" /> - <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" /> <method v="2"> <option name="Make" enabled="true" /> </method> @@ -299,17 +158,8 @@ </method> </configuration> <configuration name="CourseApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> - <module name="mb-cloud-course" /> + <module name="mb-cloud-competition (1)" /> <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.CourseApplication" /> - <option name="ALTERNATIVE_JRE_PATH" /> - <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" /> - <method v="2"> - <option name="Make" enabled="true" /> - </method> - </configuration> - <configuration name="GatewayApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> - <module name="mb-cloud-gateway" /> - <option name="SPRING_BOOT_MAIN_CLASS" value="cn.mb.cloud.gateway.GatewayApplication" /> <method v="2"> <option name="Make" enabled="true" /> </method> @@ -317,153 +167,380 @@ <configuration name="ManagementApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> <module name="mb-cloud-management" /> <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.ManagementApplication" /> + <option name="ENABLE_JMX_AGENT" value="false" /> + <option name="ALTERNATIVE_JRE_PATH" /> + <option name="SHORTEN_COMMAND_LINE" value="MANIFEST" /> <method v="2"> <option name="Make" enabled="true" /> </method> </configuration> - <configuration name="OtherApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> - <module name="mb-cloud-other" /> - <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.OtherApplication" /> + <configuration name="UserApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot"> + <module name="mb-cloud-user" /> + <option name="SPRING_BOOT_MAIN_CLASS" value="com.dsh.UserApplication" /> <method v="2"> <option name="Make" enabled="true" /> </method> </configuration> <list> + <item itemvalue="Spring Boot.UserApplication" /> + <item itemvalue="Spring Boot.ManagementApplication" /> + <item itemvalue="Spring Boot.AuthApplication" /> <item itemvalue="Spring Boot.AccountApplication" /> <item itemvalue="Spring Boot.ActivityApplication" /> - <item itemvalue="Spring Boot.AuthApplication" /> <item itemvalue="Spring Boot.CompetitionApplication" /> <item itemvalue="Spring Boot.CourseApplication" /> - <item itemvalue="Spring Boot.GatewayApplication" /> - <item itemvalue="Spring Boot.ManagementApplication" /> - <item itemvalue="Spring Boot.OtherApplication" /> </list> - </component> - <component name="ServiceViewManager"> - <option name="allServicesViewState"> - <serviceView> - <treeState> - <expand> - <path> - <item name="services root" type="e789fda9:ObjectUtils$Sentinel" /> - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@e758ef9a" type="7427dc5b:ServiceModel$ServiceGroupNode" /> - </path> - <path> - <item name="services root" type="e789fda9:ObjectUtils$Sentinel" /> - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@e758ef9a" type="7427dc5b:ServiceModel$ServiceGroupNode" /> - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@872283ff" type="7427dc5b:ServiceModel$ServiceGroupNode" /> - </path> - <path> - <item name="services root" type="e789fda9:ObjectUtils$Sentinel" /> - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@e758ef9a" type="7427dc5b:ServiceModel$ServiceGroupNode" /> - <item name="com.intellij.execution.services.ServiceModel$ServiceGroupNode@69458c78" type="7427dc5b:ServiceModel$ServiceGroupNode" /> - </path> - </expand> - <select /> - </treeState> - </serviceView> - </option> </component> <component name="SvnConfiguration"> <configuration /> </component> <component name="TaskManager"> <task active="true" id="Default" summary="Default task"> - <changelist id="f560b179-9233-4e76-92e7-a3f41cf84d9f" name="Default Changelist" comment="" /> - <created>1691569594609</created> + <changelist id="cb08d02f-fd4f-4fa2-85fe-abd508fa83ac" name="Default Changelist" comment="" /> + <created>1686653431962</created> <option name="number" value="Default" /> <option name="presentableId" value="Default" /> - <updated>1691569594609</updated> - <workItem from="1691569596751" duration="65000" /> - <workItem from="1691569675100" duration="270000" /> - <workItem from="1691569964197" duration="5608000" /> - <workItem from="1691628065563" duration="26776000" /> - <workItem from="1691714824948" duration="32278000" /> - <workItem from="1691752453575" duration="55000" /> - <workItem from="1691974807017" duration="29112000" /> - <workItem from="1692060742194" duration="20502000" /> - <workItem from="1692087400805" duration="8025000" /> - <workItem from="1692146436177" duration="23500000" /> - <workItem from="1692233067279" duration="10090000" /> - <workItem from="1692252017276" duration="7536000" /> - <workItem from="1692260089826" duration="8503000" /> - <workItem from="1692319933611" duration="26839000" /> - <workItem from="1692578769161" duration="28170000" /> - <workItem from="1692665038696" duration="13077000" /> - <workItem from="1692684619085" duration="13291000" /> - <workItem from="1692751172028" duration="28054000" /> - <workItem from="1692837854502" duration="6293000" /> - <workItem from="1692844552907" duration="8241000" /> - <workItem from="1692859160967" duration="13015000" /> - <workItem from="1692924469163" duration="21622000" /> - <workItem from="1692954633621" duration="995000" /> - <workItem from="1692955658907" duration="4758000" /> - <workItem from="1693183363744" duration="30378000" /> - <workItem from="1693269664223" duration="20846000" /> - <workItem from="1693296305848" duration="948000" /> - <workItem from="1693297281055" duration="121000" /> - <workItem from="1693297534980" duration="7686000" /> - <workItem from="1693356090840" duration="27477000" /> - <workItem from="1693442643841" duration="24243000" /> - <workItem from="1693528994907" duration="29480000" /> - <workItem from="1693566786046" duration="243000" /> - <workItem from="1693567041762" duration="123000" /> - <workItem from="1693623395574" duration="598000" /> - <workItem from="1693643198935" duration="776000" /> - <workItem from="1693705892630" duration="12000" /> - <workItem from="1693706255970" duration="1688000" /> - <workItem from="1693879663101" duration="1191000" /> - <workItem from="1693884719266" duration="158000" /> + <updated>1686653431962</updated> + <workItem from="1686653433491" duration="2267000" /> + <workItem from="1690190039038" duration="16883000" /> + <workItem from="1690333209172" duration="26986000" /> </task> - <task id="LOCAL-00001" summary="客服管理、荣誉管理"> - <created>1692233310670</created> + <task id="LOCAL-00001" summary="后台代码删除"> + <created>1690249807612</created> <option name="number" value="00001" /> <option name="presentableId" value="LOCAL-00001" /> <option name="project" value="LOCAL" /> - <updated>1692233310670</updated> + <updated>1690249807612</updated> </task> - <option name="localTasksCounter" value="2" /> + <task id="LOCAL-00002" summary="后台代码删除"> + <created>1690254629455</created> + <option name="number" value="00002" /> + <option name="presentableId" value="LOCAL-00002" /> + <option name="project" value="LOCAL" /> + <updated>1690254629455</updated> + </task> + <task id="LOCAL-00003" summary="后台代码删除"> + <created>1690254749862</created> + <option name="number" value="00003" /> + <option name="presentableId" value="LOCAL-00003" /> + <option name="project" value="LOCAL" /> + <updated>1690254749862</updated> + </task> + <task id="LOCAL-00004" summary="后台代码"> + <created>1690334274202</created> + <option name="number" value="00004" /> + <option name="presentableId" value="LOCAL-00004" /> + <option name="project" value="LOCAL" /> + <updated>1690334274203</updated> + </task> + <task id="LOCAL-00005" summary="后台代码"> + <created>1690335913450</created> + <option name="number" value="00005" /> + <option name="presentableId" value="LOCAL-00005" /> + <option name="project" value="LOCAL" /> + <updated>1690335913450</updated> + </task> + <task id="LOCAL-00006" summary="后台代码"> + <created>1690338179876</created> + <option name="number" value="00006" /> + <option name="presentableId" value="LOCAL-00006" /> + <option name="project" value="LOCAL" /> + <updated>1690338179876</updated> + </task> + <task id="LOCAL-00007" summary="后台代码"> + <created>1690338325966</created> + <option name="number" value="00007" /> + <option name="presentableId" value="LOCAL-00007" /> + <option name="project" value="LOCAL" /> + <updated>1690338325966</updated> + </task> + <task id="LOCAL-00008" summary="后台代码"> + <created>1690341067099</created> + <option name="number" value="00008" /> + <option name="presentableId" value="LOCAL-00008" /> + <option name="project" value="LOCAL" /> + <updated>1690341067099</updated> + </task> + <task id="LOCAL-00009" summary="后台代码"> + <created>1690355617215</created> + <option name="number" value="00009" /> + <option name="presentableId" value="LOCAL-00009" /> + <option name="project" value="LOCAL" /> + <updated>1690355617215</updated> + </task> + <task id="LOCAL-00010" summary="后台代码删除"> + <created>1690362658673</created> + <option name="number" value="00010" /> + <option name="presentableId" value="LOCAL-00010" /> + <option name="project" value="LOCAL" /> + <updated>1690362658673</updated> + </task> + <task id="LOCAL-00011" summary="后台代码删除"> + <created>1690363462474</created> + <option name="number" value="00011" /> + <option name="presentableId" value="LOCAL-00011" /> + <option name="project" value="LOCAL" /> + <updated>1690363462474</updated> + </task> + <task id="LOCAL-00012" summary="后台代码"> + <created>1690364368448</created> + <option name="number" value="00012" /> + <option name="presentableId" value="LOCAL-00012" /> + <option name="project" value="LOCAL" /> + <updated>1690364368448</updated> + </task> + <task id="LOCAL-00013" summary="后台代码"> + <created>1690364506501</created> + <option name="number" value="00013" /> + <option name="presentableId" value="LOCAL-00013" /> + <option name="project" value="LOCAL" /> + <updated>1690364506501</updated> + </task> + <option name="localTasksCounter" value="14" /> <servers /> </component> <component name="TypeScriptGeneratedFilesManager"> - <option name="version" value="1" /> + <option name="version" value="2" /> </component> <component name="Vcs.Log.Tabs.Properties"> <option name="TAB_STATES"> <map> <entry key="MAIN"> <value> - <State> - <option name="COLUMN_ORDER" /> - </State> + <State /> </value> </entry> </map> </option> + <option name="oldMeFiltersMigrated" value="true" /> </component> <component name="VcsManagerConfiguration"> - <MESSAGE value="客服管理、荣誉管理" /> - <option name="LAST_COMMIT_MESSAGE" value="客服管理、荣誉管理" /> + <MESSAGE value="后台代码删除" /> + <MESSAGE value="后台代码" /> + <option name="LAST_COMMIT_MESSAGE" value="后台代码" /> + </component> + <component name="WindowStateProjectService"> + <state x="590" y="80" key="#<template>_of_Spring_Boot" timestamp="1690338437444"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="590" y="80" key="#<template>_of_Spring_Boot/0.0.1920.1032@0.0.1920.1032" timestamp="1690338437444" /> + <state x="590" y="0" width="753" height="1032" key="#AccountApplication" timestamp="1690363440283"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="590" y="0" width="753" height="1032" key="#AccountApplication/0.0.1920.1032@0.0.1920.1032" timestamp="1690363440283" /> + <state x="590" y="0" width="753" height="1032" key="#CompetitionApplication" timestamp="1690342021698"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="590" y="0" width="753" height="1032" key="#CompetitionApplication/0.0.1920.1032@0.0.1920.1032" timestamp="1690342021698" /> + <state x="590" y="109" width="753" height="813" key="#ManagementApplication" timestamp="1690338483958"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="590" y="109" width="753" height="813" key="#ManagementApplication/0.0.1920.1032@0.0.1920.1032" timestamp="1690338483958" /> + <state x="765" y="199" key="#com.intellij.ide.util.MemberChooser" timestamp="1690351593596"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="765" y="199" key="#com.intellij.ide.util.MemberChooser/0.0.1920.1032@0.0.1920.1032" timestamp="1690351593596" /> + <state x="689" y="304" key="#com.intellij.ide.util.TreeClassChooserDialog" timestamp="1690338381045"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="689" y="304" key="#com.intellij.ide.util.TreeClassChooserDialog/0.0.1920.1032@0.0.1920.1032" timestamp="1690338381045" /> + <state x="504" y="438" key="#com.intellij.refactoring.move.MoveHandler.SelectRefactoringDialog" timestamp="1690337455729"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="504" y="438" key="#com.intellij.refactoring.move.MoveHandler.SelectRefactoringDialog/0.0.1920.1032@0.0.1920.1032" timestamp="1690337455729" /> + <state x="674" y="382" width="571" height="274" key="#com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesDialog.classes" timestamp="1690338847091"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="674" y="382" width="571" height="274" key="#com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesDialog.classes/0.0.1920.1032@0.0.1920.1032" timestamp="1690338847091" /> + <state x="703" y="346" key="ANALYSIS_DLG_com.intellij.analysis.BaseAnalysisAction$1" timestamp="1690363667225"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="703" y="346" key="ANALYSIS_DLG_com.intellij.analysis.BaseAnalysisAction$1/0.0.1920.1032@0.0.1920.1032" timestamp="1690363667225" /> + <state x="519" y="82" key="CommitChangelistDialog2" timestamp="1690364505261"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="519" y="82" key="CommitChangelistDialog2/0.0.1920.1032@0.0.1920.1032" timestamp="1690364505261" /> + <state width="464" height="466" key="DebuggerActiveHint" timestamp="1690354723383"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="464" height="466" key="DebuggerActiveHint/0.0.1920.1032@0.0.1920.1032" timestamp="1690354723383" /> + <state x="740" y="270" key="FileChooserDialogImpl" timestamp="1690249419357"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="740" y="270" key="FileChooserDialogImpl/0.0.1920.1032@0.0.1920.1032" timestamp="1690249419357" /> + <state width="1293" height="418" key="GridCell.Tab.0.bottom" timestamp="1690366694918"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.0.bottom/0.0.1920.1032@0.0.1920.1032" timestamp="1690366694918" /> + <state width="1293" height="418" key="GridCell.Tab.0.center" timestamp="1690366694918"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.0.center/0.0.1920.1032@0.0.1920.1032" timestamp="1690366694918" /> + <state width="1293" height="418" key="GridCell.Tab.0.left" timestamp="1690366694918"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.0.left/0.0.1920.1032@0.0.1920.1032" timestamp="1690366694918" /> + <state width="1293" height="418" key="GridCell.Tab.0.right" timestamp="1690366694918"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.0.right/0.0.1920.1032@0.0.1920.1032" timestamp="1690366694918" /> + <state width="1293" height="418" key="GridCell.Tab.1.bottom" timestamp="1690366694918"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.1.bottom/0.0.1920.1032@0.0.1920.1032" timestamp="1690366694918" /> + <state width="1293" height="418" key="GridCell.Tab.1.center" timestamp="1690366694918"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.1.center/0.0.1920.1032@0.0.1920.1032" timestamp="1690366694918" /> + <state width="1293" height="418" key="GridCell.Tab.1.left" timestamp="1690366694918"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.1.left/0.0.1920.1032@0.0.1920.1032" timestamp="1690366694918" /> + <state width="1293" height="418" key="GridCell.Tab.1.right" timestamp="1690366694918"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.1.right/0.0.1920.1032@0.0.1920.1032" timestamp="1690366694918" /> + <state width="1293" height="418" key="GridCell.Tab.2.bottom" timestamp="1690366555269"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.2.bottom/0.0.1920.1032@0.0.1920.1032" timestamp="1690366555269" /> + <state width="1293" height="418" key="GridCell.Tab.2.center" timestamp="1690366555269"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.2.center/0.0.1920.1032@0.0.1920.1032" timestamp="1690366555269" /> + <state width="1293" height="418" key="GridCell.Tab.2.left" timestamp="1690366555269"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.2.left/0.0.1920.1032@0.0.1920.1032" timestamp="1690366555269" /> + <state width="1293" height="418" key="GridCell.Tab.2.right" timestamp="1690366555269"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state width="1293" height="418" key="GridCell.Tab.2.right/0.0.1920.1032@0.0.1920.1032" timestamp="1690366555269" /> + <state x="461" y="160" key="SettingsEditor" timestamp="1690191509088"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="461" y="160" key="SettingsEditor/0.0.1920.1032@0.0.1920.1032" timestamp="1690191509088" /> + <state x="552" y="248" key="Vcs.Push.Dialog.v2" timestamp="1690364507500"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="552" y="248" key="Vcs.Push.Dialog.v2/0.0.1920.1032@0.0.1920.1032" timestamp="1690364507500" /> + <state x="92" y="92" width="1736" height="848" key="com.intellij.history.integration.ui.views.DirectoryHistoryDialog" timestamp="1690340014123"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="92" y="92" width="1736" height="848" key="com.intellij.history.integration.ui.views.DirectoryHistoryDialog/0.0.1920.1032@0.0.1920.1032" timestamp="1690340014123" /> + <state x="92" y="92" width="1736" height="848" key="com.intellij.history.integration.ui.views.FileHistoryDialog" timestamp="1690340014123"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="92" y="92" width="1736" height="848" key="com.intellij.history.integration.ui.views.FileHistoryDialog/0.0.1920.1032@0.0.1920.1032" timestamp="1690340014123" /> + <state x="754" y="428" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2" timestamp="1690362660961"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="754" y="428" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/0.0.1920.1032@0.0.1920.1032" timestamp="1690362660961" /> + <state x="661" y="224" width="721" height="584" key="find.popup" timestamp="1690365779184"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="661" y="224" width="721" height="584" key="find.popup/0.0.1920.1032@0.0.1920.1032" timestamp="1690365779184" /> + <state x="623" y="223" width="672" height="678" key="search.everywhere.popup" timestamp="1690365810397"> + <screen x="0" y="0" width="1920" height="1032" /> + </state> + <state x="623" y="223" width="672" height="678" key="search.everywhere.popup/0.0.1920.1032@0.0.1920.1032" timestamp="1690365810397" /> </component> <component name="XDebuggerManager"> <breakpoint-manager> <breakpoints> <line-breakpoint enabled="true" type="java-line"> - <url>file://$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/util/UploadUtil.java</url> - <line>148</line> - <option name="timeStamp" value="3" /> - </line-breakpoint> - <line-breakpoint enabled="true" type="java-line"> - <url>file://$PROJECT_DIR$/cloud-server-activity/src/main/java/com/dsh/activity/controller/BodySideAppointmentsController.java</url> - <line>88</line> - <option name="timeStamp" value="43" /> + <url>file://$PROJECT_DIR$/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/LoginController.java</url> + <line>145</line> + <option name="timeStamp" value="1" /> </line-breakpoint> </breakpoints> </breakpoint-manager> - <watches-manager> - <configuration name="SpringBootApplicationConfigurationType"> - <watch expression="vo.data3" /> - </configuration> - </watches-manager> + </component> + <component name="masterDetails"> + <states> + <state key="ArtifactsStructureConfigurable.UI"> + <settings> + <artifact-editor /> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="FacetStructureConfigurable.UI"> + <settings> + <last-edited>No facets are configured</last-edited> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="GlobalLibrariesConfigurable.UI"> + <settings> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="JdkListConfigurable.UI"> + <settings> + <last-edited>1.8</last-edited> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="ModuleStructureConfigurable.UI"> + <settings> + <last-edited>PlayPai</last-edited> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + <option value="0.6" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="ProjectJDKs.UI"> + <settings> + <last-edited>1.8</last-edited> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + <state key="ProjectLibrariesConfigurable.UI"> + <settings> + <splitter-proportions> + <option name="proportions"> + <list> + <option value="0.2" /> + </list> + </option> + </splitter-proportions> + </settings> + </state> + </states> </component> </project> \ No newline at end of file diff --git a/cloud-server-activity/src/main/resources/logback-spring.xml b/cloud-server-activity/logback-spring.xml similarity index 100% copy from cloud-server-activity/src/main/resources/logback-spring.xml copy to cloud-server-activity/logback-spring.xml diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java index b176c57..b9699bb 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/PointMercharsController.java @@ -10,9 +10,12 @@ import com.dsh.activity.feignclient.course.model.CoursePackagePaymentConfig; import com.dsh.activity.feignclient.model.*; import com.dsh.activity.feignclient.other.StoreClient; +import com.dsh.activity.feignclient.other.model.Store; import com.dsh.activity.feignclient.other.model.StoreDetailOfCourse; import com.dsh.activity.model.PointMerchandiseVo; import com.dsh.activity.model.request.*; +import com.dsh.activity.model.response.GoodsInfoOneVo; +import com.dsh.activity.model.response.StoreVos; import com.dsh.activity.service.*; import com.dsh.activity.util.GDMapGeocodingUtil; import com.dsh.activity.util.StrUtils; @@ -70,6 +73,9 @@ @Resource private CouponCityService ccityService; + + @Resource + private PointsMerchandiseCityService pmdsCityService; @ResponseBody @@ -474,7 +480,10 @@ @PostMapping("/base/pointMerchars/updateDetailsUserPointMercase") public void updateDetailsUserPointMercase(@RequestBody UserPointsMerchandise merchandise){ - upmseService.updateById(merchandise); + upmseService.update(merchandise,new LambdaQueryWrapper<UserPointsMerchandise>() + .eq(UserPointsMerchandise::getUserId,merchandise.getUserId()) + .eq(UserPointsMerchandise::getId,merchandise.getId())); + } @PostMapping("/base/pointMerchars/queryUserPointMerchaseByCode") @@ -524,7 +533,9 @@ if (list.size() > 0 ){ for (UserPointsMerchandise pointsMerchandise : list) { pointsMerchandise.setState(2); - upmseService.updateById(pointsMerchandise); + upmseService.update(pointsMerchandise,new LambdaQueryWrapper<UserPointsMerchandise>() + .eq(UserPointsMerchandise::getUserId,pointsMerchandise.getUserId()) + .eq(UserPointsMerchandise::getId,pointsMerchandise.getId())); } } @@ -624,10 +635,13 @@ public PointMercharsVo queryPointMerchaseDetailOfId(@RequestBody Integer pointMercharsId){ PointMercharsVo vo = new PointMercharsVo(); PointsMerchandise byId = pmdsService.getById(pointMercharsId); + List<UserPointsMerchandise> list = upmseService.list(new LambdaQueryWrapper<UserPointsMerchandise>() + .eq(UserPointsMerchandise::getPointsMerchandiseId, pointMercharsId)); if (ToolUtil.isNotEmpty(byId)){ vo.setName(byId.getName()); vo.setCover(byId.getCover()); vo.setPics(byId.getProductImages()); + vo.setQuantityHas(list.size()); vo.setQuantityIssued(byId.getQuantityIssued()); vo.setPickUpQuantity(byId.getPickUpQuantity()); vo.setSort(byId.getSort()); @@ -669,7 +683,7 @@ if (list.size() > 0 ){ for (UserPointsMerchandise pointsMerchandise : list) { Map<String, Object> map = new HashMap<>(); - map.put("id",pointsMerchandise.getId()); + map.put("id",pointsMerchandise.getId().toString()); map.put("userId",pointsMerchandise.getUserId()); map.put("status", pointsMerchandise.getStatus()); mapList.add(map); @@ -679,4 +693,232 @@ return mapList; } + @ResponseBody + @PostMapping("/base/pointMerchars/writeOffGoodsStatus") + public boolean writeOffGoodsStatus(@RequestBody Map<String, Object> map){ + try { + String o = (String) map.get("goodsId"); + Integer managerId = (Integer) map.get("managerId"); + UserPointsMerchandise byId = upmseService.getOne(new LambdaQueryWrapper<UserPointsMerchandise>() + .eq(UserPointsMerchandise::getId,Long.parseLong(o) )); + if (byId.getStatus() == 2){ + return false; + } + byId.setStatus(2); + byId.setVerificationUserId(managerId); + byId.setVerificationTime(new Date()); + upmseService.update(byId,new LambdaQueryWrapper<UserPointsMerchandise>() + .eq(UserPointsMerchandise::getUserId,byId.getUserId()) + .eq(UserPointsMerchandise::getId,byId.getId())); + System.out.println(byId); + return true; + }catch (Exception e){ + return false; + } + } + + + + @ResponseBody + @PostMapping("/base/pointMerchars/updateGoodsDetail") + public boolean updateGoodsDetail(@RequestBody Map<String, Object> map){ + try { + Integer pointMerchandiseId = (Integer) map.get("pointMerchandiseId"); + PointsMerchandise byId1 = pmdsService.getById(pointMerchandiseId); + + Integer quantityIssued = (Integer) map.get("quantityIssued"); + Integer pickUpQuantity = (Integer) map.get("pickUpQuantity"); + String redemptionInstructions = (String) map.get("redemptionInstructions"); + String cover = (String) map.get("cover"); + String productImages = (String) map.get("productImages"); + Integer sort = (Integer) map.get("sort"); + + byId1.setQuantityIssued(quantityIssued); + byId1.setPickUpQuantity(pickUpQuantity); + byId1.setRedemptionInstructions(redemptionInstructions); + if (ToolUtil.isNotEmpty(cover)){ + byId1.setCover(cover); + } + if (ToolUtil.isNotEmpty(productImages)){ + byId1.setProductImages(productImages); + } + byId1.setSort(sort); + pmdsService.updateById(byId1); + return true; + }catch (Exception e){ + return false; + } + } + + + @PostMapping("/base/pointMerchars/queryDetailsOfGoods") + public GoodsInfoOneVo queryDetailsOfGoods(@RequestBody Integer id){ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + GoodsInfoOneVo infoOneVo = new GoodsInfoOneVo(); + PointsMerchandise byId = pmdsService.getById(id); + + if (ToolUtil.isNotEmpty(byId)){ + infoOneVo.setName(byId.getName()); + infoOneVo.setCover(byId.getCover()); + infoOneVo.setPics(byId.getProductImages()); + infoOneVo.setPrice(byId.getPrice()); + infoOneVo.setExchangeMethod(byId.getRedemptionMethod()); + switch (byId.getRedemptionMethod()){ + case 1: + infoOneVo.setIntegral(byId.getIntegral()); + break; + case 2: + infoOneVo.setIntegral(byId.getIntegral()); + infoOneVo.setCash(byId.getCash()); + break; + case 3: + infoOneVo.setCash(byId.getCash()); + break; + default: + break; + } + switch (byId.getUserPopulation()){ + case 1: + infoOneVo.setUserPopulation("全部用户"); + break; + case 2: + infoOneVo.setUserPopulation("年度会员"); + break; + case 3: + infoOneVo.setUserPopulation("已有学员用户"); + break; + default: + break; + } + infoOneVo.setQuantityIssued(byId.getQuantityIssued()); + List<UserPointsMerchandise> list = upmseService.list(new LambdaQueryWrapper<UserPointsMerchandise>() + .eq(UserPointsMerchandise::getPointsMerchandiseId,byId.getId())); + infoOneVo.setUseScope(byId.getUseScope()); + switch (byId.getUseScope()){ + case 1: + infoOneVo.setExchangeArea("全国通用"); + break; + case 2: + infoOneVo.setExchangeArea("指定城市"); + break; + case 3: + infoOneVo.setExchangeArea("指定门店"); + break; + default: + break; + } + infoOneVo.setHasPicked(list.size()); + infoOneVo.setPickUpQuantity(byId.getPickUpQuantity()); + infoOneVo.setValidTime(simpleDateFormat.format(byId.getStartTime())+"至"+ simpleDateFormat.format(byId.getEndTime())); + infoOneVo.setRedemptionInstructions(byId.getRedemptionInstructions()); + infoOneVo.setSort(byId.getSort()); + } + return infoOneVo; + } + + + + @ResponseBody + @PostMapping("/base/pointMerchars/getStoreList") + public List<StoreVos> getStoreList(@RequestBody Integer id){ + List<StoreVos> storeVos = new ArrayList<>(); + List<PointsMerchandiseStore> list = pmdstoService.list(new QueryWrapper<PointsMerchandiseStore>() + .eq("pointsMerchandiseId",id)); + if (list.size() > 0 ){ + List<Integer> collect = list.stream().map(PointsMerchandiseStore::getStoreId).collect(Collectors.toList()); + List<Store> stores = stoClient.queryStoreByIds(collect); + if (stores.size() > 0 ){ + for (Store store : stores) { + StoreVos storeVos1 = new StoreVos(); + storeVos1.setNum1(store.getProvince() +"省"+ store.getCity() +"市"); + storeVos1.setNum2(store.getName()); + storeVos.add(storeVos1); + } + } + } + return storeVos; + } + + + @ResponseBody + @PostMapping("/base/pointMerchars/getProvinces") + public List<StoreVos> getProvinces(@RequestBody Integer id){ + List<StoreVos> storeVos = new ArrayList<>(); + List<PointsMerchandiseCity> list = pmdsCityService.list(new LambdaQueryWrapper<PointsMerchandiseCity>() + .eq(PointsMerchandiseCity::getPointsMerchandiseId,id)); + if (list.size() > 0 ){ + for (PointsMerchandiseCity pointsMerchandiseCity : list) { + StoreVos storeVos1 = new StoreVos(); + storeVos1.setNum1(pointsMerchandiseCity.getProvince()); + storeVos1.setNum2(pointsMerchandiseCity.getCity()); + storeVos.add(storeVos1); + } + } + return storeVos; + } + + @PostMapping("/base/pointMerchars/add") + public Integer add(@RequestBody PointsMerchandise pointsMerchandise){ + Integer storeId = pointsMerchandise.getShelves(); + pointsMerchandise.setShelves(2); + boolean save = pmdsService.save(pointsMerchandise); + if(save && ToolUtil.isNotEmpty(storeId) && pointsMerchandise.getType()==2){ + PointsMerchandiseStore pointsMerchandiseStore = new PointsMerchandiseStore(); + pointsMerchandiseStore.setPointsMerchandiseId(pointsMerchandise.getId()); + pointsMerchandiseStore.setStoreId(storeId); + save = pmdstoService.save(pointsMerchandiseStore); + } + if(save && pointsMerchandise.getType()==2 && ToolUtil.isNotEmpty(pointsMerchandise.getProvinceCode())){ + pmdsService.saveCity(pointsMerchandise.getId(),pointsMerchandise.getProvince(),pointsMerchandise.getProvinceCode(),pointsMerchandise.getCity(),pointsMerchandise.getCityCode()); + } + if(save){ + return pointsMerchandise.getId(); + } + return null; + } + + + @PostMapping("/base/pointMerchars/addOther") + public Boolean addOther(@RequestBody String pam){ + Boolean save =false; + String[] split = pam.split("_"); + for (String s : split[1].split(",")) { + PointsMerchandiseStore pointsMerchandiseStore = new PointsMerchandiseStore(); + pointsMerchandiseStore.setPointsMerchandiseId(Integer.valueOf(split[0])); + pointsMerchandiseStore.setStoreId(Integer.valueOf(s)); + save = pmdstoService.save(pointsMerchandiseStore); + } + return save; + } + + @PostMapping("/base/pointMerchars/addCitys") + public Boolean addCitys(@RequestBody ArrayList<Map<String, String>> objects){ + try { + for (Map<String, String> object : objects) { + pmdsService.saveCity(Integer.valueOf(object.get("id")),object.get("pName"),object.get("pCode"),object.get("cName"),object.get("cCode")); + } + return true; + }catch (Exception e){ + e.printStackTrace(); + return false; + } + + } + + + @PostMapping("/base/pointMerchars/queryPointMerchaseById") + public PointsMerchandise queryPointMerchaseById(@RequestBody Integer id){ + return pmdsService.getById(id); + } + + + + @PostMapping("/base/pointMerchars/getshopName") + public Integer getshopName(@RequestBody Integer id){ + List<PointsMerchandiseStore> list = pmdstoService.list(new LambdaQueryWrapper<PointsMerchandiseStore>().eq(PointsMerchandiseStore::getPointsMerchandiseId, id)); + PointsMerchandiseStore pointsMerchandiseStore = list.get(0); + Integer storeId = pointsMerchandiseStore.getStoreId(); + return storeId; + } + } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java index 2afd765..017a237 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandise.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -98,11 +99,13 @@ * 开始时间 */ @TableField("startTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date startTime; /** * 结束时间 */ @TableField("endTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date endTime; /** * 使用范围(1=全国,2=指定城市,3=指定门店) @@ -148,6 +151,7 @@ * 添加时间 */ @TableField("insertTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date insertTime; /** * 课包支付配置id diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandiseCity.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandiseCity.java new file mode 100644 index 0000000..357ef8f --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/PointsMerchandiseCity.java @@ -0,0 +1,67 @@ +package com.dsh.activity.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + * <p> + * 积分商品使用门店关系数据 + * </p> + * + * @author jqs + * @since 2023-07-12 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_points_merchandise_city") +public class PointsMerchandiseCity extends Model<PointsMerchandiseCity> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 积分商品id + */ + @TableField("pointsMerchandiseId") + private Integer pointsMerchandiseId; + /** + * + */ + @TableField("city") + private String city; + /** + * + */ + @TableField("cityCode") + private String cityCode; + /** + * + */ + @TableField("province") + private String province; + /** + * + */ + @TableField("provinceCode") + private String provinceCode; + + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseCityMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseCityMapper.java new file mode 100644 index 0000000..91eb2c9 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseCityMapper.java @@ -0,0 +1,16 @@ +package com.dsh.activity.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.activity.entity.PointsMerchandiseCity; + +/** + * <p> + * 积分商品使用门店关系数据 Mapper 接口 + * </p> + * + * @author jqs + * @since 2023-07-12 + */ +public interface PointsMerchandiseCityMapper extends BaseMapper<PointsMerchandiseCity> { + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java index 1293821..fba1382 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/PointsMerchandiseMapper.java @@ -26,4 +26,5 @@ @Param("state") Integer state, @Param("page") Page<Map<String, Object>> page); + void saveCity(@Param("id") Integer id, @Param("province") String province, @Param("provinceCode") String provinceCode, @Param("city") String city, @Param("cityCode") String cityCode); } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/request/PointMercharsVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/PointMercharsVo.java index e781c0e..323169b 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/model/request/PointMercharsVo.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/request/PointMercharsVo.java @@ -24,6 +24,10 @@ */ Integer quantityIssued; /** + * 已领数量 + */ + Integer quantityHas; + /** * 限领数量 */ Integer pickUpQuantity; diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/response/GoodsInfoOneVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/GoodsInfoOneVo.java new file mode 100644 index 0000000..3bfcf80 --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/GoodsInfoOneVo.java @@ -0,0 +1,78 @@ +package com.dsh.activity.model.response; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class GoodsInfoOneVo { + + + String name; + /** + * 封面图 + */ + String cover; + /** + * 原价 + */ + BigDecimal price; + /** + * 兑换方式(1=积分,2=现金+积分, 3=现金) + */ + Integer exchangeMethod; + /** + * 现金 + */ + BigDecimal cash; + /** + * 积分 + */ + Integer integral; + /** + * 图片 + */ + String pics; + /** + * 用户人群 + */ + String userPopulation; + /** + * 发放数量 + */ + Integer quantityIssued; + /** + * 已领数量 + */ + Integer hasPicked; + /** + * 限领数量 + */ + Integer pickUpQuantity; + /** + * 有效期 + */ + String validTime; + /** + * 兑换地点 + */ + String exchangeArea; + /** + * 兑换地点 (1=全国,2=指定城市,3=指定门店) + */ + Integer useScope; + /** + * 商品说明 + */ + String redemptionInstructions; + /** + * 排序 + */ + Integer sort; + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/response/StoreVos.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/StoreVos.java new file mode 100644 index 0000000..aa7ffbb --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/response/StoreVos.java @@ -0,0 +1,16 @@ +package com.dsh.activity.model.response; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StoreVos { + + String num1; + + String num2; +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseCityService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseCityService.java new file mode 100644 index 0000000..9b42bbe --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseCityService.java @@ -0,0 +1,16 @@ +package com.dsh.activity.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsh.activity.entity.PointsMerchandiseCity; + +/** + * <p> + * 积分商品使用门店关系数据 服务类 + * </p> + * + * @author jqs + * @since 2023-07-12 + */ +public interface PointsMerchandiseCityService extends IService<PointsMerchandiseCity> { + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java index a27221b..c41c807 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/PointsMerchandiseService.java @@ -19,4 +19,5 @@ List<Map<String, Object>> queryGoodsListOfSearch(IntegralGoodsOfSearch ofSearch); + void saveCity(Integer id, String province, String provinceCode, String city, String cityCode); } diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseCityServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseCityServiceImpl.java new file mode 100644 index 0000000..457096c --- /dev/null +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseCityServiceImpl.java @@ -0,0 +1,20 @@ +package com.dsh.activity.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsh.activity.entity.PointsMerchandiseCity; +import com.dsh.activity.mapper.PointsMerchandiseCityMapper; +import com.dsh.activity.service.PointsMerchandiseCityService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 积分商品使用门店关系数据 服务实现类 + * </p> + * + * @author jqs + * @since 2023-07-12 + */ +@Service +public class PointsMerchandiseCityServiceImpl extends ServiceImpl<PointsMerchandiseCityMapper, PointsMerchandiseCity> implements PointsMerchandiseCityService { + +} diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java index 3709d22..eb072a7 100644 --- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java +++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/PointsMerchandiseServiceImpl.java @@ -26,4 +26,9 @@ return this.baseMapper.queryGoodsListOfSearch(ofSearch.getName(),ofSearch.getType(),ofSearch.getRedemptionMethod(), ofSearch.getUserPopulation(),ofSearch.getActiveStatus(),ofSearch.getState(),ofSearch.getPage()); } + + @Override + public void saveCity(Integer id, String province, String provinceCode, String city, String cityCode) { + this.baseMapper.saveCity(id,province,provinceCode,city,cityCode); + } } diff --git a/cloud-server-activity/src/main/resources/mapper/PointsMerchandiseCityMapper.xml b/cloud-server-activity/src/main/resources/mapper/PointsMerchandiseCityMapper.xml new file mode 100644 index 0000000..9ff98bd --- /dev/null +++ b/cloud-server-activity/src/main/resources/mapper/PointsMerchandiseCityMapper.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.dsh.activity.mapper.PointsMerchandiseCityMapper"> + + +</mapper> diff --git a/cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml b/cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml index 38bcc37..0d4abde 100644 --- a/cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml +++ b/cloud-server-activity/src/main/resources/mapper/PointsMerchandiseMapper.xml @@ -1,6 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dsh.activity.mapper.PointsMerchandiseMapper"> + <insert id="saveCity"> + insert into t_points_merchandise_city (id,pointsMerchandiseId,city,cityCode,province,provinceCode) value (null ,#{id},#{city},#{cityCode},#{province},#{provinceCode}) + </insert> <select id="queryGoodsListOfSearch" resultType="java.util.Map"> diff --git a/cloud-server-auth/src/main/resources/logback-spring.xml b/cloud-server-auth/src/main/resources/logback-spring.xml deleted file mode 100644 index b13e9b3..0000000 --- a/cloud-server-auth/src/main/resources/logback-spring.xml +++ /dev/null @@ -1,227 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,比如: 如果设置为WARN,则低于WARN的信息都不会输出 --> -<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true --> -<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 --> -<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> -<configuration scan="true" scanPeriod="10 seconds"> - <contextName>logback</contextName> - - <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 --> - <property name="log.path" value="/Users/java/logs"/> - - <!--0. 日志格式和颜色渲染 --> - <!-- 彩色日志依赖的渲染类 --> - <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> - <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> - <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> - <!-- 彩色日志格式 --> - <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> - - <!--1. 输出到控制台--> - <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> - <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息--> - <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> - <level>debug</level> - </filter> - <encoder> - <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> - <!-- 设置字符集 --> - <charset>UTF-8</charset> - </encoder> - </appender> - - <!--2. 输出到文档--> - <!-- 2.1 level为 DEBUG 日志,时间滚动输出 --> - <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <!-- 正在记录的日志文档的路径及文档名 --> - <file>${log.path}/${artifactId}/debug.log</file> - <!--日志文档输出格式 Output format of the log document.--> - <encoder> - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> - <charset>UTF-8</charset> <!-- 设置字符集 --> - </encoder> - <!-- 日志记录器的滚动策略,按日期,按大小记录 Rolling strategy of the logger, recording by date or by size.--> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <!-- 日志归档 --> - <fileNamePattern>${log.path}/${artifactId}/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>100MB</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <!--日志文档保留天数--> - <maxHistory>15</maxHistory> - </rollingPolicy> - <!-- 此日志文档只记录debug级别的 --> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>debug</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - </appender> - - <!-- 2.2 level为 INFO 日志,时间滚动输出 --> - <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <!-- 正在记录的日志文档的路径及文档名 --> - <file>${log.path}/${artifactId}/info.log</file> - <!--日志文档输出格式 Output format of the log document.--> - <encoder> - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> - <charset>UTF-8</charset> - </encoder> - <!-- 日志记录器的滚动策略,按日期,按大小记录 Rolling strategy of the logger, recording by date or by size.--> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <!-- 每天日志归档路径以及格式 --> - <fileNamePattern>${log.path}/${artifactId}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>100MB</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <!--日志文档保留天数--> - <maxHistory>15</maxHistory> - </rollingPolicy> - <!-- 此日志文档只记录info级别的 --> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>info</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - </appender> - - <!-- 2.3 level为 WARN 日志,时间滚动输出 --> - <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <!-- 正在记录的日志文档的路径及文档名 --> - <file>${log.path}/${artifactId}/warn.log</file> - <!--日志文档输出格式 Output format of the log document.--> - <encoder> - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> - <charset>UTF-8</charset> <!-- 此处设置字符集 --> - </encoder> - <!-- 日志记录器的滚动策略,按日期,按大小记录 Rolling strategy of the logger, recording by date or by size.--> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${log.path}/${artifactId}/%d{yyyy-MM-dd}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>100MB</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <!--日志文档保留天数--> - <maxHistory>15</maxHistory> - </rollingPolicy> - <!-- 此日志文档只记录warn级别的 --> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>warn</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - </appender> - - <!-- 2.4 level为 ERROR 日志,时间滚动输出 --> - <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <!-- 正在记录的日志文档的路径及文档名 --> - <file>${log.path}/${artifactId}/error.log</file> - <!--日志文档输出格式 Output format of the log document.--> - <encoder> - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> - <charset>UTF-8</charset> <!-- 此处设置字符集 --> - </encoder> - <!-- 日志记录器的滚动策略,按日期,按大小记录 Rolling strategy of the logger, recording by date or by size.--> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${log.path}/${artifactId}/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>100MB</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <!--日志文档保留天数--> - <maxHistory>15</maxHistory> - </rollingPolicy> - <!-- 此日志文档只记录ERROR级别的 --> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>ERROR</level> - <onMatch>ACCEPT</onMatch> - <onMismatch>DENY</onMismatch> - </filter> - </appender> - - <!-- 2.5 所有 除了DEBUG级别的其它高于DEBUG的 日志,记录到一个文件 --> - <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> - <!-- 正在记录的日志文档的路径及文档名 --> - <file>${log.path}/${artifactId}/all.log</file> - <!--日志文档输出格式 Output format of the log document.--> - <encoder> - <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> - <charset>UTF-8</charset> <!-- 此处设置字符集 --> - </encoder> - <!-- 日志记录器的滚动策略,按日期,按大小记录 Rolling strategy of the logger, recording by date or by size.--> - <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> - <fileNamePattern>${log.path}/${artifactId}/%d{yyyy-MM-dd}/all-%d{yyyy-MM-dd}.%i.log</fileNamePattern> - <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> - <maxFileSize>100MB</maxFileSize> - </timeBasedFileNamingAndTriggeringPolicy> - <!--日志文档保留天数--> - <maxHistory>15</maxHistory> - </rollingPolicy> - <!-- 此日志文档记录除了DEBUG级别的其它高于DEBUG的 --> - <filter class="ch.qos.logback.classic.filter.LevelFilter"> - <level>DEBUG</level> - <onMatch>DENY</onMatch> - <onMismatch>ACCEPT</onMismatch> - </filter> - </appender> - - <!-- - <logger>用来设置某一个包或者具体的某一个类的日志打印级别、 - 以及指定<appender>。<logger>仅有一个name属性, - 一个可选的level和一个可选的addtivity属性。 - name:用来指定受此logger约束的某一个包或者具体的某一个类。 - level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, - 还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。 - 如果未设置此属性,那么当前logger将会继承上级的级别。 - addtivity:是否向上级logger传递打印信息。默认是true。 - <logger name="org.springframework.web" level="info"/> - <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/> - --> - - <!-- - root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性 - level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, - 不能设置为INHERITED或者同义词NULL。默认是DEBUG - 可以包含零个或多个元素,标识这个appender将会添加到这个logger。 - --> - - <!-- 4 最终的策略: - 基本策略(root级) + 根据profile在启动时, logger标签中定制化package日志级别(优先级高于上面的root级)--> - <springProfile name="dev"> - <root level="info"> - <appender-ref ref="CONSOLE" /> - <appender-ref ref="DEBUG_FILE" /> - <appender-ref ref="INFO_FILE" /> - <appender-ref ref="WARN_FILE" /> - <appender-ref ref="ERROR_FILE" /> - <appender-ref ref="ALL_FILE" /> - </root> - <logger name="com.dsh" level="debug"/> - <logger name="business-log" level="warn"/> - </springProfile> - - <springProfile name="fat"> - <root level="info"> - <appender-ref ref="CONSOLE" /> - <appender-ref ref="DEBUG_FILE" /> - <appender-ref ref="INFO_FILE" /> - <appender-ref ref="WARN_FILE" /> - <appender-ref ref="ERROR_FILE" /> - <appender-ref ref="ALL_FILE" /> - </root> - <logger name="com.dsh.course.mapper" level="error"/> - <logger name="business-log" level="warn"/> - </springProfile> - - <springProfile name="prod"> - <root level="warn"> - <!-- 生产环境最好不配置console写文件 --> - <appender-ref ref="DEBUG_FILE" /> - <appender-ref ref="INFO_FILE" /> - <appender-ref ref="WARN_FILE" /> - <appender-ref ref="ERROR_FILE" /> - <appender-ref ref="ALL_FILE" /> - </root> - <logger name="com.dsh.course.mapper" level="error"/> - <logger name="business-log" level="warn"/> - </springProfile> - -</configuration> \ No newline at end of file diff --git a/cloud-server-competition/src/main/resources/logback-spring.xml b/cloud-server-competition/src/main/resources/logback-spring.xml index e98de73..b13e9b3 100644 --- a/cloud-server-competition/src/main/resources/logback-spring.xml +++ b/cloud-server-competition/src/main/resources/logback-spring.xml @@ -35,7 +35,7 @@ <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/${artifactId}/debug.log</file> - <!--日志文档输出格式 Output format of the log document.--> + <!--日志文档输出格式 Output format of the log document.--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 设置字符集 --> @@ -62,7 +62,7 @@ <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/${artifactId}/info.log</file> - <!--日志文档输出格式 Output format of the log document.--> + <!--日志文档输出格式 Output format of the log document.--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> @@ -89,7 +89,7 @@ <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/${artifactId}/warn.log</file> - <!--日志文档输出格式 Output format of the log document.--> + <!--日志文档输出格式 Output format of the log document.--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> @@ -115,7 +115,7 @@ <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/${artifactId}/error.log</file> - <!--日志文档输出格式 Output format of the log document.--> + <!--日志文档输出格式 Output format of the log document.--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> @@ -141,7 +141,7 @@ <appender name="ALL_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文档的路径及文档名 --> <file>${log.path}/${artifactId}/all.log</file> - <!--日志文档输出格式 Output format of the log document.--> + <!--日志文档输出格式 Output format of the log document.--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> <!-- 此处设置字符集 --> diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java index bb2a1fe..f885da2 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java @@ -2,11 +2,10 @@ import cn.mb.cloud.common.data.controller.BaseController; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.dsh.course.entity.TCourse; -import com.dsh.course.entity.TCoursePackagePayment; -import com.dsh.course.entity.TCoursePackageType; +import com.dsh.course.entity.*; import com.dsh.course.feignclient.model.ExerciseVideo; import com.dsh.course.model.*; import com.dsh.course.model.dto.CourseChangeStateDTO; @@ -16,6 +15,7 @@ import com.dsh.course.service.TCoursePackageService; import com.dsh.course.service.TCoursePackageTypeService; import com.dsh.course.service.TCourseService; +import com.dsh.course.service.*; import com.dsh.course.util.PageFactory; import com.dsh.course.util.PayMoneyUtil; import com.dsh.course.util.ResultUtil; @@ -34,6 +34,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -63,6 +64,8 @@ @Autowired private TCoursePackagePaymentService coursePackagePaymentService; + @Autowired + private TCoursePackageDiscountService discountService; /** * 上/下架 1为上架 2为下架 3为删除 * @@ -71,6 +74,9 @@ @RequestMapping("/base/course/changeState") @ResponseBody public Object changeState(@RequestBody CourseChangeStateDTO dto){ + + + return courseService.changeState(dto); } @@ -377,4 +383,93 @@ public List<TCourse> queryCourseByType(@RequestBody Integer type){ return courseService.list(new QueryWrapper<TCourse>().eq("type", type).eq("state", 1)); } + + + @PostMapping("/course/queryDiscountList") + public List<DiscountList> queryDiscountList(@RequestBody QueryDiscountList queryDiscountList){ + return discountService.queryDiscountList(queryDiscountList); + } + @PostMapping("/course/queryDiscountListAudit") + public List<DiscountList> queryDiscountListAudit(@RequestBody QueryDiscountList queryDiscountList){ + return discountService.queryDiscountListAudit(queryDiscountList); + } + + @PostMapping("/course/updateState") + public Boolean updateState( @RequestBody DiscountUpdateState discountUpdateState){ + TCoursePackageDiscount byId = discountService.getById(discountUpdateState.getId()); + List<TCoursePackageDiscount> list = discountService.list(new LambdaQueryWrapper<TCoursePackageDiscount>().eq(TCoursePackageDiscount::getCoursePackageId, byId.getCoursePackageId())); + list.forEach(e->e.setStatus(discountUpdateState.getStatus())); + return discountService.updateBatchById(list); + } + + + @PostMapping("/course/auditDiscount") + public Boolean auditDiscount( @RequestBody AuditDiscount auditDiscount){ + TCoursePackageDiscount byId = discountService.getById(auditDiscount.getId()); + List<TCoursePackageDiscount> list = discountService.list(new LambdaQueryWrapper<TCoursePackageDiscount>().eq(TCoursePackageDiscount::getCoursePackageId, byId.getCoursePackageId())); + for (TCoursePackageDiscount tCoursePackageDiscount : list) { + tCoursePackageDiscount.setAuditStatus(auditDiscount.getType()); + tCoursePackageDiscount.setAuditRemark(auditDiscount.getText()); + } + + return discountService.updateBatchById(list); + } + + @PostMapping("/course/queryByDiscountId") + public TCoursePackage queryByDiscountId(@RequestBody Integer id){ + TCoursePackageDiscount byId = discountService.getById(id); + TCoursePackage byId1 = coursePackageService.getById(byId.getCoursePackageId()); + return byId1; + } + + @PostMapping("/course/queryDiscountById") + public Integer queryDiscountById(@RequestBody Integer id){ + TCoursePackageDiscount byId = discountService.getById(id); + return byId.getAuditStatus(); + } + + + + @PostMapping("/course/getPageageType") + public List<Map<String, Object>> getPageageType(){ + List<TCoursePackageType> list = coursePackageTypeService.list(new LambdaQueryWrapper<TCoursePackageType>().eq(TCoursePackageType::getState, 1)); + ArrayList<Map<String, Object>> objects = new ArrayList<>(); + for (TCoursePackageType tCoursePackageType : list) { + HashMap<String, Object> map = new HashMap<>(); + map.put("id",tCoursePackageType.getId()); + map.put("name",tCoursePackageType.getName()); + objects.add(map); + } + return objects; + } + + + @PostMapping("/course/queryByTypeId") + public List<TCoursePackage> queryByTypeId(@RequestBody Integer oneId){ + return coursePackageService.list(new LambdaQueryWrapper<TCoursePackage>().eq(TCoursePackage::getCoursePackageTypeId,oneId).eq(TCoursePackage::getAuditStatus,2).eq(TCoursePackage::getState,1)); + } + + + @PostMapping("/course/queryByConfigId") + public List<Map<String, Object>> queryByConfigId(@RequestBody Integer oneId){ + return coursePackageService.queryByConfigId(oneId); + } + + + @PostMapping("/course/queryPackageById") + public List<String> queryPackageById(@RequestBody Integer coursePackageId){ + ArrayList<String> strings = new ArrayList<>(); + TCoursePackage byId = coursePackageService.getById(coursePackageId); + Integer coursePackageTypeId = byId.getCoursePackageTypeId(); + strings.add(coursePackageTypeService.getById(coursePackageTypeId).getName()); + strings.add(byId.getName()); + + return strings; + + } + + @PostMapping("/course/getHours") + public String getHours(@RequestBody Integer coursePackageId1){ + return coursePackageService.getHours(coursePackageId1); + } } diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageDiscountController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageDiscountController.java index d5649f6..45be4c1 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageDiscountController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackageDiscountController.java @@ -31,7 +31,11 @@ return coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", coursePackagePaymentConfigId) .eq("auditStatus", 2)); } - + @PostMapping("/coursePackageDiscount/queryCoursePackageDiscountOne") + public List<TCoursePackageDiscount> queryCoursePackageDiscountOne(@RequestBody Integer id){ + return coursePackageDiscountService.list(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackagePaymentConfigId", id) + .ne("auditStatus", 2)); + } /** * 编辑课包折扣 diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackageDiscount.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackageDiscount.java index 48ac5e9..bebf2e2 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackageDiscount.java +++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackageDiscount.java @@ -74,6 +74,6 @@ @TableField("insertTime") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date insertTime; - - + @TableField("status") + private Integer status; } diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageDiscountMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageDiscountMapper.java index 38b7057..90b2fe2 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageDiscountMapper.java +++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageDiscountMapper.java @@ -1,7 +1,12 @@ package com.dsh.course.mapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dsh.course.entity.TCoursePackageDiscount; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsh.course.model.DiscountList; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * <p> @@ -13,4 +18,7 @@ */ public interface TCoursePackageDiscountMapper extends BaseMapper<TCoursePackageDiscount> { + List<DiscountList> queryDiscountList(@Param("discountListPage") Page<DiscountList> discountListPage, @Param("pCode") String pCode, @Param("cCode") String cCode, @Param("name") String name, @Param("type") Integer type, @Param("ids") List<Integer> ids); + + List<DiscountList> queryDiscountListAudit(@Param("discountListPage") Page<DiscountList> discountListPage, @Param("pCode") String pCode, @Param("cCode") String cCode, @Param("name") String name, @Param("type") Integer type, @Param("ids") List<Integer> ids); } diff --git a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageMapper.java b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageMapper.java index f85010f..3017da9 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageMapper.java +++ b/cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageMapper.java @@ -42,4 +42,10 @@ */ List<Map<String, Object>> queryExamineCoursePackageLists(Page<Map<String, Object>> page, @Param("item") QueryExamineCoursePackageLists queryExamineCoursePackageLists); + List<Map<String, Object>> queryByConfigId(@Param("oneId") Integer oneId); + + String getHours(@Param("coursePackageId") Integer coursePackageId); + + + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/AuditDiscount.java b/cloud-server-course/src/main/java/com/dsh/course/model/AuditDiscount.java new file mode 100644 index 0000000..970b818 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/AuditDiscount.java @@ -0,0 +1,16 @@ +package com.dsh.course.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AuditDiscount { + private Integer id; + + private Integer type; + + private String text; +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/DiscountList.java b/cloud-server-course/src/main/java/com/dsh/course/model/DiscountList.java new file mode 100644 index 0000000..f054562 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/DiscountList.java @@ -0,0 +1,23 @@ +package com.dsh.course.model; + +import lombok.Data; + +@Data +public class DiscountList { + private Integer id; + + private String pName; + + private String cName; + + private String shopName; + + private String name; + + private String type; + + private Integer status; + + private Integer storeId; + private Integer courseId; +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/DiscountUpdateState.java b/cloud-server-course/src/main/java/com/dsh/course/model/DiscountUpdateState.java new file mode 100644 index 0000000..1b4747e --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/DiscountUpdateState.java @@ -0,0 +1,14 @@ +package com.dsh.course.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DiscountUpdateState { + private Integer id; + + private Integer status; +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/QueryDiscountList.java b/cloud-server-course/src/main/java/com/dsh/course/model/QueryDiscountList.java new file mode 100644 index 0000000..72c4cd0 --- /dev/null +++ b/cloud-server-course/src/main/java/com/dsh/course/model/QueryDiscountList.java @@ -0,0 +1,25 @@ +package com.dsh.course.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class QueryDiscountList { + private long offset; + private long limit; + + private String pCode; + + private String cCode; + + private String name; + + private Integer type; + + private List<Integer> ids; +} diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java index cd02a1a..118f746 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageDiscountService.java @@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.dsh.course.entity.TCoursePackageDiscount; +import com.dsh.course.model.DiscountList; +import com.dsh.course.model.QueryDiscountList; import com.dsh.course.model.vo.response.Details; import com.dsh.course.model.vo.response.ExchangeCoursePackageResponse; @@ -23,4 +25,9 @@ ExchangeCoursePackageResponse getWeekFreeCourseDetails(Integer coursePackageDiscountId,String lat,String lon); + List<DiscountList> queryDiscountList(QueryDiscountList queryDiscountList); + + + List<DiscountList> queryDiscountListAudit(QueryDiscountList queryDiscountList); + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageService.java b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageService.java index d7d6a12..4708c1c 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageService.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageService.java @@ -84,4 +84,9 @@ * @return */ List<Map<String, Object>> queryExamineCoursePackageLists(Page<Map<String, Object>> page, QueryExamineCoursePackageLists queryExamineCoursePackageLists); + + List<Map<String, Object>> queryByConfigId(Integer oneId); + + String getHours(Integer coursePackageId); + } diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java index 1017f20..ec83f76 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageDiscountServiceImpl.java @@ -3,7 +3,9 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.course.entity.CoursePackagePaymentConfig; import com.dsh.course.entity.TCoursePackage; @@ -16,6 +18,8 @@ import com.dsh.course.mapper.TCoursePackageDiscountMapper; import com.dsh.course.mapper.TCoursePackageMapper; import com.dsh.course.mapper.TCoursePackagePaymentMapper; +import com.dsh.course.model.DiscountList; +import com.dsh.course.model.QueryDiscountList; import com.dsh.course.model.vo.response.Details; import com.dsh.course.model.vo.response.ExchangeCoursePackageResponse; import com.dsh.course.service.TCoursePackageDiscountService; @@ -352,6 +356,70 @@ return packageResponse; } + @Override + public List<DiscountList> queryDiscountList(QueryDiscountList queryDiscountList) { + Page<DiscountList> discountListPage = new Page<>(queryDiscountList.getOffset(), queryDiscountList.getLimit()); + List<DiscountList> discountLists = this.baseMapper.queryDiscountList(discountListPage, queryDiscountList.getPCode(), queryDiscountList.getCCode(), queryDiscountList.getName(), queryDiscountList.getType(), queryDiscountList.getIds()); + for (DiscountList discountList : discountLists) { + List<TCoursePackageDiscount> tCoursePackageDiscounts = this.baseMapper.selectList(new LambdaQueryWrapper<TCoursePackageDiscount>().eq(TCoursePackageDiscount::getCoursePackageId, discountList.getCourseId()).eq(TCoursePackageDiscount::getAuditStatus,2).orderByAsc(TCoursePackageDiscount::getType)); + long count = tCoursePackageDiscounts.stream().filter(e -> e.getStatus().equals(2)).count(); + if(count>0){ + discountList.setStatus(2); + }else { + discountList.setStatus(1); + } + String type=""; + for (int i = 0; i < tCoursePackageDiscounts.size(); i++) { + if(tCoursePackageDiscounts.get(i).getType()==1){ + type += "会员折扣、"; + }else if(tCoursePackageDiscounts.get(i).getType()==3){ + type += "限时折扣、"; + }else if(tCoursePackageDiscounts.get(i).getType()==4){ + type += "赠送课时、"; + } + } + if(type.length()>0){ + type = type.substring(0,type.length()-1); + } + discountList.setType(type); + } + return discountLists; + } + + public static void main(String[] args) { + String a ="1312dsad132"; + a = a.substring(0,a.length()-1); + System.out.println(a); + } + @Override + public List<DiscountList> queryDiscountListAudit(QueryDiscountList queryDiscountList) { + Page<DiscountList> discountListPage = new Page<>(queryDiscountList.getOffset(), queryDiscountList.getLimit()); + List<DiscountList> discountLists = this.baseMapper.queryDiscountListAudit(discountListPage, queryDiscountList.getPCode(), queryDiscountList.getCCode(), queryDiscountList.getName(), queryDiscountList.getType(), queryDiscountList.getIds()); + for (DiscountList discountList : discountLists) { + List<TCoursePackageDiscount> tCoursePackageDiscounts = this.baseMapper.selectList(new LambdaQueryWrapper<TCoursePackageDiscount>().eq(TCoursePackageDiscount::getCoursePackageId, discountList.getCourseId()).ne(TCoursePackageDiscount::getAuditStatus,2).orderByAsc(TCoursePackageDiscount::getType)); + long count = tCoursePackageDiscounts.stream().filter(e -> e.getAuditStatus().equals(2)).count(); + if(count>0){ + discountList.setStatus(2); + }else { + discountList.setStatus(1); + } + String type=""; + for (int i = 0; i < tCoursePackageDiscounts.size(); i++) { + if(tCoursePackageDiscounts.get(i).getType()==1){ + type += "会员折扣、"; + }else if(tCoursePackageDiscounts.get(i).getType()==3){ + type += "限时折扣、"; + }else if(tCoursePackageDiscounts.get(i).getType()==4){ + type += "赠送课时、"; + } + } + if(type.length()>0){ + type = type.substring(0,type.length()-1); + } + discountList.setType(type); + } + return discountLists; + } private static boolean isDateWithinRange(Date date, Date startTime, Date endTime) { diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java index 7358a5e..8111282 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java @@ -951,4 +951,14 @@ } return list; } + + @Override + public List<Map<String, Object>> queryByConfigId(Integer oneId) { + return this.baseMapper.queryByConfigId(oneId); + } + + @Override + public String getHours(Integer coursePackageId) { + return this.baseMapper.getHours(coursePackageId); + } } diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml index 95fc2a7..4f085f6 100644 --- a/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml +++ b/cloud-server-course/src/main/resources/mapper/TCoursePackageDiscountMapper.xml @@ -14,5 +14,43 @@ <result column="auditRemark" property="auditRemark" /> <result column="insertTime" property="insertTime" /> </resultMap> + <select id="queryDiscountList" resultType="com.dsh.course.model.DiscountList"> + select t1.id,t1.type,t1.status,t2.province pName,t2.city cName,t2.name,t2.storeId,t2.id courseId from t_course_package_discount t1 left join t_course_package t2 on t1.coursePackageId = t2.id + where t2.storeId in <foreach collection="ids" close=")" item="id" open="(" separator=","> + #{id} and t1.auditStatus =2 + </foreach> + <if test="pCode !=null and pCode !=''"> + and t2.provinceCode =#{pCode} + </if> + <if test="cCode !=null and cCode !=''"> + and t2.cityCode =#{cCode} + </if> + <if test="name !=null and name !=''"> + and t2.name like concat("%",#{name},"%") + </if> + <if test="type !=null "> + and t1.type =#{type} + </if> + group by t1.coursePackageId + </select> + <select id="queryDiscountListAudit" resultType="com.dsh.course.model.DiscountList"> + select t1.id,t1.type,t1.auditStatus status,t2.province pName,t2.city cName,t2.name,t2.storeId,t2.id courseId from t_course_package_discount t1 left join t_course_package t2 on t1.coursePackageId = t2.id + where t2.storeId in <foreach collection="ids" close=")" item="id" open="(" separator=","> + #{id} and t1.auditStatus !=2 + </foreach> + <if test="pCode !=null and pCode !=''"> + and t2.provinceCode =#{pCode} + </if> + <if test="cCode !=null and cCode !=''"> + and t2.cityCode =#{cCode} + </if> + <if test="name !=null and name !=''"> + and t2.name like concat("%",#{name},"%") + </if> + <if test="type !=null "> + and t1.type =#{type} + </if> + group by t1.coursePackageId + </select> </mapper> diff --git a/cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml b/cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml index bf5df87..8fc1230 100644 --- a/cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml +++ b/cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml @@ -125,4 +125,10 @@ </if> order by a.insertTime desc </select> + <select id="queryByConfigId" resultType="java.util.Map"> + select id,classHours from t_course_package_payment_config where coursePackageId =#{oneId} + </select> + <select id="getHours" resultType="java.lang.String"> + select classHours from t_course_package_payment_config where id =#{coursePackageId} + </select> </mapper> diff --git a/cloud-server-management/mb-cloud-management.iml b/cloud-server-management/mb-cloud-management.iml index 50ddf3f..ad486c1 100644 --- a/cloud-server-management/mb-cloud-management.iml +++ b/cloud-server-management/mb-cloud-management.iml @@ -205,7 +205,7 @@ <orderEntry type="library" name="Maven: xpp3:xpp3_min:1.1.4c" level="project" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.10" level="project" /> <orderEntry type="library" name="Maven: com.aliyun.oss:aliyun-sdk-oss:2.5.0" level="project" /> - <orderEntry type="library" name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.3" level="project" /> + <orderEntry type="library" name="Maven: com.huaweicloud:esdk-obs-java-bundle:3.23.5" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-core:2.13.3" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.13.3" level="project" /> <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.13" level="project" /> diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java index 7c252e3..fc8eeb3 100644 --- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/PointMercharsClient.java @@ -5,10 +5,15 @@ import com.dsh.course.feignClient.activity.model.IntegralGoodsOfSearch; import com.dsh.course.feignClient.activity.model.PointMercharsPayedVo; import com.dsh.course.feignClient.activity.model.PointMercharsVo; +import com.dsh.course.feignClient.activity.model.PointsMerchandise; +import com.dsh.guns.modular.system.model.GoodsInfoOneVo; +import com.dsh.guns.modular.system.model.StoreVos; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -27,4 +32,37 @@ @PostMapping("/base/pointMerchars/queryUserPayedGoodsList") List<Map<String, Object>> queryUserPayedGoodsList(@RequestBody PointMercharsPayedVo pointMercharsPayedVo); + @PostMapping("/base/pointMerchars/add") + Integer add(PointsMerchandise pointsMerchandise); + + @PostMapping("/base/pointMerchars/addOther") + Boolean addOther(@RequestBody String pam); + + @PostMapping("/base/pointMerchars/addCitys") + Boolean addCitys(@RequestBody List<Map<String, String>> objects); + + @PostMapping("/base/pointMerchars/queryPointMerchaseById") + PointsMerchandise queryPointMerchaseById(Integer id); + + + @PostMapping("/base/pointMerchars/getshopName") + Integer getshopName(Integer id); + + @PostMapping("/base/pointMerchars/writeOffGoodsStatus") + boolean writeOffGoodsStatus(@RequestBody Map<String, Object> map); + + @PostMapping("/base/pointMerchars/updateGoodsDetail") + boolean updateGoodsDetail(@RequestBody Map<String, Object> stringObjectHashMap); + + + @PostMapping("/base/pointMerchars/queryDetailsOfGoods") + GoodsInfoOneVo queryDetailsOfGoods(@RequestBody Integer id); + + + @PostMapping("/base/pointMerchars/getStoreList") + List<StoreVos> getStoreList(@RequestBody Integer id); + + @PostMapping("/base/pointMerchars/getProvinces") + List<StoreVos> getProvinces(@RequestBody Integer id); + } diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/PointMercharsVo.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/PointMercharsVo.java index ab8d03b..8e3e984 100644 --- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/PointMercharsVo.java +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/PointMercharsVo.java @@ -24,6 +24,10 @@ */ Integer quantityIssued; /** + * 已领数量 + */ + Integer quantityHas; + /** * 限领数量 */ Integer pickUpQuantity; diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/PointsMerchandise.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/PointsMerchandise.java new file mode 100644 index 0000000..fe72114 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/PointsMerchandise.java @@ -0,0 +1,172 @@ +package com.dsh.course.feignClient.activity.model; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * <p> + * 积分商品 + * </p> + * + * @author jqs + * @since 2023-07-04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@TableName("t_points_merchandise") +public class PointsMerchandise extends Model<PointsMerchandise> { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 类型(1=实体商品,2=课包商品,3=门票商品 4=优惠券) + */ + @TableField("type") + private Integer type; + /** + * 商品名称 + */ + @TableField("name") + private String name; + /** + * 课包id + */ + @TableField("coursePackageId") + private Integer coursePackageId; + /** + * 原价 + */ + @TableField("price") + private BigDecimal price; + /** + * 兑换方式(1=积分,2=现金+积分) + */ + @TableField("redemptionMethod") + private Integer redemptionMethod; + /** + * 所需现金 + */ + @TableField("cash") + private BigDecimal cash; + /** + * 所属积分 + */ + @TableField("integral") + private Integer integral; + /** + * 商品封面 + */ + @TableField("cover") + private String cover; + /** + * 商品图片 + */ + @TableField("productImages") + private String productImages; + /** + * 用户人群(1=全部用户,2=年度会员,3=已有学员用户) + */ + @TableField("userPopulation") + private Integer userPopulation; + /** + * 发放数量 + */ + @TableField("quantityIssued") + private Integer quantityIssued; + /** + * 限领数量 + */ + @TableField("pickUpQuantity") + private Integer pickUpQuantity; + /** + * 开始时间 + */ + @TableField("startTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date startTime; + /** + * 结束时间 + */ + @TableField("endTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date endTime; + /** + * 使用范围(1=全国,2=指定城市,3=指定门店) + */ + @TableField("useScope") + private Integer useScope; + /** + * 省 + */ + @TableField("province") + private String province; + /** + * 省编号 + */ + @TableField("provinceCode") + private String provinceCode; + /** + * 市 + */ + @TableField("city") + private String city; + /** + * 市编号 + */ + @TableField("cityCode") + private String cityCode; + /** + * 兑换说明 + */ + @TableField("redemptionInstructions") + private String redemptionInstructions; + /** + * 排序 + */ + @TableField("sort") + private Integer sort; + /** + * 状态(1=正常,2=冻结,3=删除) + */ + @TableField("state") + private Integer state; + /** + * 添加时间 + */ + @TableField("insertTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date insertTime; + /** + * 课包支付配置id + */ + @TableField("coursePackageConfigId") + private Integer coursePackageConfigId; + /** + * 1=上架 2=下架 + */ + @TableField("shelves") + private Integer shelves; + + @Override + protected Serializable pkVal() { + return this.id; + } + +} diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java index fe050a9..c815dfb 100644 --- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CourseClient.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dsh.course.feignClient.course.model.CourseChangeStateDTO; import com.dsh.course.feignClient.course.model.QueryCourseList; +import com.dsh.course.feignClient.course.model.*; import com.dsh.guns.modular.system.model.EditCourseState; import com.dsh.guns.modular.system.model.TCourse; import com.dsh.guns.modular.system.model.TQueryBenefitsVideosDTO; @@ -95,4 +96,38 @@ */ @PostMapping("/course/queryCourseByType") List<TCourse> queryCourseByType(Integer type); + + + @PostMapping("/course/queryDiscountList") + List<DiscountList> queryDiscountList(QueryDiscountList queryDiscountList); + + @PostMapping("/course/updateState") + Boolean updateState(DiscountUpdateState discountUpdateState); + + @PostMapping("/course/queryDiscountListAudit") + List<DiscountList> queryDiscountListAudit(QueryDiscountList queryDiscountList); + + @PostMapping("/course/auditDiscount") + Boolean auditDiscount(AuditDiscount auditDiscount); + + @PostMapping("/course/queryByDiscountId") + TCoursePackage queryByDiscountId(Integer id); + @PostMapping("/course/queryDiscountById") + Integer queryDiscountById(Integer id); + + @PostMapping("/course/getPageageType") + List<Map<String, Object>> getPageageType(); + + @PostMapping("/course/queryByTypeId") + List<TCoursePackage> queryByTypeId(Integer oneId); + + @PostMapping("/course/queryByConfigId") + List<Map<String, Object>> queryByConfigId(Integer oneId); + + @PostMapping("/course/queryPackageById") + List<String> queryPackageById(Integer coursePackageId); + + @PostMapping("/course/getHours") + String getHours(Integer coursePackageId1); + } diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageDiscountClient.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageDiscountClient.java index b3faf17..9ba9a71 100644 --- a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageDiscountClient.java +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageDiscountClient.java @@ -26,7 +26,10 @@ * 配置课包折扣数据 * @param list */ + @PostMapping("/coursePackageDiscount/setCoursePackageDiscount") void setCoursePackageDiscount(List<TCoursePackageDiscount> list); + @PostMapping("/coursePackageDiscount/queryCoursePackageDiscountOne") + List<TCoursePackageDiscount> queryCoursePackageDiscountOne(Integer id); } diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/AuditDiscount.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/AuditDiscount.java new file mode 100644 index 0000000..66dae0b --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/AuditDiscount.java @@ -0,0 +1,16 @@ +package com.dsh.course.feignClient.course.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AuditDiscount { + private Integer id; + + private Integer type; + + private String text; +} diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/DiscountList.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/DiscountList.java new file mode 100644 index 0000000..59af385 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/DiscountList.java @@ -0,0 +1,23 @@ +package com.dsh.course.feignClient.course.model; + +import lombok.Data; + +@Data +public class DiscountList { + private Integer id; + + private String pName; + + private String cName; + + private String shopName; + + private String name; + + private String type; + + private Integer status; + + private Integer storeId; + private Integer courseId; +} diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/DiscountUpdateState.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/DiscountUpdateState.java new file mode 100644 index 0000000..d89f36e --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/DiscountUpdateState.java @@ -0,0 +1,14 @@ +package com.dsh.course.feignClient.course.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DiscountUpdateState { + private Integer id; + + private Integer status; +} diff --git a/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/QueryDiscountList.java b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/QueryDiscountList.java new file mode 100644 index 0000000..6c78a09 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/QueryDiscountList.java @@ -0,0 +1,25 @@ +package com.dsh.course.feignClient.course.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class QueryDiscountList { + private long offset; + private long limit; + + private String pCode; + + private String cCode; + + private String name; + + private Integer type; + + private List<Integer> ids; +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java index a7ea97d..9d33d8f 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TCityController.java @@ -11,6 +11,8 @@ import com.dsh.course.feignClient.account.model.TCityManager; import com.dsh.course.feignClient.competition.CompetitionClient; import com.dsh.course.feignClient.competition.model.*; +import com.dsh.course.feignClient.course.CourseClient; +import com.dsh.course.feignClient.course.model.TCoursePackage; import com.dsh.course.mapper.UserMapper; import com.dsh.guns.core.base.controller.BaseController; import com.dsh.guns.core.base.tips.SuccessTip; @@ -32,6 +34,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -59,6 +62,9 @@ @Resource private UserMapper userMapper; + + @Autowired + private CourseClient courseClient; /** @@ -182,6 +188,38 @@ return ERROR; } } + @RequestMapping(value = "/storeChange") + @ResponseBody + public Object storeChange(Integer oneId) { + try { + return storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getCityCode, oneId)); + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } + @RequestMapping(value = "/packageChange") + @ResponseBody + public Object packageChange(Integer oneId) { + try { + List<TCoursePackage> list = courseClient.queryByTypeId(oneId); + return list; + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } + @RequestMapping(value = "/timeChange") + @ResponseBody + public Object timeChange(Integer oneId) { + try { + List<Map<String,Object>> list = courseClient.queryByConfigId(oneId); + return list; + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } @RequestMapping(value = "/cancel") diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java new file mode 100644 index 0000000..b8d1c5d --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TDiscountController.java @@ -0,0 +1,382 @@ +package com.dsh.guns.modular.system.controller.code; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.dsh.course.feignClient.competition.CompetitionClient; +import com.dsh.course.feignClient.competition.model.Competition; +import com.dsh.course.feignClient.competition.model.CompetitionUser; +import com.dsh.course.feignClient.competition.model.GetPeopleQuery; +import com.dsh.course.feignClient.competition.model.ListQuery; +import com.dsh.course.feignClient.course.CourseClient; +import com.dsh.course.feignClient.course.CoursePackageDiscountClient; +import com.dsh.course.feignClient.course.CoursePackagePaymentConfigClient; +import com.dsh.course.feignClient.course.CoursePackageTypeClient; +import com.dsh.course.feignClient.course.model.*; +import com.dsh.guns.core.base.controller.BaseController; +import com.dsh.guns.core.base.tips.ErrorTip; +import com.dsh.guns.core.base.tips.SuccessTip; +import com.dsh.guns.core.common.constant.factory.PageFactory; +import com.dsh.guns.core.util.ToolUtil; +import com.dsh.guns.modular.system.model.TCity; +import com.dsh.guns.modular.system.model.TStore; +import com.dsh.guns.modular.system.service.ICityService; +import com.dsh.guns.modular.system.service.ICoursePackageService; +import com.dsh.guns.modular.system.service.IStoreService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 车辆管理控制器 + * + * @author fengshuonan + * @Date 2020-06-05 17:25:12 + */ +@Controller +@RequestMapping("/tDiscount") +public class TDiscountController extends BaseController { + + private String PREFIX = "/system/tDiscount/"; + private String PREFIX1 = "/system/tDiscountAudit/"; + + @Autowired + private CompetitionClient competitionClient; + + @Autowired + private IStoreService storeService; + + @Autowired + private ICityService cityService; + + @Autowired + private CourseClient courseClient; + + + + + /** + * 跳转到车辆管理首页 + */ + @RequestMapping("") + public String index(Model model) { + List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + model.addAttribute("list",list); + return PREFIX + "TDiscount.html"; + } + @RequestMapping("/audit") + public String indexAudit(Model model) { + List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + model.addAttribute("list",list); + return PREFIX1 + "TDiscount.html"; + } + + /** + * 跳转到添加车辆管理 + */ + @RequestMapping("/tCompetition_add") + public String tCompetitionAdd(Model model) { + List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + model.addAttribute("list",list); + return PREFIX + "TCompetition_add.html"; + } + + + /** + * 跳转到修改车辆管理 + */ + @RequestMapping("/tCompetition_update/{id}") + public String tCarUpdate(@PathVariable Integer id, Model model) { + Competition competition = competitionClient.queryById(id); + model.addAttribute("item",competition); + List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, competition.getProvinceCode())); + List<TCity> list1 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId,one.getId())); + + List<TStore> list2 = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getCityCode,competition.getCityCode())); + model.addAttribute("list",list); + model.addAttribute("list1",list1); + model.addAttribute("list2",list2); + model.addAttribute("type",1); + return PREFIX + "TCompetition_edit.html"; + } + @RequestMapping("/tCompetition_info/{id}") + public String tCarInfo(@PathVariable Integer id, Model model) { + Competition competition = competitionClient.queryById(id); + model.addAttribute("item",competition); + List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, competition.getProvinceCode())); + List<TCity> list1 = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId,one.getId())); + + List<TStore> list2 = storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getCityCode,competition.getCityCode())); + model.addAttribute("list",list); + model.addAttribute("list1",list1); + model.addAttribute("list2",list2); + model.addAttribute("type",2); + + return PREFIX + "TCompetition_edit.html"; + } + @RequestMapping("/tCompetition_user/{id}") + public String tCarUser(@PathVariable Integer id, Model model) { + model.addAttribute("id",id); + return PREFIX + "TCompetitionUser.html"; + } + + @Autowired + private ICoursePackageService coursePackageService; + + @Resource + private CoursePackagePaymentConfigClient coursePackagePaymentConfigClient; + + @Resource + private CoursePackageDiscountClient coursePackageDiscountClient; + @RequestMapping("/info") + public String info( Integer id, Model model) { + TCoursePackage tCoursePackage1 = courseClient.queryByDiscountId(id); + TCoursePackage tCoursePackage = coursePackageService.queryById(tCoursePackage1.getId()); + model.addAttribute("item", tCoursePackage); + List<CoursePackagePaymentConfig> list4 = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id); + List<Map<String, Object>> list = new ArrayList<>(); + for (CoursePackagePaymentConfig coursePackagePaymentConfig : list4) { + if(coursePackagePaymentConfig.getCashPayment() == 0){ + continue; + } + Map<String, Object> map = new HashMap<>(); + map.put("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId()); + map.put("classHours", coursePackagePaymentConfig.getClassHours()); + String payment = ""; + if(coursePackagePaymentConfig.getCashPayment() > 0){ + payment += "现金支付"; + } + if(coursePackagePaymentConfig.getPlayPaiCoin() > 0){ + payment += (ToolUtil.isNotEmpty(payment) ? "、" : "") + "玩湃币支付"; + } + map.put("payment", payment); + map.put("cashPayment", coursePackagePaymentConfig.getCashPayment()); + List<TCoursePackageDiscount> tCoursePackageDiscounts = coursePackageDiscountClient.queryCoursePackageDiscount(coursePackagePaymentConfig.getId()); + map.put("coursePackageDiscount", tCoursePackageDiscounts); + list.add(map); + } + model.addAttribute("coursePackagePaymentConfig", JSON.toJSONString(list)); + return PREFIX + "coursePackageDiscount.html"; + } + @RequestMapping("/infoOne") + public String infoOne( Integer id, Model model) { + Integer state = courseClient.queryDiscountById(id); + if(state==1){ + model.addAttribute("stateStr","待审核"); + model.addAttribute("state",1); + }else { + model.addAttribute("stateStr","未通过"); + model.addAttribute("state",3); + } + + TCoursePackage tCoursePackage1 = courseClient.queryByDiscountId(id); + TCoursePackage tCoursePackage = coursePackageService.queryById(tCoursePackage1.getId()); + model.addAttribute("item", tCoursePackage); + List<CoursePackagePaymentConfig> list4 = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id); + List<Map<String, Object>> list = new ArrayList<>(); + for (CoursePackagePaymentConfig coursePackagePaymentConfig : list4) { + if(coursePackagePaymentConfig.getCashPayment() == 0){ + continue; + } + Map<String, Object> map = new HashMap<>(); + map.put("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId()); + map.put("classHours", coursePackagePaymentConfig.getClassHours()); + String payment = ""; + if(coursePackagePaymentConfig.getCashPayment() > 0){ + payment += "现金支付"; + } + if(coursePackagePaymentConfig.getPlayPaiCoin() > 0){ + payment += (ToolUtil.isNotEmpty(payment) ? "、" : "") + "玩湃币支付"; + } + map.put("payment", payment); + map.put("cashPayment", coursePackagePaymentConfig.getCashPayment()); + List<TCoursePackageDiscount> tCoursePackageDiscounts = coursePackageDiscountClient.queryCoursePackageDiscountOne(coursePackagePaymentConfig.getId()); + map.put("coursePackageDiscount", tCoursePackageDiscounts); + list.add(map); + } + model.addAttribute("coursePackagePaymentConfig", JSON.toJSONString(list)); + return PREFIX1 + "coursePackageDiscount.html"; + } + + + @RequestMapping(value = "/list") + @ResponseBody + public Object list(String provinceCode, String cityCode, String shopName, String name, Integer type) { + LambdaQueryWrapper<TStore> wrapper = new LambdaQueryWrapper<>(); + if(ToolUtil.isNotEmpty(shopName)){ + wrapper.like(TStore::getName, shopName); + } + List<TStore> list = storeService.list(wrapper); + Page<DiscountList> page = new PageFactory<DiscountList>().defaultPage(); + List<DiscountList> discountLists = courseClient.queryDiscountList(new QueryDiscountList(page.getCurrent(),page.getSize(),provinceCode,cityCode,name,type,list.stream().map(TStore::getId).collect(Collectors.toList()))); + for (DiscountList discountList : discountLists) { + for (TStore tStore : list) { + if(discountList.getStoreId().equals(tStore.getId())){ + discountList.setShopName(tStore.getName()); + } + } + } + page.setRecords(discountLists); + return super.packForBT(page); + } + @RequestMapping(value = "/listAudit") + @ResponseBody + public Object listAudit(String provinceCode, String cityCode, String shopName, String name, Integer type) { + LambdaQueryWrapper<TStore> wrapper = new LambdaQueryWrapper<>(); + if(ToolUtil.isNotEmpty(shopName)){ + wrapper.like(TStore::getName, shopName); + } + List<TStore> list = storeService.list(wrapper); + Page<DiscountList> page = new PageFactory<DiscountList>().defaultPage(); + List<DiscountList> discountLists = courseClient.queryDiscountListAudit(new QueryDiscountList(page.getCurrent(),page.getSize(),provinceCode,cityCode,name,type,list.stream().map(TStore::getId).collect(Collectors.toList()))); + for (DiscountList discountList : discountLists) { + for (TStore tStore : list) { + if(discountList.getStoreId().equals(tStore.getId())){ + discountList.setShopName(tStore.getName()); + } + } + } + page.setRecords(discountLists); + return super.packForBT(page); + } + + + @RequestMapping(value = "/updateState") + @ResponseBody + public Object updateState( Integer id,Integer status) { + try { + Boolean b = courseClient.updateState(new DiscountUpdateState(id,status)); + if(b){ + return new SuccessTip<>(); + } + return new ErrorTip(500,""); + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } + @RequestMapping(value = "/auditDiscount") + @ResponseBody + public Object auditDiscount(Integer id,Integer audit,String text) { + try { + Boolean b = courseClient.auditDiscount(new AuditDiscount(id,audit,text)); + if(b){ + return new SuccessTip<>(); + } + return new ErrorTip(500,""); + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } + + + @RequestMapping(value = "/add") + @ResponseBody + public Object list(Competition competition) { + try { + if(ToolUtil.isNotEmpty(competition.getProvinceCode())) { + TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, competition.getProvinceCode())); + competition.setProvince(one.getName()); + TCity one1 = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, competition.getCityCode())); + competition.setCity(one1.getName()); + } + competition.setAuditStatus(1); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + competition.setStartTime(format.parse(competition.getSTime())); + competition.setEndTime(format.parse(competition.getETime())); + competition.setRegisterEndTime(format.parse(competition.getREndTime())); + competitionClient.add(competition); + return new SuccessTip<>(); + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } + + @RequestMapping(value = "/update") + @ResponseBody + public Object update(Competition competition) { + try { + Competition competition1 = competitionClient.queryById(competition.getId()); + if(ToolUtil.isNotEmpty(competition.getProvinceCode())) { + TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, competition.getProvinceCode())); + competition.setProvince(one.getName()); + TCity one1 = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, competition.getCityCode())); + competition.setCity(one1.getName()); + } + if(ToolUtil.isEmpty(competition.getCoverDrawing())){ + competition.setCoverDrawing(competition1.getCoverDrawing()); + } + if(ToolUtil.isEmpty(competition.getRegistrationNotes())){ + competition.setRegistrationNotes(competition1.getRegistrationNotes()); + } + competitionClient.update(competition); + return new SuccessTip<>(); + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } + + + @RequestMapping(value = "/cancel") + public Object cancel(Integer id) { + try { + competitionClient.cancel(id); + return SUCCESS_TIP; + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } + + @RequestMapping(value = "/getPeopleFromId") + public Object getPeopleFromId(Integer id,Integer state) { + try { + Page<Object> page = new PageFactory<>().defaultPage(); + Page<CompetitionUser> data = competitionClient.getPeopleFromId(new GetPeopleQuery(page.getSize(),page.getCurrent(),id,state)); + return super.packForBT(data); + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } + + @RequestMapping(value = "/onChange") + @ResponseBody + public Object onChange(Integer oneId) { + try { + TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, oneId)); + return cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId,one.getId())); + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } + @RequestMapping(value = "/oneChangeNext") + @ResponseBody + public Object oneChangeNext(Integer oneId) { + try { + return storeService.list(new LambdaQueryWrapper<TStore>().eq(TStore::getCityCode, oneId)); + }catch (Exception e){ + e.printStackTrace(); + return ERROR; + } + } + + +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java index 58c86e5..4bde281 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/TGoodsController.java @@ -13,15 +13,14 @@ import com.dsh.course.feignClient.activity.CouponClient; import com.dsh.course.feignClient.activity.PointMercharsClient; import com.dsh.course.feignClient.activity.model.*; +import com.dsh.course.feignClient.course.CourseClient; import com.dsh.guns.config.UserExt; +import com.dsh.guns.core.base.controller.BaseController; import com.dsh.guns.core.base.tips.ErrorTip; import com.dsh.guns.core.base.tips.SuccessTip; import com.dsh.guns.core.common.constant.factory.PageFactory; import com.dsh.guns.core.util.ToolUtil; -import com.dsh.guns.modular.system.model.CouponDataVo; -import com.dsh.guns.modular.system.model.Region; -import com.dsh.guns.modular.system.model.TCity; -import com.dsh.guns.modular.system.model.TStore; +import com.dsh.guns.modular.system.model.*; import com.dsh.guns.modular.system.service.ICityService; import com.dsh.guns.modular.system.service.IRegionService; import com.dsh.guns.modular.system.service.IStoreService; @@ -34,11 +33,10 @@ import javax.annotation.Resource; import java.io.IOException; +import java.math.BigDecimal; +import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @@ -48,7 +46,7 @@ @Controller @RequestMapping("/tGoods") -public class TGoodsController { +public class TGoodsController extends BaseController { @@ -71,6 +69,9 @@ private AppUserClient appUserClient; @Autowired private ICityService cityService; + + @Autowired + private CourseClient courseClient; @Resource private PointMercharsClient pointMercharsClient; @@ -96,7 +97,74 @@ model.addAttribute("userType",objectType); List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); model.addAttribute("list",list); + List<Map<String,Object>> listOne = courseClient.getPageageType(); + model.addAttribute("courseType",listOne); + + return PREFIX + "TGoods_add.html"; + } + + /** + * 跳转到添加 + */ + @RequestMapping("/tGoods_info") + public String tGoodsInfo(Model model) { + Integer objectType = UserExt.getUser().getObjectType(); + System.out.println(objectType); + model.addAttribute("userType",objectType); + List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); + model.addAttribute("list",list); + return PREFIX + "TGoods_detail_one.html"; + } + + @RequestMapping("/goods_info/{id}") + public String memberCouponInfo(@PathVariable Integer id, Model model) { + PointsMerchandise pointMercharsVo = pointMercharsClient.queryPointMerchaseById(id); + model.addAttribute("item",pointMercharsVo); + if(pointMercharsVo.getType()==2){ + Date startTime = pointMercharsVo.getStartTime(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + model.addAttribute("sTime",format.format(startTime)); + model.addAttribute("eTime",format.format(pointMercharsVo.getEndTime())); + Integer shopId = pointMercharsClient.getshopName(id); + TStore byId = storeService.getById(shopId); + model.addAttribute("shopName",byId.getName()); + Integer coursePackageId = pointMercharsVo.getCoursePackageId(); + List<String> name = courseClient.queryPackageById(coursePackageId); + Integer coursePackageId1 = pointMercharsVo.getCoursePackageId(); + String classHours = courseClient.getHours(coursePackageId1); + model.addAttribute("typeName",name.get(0)); + model.addAttribute("pageName",name.get(1)); + model.addAttribute("classHours",classHours); + String productImages = pointMercharsVo.getProductImages(); + ArrayList<String> strings = new ArrayList<>(); + for (String s : productImages.split(",")) { + strings.add(s); + } + model.addAttribute("pictures",strings); + return PREFIX + "TGoods_detail_two.html"; + }else { + GoodsInfoOneVo infoOneVo = pointMercharsClient.queryDetailsOfGoods(id); + System.out.println("pointMercharsVo:"+infoOneVo); + model.addAttribute("item",infoOneVo); + String[] split = infoOneVo.getPics().split(","); + List<String> list = Arrays.asList(split); + if (infoOneVo.getUseScope() == 2){ + List<StoreVos> provinces = pointMercharsClient.getProvinces(id); + model.addAttribute("city",provinces); + } + if (infoOneVo.getUseScope() == 2){ + List<StoreVos> storeVos = pointMercharsClient.getStoreList(id); + model.addAttribute("store",storeVos); + } + model.addAttribute("pictures",list); + model.addAttribute("exchangeMethod",infoOneVo.getExchangeMethod()); + return PREFIX + "TGoods_detail_one.html"; + } + + + + } @@ -303,15 +371,130 @@ client.insertIntoData(dataVo); return new SuccessTip<>(); } + + /** + * 编辑 商品详情 + * @param pointMerchandiseId 商品Id + * @param quantityIssued 发放数量 + * @param pickUpQuantity 限领数量 + * @param redemptionInstructions 说明 + * @param cover 封面图 + * @param productImages 商品图片 + * @param sort 排序 + * @return + */ @PostMapping(value = "/update") @ResponseBody - public Object update( Integer id,Integer num,Integer num1,String text){ - Coupon coupon = client.queryCouponById(id); - coupon.setQuantityIssued(num); - coupon.setPickUpQuantity(num1); - coupon.setIllustrate(text); - client.updateCouponData(coupon); + public Object update( Integer pointMerchandiseId,Integer quantityIssued,Integer pickUpQuantity,String redemptionInstructions,String cover,String productImages,Integer sort){ + Map<String, Object> stringObjectHashMap = new HashMap<>(); + stringObjectHashMap.put("pointMerchandiseId",pointMerchandiseId); + stringObjectHashMap.put("quantityIssued",quantityIssued); + stringObjectHashMap.put("pickUpQuantity",pickUpQuantity); + stringObjectHashMap.put("redemptionInstructions",redemptionInstructions); + stringObjectHashMap.put("cover",cover); + stringObjectHashMap.put("productImages",productImages); + stringObjectHashMap.put("sort",sort); + System.out.println(stringObjectHashMap); + pointMercharsClient.updateGoodsDetail(stringObjectHashMap); return new SuccessTip<>(); + } + /* + ajax.set("typeAll",typeAll); + ajax.set("provinceCode",pCode); + ajax.set("cityCode",cCode); + ajax.set("storeId",storeId); + ajax.set("coursePackageTypeId",coursePackageTypeId); + ajax.set("coursePackageId",coursePackageId); + ajax.set("coursePackageConfigId",coursePackageConfigId); + ajax.set("price",price); + ajax.set("type",type); + ajax.set("integral",integral); + ajax.set("cash",cash); + ajax.set("cover",cover1); + ajax.set("imgOne",imgOne); + ajax.set("userPopulation",userPopulation); + ajax.set("quantityIssued",quantityIssued); + ajax.set("pickUpQuantity",pickUpQuantity); + ajax.set("startTime",startTime); + ajax.set("text",text); + ajax.set("sort",sort); + ajax.set("useScope",company); + ajax.set("cityIds",cts); + ajax.set("storeIds",stores); + */ + @PostMapping(value = "/add") + @ResponseBody + public Object add( Integer typeAll,String provinceCode,String cityCode,Integer storeId,Integer coursePackageTypeId,Integer coursePackageId,Integer coursePackageConfigId, + Double price,Integer type,Integer integral,Double cash,String cover,String imgOne,Integer userPopulation,Integer quantityIssued,Integer pickUpQuantity, + String startTime,String text,Integer sort,String name,Integer useScope,String cityIds,String storeIds + ) throws ParseException { + PointsMerchandise pointsMerchandise = new PointsMerchandise(); + pointsMerchandise.setType(typeAll); + pointsMerchandise.setName(name); + pointsMerchandise.setCoursePackageId(coursePackageId); + pointsMerchandise.setPrice(new BigDecimal(price)); + pointsMerchandise.setRedemptionMethod(type); + if(type==2 || type==3){ + pointsMerchandise.setCash(new BigDecimal(cash)); + } + if(type==1 || type==2){ + pointsMerchandise.setIntegral(integral); + } + pointsMerchandise.setCover(cover); + pointsMerchandise.setProductImages(imgOne); + pointsMerchandise.setUserPopulation(userPopulation); + pointsMerchandise.setQuantityIssued(quantityIssued); + pointsMerchandise.setPickUpQuantity(pickUpQuantity); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); + pointsMerchandise.setStartTime(format.parse(startTime.split(" - ")[0])); + pointsMerchandise.setEndTime(format.parse(startTime.split(" - ")[1])); + pointsMerchandise.setUseScope(useScope); + if(ToolUtil.isNotEmpty(provinceCode)){ + TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, provinceCode)); + pointsMerchandise.setProvinceCode(provinceCode); + pointsMerchandise.setProvince(one.getName()); + } + if(ToolUtil.isNotEmpty(cityCode)){ + TCity one = cityService.getOne(new LambdaQueryWrapper<TCity>().eq(TCity::getCode, cityCode)); + pointsMerchandise.setCityCode(cityCode); + pointsMerchandise.setCity(one.getName()); + } + pointsMerchandise.setRedemptionInstructions(text); + pointsMerchandise.setSort(sort); + pointsMerchandise.setState(1); + pointsMerchandise.setInsertTime(new Date()); + pointsMerchandise.setCoursePackageConfigId(coursePackageConfigId); + // 代替storeId + pointsMerchandise.setShelves(storeId); + Integer id = pointMercharsClient.add(pointsMerchandise); + if(typeAll!=2){ + if(useScope==2){ + ArrayList<Map<String,String>> objects = new ArrayList<>(); + for (String s : cityIds.split(",")) { + TCity tCity = cityService.getById(Integer.valueOf(s)); + HashMap<String, String> map = new HashMap<>(); + TCity pCity = cityService.getById(tCity.getParentId()); + map.put("pName",pCity.getName()); + map.put("pCode",pCity.getCode()); + map.put("cName",tCity.getName()); + map.put("cCode",tCity.getCode()); + map.put("id",id.toString()); + objects.add(map); + } + pointMercharsClient.addCitys(objects); + }else if(useScope==3){ + String pam = id+"_"+storeIds; + // 添加多个城市 门店 + try{ + pointMercharsClient.addOther(pam); + + }catch (Exception e){ + e.printStackTrace(); + } + } + } + return new SuccessTip<>(); + } @@ -338,7 +521,7 @@ /** - * 跳转到修改车辆管理 + * 跳转到修改商品详情 */ @RequestMapping("/tGoods_update/{id}") public String tCityUpdate(@PathVariable Integer id, Model model) { @@ -346,8 +529,11 @@ PointMercharsVo pointMercharsVo = pointMercharsClient.queryPointMerchaseDetailOfId(id); System.out.println("pointMercharsVo:"+pointMercharsVo); String[] split = pointMercharsVo.getPics().split(","); + List<String> list = Arrays.asList(split); + model.addAttribute("id",id); model.addAttribute("item",pointMercharsVo); - model.addAttribute("pictures",split); + model.addAttribute("pictures",list); + System.out.println(list); return PREFIX + "TGoods_edit.html"; } @@ -434,11 +620,23 @@ */ @RequestMapping("/write_off") @ResponseBody - public Object GoodsWriteOff(Integer id){ - System.out.println(id); - // TODO: 2023/8/15 核销操作 - return new SuccessTip<>(); + public Object GoodsWriteOff(String id){ + Integer objectType = UserExt.getUser().getObjectType(); + Map<String, Object> stringObjectHashMap = new HashMap<>(); + stringObjectHashMap.put("goodsId",id); + stringObjectHashMap.put("managerId",objectType); + boolean b = pointMercharsClient.writeOffGoodsStatus(stringObjectHashMap); + System.out.println(b); + if (b){ + return new SuccessTip<>(); + }else { + return ERROR; + } + } + + + } diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GoodsInfoOneVo.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GoodsInfoOneVo.java new file mode 100644 index 0000000..dfc1294 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/GoodsInfoOneVo.java @@ -0,0 +1,78 @@ +package com.dsh.guns.modular.system.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class GoodsInfoOneVo { + + + String name; + /** + * 封面图 + */ + String cover; + /** + * 原价 + */ + BigDecimal price; + /** + * 兑换方式(1=积分,2=现金+积分, 3=现金) + */ + Integer exchangeMethod; + /** + * 现金 + */ + BigDecimal cash; + /** + * 积分 + */ + Integer integral; + /** + * 图片 + */ + String pics; + /** + * 用户人群 + */ + String userPopulation; + /** + * 发放数量 + */ + Integer quantityIssued; + /** + * 已领数量 + */ + Integer hasPicked; + /** + * 限领数量 + */ + Integer pickUpQuantity; + /** + * 有效期 + */ + String validTime; + /** + * 兑换点 + */ + String exchangeArea; + /** + * 兑换地点 (1=全国,2=指定城市,3=指定门店) + */ + Integer useScope; + /** + * 商品说明 + */ + String redemptionInstructions; + /** + * 排序 + */ + Integer sort; + +} diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/StoreVos.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/StoreVos.java new file mode 100644 index 0000000..1ce4dc4 --- /dev/null +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/StoreVos.java @@ -0,0 +1,18 @@ +package com.dsh.guns.modular.system.model; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StoreVos { + + String num1; + + String num2; + + String num3; +} diff --git a/cloud-server-activity/src/main/resources/logback-spring.xml b/cloud-server-management/src/main/resources/logback-spring.xml similarity index 100% rename from cloud-server-activity/src/main/resources/logback-spring.xml rename to cloud-server-management/src/main/resources/logback-spring.xml diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html index 75f870d..9ea5bab 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tCoupon/TCouponAdd.html @@ -256,7 +256,8 @@ <i class="el-icon-plus"></i> </el-upload> <el-dialog :visible.sync="dialogVisible"> - <img width="100%" :src="imageUrl1" alt=""> + <img width="100%" :src="imageUrl1" alt=""></el-dialog> + </el-dialog> </div> </div> </div> diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TCity_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TCity_add.html new file mode 100644 index 0000000..0e0a53c --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TCity_add.html @@ -0,0 +1,83 @@ +@layout("/common/_container.html"){ +<div class="ibox float-e-margins"> + <div class="ibox-content"> + + + <div class="form-horizontal" id="carInfoForm"> + <div class="form-group" id="provinceCode"> + <label class="col-sm-3 control-label">所在省:</label> + <div class="col-sm-9"> + <select class="form-control" id="pCode" name="pCode" onchange="TCarInfoDlg.oneChange(this)"> + <option value="">选择省</option> + @for(obj in list){ + <option value="${obj.code}">${obj.name}</option> + @} + </select> + </div> + </div> + <div class="form-group" id="cityCode"> + <label class="col-sm-3 control-label">所在市:</label> + <div class="col-sm-9"> + <select class="form-control" id="cCode" name="cCode"> + <option value="">选择市</option> + </select> + </div> + </div> + <#input id="name" name="管理员姓名" type="text"/> + <#input id="phone" name="管理员手机号" type="text"/> + + + </div> +</div> + +<div class="row btn-group-m-t"> + <div class="col-sm-10 col-sm-offset-5"> + <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCarInfoDlg.addSubmit()"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCarInfoDlg.close()"/> + </div> +</div> + + </div> + + </div> +</div> +<script src="${ctxPath}/modular/system/tCity/tCity_info.js"></script> +<script> + laydate.render({ + elem: '#annualInspectionTime' + ,lang:"en" + }); + laydate.render({ + elem: '#commercialInsuranceTime' + ,lang:"en" + }); + laydate.render({ + elem: '#certifyDateA' + ,lang:"en" + }); + laydate.render({ + elem: '#transDateStart' + ,lang:"en" + }); + laydate.render({ + elem: '#transDateStop' + ,lang:"en" + }); + laydate.render({ + elem: '#certifyDateB' + ,lang:"en" + }); + laydate.render({ + elem: '#nextFixDate' + ,lang:"en" + }); + laydate.render({ + elem: '#GPSInstallDate' + ,lang:"en" + }); + laydate.render({ + elem: '#registerDate' + ,lang:"en" + }); +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TCity_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TCity_edit.html new file mode 100644 index 0000000..8bb70f5 --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TCity_edit.html @@ -0,0 +1,98 @@ +@layout("/common/_container.html"){ +<div class="ibox float-e-margins"> + <div class="ibox-content"> + + <div class="form-horizontal" id="carInfoForm"> + <input hidden id="id" value="${item.id}"> + <div class="form-group" id="provinceCode"> + <label class="col-sm-3 control-label">所在省:</label> + <div class="col-sm-9"> + <select class="form-control" id="pCode" name="pCode" onchange="TCarInfoDlg.oneChange(this)"> + <option value="">选择省</option> + @for(obj in list){ + <option value="${obj.code}" ${obj.code == item.provinceCode ? 'selected=selected' : ''}>${obj.name}</option> + <option value="${obj.code}">${obj.name}</option> + @} + </select> + </div> + </div> + <div class="form-group" id="cityCode"> + <label class="col-sm-3 control-label">所在市:</label> + <div class="col-sm-9"> + <select class="form-control" id="cCode" name="cCode"> + <option value="">选择市</option> + @for(obj in list1){ + <option value="${obj.code}" ${obj.code == item.cityCode ? 'selected=selected' : ''}>${obj.name}</option> + @} + </select> + </div> + </div> + <#input id="name" name="发放数量" type="text" value="${item.name}"/> + <#input id="phone" name="管理员手机号" type="text" value="${item.phone}"/> + + + </div> + <div class="row btn-group-m-t"> + <div class="col-sm-10 col-sm-offset-5"> + <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCarInfoDlg.editSubmit()"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCarInfoDlg.close()"/> + </div> + </div> + + </div> +</div> +<script src="${ctxPath}/modular/system/tCity/tCity_info.js"></script> +<script> + laydate.render({ + elem: '#annualInspectionTime' + ,lang:"en" + }); + laydate.render({ + elem: '#commercialInsuranceTime' + ,lang:"en" + }); + laydate.render({ + elem: '#certifyDateA' + ,lang:"en" + }); + laydate.render({ + elem: '#transDateStart' + ,lang:"en" + }); + laydate.render({ + elem: '#transDateStop' + ,lang:"en" + }); + laydate.render({ + + elem: '#certifyDateB' + ,lang:"en" + }); + laydate.render({ + elem: '#nextFixDate' + ,lang:"en" + }); + laydate.render({ + elem: '#GPSInstallDate' + ,lang:"en" + }); + laydate.render({ + elem: '#registerDate' + ,lang:"en" + }); +</script> +<script type="application/javascript"> + $(function() { + var companyType = $("input[name='companyType']:checked").val(); + if (1 == companyType){ + $(".companyDiv").hide(); + } else if (2 == companyType){ + $(".companyDiv").show(); + } + + TCarInfoDlg.zcServerClick(); + TCarInfoDlg.kcServerClick(); + + }); +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TDiscount.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TDiscount.html new file mode 100644 index 0000000..009a6c1 --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/TDiscount.html @@ -0,0 +1,80 @@ + @layout("/common/_container.html"){ +<div class="row"> + <div class="col-sm-12"> + <div class="ibox float-e-margins"> + + <div class="ibox-title"> + <h5>折扣管理</h5> + </div> + <div class="ibox-content"> + <div class="row row-lg"> + <div class="col-sm-12"> + <div class="row"> + <div class="col-sm-3"> + <div class="input-group"> + <div class="input-group-btn open"> + <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true"> + 所在省 + </button> + </div> + <select class="form-control" id="pCode" onchange="TCompetition.oneChange(this)"> + <option value="">全部</option> + @for(obj in list){ + <option value="${obj.code}">${obj.name}</option> + @} + </select> + </div> + </div> + + <div class="col-sm-3"> + <div class="input-group"> + <div class="input-group-btn open"> + <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true"> + 所在市 + </button> + </div> + <select class="form-control" id="cCode"> + </select> + </div> + </div> + <div class="col-sm-3"> + <#NameCon id="shopName" name="所属门店" /> + </div> + <div class="col-sm-3"> + <#NameCon id="name" name="课包名称" /> + </div> + <div class="col-sm-3"> + <#SelectCon id="type" name="折扣类型" > + <option value="">全部</option> + <option value="1">会员折扣</option> + <option value="3">限时折扣</option> + <option value="4">赠送课时</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/> + <#button name="重置" icon="fa-trash" clickFun="TCompetition.resetSearch()" space="true"/> + </div> + </div> + <div class="hidden-xs" id="TCompetitionTableToolbar" role="group"> + <#button name="上架" icon="fa-plus" clickFun="TCompetition.updateState(1)"/> + <#button name="下架" icon="fa-edit" clickFun="TCompetition.updateState(2)" space="true"/> + <#button name="查看详情" icon="fa-remove" clickFun="TCompetition.info()" space="true"/> + + </div> + <#table id="TCompetitionTable"/> + </div> + </div> + </div> +</div> +</div> +</div> +<script src="${ctxPath}/modular/system/tDiscount/tDiscount.js"></script> +<script> + laydate.render({ + elem: '#createTime' + ,range: true + ,lang:"en" + }); +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/coursePackageDiscount.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/coursePackageDiscount.html new file mode 100644 index 0000000..8b7c500 --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscount/coursePackageDiscount.html @@ -0,0 +1,88 @@ +@layout("/common/_container.html"){ +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal"> + <div class="row"> + <input type="hidden" id="id" value="${item.id}"> + <input type="hidden" id="coursePackagePaymentConfig" value='${coursePackagePaymentConfig}'> + <div class="form-group"> + <div class="col-sm-2"></div> + <div class="col-sm-10"> + <label class="col-sm-2 control-label">课包名称:</label> + <div class="col-sm-4" style="margin-top: 6px;"> + <span>${item.name}</span> + </div> + </div> + </div> + <div class="form-group"> + <div class="col-sm-2"></div> + <div class="col-sm-10"> + <div class="col-sm-2"> + </div> + <div class="col-sm-6" id="classHours" style="margin-top: 6px;"> + </div> + </div> + </div> + <div class="form-group"> + <div class="col-sm-2"></div> + <div class="col-sm-10"> + <label class="col-sm-2 control-label">支付方式:</label> + <div class="col-sm-4" style="margin-top: 6px;"> + <span id="payment"></span> + </div> + </div> + </div> + <div class="form-group"> + <div class="col-sm-2"></div> + <div class="col-sm-10"> + <label class="col-sm-2 control-label">现金支付:</label> + <div class="col-sm-4" style="margin-top: 6px;"> + <span id="cashPayment"></span> + </div> + </div> + </div> + <div class="form-group"> + <div class="col-sm-2"></div> + <div class="col-sm-10"> + <label class="col-sm-2 control-label">*折扣类型:</label> + <div class="col-sm-6" id="types" style="margin-top: 6px;"> + <input type="checkbox" name="type" value="1"> 会员折扣 + <input type="checkbox" name="type" value="2"> 续课优惠 + <input type="checkbox" name="type" value="3"> 限时折扣 + <input type="checkbox" name="type" value="4"> 赠送课时 + </div> + </div> + </div> + <div id="memberDiscount"> + + </div> + <div id="renewalOffer"> + + </div> + <div id="limitedTimeDiscount"> + + </div> + <div id="complimentaryClass"> + + </div> + </div> + <div class="row btn-group-m-t"> + <div class="col-sm-10"> + <#button btnCss="danger" name="关闭" id="cancel" icon="fa-eraser" clickFun="TCarInfoDlg.close()"/> + </div> + </div> + </div> + </div> +</div> +<script src="${ctxPath}/modular/system/coursePackage/coursePackageDiscount.js"></script> +<script src="${ctxPath}/modular/system/tDiscount/tDiscount_info.js"></script> + + +<script type="text/javascript"> + laydate.render({ + elem: '#classStartTime' + ,type: 'time' + ,range: true + }); +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TCity_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TCity_add.html new file mode 100644 index 0000000..0e0a53c --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TCity_add.html @@ -0,0 +1,83 @@ +@layout("/common/_container.html"){ +<div class="ibox float-e-margins"> + <div class="ibox-content"> + + + <div class="form-horizontal" id="carInfoForm"> + <div class="form-group" id="provinceCode"> + <label class="col-sm-3 control-label">所在省:</label> + <div class="col-sm-9"> + <select class="form-control" id="pCode" name="pCode" onchange="TCarInfoDlg.oneChange(this)"> + <option value="">选择省</option> + @for(obj in list){ + <option value="${obj.code}">${obj.name}</option> + @} + </select> + </div> + </div> + <div class="form-group" id="cityCode"> + <label class="col-sm-3 control-label">所在市:</label> + <div class="col-sm-9"> + <select class="form-control" id="cCode" name="cCode"> + <option value="">选择市</option> + </select> + </div> + </div> + <#input id="name" name="管理员姓名" type="text"/> + <#input id="phone" name="管理员手机号" type="text"/> + + + </div> +</div> + +<div class="row btn-group-m-t"> + <div class="col-sm-10 col-sm-offset-5"> + <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCarInfoDlg.addSubmit()"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCarInfoDlg.close()"/> + </div> +</div> + + </div> + + </div> +</div> +<script src="${ctxPath}/modular/system/tCity/tCity_info.js"></script> +<script> + laydate.render({ + elem: '#annualInspectionTime' + ,lang:"en" + }); + laydate.render({ + elem: '#commercialInsuranceTime' + ,lang:"en" + }); + laydate.render({ + elem: '#certifyDateA' + ,lang:"en" + }); + laydate.render({ + elem: '#transDateStart' + ,lang:"en" + }); + laydate.render({ + elem: '#transDateStop' + ,lang:"en" + }); + laydate.render({ + elem: '#certifyDateB' + ,lang:"en" + }); + laydate.render({ + elem: '#nextFixDate' + ,lang:"en" + }); + laydate.render({ + elem: '#GPSInstallDate' + ,lang:"en" + }); + laydate.render({ + elem: '#registerDate' + ,lang:"en" + }); +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TCity_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TCity_edit.html new file mode 100644 index 0000000..8bb70f5 --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TCity_edit.html @@ -0,0 +1,98 @@ +@layout("/common/_container.html"){ +<div class="ibox float-e-margins"> + <div class="ibox-content"> + + <div class="form-horizontal" id="carInfoForm"> + <input hidden id="id" value="${item.id}"> + <div class="form-group" id="provinceCode"> + <label class="col-sm-3 control-label">所在省:</label> + <div class="col-sm-9"> + <select class="form-control" id="pCode" name="pCode" onchange="TCarInfoDlg.oneChange(this)"> + <option value="">选择省</option> + @for(obj in list){ + <option value="${obj.code}" ${obj.code == item.provinceCode ? 'selected=selected' : ''}>${obj.name}</option> + <option value="${obj.code}">${obj.name}</option> + @} + </select> + </div> + </div> + <div class="form-group" id="cityCode"> + <label class="col-sm-3 control-label">所在市:</label> + <div class="col-sm-9"> + <select class="form-control" id="cCode" name="cCode"> + <option value="">选择市</option> + @for(obj in list1){ + <option value="${obj.code}" ${obj.code == item.cityCode ? 'selected=selected' : ''}>${obj.name}</option> + @} + </select> + </div> + </div> + <#input id="name" name="发放数量" type="text" value="${item.name}"/> + <#input id="phone" name="管理员手机号" type="text" value="${item.phone}"/> + + + </div> + <div class="row btn-group-m-t"> + <div class="col-sm-10 col-sm-offset-5"> + <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCarInfoDlg.editSubmit()"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCarInfoDlg.close()"/> + </div> + </div> + + </div> +</div> +<script src="${ctxPath}/modular/system/tCity/tCity_info.js"></script> +<script> + laydate.render({ + elem: '#annualInspectionTime' + ,lang:"en" + }); + laydate.render({ + elem: '#commercialInsuranceTime' + ,lang:"en" + }); + laydate.render({ + elem: '#certifyDateA' + ,lang:"en" + }); + laydate.render({ + elem: '#transDateStart' + ,lang:"en" + }); + laydate.render({ + elem: '#transDateStop' + ,lang:"en" + }); + laydate.render({ + + elem: '#certifyDateB' + ,lang:"en" + }); + laydate.render({ + elem: '#nextFixDate' + ,lang:"en" + }); + laydate.render({ + elem: '#GPSInstallDate' + ,lang:"en" + }); + laydate.render({ + elem: '#registerDate' + ,lang:"en" + }); +</script> +<script type="application/javascript"> + $(function() { + var companyType = $("input[name='companyType']:checked").val(); + if (1 == companyType){ + $(".companyDiv").hide(); + } else if (2 == companyType){ + $(".companyDiv").show(); + } + + TCarInfoDlg.zcServerClick(); + TCarInfoDlg.kcServerClick(); + + }); +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TDiscount.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TDiscount.html new file mode 100644 index 0000000..0865808 --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/TDiscount.html @@ -0,0 +1,79 @@ + @layout("/common/_container.html"){ +<div class="row"> + <div class="col-sm-12"> + <div class="ibox float-e-margins"> + + <div class="ibox-title"> + <h5>折扣管理</h5> + </div> + <div class="ibox-content"> + <div class="row row-lg"> + <div class="col-sm-12"> + <div class="row"> + <div class="col-sm-3"> + <div class="input-group"> + <div class="input-group-btn open"> + <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true"> + 所在省 + </button> + </div> + <select class="form-control" id="pCode" onchange="TCompetition.oneChange(this)"> + <option value="">全部</option> + @for(obj in list){ + <option value="${obj.code}">${obj.name}</option> + @} + </select> + </div> + </div> + + <div class="col-sm-3"> + <div class="input-group"> + <div class="input-group-btn open"> + <button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button" aria-expanded="true"> + 所在市 + </button> + </div> + <select class="form-control" id="cCode"> + </select> + </div> + </div> + <div class="col-sm-3"> + <#NameCon id="shopName" name="所属门店" /> + </div> + <div class="col-sm-3"> + <#NameCon id="name" name="课包名称" /> + </div> + <div class="col-sm-3"> + <#SelectCon id="type" name="折扣类型" > + <option value="">全部</option> + <option value="1">会员折扣</option> + <option value="3">限时折扣</option> + <option value="4">赠送课时</option> + </#SelectCon> + </div> + <div class="col-sm-3"> + <#button name="搜索" icon="fa-search" clickFun="TCompetition.search()"/> + <#button name="重置" icon="fa-trash" clickFun="TCompetition.resetSearch()" space="true"/> + </div> + </div> + <div class="hidden-xs" id="TCompetitionTableToolbar" role="group"> + <#button name="审核" icon="fa-plus" clickFun="TCompetition.audit()"/> + <#button name="查看详情" icon="fa-remove" clickFun="TCompetition.info()" space="true"/> + + </div> + <#table id="TCompetitionTable"/> + </div> + </div> + </div> +</div> +</div> +</div> +<script src="${ctxPath}/modular/system/tDiscountAudit/tDiscount.js"></script> +<script> + laydate.render({ + elem: '#createTime' + ,range: true + ,lang:"en" + }); +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/coursePackageDiscount.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/coursePackageDiscount.html new file mode 100644 index 0000000..eafdd81 --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tDiscountAudit/coursePackageDiscount.html @@ -0,0 +1,105 @@ +@layout("/common/_container.html"){ +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal"> + <div class="row"> + <input type="hidden" id="id" value="${item.id}"> + <input type="hidden" id="coursePackagePaymentConfig" value='${coursePackagePaymentConfig}'> + <div class="form-group"> + <div class="col-sm-2"></div> + <div class="col-sm-10"> + <label class="col-sm-2 control-label">当前状态:</label> + @if(state==1){ + <div class="col-sm-4" style="margin-top: 6px;color: goldenrod"> + <span>${stateStr}</span> + </div> + @} + @if(state==3){ + <div class="col-sm-4" style="margin-top: 6px;color: red"> + <span>${stateStr}</span> + </div> + @} + + </div> + </div> + <div class="form-group"> + <div class="col-sm-2"></div> + <div class="col-sm-10"> + <label class="col-sm-2 control-label">课包名称:</label> + <div class="col-sm-4" style="margin-top: 6px;"> + <span>${item.name}</span> + </div> + </div> + </div> + <div class="form-group"> + <div class="col-sm-2"></div> + <div class="col-sm-10"> + <div class="col-sm-2"> + </div> + <div class="col-sm-6" id="classHours" style="margin-top: 6px;"> + </div> + </div> + </div> + <div class="form-group"> + <div class="col-sm-2"></div> + <div class="col-sm-10"> + <label class="col-sm-2 control-label">支付方式:</label> + <div class="col-sm-4" style="margin-top: 6px;"> + <span id="payment"></span> + </div> + </div> + </div> + <div class="form-group"> + <div class="col-sm-2"></div> + <div class="col-sm-10"> + <label class="col-sm-2 control-label">现金支付:</label> + <div class="col-sm-4" style="margin-top: 6px;"> + <span id="cashPayment"></span> + </div> + </div> + </div> + <div class="form-group"> + <div class="col-sm-2"></div> + <div class="col-sm-10"> + <label class="col-sm-2 control-label">*折扣类型:</label> + <div class="col-sm-6" id="types" style="margin-top: 6px;"> + <input type="checkbox" name="type" value="1"> 会员折扣 + <input type="checkbox" name="type" value="2"> 续课优惠 + <input type="checkbox" name="type" value="3"> 限时折扣 + <input type="checkbox" name="type" value="4"> 赠送课时 + </div> + </div> + </div> + <div id="memberDiscount"> + + </div> + <div id="renewalOffer"> + + </div> + <div id="limitedTimeDiscount"> + + </div> + <div id="complimentaryClass"> + + </div> + </div> + <div class="row btn-group-m-t"> + <div class="col-sm-10"> + <#button btnCss="danger" name="关闭" id="cancel" icon="fa-eraser" clickFun="TCarInfoDlg.close()"/> + </div> + </div> + </div> + </div> +</div> +<script src="${ctxPath}/modular/system/tDiscountAudit/coursePackageDiscount.js"></script> +<script src="${ctxPath}/modular/system/tDiscount/tDiscount_info.js"></script> + + +<script type="text/javascript"> + laydate.render({ + elem: '#classStartTime' + ,type: 'time' + ,range: true + }); +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_add.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_add.html index 2a03a9d..6c080fa 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_add.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_add.html @@ -53,9 +53,9 @@ <div class="form-group"> <label class="col-sm-3 control-label">兑换方式:</label> <div class="col-sm-9"> - <input type="radio" name="redemptionMethod" value="1" checked> 积分 - <input type="radio" name="redemptionMethod" value="2" > 现金+积分 - <input type="radio" name="redemptionMethod" value="3" > 现金 + <input type="radio" name="redemptionMethod" value="1" onclick="updateMethod(3)" checked> 积分 + <input type="radio" name="redemptionMethod" value="2" onclick="updateMethod(4)"> 现金+积分 + <input type="radio" name="redemptionMethod" value="3" onclick="updateMethod(5)"> 现金 </div> </div> @@ -76,26 +76,29 @@ </div> <#avatar id="cover" name="商品封面" /> - <div class="row" id="app" style="margin-left: 225px;" > - <div class="col-sm-6"> - <div class="form-group"> - <label class="col-sm-3 control-label">商品图片: </label> - <div class="col-sm-2" style="margin-top: 2%"> - <el-upload - class="avatar-uploader" - action="/tCouponManage/uploadPic" - :on-success="handleAvatarSuccess" - accept=".jpg,.jpeg,.png,.JPG,.JPEG" - :on-remove="handleRemove" - :before-upload="beforeAvatarUpload"> - <img v-if="imageUrl" :src="imageUrl" class="avatar"> - <i v-else class="el-icon-plus avatar-uploader-icon"></i> - </el-upload> - </div> - </div> + <div class="row" id="app" > + <div class="col-sm-6" style="width: 100%"> + <div class="form-group"> + <label class="col-sm-3 control-label" style="width: 15%;margin-left: 7%">*商品图片(请上传不超过五张图片): </label> + <div class="col-sm-2" style="width: 100%;margin-left: 12%;margin-top: 1%"> + <el-upload + :limit="5" + class="avatar-uploader" + action="/tCouponManage/uploadPic" + list-type="picture-card" + accept=".jpg,.jpeg,.png,.JPG,.JPEG" + :on-success="handleAvatarSuccess" + :on-remove="handleRemove"> + <i class="el-icon-plus"></i> + </el-upload> + <el-dialog :visible.sync="dialogVisible"> + <img width="100%" :src="imageUrl1" alt=""></el-dialog> + </div> + </div> + + </div> </div> - </div> <div class="form-group"> @@ -129,17 +132,17 @@ <label class="col-sm-3">*适用范围: </label> <div class="col-sm-2" id="belongsNationwide" > <input class="col-sm-1" onclick="scopeOfApplication1()" name="company" type="radio" - value="0" checked style="margin-top: 10px"/> + value="1" checked style="margin-top: 10px"/> <label class="col-sm-1" style="width: 38%;margin-top: 7px">全国通用</label> </div> <div class="col-sm-2" id="belongsCity" > <input class="col-sm-1" name="company" onclick="scopeOfApplication2()" type="radio" - value="1" style="margin-top: 10px"/> + value="2" style="margin-top: 10px"/> <label class="col-sm-1" style="width: 38%;margin-top: 7px">指定城市</label> </div> <div class="col-sm-2" id="belongsStore" > <input class="col-sm-1" name="company" onclick="scopeOfApplication3()" type="radio" - value="1" style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px"/> + value="3" style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px"/> <label class="col-sm-1" style="width: 38%;margin-top: 6px;">指定门店</label> </div> </div> @@ -228,9 +231,141 @@ <div class="form-group" id="cityCode"> <label class="col-sm-3 control-label">所在市:</label> <div class="col-sm-9"> - <select class="form-control" id="cCode" name="cCode"> + <select class="form-control" id="cCode" name="cCode" onchange="TCarInfoDlg.storeChange(this)"> <option value="">选择市</option> </select> + </div> + </div> + + <div class="form-group" > + <label class="col-sm-3 control-label">所属门店:</label> + <div class="col-sm-9"> + <select class="form-control" id="storeId" name="storeId"> + <option value="">选择门店</option> + </select> + </div> + </div> + + <div class="form-group" > + <label class="col-sm-3 control-label">课包类型:</label> + <div class="col-sm-9"> + <select class="form-control" id="coursePackageTypeId" name="pCode" onchange="TCarInfoDlg.packageChange(this)"> + <option value="">选择课包类型</option> + @for(obj in courseType){ + <option value="${obj.id}">${obj.name}</option> + @} + </select> + </div> + </div> + <div class="form-group" > + <label class="col-sm-3 control-label">课包名称:</label> + <div class="col-sm-9"> + <select class="form-control" id="coursePackageId" name="coursePackageId" onchange="TCarInfoDlg.timeChange(this)"> + <option value="">选择课包</option> + </select> + </div> + </div> + + <div class="form-group" > + <label class="col-sm-3 control-label">课时数:</label> + <div class="col-sm-9"> + <select class="form-control" id="coursePackageConfigId" name="coursePackageConfigId"> + <option value="">选择课时数</option> + </select> + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">原价:</label> + <div class="col-sm-9"> + <input class="form-control" id="price1" name="price" type="text"> + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">兑换方式:</label> + <div class="col-sm-9"> + <input type="radio" name="redemptionMethod" value="1" checked onclick="updateMethod(1)"> 积分 + <input type="radio" name="redemptionMethod" value="2" onclick="updateMethod(2)"> 现金+积分 + </div> + </div> + + <div class="form-group" id="y3" hidden> + <label class="col-sm-3 control-label">所需现金:</label> + <div class="col-sm-9"> + <input class="form-control" id="cash1" name="cash" type="text"> + + </div> + </div> + <div class="form-group" id="y4"> + <label class="col-sm-3 control-label">所需积分:</label> + <div class="col-sm-9"> + <input class="form-control" id="integral1" name="integral" type="text"> + + </div> + </div> + + + <#avatar id="cover1" name="*商品封面" /> + <div class="row" id="app1" > + <div class="col-sm-6" style="width: 100%"> + <div class="form-group"> + <label class="col-sm-3 control-label" style="width: 15%;margin-left: 7%">*商品图片(请上传不超过五张图片): </label> + <div class="col-sm-2" style="width: 100%;margin-left: 12%;margin-top: 1%"> + <el-upload + :limit="5" + class="avatar-uploader" + action="/tCouponManage/uploadPic" + list-type="picture-card" + accept=".jpg,.jpeg,.png,.JPG,.JPEG" + :on-success="handleAvatarSuccess" + :on-remove="handleRemove"> + <i class="el-icon-plus"></i> + </el-upload> + <el-dialog :visible.sync="dialogVisible"> + <img width="100%" :src="imageUrl1" alt=""></el-dialog> + </div> + </div> + + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">用户人群:</label> + <div class="col-sm-9"> + <input type="radio" name="userPopulation" value="1" checked> 全部用户 + <input type="radio" name="userPopulation" value="2" > 年度会员 + <input type="radio" name="userPopulation" value="3" > 已有学员用户 + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">发放数量:</label> + <div class="col-sm-9"> + <input class="form-control" id="quantityIssued1" name="quantityIssued" type="text"> + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">限领数量:</label> + <div class="col-sm-9"> + <input class="form-control" id="pickUpQuantity1" name="pickUpQuantity" type="text"> + </div> + </div> + <#input id="startTime1" name="有效期" type="text"/> + + <div class="form-group" style="margin-left:262px"> + <label class="col-sm-1 control-label">兑换说明:</label> + <div class="col-sm-5"> + <textarea type="text/plain" id="editor1" style="height: 300px;width: 800px;"></textarea> + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">排序:</label> + <div class="col-sm-9"> + <input class="form-control" id="sort1" name="sort" type="text"> + </div> </div> @@ -249,21 +384,55 @@ </div> - </div> -</div> <script src="${ctxPath}/js/vue/vue.js"></script> <script src="${ctxPath}/js/elementui/index.js"></script> <link rel="stylesheet" href="${ctxPath}/js/elementui/index.css"> <script src="${ctxPath}/modular/system/tGoods/tGoods_info.js"></script> <script src="${ctxPath}/modular/system/tGoods/TStoreInfo.js"></script> <script> + laydate.render({ + elem: '#startTime', + range: true + }); + laydate.render({ + elem: '#startTime1', + range: true + }); + function updateMethod(e) { + console.log(e) + if(e==1){ + $("#y3").hide() + $("#y4").show() + }else if(e==2){ + $("#y4").show() + $("#y3").show() + }else if(e==3){ + $("#y1").hide() + $("#y2").show() + }else if(e==4){ + $("#y1").show() + $("#y2").show() + }else if(e==5) { + $("#y2").hide() + $("#y1").show() + } + } + let i =1; function updateType(e) { + if(e==2){ $("#b1").hide() $("#b2").show() + if(i==1){ + var drivingLicensePhoto = new $WebUpload("cover1"); + drivingLicensePhoto.setUploadBarId("progressBar"); + drivingLicensePhoto.init(); + i++; + } + }else { - $("#b2 ").hide() + $("#b2").hide() $("#b1").show() } } @@ -359,5 +528,32 @@ created() { }, }); + var vue2 = new Vue({ + el: '#app1', + data: { + autoUpload: true,//自动上传 + imageUrl1: '',//模型数据,用于上传图片完成后图片预览 + dialogVisible: false + }, + methods: { + handleAvatarSuccess(res, file) { + TCarInfoDlg.goodsPicArray1.push(file); + }, + beforeAvatarUpload(file) { + const isLt2M = file.size / 1024 / 1024 < 10; + if (!isLt2M) { + this.$message.error('上传图片大小不能超过 10MB!'); + } + return isLt2M; + }, + handleRemove(file, fileList) { + couponInfoDlg.goodsPicArray = couponInfoDlg.goodsPicArray.filter(item => { + return item.uid != file.uid; + }); + }, + }, + created() { + }, + }); </script> @} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_detail_one.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_detail_one.html new file mode 100644 index 0000000..e0e7f55 --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_detail_one.html @@ -0,0 +1,207 @@ +@layout("/common/_container.html"){ +<style> + .avatar-uploader .el-upload { + border: 1px dashed #d9d9d9; + border-radius: 6px; + cursor: pointer; + position: relative; + height: 100px; + width: 100px; + overflow: hidden; + display: inline-block; + } + + .avatar-uploader .el-upload:hover { + border-color: #409eff; + } + + .avatar-uploader-icon { + font-size: 28px; + color: #8c939d; + width: 100px; + height: 100px; + line-height: 110px; + margin-top: 40px; + text-align: center; + } + + .avatar { + width: 100px; + height: 100px; + display: block; + } + + .col-sm-12 { + margin-top: 20px; + } + + .col-sm-12 select { + height: 33px; + } +</style> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <div class="form-horizontal" id="carInfoForm"> + <div id="b1"> + <#input id="name" name="*商品名称:" type="text" value="${item.name}" readonly="true" /> + + <#input id="cover" name="*原价:" avatarImg="${item.price}" readonly="true" /> + <div class="form-group"> + <label class="col-sm-3 control-label head-scu-label">*兑换方式:</label> + <div class="col-sm-4"> + @if(exchangeMethod == 1){ + <input class="col-sm-1 control-label" name="userGroup" type="radio" + value="1" checked style="margin-top: 10px" disabled/> + <label class="col-sm-1" style="margin-left: -15px;width: 16%;margin-top: 7px">全部用户</label> + <input class="col-sm-1 control-label" name="userGroup" type="radio" + value="2" style="margin-left: 5%;margin-top: 10px;width: 13px;height: 13px" disabled/> + <label class="col-sm-1" style="width: 16%;margin-top: 7px">年度会员</label> + <input class="col-sm-1 control-label" name="userGroup" type="radio" + value="3" style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px" disabled/> + <label class="col-sm-1" style="width: 18%;margin-top: 5px">已有学员用户</label> + @} + + @if(exchangeMethod == 2){ + <input class="col-sm-1 control-label" name="userGroup" type="radio" + value="1" style="margin-top: 10px" disabled/> + <label class="col-sm-1" style="margin-left: -15px;width: 16%;margin-top: 7px">全部用户</label> + <input class="col-sm-1 control-label" name="userGroup" type="radio" + value="2" checked style="margin-left: 5%;margin-top: 10px;width: 13px;height: 13px" disabled/> + <label class="col-sm-1" style="width: 16%;margin-top: 7px">年度会员</label> + <input class="col-sm-1 control-label" name="userGroup" type="radio" + value="3" style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px" disabled/> + <label class="col-sm-1" style="width: 18%;margin-top: 5px">已有学员用户</label> + @} + + @if(exchangeMethod == 3){ + <input class="col-sm-1 control-label" name="userGroup" type="radio" + value="1" style="margin-top: 10px" disabled/> + <label class="col-sm-1" style="margin-left: -15px;width: 16%;margin-top: 7px">全部用户</label> + <input class="col-sm-1 control-label" name="userGroup" type="radio" + value="2" style="margin-left: 5%;margin-top: 10px;width: 13px;height: 13px" disabled/> + <label class="col-sm-1" style="width: 16%;margin-top: 7px">年度会员</label> + <input class="col-sm-1 control-label" name="userGroup" type="radio" + value="3" checked style="margin-left: 4%;margin-top: 10px;width: 13px;height: 13px" disabled/> + <label class="col-sm-1" style="width: 18%;margin-top: 5px">已有学员用户</label> + @} + + </div> + </div> + + <#input id="cover" name="*所需现金:" avatarImg="${item.cash}" readonly="true" /> + <#input id="cover" name="*所需积分:" avatarImg="${item.integral}" readonly="true" /> + + <div class="form-group"> + <label class="col-sm-3 control-label head-scu-label">*商品封面:</label> + <div class="col-sm-4"> + <img height="100px" width="100px" src="${item.cover}"> + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label head-scu-label">*商品图片:</label> + <div class="col-sm-4"> + @if(pictures != null){ + @for(im in pictures){ + <img height="100px" width="100px" src="${im}"> + @} + @} + </div> + </div> + + <#input id="quantityIssued" name="*用户人群:" type="text" value="${item.userPopulation}" readonly="true" /> + <#input id="quantityIssued" name="*发放数量:" type="text" value="${item.quantityIssued}" readonly="true" /> + <#input id="quantityIssued" name="*限领数量:" type="text" value="${item.pickUpQuantity}" readonly="true" /> + <#input id="quantityIssued" name="*已兑换数量:" type="text" value="${item.hasPicked}" readonly="true" /> + <#input id="quantityIssued" name="*有效期:" type="text" value="${item.validTime}" readonly="true" /> + + <#input id="quantityIssued" name="*兑换地点:" type="text" value="${item.exchangeArea}" readonly="true" /> + + @if(item.useScope == 2){ + <table class="table table-bordered" style="width: 70%;margin-left: 228px;" > + <thead> + <tr> + <td>所在省市</td> + <td>所属账号</td> + <td>门店名称</td> + </tr> + </thead> + @for(s in store){ + <td>${s.num1}</td> + <td>${s.num2}</td> + <td>${s.num3}</td> + @} + </table> + @} + + @if(item.useScope == 3){ + <table class="table table-bordered" style="width: 70%;margin-left: 228px;" > + <thead> + <tr> + <td>所在省市</td> + <td>所属账号</td> + <td>门店名称</td> + </tr> + </thead> + @for(c in city){ + <td>${c.num1}</td> + <td>${c.num2}</td> + @} + </table> + @} + <div class="form-group" style="margin-left:262px"> + <label class="col-sm-3 control-label">兑换说明:</label> + <div class="col-sm-4"> + <textarea type="text/plain" id="editor" style="height: 300px;width: 800px;" readonly>${item.redemptionInstructions}</textarea> + </div> + </div> + <#input id="quantityIssued" name="*排序:" type="text" value="${item.sort}" readonly="true" /> + + </div> + </div> + </div> + + <div class="row btn-group-m-t"> + <div class="col-sm-10 col-sm-offset-5"> + <#button btnCss="danger" name="关闭" id="cancel" icon="fa-eraser" clickFun="TGoodsInfoDlg.close()"/> + </div> + </div> + +</div> + +</div> +</div> +<script src="${ctxPath}/js/vue/vue.js"></script> +<script src="${ctxPath}/js/elementui/index.js"></script> +<link rel="stylesheet" href="${ctxPath}/js/elementui/index.css"> +<script src="${ctxPath}/modular/system/tGoods/tGoods_info.js"></script> +<script> + var vue2 = new Vue({ + el: '#app', + data: { + autoUpload: true,//自动上传 + imageUrl1: '',//模型数据,用于上传图片完成后图片预览 + dialogVisible: false + }, + methods: { + handleAvatarSuccess(res, file) { + TGoodsInfoDlg.goodsPicArray.push(file.response); + }, + beforeAvatarUpload(file) { + const isLt2M = file.size / 1024 / 1024 < 10; + if (!isLt2M) { + this.$message.error('上传图片大小不能超过 10MB!'); + } + return isLt2M; + }, + handleRemove(file, fileList) { + TGoodsInfoDlg.goodsPicArray = TGoodsInfoDlg.goodsPicArray.filter(item => { + return item.uid != file.uid; + }); + }, + }, + created() { + }, + }); +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_detail_two.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_detail_two.html new file mode 100644 index 0000000..56fd499 --- /dev/null +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_detail_two.html @@ -0,0 +1,396 @@ +@layout("/common/_container.html"){ +<style> + .avatar-uploader .el-upload { + border: 1px dashed #d9d9d9; + border-radius: 6px; + cursor: pointer; + position: relative; + height: 100px; + width: 100px; + overflow: hidden; + } + + .avatar-uploader .el-upload:hover { + border-color: #409eff; + } + .avatar-uploader-icon { + font-size: 28px; + color: #8c939d; + width: 100px; + height: 100px; + line-height: 100px; + margin-top: 34px; + text-align: center; + } + .avatar { + width: 100px; + height: 100px; + display: block; + } + + .col-sm-12 { + margin-top: 20px; + } + + .col-sm-12 select { + height: 33px; + } +</style> +<div class="ibox float-e-margins"> + <div class="ibox-content"> + <input id="s1" value="${item.redemptionMethod}" hidden> + <input id="s2" value="${item.userPopulation}" hidden> + <div class="form-horizontal" id="carInfoForm"> + <#label id="types" name="商品类型" type="text" value="课包商品" /> + + <div id="b2" > + <div class="form-group" id="provinceCode"> + <label class="col-sm-3 control-label">所在省:</label> + <div class="col-sm-9"> + <select class="form-control" id="pCode" name="pCode"> + <option value="">${item.province}</option> + </select> + </div> + </div> + <div class="form-group" id="cityCode"> + <label class="col-sm-3 control-label">所在市:</label> + <div class="col-sm-9"> + <select class="form-control" id="cCode" name="cCode" > + <option value="">${item.city}</option> + </select> + </div> + </div> + + <div class="form-group" > + <label class="col-sm-3 control-label">所属门店:</label> + <div class="col-sm-9"> + <select class="form-control" id="storeId" name="storeId"> + <option value="">${item.name}</option> + </select> + </div> + </div> + + <div class="form-group" > + <label class="col-sm-3 control-label">课包类型:</label> + <div class="col-sm-9"> + <select class="form-control" id="coursePackageTypeId" name="pCode" onchange="TGoodsInfoDlg.packageChange(this)"> + <option value="">${shopName}</option> + </select> + </div> + </div> + + <div class="form-group" > + <label class="col-sm-3 control-label">课包名称:</label> + <div class="col-sm-9"> + <select class="form-control" id="coursePackageId" name="coursePackageId" onchange="TGoodsInfoDlg.timeChange(this)"> + <option value="">${pageName}</option> + </select> + </div> + </div> + + <div class="form-group" > + <label class="col-sm-3 control-label">课时数:</label> + <div class="col-sm-9"> + <select class="form-control" id="coursePackageConfigId" name="coursePackageConfigId"> + <option value="">${classHours}</option> + </select> + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">原价:</label> + <div class="col-sm-9"> + <input class="form-control" id="price1" name="price" type="text" value="${item.price}" readonly> + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">兑换方式:</label> + <div class="col-sm-9"> + <input type="radio" name="redemptionMethod" value="1" checked onclick="updateMethod(1)"> 积分 + <input type="radio" name="redemptionMethod" value="2" onclick="updateMethod(2)"> 现金+积分 + </div> + </div> + + <div class="form-group" id="y3" hidden> + <label class="col-sm-3 control-label">所需现金:</label> + <div class="col-sm-9"> + <input class="form-control" id="cash1" name="cash" type="text" value="${item.cash}"> + + </div> + </div> + <div class="form-group" id="y4"> + <label class="col-sm-3 control-label">所需积分:</label> + <div class="col-sm-9"> + <input class="form-control" id="integral1" name="integral" type="text" value="${item.integral}"> + + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label head-scu-label">*商品图片:</label> + <div class="col-sm-4"> + <img height="100px" width="100px" src="${item.cover}"> + </div> + </div> + + + <div class="form-group"> + <label class="col-sm-3 control-label head-scu-label">*商品图片:</label> + <div class="col-sm-4"> + @for(im in pictures){ + <img height="100px" width="100px" src="${im}"> + @} + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">用户人群:</label> + <div class="col-sm-9"> + <input type="radio" name="userPopulation" value="1" checked> 全部用户 + <input type="radio" name="userPopulation" value="2" > 年度会员 + <input type="radio" name="userPopulation" value="3" > 已有学员用户 + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">发放数量:</label> + <div class="col-sm-9"> + <input class="form-control" id="quantityIssued1" name="quantityIssued" type="text" value="${item.quantityIssued}" readonly> + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">限领数量:</label> + <div class="col-sm-9"> + <input class="form-control" id="pickUpQuantity1" name="pickUpQuantity" type="text" value="${item.pickUpQuantity}" readonly> + </div> + </div> + <#input id="startTime1" name="有效期" type="text" value="${sTime} - ${eTime}" readonly="true"/> + + <div class="form-group" style="margin-left:262px"> + <label class="col-sm-1 control-label">兑换说明:</label> + <div class="col-sm-5"> + <textarea type="text/plain" id="editor1" style="height: 300px;width: 800px;" readonly>${item.redemptionInstructions}</textarea> + </div> + </div> + + <div class="form-group"> + <label class="col-sm-3 control-label">排序:</label> + <div class="col-sm-9"> + <input class="form-control" id="sort1" name="sort" type="text" value="${item.sort}" readonly> + + </div> + </div> + + </div> + + + </div> +</div> + +<div class="row btn-group-m-t"> + <div class="col-sm-10 col-sm-offset-5"> + <#button btnCss="danger" name="关闭" id="cancel" icon="fa-eraser" clickFun="TGoodsInfoDlg.close()"/> + </div> +</div> + + </div> + +<script src="${ctxPath}/js/vue/vue.js"></script> +<script src="${ctxPath}/js/elementui/index.js"></script> +<link rel="stylesheet" href="${ctxPath}/js/elementui/index.css"> +<script src="${ctxPath}/modular/system/tGoods/tGoods_info.js"></script> +<script src="${ctxPath}/modular/system/tGoods/TStoreInfo.js"></script> +<script> + laydate.render({ + elem: '#startTime', + range: true + }); + laydate.render({ + elem: '#startTime1', + range: true + }); + function updateMethod(e) { + console.log(e) + if(e==1){ + $("#y3").hide() + $("#y4").show() + }else if(e==2){ + $("#y4").show() + $("#y3").show() + }else if(e==3){ + $("#y1").hide() + $("#y2").show() + }else if(e==4){ + $("#y1").show() + $("#y2").show() + }else if(e==5) { + $("#y2").hide() + $("#y1").show() + } + + } + let i =1; + function updateType(e) { + + if(e==2){ + $("#b1").hide() + $("#b2").show() + if(i==1){ + var drivingLicensePhoto = new $WebUpload("cover1"); + drivingLicensePhoto.setUploadBarId("progressBar"); + drivingLicensePhoto.init(); + i++; + } + + }else { + $("#b2").hide() + $("#b1").show() + } + } + + + + function changeCity(n){ + + var provinceSelect = null; + if (n === undefined || n === null || n === ''){ + provinceSelect = document.getElementById("provinceData"); + }else { + provinceSelect = document.getElementById("provinceData"+n); + } + + var citySelect = null; + if (n === undefined || n === null || n === ''){ + citySelect = document.getElementById("cityData"); + }else { + citySelect = document.getElementById("cityData"+n); + } + + var selectedProvince = provinceSelect.value; + // 清空城市下拉框 + citySelect.innerHTML = '<option value="">请选择</option>'; + if (selectedProvince === "") { + return; + } + var ajax = new $ax(Feng.ctxPath + "/tCouponManage/getCity", function(data){ + data.forEach(province => { + var option = document.createElement("option"); + option.value = province.id; // 根据你的数据结构确定省份的id字段 + option.text = province.name; // 根据你的数据结构确定省份的name字段 + citySelect.appendChild(option); + }); + },function(data){ + console.log('data:',data) + Feng.error("获取失败!" + data.responseJSON.message + "!"); + }); + ajax.set('province',selectedProvince); + ajax.start(); + } + + /** + * 全国通用 + */ + function scopeOfApplication1() { + $("#storeSelect").hide(); + $("#citySelect").hide(); + } + /** + * 指定城市 + */ + function scopeOfApplication2() { + $("#storeSelect").hide(); + $("#citySelect").show(); + } + /** + * 指定门店 + */ + function scopeOfApplication3() { + $("#storeSelect").show(); + $("#citySelect").hide(); + } + + + + + var vue2 = new Vue({ + el: '#app', + data: { + autoUpload: true,//自动上传 + imageUrl1: '',//模型数据,用于上传图片完成后图片预览 + dialogVisible: false + }, + methods: { + handleAvatarSuccess(res, file) { + TGoodsInfoDlg.goodsPicArray.push(file); + }, + beforeAvatarUpload(file) { + const isLt2M = file.size / 1024 / 1024 < 10; + if (!isLt2M) { + this.$message.error('上传图片大小不能超过 10MB!'); + } + return isLt2M; + }, + handleRemove(file, fileList) { + couponInfoDlg.goodsPicArray = couponInfoDlg.goodsPicArray.filter(item => { + return item.uid != file.uid; + }); + }, + }, + created() { + }, + }); + var vue2 = new Vue({ + el: '#app1', + data: { + autoUpload: true,//自动上传 + imageUrl1: '',//模型数据,用于上传图片完成后图片预览 + dialogVisible: false + }, + methods: { + handleAvatarSuccess(res, file) { + TGoodsInfoDlg.goodsPicArray1.push(file); + }, + beforeAvatarUpload(file) { + const isLt2M = file.size / 1024 / 1024 < 10; + if (!isLt2M) { + this.$message.error('上传图片大小不能超过 10MB!'); + } + return isLt2M; + }, + handleRemove(file, fileList) { + couponInfoDlg.goodsPicArray = couponInfoDlg.goodsPicArray.filter(item => { + return item.uid != file.uid; + }); + }, + }, + created() { + }, + }); + + + window.onload = function(){ + var OBJradio=document.getElementsByName("redemptionMethod") + if(OBJradio==1){ + $("#y4").show() + $("#y3").hide() + } + if(OBJradio==2){ + $("#y4").show() + $("#y3").show() + } + for(i=0;i<OBJradio.length;i++){//循环查找这个radio + if($("#s1").val()==OBJradio[i].value){//判断是否与radio的值相同 + OBJradio[i].checked=true//修改选中状态 + } + } + var OBJradio=document.getElementsByName("userPopulation") + for(i=0;i<OBJradio.length;i++){//循环查找这个radio + if($("#s2").val()==OBJradio[i].value){//判断是否与radio的值相同 + OBJradio[i].checked=true//修改选中状态 + } + } + } +</script> +@} diff --git a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_edit.html b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_edit.html index 59b18fe..1390455 100644 --- a/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_edit.html +++ b/cloud-server-management/src/main/webapp/WEB-INF/view/system/tGoods/TGoods_edit.html @@ -8,6 +8,7 @@ height: 100px; width: 100px; overflow: hidden; + display: inline-block; } .avatar-uploader .el-upload:hover { @@ -42,7 +43,7 @@ <div class="ibox-content"> <div class="form-horizontal" id="carInfoForm"> <div id="b1"> - + <input id="goodsId" value="${id}" hidden="hidden"> <#input id="name" name="商品名称" type="text" value="${item.name}" readonly="true" /> <#avatar id="cover" name="商品封面:" avatarImg="${item.cover}" /> @@ -52,7 +53,14 @@ <div class="col-sm-6"> <div class="form-group"> <label class="col-sm-3 control-label">商品图片(请上传不超过五张图片): </label> - <div class="col-sm-2" style="width: 100%;margin-left: 12%;margin-top: 1%"> + <div class="col-sm-2" style="width: 100%;margin-left: 24%;margin-top: 1%"> + <div class="avatar-uploader" style="display: flex;"> + @for(im in pictures){ + <div style="margin-right: 16px;position: relative"> + <img height="100px" width="100px" src="${im}"> + <i class="el-icon-delete" onclick="delImg(this)" style="color: red;font-size: 18px;position: absolute;left: 0;right: 0;top: 0;bottom: 0"></i> + </div> + @} <el-upload :limit="5" class="avatar-uploader" @@ -63,17 +71,13 @@ :on-remove="handleRemove"> <i class="el-icon-plus"></i> </el-upload> - <el-dialog :visible.sync="dialogVisible"> -<!-- <img width="100%" :src="imageUrl1" alt="">--> - @for(im in pictures){ - <img width="100%" src="${im}"> - @} + </div> </div> </div> </div> </div> - + <input id="quantityHas" value="${item.quantityHas}" hidden="hidden"> <div class="form-group"> <label class="col-sm-3 control-label">发放数量:</label> <div class="col-sm-9"> @@ -109,8 +113,8 @@ <div class="row btn-group-m-t"> <div class="col-sm-10 col-sm-offset-5"> - <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TCarInfoDlg.editSubmit()"/> - <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TCarInfoDlg.close()"/> + <#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="TGoodsInfoDlg.editSubmit()"/> + <#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="TGoodsInfoDlg.close()"/> </div> </div> @@ -132,7 +136,7 @@ }, methods: { handleAvatarSuccess(res, file) { - TCarInfoDlg.goodsPicArray.push(file); + TGoodsInfoDlg.goodsPicArray.push(file.response); }, beforeAvatarUpload(file) { const isLt2M = file.size / 1024 / 1024 < 10; @@ -142,7 +146,7 @@ return isLt2M; }, handleRemove(file, fileList) { - TCarInfoDlg.goodsPicArray = TCarInfoDlg.goodsPicArray.filter(item => { + TGoodsInfoDlg.goodsPicArray = TGoodsInfoDlg.goodsPicArray.filter(item => { return item.uid != file.uid; }); }, diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js index 467b12e..f42e2e2 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/tCoupon/TCouponInfo.js @@ -432,6 +432,8 @@ } } cts = cityIds.join(','); + }else { + cts = cityIds; } } diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount.js b/cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount.js new file mode 100644 index 0000000..95da68a --- /dev/null +++ b/cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount.js @@ -0,0 +1,358 @@ +/** + * 车辆管理管理初始化 + */ +var TCompetition = { + id: "TCompetitionTable", //表格id + seItem: null, //选中的条目 + table: null, + layerIndex: -1 +}; +var language =1 +/** + * 初始化表格的列 + */ +TCompetition.initColumn = function () { + return [ + {field: 'selectItem', radio: true}, + {title: '所在省', field: 'pname', visible: true, align: 'center', valign: 'middle' + }, + {title: '所在市', field: 'cname', visible: true, align: 'center', valign: 'middle'}, + {title: '所属门店', field: 'shopName', visible: true, align: 'center', valign: 'middle' + }, + {title: '课包名称', field: 'name', visible: true, align: 'center', valign: 'middle' + }, + {title: '折扣类型', field: 'type', visible: true, align: 'center', valign: 'middle' + }, + {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle' + ,formatter:function (data) { + return{1:"上架中",2:"下架中"}[data] + } + }, + ]; +}; +function currentTime(timestamp){ + var time = timestamp + ''; + if(time.length != 13){ + timestamp = timestamp * 1000; + } + var date = new Date(timestamp);; + var Y = date.getFullYear() + '-'; + var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; + var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' '; + + var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':'; + var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':'; + var s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds()); + var strDate = Y + M + D + h + m + s; + return strDate +} + +function currentTime1(timestamp){ + var time = timestamp + ''; + if(time.length != 13){ + timestamp = timestamp * 1000; + } + var date = new Date(timestamp);; + var Y = date.getFullYear() + '-'; + var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; + var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' '; + + var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':'; + var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':'; + var s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds()); + var strDate = Y + M + D ; + return strDate +} +/** + * 检查是否选中 + */ +TCompetition.check = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if(selected.length == 0){ + Feng.info("请先选中表格中的某一记录!"); + return false; + }else{ + TCompetition.seItem = selected[0]; + return true; + } +}; + +/** + * 点击添加车辆管理 + */ +TCompetition.openAddTCompetition = function () { + var index = layer.open({ + type: 2, + title: '添加', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tCity/tCity_add' + }); + this.layerIndex = index; +}; + +/** + * 打开查看车辆管理详情 + */ +TCompetition.openTCompetitionDetail = function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title:'编辑', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tCity/tCity_update/' + TCompetition.seItem.id + }); + this.layerIndex = index; + } +}; + +/** + * 删除车辆管理 + */ +TCompetition.updateState = function (e) { + if (this.check()) { + var id = TCompetition.seItem.id; + var ajax = new $ax(Feng.ctxPath + "/tDiscount/updateState", function (data) { + if(data.code==200){ + Feng.success("操作成功") + }else { + Feng.error("操作失败") + } + TCompetition.table.refresh(); + }, function (data) { + Feng.error("操作失败") + TCompetition.table.refresh(); + }); + ajax.set("id",id); + ajax.set("status",e); + ajax.start(); + ; + } +}; +TCompetition.oneChange = function (e) { + console.log(111) + var oneId=$(e).val(); + var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){ + if(data!=null){ + if(language==1){ + var content='<option value="">选择市</option>'; + }else if(language==2){ + var content='<option value="">Choose your franchisee</option>'; + }else { + var content='<option value="">Pilih franchisee Anda</option>'; + } + $.each(data, function(k,v) { + content += "<option value='"+v.code+"'>"+v.name+"</option>"; + }); + $("#cCode").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +} + +TCompetition.freeze = function () { + if (this.check()) { + var ajax = new $ax(Feng.ctxPath + "/tCity/freeze", function (data) { + Feng.success("冻结成功!"); + TCompetition.table.refresh(); + }, function (data) { + Feng.error("冻结失败!" + data.responseJSON.message + "!"); + }); + ajax.set("id",this.seItem.id); + ajax.start(); + } +}; +TCompetition.unfreeze = function () { + if (this.check()) { + var ajax = new $ax(Feng.ctxPath + "/tCity/unfreeze", function (data) { + Feng.success("解冻成功!"); + TCompetition.table.refresh(); + }, function (data) { + Feng.error("解冻失败!" + data.responseJSON.message + "!"); + }); + ajax.set("id",this.seItem.id); + ajax.start(); + } +}; +TCompetition.reload = function () { + if (this.check()) { + let id = this.seItem.id + var operation = function(){ + var ajax = new $ax(Feng.ctxPath + "/tCity/pwd", function (data) { + Feng.success("重置成功!"); + TCompetition.table.refresh(); + }, function (data) { + Feng.error("重置失败!" + data.responseJSON.message + "!"); + }); + ajax.set("id",id); + ajax.start(); + } + Feng.confirm("确认重置密码?重置后密码为:a123456", operation); + } + +}; + +TCompetition.carInsurance = function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title: language==1?'车辆保险':(language==2?'Vehicle insurance':'Asuransi kendaraan'), + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/TCompetition/carInsurance?carId=' + TCompetition.seItem.id + }); + this.layerIndex = index; + } +}; +TCompetition.info = function () { + if (this.check()) { + let index = layer.open({ + type: 2, + title: '折扣详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tDiscount/info?id=' + this.seItem.id + }); + this.layerIndex = index; + } +}; + + + +/** + * 查询车辆管理列表 + */ +TCompetition.search = function () { + var queryData = {}; + queryData['provinceCode'] = $("#pCode").val(); + queryData['cityCode'] = $("#cCode").val(); + queryData['name'] = $("#name").val(); + queryData['shopName'] = $("#shopName").val(); + queryData['type'] = $("type").val(); + TCompetition.table.refresh({query: queryData}); +}; + +TCompetition.resetSearch = function () { + $("#pCode").val(""); + $("#cCode").val(""); + $("#name").val(""); + $("#type").val(""); + $("#shopName").val(""); + TCompetition.search(); +}; + +$(function () { + var defaultColunms = TCompetition.initColumn(); + var table = new BSTable(TCompetition.id, "/tDiscount/list", defaultColunms); + table.setPaginationType("server"); + TCompetition.table = table.init(); +}); + +/** + * 下载模板 + */ +TCompetition.uploadCarModel = function () { + window.location.href = Feng.ctxPath + "/TCompetition/uploadCarModel"; +} + +var agreement = function(){ + this.init = function(){ + //模拟上传excel + $("#uploadEventBtn").unbind("click").bind("click",function(){ + $("#uploadEventFile").click(); + }); + }; +} +/** + * 导入合同 + */ +TCompetition.exporTCompetition = function () { + var uploadEventFile = $("#uploadEventFile").val(); + if(uploadEventFile == ''){ + if(language==1){ + Feng.info("请选择Excel,再上传"); + }else if(language==2){ + Feng.info("Please select Excel and upload"); + }else { + Feng.info("Silakan pilih Excel dan upload"); + } + }else if(uploadEventFile.lastIndexOf(".xls")<0){//可判断以.xls和.xlsx结尾的excel + if(language==1){ + Feng.info("只能上传Excel文件"); + }else if(language==2){ + Feng.info("Only Excel files can be uploaded"); + }else { + Feng.info("Hanya berkas Excel yang dapat diunggah"); + } + }else{ + var url = Feng.ctxPath + '/TCompetition/exporTCompetition'; + var file = document.querySelector('input[name=file]').files[0]; + var reader = new FileReader(); + if (file) { + var formData = new FormData(); + formData.append("myfile", file); + this.sendAjaxRequest(url, 'POST', formData); + } + } +} +TCompetition.sendAjaxRequest = function(url,type,data){ + $.ajax({ + url : url, + type : type, + data : data, + success : function(result) { + if(result.code==500) { + Feng.info(result.message); + }else { + if(language==1){ + Feng.success("导入成功!"); + }else if(language==2){ + Feng.success("SUCCESSFUL IMPORT!"); + }else { + Feng.success("Import berhasil!"); + } + } + TCompetition.table.refresh(); + }, + error : function() { + if(language==1){ + Feng.error("excel上传失败!"); + }else if(language==2){ + Feng.error("Uploading excel Fails. Procedure!"); + }else { + Feng.error("Gagal mengunggah excel!"); + } + }, + cache : false, + contentType : false, + processData : false + }); +}; + +var agreement; +$(function(){ + agreement = new agreement(); + agreement.init(); +}); + +/** + * 导出车辆操作 + */ +TCompetition.ouTCompetition = function () { + var operation = function() { + window.location.href = Feng.ctxPath + "/TCompetition/ouTCompetition"; + }; + if(language==1){ + Feng.confirm("是否确认导出车辆信息?", operation); + }else if(language==2){ + Feng.confirm("Are you sure to export vehicle information?", operation); + }else { + Feng.confirm("Apakah Anda pasti akan mengekspor informasi kendaraan?", operation); + } +} \ No newline at end of file diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount_info.js new file mode 100644 index 0000000..8360403 --- /dev/null +++ b/cloud-server-management/src/main/webapp/static/modular/system/tDiscount/tDiscount_info.js @@ -0,0 +1,320 @@ +/** + * 初始化车辆管理详情对话框 + */ +var language=1; +var TCarInfoDlg = { + tCarInfoData : {}, + validateFields: { + } +}; + +/** + * 验证数据是否为空 + */ +TCarInfoDlg.validate = function () { + $('#carInfoForm').data("bootstrapValidator").resetForm(); + $('#carInfoForm').bootstrapValidator('validate'); + return $("#carInfoForm").data('bootstrapValidator').isValid(); +}; + +/** + * 清除数据 + */ +TCarInfoDlg.clearData = function() { + this.tCarInfoData = {}; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TCarInfoDlg.set = function(key, val) { + this.tCarInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; + return this; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TCarInfoDlg.get = function(key) { + return $("#" + key).val(); +} + +/** + * 关闭此对话框 + */ +TCarInfoDlg.close = function() { + parent.layer.close(window.parent.TCompetition.layerIndex); +} + +/** + * 收集数据 + */ +TCarInfoDlg.collectData = function() { + this + .set('id') + .set('isPlatCar') + .set('companyId') + .set('franchiseeId') + .set('carColor') + .set('carModelId') + .set('carBrandId') + .set('carLicensePlate') + .set('carPhoto') + .set('drivingLicenseNumber') + .set('drivingLicensePhoto') + .set('annualInspectionTime') + .set('commercialInsuranceTime') + .set('createTime') + .set('state') + .set('addType') + .set('addObjectId') + .set('plateColor') + .set('vehicleType') + .set('ownerName') + .set('engineId') + .set('VIN') + .set('certifyDateA') + .set('fuelType') + .set('engineDisplace') + .set('certificate') + .set('transAgency') + .set('transArea') + .set('transDateStart') + .set('transDateStop') + .set('certifyDateB') + .set('fixState') + .set('nextFixDate') + .set('checkState') + .set('feePrintId') + .set('GPSBrand') + .set('GPSModel') + .set('GPSIMEI') + .set('GPSInstallDate') + .set('registerDate') + .set('commercialType'); +} + +/** + * 提交添加 + */ +TCarInfoDlg.addSubmit = function() { + + this.clearData(); + this.collectData(); + if(!this.validate()){ + return ; + } + + let pCode = $("#pCode").val() + let cCode = $("#cCode").val() + let name = $("#name").val() + let phone = $("#phone").val() + + if(pCode==''){ + Feng.info("请选择省") + return; + } + if(cCode==''){ + Feng.info("请选择市") + return; + } + if(name==''){ + Feng.info("管理员姓名不能为空") + return; + } + if(phone==''){ + Feng.info("管理员手机号不能为空") + return; + } + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tCity/add", function(data){ + if(data=="5001"){ + Feng.error("改账号已经存在"); + }else + if(data.code == 200){ + if(language==1){ + Feng.success("添加成功!"); + }else if(language==2){ + Feng.success("Successfully added!"); + }else { + Feng.success("Sangat berhasil ditambah!"); + } + window.parent.TCompetition.table.refresh(); + TCarInfoDlg.close(); + }else{ + Feng.error(data.msg); + } + + },function(data){ + Feng.error("添加失败!" + data.responseJSON.message + "!"); + }); + ajax.set(this.tCarInfoData); + ajax.set("provinceCode",pCode); + ajax.set("cityCode",cCode); + ajax.set("name",name); + ajax.set("phone",phone); + ajax.start(); +} + +/** + * 提交修改 + */ +TCarInfoDlg.editSubmit = function() { + + this.clearData(); + this.collectData(); + if(!this.validate()){ + return ; + } + let pCode = $("#pCode").val() + let cCode = $("#cCode").val() + let name = $("#name").val() + let phone = $("#phone").val() + + if(pCode==''){ + Feng.info("请选择省") + return; + } + if(cCode==''){ + Feng.info("请选择市") + return; + } + if(name==''){ + Feng.info("管理员姓名不能为空") + return; + } + if(phone==''){ + Feng.info("管理员手机号不能为空") + return; + } + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tCity/update", function(data){ + if(data=="5001"){ + Feng.error("改账号已经存在"); + }else + if(data.code == 200){ + if(language==1){ + Feng.success("修改成功!"); + }else if(language==2){ + Feng.success("Modify successfully!"); + }else { + Feng.success("Mengubah dengan sukses!"); + } + window.parent.TCompetition.table.refresh(); + TCarInfoDlg.close(); + }else{ + Feng.error(data.msg); + } + },function(data){ + Feng.error("修改失败!" + data.responseJSON.message + "!"); + }); + ajax.set("provinceCode",pCode); + ajax.set("cityCode",cCode); + ajax.set("name",name); + ajax.set("phone",phone); + ajax.set("id",$("#id").val()); + ajax.start(); +} + +$(function() { + Feng.initValidator("carInfoForm", TCarInfoDlg.validateFields); + // 初始化图片上传 + var carPhoto = new $WebUpload("carPhoto"); + carPhoto.setUploadBarId("progressBar"); + carPhoto.init(); + var drivingLicensePhoto = new $WebUpload("drivingLicensePhoto"); + drivingLicensePhoto.setUploadBarId("progressBar"); + drivingLicensePhoto.init(); +}); + +/** + * 选择分公司后执行 + */ +TCarInfoDlg.oneChange = function (e) { + var oneId=$(e).val(); + var ajax = new $ax(Feng.ctxPath + "/tCity/onChange", function(data){ + if(data!=null){ + if(language==1){ + var content='<option value="">选择市</option>'; + }else if(language==2){ + var content='<option value="">Choose your franchisee</option>'; + }else { + var content='<option value="">Pilih franchisee Anda</option>'; + } + $.each(data, function(k,v) { + content += "<option value='"+v.code+"'>"+v.name+"</option>"; + }); + $("#cCode").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +} + +/** + * 类型改变执行 + * @param e + */ +TCarInfoDlg.companyTypeClick = function (e) { + if (1 == e){ + $(".companyDiv").hide(); + } else if (2 == e){ + $(".companyDiv").show(); + } +} + +/** + * 车辆品牌改变时执行 + */ +TCarInfoDlg.brandChange = function (e) { + var carBrandId=$(e).val(); + var ajax = new $ax(Feng.ctxPath + "/tCar/brandChange", function(data){ + if(data!=null){ + if(language==1){ + var content='<option value="">选择车辆类型</option>'; + }else if(language==2){ + var content='<option value="">Please select the vehicle type</option>'; + }else { + var content='<option value="">Pilih Jenis Kendaraan</option>'; + } + + $.each(data, function(k,v) { + content += "<option value='"+v.id+"'>"+v.name+"</option>"; + }); + $("#carModelId").empty().append(content); + } + }); + ajax.set("carBrandId",carBrandId); + ajax.start(); +} + +/** + * 专车服务被点击 + */ +TCarInfoDlg.zcServerClick = function () { + var serverBox1 = $('#serverBox1').prop('checked'); + if (serverBox1){ + $("#zcModelDiv").show(); + } else { + $("#zcModelDiv").hide(); + } +} + +/** + * 跨城服务被点击 + */ +TCarInfoDlg.kcServerClick = function () { + var serverBox3 = $('#serverBox3').prop('checked'); + if (serverBox3){ + $("#kcModelDiv").show(); + } else { + $("#kcModelDiv").hide(); + } +} diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/coursePackageDiscount.js b/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/coursePackageDiscount.js new file mode 100644 index 0000000..9b77955 --- /dev/null +++ b/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/coursePackageDiscount.js @@ -0,0 +1,819 @@ +/** + * 用户详情对话框(可用于添加和修改对话框) + */ +var CoursePackageDiscount = { + userInfoData: {}, + coursePackagePaymentConfig: {} +}; + + + +/** + * 关闭此对话框 + */ +CoursePackageDiscount.close = function () { + parent.layer.close(window.parent.CoursePackage.layerIndex); +}; + + +/** + * 提交修改 + */ +CoursePackageDiscount.editSubmit = function () { + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/coursePackage/setCoursePackageDiscount", function (data) { + if(data.code == 200){ + Feng.success("编辑成功!"); + CoursePackageDiscount.close(); + window.parent.CoursePackage.table.refresh(); + }else{ + Feng.error(data.msg); + } + }, function (data) { + Feng.error("编辑失败!" + data.responseJSON.message + "!"); + }); + ajax.set('json', JSON.stringify(CoursePackageDiscount.coursePackagePaymentConfig)); + ajax.set('id', $('#id').val()); + ajax.start(); +}; + + + + + + +function addPrice(type){ + let index = $('#classHours').find('button[checked]').attr('index'); + if(type == 3){ + let ll = $('#limitedTimeDiscount .limitedTimeDiscount').length; + let htmlStr = + ' <div class="form-group limitedTimeDiscount" index="' + ll + '">' + + ' <div class="col-sm-2"></div>\n' + + ' <div class="col-sm-8" style="border: 1px solid; padding: 20px;">\n' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">折扣有效期:</label>\n' + + ' <div class="col-sm-9">\n' + + ' <input class="startAndEndDay" style="width: 300px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/>' + + ' </div>\n' + + ' <div class="col-sm-1"><i class="fa fa-trash-o" style="font-size:24px;color: red;" onclick="removePrice(3, this)"></i></div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">*折扣时间:</label>\n' + + ' <div class="col-sm-5">\n' + + ' <input class="time" style="width: 200px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/>\n' + + ' </div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label"></label>\n' + + ' <div class="col-sm-8" style="margin-top: 6px;">\n' + + ' <input type="checkbox" name="week" value="1" onclick="addPriceValue(3, this, \'weeks\')"/> 周一 ' + + ' <input type="checkbox" name="week" value="2" onclick="addPriceValue(3, this, \'weeks\')"/> 周二 ' + + ' <input type="checkbox" name="week" value="3" onclick="addPriceValue(3, this, \'weeks\')"/> 周三 ' + + ' <input type="checkbox" name="week" value="4" onclick="addPriceValue(3, this, \'weeks\')"/> 周四 ' + + ' <input type="checkbox" name="week" value="5" onclick="addPriceValue(3, this, \'weeks\')"/> 周五 ' + + ' <input type="checkbox" name="week" value="6" onclick="addPriceValue(3, this, \'weeks\')"/> 周六 ' + + ' <input type="checkbox" name="week" value="7" onclick="addPriceValue(3, this, \'weeks\')"/> 周日 ' + + ' </div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">*现金支付:</label>\n' + + ' <div class="col-sm-4">\n' + + ' <input type="number" class="price" onblur="addPriceValue(3, this, \'cashPayment\')" min="0" placeholder="请输入折扣后支付价格" style="width: 180px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> ¥\n' + + ' </div>\n' + + ' </div>' + + ' </div>' + + ' </div>'; + + $('#limitedTimeDiscount').append(htmlStr); + let arr = CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount; + for(let k in arr){ + if(arr[k].type == 3){ + arr[k].content.push({}) + } + } + lay('.startAndEndDay').each(function(i, e){ + laydate.render({ + elem: this + ,type: 'datetime' + ,range: true + ,done: function(value, date, endDate){ + let index = $('#classHours').find('button[checked]').attr('index'); + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + let ii = $(e).parent('div').parent('div').parent('div').parent('div').attr('index'); + for (let i = 0; i < obj.coursePackageDiscount.length; i++) { + if(type == obj.coursePackageDiscount[i].type){ + let jsonArray = obj.coursePackageDiscount[i].content; + for (let j = 0; j < jsonArray.length; j++) { + if(j == ii){ + let arr = value.split(" - "); + obj.coursePackageDiscount[i].content[j]['startDate'] = arr[0]; + obj.coursePackageDiscount[i].content[j]['endDate'] = arr[1]; + } + } + } + } + } + }); + }); + lay('.time').each(function(i, e){ + laydate.render({ + elem: this + ,type: 'time' + ,range: true + ,done: function(value, date, endDate){ + let index = $('#classHours').find('button[checked]').attr('index'); + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + let ii = $(e).parent('div').parent('div').parent('div').parent('div').attr('index'); + for (let i = 0; i < obj.coursePackageDiscount.length; i++) { + if(type == obj.coursePackageDiscount[i].type){ + let jsonArray = obj.coursePackageDiscount[i].content; + for (let j = 0; j < jsonArray.length; j++) { + if(j == ii){ + let arr = value.split(" - "); + obj.coursePackageDiscount[i].content[j]['startTime'] = arr[0]; + obj.coursePackageDiscount[i].content[j]['endTime'] = arr[1]; + } + } + } + } + } + }); + }); + } + if(type == 4){ + let ll = $('#complimentaryClass .complimentaryClass').length; + let htmlStr = + ' <div class="form-group complimentaryClass" index="' + ll + '">' + + ' <div class="col-sm-2"></div>\n' + + ' <div class="col-sm-8" style="border: 1px solid; padding: 20px;">\n' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">*赠送有效期:</label>\n' + + ' <div class="col-sm-9">\n' + + ' <input class="startAndEndDay" style="width: 300px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/>' + + ' </div>\n' + + ' <div class="col-sm-1"><i class="fa fa-trash-o" style="font-size:24px;color: red;" onclick="removePrice(4, this)"></i></div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">*赠送时间:</label>\n' + + ' <div class="col-sm-5">\n' + + ' <input class="time" style="width: 200px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/>\n' + + ' </div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label"></label>\n' + + ' <div class="col-sm-8" style="margin-top: 6px;">\n' + + ' <input type="checkbox" name="week" value="1" onclick="addPriceValue(4, this, \'weeks\')"/> 周一 ' + + ' <input type="checkbox" name="week" value="2" onclick="addPriceValue(4, this, \'weeks\')"/> 周二 ' + + ' <input type="checkbox" name="week" value="3" onclick="addPriceValue(4, this, \'weeks\')"/> 周三 ' + + ' <input type="checkbox" name="week" value="4" onclick="addPriceValue(4, this, \'weeks\')"/> 周四 ' + + ' <input type="checkbox" name="week" value="5" onclick="addPriceValue(4, this, \'weeks\')"/> 周五 ' + + ' <input type="checkbox" name="week" value="6" onclick="addPriceValue(4, this, \'weeks\')"/> 周六 ' + + ' <input type="checkbox" name="week" value="7" onclick="addPriceValue(4, this, \'weeks\')"/> 周日 ' + + ' </div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">*赠送课时数:</label>\n' + + ' <div class="col-sm-4">\n' + + ' <input type="number" class="price" onblur="addPriceValue(4, this, \'hour\')" min="0" placeholder="请输入赠送课时数" style="width: 180px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> ¥\n' + + ' </div>\n' + + ' </div>' + + ' </div>' + + ' </div>'; + $('#complimentaryClass').append(htmlStr); + let arr = CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount; + for(let k in arr){ + if(arr[k].type == 4){ + arr[k].content.push({}) + } + } + lay('.startAndEndDay').each(function(i, e){ + laydate.render({ + elem: this + ,type: 'datetime' + ,range: true + ,done: function(value, date, endDate){ + let index = $('#classHours').find('button[checked]').attr('index'); + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + let ii = $(e).parent('div').parent('div').parent('div').parent('div').attr('index'); + for (let i = 0; i < obj.coursePackageDiscount.length; i++) { + if(type == obj.coursePackageDiscount[i].type){ + let jsonArray = obj.coursePackageDiscount[i].content; + for (let j = 0; j < jsonArray.length; j++) { + if(j == ii){ + let arr = value.split(" - "); + obj.coursePackageDiscount[i].content[j]['startDate'] = arr[0]; + obj.coursePackageDiscount[i].content[j]['endDate'] = arr[1]; + } + } + } + } + } + }); + }); + lay('.time').each(function(i, e){ + laydate.render({ + elem: this + ,type: 'time' + ,range: true + ,done: function(value, date, endDate){ + let index = $('#classHours').find('button[checked]').attr('index'); + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + let ii = $(e).parent('div').parent('div').parent('div').parent('div').attr('index'); + for (let i = 0; i < obj.coursePackageDiscount.length; i++) { + if(type == obj.coursePackageDiscount[i].type){ + let jsonArray = obj.coursePackageDiscount[i].content; + for (let j = 0; j < jsonArray.length; j++) { + if(j == ii){ + let arr = value.split(" - "); + obj.coursePackageDiscount[i].content[j]['startTime'] = arr[0]; + obj.coursePackageDiscount[i].content[j]['endTime'] = arr[1]; + } + } + } + } + } + }); + }); + } +} + + +function removePrice(type, e){ + let index = $('#classHours').find('button[checked]').attr('index'); + let object = $(e).parent('div').parent('div').parent('div').parent('div'); + let ii = object.attr('index'); + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + for (let i = 0; i < obj.coursePackageDiscount.length; i++) { + if(type == obj.coursePackageDiscount[i].type){ + let jsonArray = null; + if(typeof obj.coursePackageDiscount[i].content == "string"){ + jsonArray = JSON.parse(obj.coursePackageDiscount[i].content); + }else{ + jsonArray = obj.coursePackageDiscount[i].content; + } + + let arr = []; + for (let j = 0; j < jsonArray.length; j++) { + if(j == ii){ + continue + } + arr.push(jsonArray[j]); + } + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount[i].content = arr; + } + } + object.remove(); +} + + +function addPriceValue(type, e, name){ + let index = $('#classHours').find('button[checked]').attr('index'); + if(type == 1){ + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + for (let i = 0; i < obj.coursePackageDiscount.length; i++) { + if(type == obj.coursePackageDiscount[i].type){ + let content = null; + if(typeof obj.coursePackageDiscount[i].content == "string"){ + content = JSON.parse(obj.coursePackageDiscount[i].content); + }else{ + content = obj.coursePackageDiscount[i].content; + } + content[name] = parseFloat($(e).val()); + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount[i].content = content; + } + } + } + if(type == 2){ + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + for (let i = 0; i < obj.coursePackageDiscount.length; i++) { + if(type == obj.coursePackageDiscount[i].type){ + let content = null; + if(typeof obj.coursePackageDiscount[i].content == "string"){ + content = JSON.parse(obj.coursePackageDiscount[i].content); + }else{ + content = obj.coursePackageDiscount[i].content; + } + content[name] = parseFloat($(e).val()); + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount[i].content = content; + } + } + } + if(type == 3){ + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + let ii = $(e).parent('div').parent('div').parent('div').parent('div').attr('index'); + for (let i = 0; i < obj.coursePackageDiscount.length; i++) { + if(type == obj.coursePackageDiscount[i].type){ + let jsonArray = null; + if(typeof obj.coursePackageDiscount[i].content == "string"){ + jsonArray = JSON.parse(obj.coursePackageDiscount[i].content); + }else{ + jsonArray = obj.coursePackageDiscount[i].content; + } + + for (let j = 0; j < jsonArray.length; j++) { + if(j == ii){ + if('weeks' == name){ + let weeks = jsonArray[j].weeks; + let v = parseInt($(e).val()); + if(null != weeks && typeof weeks != "undefined"){ + if(e.checked){ + weeks.push(v); + }else{ + let arr = []; + for (let k = 0; k < weeks.length; k++) { + if(weeks[k] == v){ + continue + } + arr.push(weeks[k]); + } + weeks = arr; + } + }else{ + weeks = [v]; + } + jsonArray[j].weeks = weeks; + }else{ + jsonArray[j][name] = parseFloat($(e).val()); + } + } + } + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount[i].content = jsonArray; + } + } + } + if(type == 4){ + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + let ii = $(e).parent('div').parent('div').parent('div').parent('div').attr('index'); + for (let i = 0; i < obj.coursePackageDiscount.length; i++) { + if(type == obj.coursePackageDiscount[i].type){ + let jsonArray = null; + if(typeof obj.coursePackageDiscount[i].content == "string"){ + jsonArray = JSON.parse(obj.coursePackageDiscount[i].content); + }else{ + jsonArray = obj.coursePackageDiscount[i].content; + } + for (let j = 0; j < jsonArray.length; j++) { + if(j == ii){ + if('weeks' == name){ + let weeks = jsonArray[j].weeks; + let v = parseInt($(e).val()); + if(null != weeks && typeof weeks != "undefined"){ + if(e.checked){ + weeks.push(v); + }else{ + let arr = []; + for (let k = 0; k < weeks.length; k++) { + if(weeks[k] == v){ + continue + } + arr.push(weeks[k]); + } + weeks = arr; + } + }else{ + weeks = [v]; + } + jsonArray[j].weeks = weeks; + }else{ + jsonArray[j][name] = parseFloat($(e).val()); + } + } + } + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount[i].content = jsonArray; + } + } + } +} + + +function selectedPperiod(e){ + $('#classHours').find('button[checked]').attr('style', 'width: 60px;height: 30px;border: none;border-radius: 5px;'); + $('#classHours').find('button[checked]').removeAttr('checked'); + if(typeof e != "undefined"){ + $(e).attr('style', 'width: 60px;height: 30px;background-color: #0086F6;border: none;border-radius: 5px;color: white;'); + $(e).attr('checked', true); + }else{ + $($('#classHours').find('button')[0]).attr('style', 'width: 60px;height: 30px;background-color: #0086F6;border: none;border-radius: 5px;color: white;'); + $($('#classHours').find('button')[0]).attr('checked', true); + } + + let index = $('#classHours').find('button[checked]').attr('index'); + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + $('#payment').text(obj.payment); + $('#cashPayment').text(obj.cashPayment); + + $('#memberDiscount').html(''); + $('#renewalOffer').html(''); + $('#limitedTimeDiscount').html(''); + $('#complimentaryClass').html(''); + let objv = CoursePackageDiscount.coursePackagePaymentConfig[index]; + $('input[name="type"]').each(function (i, e) { + e.checked = false; + let v = $(e).val(); + for (let i = 0; i < objv.coursePackageDiscount.length; i++) { + if(v == objv.coursePackageDiscount[i].type){ + $(e).click(); + } + } + }) +} + + + + +$(function () { + CoursePackageDiscount.coursePackagePaymentConfig = JSON.parse($('#coursePackagePaymentConfig').val()); + let htmlStr = ''; + for (let i = 0; i < CoursePackageDiscount.coursePackagePaymentConfig.length; i++) { + let obj = CoursePackageDiscount.coursePackagePaymentConfig[i]; + if(i == 0){ + htmlStr += '<button checked onclick="selectedPperiod(this)" index="' + i + '" style="width: 60px;height: 30px;background-color: #0086F6;border: none;border-radius: 5px;color: white;">' + obj.classHours + '课时</button> '; + }else{ + htmlStr += '<button onclick="selectedPperiod(this)" index="' + i + '" style="width: 60px;height: 30px;border: none;border-radius: 5px;">' + obj.classHours + '课时</button> '; + } + } + $('#classHours').html(htmlStr); + + $('input[name="type"]').click(function () { + let v = $(this).val(); + let index = $('#classHours').find('button[checked]').attr('index'); + if(this.checked && v == '1'){ + let discountMember = true; + let hh = '<div class="hr-line-dashed"></div>' + + '<h3>会员折扣</h3>\n' + + ' <div class="form-group">\n' + + ' <div class="col-sm-2"></div>'+ + ' <div class="col-sm-10">' + + ' <label class="col-sm-2 control-label">*现金支付:</label>\n' + + ' <div class="col-sm-3">\n' + + ' <input type="number" min="0" value="'; + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + for (let i = 0; i < obj.coursePackageDiscount.length; i++) { + if(v == obj.coursePackageDiscount[i].type){ + let jsonObject = null; + if(typeof obj.coursePackageDiscount[i].content == "string"){ + jsonObject = JSON.parse(obj.coursePackageDiscount[i].content); + }else{ + jsonObject = obj.coursePackageDiscount[i].content; + } + hh += (null == jsonObject.discountMember ? '' : jsonObject.discountMember); + discountMember = false; + } + } + hh += '" placeholder="请输入会员支付价格" onblur="addPriceValue(1, this, \'discountMember\')" style="width: 180px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> ¥\n' + + ' </div>\n' + + ' </div>'+ + ' </div>'; + + $('#memberDiscount').html(hh); + if(discountMember){ + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount.push({ + type: 1, + content:{ + discountMember: null + } + }); + } + }else if(!this.checked && v == '1'){ + $('#memberDiscount').html(''); + let datas = CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount; + let arra = []; + for (let i = 0; i < datas.length; i++){ + if(datas[i].type == v){ + continue; + } + arra.push(datas[i]); + } + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount = arra; + } + if(this.checked && v == '2'){ + let continuingMember = true; + let hh = '<div class="hr-line-dashed"></div>' + + '<h3>续课优惠</h3>\n' + + ' <div class="form-group">\n' + + ' <div class="col-sm-2"></div>'+ + ' <div class="col-sm-10">' + + ' <label class="col-sm-2 control-label">会员续课:</label>\n' + + ' <div class="col-sm-3">\n' + + ' </div>\n' + + ' <label class="col-sm-2 control-label">用户续课:</label>\n' + + ' <div class="col-sm-3">\n' + + ' </div>\n' + + ' </div>'+ + ' </div>' + + ' <div class="form-group">\n' + + ' <div class="col-sm-2"></div>'+ + ' <div class="col-sm-10">' + + ' <label class="col-sm-2 control-label">*现金支付:</label>\n' + + ' <div class="col-sm-3">\n' + + ' <input type="number" min="0" value="'; + let obj = CoursePackageDiscount.coursePackagePaymentConfig[index]; + for (let i = 0; i < obj.coursePackageDiscount.length; i++) { + if(v == obj.coursePackageDiscount[i].type){ + let jsonObject = null; + if(typeof obj.coursePackageDiscount[i].content == "string"){ + jsonObject = JSON.parse(obj.coursePackageDiscount[i].content); + }else{ + jsonObject = obj.coursePackageDiscount[i].content; + } + hh += (null == jsonObject.continuingMember ? '' : jsonObject.continuingMember); + continuingMember = false; + } + } + hh += '" placeholder="请输入会员支付价格" onblur="addPriceValue(2, this, \'continuingMember\')" style="width: 180px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> ¥\n' + + ' </div>\n' + + ' <label class="col-sm-2 control-label">*现金支付:</label>\n' + + ' <div class="col-sm-3">\n' + + ' <input type="number" min="0" value="'; + let obje = CoursePackageDiscount.coursePackagePaymentConfig[index]; + for (let i = 0; i < obje.coursePackageDiscount.length; i++) { + if(v == obje.coursePackageDiscount[i].type){ + let jsonObject = null; + if(typeof obje.coursePackageDiscount[i].content == "string"){ + jsonObject = JSON.parse(obje.coursePackageDiscount[i].content); + }else{ + jsonObject = obje.coursePackageDiscount[i].content; + } + hh += (null == jsonObject.continuingUser ? '' : jsonObject.continuingUser); + } + } + hh += '" placeholder="请输入用户支付价格" onblur="addPriceValue(2, this, \'continuingUser\')" style="width: 180px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> ¥\n' + + ' </div>\n' + + ' </div>'+ + ' </div>'; + $('#renewalOffer').html(hh); + if(continuingMember){ + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount.push({ + type: 2, + content: { + continuingMember: null, + continuingUser: null + } + }) + } + }else if(!this.checked && v == '2'){ + $('#renewalOffer').html(''); + let datas = CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount; + let arra = []; + for (let i = 0; i < datas.length; i++){ + if(datas[i].type == v){ + continue; + } + arra.push(datas[i]); + } + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount = arra; + } + if(this.checked && v == '3'){ + let data_value = true; + let hh = '<div class="hr-line-dashed"></div>' + + '<span style="font-size: 16px;font-weight: 500;">限时折扣</span> <i class="fa fa-plus-circle" style="font-size:24px" onclick="addPrice(3)"></i>\n'; + let obje = CoursePackageDiscount.coursePackagePaymentConfig[index]; + for (let i = 0; i < obje.coursePackageDiscount.length; i++) { + if(v == obje.coursePackageDiscount[i].type){ + data_value = false + let jsonArray = null; + if(typeof obje.coursePackageDiscount[i].content == "string"){ + jsonArray = JSON.parse(obje.coursePackageDiscount[i].content); + }else{ + jsonArray = obje.coursePackageDiscount[i].content; + } + + for (let j = 0; j < jsonArray.length; j++) { + hh += '' + + ' <div class="form-group limitedTimeDiscount" index="' + j + '">' + + ' <div class="col-sm-2"></div>\n' + + ' <div class="col-sm-8" style="border: 1px solid; padding: 20px;">\n' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">折扣有效期:</label>\n' + + ' <div class="col-sm-9">\n' + + ' <input class="startAndEndDay" value="' + (jsonArray[j].startDate + " - " + jsonArray[j].endDate) + '" style="width: 300px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/>' + + ' </div>\n' + + ' <div class="col-sm-1"><i class="fa fa-trash-o" style="font-size:24px;color: red;" onclick="removePrice(3, this)"></i></div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">*折扣时间:</label>\n' + + ' <div class="col-sm-5">\n' + + ' <input class="time" value="' + jsonArray[j].startTime + " - " + jsonArray[j].endTime + '" style="width: 200px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/>\n' + + ' </div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label"></label>\n' + + ' <div class="col-sm-8" style="margin-top: 6px;">\n' + + ' <input type="checkbox" name="week" value="1"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 1){ + hh += 'checked'; + } + } + hh += '/> 周一 ' + + ' <input type="checkbox" name="week" value="2"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 2){ + hh += 'checked'; + } + } + hh += '/> 周二 ' + + ' <input type="checkbox" name="week" value="3"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 3){ + hh += 'checked'; + } + } + hh += '/> 周三 ' + + ' <input type="checkbox" name="week" value="4"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 4){ + hh += 'checked'; + } + } + hh += '/> 周四 ' + + ' <input type="checkbox" name="week" value="5"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 5){ + hh += 'checked'; + } + } + hh += '/> 周五 ' + + ' <input type="checkbox" name="week" value="6"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 6){ + hh += 'checked'; + } + } + hh += '/> 周六 ' + + ' <input type="checkbox" name="week" value="7"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 7){ + hh += 'checked'; + } + } + hh += '/> 周日 ' + + ' </div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">*现金支付:</label>\n' + + ' <div class="col-sm-4">\n' + + ' <input type="number" min="0" value="' + jsonArray[j].cashPayment + '" onblur="addPriceValue(3, this, \'cashPayment\')" placeholder="请输入折扣后支付价格" style="width: 180px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> ¥\n' + + ' </div>\n' + + ' </div>' + + ' </div>' + + ' </div>'; + } + + } + } + $('#limitedTimeDiscount').html(hh); + if(data_value){ + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount.push({ + type: 3, + content: [] + }) + } + }else if(!this.checked && v == '3'){ + $('#limitedTimeDiscount').html(''); + let datas = CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount; + let arra = []; + for (let i = 0; i < datas.length; i++){ + if(datas[i].type == v){ + continue; + } + arra.push(datas[i]); + } + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount = arra; + } + if(this.checked && v == '4'){ + let data_value = true; + let hh = + '<div class="hr-line-dashed"></div>' + + '<span style="font-size: 16px;font-weight: 500;">赠送课时</span> <i class="fa fa-plus-circle" style="font-size:24px" onclick="addPrice(4)"></i>\n'; + let obje = CoursePackageDiscount.coursePackagePaymentConfig[index]; + for (let i = 0; i < obje.coursePackageDiscount.length; i++) { + if (v == obje.coursePackageDiscount[i].type) { + data_value = false; + let jsonArray = null; + if(typeof obje.coursePackageDiscount[i].content == "string"){ + jsonArray = JSON.parse(obje.coursePackageDiscount[i].content); + }else{ + jsonArray = obje.coursePackageDiscount[i].content; + } + for (let j = 0; j < jsonArray.length; j++) { + hh += + ' <div class="form-group complimentaryClass" index="' + j + '">' + + ' <div class="col-sm-2"></div>\n' + + ' <div class="col-sm-8" style="border: 1px solid; padding: 20px;">\n' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">*赠送有效期:</label>\n' + + ' <div class="col-sm-9">\n' + + ' <input class="startAndEndDay" value="' + (jsonArray[j].startDate + " - " + jsonArray[j].endDate) + '" style="width: 300px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/>' + + ' </div>\n' + + ' <div class="col-sm-1"><i class="fa fa-trash-o" style="font-size:24px;color: red;" onclick="removePrice(4, this)"></i></div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">*赠送时间:</label>\n' + + ' <div class="col-sm-5">\n' + + ' <input class="time" value="' + jsonArray[j].startTime + " - " + jsonArray[j].endTime + '" style="width: 200px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/>\n' + + ' </div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label"></label>\n' + + ' <div class="col-sm-8" style="margin-top: 6px;">\n' + + ' <input type="checkbox" name="week" value="1"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 1){ + hh += 'checked'; + } + } + hh += '/> 周一 ' + + ' <input type="checkbox" name="week" value="2"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 2){ + hh += 'checked'; + } + } + hh += '/> 周二 ' + + ' <input type="checkbox" name="week" value="3"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 3){ + hh += 'checked'; + } + } + hh += '/> 周三 ' + + ' <input type="checkbox" name="week" value="4"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 4){ + hh += 'checked'; + } + } + hh += '/> 周四 ' + + ' <input type="checkbox" name="week" value="5"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 5){ + hh += 'checked'; + } + } + hh += '/> 周五 ' + + ' <input type="checkbox" name="week" value="6"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 6){ + hh += 'checked'; + } + } + hh += '/> 周六 ' + + ' <input type="checkbox" name="week" value="7"'; + for (let k = 0; k < jsonArray[j].weeks.length; k++) { + let w = jsonArray[j].weeks[k]; + if(w == 7){ + hh += 'checked'; + } + } + hh += '/> 周日 ' + + ' </div>\n' + + ' </div>' + + ' <div class="form-group">\n' + + ' <label class="col-sm-2 control-label">*赠送课时数:</label>\n' + + ' <div class="col-sm-4">\n' + + ' <input type="number" value="' + jsonArray[j].hour + '" onblur="addPriceValue(4, this, \'hour\')" min="0" placeholder="请输入赠送课时数" style="width: 180px;background-color: #FFFFFF;background-image: none;border: 1px solid #e5e6e7;border-radius: 1px;color: inherit;padding: 6px 12px;"/> ¥\n' + + ' </div>\n' + + ' </div>' + + ' </div>' + + ' </div>'; + } + } + } + $('#complimentaryClass').html(hh); + if(data_value){ + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount.push({ + type: 4, + content: [] + }) + } + }else if(!this.checked && v == '4'){ + $('#complimentaryClass').html(''); + let datas = CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount; + let arra = []; + for (let i = 0; i < datas.length; i++){ + if(datas[i].type == v){ + continue; + } + arra.push(datas[i]); + } + CoursePackageDiscount.coursePackagePaymentConfig[index].coursePackageDiscount = arra; + } + }) + + + selectedPperiod(); +}); diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tCity_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tCity_info.js new file mode 100644 index 0000000..8360403 --- /dev/null +++ b/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tCity_info.js @@ -0,0 +1,320 @@ +/** + * 初始化车辆管理详情对话框 + */ +var language=1; +var TCarInfoDlg = { + tCarInfoData : {}, + validateFields: { + } +}; + +/** + * 验证数据是否为空 + */ +TCarInfoDlg.validate = function () { + $('#carInfoForm').data("bootstrapValidator").resetForm(); + $('#carInfoForm').bootstrapValidator('validate'); + return $("#carInfoForm").data('bootstrapValidator').isValid(); +}; + +/** + * 清除数据 + */ +TCarInfoDlg.clearData = function() { + this.tCarInfoData = {}; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TCarInfoDlg.set = function(key, val) { + this.tCarInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; + return this; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TCarInfoDlg.get = function(key) { + return $("#" + key).val(); +} + +/** + * 关闭此对话框 + */ +TCarInfoDlg.close = function() { + parent.layer.close(window.parent.TCompetition.layerIndex); +} + +/** + * 收集数据 + */ +TCarInfoDlg.collectData = function() { + this + .set('id') + .set('isPlatCar') + .set('companyId') + .set('franchiseeId') + .set('carColor') + .set('carModelId') + .set('carBrandId') + .set('carLicensePlate') + .set('carPhoto') + .set('drivingLicenseNumber') + .set('drivingLicensePhoto') + .set('annualInspectionTime') + .set('commercialInsuranceTime') + .set('createTime') + .set('state') + .set('addType') + .set('addObjectId') + .set('plateColor') + .set('vehicleType') + .set('ownerName') + .set('engineId') + .set('VIN') + .set('certifyDateA') + .set('fuelType') + .set('engineDisplace') + .set('certificate') + .set('transAgency') + .set('transArea') + .set('transDateStart') + .set('transDateStop') + .set('certifyDateB') + .set('fixState') + .set('nextFixDate') + .set('checkState') + .set('feePrintId') + .set('GPSBrand') + .set('GPSModel') + .set('GPSIMEI') + .set('GPSInstallDate') + .set('registerDate') + .set('commercialType'); +} + +/** + * 提交添加 + */ +TCarInfoDlg.addSubmit = function() { + + this.clearData(); + this.collectData(); + if(!this.validate()){ + return ; + } + + let pCode = $("#pCode").val() + let cCode = $("#cCode").val() + let name = $("#name").val() + let phone = $("#phone").val() + + if(pCode==''){ + Feng.info("请选择省") + return; + } + if(cCode==''){ + Feng.info("请选择市") + return; + } + if(name==''){ + Feng.info("管理员姓名不能为空") + return; + } + if(phone==''){ + Feng.info("管理员手机号不能为空") + return; + } + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tCity/add", function(data){ + if(data=="5001"){ + Feng.error("改账号已经存在"); + }else + if(data.code == 200){ + if(language==1){ + Feng.success("添加成功!"); + }else if(language==2){ + Feng.success("Successfully added!"); + }else { + Feng.success("Sangat berhasil ditambah!"); + } + window.parent.TCompetition.table.refresh(); + TCarInfoDlg.close(); + }else{ + Feng.error(data.msg); + } + + },function(data){ + Feng.error("添加失败!" + data.responseJSON.message + "!"); + }); + ajax.set(this.tCarInfoData); + ajax.set("provinceCode",pCode); + ajax.set("cityCode",cCode); + ajax.set("name",name); + ajax.set("phone",phone); + ajax.start(); +} + +/** + * 提交修改 + */ +TCarInfoDlg.editSubmit = function() { + + this.clearData(); + this.collectData(); + if(!this.validate()){ + return ; + } + let pCode = $("#pCode").val() + let cCode = $("#cCode").val() + let name = $("#name").val() + let phone = $("#phone").val() + + if(pCode==''){ + Feng.info("请选择省") + return; + } + if(cCode==''){ + Feng.info("请选择市") + return; + } + if(name==''){ + Feng.info("管理员姓名不能为空") + return; + } + if(phone==''){ + Feng.info("管理员手机号不能为空") + return; + } + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tCity/update", function(data){ + if(data=="5001"){ + Feng.error("改账号已经存在"); + }else + if(data.code == 200){ + if(language==1){ + Feng.success("修改成功!"); + }else if(language==2){ + Feng.success("Modify successfully!"); + }else { + Feng.success("Mengubah dengan sukses!"); + } + window.parent.TCompetition.table.refresh(); + TCarInfoDlg.close(); + }else{ + Feng.error(data.msg); + } + },function(data){ + Feng.error("修改失败!" + data.responseJSON.message + "!"); + }); + ajax.set("provinceCode",pCode); + ajax.set("cityCode",cCode); + ajax.set("name",name); + ajax.set("phone",phone); + ajax.set("id",$("#id").val()); + ajax.start(); +} + +$(function() { + Feng.initValidator("carInfoForm", TCarInfoDlg.validateFields); + // 初始化图片上传 + var carPhoto = new $WebUpload("carPhoto"); + carPhoto.setUploadBarId("progressBar"); + carPhoto.init(); + var drivingLicensePhoto = new $WebUpload("drivingLicensePhoto"); + drivingLicensePhoto.setUploadBarId("progressBar"); + drivingLicensePhoto.init(); +}); + +/** + * 选择分公司后执行 + */ +TCarInfoDlg.oneChange = function (e) { + var oneId=$(e).val(); + var ajax = new $ax(Feng.ctxPath + "/tCity/onChange", function(data){ + if(data!=null){ + if(language==1){ + var content='<option value="">选择市</option>'; + }else if(language==2){ + var content='<option value="">Choose your franchisee</option>'; + }else { + var content='<option value="">Pilih franchisee Anda</option>'; + } + $.each(data, function(k,v) { + content += "<option value='"+v.code+"'>"+v.name+"</option>"; + }); + $("#cCode").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +} + +/** + * 类型改变执行 + * @param e + */ +TCarInfoDlg.companyTypeClick = function (e) { + if (1 == e){ + $(".companyDiv").hide(); + } else if (2 == e){ + $(".companyDiv").show(); + } +} + +/** + * 车辆品牌改变时执行 + */ +TCarInfoDlg.brandChange = function (e) { + var carBrandId=$(e).val(); + var ajax = new $ax(Feng.ctxPath + "/tCar/brandChange", function(data){ + if(data!=null){ + if(language==1){ + var content='<option value="">选择车辆类型</option>'; + }else if(language==2){ + var content='<option value="">Please select the vehicle type</option>'; + }else { + var content='<option value="">Pilih Jenis Kendaraan</option>'; + } + + $.each(data, function(k,v) { + content += "<option value='"+v.id+"'>"+v.name+"</option>"; + }); + $("#carModelId").empty().append(content); + } + }); + ajax.set("carBrandId",carBrandId); + ajax.start(); +} + +/** + * 专车服务被点击 + */ +TCarInfoDlg.zcServerClick = function () { + var serverBox1 = $('#serverBox1').prop('checked'); + if (serverBox1){ + $("#zcModelDiv").show(); + } else { + $("#zcModelDiv").hide(); + } +} + +/** + * 跨城服务被点击 + */ +TCarInfoDlg.kcServerClick = function () { + var serverBox3 = $('#serverBox3').prop('checked'); + if (serverBox3){ + $("#kcModelDiv").show(); + } else { + $("#kcModelDiv").hide(); + } +} diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount.js b/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount.js new file mode 100644 index 0000000..d475168 --- /dev/null +++ b/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount.js @@ -0,0 +1,433 @@ +/** + * 车辆管理管理初始化 + */ +var TCompetition = { + id: "TCompetitionTable", //表格id + seItem: null, //选中的条目 + table: null, + layerIndex: -1 +}; +var language =1 +/** + * 初始化表格的列 + */ +TCompetition.initColumn = function () { + return [ + {field: 'selectItem', radio: true}, + {title: '所在省', field: 'pname', visible: true, align: 'center', valign: 'middle' + }, + {title: '所在市', field: 'cname', visible: true, align: 'center', valign: 'middle'}, + {title: '所属门店', field: 'shopName', visible: true, align: 'center', valign: 'middle' + }, + {title: '课包名称', field: 'name', visible: true, align: 'center', valign: 'middle' + }, + {title: '折扣类型', field: 'type', visible: true, align: 'center', valign: 'middle' + ,formatter:function (data) { + return{1:"会员折扣",3:"限时折扣",4:"赠送课时"}[data] + } + }, + {title: '状态', field: 'status', visible: true, align: 'center', valign: 'middle' + ,formatter:function (data) { + return{1:"待审核",3:"未通过"}[data] + } + }, + ]; +}; +function currentTime(timestamp){ + var time = timestamp + ''; + if(time.length != 13){ + timestamp = timestamp * 1000; + } + var date = new Date(timestamp);; + var Y = date.getFullYear() + '-'; + var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; + var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' '; + + var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':'; + var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':'; + var s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds()); + var strDate = Y + M + D + h + m + s; + return strDate +} + +function currentTime1(timestamp){ + var time = timestamp + ''; + if(time.length != 13){ + timestamp = timestamp * 1000; + } + var date = new Date(timestamp);; + var Y = date.getFullYear() + '-'; + var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; + var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' '; + + var h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':'; + var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':'; + var s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds()); + var strDate = Y + M + D ; + return strDate +} +/** + * 检查是否选中 + */ +TCompetition.check = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if(selected.length == 0){ + Feng.info("请先选中表格中的某一记录!"); + return false; + }else{ + TCompetition.seItem = selected[0]; + return true; + } +}; + +/** + * 点击添加车辆管理 + */ +TCompetition.openAddTCompetition = function () { + var index = layer.open({ + type: 2, + title: '添加', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tCity/tCity_add' + }); + this.layerIndex = index; +}; + +/** + * 打开查看车辆管理详情 + */ +TCompetition.openTCompetitionDetail = function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title:'编辑', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tCity/tCity_update/' + TCompetition.seItem.id + }); + this.layerIndex = index; + } +}; + +/** + * 删除车辆管理 + */ +TCompetition.updateState = function (e) { + if (this.check()) { + var id = TCompetition.seItem.id; + var ajax = new $ax(Feng.ctxPath + "/TDiscount/updateState", function (data) { + if(data.code==200){ + Feng.success("操作成功") + }else { + Feng.error("操作失败") + } + TCompetition.table.refresh(); + }, function (data) { + Feng.error("操作失败") + TCompetition.table.refresh(); + }); + ajax.set("id",id); + ajax.set("status",e); + ajax.start(); + ; + } +}; +TCompetition.oneChange = function (e) { + console.log(111) + var oneId=$(e).val(); + var ajax = new $ax(Feng.ctxPath + "/tCompetition/onChange", function(data){ + if(data!=null){ + if(language==1){ + var content='<option value="">选择市</option>'; + }else if(language==2){ + var content='<option value="">Choose your franchisee</option>'; + }else { + var content='<option value="">Pilih franchisee Anda</option>'; + } + $.each(data, function(k,v) { + content += "<option value='"+v.code+"'>"+v.name+"</option>"; + }); + $("#cCode").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +} + +TCompetition.freeze = function () { + if (this.check()) { + var ajax = new $ax(Feng.ctxPath + "/tCity/freeze", function (data) { + Feng.success("冻结成功!"); + TCompetition.table.refresh(); + }, function (data) { + Feng.error("冻结失败!" + data.responseJSON.message + "!"); + }); + ajax.set("id",this.seItem.id); + ajax.start(); + } +}; +TCompetition.audit = function () { + if (this.check()) { + var index = layer.load(1,{ + type: 1 + , title: '折扣审核' + , area: ['50%', '50%'] + , offset: 'auto' //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset + , id: 'layerDemo' //防止重复弹出cge + , content: '<div class="form-horizontal">' + + ' <div class="col-sm-11" >' + + ' <div class="col-sm-11">' + + ' <div class="form-group">\n' + + ' <label class="col-sm-3 control-label">审核状态:</label>\n' + + ' <div class="col-sm-9">\n' + + ' <input type="radio" name="r1" value="2" checked> 通过 <input type="radio" name="r1" value="3" > 拒绝 '+ + ' </div>\n' + + ' </div>\n' + + ' <div class="form-group">\n' + + ' <label class="col-sm-3 control-label">拒绝理由:</label>\n' + + ' <div class="col-sm-9">\n' + + ' <textarea id="text" style="width: 460px; height: 138px;"></textarea> '+ + ' </div>\n' + + ' </div>\n' + + ' </div>' + + ' </div>' + + '</div>' + , btn: ['关闭', '保存'] + , btnAlign: 'c' //按钮居中 + , shade: 0.5 //不显示遮罩 + ,load:1 + , yes: function () { + layer.closeAll(); + }, + btn2:function () { + let audit = document.querySelector('input[name="r1"]:checked').value; + let text = $("#text").val() + if(audit==3){ + if(text==''){ + Feng.info("请输入拒绝理由") + return false; + } + } + var ajax = new $ax(Feng.ctxPath + "/tDiscount/auditDiscount", function (data) { + if (data.code == 200) { + Feng.success("操作成功!"); + window.location.reload(); + window.parent.layer.closeAll(); + } else if(data=="repeat"){ + window.location.reload(); + window.parent.layer.closeAll(); + Feng.error("请勿重复操作"); + }else { + return Feng.error(data.msg); + } + }, function (data) { + Feng.error("操作失败!") + window.location.reload(); + window.parent.layer.closeAll(); + return Feng.error("操作失败!"); + }); + ajax.set("id", TCompetition.seItem.id); + ajax.set("audit", audit); + ajax.set("text", text); + ajax.start(); + layer.closeAll(); + } + }); + + this.layerIndex = index; + } +}; +TCompetition.unfreeze = function () { + if (this.check()) { + var ajax = new $ax(Feng.ctxPath + "/tCity/unfreeze", function (data) { + Feng.success("解冻成功!"); + TCompetition.table.refresh(); + }, function (data) { + Feng.error("解冻失败!" + data.responseJSON.message + "!"); + }); + ajax.set("id",this.seItem.id); + ajax.start(); + } +}; +TCompetition.info = function () { + console.log(111) + if (this.check()) { + let index = layer.open({ + type: 2, + title: '折扣详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tDiscount/infoOne?id=' + this.seItem.id + }); + this.layerIndex = index; + } +}; +TCompetition.reload = function () { + if (this.check()) { + let id = this.seItem.id + var operation = function(){ + var ajax = new $ax(Feng.ctxPath + "/tCity/pwd", function (data) { + Feng.success("重置成功!"); + TCompetition.table.refresh(); + }, function (data) { + Feng.error("重置失败!" + data.responseJSON.message + "!"); + }); + ajax.set("id",id); + ajax.start(); + } + Feng.confirm("确认重置密码?重置后密码为:a123456", operation); + } + +}; + +TCompetition.carInsurance = function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title: language==1?'车辆保险':(language==2?'Vehicle insurance':'Asuransi kendaraan'), + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/TCompetition/carInsurance?carId=' + TCompetition.seItem.id + }); + this.layerIndex = index; + } +}; + + + +/** + * 查询车辆管理列表 + */ +TCompetition.search = function () { + var queryData = {}; + queryData['provinceCode'] = $("#pCode").val(); + queryData['cityCode'] = $("#cCode").val(); + queryData['name'] = $("#name").val(); + queryData['shopName'] = $("#shopName").val(); + queryData['type'] = $("type").val(); + TCompetition.table.refresh({query: queryData}); +}; + +TCompetition.resetSearch = function () { + $("#pCode").val(""); + $("#cCode").val(""); + $("#name").val(""); + $("#type").val(""); + $("#shopName").val(""); + TCompetition.search(); +}; + +$(function () { + var defaultColunms = TCompetition.initColumn(); + var table = new BSTable(TCompetition.id, "/tDiscount/listAudit", defaultColunms); + table.setPaginationType("server"); + TCompetition.table = table.init(); +}); + +/** + * 下载模板 + */ +TCompetition.uploadCarModel = function () { + window.location.href = Feng.ctxPath + "/TCompetition/uploadCarModel"; +} + +var agreement = function(){ + this.init = function(){ + //模拟上传excel + $("#uploadEventBtn").unbind("click").bind("click",function(){ + $("#uploadEventFile").click(); + }); + }; +} +/** + * 导入合同 + */ +TCompetition.exporTCompetition = function () { + var uploadEventFile = $("#uploadEventFile").val(); + if(uploadEventFile == ''){ + if(language==1){ + Feng.info("请选择Excel,再上传"); + }else if(language==2){ + Feng.info("Please select Excel and upload"); + }else { + Feng.info("Silakan pilih Excel dan upload"); + } + }else if(uploadEventFile.lastIndexOf(".xls")<0){//可判断以.xls和.xlsx结尾的excel + if(language==1){ + Feng.info("只能上传Excel文件"); + }else if(language==2){ + Feng.info("Only Excel files can be uploaded"); + }else { + Feng.info("Hanya berkas Excel yang dapat diunggah"); + } + }else{ + var url = Feng.ctxPath + '/TCompetition/exporTCompetition'; + var file = document.querySelector('input[name=file]').files[0]; + var reader = new FileReader(); + if (file) { + var formData = new FormData(); + formData.append("myfile", file); + this.sendAjaxRequest(url, 'POST', formData); + } + } +} +TCompetition.sendAjaxRequest = function(url,type,data){ + $.ajax({ + url : url, + type : type, + data : data, + success : function(result) { + if(result.code==500) { + Feng.info(result.message); + }else { + if(language==1){ + Feng.success("导入成功!"); + }else if(language==2){ + Feng.success("SUCCESSFUL IMPORT!"); + }else { + Feng.success("Import berhasil!"); + } + } + TCompetition.table.refresh(); + }, + error : function() { + if(language==1){ + Feng.error("excel上传失败!"); + }else if(language==2){ + Feng.error("Uploading excel Fails. Procedure!"); + }else { + Feng.error("Gagal mengunggah excel!"); + } + }, + cache : false, + contentType : false, + processData : false + }); +}; + +var agreement; +$(function(){ + agreement = new agreement(); + agreement.init(); +}); + +/** + * 导出车辆操作 + */ +TCompetition.ouTCompetition = function () { + var operation = function() { + window.location.href = Feng.ctxPath + "/TCompetition/ouTCompetition"; + }; + if(language==1){ + Feng.confirm("是否确认导出车辆信息?", operation); + }else if(language==2){ + Feng.confirm("Are you sure to export vehicle information?", operation); + }else { + Feng.confirm("Apakah Anda pasti akan mengekspor informasi kendaraan?", operation); + } +} \ No newline at end of file diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount_info.js new file mode 100644 index 0000000..8360403 --- /dev/null +++ b/cloud-server-management/src/main/webapp/static/modular/system/tDiscountAudit/tDiscount_info.js @@ -0,0 +1,320 @@ +/** + * 初始化车辆管理详情对话框 + */ +var language=1; +var TCarInfoDlg = { + tCarInfoData : {}, + validateFields: { + } +}; + +/** + * 验证数据是否为空 + */ +TCarInfoDlg.validate = function () { + $('#carInfoForm').data("bootstrapValidator").resetForm(); + $('#carInfoForm').bootstrapValidator('validate'); + return $("#carInfoForm").data('bootstrapValidator').isValid(); +}; + +/** + * 清除数据 + */ +TCarInfoDlg.clearData = function() { + this.tCarInfoData = {}; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TCarInfoDlg.set = function(key, val) { + this.tCarInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; + return this; +} + +/** + * 设置对话框中的数据 + * + * @param key 数据的名称 + * @param val 数据的具体值 + */ +TCarInfoDlg.get = function(key) { + return $("#" + key).val(); +} + +/** + * 关闭此对话框 + */ +TCarInfoDlg.close = function() { + parent.layer.close(window.parent.TCompetition.layerIndex); +} + +/** + * 收集数据 + */ +TCarInfoDlg.collectData = function() { + this + .set('id') + .set('isPlatCar') + .set('companyId') + .set('franchiseeId') + .set('carColor') + .set('carModelId') + .set('carBrandId') + .set('carLicensePlate') + .set('carPhoto') + .set('drivingLicenseNumber') + .set('drivingLicensePhoto') + .set('annualInspectionTime') + .set('commercialInsuranceTime') + .set('createTime') + .set('state') + .set('addType') + .set('addObjectId') + .set('plateColor') + .set('vehicleType') + .set('ownerName') + .set('engineId') + .set('VIN') + .set('certifyDateA') + .set('fuelType') + .set('engineDisplace') + .set('certificate') + .set('transAgency') + .set('transArea') + .set('transDateStart') + .set('transDateStop') + .set('certifyDateB') + .set('fixState') + .set('nextFixDate') + .set('checkState') + .set('feePrintId') + .set('GPSBrand') + .set('GPSModel') + .set('GPSIMEI') + .set('GPSInstallDate') + .set('registerDate') + .set('commercialType'); +} + +/** + * 提交添加 + */ +TCarInfoDlg.addSubmit = function() { + + this.clearData(); + this.collectData(); + if(!this.validate()){ + return ; + } + + let pCode = $("#pCode").val() + let cCode = $("#cCode").val() + let name = $("#name").val() + let phone = $("#phone").val() + + if(pCode==''){ + Feng.info("请选择省") + return; + } + if(cCode==''){ + Feng.info("请选择市") + return; + } + if(name==''){ + Feng.info("管理员姓名不能为空") + return; + } + if(phone==''){ + Feng.info("管理员手机号不能为空") + return; + } + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tCity/add", function(data){ + if(data=="5001"){ + Feng.error("改账号已经存在"); + }else + if(data.code == 200){ + if(language==1){ + Feng.success("添加成功!"); + }else if(language==2){ + Feng.success("Successfully added!"); + }else { + Feng.success("Sangat berhasil ditambah!"); + } + window.parent.TCompetition.table.refresh(); + TCarInfoDlg.close(); + }else{ + Feng.error(data.msg); + } + + },function(data){ + Feng.error("添加失败!" + data.responseJSON.message + "!"); + }); + ajax.set(this.tCarInfoData); + ajax.set("provinceCode",pCode); + ajax.set("cityCode",cCode); + ajax.set("name",name); + ajax.set("phone",phone); + ajax.start(); +} + +/** + * 提交修改 + */ +TCarInfoDlg.editSubmit = function() { + + this.clearData(); + this.collectData(); + if(!this.validate()){ + return ; + } + let pCode = $("#pCode").val() + let cCode = $("#cCode").val() + let name = $("#name").val() + let phone = $("#phone").val() + + if(pCode==''){ + Feng.info("请选择省") + return; + } + if(cCode==''){ + Feng.info("请选择市") + return; + } + if(name==''){ + Feng.info("管理员姓名不能为空") + return; + } + if(phone==''){ + Feng.info("管理员手机号不能为空") + return; + } + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tCity/update", function(data){ + if(data=="5001"){ + Feng.error("改账号已经存在"); + }else + if(data.code == 200){ + if(language==1){ + Feng.success("修改成功!"); + }else if(language==2){ + Feng.success("Modify successfully!"); + }else { + Feng.success("Mengubah dengan sukses!"); + } + window.parent.TCompetition.table.refresh(); + TCarInfoDlg.close(); + }else{ + Feng.error(data.msg); + } + },function(data){ + Feng.error("修改失败!" + data.responseJSON.message + "!"); + }); + ajax.set("provinceCode",pCode); + ajax.set("cityCode",cCode); + ajax.set("name",name); + ajax.set("phone",phone); + ajax.set("id",$("#id").val()); + ajax.start(); +} + +$(function() { + Feng.initValidator("carInfoForm", TCarInfoDlg.validateFields); + // 初始化图片上传 + var carPhoto = new $WebUpload("carPhoto"); + carPhoto.setUploadBarId("progressBar"); + carPhoto.init(); + var drivingLicensePhoto = new $WebUpload("drivingLicensePhoto"); + drivingLicensePhoto.setUploadBarId("progressBar"); + drivingLicensePhoto.init(); +}); + +/** + * 选择分公司后执行 + */ +TCarInfoDlg.oneChange = function (e) { + var oneId=$(e).val(); + var ajax = new $ax(Feng.ctxPath + "/tCity/onChange", function(data){ + if(data!=null){ + if(language==1){ + var content='<option value="">选择市</option>'; + }else if(language==2){ + var content='<option value="">Choose your franchisee</option>'; + }else { + var content='<option value="">Pilih franchisee Anda</option>'; + } + $.each(data, function(k,v) { + content += "<option value='"+v.code+"'>"+v.name+"</option>"; + }); + $("#cCode").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +} + +/** + * 类型改变执行 + * @param e + */ +TCarInfoDlg.companyTypeClick = function (e) { + if (1 == e){ + $(".companyDiv").hide(); + } else if (2 == e){ + $(".companyDiv").show(); + } +} + +/** + * 车辆品牌改变时执行 + */ +TCarInfoDlg.brandChange = function (e) { + var carBrandId=$(e).val(); + var ajax = new $ax(Feng.ctxPath + "/tCar/brandChange", function(data){ + if(data!=null){ + if(language==1){ + var content='<option value="">选择车辆类型</option>'; + }else if(language==2){ + var content='<option value="">Please select the vehicle type</option>'; + }else { + var content='<option value="">Pilih Jenis Kendaraan</option>'; + } + + $.each(data, function(k,v) { + content += "<option value='"+v.id+"'>"+v.name+"</option>"; + }); + $("#carModelId").empty().append(content); + } + }); + ajax.set("carBrandId",carBrandId); + ajax.start(); +} + +/** + * 专车服务被点击 + */ +TCarInfoDlg.zcServerClick = function () { + var serverBox1 = $('#serverBox1').prop('checked'); + if (serverBox1){ + $("#zcModelDiv").show(); + } else { + $("#zcModelDiv").hide(); + } +} + +/** + * 跨城服务被点击 + */ +TCarInfoDlg.kcServerClick = function () { + var serverBox3 = $('#serverBox3').prop('checked'); + if (serverBox3){ + $("#kcModelDiv").show(); + } else { + $("#kcModelDiv").hide(); + } +} diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods.js b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods.js index f323923..f75a56d 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods.js @@ -130,11 +130,11 @@ if (this.check()) { var index = layer.open({ type: 2, - title:'编辑', + title:'详情', area: ['100%', '100%'], //宽高 fix: false, //不固定 maxmin: true, - content: Feng.ctxPath + '/tGoods/tCity_update/' + TPointProducts.seItem.id + content: Feng.ctxPath + '/tGoods/goods_info/' + TPointProducts.seItem.id }); this.layerIndex = index; } diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js index aff59ba..8e79b8b 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tGoods_info.js @@ -2,11 +2,12 @@ * 初始化车辆管理详情对话框 */ var language=1; -var TCarInfoDlg = { - tCarInfoData : {}, +var TGoodsInfoDlg = { + tGoodsInfoData : {}, validateFields: { }, goodsPicArray:[], + goodsPicArray1:[], storeIds: [], }; @@ -14,7 +15,7 @@ /** * 验证数据是否为空 */ -TCarInfoDlg.validate = function () { +TGoodsInfoDlg.validate = function () { $('#carInfoForm').data("bootstrapValidator").resetForm(); $('#carInfoForm').bootstrapValidator('validate'); return $("#carInfoForm").data('bootstrapValidator').isValid(); @@ -23,8 +24,8 @@ /** * 清除数据 */ -TCarInfoDlg.clearData = function() { - this.tCarInfoData = {}; +TGoodsInfoDlg.clearData = function() { + this.tGoodsInfoData = {}; } /** @@ -33,8 +34,8 @@ * @param key 数据的名称 * @param val 数据的具体值 */ -TCarInfoDlg.set = function(key, val) { - this.tCarInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; +TGoodsInfoDlg.set = function(key, val) { + this.tGoodsInfoData[key] = (typeof val == "undefined") ? $("#" + key).val() : val; return this; } @@ -44,14 +45,14 @@ * @param key 数据的名称 * @param val 数据的具体值 */ -TCarInfoDlg.get = function(key) { +TGoodsInfoDlg.get = function(key) { return $("#" + key).val(); } /** * 关闭此对话框 */ -TCarInfoDlg.close = function() { +TGoodsInfoDlg.close = function() { parent.layer.close(window.parent.TPointProducts.layerIndex); } @@ -59,7 +60,7 @@ /** * 收集数据 */ -TCarInfoDlg.collectData = function() { +TGoodsInfoDlg.collectData = function() { this .set('id') .set('isPlatCar') @@ -114,7 +115,7 @@ }); this.layerIndex = index; } -TCarInfoDlg.selecUserOpt = function (arrays){ +TGoodsInfoDlg.selecUserOpt = function (arrays){ console.log(arrays) //获取所有的值 var subArr= this.storeIds; @@ -145,15 +146,15 @@ console.log(e); var row = $(e).closest('tr'); var value = row.find('#id').val(); - TCarInfoDlg.storeIds.splice(TCarInfoDlg.storeIds.indexOf(parseInt(value)), 1) + TGoodsInfoDlg.storeIds.splice(TGoodsInfoDlg.storeIds.indexOf(parseInt(value)), 1) $(e).parent().parent().remove(); - console.log('storeIds',TCarInfoDlg.storeIds) + console.log('storeIds',TGoodsInfoDlg.storeIds) } -TCarInfoDlg.delete = function (o) { +TGoodsInfoDlg.delete = function (o) { $(o).parent("div").remove() } var num = 0; -TCarInfoDlg.addBranch = function () { +TGoodsInfoDlg.addBranch = function () { num=num+1; var a= ""; a = "<div style=\'margin-left: 25%\' class=\"col-sm-9 control-label\">\n" + @@ -165,7 +166,7 @@ " <option value=\"\">请选择</option>\n" + " </select>\n" + " <label class=\"col-sm-1\" style=\"width: 7%;margin-top: 7px\">市</label>\n" + - " <label name=\"addBranch\" class=\"col-sm-1\" onclick=\"TCarInfoDlg.delete(this)\" style=\"border: 0px;cursor: pointer;margin-top: 1%\"><i class=\"fa fa-trash\"></i></label>"+ + " <label name=\"addBranch\" class=\"col-sm-1\" onclick=\"TGoodsInfoDlg.delete(this)\" style=\"border: 0px;cursor: pointer;margin-top: 1%\"><i class=\"fa fa-trash\"></i></label>"+ " </div>"; $("#cityDemo").append($(a)); getProvince(num); @@ -229,129 +230,418 @@ /** * 提交添加 */ -TCarInfoDlg.addSubmit = function() { +TGoodsInfoDlg.addSubmit = function() { this.clearData(); this.collectData(); if(!this.validate()){ return ; } - - let pCode = $("#pCode").val() - let cCode = $("#cCode").val() - let name = $("#name").val() - let phone = $("#phone").val() - - if(pCode==''){ - Feng.info("请选择省") - return; - } - if(cCode==''){ - Feng.info("请选择市") - return; - } - if(name==''){ - Feng.info("管理员姓名不能为空") - return; - } - if(phone==''){ - Feng.info("管理员手机号不能为空") - return; - } - - //提交信息 - var ajax = new $ax(Feng.ctxPath + "/tCity/add", function(data){ - if(data=="5001"){ - Feng.error("改账号已经存在"); - }else - if(data.code == 200){ - if(language==1){ - Feng.success("添加成功!"); - }else if(language==2){ - Feng.success("Successfully added!"); - }else { - Feng.success("Sangat berhasil ditambah!"); + let typeAll = document.querySelector('input[name="type"]:checked').value; + if(typeAll==2){ + let pCode = $("#pCode").val() + let cCode = $("#cCode").val() + if(pCode==''){ + Feng.info("请选择省") + return; + } + if(cCode==''){ + Feng.info("请选择市") + return; + } + let storeId = $("#storeId").val() + if(storeId==''){ + Feng.info("请选择门店") + return; + } + let coursePackageTypeId = $("#coursePackageTypeId").val() + if(coursePackageTypeId==''){ + Feng.info("请选择课包类型") + return; + } + let coursePackageId = $("#coursePackageId").val() + if(coursePackageId==''){ + Feng.info("请选择课包") + return; + } + let coursePackageConfigId = $("#coursePackageConfigId").val() + if(coursePackageConfigId==''){ + Feng.info("请选择课时数") + return; + } + let price = $("#price1").val() + if(price==''){ + Feng.info("请填写原价") + return; + } + let type = document.querySelector('input[name="redemptionMethod"]:checked').value; + if(type==''){ + Feng.info("请选择兑换方式") + return; + } + let integral=''; + let cash=''; + if(type==1){ + integral = $("#integral1").val() + if(integral==''){ + Feng.info("请填写所需积分") + return; } - window.parent.TCompetition.table.refresh(); - TCarInfoDlg.close(); - }else{ - Feng.error(data.msg); + } + if(type==2){ + integral = $("#integral1").val() + if(integral==''){ + Feng.info("请填写所需积分") + return; + } + cash = $("#cash1").val() + if(cash==''){ + Feng.info("请填写所需现金") + return; + } } - },function(data){ - Feng.error("添加失败!" + data.responseJSON.message + "!"); - }); - ajax.set(this.tCarInfoData); - ajax.set("provinceCode",pCode); - ajax.set("cityCode",cCode); - ajax.set("name",name); - ajax.set("phone",phone); - ajax.start(); + let cover1 = $("#cover1").val() + // if(cover1==''){ + // Feng.info("请上传封面") + // return; + // } + var goodImgs = this.goodsPicArray1; + var imgOne =""; + if(goodImgs.length==0){ + }else { + for (let i = 0; i <goodImgs.length; i++) { + if(i==goodImgs.length-1){ + imgOne += (goodImgs[i].response) + }else { + imgOne+=(goodImgs[i].response+",") + } + } + } + + let userPopulation = document.querySelector('input[name="userPopulation"]:checked').value; + if(userPopulation==''){ + Feng.info("请选择用户人群") + return; + } + + let quantityIssued = $("#quantityIssued1").val() + if(quantityIssued==''){ + Feng.info("请填写发放数量") + return; + } + let pickUpQuantity = $("#pickUpQuantity1").val() + if(pickUpQuantity==''){ + Feng.info("请填写限领数量") + return; + } + let startTime = $("#startTime1").val() + if(startTime==''){ + Feng.info("请选择有效期") + return; + } + let text = TGoodsInfoDlg.editor1.getContent(); + console.log(text) + if(text==""){ + Feng.info("请输入兑换说明") + return; + } + + let sort = $("#sort1").val() + if(sort==''){ + Feng.info("请填写排序") + return; + } + + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tGoods/add", function(data){ + if(data=="5001"){ + Feng.error("改账号已经存在"); + }else + if(data.code == 200){ + if(language==1){ + Feng.success("添加成功!"); + }else if(language==2){ + Feng.success("Successfully added!"); + }else { + Feng.success("Sangat berhasil ditambah!"); + } + window.parent.TPointProducts.table.refresh(); + TGoodsInfoDlg.close(); + }else{ + Feng.error(data.msg); + } + },function(data){ + Feng.error("添加失败!" + data.responseJSON.message + "!"); + }); + ajax.set("typeAll",typeAll); + ajax.set("provinceCode",pCode); + ajax.set("cityCode",cCode); + ajax.set("storeId",storeId); + ajax.set("coursePackageTypeId",coursePackageTypeId); + ajax.set("coursePackageId",coursePackageId); + ajax.set("coursePackageConfigId",coursePackageConfigId); + ajax.set("price",price); + ajax.set("type",type); + ajax.set("integral",integral); + ajax.set("cash",cash); + ajax.set("cover",cover1); + ajax.set("imgOne",imgOne); + ajax.set("userPopulation",userPopulation); + ajax.set("quantityIssued",quantityIssued); + ajax.set("pickUpQuantity",pickUpQuantity); + ajax.set("startTime",startTime); + ajax.set("text",text); + ajax.set("sort",sort); + ajax.start(); + + }else { + let name = $("#name").val() + if(name==''){ + Feng.info("请填写商品名称") + return; + } + let price = $("#price").val() + if(price==''){ + Feng.info("请填写原价") + return; + } + let type = document.querySelector('input[name="redemptionMethod"]:checked').value; + if(type==''){ + Feng.info("请选择兑换方式") + return; + } + + let integral=''; + let cash=''; + if(type==1){ + integral = $("#integral").val() + if(integral==''){ + Feng.info("请填写所需积分") + return; + } + } + if(type==2){ + integral = $("#integral").val() + if(integral==''){ + Feng.info("请填写所需积分") + return; + } + cash = $("#cash").val() + if(cash==''){ + Feng.info("请填写所需现金") + return; + } + } + if(type==3){ + cash = $("#cash").val() + if(cash==''){ + Feng.info("请填写所需现金") + return; + } + } + + let cover1 = $("#cover").val() + var goodImgs = this.goodsPicArray; + var imgOne =""; + if(goodImgs.length==0){ + }else { + for (let i = 0; i <goodImgs.length; i++) { + if(i==goodImgs.length-1){ + imgOne += (goodImgs[i].response) + }else { + imgOne+=(goodImgs[i].response+",") + } + } + } + + let userPopulation = document.querySelector('input[name="userPopulation"]:checked').value; + if(userPopulation==''){ + Feng.info("请选择用户人群") + return; + } + + let quantityIssued = $("#quantityIssued").val() + if(quantityIssued==''){ + Feng.info("请填写发放数量") + return; + } + let pickUpQuantity = $("#pickUpQuantity").val() + if(pickUpQuantity==''){ + Feng.info("请填写限领数量") + return; + } + let startTime = $("#startTime").val() + if(startTime==''){ + Feng.info("请选择有效期") + return; + } + + let company = document.querySelector('input[name="company"]:checked').value; + + var cityIds = []; + var cts = ""; + if (company === '2'){ + var myselect=document.getElementById('cityData'); + var seCity = myselect.options[myselect.selectedIndex].value; + if (seCity === null || seCity === undefined || seCity === ''){ + return Feng.error('请选中一个省市'); + } + cityIds.push(seCity); + if (num > 0){ + for (let i = 1; i <= num; i++) { + var insSelect=document.getElementById('cityData'+i); + var inData = insSelect.options[insSelect.selectedIndex].value; + if (inData !== undefined || inData !== null || inData !== ''){ + cityIds.push(inData); + } + } + cts = cityIds.join(','); + }else { + cts = cityIds + } + } + + const commaSeparatedString = this.goodsPicArray.join(','); + + var stores = ""; + if (company === '3'){ + console.log('3---this.storeIds',this.storeIds); + if (TGoodsInfoDlg.storeIds.length === 0 ){ + return Feng.error('请至少选择一个门店'); + } + stores = this.storeIds.join(','); + console.log('stores--===--',stores) + } + + let text = TGoodsInfoDlg.editor.getContent(); + console.log(text) + if(text==""){ + Feng.info("请输入兑换说明") + return; + } + + let sort = $("#sort").val() + if(sort==''){ + Feng.info("请填写排序") + return; + } + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/tGoods/add", function(data){ + if(data=="5001"){ + Feng.error("改账号已经存在"); + }else + if(data.code == 200){ + if(language==1){ + Feng.success("添加成功!"); + }else if(language==2){ + Feng.success("Successfully added!"); + }else { + Feng.success("Sangat berhasil ditambah!"); + } + window.parent.TPointProducts.table.refresh(); + TGoodsInfoDlg.close(); + }else{ + Feng.error(data.msg); + } + + },function(data){ + Feng.error("添加失败!" + data.responseJSON.message + "!"); + }); + ajax.set("typeAll",typeAll); + ajax.set("name",name); + ajax.set("price",price); + ajax.set("type",type); + ajax.set("integral",integral); + ajax.set("cash",cash); + ajax.set("cover",cover1); + ajax.set("imgOne",imgOne); + ajax.set("userPopulation",userPopulation); + ajax.set("quantityIssued",quantityIssued); + ajax.set("pickUpQuantity",pickUpQuantity); + ajax.set("startTime",startTime); + ajax.set("useScope",company); + ajax.set("cityIds",cts); + ajax.set("storeIds",stores); + ajax.set("text",text); + ajax.set("sort",sort); + ajax.start(); + + } + + } + +/** + * 删除图片的函数 + * @param e + */ +function delImg(e){ + + $(e).parent().remove(); +} + /** * 提交修改 */ -TCarInfoDlg.editSubmit = function() { +TGoodsInfoDlg.editSubmit = function() { + let cover = $("#cover").val(); + let goodsId = $("#goodsId").val(); + var productImages = ""; + if (TGoodsInfoDlg.goodsPicArray.length > 0){ + productImages = TGoodsInfoDlg.goodsPicArray.join(','); + } + let quantityIssued = $("#quantityIssued").val(); + let pickUpQuantity = $("#pickUpQuantity").val(); + let editor = jQuery.trim(TGoodsInfoDlg.editor.getContent()); + console.log('editor:',editor) - this.clearData(); - this.collectData(); - if(!this.validate()){ - return ; - } - let pCode = $("#pCode").val() - let cCode = $("#cCode").val() - let name = $("#name").val() - let phone = $("#phone").val() + let sort = $("#sort").val(); - if(pCode==''){ - Feng.info("请选择省") - return; + if (quantityIssued === undefined || quantityIssued === null || quantityIssued === ''){ + return Feng.error('发放数量不能为空!'); } - if(cCode==''){ - Feng.info("请选择市") - return; + if (pickUpQuantity === undefined || pickUpQuantity === null || pickUpQuantity === ''){ + return Feng.error('限领数量不能为空!'); } - if(name==''){ - Feng.info("管理员姓名不能为空") - return; + let quantityHas = $("#quantityHas").val(); + if (quantityIssued <= quantityHas){ + return Feng.error('发放数量小于已领数量!'); } - if(phone==''){ - Feng.info("管理员手机号不能为空") - return; + + + if (editor === undefined || editor === null || editor === ''){ + return Feng.error('兑换说明不能为空!'); } + if (sort === undefined || sort === null || sort === ''){ + return Feng.error('排序不能为空!'); + } + //提交信息 - var ajax = new $ax(Feng.ctxPath + "/tCity/update", function(data){ - if(data=="5001"){ - Feng.error("改账号已经存在"); - }else - if(data.code == 200){ - if(language==1){ - Feng.success("修改成功!"); - }else if(language==2){ - Feng.success("Modify successfully!"); - }else { - Feng.success("Mengubah dengan sukses!"); - } - window.parent.TCompetition.table.refresh(); - TCarInfoDlg.close(); - }else{ - Feng.error(data.msg); - } + var ajax = new $ax(Feng.ctxPath + "/tGoods/update", function(data){ + Feng.success("修改成功!"); + window.parent.TPointProducts.table.refresh(); + TGoodsInfoDlg.close(); },function(data){ Feng.error("修改失败!" + data.responseJSON.message + "!"); }); - ajax.set("provinceCode",pCode); - ajax.set("cityCode",cCode); - ajax.set("name",name); - ajax.set("phone",phone); - ajax.set("id",$("#id").val()); + ajax.set("pointMerchandiseId",goodsId); + ajax.set("quantityIssued",quantityIssued); + ajax.set("pickUpQuantity",pickUpQuantity); + ajax.set("redemptionInstructions",editor); + ajax.set("cover",cover); + ajax.set("productImages",productImages); + ajax.set("sort",sort); ajax.start(); } $(function() { + getProvince(null); - Feng.initValidator("carInfoForm", TCarInfoDlg.validateFields); + Feng.initValidator("carInfoForm", TGoodsInfoDlg.validateFields); // 初始化图片上传 var carPhoto = new $WebUpload("cover"); carPhoto.setUploadBarId("progressBar"); @@ -359,13 +649,17 @@ var drivingLicensePhoto = new $WebUpload("drivingLicensePhoto"); drivingLicensePhoto.setUploadBarId("progressBar"); drivingLicensePhoto.init(); - TCarInfoDlg.editor = UE.getEditor('editor'); + var drivingLicensePhoto = new $WebUpload("drivingLicensePhoto"); + drivingLicensePhoto.setUploadBarId("progressBar"); + drivingLicensePhoto.init(); + TGoodsInfoDlg.editor = UE.getEditor('editor'); + TGoodsInfoDlg.editor1 = UE.getEditor('editor1'); }); /** * 选择分公司后执行 */ -TCarInfoDlg.oneChange = function (e) { +TGoodsInfoDlg.oneChange = function (e) { var oneId=$(e).val(); var ajax = new $ax(Feng.ctxPath + "/tCity/onChange", function(data){ if(data!=null){ @@ -385,12 +679,72 @@ ajax.set("oneId",oneId); ajax.start(); } +TGoodsInfoDlg.storeChange = function (e) { + var oneId=$(e).val(); + var ajax = new $ax(Feng.ctxPath + "/tCity/storeChange", function(data){ + if(data!=null){ + if(language==1){ + var content='<option value="">选择门店</option>'; + }else if(language==2){ + var content='<option value="">Choose your franchisee</option>'; + }else { + var content='<option value="">Pilih franchisee Anda</option>'; + } + $.each(data, function(k,v) { + content += "<option value='"+v.id+"'>"+v.name+"</option>"; + }); + $("#storeId").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +} +TGoodsInfoDlg.packageChange = function (e) { + var oneId=$(e).val(); + var ajax = new $ax(Feng.ctxPath + "/tCity/packageChange", function(data){ + if(data!=null){ + if(language==1){ + var content='<option value="">选择课包</option>'; + }else if(language==2){ + var content='<option value="">Choose your franchisee</option>'; + }else { + var content='<option value="">Pilih franchisee Anda</option>'; + } + $.each(data, function(k,v) { + content += "<option value='"+v.id+"'>"+v.name+"</option>"; + }); + $("#coursePackageId").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +} +TGoodsInfoDlg.timeChange = function (e) { + var oneId=$(e).val(); + var ajax = new $ax(Feng.ctxPath + "/tCity/timeChange", function(data){ + if(data!=null){ + if(language==1){ + var content='<option value="">选择课时数</option>'; + }else if(language==2){ + var content='<option value="">Choose your franchisee</option>'; + }else { + var content='<option value="">Pilih franchisee Anda</option>'; + } + $.each(data, function(k,v) { + content += "<option value='"+v.id+"'>"+v.classHours+"</option>"; + }); + $("#coursePackageConfigId").empty().append(content); + } + }); + ajax.set("oneId",oneId); + ajax.start(); +} /** * 类型改变执行 * @param e */ -TCarInfoDlg.companyTypeClick = function (e) { +TGoodsInfoDlg.companyTypeClick = function (e) { if (1 == e){ $(".companyDiv").hide(); } else if (2 == e){ @@ -401,7 +755,7 @@ /** * 车辆品牌改变时执行 */ -TCarInfoDlg.brandChange = function (e) { +TGoodsInfoDlg.brandChange = function (e) { var carBrandId=$(e).val(); var ajax = new $ax(Feng.ctxPath + "/tCar/brandChange", function(data){ if(data!=null){ @@ -426,7 +780,7 @@ /** * 专车服务被点击 */ -TCarInfoDlg.zcServerClick = function () { +TGoodsInfoDlg.zcServerClick = function () { var serverBox1 = $('#serverBox1').prop('checked'); if (serverBox1){ $("#zcModelDiv").show(); @@ -438,7 +792,7 @@ /** * 跨城服务被点击 */ -TCarInfoDlg.kcServerClick = function () { +TGoodsInfoDlg.kcServerClick = function () { var serverBox3 = $('#serverBox3').prop('checked'); if (serverBox3){ $("#kcModelDiv").show(); diff --git a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tPay_info.js b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tPay_info.js index 8045689..2c49494 100644 --- a/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tPay_info.js +++ b/cloud-server-management/src/main/webapp/static/modular/system/tGoods/tPay_info.js @@ -20,7 +20,7 @@ {title: '联系方式', field: 'phone', visible: true, align: 'center', valign: 'middle'}, {title: '使用状态', field: 'status', visible: true, align: 'center', valign: 'middle', formatter: function (value, row, index) { - return {1: "未使用", 2: "待核销"}[value] + return {1: "未使用", 2: "已核销"}[value] } }, ]; @@ -46,14 +46,17 @@ * @constructor */ TPayInfo.WriteOff = function (){ - if (this.check()) { + if (TPayInfo.check()) { + if (TPayInfo.seItem.status === 2){ + return Feng.error("重复核销!"); + } var ajax = new $ax(Feng.ctxPath + "/tGoods/write_off", function (data) { Feng.success("核销成功!"); TPayInfo.table.refresh(); }, function (data) { Feng.error("核销失败!" + data.responseJSON.message + "!"); }); - ajax.set("id",this.seItem.id); + ajax.set("id",TPayInfo.seItem.id); ajax.start(); } } -- Gitblit v1.7.1