From 431dde90aa20f7652092fc0bfa9e6a1a28b06b9f Mon Sep 17 00:00:00 2001 From: jiangqs <343695869@qq.com> Date: 星期日, 06 八月 2023 12:41:23 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/HongRuiTang --- ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 141 + ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskPageVo.java | 3 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/ShopProportionVo.java | 31 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java | 6 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java | 2 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppEditUserDto.java | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java | 3 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteGoodsFallbackFactory.java | 6 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java | 10 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java | 75 + ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java | 11 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java | 4 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeService.java | 28 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/fliter/ParamsAuthFilter.java | 10 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java | 3 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml | 3 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/BackMessageService.java | 6 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerActivityPageVo.java | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java | 34 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java | 13 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java | 4 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/PaymentMessageService.java | 8 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml | 8 ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml | 15 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/ProfitSharingNotifyNewResult.java | 23 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 58 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java | 7 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java | 49 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java | 6 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtMemberOrderTotalDto.java | 4 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtShopOrderPageDto.java | 3 ruoyi-auth/src/main/java/com/ruoyi/auth/fliter/ParamsAuthFilter.java | 10 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/BackMessageServiceImpl.java | 11 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml | 2 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/fliter/ParamsAuthFilter.java | 10 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java | 8 ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml | 4 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java | 4 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityPageVo.java | 6 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java | 12 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java | 36 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java | 54 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java | 63 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java | 34 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerMemberTaskRecordPageVo.java | 3 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/PaymentMessageServiceImpl.java | 13 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderTotalVo.java | 3 ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/CustomConfigMapper.xml | 4 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberEditDto.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/WxPayNotifyEventTypeEnum.java | 22 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml | 26 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml | 5 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java | 8 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderRefund.java | 16 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteFileService.java | 12 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java | 11 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java | 10 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java | 8 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentSignStateEnum.java | 20 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopProportionService.java | 7 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberAddDto.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java | 6 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java | 6 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeServiceImpl.java | 36 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java | 5 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/fliter/ParamsAuthFilter.java | 10 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/RefundStatusEnum.java | 19 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java | 10 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/DictBean.java | 15 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CodeGetDto.java | 18 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteGoodsService.java | 7 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java | 219 +- ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java | 5 ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/FileController.java | 40 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java | 14 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberTotal.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java | 3 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppConsumerPageVo.java | 11 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/BackMessage.java | 8 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java | 24 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java | 6 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java | 33 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java | 15 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java | 6 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopProportionServiceImpl.java | 12 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsEditInfoVo.java | 5 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/PaymentMessage.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java | 28 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskRecordPageVo.java | 3 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/fliter/ParamsAuthFilter.java | 10 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/ProfitSharing.java | 12 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java | 3 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java | 23 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java | 20 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberOrderVo.java | 59 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentStateEnum.java | 30 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffFollowShopTaskDto.java | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java | 128 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java | 127 + ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/fliter/ParamsAuthFilter.java | 10 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java | 6 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java | 5 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java | 21 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/MemberTaskRecord.java | 15 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAuthenticationServiceImpl.java | 81 + ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml | 1 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppBaseDto.java | 7 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/AgencyTaskRecord.java | 18 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtMemberFollowPageVo.java | 3 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerGoodsPageVo.java | 5 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAuthenticationService.java | 22 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java | 29 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppShoppingCartVo.java | 3 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java | 34 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleGoodsVo.java | 4 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskMapper.xml | 5 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityGoodsListVo.java | 5 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/CustomConfigMapper.java | 2 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsTotalVo.java | 3 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java | 31 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java | 4 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml | 3 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml | 25 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java | 3 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java | 33 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/IDict.java | 170 ++ ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java | 5 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java | 5 ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml | 12 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java | 2 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml | 2 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java | 11 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java | 16 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 945 ++++++++++---- ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java | 17 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java | 3 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java | 2 /dev/null | 55 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java | 6 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java | 12 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java | 4 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java | 3 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerOrderPageVo.java | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java | 11 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java | 1 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/IDict.java | 170 ++ ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/DictBean.java | 15 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java | 4 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java | 2 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java | 1 162 files changed, 3,065 insertions(+), 805 deletions(-) diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java index 5a0490a..300921c 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java @@ -84,6 +84,8 @@ String ACTIVITY_END = "活动已经结束"; + String ACTIVITY_SE_ERROR = "开始时间不能大于结束时间"; + String ACTIVITY_GOODS_NULL = "商品已被抢完"; String ACTIVITY_GOODS_BEYOND = "超出商品购买限制"; @@ -103,4 +105,6 @@ String TRANS_NOT_MYSELF = "不能转移给自己"; String GOODS_SURE_FAILED = "商品没有确认次数"; + + String BIRTHDAYCARD_NO_GIFT = "请先配置礼物再开启"; } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppBaseDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppBaseDto.java index 5dd92fc..90d616f 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppBaseDto.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppBaseDto.java @@ -13,7 +13,12 @@ @Data public class AppBaseDto { - @ApiModelProperty(value = "userId",hidden = true) + @ApiModelProperty(value = "userId", hidden = true) private Long userId; + @ApiModelProperty(value = "openid", hidden = true) + private String openid; + + @ApiModelProperty(value = "终端IP", hidden = true) + private String spbillCreateIp; } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppEditUserDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppEditUserDto.java index cf48ff3..355d63a 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppEditUserDto.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppEditUserDto.java @@ -13,7 +13,7 @@ @Data public class AppEditUserDto extends AppBaseDto{ - @ApiModelProperty(value = "修改类型1.昵称2.头像3.性别4.生日") + @ApiModelProperty(value = "修改类型1.昵称2.头像3.性别4.生日5.姓名") private Integer editType; @ApiModelProperty(value = "修改值 性别0=男,1=女,2=未知 生日YYYY-MM-DD ") diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CodeGetDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CodeGetDto.java new file mode 100644 index 0000000..b8519c8 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CodeGetDto.java @@ -0,0 +1,18 @@ +package com.ruoyi.system.api.domain.dto; + +import lombok.Data; + +/** + * @ClassName CodeGetDto + * @Description TODO + * @Author jqs + * @Date 2023/8/3 12:53 + * @Version 1.0 + */ +@Data +public class CodeGetDto { + + private String url; + + private String fileName; +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java index e7d96c4..ee58869 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberTotalChangeDto.java @@ -42,7 +42,7 @@ private Integer serviceCount; @ApiModelProperty(value = "下次跟进时间") - private Date nextTaskTime; + private String nextTaskTime; @ApiModelProperty(value = "活动时间") private Date activityTime; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java index a8ead45..5186b44 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/Shop.java @@ -281,6 +281,9 @@ @TableField("auth_flag") private Integer authFlag; + @TableField("shop_code") + private String shopCode; + @Override protected Serializable pkVal() { return this.shopId; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/ShopProportionVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/ShopProportionVo.java new file mode 100644 index 0000000..b8a42de --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/ShopProportionVo.java @@ -0,0 +1,31 @@ +package com.ruoyi.system.api.domain.poji.shop; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +public class ShopProportionVo { + /** + * 分成id + */ + private Long proportionId; + + /** + * 商户id + */ + private Long shopId; + /** + * 商户类型 + */ + private Integer shopType; + /** + * 分成比例 + */ + private BigDecimal proportionPercent; + +} diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java index bd7a8e1..edde8cf 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerMemberCouponVo.java @@ -42,4 +42,11 @@ @ApiModelProperty(value="使用有效期") private Date deadlineTime; + + @ApiModelProperty(value="使用范围1.全场2.指定商品") + private Integer useScope; + + @ApiModelProperty(value = "关联商品id") + private String relGoodsIds; + } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java index aa3c813..5a08282 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java @@ -1,5 +1,6 @@ package com.ruoyi.system.api.factory; +import com.ruoyi.system.api.domain.dto.CodeGetDto; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -30,6 +31,11 @@ { return R.fail("上传文件失败:" + throwable.getMessage()); } + + @Override + public R<String> getAppOrderTotal(CodeGetDto codeGetDto) { + return R.fail("获取二维码失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteGoodsFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteGoodsFallbackFactory.java index 329976b..ee644b2 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteGoodsFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteGoodsFallbackFactory.java @@ -2,6 +2,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.AppShopGoodsGetDto; +import com.ruoyi.system.api.domain.dto.GoodsTotalChangeDto; import com.ruoyi.system.api.domain.poji.goods.Goods; import com.ruoyi.system.api.domain.poji.goods.GoodsFile; import com.ruoyi.system.api.domain.poji.goods.ShopGoods; @@ -68,6 +69,11 @@ public R<List<MerGoodsPriceListVo>> listGoodsPriceByGoodsId(String goodsIds) { return R.fail("获取商品列表失败:" + throwable.getMessage()); } + + @Override + public R changeGoodsTotal(List<GoodsTotalChangeDto> goodsTotalChangeDtoList) { + return R.fail("改变商品统计失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java index 5e23e44..14b6f8e 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java @@ -2,6 +2,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.*; +import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.QwH5LoginVo; import com.ruoyi.system.api.model.QwUserDetailDto; @@ -33,6 +34,11 @@ @Override public R<Shop> getShop(Long shopId) { return R.fail("获取商户失败:" + throwable.getMessage()); + } + + @Override + public R<String> getShopSubMchId(Long shopId) { + return R.fail("获取微信商户号失败:" + throwable.getMessage()); } @Override @@ -109,6 +115,11 @@ public R editMgtShopStaff(MgtShopStaffEditDto mgtShopStaffEditDto) { return R.fail("修改员工失败:" + throwable.getMessage()); } + + @Override + public R<ShopProportionVo> getShopProportion(Long shopId) { + return R.fail("获取商户分成信息失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteFileService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteFileService.java index d6d3193..ad4773d 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteFileService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteFileService.java @@ -1,8 +1,10 @@ package com.ruoyi.system.api.service; +import com.ruoyi.system.api.domain.dto.CodeGetDto; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.core.constant.ServiceNameConstants; @@ -26,4 +28,14 @@ */ @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public R<SysFile> upload(@RequestPart(value = "file") MultipartFile file); + + /** + * @description 生成二维码 + * @author jqs + * @date 2023/8/3 12:57 + * @param codeGetDto + * @return R<String> + */ + @PostMapping("/file/getCodeUrl") + public R<String> getAppOrderTotal(@RequestBody CodeGetDto codeGetDto); } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteGoodsService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteGoodsService.java index b93ac60..97a2254 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteGoodsService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteGoodsService.java @@ -3,6 +3,7 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.AppShopGoodsGetDto; +import com.ruoyi.system.api.domain.dto.GoodsTotalChangeDto; import com.ruoyi.system.api.domain.poji.goods.Goods; import com.ruoyi.system.api.domain.poji.goods.GoodsFile; import com.ruoyi.system.api.domain.poji.goods.ShopGoods; @@ -59,6 +60,10 @@ * @param goodsIds * @return R<List<MerGoodsPriceListVo>> */ - @PostMapping("/listGoodsPriceByGoodsId") + @PostMapping("/goods/listGoodsPriceByGoodsId") public R<List<MerGoodsPriceListVo>> listGoodsPriceByGoodsId(@RequestBody String goodsIds); + + + @PostMapping("/goods/changeGoodsTotal") + public R changeGoodsTotal(@RequestBody List<GoodsTotalChangeDto> goodsTotalChangeDtoList); } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java index 9891828..f849c0f 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java @@ -4,6 +4,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.shop.Shop; +import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.factory.RemoteShopFallbackFactory; import com.ruoyi.system.api.model.QwH5LoginVo; @@ -19,6 +20,10 @@ @PostMapping("/shop/getShop") public R<Shop> getShop(@RequestBody Long shopId); + + @PostMapping("/shop/getShopSubMchId") + public R<String> getShopSubMchId(@RequestBody Long shopId); + @PostMapping("/shop/getShopByUserId") public R<ShopRelUserVo> getShopByUserId(@RequestBody Long userId); @@ -149,4 +154,12 @@ */ @PostMapping("/shop/editMgtShopStaff") public R editMgtShopStaff(@RequestBody MgtShopStaffEditDto mgtShopStaffEditDto); + + /** + * 获取商户分成 + * @param shopId + * @return + */ + @PostMapping("/shop/getShopProportion") + R<ShopProportionVo> getShopProportion(@RequestBody Long shopId); } diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/fliter/ParamsAuthFilter.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/fliter/ParamsAuthFilter.java index 59faa71..d4b403c 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/fliter/ParamsAuthFilter.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/fliter/ParamsAuthFilter.java @@ -30,7 +30,14 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; - + String requestUrl = request.getRequestURI(); + String requestUrlUpperCase = requestUrl.toUpperCase(); + if(requestUrlUpperCase.contains("EXPORT") + ||requestUrlUpperCase.contains("IMPORTTEMPLATE") + ){ + filterChain.doFilter(request, response); + return; + } RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response); getRequestParams(wrapper); @@ -39,7 +46,6 @@ // 返回的结果 String content = responseWrapper.getTextContent(); - String requestUrl = request.getRequestURI(); log.info("-------------------- Response Data ----------------------"); log.info(requestUrl + " -> " + content); diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java index 0daaf89..6c2fcd6 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java @@ -1,10 +1,10 @@ package com.ruoyi.common.core.utils; -import java.util.*; - -import org.springframework.util.AntPathMatcher; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.text.StrFormatter; +import org.springframework.util.AntPathMatcher; + +import java.util.*; /** * 字符串工具类 @@ -570,4 +570,13 @@ } return result.toArray(new String[0]); } + + public static boolean checkString(String originalString, String targetString) { + // 使用逗号分隔字符串 + String[] stringArray = originalString.split(","); + // 转换为列表 + List<String> stringList = Arrays.asList(stringArray); + // 检查目标字符串是否在列表中 + return stringList.contains(targetString); + } } diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java index 8171709..589eb06 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/SecurityUtils.java @@ -1,6 +1,8 @@ package com.ruoyi.common.security.utils; import javax.servlet.http.HttpServletRequest; + +import com.ruoyi.system.api.domain.poji.sys.SysUser; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.constant.TokenConstants; @@ -11,7 +13,7 @@ /** * 权限获取工具类 - * + * * @author jqs */ public class SecurityUtils @@ -48,6 +50,11 @@ return SecurityContextHolder.get(SecurityConstants.LOGIN_USER, LoginUser.class); } + public static SysUser getSysUser() + { + return getLoginUser().getSysUser(); + } + /** * 获取请求token */ @@ -81,7 +88,7 @@ /** * 是否为管理员 - * + * * @param userId 用户ID * @return 结果 */ diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/FileController.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/FileController.java new file mode 100644 index 0000000..1736fd1 --- /dev/null +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/controller/FileController.java @@ -0,0 +1,40 @@ +package com.ruoyi.file.controller; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.file.service.ActivityCodeService; +import com.ruoyi.system.api.domain.dto.CodeGetDto; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @ClassName FileController + * @Description TODO + * @Author jqs + * @Date 2023/8/3 12:50 + * @Version 1.0 + */ +@RestController +@RequestMapping("/file") +public class FileController { + + + @Resource + private ActivityCodeService activityCodeService; + + @PostMapping("/getCodeUrl") + public R<String> getAppOrderTotal(@RequestBody CodeGetDto codeGetDto){ + String url = null; + try { + url = activityCodeService.createActivityCode(codeGetDto.getUrl(),codeGetDto.getFileName()); + } catch (Exception e) { + throw new RuntimeException(e); + } + return R.ok(url); + } + + +} diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeService.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeService.java index e79e269..3eb85c7 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeService.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeService.java @@ -1,9 +1,5 @@ package com.ruoyi.file.service; -import me.chanjar.weixin.common.error.WxErrorException; - -import java.io.FileNotFoundException; - /** * @ClassName ActivityCodeService * @Description TODO @@ -16,22 +12,32 @@ /** - * @description 生成活动二维码 + * @description 生成二维码 * @author jqs - * @date 2023/7/26 19:09 - * @param activityId - * @return void + * @date 2023/8/3 12:44 + * @param url + * @return String */ - public String createActivityCode(String activityId); + public String createActivityCode(String url, String fileName) throws Exception; /** - * @description 生成活动二维码 + * @description 生成微信活动二维码 * @author jqs * @date 2023/7/26 19:09 * @param activityId * @return void */ - public String createActivityCode(String activityId,String backImageUrl) throws WxErrorException, FileNotFoundException; + public String createActivityWxCode(String activityId); + + + /** + * @description 生成活动海报 + * @author jqs + * @date 2023/7/26 19:09 + * @param activityId + * @return void + */ + public String createActivityPoster(String activityId, String backImageUrl) throws Exception; } diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeServiceImpl.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeServiceImpl.java index 009a019..270076f 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeServiceImpl.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/service/ActivityCodeServiceImpl.java @@ -5,7 +5,6 @@ import cn.hutool.core.img.ImgUtil; import cn.hutool.extra.qrcode.QrCodeUtil; import com.ruoyi.file.utils.OBSUploadUtils; -import me.chanjar.weixin.common.error.WxErrorException; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -27,6 +26,22 @@ /** + * @description 生成二维码 + * @author jqs + * @date 2023/8/3 12:44 + * @param url + * @return String + */ + @Override + public String createActivityCode(String url, String fileName) throws Exception { + File qrCodeFile = new File("/home/image/qrcode.png");// 生成二维码 + QrCodeUtil.generate(url, 100, 100, qrCodeFile); + InputStream codeStream = new FileInputStream(qrCodeFile); + String fileUrl = OBSUploadUtils.uploadInputStream(codeStream,fileName); + return fileUrl; + } + + /** * @description 生成活动二维码 * @author jqs * @date 2023/7/26 19:09 @@ -34,7 +49,7 @@ * @return void */ @Override - public String createActivityCode(String activityId){ + public String createActivityWxCode(String activityId){ WxMaQrcodeService wxMaQrcodeService = wxMaService.getQrcodeService(); String scene = activityId; @@ -57,29 +72,28 @@ * @return void */ @Override - public String createActivityCode(String activityId,String backImageUrl) throws WxErrorException, FileNotFoundException { - - + public String createActivityPoster(String activityId,String backImageUrl) throws Exception { String fileUrl = null; File qrCodeFile = new File("/home/image/qrcode.png"); // 二维码内容 - String text = ""+activityId; + String text = "https://wxapp.hhhrt.cn/mini/activity?"+activityId; // 生成二维码 - QrCodeUtil.generate(text, 100, 100, qrCodeFile); - File backFile ; + QrCodeUtil.generate(text, 200, 200, qrCodeFile); ByteArrayOutputStream out = new ByteArrayOutputStream(); InputStream codeStream = new FileInputStream(qrCodeFile); - InputStream backStream = new FileInputStream(qrCodeFile); + backImageUrl = backImageUrl.replace("https://hongruitang.oss-cn-beijing.aliyuncs.com/",""); + InputStream backStream = OBSUploadUtils.getOSSInputStream(backImageUrl); // 将图片合成在一起 ImgUtil.pressImage( backStream, // 主图片 out, // 输出图片 - ImgUtil.read(codeStream).getScaledInstance(516, 516, Image.SCALE_DEFAULT), //水印图片 + ImgUtil.read(codeStream).getScaledInstance(200, 200, Image.SCALE_DEFAULT), //水印图片 0, //x坐标修正值。 默认在中间,偏移量相对于中间偏移 - 0, //y坐标修正值。 默认在中间,偏移量相对于中间偏移 + 350, //y坐标修正值。 默认在中间,偏移量相对于中间偏移 1.0f ); InputStream inputStream = new ByteArrayInputStream(out.toByteArray()); + fileUrl = OBSUploadUtils.uploadInputStream(inputStream,activityId); return fileUrl; } } diff --git a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java index fc18bc6..939dc5e 100644 --- a/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java +++ b/ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/OBSUploadUtils.java @@ -1,16 +1,17 @@ package com.ruoyi.file.utils; +import cn.hutool.extra.qrcode.QrCodeUtil; import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; +import com.aliyun.oss.model.OSSObject; import com.aliyun.oss.model.PutObjectRequest; import com.aliyun.oss.model.PutObjectResult; import com.ruoyi.common.core.utils.uuid.IdUtils; import org.springframework.web.multipart.MultipartFile; -import java.io.File; -import java.io.InputStream; +import java.io.*; import java.util.Calendar; /** @@ -22,6 +23,17 @@ */ public class OBSUploadUtils { + public static void main(String[] args) throws Exception { + String fileUrl = null; + File qrCodeFile = new File("/home/image/qrcode.png"); + // 二维码内容 + String text = "https://wxapp.hhhrt.cn/mini/coupon"; + // 生成二维码 + QrCodeUtil.generate(text, 100, 100, qrCodeFile); + InputStream codeStream = new FileInputStream(qrCodeFile); + fileUrl = OBSUploadUtils.uploadInputStream(codeStream,"couponCode"); + System.out.println(fileUrl); + } protected static OSS createOss(){ // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。 @@ -58,6 +70,55 @@ String prefix = fileName.substring(fileName.lastIndexOf(".")); String objectName = filePath + uuid + prefix; InputStream inputStream = file.getInputStream(); + // 创建PutObjectRequest对象。 + PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream); + // 设置该属性可以返回response。如果不设置,则返回的response为空。 + putObjectRequest.setProcess("true"); + // 创建PutObject请求。 + result = ossClient.putObject(putObjectRequest); + // 如果上传成功,则返回200。 + System.out.println(fileName + "上传返回" + result.getResponse().getStatusCode()); + return result.getResponse().getUri(); + } catch (OSSException oe) { + System.out.println("Caught an OSSException, which means your request made it to OSS, " + + "but was rejected with an error response for some reason."); + System.out.println("Error Message:" + oe.getErrorMessage()); + System.out.println("Error Code:" + oe.getErrorCode()); + System.out.println("Request ID:" + oe.getRequestId()); + System.out.println("Host ID:" + oe.getHostId()); + } catch (ClientException ce) { + System.out.println("Caught an ClientException, which means the client encountered " + + "a serious internal problem while trying to communicate with OSS, " + + "such as not being able to access the network."); + System.out.println("Error Message:" + ce.getMessage()); + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + return result.getResponse().getErrorResponseAsString(); + } + + public static String uploadInputStream (InputStream inputStream,String fileName) throws Exception { + + // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。 + String bucketName = "hongruitang"; + Calendar calendar = Calendar.getInstance(); + // 获取当前年 + String year = String.valueOf(calendar.get(Calendar.YEAR)); + // 获取当前月 + String month = String.valueOf(calendar.get(Calendar.MONTH) + 1); + // 获取当前日 + String day = String.valueOf(calendar.get(Calendar.DATE)); + String filePath = year+"/"+month+"/"+day+"/"; + String uuid = IdUtils.fastSimpleUUID(); + // 创建OSSClient实例。 + OSS ossClient = createOss(); + PutObjectResult result = null; + try { + + System.out.println(fileName + "开始上传"); + String objectName = filePath + fileName + ".jpg"; // 创建PutObjectRequest对象。 PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream); // 设置该属性可以返回response。如果不设置,则返回的response为空。 @@ -134,9 +195,13 @@ return result.getResponse().getErrorResponseAsString(); } - public static void getOSSFile(String key) throws Exception { - - + public static InputStream getOSSInputStream(String key) throws Exception { + String bucketName = "hongruitang"; + // 创建OSSClient实例。 + OSS ossClient = createOss(); + OSSObject ossObject = ossClient.getObject(bucketName,key); + InputStream inputStream = ossObject.getObjectContent(); + return inputStream; } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java index 92eb3db..0a79de4 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java @@ -95,8 +95,10 @@ @ApiOperation(value = "导出活动参与记录列表") public void exportPageMgtActivityRecord( MgtActivityRecordPageDto mgtActivityRecordPageDto, HttpServletResponse response) { Page<MgtActivityRecordPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtActivityRecordPageVo> activityRecordPageVoList = activityService.pageMgtActivityRecord(page,mgtActivityRecordPageDto); ExcelUtil<MgtActivityRecordPageVo> util = new ExcelUtil<MgtActivityRecordPageVo>(MgtActivityRecordPageVo.class); util.exportExcel(response, activityRecordPageVoList, "商品列表"); diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java index d0c167d..731a389 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java @@ -55,8 +55,10 @@ @ApiOperation(value = "导出商品列表") public void exportPageMgtGoods( MgtGoodsPageDto mgtGoodsPageDto, HttpServletResponse response) { Page<MgtGoodsPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtGoodsPageVo> mgtGoodsPageVoList = goodsService.pageMgtGoods(page,mgtGoodsPageDto); ExcelUtil<MgtGoodsPageVo> util = new ExcelUtil<MgtGoodsPageVo>(MgtGoodsPageVo.class); util.exportExcel(response, mgtGoodsPageVoList, "商品列表"); diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java index 73ba653..b648420 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/Activity.java @@ -127,7 +127,11 @@ */ @TableField("activity_introduce") private String activityIntroduce; - + /** + * 活动二维码 + */ + @TableField("activity_code") + private String activityCode; @Override protected Serializable pkVal() { diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java index 2bee138..e6e5cc5 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppGoodsInfoVo.java @@ -1,6 +1,8 @@ package com.ruoyi.goods.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -50,6 +52,7 @@ private Integer serviceNum; @ApiModelProperty(value = "商品售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal salesPrice; @ApiModelProperty(value = "商品详情") @@ -74,6 +77,7 @@ private Integer availableBuyNum; @ApiModelProperty(value = "商品活动价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal activityPrice; @ApiModelProperty(value = "售罄标记0否1是") diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppShoppingCartVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppShoppingCartVo.java index f3b7ac4..b34dec3 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppShoppingCartVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppShoppingCartVo.java @@ -1,5 +1,7 @@ package com.ruoyi.goods.domain.vo; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -40,6 +42,7 @@ private String goodsNurses; @ApiModelProperty(value = "商品售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal salesPrice; @ApiModelProperty(value = "购买数量") diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java index 8a5b1b6..0008c72 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleActivityGoodsVo.java @@ -1,5 +1,7 @@ package com.ruoyi.goods.domain.vo; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -38,9 +40,11 @@ private String goodsNurses; @ApiModelProperty(value = "商品售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal salesPrice; @ApiModelProperty(value = "商品活动价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal activityPrice; @ApiModelProperty(value = "活动销售数量") @@ -50,6 +54,7 @@ private Integer salesNumber; @ApiModelProperty(value = "已售比例") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal salesPercent; @ApiModelProperty(value = "结束时间戳") diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleGoodsVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleGoodsVo.java index 31cf0f6..b6eadb3 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleGoodsVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppSimpleGoodsVo.java @@ -1,5 +1,7 @@ package com.ruoyi.goods.domain.vo; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,9 +39,11 @@ private String goodsNurses; @ApiModelProperty(value = "商品售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal salesPrice; @ApiModelProperty(value = "活动售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal activityPrice; @ApiModelProperty(value = "活动id") diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerActivityPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerActivityPageVo.java index 549ca26..95e7438 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerActivityPageVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerActivityPageVo.java @@ -38,4 +38,7 @@ @ApiModelProperty(value = "商品数量") private Integer goodsNum; + + @ApiModelProperty(value = "活动二维码地址") + private String activityCode; } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerGoodsPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerGoodsPageVo.java index a7471d0..28f07f5 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerGoodsPageVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MerGoodsPageVo.java @@ -1,6 +1,7 @@ package com.ruoyi.goods.domain.vo; -import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -38,9 +39,11 @@ private String goodsNurses; @ApiModelProperty(value = "商品建议售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal suggestSalesPrice;; @ApiModelProperty(value = "商品售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal salesPrice;; @ApiModelProperty(value="周期次数标记0否1是") diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityGoodsListVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityGoodsListVo.java index afe7b2a..eed4711 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityGoodsListVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityGoodsListVo.java @@ -1,5 +1,7 @@ package com.ruoyi.goods.domain.vo; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -28,12 +30,15 @@ private String goodsType; @ApiModelProperty(value = "商品售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal salesPrice;; @ApiModelProperty(value = "秒杀活动价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal activityPrice; @ApiModelProperty(value = "秒杀活动订金") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal activitySubscription; @ApiModelProperty(value = "秒杀活动库存") diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityPageVo.java index 214a44a..cbe1e57 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityPageVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityPageVo.java @@ -48,4 +48,10 @@ @ApiModelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; + + @ApiModelProperty(value = "活动二维码地址") + private String activityCode; + + @ApiModelProperty(value = "背景海报地址") + private String propagandaPoster; } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsEditInfoVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsEditInfoVo.java index e6cb27e..277b50f 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsEditInfoVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsEditInfoVo.java @@ -1,5 +1,7 @@ package com.ruoyi.goods.domain.vo; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -49,12 +51,15 @@ private String goodsIntroduction; @ApiModelProperty(value = "建议售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal salesPrice; @ApiModelProperty(value = "最低售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal mininumPrice; @ApiModelProperty(value = "订金") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal subscription; @ApiModelProperty(value = "商品详情") diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java index 5da1e81..6fc16ce 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java @@ -1,6 +1,8 @@ package com.ruoyi.goods.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.ruoyi.common.core.annotation.Excel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -48,10 +50,12 @@ @Excel(name = "商品建议售价", width = 30) @ApiModelProperty(value = "商品建议售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal suggestSalesPrice;; @Excel(name = "最低售价", width = 30) @ApiModelProperty(value = "最低售价") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal mininumPrice;; @Excel(name = "销量", width = 30) @@ -60,6 +64,7 @@ @Excel(name = "销售额", width = 30) @ApiModelProperty(value = "销售额") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal buyMoneyTotal; @Excel(name = "是否推荐", width = 30) diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsTotalVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsTotalVo.java index b25d6da..f719c24 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsTotalVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsTotalVo.java @@ -1,5 +1,7 @@ package com.ruoyi.goods.domain.vo; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -22,6 +24,7 @@ private Integer buyNumCount; @ApiModelProperty(value = "销售额") + @JsonSerialize(using = ToStringSerializer.class) private BigDecimal buyMoneyTotal; diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/fliter/ParamsAuthFilter.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/fliter/ParamsAuthFilter.java index 9196c6e..9774561 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/fliter/ParamsAuthFilter.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/fliter/ParamsAuthFilter.java @@ -30,7 +30,14 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; - + String requestUrl = request.getRequestURI(); + String requestUrlUpperCase = requestUrl.toUpperCase(); + if(requestUrlUpperCase.contains("EXPORT") + ||requestUrlUpperCase.contains("IMPORTTEMPLATE") + ){ + filterChain.doFilter(request, response); + return; + } RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response); getRequestParams(wrapper); @@ -39,7 +46,6 @@ // 返回的结果 String content = responseWrapper.getTextContent(); - String requestUrl = request.getRequestURI(); log.info("-------------------- Response Data ----------------------"); log.info(requestUrl + " -> " + content); diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java index ec44e37..b096fea 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java @@ -29,6 +29,7 @@ import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; import com.ruoyi.system.api.domain.vo.MgtUserIdByKeywordVo; import com.ruoyi.system.api.service.RemoteConfigService; +import com.ruoyi.system.api.service.RemoteFileService; import com.ruoyi.system.api.service.RemoteMemberService; import com.ruoyi.system.api.service.RemoteShopService; import org.redisson.api.RLock; @@ -85,6 +86,9 @@ @Autowired private RedissonClient redissonClient; + @Resource + private RemoteFileService remoteFileService; + /** * @param mgtActivityEditDto * @return void @@ -97,6 +101,9 @@ Activity activity; // 获取当前时间 Date nowTime = new Date(); + if(mgtActivityEditDto.getActivityStartTime().compareTo(mgtActivityEditDto.getActivityEndTime())>0){ + throw new ServiceException(AppErrorConstant.ACTIVITY_SE_ERROR); + } // 如果活动ID不为空,则表示修改活动信息 if (StringUtils.isNotBlank(mgtActivityEditDto.getActivityId())) { // 获取活动信息 @@ -123,6 +130,12 @@ activityTotal.setRefundTotal(0); activityTotal.setOrderMoneyTotal(BigDecimal.ZERO); activityTotalService.save(activityTotal); + CodeGetDto codeGetDto = new CodeGetDto(); + String url = "https://wxapp.hhhrt.cn/mini/activity?activityId="+activityId; + codeGetDto.setUrl(url); + codeGetDto.setFileName("activity-"+activityId); + String codeUrl = remoteFileService.getAppOrderTotal(codeGetDto).getData(); + activity.setActivityCode(codeUrl); } // 获取活动开始时间和结束时间 Date activityStartTime = mgtActivityEditDto.getActivityStartTime(); @@ -577,9 +590,10 @@ try { lock.lock(30, TimeUnit.SECONDS); if(agStockChangeDto.getChangeType()==1){ + //减少销量增加库存 activityMapper.addActivityGoodsStock(agStockChangeDto); }else{ - //更新库存 + //增加销量减少库存 activityMapper.subActivityGoodsStock(agStockChangeDto); } } finally { diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml index 44e942b..f434890 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml +++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml @@ -23,7 +23,9 @@ WHEN 1 THEN '是' ELSE '否' END recommendFlag, - ta.create_time createTime + ta.create_time createTime, + ta.activity_code activityCode, + ta.propaganda_poster propagandaPoster FROM t_activity ta INNER JOIN t_activity_total tat ON ta.activity_id = tat.activity_id WHERE ta.del_flag = 0 @@ -34,10 +36,10 @@ AND FIND_IN_SET(#{param.shopId}, ta.applicable_shop) > 0 </if> <if test="param.activityStartTime!=null and param.activityStartTime != ''"> - AND ta.activity_start_time >= #{param.activityStartTime} + AND Date(ta.activity_start_time) >= #{param.activityStartTime} </if> <if test="param.activityEndTime!=null and param.activityEndTime != ''"> - AND ta.activity_start_time <= #{param.activityEndTime} + AND Date(ta.activity_start_time) <= #{param.activityEndTime} </if> <if test="param.activityStatus!=null"> AND ta.activity_status = #{param.activityStatus} @@ -61,10 +63,10 @@ AND FIND_IN_SET(#{param.userIds}, user_id) > 0 </if> <if test="param.createStartTime!=null and param.createStartTime != ''"> - AND Date(ta.create_time) >= #{param.createStartTime} + AND Date(create_time) >= #{param.createStartTime} </if> <if test="param.createEndTime!=null and param.createEndTime != ''"> - AND Date(ta.create_time) <= #{param.createEndTime} + AND Date(create_time) <= #{param.createEndTime} </if> <if test="param.orderFlag!=null and param.orderFlag == 1"> AND order_id IS NOT NULL @@ -86,7 +88,8 @@ WHEN 2 THEN '已结束' END activityStatus, ta.propaganda_poster propagandaPoster, - COUNT(ag.activity_id) goodsNum + COUNT(ag.activity_id) goodsNum, + ta.activity_code activityCode FROM t_activity ta LEFT JOIN t_activity_goods ag ON ta.activity_id = ag.activity_id AND ag.del_flag = 0 WHERE ta.del_flag = 0 AND shop_flag = 1 OR (shop_flag = 2 AND FIND_IN_SET(#{param.shopId}, ta.applicable_shop) > 0) diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java index 59bcc47..52522ae 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/business/MerMemberController.java @@ -106,7 +106,7 @@ @RequestMapping(value = "/addMerMember", method = RequestMethod.POST) @ApiOperation(value = "新增会员") - public R addMerMember(@RequestBody MerMemberAddDto merMemberAddDto) { + public R<Long> addMerMember(@RequestBody MerMemberAddDto merMemberAddDto) { Long userId = SecurityUtils.getUserId(); merMemberAddDto.setUserId(userId); memberService.addMerMember(merMemberAddDto); diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java index e23d174..b9eb3df 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java @@ -299,7 +299,7 @@ * @return R */ @PostMapping("/changeIntegral") - public R signShare(@RequestBody IntegralChangeDto integralChangeDto) { + public R changeIntegral(@RequestBody IntegralChangeDto integralChangeDto) { memberService.changeIntegral(integralChangeDto); return R.ok(); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java index c7bc26b..656f89f 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java @@ -65,8 +65,10 @@ @ApiOperation(value = "导出会员列表") public void exportPageMgtMember(MgtMemberPageDto mgtMemberPageDto, HttpServletResponse response) { Page<MgtMemberPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtMemberPageVo> mgtShopPageVoList = memberService.pageMgtMember(page,mgtMemberPageDto); ExcelUtil<MgtMemberPageVo> util = new ExcelUtil<MgtMemberPageVo>(MgtMemberPageVo.class); util.exportExcel(response, mgtShopPageVoList, "用户管理"); @@ -124,8 +126,10 @@ Long userId = SecurityUtils.getUserId(); mgtMemberIntegralPageDto.setUserId(userId); Page<MgtMemberIntegralPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtMemberIntegralPageVo> mgtMemberIntegralPageVoList = integralRecordService.pageMgtMemberIntegral(page,mgtMemberIntegralPageDto); return R.ok(page.setRecords(mgtMemberIntegralPageVoList)); } @@ -161,8 +165,10 @@ Long userId = SecurityUtils.getUserId(); mgtMemberBrowsePageDto.setUserId(userId); Page<MgtMemberBrowsePageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtMemberBrowsePageVo> mgtMemberBrowsePageVoList = browseRecordService.pageMgtMemberBrowse(page,mgtMemberBrowsePageDto); ExcelUtil<MgtMemberBrowsePageVo> util = new ExcelUtil<MgtMemberBrowsePageVo>(MgtMemberBrowsePageVo.class); util.exportExcel(response, mgtMemberBrowsePageVoList, "用户浏览记录"); @@ -207,8 +213,10 @@ Long userId = SecurityUtils.getUserId(); memberSuggestPageDto.setUserId(userId); Page<MgtMemberSuggestPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtMemberSuggestPageVo> mgtMemberSuggestPageVoList = memberSuggestService.pageMgtMemberSuggest(page,memberSuggestPageDto); ExcelUtil<MgtMemberSuggestPageVo> util = new ExcelUtil<MgtMemberSuggestPageVo>(MgtMemberSuggestPageVo.class); util.exportExcel(response, mgtMemberSuggestPageVoList, "用户建议列表"); diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java index 2a0ac58..ec98ae3 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java @@ -118,6 +118,7 @@ int todayMonth = today.getMonthValue(); if (birthdayMonth == todayMonth) { appBirthdayCardVo = birthdayCardService.getUserBirthdayCard(userId,member.getRelationShopId()); + appBirthdayCardVo.setCheckBirthdayCard(1); appBirthdayCardVo.setHaveBirthdayFlag(1); appBirthdayCardVo.setInBirthdayFlag(1); } else { diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberAddDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberAddDto.java index d168944..0b74f69 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberAddDto.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberAddDto.java @@ -19,7 +19,7 @@ @ApiModelProperty(value = "用户昵称") - private String nickName; + private String realName; @ApiModelProperty(value = "手机号码") private String phonenumber; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberEditDto.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberEditDto.java index 07cfb4a..92d4dca 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberEditDto.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberEditDto.java @@ -22,7 +22,7 @@ private Long editUserId; @ApiModelProperty(value = "用户昵称") - private String nickName; + private String realName; @ApiModelProperty(value = "手机号码") private String phonenumber; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberTotal.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberTotal.java index 7f9787b..411ea8c 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberTotal.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/MemberTotal.java @@ -82,7 +82,7 @@ * 下次跟进时间 */ @TableField("next_task_time") - private Date nextTaskTime; + private String nextTaskTime; /** * 总服务次数 */ diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java index f58eb32..709a714 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberBasicFileVo.java @@ -21,7 +21,7 @@ private Long userId; @ApiModelProperty(value = "用户名称") - private String nickName; + private String realName; @ApiModelProperty(value = "手机号码") private String phonenumber; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java index a60e10a..6682652 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MerMemberInfoVo.java @@ -21,7 +21,7 @@ private Long userId; @ApiModelProperty(value = "用户名称") - private String nickName; + private String realName; @ApiModelProperty(value = "手机号码") private String phonenumber; @@ -58,8 +58,7 @@ private Date lastTaskTime; @ApiModelProperty(value = "下次跟进任务时间") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") - private Date nextTaskTime; + private String nextTaskTime; @ApiModelProperty(value = "最近消费时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java index 382db9b..4e8d862 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java @@ -61,9 +61,11 @@ @Excel(name = "平台响应时间", width = 30) @ApiModelProperty(value = "平台响应时间") private String responseTime; - @Excel(name = "回复商户名", width = 30) - @ApiModelProperty(value = "回复商户名") - private String replayShopName; + @ApiModelProperty(value = "商户id") + private Long shopId; + @Excel(name = "商户名", width = 30) + @ApiModelProperty(value = "商户名") + private String shopName; @Excel(name = "商户回复人姓名", width = 30) @ApiModelProperty(value = "商户回复人姓名") private String shopReplayUserName; diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/fliter/ParamsAuthFilter.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/fliter/ParamsAuthFilter.java index cab063c..b2b0170 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/fliter/ParamsAuthFilter.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/fliter/ParamsAuthFilter.java @@ -30,7 +30,14 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; - + String requestUrl = request.getRequestURI(); + String requestUrlUpperCase = requestUrl.toUpperCase(); + if(requestUrlUpperCase.contains("EXPORT") + ||requestUrlUpperCase.contains("IMPORTTEMPLATE") + ){ + filterChain.doFilter(request, response); + return; + } RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response); getRequestParams(wrapper); @@ -39,7 +46,6 @@ // 返回的结果 String content = responseWrapper.getTextContent(); - String requestUrl = request.getRequestURI(); log.info("-------------------- Response Data ----------------------"); log.info(requestUrl + " -> " + content); diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java index f572d21..98f6321 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberCouponMapper.java @@ -76,5 +76,5 @@ * @param * @return List<MerMemberCouponVo> */ - List<MerMemberCouponVo> listMerShopGoodsMemberCoupon(MerGoodsCouponListDto merGoodsCouponListDto); + List<MerMemberCouponVo> listMerShopGoodsMemberCoupon(@Param("param") MerGoodsCouponListDto merGoodsCouponListDto); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java index b223bc4..f5ccdf4 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.member.domain.dto.MerBirthdayEditDto; @@ -16,6 +18,7 @@ import com.ruoyi.member.service.birthday.BirthdayCardService; import com.ruoyi.member.service.birthday.BirthdayGiftService; import com.ruoyi.member.service.member.MemberGiftRecordService; +import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto; import com.ruoyi.system.api.domain.dto.MgtBaseBathDto; import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord; @@ -412,6 +415,12 @@ } birthdayCard.setCardStatus(merBirthdayEditDto.getCardStatus()); this.saveOrUpdate(birthdayCard); + List<BirthdayGift> birthdayGiftList = birthdayGiftService.listByCardId(birthdayCard.getCardId()); + if(merBirthdayEditDto.getCardStatus()==1){ + if(birthdayGiftList==null||birthdayGiftList.isEmpty()){ + throw new ServiceException(AppErrorConstant.BIRTHDAYCARD_NO_GIFT); + } + } } /** @@ -493,7 +502,7 @@ if (plBirthdayCard != null && plBirthdayCard.getCardStatus()==1) { // 获取生日卡对应的生日礼物列表 List<BirthdayGift> birthdayGiftList = birthdayGiftService.listByCardId(plBirthdayCard.getCardId()); - if(!birthdayGiftList.isEmpty()){ + if(birthdayGiftList!=null&&!birthdayGiftList.isEmpty()){ // 遍历生日礼物列表 for (BirthdayGift birthdayGift : birthdayGiftList) { winningProbability = birthdayGift.getWinningProbability(); @@ -691,15 +700,29 @@ @Override public Integer checkBirthdayCard(Long shopId){ // 获取平台生日卡信息 - BirthdayCard plBirthdayCard = birthdayCardMapper.getPlatformBirthdayCard(shopId); - // 如果生日卡存在 + Boolean platformBirthdayCardOpen = true; + BirthdayCard plBirthdayCard = birthdayCardMapper.getMerShopBirthdayCard(0L); if (plBirthdayCard == null || plBirthdayCard.getCardStatus()!=1) { - return 0; + platformBirthdayCardOpen = false; + }else{ + if(plBirthdayCard.getAreaFlag()==2&&!StringUtils.checkString(plBirthdayCard.getApplicableShop(),shopId.toString())){ + platformBirthdayCardOpen = false; + } + } + BirthdayCard shopBirthdayCard = birthdayCardMapper.getMerShopBirthdayCard(shopId); + // 如果生日卡存在 + Boolean shopBirthdayCardOpen = true; + if (shopBirthdayCard == null || shopBirthdayCard.getCardStatus()!=1) { + shopBirthdayCardOpen = false; } Integer marketingStatus = remoteShopService.getShopMarketingStatus(shopId).getData(); if(marketingStatus<=1){ + shopBirthdayCardOpen = false; + } + if(!platformBirthdayCardOpen||!shopBirthdayCardOpen){ + return 1; + }else{ return 0; } - return 1; } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java index e45d371..0cf4ebc 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java @@ -223,7 +223,7 @@ if(StringUtils.isNotBlank(relGoodsIds)){ //获取指定商品列表 List<MerGoodsPriceListVo> goodsList = remoteGoodsService.listGoodsPriceByGoodsId(relGoodsIds).getData(); - if(!goodsList.isEmpty()){ + if(goodsList!=null&&!goodsList.isEmpty()){ merCouponGetVo.setRelGoodsList(goodsList); } } @@ -384,47 +384,93 @@ String memberCouponId; Integer sendUserTotal; for(Long userId : userIdList){ - memberCouponId = IdUtils.simpleUUID(); - memberCoupon = new MemberCoupon(); - memberCoupon.setId(memberCouponId); - memberCoupon.setDelFlag(0); - memberCoupon.setCouponId(coupon.getCouponId()); - memberCoupon.setUserId(userId); - memberCoupon.setShopId(coupon.getShopId()); - memberCoupon.setCouponType(coupon.getCouponType()); - memberCoupon.setCouponStatus(coupon.getCouponStatus()); - memberCoupon.setCouponName(coupon.getCouponName()); - memberCoupon.setSendType(coupon.getSendType()); - memberCoupon.setSendTarget(coupon.getSendTarget()); - memberCoupon.setSendTimeType(coupon.getSendTimeType()); - memberCoupon.setSendTime(coupon.getSendTime()); - memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); - memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); - memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); - memberCoupon.setUseScope(coupon.getUseScope()); - memberCoupon.setValidTimeType(coupon.getValidTimeType()); - memberCoupon.setValidStartTime(coupon.getValidStartTime()); - memberCoupon.setValidEndTime(coupon.getValidEndTime()); - memberCoupon.setValidDay(coupon.getValidDay()); - memberCoupon.setCouponFrom(coupon.getCouponFrom()); - memberCoupon.setReceiveTime(nowTime); - memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); - //有效期处理1.时间段2.领取之日起 - if(coupon.getValidTimeType()==1){ - memberCoupon.setDeadlineTime(coupon.getValidEndTime()); - }else if(coupon.getValidTimeType()==2){ - memberCoupon.setDeadlineTime(DateUtils.addDays(nowTime,coupon.getValidDay())); + if(coupon.getCouponFrom()==2){ + for(int i=0;i<coupon.getLimitNumber();i++){ + memberCouponId = IdUtils.simpleUUID(); + memberCoupon = new MemberCoupon(); + memberCoupon.setId(memberCouponId); + memberCoupon.setDelFlag(0); + memberCoupon.setCouponId(coupon.getCouponId()); + memberCoupon.setUserId(userId); + memberCoupon.setShopId(coupon.getShopId()); + memberCoupon.setCouponType(coupon.getCouponType()); + memberCoupon.setCouponStatus(coupon.getCouponStatus()); + memberCoupon.setCouponName(coupon.getCouponName()); + memberCoupon.setSendType(coupon.getSendType()); + memberCoupon.setSendTarget(coupon.getSendTarget()); + memberCoupon.setSendTimeType(coupon.getSendTimeType()); + memberCoupon.setSendTime(coupon.getSendTime()); + memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); + memberCoupon.setUseScope(coupon.getUseScope()); + memberCoupon.setValidTimeType(coupon.getValidTimeType()); + memberCoupon.setValidStartTime(coupon.getValidStartTime()); + memberCoupon.setValidEndTime(coupon.getValidEndTime()); + memberCoupon.setValidDay(coupon.getValidDay()); + memberCoupon.setCouponFrom(coupon.getCouponFrom()); + memberCoupon.setReceiveTime(nowTime); + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + //有效期处理1.时间段2.领取之日起 + if(coupon.getValidTimeType()==1){ + memberCoupon.setDeadlineTime(coupon.getValidEndTime()); + }else if(coupon.getValidTimeType()==2){ + memberCoupon.setDeadlineTime(DateUtils.addDays(nowTime,coupon.getValidDay())); + } + memberCouponList.add(memberCoupon); + sendTotal = sendTotal + 1; + if(coupon.getSendType()==1){ + sendUserTotal = memberCouponService.totalMemberCouponByUserAndCoupon(userId,coupon.getCouponId()); + if(sendUserTotal!=null&&sendUserTotal>0){ + }else{ + sendPerson = sendPerson + 1; + } + } + memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1); + } + }else{ + memberCouponId = IdUtils.simpleUUID(); + memberCoupon = new MemberCoupon(); + memberCoupon.setId(memberCouponId); + memberCoupon.setDelFlag(0); + memberCoupon.setCouponId(coupon.getCouponId()); + memberCoupon.setUserId(userId); + memberCoupon.setShopId(coupon.getShopId()); + memberCoupon.setCouponType(coupon.getCouponType()); + memberCoupon.setCouponStatus(coupon.getCouponStatus()); + memberCoupon.setCouponName(coupon.getCouponName()); + memberCoupon.setSendType(coupon.getSendType()); + memberCoupon.setSendTarget(coupon.getSendTarget()); + memberCoupon.setSendTimeType(coupon.getSendTimeType()); + memberCoupon.setSendTime(coupon.getSendTime()); + memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); + memberCoupon.setUseScope(coupon.getUseScope()); + memberCoupon.setValidTimeType(coupon.getValidTimeType()); + memberCoupon.setValidStartTime(coupon.getValidStartTime()); + memberCoupon.setValidEndTime(coupon.getValidEndTime()); + memberCoupon.setValidDay(coupon.getValidDay()); + memberCoupon.setCouponFrom(coupon.getCouponFrom()); + memberCoupon.setReceiveTime(nowTime); + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + //有效期处理1.时间段2.领取之日起 + if(coupon.getValidTimeType()==1){ + memberCoupon.setDeadlineTime(coupon.getValidEndTime()); + }else if(coupon.getValidTimeType()==2){ + memberCoupon.setDeadlineTime(DateUtils.addDays(nowTime,coupon.getValidDay())); + } + memberCouponList.add(memberCoupon); + sendTotal = sendTotal + 1; + if(coupon.getSendType()==1){ + sendUserTotal = memberCouponService.totalMemberCouponByUserAndCoupon(userId,coupon.getCouponId()); + if(sendUserTotal!=null&&sendUserTotal>0){ + }else{ + sendPerson = sendPerson + 1; + } + } + memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1); } - memberCouponList.add(memberCoupon); - sendTotal = sendTotal + 1; - if(coupon.getSendType()==1){ - sendUserTotal = memberCouponService.totalMemberCouponByUserAndCoupon(userId,coupon.getCouponId()); - if(sendUserTotal!=null&&sendUserTotal>0){ - }else{ - sendPerson = sendPerson + 1; - } - } - memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1); } memberCouponService.saveBatch(memberCouponList); //处理优惠券统计 diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java index ca03532..32a8647 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java @@ -360,6 +360,9 @@ case 4: member.setBirthday(editValue); break; + case 5: + member.setRealName(editValue); + break; default: break; } @@ -457,7 +460,7 @@ Member member = this.getByUserId(userId); // 设置MerMemberInfoVo对象的属性值 merMemberInfoVo.setUserId(userId); - merMemberInfoVo.setNickName(member.getNickName()); + merMemberInfoVo.setRealName(member.getRealName()); merMemberInfoVo.setPhonenumber(member.getMobile()); merMemberInfoVo.setAvatar(member.getAvatar()); merMemberInfoVo.setBirthday(member.getBirthday()); @@ -532,7 +535,7 @@ MerMemberBasicFileVo merMemberBasicFileVo = new MerMemberBasicFileVo(); Member member = this.getByUserId(userId); BeanUtils.copyProperties(member, merMemberBasicFileVo); - merMemberBasicFileVo.setNickName(member.getNickName()); + merMemberBasicFileVo.setRealName(member.getRealName()); merMemberBasicFileVo.setPhonenumber(member.getMobile()); merMemberBasicFileVo.setCreateTime(member.getCreateTime()); /*List<MemberNurse> memberNurseList = memberNurseService.listByUserId(userId); @@ -607,7 +610,7 @@ * @param merMemberAddDto */ @Override - public void addMerMember(MerMemberAddDto merMemberAddDto) { + public Long addMerMember(MerMemberAddDto merMemberAddDto) { String phoneNumber = merMemberAddDto.getPhonenumber(); Member oldMember = this.getByMobile(phoneNumber); // Check if the member already exists @@ -622,7 +625,7 @@ sysUser = new SysUser(); sysUser.setUserName(memberId); sysUser.setUserType("03"); - sysUser.setNickName(merMemberAddDto.getNickName()); + sysUser.setNickName(merMemberAddDto.getRealName()); sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); String password = "hongruitang"; sysUser.setPassword(SecurityUtils.encryptPassword(password)); @@ -636,8 +639,8 @@ member.setUserId(sysUser.getUserId()); member.setDelFlag(0); member.setFrozenFlag(0); - member.setNickName(merMemberAddDto.getNickName()); - member.setRealName(merMemberAddDto.getNickName()); + member.setNickName(merMemberAddDto.getRealName()); + member.setRealName(merMemberAddDto.getRealName()); member.setGender(merMemberAddDto.getGender()); member.setMobile(phoneNumber); member.setReferrer(merMemberAddDto.getReferrer()); @@ -671,6 +674,7 @@ memberArchiveService.saveBatch(memberArchiveList); } } + return sysUser.getUserId(); } /** @@ -680,54 +684,54 @@ */ @Override public void editMerMember(MerMemberEditDto merMemberEditDto) { - // 获取用户信息 - Member member = this.getByUserId(merMemberEditDto.getEditUserId()); - // 检查手机号是否已经存在 - if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) { - Member memberOld = getByMobile(merMemberEditDto.getPhonenumber()); - if (memberOld != null) { - throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE); + // 获取用户信息 + Member member = this.getByUserId(merMemberEditDto.getEditUserId()); + // 检查手机号是否已经存在 + if (!member.getMobile().equals(merMemberEditDto.getPhonenumber())) { + Member memberOld = getByMobile(merMemberEditDto.getPhonenumber()); + if (memberOld != null) { + throw new ServiceException(AppErrorConstant.MOBILE_DOUBLE); + } + } + // 更新用户信息 + member.setRealName(merMemberEditDto.getRealName()); + member.setMobile(merMemberEditDto.getPhonenumber()); + member.setGender(merMemberEditDto.getGender()); + member.setReferrer(merMemberEditDto.getReferrer()); + member.setCustomerSource(merMemberEditDto.getCustomerSource()); + member.setLevel(merMemberEditDto.getLevel()); + member.setBirthday(merMemberEditDto.getBirthday()); + member.setUpdateUserId(merMemberEditDto.getUserId()); + member.setUpdateTime(new Date()); + List<String> memberNurse = merMemberEditDto.getMemberNurse(); + if(memberNurse!=null&&!memberNurse.isEmpty()){ + String memberNurseString = String.join(",", memberNurse); + member.setMemberNurse(memberNurseString); + } + this.saveOrUpdate(member); + // 更新用户手机号 + SysUser sysUser = new SysUser(); + sysUser.setUserId(merMemberEditDto.getEditUserId()); + sysUser.setPhonenumber(merMemberEditDto.getPhonenumber()); + sysUserService.updateUserMobile(sysUser); + // 删除用户的档案信息 + memberArchiveService.deleteByUserId(sysUser.getUserId()); + // 添加用户的档案信息 + List<MemberArchiveVo> achiveList = merMemberEditDto.getAchiveList(); + if (achiveList != null && !achiveList.isEmpty()) { + // 构造用户档案列表 + List<MemberArchive> memberArchiveList = achiveList.stream().map(memberArchiveVo -> { + MemberArchive memberArchive = new MemberArchive(); + memberArchive.setDelFlag(0); + memberArchive.setUserId(sysUser.getUserId()); + memberArchive.setFieldId(memberArchiveVo.getFieldId()); + memberArchive.setFieldValue(memberArchiveVo.getFieldValue()); + return memberArchive; + }).collect(Collectors.toList()); + // 批量保存用户档案信息 + memberArchiveService.saveBatch(memberArchiveList); } } - // 更新用户信息 - member.setRealName(merMemberEditDto.getNickName()); - member.setMobile(merMemberEditDto.getPhonenumber()); - member.setGender(merMemberEditDto.getGender()); - member.setReferrer(merMemberEditDto.getReferrer()); - member.setCustomerSource(merMemberEditDto.getCustomerSource()); - member.setLevel(merMemberEditDto.getLevel()); - member.setBirthday(merMemberEditDto.getBirthday()); - member.setUpdateUserId(merMemberEditDto.getUserId()); - member.setUpdateTime(new Date()); - List<String> memberNurse = merMemberEditDto.getMemberNurse(); - if(memberNurse!=null&&!memberNurse.isEmpty()){ - String memberNurseString = String.join(",", memberNurse); - member.setMemberNurse(memberNurseString); - } - this.saveOrUpdate(member); - // 更新用户手机号 - SysUser sysUser = new SysUser(); - sysUser.setUserId(merMemberEditDto.getEditUserId()); - sysUser.setPhonenumber(merMemberEditDto.getPhonenumber()); - sysUserService.updateUserMobile(sysUser); - // 删除用户的档案信息 - memberArchiveService.deleteByUserId(sysUser.getUserId()); - // 添加用户的档案信息 - List<MemberArchiveVo> achiveList = merMemberEditDto.getAchiveList(); - if (achiveList != null && !achiveList.isEmpty()) { - // 构造用户档案列表 - List<MemberArchive> memberArchiveList = achiveList.stream().map(memberArchiveVo -> { - MemberArchive memberArchive = new MemberArchive(); - memberArchive.setDelFlag(0); - memberArchive.setUserId(sysUser.getUserId()); - memberArchive.setFieldId(memberArchiveVo.getFieldId()); - memberArchive.setFieldValue(memberArchiveVo.getFieldValue()); - return memberArchive; - }).collect(Collectors.toList()); - // 批量保存用户档案信息 - memberArchiveService.saveBatch(memberArchiveList); - } -} /** * @param mobile @@ -972,11 +976,14 @@ String memberUserIds = mgtMemberRelDelDto.getMemberUserIds(); String[] memberUserIdArr = memberUserIds.split(","); for (String str : memberUserIdArr) { - Member member = this.getByUserId(Long.valueOf(str)); - member.setBindingFlag(0); - member.setUpdateTime(new Date()); - member.setUpdateUserId(mgtMemberRelDelDto.getUserId()); - this.saveOrUpdate(member); + LambdaUpdateWrapper<Member> updateWrapper = Wrappers.lambdaUpdate(); + updateWrapper.eq(Member::getUserId, str) + .set(Member::getBindingFlag, 0) + .set(Member::getRelationShopId,null) + .set(Member::getRelationShopName,null) + .set(Member::getUpdateUserId,mgtMemberRelDelDto.getUserId()) + .set(Member::getUpdateTime,new Date()); + this.update(updateWrapper); } } } @@ -1105,7 +1112,9 @@ mgtMemberGetVo.setCreateTime(member.getCreateTime()); mgtMemberGetVo.setLastPayTime(memberTotal.getLastPayTime()); mgtMemberGetVo.setGoodsType(member.getGoodsType()); - mgtMemberGetVo.setRelationShopName(member.getRelationShopName()); + if(member.getBindingFlag()==1){ + mgtMemberGetVo.setRelationShopName(member.getRelationShopName()); + } mgtMemberGetVo.setIntegral(memberTotal.getTotalIntegral()); mgtMemberGetVo.setMemberFrom(member.getCustomerSource()); mgtMemberGetVo.setTotalActivityCount(memberTotal.getTotalActivityCount()); @@ -1508,7 +1517,7 @@ memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount() - memberTotalChangeDto.getServiceCount()); memberTotal.setUsedServiceCount(memberTotal.getUsedServiceCount() + memberTotalChangeDto.getServiceCount()); } else { - memberTotal.setUseableIntegral(memberTotal.getUseableIntegral() + memberTotalChangeDto.getServiceCount()); + memberTotal.setUseableServiceCount(memberTotal.getUseableServiceCount() + memberTotalChangeDto.getServiceCount()); memberTotal.setTotalServiceCount(memberTotal.getTotalServiceCount() + memberTotalChangeDto.getServiceCount()); } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java index dea4669..80d3eb5 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberSuggestServiceImpl.java @@ -17,19 +17,21 @@ import com.ruoyi.member.service.member.MemberSuggestService; import com.ruoyi.system.api.domain.dto.AppSuggestPageDto; import com.ruoyi.system.api.domain.dto.AppUserSuggestDto; +import com.ruoyi.system.api.domain.dto.MgtBaseBathDto; import com.ruoyi.system.api.domain.dto.MgtShopIdByCodeDto; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.MgtShopIdByCodeVo; +import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo; import com.ruoyi.system.api.service.RemoteConfigService; import com.ruoyi.system.api.service.RemoteShopService; import com.ruoyi.system.api.service.RemoteUserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * <p> @@ -112,11 +114,7 @@ mgtShopIdByCodeDto.setShopCityCode(memberSuggestPageDto.getShopCityCode()); mgtShopIdByCodeDto.setShopAreaCode(memberSuggestPageDto.getShopAreaCode()); MgtShopIdByCodeVo mgtShopIdByCodeVo = remoteShopService.getShopIdByCode(mgtShopIdByCodeDto).getData(); - if(StringUtils.isNotBlank(mgtShopIdByCodeVo.getShopIds())){ - memberSuggestPageDto.setShopIds(mgtShopIdByCodeVo.getShopIds()); - }else{ - return mgtMemberSuggestPageVoList; - } + memberSuggestPageDto.setShopIds(mgtShopIdByCodeVo.getShopIds()); } //处理标签为正则方便sql判断 if(StringUtils.isNotBlank(memberSuggestPageDto.getTags())){ @@ -127,6 +125,25 @@ } //获取返回结果 mgtMemberSuggestPageVoList = memberSuggestMapper.pageMgtMemberSuggest(page, memberSuggestPageDto); + if(mgtMemberSuggestPageVoList!=null&&!mgtMemberSuggestPageVoList.isEmpty()){ + HashSet<Long> shopIdSet = new HashSet<>(); + for(MgtMemberSuggestPageVo mgtMemberSuggestPageVo : mgtMemberSuggestPageVoList){ + if(mgtMemberSuggestPageVo.getShopId()!=null){ + shopIdSet.add(mgtMemberSuggestPageVo.getShopId()); + } + } + String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); + MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); + mgtBaseBathDto.setIds(shopJoinedString); + List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); + Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() + .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); + for(MgtMemberSuggestPageVo mgtMemberSuggestPageVo : mgtMemberSuggestPageVoList){ + if(mgtMemberSuggestPageVo.getShopId()!=null){ + mgtMemberSuggestPageVo.setShopName(shopMap.get(mgtMemberSuggestPageVo.getShopId()).getShopName()); + } + } + } return mgtMemberSuggestPageVoList; } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java index d82f009..500909c 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java @@ -111,7 +111,7 @@ * 添加会员 * @param merMemberAddDto */ - void addMerMember(MerMemberAddDto merMemberAddDto); + Long addMerMember(MerMemberAddDto merMemberAddDto); /** * 编辑会员 diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml index 3c1a97f..2f58738 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberCouponMapper.xml @@ -206,6 +206,8 @@ <select id="listMerShopGoodsMemberCoupon" resultType="com.ruoyi.system.api.domain.vo.MerMemberCouponVo"> SELECT tuc.id memberCouponId, + tuc.use_scope, + tuc.rel_goods_ids relGoodsIds, tuc.coupon_type couponType, tuc.coupon_name couponName, tuc.money_threshold moneyThreshold, @@ -214,9 +216,11 @@ tuc.valid_start_time validStartTime, tuc.deadline_time deadlineTime FROM t_member_coupon tuc - WHERE tuc.del_flag = 0 AND tuc.coupon_status = 1 AND tuc.user_id = #{param.userId} AND tuc.coupon_type IN (1,2,3) + WHERE tuc.del_flag = 0 AND tuc.coupon_status = 1 AND tuc.user_id = #{param.memberUserId} AND tuc.coupon_type IN (1,2,3) AND (tuc.coupon_from = 1 OR (tuc.coupon_from = 2 AND tuc.shop_id = #{param.shopId})) - AND (tuc.use_scope = 1 OR (tuc.use_scope = 2 AND FIND_IN_SET(#{param.goodsId}, rel_goods_ids) > 0)) + <if test="param.goodsId!=null and param.goodsId!=''"> + AND (tuc.use_scope = 1 OR (tuc.use_scope = 2 AND FIND_IN_SET(#{param.goodsId}, rel_goods_ids) > 0)) + </if> ORDER BY tuc.receive_time DESC </select> </mapper> diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml index 6c6afec..9457c88 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml @@ -199,10 +199,10 @@ AND FIND_IN_SET(#{param.memberNurse},tm.member_nurse) > 0 </if> <if test="param.actStartDate!=null and param.actStartDate!=''"> - AND Date(tmt.last_pay_time) >= #{param.actStartDate} + AND Date(tmt.last_service_time) >= #{param.actStartDate} </if> <if test="param.actEndDate!=null and param.actEndDate!=''"> - AND Date(tmt.last_pay_time) <= #{param.actEndDate} + AND Date(tmt.last_service_time) <= #{param.actEndDate} </if> <if test="param.keyword != null and param.keyword != ''"> AND (tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tm.referrer LIKE CONCAT('%',#{param.keyword},'%')) @@ -213,7 +213,7 @@ <select id="pageMerCashMember" resultType="com.ruoyi.member.domain.vo.MerCashMemberPageVo"> SELECT tm.user_id userId, - tm.nick_name nickName, + tm.real_name nickName, tm.mobile mobile FROM t_member tm WHERE tm.relation_shop_id = #{param.shopId} @@ -240,7 +240,7 @@ tm.create_time createTime, tmt.last_pay_time lastPayTime, tm.goods_type goodsType, - tm.relation_shop_name relationShopName, + CASE binding_flag WHEN 1 THEN tm.relation_shop_name ELSE "" END relationShopName, tmt.total_integral integral, tm.referrer referrer, tm.customer_source memberFrom, @@ -252,7 +252,7 @@ LEFT JOIN t_member_total tmt ON tm.member_id = tmt.member_id WHERE tm.del_flag = 0 <if test="param.keyword != null and param.keyword != ''"> - AND (tm.member_no LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.nick_name LIKE CONCAT('%',#{param.keyword},'%') OR FIND_IN_SET(#{param.keyword},tm.member_nurse) > 0) + AND (tm.user_id LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.nick_name LIKE CONCAT('%',#{param.keyword},'%') OR FIND_IN_SET(#{param.keyword},tm.member_nurse) > 0) </if> <if test="param.belongDistrict != null and param.belongDistrict != ''"> AND tm.belong_district = #{param.belongDistrict} @@ -270,7 +270,7 @@ AND FIND_IN_SET(#{param.goodsType},tm.goods_type) > 0 </if> <if test="param.relationShopId != null and param.relationShopId != ''"> - AND tm.relation_shop_id = #{param.relationShopId} + AND tm.relation_shop_id = #{param.relationShopId} AND tm.binding_flag = 1 </if> <if test="param.memberFrom != null and param.memberFrom != ''"> AND tm.customer_source = #{param.memberFrom} @@ -294,10 +294,10 @@ AND tmt.total_integral <= #{param.endIntegral} </if> <if test="param.actStartDate != null and param.actStartDate != ''"> - AND Date(tmt.last_pay_time) >= #{param.actStartDate} + AND Date(tmt.last_service_time) >= #{param.actStartDate} </if> <if test="param.actEndDate != null and param.actEndDate != ''"> - AND Date(tmt.last_pay_time) <= #{param.actEndDate} + AND Date(tmt.last_service_time) <= #{param.actEndDate} </if> <if test="param.startPayCount != null and param.startPayCount != ''"> AND tmt.total_pay_count >= #{param.startPayCount} @@ -327,7 +327,7 @@ <if test="sendType != null and sendType == 4"> AND tm.binding_flag = 0 </if> - <if test="shopId != null and shopId != ''"> + <if test="shopId != null and shopId != '' and sendType != null and sendType != 4"> AND tm.relation_shop_id = #{shopId} </if> </select> @@ -483,10 +483,10 @@ AND tm.relation_shop_id = #{shopId} </if> <if test="actStartDate != null and actStartDate != ''"> - AND Date(tmt.last_pay_time) >= #{actStartDate} + AND Date(tmt.last_service_time) >= #{actStartDate} </if> <if test="actEndDate != null and actEndDate != ''"> - AND Date(tmt.last_pay_time) <= #{actEndDate} + AND Date(tmt.last_service_time) <= #{actEndDate} </if> </select> @@ -664,10 +664,10 @@ </foreach> </if> <if test="actStartDate != null and actStartDate != ''"> - AND Date(tmt.last_pay_time) >= #{actStartDate} + AND Date(tmt.last_service_time) >= #{actStartDate} </if> <if test="actEndDate != null and actEndDate != ''"> - AND Date(tmt.last_pay_time) <= #{actEndDate} + AND Date(tmt.last_service_time) <= #{actEndDate} </if> </select> diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml index 7f53c05..90c4516 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberSuggestMapper.xml @@ -39,7 +39,8 @@ tms.shop_replay_user_name shopReplayUserName, tms.shop_replay_time shopReplayTime, tms.shop_response_time shopResponseTime, - tms.suggest_tags suggestTags + tms.suggest_tags suggestTags, + tms.shop_id shopId FROM t_member_suggest tms INNER JOIN t_member tm ON tms.create_user_id = tm.user_id diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/MyWxPayConfig.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/MyWxPayConfig.java deleted file mode 100644 index 1dc0d70..0000000 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/MyWxPayConfig.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.ruoyi.order.config; - -import com.github.binarywang.wxpay.config.WxPayConfig; -import com.github.binarywang.wxpay.service.WxPayService; -import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * @author jqs34 - * @ClassName WxPayConfig - * @description: TODO - * @date 2023年03月06日 - * @version: 1.0 - */ -@Configuration -@ConditionalOnClass(WxPayService.class) -public class MyWxPayConfig { - //微信API - private static final String APP_ID = ""; - //微信商户号 - private static final String MAC_ID = ""; - //微信商户密钥 - private static final String MCH_KEY = ""; - //微信证书API - private static final String KEY_PATH = ""; - - private static final String PRIVATE_KEY_PATH = ""; - - private static final String PRIVATE_CERT_PATH = ""; - - private static final String API_V3_KEY = ""; - - @Bean - @ConditionalOnMissingBean - public WxPayService wxService() { - WxPayConfig payConfig = new WxPayConfig(); - payConfig.setAppId(APP_ID); - payConfig.setMchId(MAC_ID); - payConfig.setMchKey(MCH_KEY); - payConfig.setKeyPath(KEY_PATH); - payConfig.setPrivateKeyPath(PRIVATE_KEY_PATH); - payConfig.setPrivateCertPath(PRIVATE_CERT_PATH); - payConfig.setApiV3Key(API_V3_KEY); - // 可以指定是否使用沙箱环境 - payConfig.setUseSandboxEnv(false); - WxPayService wxPayService = new WxPayServiceImpl(); - wxPayService.setConfig(payConfig); - return wxPayService; - } - -} - diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java new file mode 100644 index 0000000..9cd9524 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java @@ -0,0 +1,54 @@ +package com.ruoyi.order.config; + +import com.github.binarywang.wxpay.config.WxPayConfig; +import com.github.binarywang.wxpay.service.WxPayService; +import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author Binary Wang + */ +@Configuration +@ConditionalOnClass(WxPayService.class) +@EnableConfigurationProperties(WxPayProperties.class) +@AllArgsConstructor +public class WxPayConfiguration { + + private WxPayProperties properties; + + // 分账特约商户 + private static String PLATFORM_TY_MAC_ID = ""; + + public static String getPlatformTyMacId() { + return PLATFORM_TY_MAC_ID; + } + + @Bean + @ConditionalOnMissingBean + public WxPayService wxService() { + WxPayConfig payConfig = new WxPayConfig(); + payConfig.setAppId(StringUtils.trimToNull(this.properties.getAppId())); + payConfig.setMchId(StringUtils.trimToNull(this.properties.getMchId())); + payConfig.setMchKey(StringUtils.trimToNull(this.properties.getMchKey())); + payConfig.setSubAppId(StringUtils.trimToNull(this.properties.getSubAppId())); + payConfig.setSubMchId(StringUtils.trimToNull(this.properties.getSubMchId())); + payConfig.setKeyPath(StringUtils.trimToNull(this.properties.getKeyPath())); + + // 平台特约商户号 + PLATFORM_TY_MAC_ID = this.properties.getPlatformTyMacId(); + + // 可以指定是否使用沙箱环境 + payConfig.setUseSandboxEnv(false); + + WxPayService wxPayService = new WxPayServiceImpl(); + wxPayService.setConfig(payConfig); + return wxPayService; + } + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java new file mode 100644 index 0000000..0089c12 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayProperties.java @@ -0,0 +1,49 @@ +package com.ruoyi.order.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * wxpay pay properties. + * + * @author Binary Wang + */ +@Data +@ConfigurationProperties(prefix = "wx.pay") +public class WxPayProperties { + /** + * 设置微信公众号或者小程序等的appid + */ + private String appId; + + /** + * 微信支付商户号 + */ + private String mchId; + + /** + * 微信支付商户密钥 + */ + private String mchKey; + + /** + * 平台特约商户号,用户平台收取服务费 + */ + private String platformTyMacId; + + /** + * 服务商模式下的子商户公众账号ID,普通模式请不要配置,请在配置文件中将对应项删除 + */ + private String subAppId; + + /** + * 服务商模式下的子商户号,普通模式请不要配置,最好是请在配置文件中将对应项删除 + */ + private String subMchId; + + /** + * apiclient_cert.p12文件的绝对路径,或者如果放在项目中,请以classpath:开头指定 + */ + private String keyPath; + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java index 01b334d..13bd363 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/business/MerOrderController.java @@ -18,8 +18,6 @@ import javax.annotation.Resource; import java.util.List; -import static org.reflections.Reflections.log; - /** * @author jqs34 * @ClassName MerOrderController @@ -154,10 +152,20 @@ Page<MerMemberNoClearOrderVo> page = new Page<>(); page.setSize(merMemberNoClearOrderDto.getPageSize()); page.setCurrent(merMemberNoClearOrderDto.getPageNum()); - log.info("merMemberNoClearOrderDto----"+merMemberNoClearOrderDto.toString()); List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderService.pageMerMemberOrder(page,merMemberNoClearOrderDto); return R.ok(page.setRecords(merMemberNoClearOrderVoList)); } + @RequestMapping(value = "/pageMerMemberPayOrder", method = RequestMethod.POST) + @ApiOperation(value = "获取商户端用户消费记录") + public R<Page<MerOrderPageVo>> pageMerMemberPayOrder(@RequestBody MerMemberNoClearOrderDto merOrderPageDto) { + Long userId = SecurityUtils.getUserId(); + merOrderPageDto.setUserId(userId); + Page<MerOrderPageVo> page = new Page<>(); + page.setSize(merOrderPageDto.getPageSize()); + page.setCurrent(merOrderPageDto.getPageNum()); + List<MerOrderPageVo> merOrderPageVoList = orderService.pageMerMemberPayOrder(page,merOrderPageDto); + return R.ok(page.setRecords(merOrderPageVoList)); + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java index ec99696..68fbe77 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java @@ -53,8 +53,10 @@ Long userId = SecurityUtils.getUserId(); mgtMemberServiceRecordPageDto.setUserId(userId); Page<MgtMemberServiceRecordPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtMemberServiceRecordPageVo> list = userServiceRecordService.pageMgtMemberServiceRecord(page,mgtMemberServiceRecordPageDto); ExcelUtil<MgtMemberServiceRecordPageVo> util = new ExcelUtil<MgtMemberServiceRecordPageVo>(MgtMemberServiceRecordPageVo.class); util.exportExcel(response, list, "用户浏览记录"); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java index 2954027..4cfb820 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java @@ -65,8 +65,10 @@ Long userId = SecurityUtils.getUserId(); mgtMemberOrderPageDto.setUserId(userId); Page<MgtMemberOrderPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtMemberOrderPageVo> mgtMemberOrderPageVoList = orderService.pageMgtMemberOrder(page,mgtMemberOrderPageDto); if(!mgtMemberOrderPageVoList.isEmpty()){ List<MgtOrderGoodsPageVo> mgtOrderGoodsVoList; @@ -92,6 +94,8 @@ return R.ok(mgtOrderTotal); } + + @RequestMapping(value = "/pageMgtActivityOrder", method = RequestMethod.POST) @ApiOperation(value = "平台获取秒杀订单列表") public R<Page<MgtActivityOrderPageVo>> pageMgtActivityOrder(@RequestBody MgtShopOrderPageDto mgtShopOrderPageDto) { @@ -110,8 +114,10 @@ Long userId = SecurityUtils.getUserId(); mgtShopOrderPageDto.setUserId(userId); Page<MgtActivityOrderPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtActivityOrderPageVo> mgtActivityOrderPageVos = orderService.pageMgtActivityOrder(page,mgtShopOrderPageDto); ExcelUtil<MgtActivityOrderPageVo> util = new ExcelUtil<MgtActivityOrderPageVo>(MgtActivityOrderPageVo.class); util.exportExcel(response, mgtActivityOrderPageVos, "秒杀订单列表"); @@ -135,8 +141,10 @@ Long userId = SecurityUtils.getUserId(); mgtShopOrderPageDto.setUserId(userId); Page<MgtShopOrderPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtShopOrderPageVo> shopOrderPageVoList = orderService.pageMgtShopOrder(page,mgtShopOrderPageDto); ExcelUtil<MgtShopOrderPageVo> util = new ExcelUtil<MgtShopOrderPageVo>(MgtShopOrderPageVo.class); util.exportExcel(response, shopOrderPageVoList, "门店订单列表"); @@ -151,6 +159,15 @@ return R.ok(mgtOrderDetail); } + @RequestMapping(value = "/getMgtShopAllOrderTotal", method = RequestMethod.POST) + @ApiOperation(value = "获取商户订单统计") + public R<MgtShopAllOrderTotal> getMgtShopAllOrderTotal(@RequestBody MgtShopAllOrderPageDto mgtShopAllOrderPageDto) { + Long userId = SecurityUtils.getUserId(); + mgtShopAllOrderPageDto.setUserId(userId); + MgtShopAllOrderTotal shopAllOrderTotal = orderService.getMgtShopAllOrderTotal(mgtShopAllOrderPageDto); + return R.ok(shopAllOrderTotal); + } + @RequestMapping(value = "/pageMgtShopAllOrder", method = RequestMethod.POST) @ApiOperation(value = "平台获取商户订单记录") public R<Page<MgtShopAllOrderPageVo>> pageMgtShopAllOrder(@RequestBody MgtShopAllOrderPageDto mgtShopAllOrderPageDto) { diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java index ff9ee11..0af1e43 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java @@ -15,6 +15,7 @@ import com.ruoyi.system.api.domain.dto.AppBaseGetDto; import com.ruoyi.system.api.domain.dto.AppMemberBindingDto; import com.ruoyi.system.api.domain.poji.member.Member; +import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.service.RemoteConfigService; import com.ruoyi.system.api.service.RemoteMemberService; import io.swagger.annotations.Api; @@ -57,10 +58,10 @@ @ApiOperation(value = "购买商品") public R<AppSureOrderVo> buyGoods(@RequestBody AppSureOrderDto appSureOrderDto) { Long userId = SecurityUtils.getUserId(); - if(userId!=null){ + if (userId != null) { Member member = memberService.getMember(userId).getData(); appSureOrderDto.setUserId(userId); - if(member!=null&&member.getRelationShopId()!=null){ + if (member != null && member.getRelationShopId() != null) { appSureOrderDto.setShopId(member.getRelationShopId()); } } @@ -73,10 +74,10 @@ @ApiOperation(value = "抢购商品") public R<AppPanicBuyVo> panicBuyGoods(@RequestBody AppPanicBuyDto appPanicBuyDto) { Long userId = SecurityUtils.getUserId(); - if(userId!=null){ + if (userId != null) { Member member = memberService.getMember(userId).getData(); appPanicBuyDto.setUserId(userId); - if(member!=null&&member.getRelationShopId()!=null){ + if (member != null && member.getRelationShopId() != null) { appPanicBuyDto.setShopId(member.getRelationShopId()); } } @@ -87,20 +88,26 @@ @RequestMapping(value = "/placeOrder", method = RequestMethod.POST) @ApiOperation(value = "创建订单") public R<AppPlaceOrderVo> placeOrder(@RequestBody AppPlaceOrderDto appPlaceOrderDto) { - Long userId = SecurityUtils.getUserId(); - if(userId!=null){ + LoginUser loginUser = SecurityUtils.getLoginUser(); + Long userId = loginUser.getUserid(); + appPlaceOrderDto.setUserId(userId); + appPlaceOrderDto.setSpbillCreateIp(loginUser.getIpaddr()); + + if (userId != null) { Member member = memberService.getMember(userId).getData(); appPlaceOrderDto.setUserId(userId); - if(member!=null&&member.getRelationShopId()!=null){ + + if (member != null) { + appPlaceOrderDto.setOpenid(member.getMiniOpenid()); appPlaceOrderDto.setShopId(member.getRelationShopId()); - } - if(member.getBindingFlag()!=1){ - //绑定商户 - AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); - appMemberBindingDto.setShopId(appPlaceOrderDto.getShopId()); - appMemberBindingDto.setUserId(userId); - appMemberBindingDto.setBindingFlag(1); - memberService.updateMemberBinding(appMemberBindingDto); + if (member.getBindingFlag() != 1) { + //绑定商户 + AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); + appMemberBindingDto.setShopId(appPlaceOrderDto.getShopId()); + appMemberBindingDto.setUserId(userId); + appMemberBindingDto.setBindingFlag(1); + memberService.updateMemberBinding(appMemberBindingDto); + } } } AppPlaceOrderVo appPlaceOrderVo = orderService.placeOrder(appPlaceOrderDto); @@ -111,13 +118,13 @@ @ApiOperation(value = "创建活动订单") public R<AppPlaceOrderVo> placeActivityOrder(@Validated @RequestBody AppPlaceActivityDto appPlaceActivityDto) { Long userId = SecurityUtils.getUserId(); - if(userId!=null){ + if (userId != null) { Member member = memberService.getMember(userId).getData(); appPlaceActivityDto.setUserId(userId); - if(member!=null&&member.getRelationShopId()!=null){ + if (member != null && member.getRelationShopId() != null) { appPlaceActivityDto.setShopId(member.getRelationShopId()); } - if(member.getBindingFlag()!=1){ + if (member.getBindingFlag() != 1) { //绑定商户 AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setShopId(appPlaceActivityDto.getShopId()); @@ -134,18 +141,18 @@ @ApiOperation(value = "分页获取用户订单") public R<Page<AppUserOrderPageVo>> pageUserOrder(@RequestBody AppUserOrderPageDto appUserOrderPageDto) { Long userId = SecurityUtils.getUserId(); - if(userId!=null){ + if (userId != null) { Member member = memberService.getMember(userId).getData(); appUserOrderPageDto.setUserId(userId); - if(member!=null&&member.getRelationShopId()!=null){ + if (member != null && member.getRelationShopId() != null) { appUserOrderPageDto.setShopId(member.getRelationShopId()); } } - logger.info("appUserOrderPageDto:"+appUserOrderPageDto.toString()); + logger.info("appUserOrderPageDto:" + appUserOrderPageDto.toString()); Page<AppUserOrderPageVo> page = new Page<>(); page.setSize(appUserOrderPageDto.getPageSize()); page.setCurrent(appUserOrderPageDto.getPageNum()); - List<AppUserOrderPageVo> appUserOrderPageVoList = orderService.pageUserOrder(page,appUserOrderPageDto); + List<AppUserOrderPageVo> appUserOrderPageVoList = orderService.pageUserOrder(page, appUserOrderPageDto); return R.ok(page.setRecords(appUserOrderPageVoList)); } @@ -154,17 +161,17 @@ public R<AppUserOrderGetVo> getAppOrderDetail(@RequestBody AppBaseGetDto appBaseGetDto) { Long userId = SecurityUtils.getUserId(); Long shopId = null; - if(userId!=null){ + if (userId != null) { Member member = memberService.getMember(userId).getData(); appBaseGetDto.setUserId(userId); - if(member!=null&&member.getRelationShopId()!=null){ + if (member != null && member.getRelationShopId() != null) { shopId = member.getRelationShopId(); } } AppUserOrderGetVo appUserOrderGetVo = orderService.getAppOrderDetail(appBaseGetDto); - if(shopId!=null&&appUserOrderGetVo.getShopId().equals(shopId)){ + if (shopId != null && appUserOrderGetVo.getShopId().equals(shopId)) { appUserOrderGetVo.setSameShop(1); - }else{ + } else { appUserOrderGetVo.setSameShop(0); } return R.ok(appUserOrderGetVo); @@ -184,12 +191,12 @@ appPlaceOrderVo.setPayMoney(order.getPayMoney()); appPlaceOrderVo.setUnpaidMoney(order.getPayMoney()); Integer delayTime = 30; - if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ + if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId()); - appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime)); + appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); return R.ok(appPlaceOrderVo); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java index 5dc6de6..775d9da 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java @@ -1,38 +1,34 @@ package com.ruoyi.order.controller.miniapp; -import com.ruoyi.common.core.domain.R; +import com.github.binarywang.wxpay.bean.ecommerce.*; +import com.github.binarywang.wxpay.bean.notify.WxPayNotifyV3Response; +import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyData; +import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.github.binarywang.wxpay.service.ProfitSharingV3Service; +import com.github.binarywang.wxpay.service.WxPayService; +import com.github.binarywang.wxpay.v3.auth.Verifier; +import com.github.binarywang.wxpay.v3.util.AesUtils; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.ruoyi.common.core.web.controller.BaseController; -import com.ruoyi.order.domain.dto.AppSureOrderDto; -import com.ruoyi.order.domain.dto.WXPayNotifyDto; -import com.ruoyi.order.domain.vo.AppSureOrderVo; +import com.ruoyi.order.domain.vo.ProfitSharingNotifyNewResult; +import com.ruoyi.order.enums.WxPayNotifyEventTypeEnum; +import com.ruoyi.order.service.account.BackMessageService; import com.ruoyi.order.service.order.OrderService; -import com.wechat.pay.contrib.apache.httpclient.notification.Notification; -import com.wechat.pay.contrib.apache.httpclient.notification.NotificationHandler; -import com.wechat.pay.contrib.apache.httpclient.notification.NotificationRequest; -import com.wechat.pay.java.core.Config; -import com.wechat.pay.java.core.RSAAutoCertificateConfig; -import com.wechat.pay.java.core.RSAConfig; -import com.wechat.pay.java.core.cipher.PrivacyEncryptor; -import com.wechat.pay.java.core.notification.NotificationConfig; -import com.wechat.pay.java.core.notification.NotificationParser; -import com.wechat.pay.java.core.notification.RequestParam; -import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import net.bytebuddy.asm.Advice; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.BufferedReader; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.util.HashMap; +import java.security.GeneralSecurityException; import java.util.Map; +import java.util.Objects; /** * @program: ruoyi @@ -44,88 +40,82 @@ @RestController @RequestMapping("/app/notify") public class NotifyController extends BaseController { - /** 商户号 */ - public static String merchantId = ""; - /** 商户API私钥路径 */ - public static String privateKeyPath = ""; - /** 商户证书序列号 */ - public static String merchantSerialNumber = ""; - /** 微信支付平台证书路径 */ - public static String wechatPayCertificatePath = ""; - /** 商户APIV3密钥 */ - public static String apiV3key = "..."; + + public static final String WECHAT_PAY_SERIAL = "Wechatpay-Serial"; + public static final String WECHAT_PAY_SIGNATURE = "Wechatpay-Signature"; + public static final String WECHAT_PAY_TIMESTAMP = "Wechatpay-Timestamp"; + public static final String WECHAT_PAY_NONCE = "Wechatpay-Nonce"; + + private static final Gson GSON = new GsonBuilder().create(); @Resource private OrderService orderService; - @RequestMapping(value = "/payNotify", method = RequestMethod.POST) - @ApiOperation(value = "微信支付通知") - public Map payNotify(HttpServletRequest request, HttpServletResponse response) { - Config config = - new RSAConfig.Builder() - .merchantId(merchantId) - .privateKeyFromPath(privateKeyPath) - .merchantSerialNumber(merchantSerialNumber) - .wechatPayCertificatesFromPath(wechatPayCertificatePath) - .build(); + @Autowired + private WxPayService wxService; + @Resource + private BackMessageService backMessageService; - PrivacyEncryptor encryptor = config.createEncryptor(); - String wechatPayCertificateSerialNumber = encryptor.getWechatpaySerial(); + @PostMapping(value = "/payNotify") + @ApiOperation(value = "微信支付/退款通知") + public String payNotify(@RequestBody String notifyData, HttpServletRequest request, HttpServletResponse response) throws WxPayException { + // 获取请求头 + SignatureHeader signatureHeader = getSignatureHeader(response); - String nonoc=request.getHeader("Wechatpay-Nonce"); - String signature=request.getHeader("Wechatpay-Signature"); - String timestamp=request.getHeader("Wechatpay-Timestamp"); - String serial=request.getHeader("Wechatpay-Serial"); - String signatureType=request.getHeader("Wechatpay-Signature-Type"); + NotifyResponse responseData = GSON.fromJson(notifyData, NotifyResponse.class); + String eventType = responseData.getEventType(); - String requestBody=""; - - try { - BufferedReader reader = request.getReader(); - String line = ""; - StringBuffer inputString = new StringBuffer(); - while ( (line = reader.readLine()) != null ) { - inputString.append(line); + int resultType = 1; + String resultMessage = ""; + if(WxPayNotifyEventTypeEnum.TRANSACTION_SUCCESS.getCode().equals(eventType)){ + PartnerTransactionsNotifyResult notifyResult = wxService.getEcommerceService().parsePartnerNotifyResult(notifyData, signatureHeader); + PartnerTransactionsResult result = notifyResult.getResult(); + // 支付通知回调 + if("SUCCESS".equals(result.getTradeState())){ + orderService.payBack(result); } - if(inputString!=null && !"".equals(inputString)) { - requestBody = inputString.toString(); - } - reader.close(); - } catch (IOException e) { - e.printStackTrace(); + resultMessage = GSON.toJson(notifyResult); + } else if(WxPayNotifyEventTypeEnum.REFUND_SUCCESS.getCode().equals(eventType) + || WxPayNotifyEventTypeEnum.REFUND_ABNORMAL.getCode().equals(eventType) + || WxPayNotifyEventTypeEnum.REFUND_CLOSED.getCode().equals(eventType)){ + + RefundNotifyResult result = wxService.getEcommerceService().parseRefundNotifyResult(notifyData, signatureHeader); + orderService.orderRefundBack(result); + resultType = 2; + resultMessage = GSON.toJson(result); + } + // 保存支付/退款回调信息 + backMessageService.saveBackMessage(resultType, resultMessage); + + + return WxPayNotifyV3Response.success("成功"); + } + + @PostMapping(value = "/profitSharingNotify") + @ApiOperation(value = "微信分账通知") + public String profitSharingNotify(@RequestBody String notifyData, HttpServletRequest request, HttpServletResponse response) throws WxPayException { + ProfitSharingV3Service sharingV3Service = wxService.getProfitSharingV3Service(); + // ProfitSharingNotifyResult + + // 获取请求头 + SignatureHeader signatureHeader = getSignatureHeader(response); + + + ProfitSharingNotifyNewResult notifyResult = getProfitSharingNotifyData(notifyData, signatureHeader); + ProfitSharingNotifyResult result = notifyResult.getResult(); + + String eventType = notifyResult.getRawData().getEventType(); + if(WxPayNotifyEventTypeEnum.PROFIT_SHARING_SUCCESS.getCode().equals(eventType)){ + // 分账通知回调 + orderService.profitSharingBack(result); } - RequestParam requestParam = new RequestParam.Builder() - .serialNumber(wechatPayCertificateSerialNumber) - .nonce(nonoc) - .signature(signature) - .timestamp(timestamp) - .body(requestBody) - .build(); + String resultMessage = GSON.toJson(notifyResult); + // 保存记录分账回调信息 + backMessageService.saveBackMessage(3, resultMessage); - NotificationConfig notifiConfig = new RSAAutoCertificateConfig.Builder() - .merchantId(merchantId) - .privateKeyFromPath(privateKeyPath) - .merchantSerialNumber(merchantSerialNumber) - .apiV3Key(apiV3key) - .build(); - - NotificationParser parser = new NotificationParser(notifiConfig); - - Transaction transaction = parser.parse(requestParam, Transaction.class); - - - String tradeStateEnum=transaction.getTradeState().toString(); - if(tradeStateEnum.equals("success")){ - orderService.payBack(transaction); - } - - Map map=new HashMap(); - map.put("code","SUCCESS"); - map.put("message","成功"); - - return map; + return WxPayNotifyV3Response.success("成功"); } @RequestMapping(value = "/shareNotify", method = RequestMethod.POST) @@ -135,4 +125,49 @@ return null; } + public ProfitSharingNotifyNewResult getProfitSharingNotifyData(String notifyData, SignatureHeader header) throws WxPayException { + if (Objects.nonNull(header) && !this.verifyNotifySign(header, notifyData)) { + throw new WxPayException("非法请求,头部信息验证失败"); + } + ProfitSharingNotifyData response = GSON.fromJson(notifyData, ProfitSharingNotifyData.class); + + ProfitSharingNotifyData.Resource resource = response.getResource(); + String cipherText = resource.getCipherText(); + String associatedData = resource.getAssociatedData(); + String nonce = resource.getNonce(); + String apiV3Key = this.wxService.getConfig().getApiV3Key(); + try { + String result = AesUtils.decryptToString(associatedData, nonce, cipherText, apiV3Key); + ProfitSharingNotifyResult profitSharingResult = GSON.fromJson(result, ProfitSharingNotifyResult.class); + + ProfitSharingNotifyNewResult notifyResult = new ProfitSharingNotifyNewResult(); + notifyResult.setRawData(response); + notifyResult.setResult(profitSharingResult); + return notifyResult; + } catch (GeneralSecurityException | IOException e) { + throw new WxPayException("解析报文异常!", e); + } + } + + private boolean verifyNotifySign(SignatureHeader header, String data) throws WxPayException { + String beforeSign = String.format("%s\n%s\n%s\n", + header.getTimeStamp(), + header.getNonce(), + data); + Verifier verifier = this.wxService.getConfig().getVerifier(); + if (verifier == null) { + throw new WxPayException("证书检验对象为空"); + } + return verifier.verify(header.getSerialNo(), + beforeSign.getBytes(StandardCharsets.UTF_8), header.getSigned()); + } + + private SignatureHeader getSignatureHeader(HttpServletResponse response){ + SignatureHeader signatureHeader = new SignatureHeader(); + signatureHeader.setSerialNo(response.getHeader(WECHAT_PAY_SERIAL)); + signatureHeader.setSigned(response.getHeader(WECHAT_PAY_SIGNATURE)); + signatureHeader.setNonce(response.getHeader(WECHAT_PAY_NONCE)); + signatureHeader.setTimeStamp(response.getHeader(WECHAT_PAY_TIMESTAMP)); + return signatureHeader; + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java index 9ae6559..de162a0 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerCloseOrderDto.java @@ -24,4 +24,7 @@ @ApiModelProperty(value = "支付备注") private String payRemark; + + @ApiModelProperty(value = "支付方式1微信2现金3支付宝") + private Integer payType; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java index e447fae..90d6147 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerNewOrderDto.java @@ -35,7 +35,7 @@ @ApiModelProperty(value = "改变金额") private BigDecimal changeMoney; - @ApiModelProperty(value = "支付方式") + @ApiModelProperty(value = "支付方式1微信2现金3支付宝") private Integer payType; @ApiModelProperty(value = "订单备注") diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java index eb78000..11bc5f1 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MerVerifyOrderDto.java @@ -24,4 +24,7 @@ @ApiModelProperty(value = "实付金额") private BigDecimal relPayMoney; + + @ApiModelProperty(value = "支付方式1微信2现金3支付宝") + private Integer payType; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtMemberOrderTotalDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtMemberOrderTotalDto.java index fd8fd4d..117a045 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtMemberOrderTotalDto.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtMemberOrderTotalDto.java @@ -4,8 +4,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.Date; - /** * @author jqs34 * @ClassName MgtMemberOrderTotalDto @@ -17,7 +15,7 @@ public class MgtMemberOrderTotalDto extends MgtBaseDto { @ApiModelProperty(value = "用户id") - private Long userId; + private Long memberUserId; @ApiModelProperty(value = "搜索关键词") private String keyword; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtShopOrderPageDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtShopOrderPageDto.java index 38b5824..1d7c3a0 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtShopOrderPageDto.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/MgtShopOrderPageDto.java @@ -17,6 +17,9 @@ @ApiModelProperty(value = "关键词") private String keyword; + @ApiModelProperty(value = "订单来源") + private Integer orderFrom; + @ApiModelProperty(value = "订单状态0.已取消1.待支付2.待核销3.已完成") private Integer orderStatus; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/BackMessage.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/BackMessage.java index 9094dc2..26c7e38 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/BackMessage.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/BackMessage.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; +import java.util.Date; import lombok.Data; import lombok.EqualsAndHashCode; @@ -38,7 +39,7 @@ @TableField("del_flag") private String delFlag; /** - * 回调类型1支付回调2退款回调 + * 回调类型 1支付回调 2退款回调 3、分账 */ @TableField("result_type") private Integer resultType; @@ -47,6 +48,11 @@ */ @TableField("result_message") private String resultMessage; + /** + * 回调时间 + */ + @TableField("create_time") + private Date createTime; @Override diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java index bfc24aa..93d22e0 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java @@ -49,6 +49,12 @@ @TableField("shop_id") private Long shopId; /** + * 订单二级商户号 + */ + @TableField("sub_mch_id") + private String subMchId; + + /** * 订单id */ @TableField("order_id") diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderRefund.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderRefund.java index 4cfa669..906c44a 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderRefund.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderRefund.java @@ -99,7 +99,21 @@ * 回调时间 */ @TableField("back_time") - private Date backTime; + private String backTime; + + /** + * 微信退款订单id + */ + @TableField("wx_refund_id") + private String wxRefundId; + + /** + * 1、发起退款 2、已退款 + */ + @TableField("refund_status") + private Integer refundStatus; + + @Override diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/PaymentMessage.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/PaymentMessage.java index 179d46e..ee2d709 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/PaymentMessage.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/PaymentMessage.java @@ -47,7 +47,7 @@ * 发起关联id */ @TableField("send_id") - private Long sendId; + private String sendId; /** * 发送报文 */ diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/ProfitSharing.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/ProfitSharing.java index ad038c8..f45be82 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/ProfitSharing.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/ProfitSharing.java @@ -40,7 +40,7 @@ private Integer delFlag; /** * 1:PROCESSING:处理中 -2:FINISHED:分账完成 + 2:FINISHED:分账完成 */ @TableField("share_status") private Integer shareStatus; @@ -93,7 +93,15 @@ * 完成时间 */ @TableField("finish_time") - private Date finishTime; + private String finishTime; + + /** + * 微信分账/回退单号 + */ + @TableField("wx_order_id") + private String wxOrderId; + + /** * 分账失败原因 1、ACCOUNT_ABNORMAL : 分账接收账户异常 diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java index a9f97c6..7ef0330 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/ConsumerGoods.java @@ -108,6 +108,9 @@ */ @TableField("goods_type") private Integer goodsType; + + @TableField("goods_tag") + private String goodsTag; /** * 商品名称 */ diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java index f3a958c..2f031c2 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/OrderGoods.java @@ -94,6 +94,9 @@ @TableField("goods_name") private String goodsName; + @TableField("goods_tag") + private String goodsTag; + @TableField("goods_introduction") private String goodsIntroduction; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppConsumerPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppConsumerPageVo.java index 23c2b38..894ae34 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppConsumerPageVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppConsumerPageVo.java @@ -1,7 +1,5 @@ package com.ruoyi.order.domain.vo; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -27,8 +25,14 @@ @ApiModelProperty(value="商品类型1周期2服务3体验4单品") private Integer goodsType; + @ApiModelProperty(value="商品标签") + private String goodsTag; + @ApiModelProperty(value="商品名称") private String goodsName; + + @ApiModelProperty(value="商品名称") + private String goodsIntroduction; @ApiModelProperty(value="商品图片") private String goodsPicture; @@ -45,4 +49,7 @@ @ApiModelProperty(value="消耗次数") private Integer usedNum; + @ApiModelProperty(value="消耗次数") + private Integer sureNum; + } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java index 3d53905..caa8138 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java @@ -54,7 +54,7 @@ private String packageStr; @ApiModelProperty(value = "签名方式") - private String tradeType; + private String signType; @ApiModelProperty(value = "签名") private String paySign; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java index 8dbd687..e5908b4 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java @@ -27,6 +27,9 @@ @ApiModelProperty(value = "商品简介") private String goodsIntroduction; + @ApiModelProperty(value="商品标签") + private String goodsTag; + @ApiModelProperty(value="商品图片") private String goodsPicture; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java index 08151c4..2a37df3 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberNoClearOrderVo.java @@ -6,7 +6,6 @@ import java.math.BigDecimal; import java.util.Date; -import java.util.List; /** * @author jqs34 @@ -39,10 +38,13 @@ @ApiModelProperty(value="应收订金") private BigDecimal receivableDeposit; - @ApiModelProperty(value="订单实际支付金额") + @ApiModelProperty(value="实收金额") + private BigDecimal receiveMoney; + + @ApiModelProperty(value="已收金额") private BigDecimal payMoney; - @ApiModelProperty(value="订单未支付金额") + @ApiModelProperty(value="未收金额") private BigDecimal unPaidMoney; @ApiModelProperty(value="创建时间") diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberOrderVo.java new file mode 100644 index 0000000..5918ea1 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerMemberOrderVo.java @@ -0,0 +1,59 @@ +package com.ruoyi.order.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @ClassName MerMemberOrderVo + * @Description TODO + * @Author jqs + * @Date 2023/8/5 16:08 + * @Version 1.0 + */ +@Data +public class MerMemberOrderVo { + + @ApiModelProperty(value = "订单id") + private String orderId; + + @ApiModelProperty(value="订单编号") + private String orderNo; + + @ApiModelProperty(value="订单状态") + private Integer orderStatus; + + @ApiModelProperty(value = "商品总价") + private BigDecimal orderGoodsMoney; + + @ApiModelProperty(value = "优惠券抵扣") + private BigDecimal couponDiscount; + + @ApiModelProperty(value="应付金额") + private BigDecimal receivableMoney; + + @ApiModelProperty(value="应收订金") + private BigDecimal receivableDeposit; + + @ApiModelProperty(value="实收金额") + private BigDecimal receiveMoney; + + @ApiModelProperty(value="已收金额") + private BigDecimal payMoney; + + @ApiModelProperty(value="未收金额") + private BigDecimal unPaidMoney; + + @ApiModelProperty(value="收款时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date receiveMoneyTime; + + @ApiModelProperty(value="收款金额") + private BigDecimal thisReceiveMoney; + + @ApiModelProperty(value="收款方式") + private String thisReceiveType; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerOrderPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerOrderPageVo.java index 1915b74..8c1a5d2 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerOrderPageVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerOrderPageVo.java @@ -76,6 +76,9 @@ @ApiModelProperty(value="订单来源") private String orderFromDesc; + @ApiModelProperty(value="活动名字") + private String activityName; + @ApiModelProperty(value="订单商品列表") private List<MerOrderGoodsPageVo> merOrderGoodsVoList; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java index 0cda36b..54181bd 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MerVerifyOrderVo.java @@ -72,6 +72,18 @@ @ApiModelProperty(value = "用户电话") private String userMobile; + @ApiModelProperty(value="实收金额") + private BigDecimal realReceiveMoney; + + @ApiModelProperty(value="已收金额") + private BigDecimal receiveMoney; + + @ApiModelProperty(value="未收金额") + private BigDecimal unReceiveMoney; + + @ApiModelProperty(value="支付方式1.全款2订金") + private Integer payType; + @ApiModelProperty(value="结清标记0否1是") private Integer closeFlag; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java index eadde1e..6a09522 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java @@ -50,10 +50,13 @@ @ApiModelProperty(value="应收金额") private BigDecimal receivableMoney; - @Excel(name = "订单实际支付金额", width = 30) @ApiModelProperty(value="订单实际支付金额") private BigDecimal payMoney; + @Excel(name = "订单实收金额", width = 30) + @ApiModelProperty(value = "实收金额") + private BigDecimal receiveMoney; + @Excel(name = "订单未支付金额", width = 30) @ApiModelProperty(value="订单未支付金额") private BigDecimal unPaidMoney; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderTotalVo.java index 5ef3bdb..d7bf60e 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderTotalVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderTotalVo.java @@ -29,4 +29,7 @@ @ApiModelProperty(value = "支付总金额") private BigDecimal totalPayMoney; + + @ApiModelProperty(value = "实收金额") + private BigDecimal totalReceiveMoney; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java new file mode 100644 index 0000000..4c0fff5 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopAllOrderTotal.java @@ -0,0 +1,28 @@ +package com.ruoyi.order.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @ClassName MgtShopAllOrderTotal + * @Description TODO + * @Author jqs + * @Date 2023/8/4 10:23 + * @Version 1.0 + */ +@Data +public class MgtShopAllOrderTotal { + + @ApiModelProperty(value = "订单总数") + private Integer orderTotal; + + @ApiModelProperty(value = "订单总金额") + private BigDecimal totalOrderMoney; + + @ApiModelProperty(value = "实收金额") + private BigDecimal totalReceiveMoney; + + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/ProfitSharingNotifyNewResult.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/ProfitSharingNotifyNewResult.java new file mode 100644 index 0000000..2ee8dc4 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/ProfitSharingNotifyNewResult.java @@ -0,0 +1,23 @@ +package com.ruoyi.order.domain.vo; + +import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyData; +import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@NoArgsConstructor +public class ProfitSharingNotifyNewResult implements Serializable { + private static final long serialVersionUID = -6602962275015706689L; + /** + * 源数据 + */ + private ProfitSharingNotifyData rawData; + + /** + * 解密后的数据 + */ + private ProfitSharingNotifyResult result; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/RefundStatusEnum.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/RefundStatusEnum.java new file mode 100644 index 0000000..9f04cf3 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/RefundStatusEnum.java @@ -0,0 +1,19 @@ +package com.ruoyi.order.enums; + +import com.ruoyi.order.enums.dict.IDict; + +public enum RefundStatusEnum implements IDict<Integer> { + /** + * 退款状态,枚举值: + * SUCCESS:退款成功 + * CLOSE:退款关闭 + * ABNORMAL:退款异常 + */ + SUCCESS(2, "SUCCESS"), + CLOSE(3, "CLOSE"), + ABNORMAL(4, "ABNORMAL"); + + RefundStatusEnum(Integer code, String text){ + init(code, text); + } +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/WxPayNotifyEventTypeEnum.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/WxPayNotifyEventTypeEnum.java new file mode 100644 index 0000000..31f456e --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/WxPayNotifyEventTypeEnum.java @@ -0,0 +1,22 @@ +package com.ruoyi.order.enums; + + +import com.ruoyi.order.enums.dict.IDict; + +public enum WxPayNotifyEventTypeEnum implements IDict<String> { + /** + * 微信回调通知 + 支付成功通知的类型为 TRANSACTION.SUCCESS + 分账 PROFITSHARING.SUCCESS + */ + TRANSACTION_SUCCESS("TRANSACTION.SUCCESS", "TRANSACTION.SUCCESS"), + PROFIT_SHARING_SUCCESS("PROFITSHARING.SUCCESS", "PROFITSHARING.SUCCESS"), + REFUND_SUCCESS("REFUND.SUCCESS", "REFUND.SUCCESS"), + REFUND_ABNORMAL("REFUND.ABNORMAL", "REFUND.ABNORMAL"), + REFUND_CLOSED("REFUND.CLOSED", "REFUND.CLOSED"); + + WxPayNotifyEventTypeEnum(String code, String text){ + init(code, text); + } + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/DictBean.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/DictBean.java new file mode 100644 index 0000000..235c8f8 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/DictBean.java @@ -0,0 +1,15 @@ +package com.ruoyi.order.enums.dict; + +import lombok.Data; + +/** + * 字典bean + * 只有code和text,可用于展示下拉框 + * + * @author luozhan + */ +@Data +public class DictBean<T> implements IDict<T> { + private final T code; + private final String text; +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/IDict.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/IDict.java new file mode 100644 index 0000000..fd87547 --- /dev/null +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/enums/dict/IDict.java @@ -0,0 +1,170 @@ +package com.ruoyi.order.enums.dict; + +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + + +/** + * 字典接口 + * <p> + * 自定义的字典枚举类实现本接口后可省略属性code和text,以及对应的get方法 + * 在构造方法中只需调用init方法即可初始化 + * + * @author luozhan + * @date 2021-12 + */ +public interface IDict<T> { + /** + * 通过code获取value + * + * @param clazz 枚举class + * @param code code + * @return text + */ + static <T> String getTextByCode(Class<? extends IDict<T>> clazz, T code) { + return Stream.of(clazz.getEnumConstants()) + .filter((IDict<T> e) -> e.getCode().equals(code)) + .map(IDict::getText) + .findAny().orElse(""); + } + + /** + * 通过text获取code + * + * @param clazz 枚举class + * @param text text + * @return code + */ + static <T> T getCodeByText(Class<? extends IDict<T>> clazz, String text) { + return Stream.of(clazz.getEnumConstants()) + .filter((IDict<T> e) -> e.getText().equals(text)) + .map(IDict::getCode) + .findAny().orElse(null); + } + + /** + * 通过code获取字典枚举实例 + * + * @param clazz 枚举class + * @param code code + * @param <T> 字典code类型 + * @param <R> 枚举类型 + * @return 字典枚举实例 + */ + @SuppressWarnings("unchecked") + static <T, R extends IDict<T>> R getByCode(Class<? extends IDict<T>> clazz, T code) { + return Stream.of(clazz.getEnumConstants()) + .filter((IDict<T> e) -> (e.getCode().equals(code))) + .map(v -> (R) v) + .findAny() + .orElse(null); + } + + /** + * 获取给定的字典枚举项(常用下拉框数据请求) + * + * @param enums 可指定需要哪些项 + * @return List + */ + @SafeVarargs + static <T, E extends IDict<T>> List<IDict<T>> getItems(E... enums) { + return Stream.of(enums) + .map(DictPool::getDict) + .collect(Collectors.toList()); + } + + /** + * 获取所有字典枚举项,除开指定的枚举 + * + * @param exclude 指定排除的枚举 + * @return List + */ + @SafeVarargs + @SuppressWarnings("unchecked") + static <T, E extends IDict<T>> List<IDict<T>> getItemsExclude(E... exclude) { + Class<IDict<T>> clazz = (Class<IDict<T>>) exclude.getClass().getComponentType(); + IDict<T>[] allEnum = clazz.getEnumConstants(); + List<IDict<T>> excludeList = Arrays.asList(exclude); + return Stream.of(allEnum) + .filter(e -> !excludeList.contains(e)) + .map(DictPool::getDict) + .collect(Collectors.toList()); + } + + /** + * 获取所有字典枚举项(常用下拉框数据请求) + * 枚举值上标记@Deprecated的不会返回 + * + * @param clazz 字典枚举类 + * @return List + */ + static <T> List<IDict<T>> getAll(Class<? extends IDict<T>> clazz) { + Map<String, Field> fieldCache = Arrays.stream(clazz.getDeclaredFields()). + filter(Field::isEnumConstant). + collect(Collectors.toMap(Field::getName, Function.identity())); + IDict<T>[] allEnum = clazz.getEnumConstants(); + return Stream.of(allEnum) + .filter(e -> !fieldCache.get(((Enum<?>) e).name()).isAnnotationPresent(Deprecated.class)) + .map(DictPool::getDict) + .collect(Collectors.toList()); + } + + /** + * 初始化 + * + * @param code 字典编码 + * @param text 字典文本 + */ + default void init(T code, String text) { + DictPool.putDict(this, code, text); + } + + /** + * 获取编码 + * + * @return 编码 + */ + default T getCode() { + return DictPool.getDict(this).getCode(); + } + + /** + * 获取文本 + * + * @return 文本 + */ + default String getText() { + return DictPool.getDict(this).getText(); + } + + + @SuppressWarnings("all") + class DictPool { + private static final Map<IDict, DictBean> DICT_MAP = new ConcurrentHashMap<>(); + + private static final Map<String, Class<? extends IDict>> DICT_NAME_CLASS_MAP = new ConcurrentHashMap<>(); + + static <T> void putDict(IDict<T> dict, T code, String text) { + DICT_NAME_CLASS_MAP.put(dict.getClass().getName(), dict.getClass()); + DICT_MAP.put(dict, new DictBean<>(code, text)); + } + + public static List<IDict<Object>> getDict(String dictName) { + Class<? extends IDict> aClass = DICT_NAME_CLASS_MAP.get(dictName); + return IDict.getAll((Class<? extends IDict<Object>>) aClass); + } + + static <K extends IDict<T>, T> DictBean<T> getDict(K dict) { + return DICT_MAP.get(dict); + } + + + } + +} diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/fliter/ParamsAuthFilter.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/fliter/ParamsAuthFilter.java index 4c9ab17..ef00c5e 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/fliter/ParamsAuthFilter.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/fliter/ParamsAuthFilter.java @@ -30,7 +30,14 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; - + String requestUrl = request.getRequestURI(); + String requestUrlUpperCase = requestUrl.toUpperCase(); + if(requestUrlUpperCase.contains("EXPORT") + ||requestUrlUpperCase.contains("IMPORTTEMPLATE") + ){ + filterChain.doFilter(request, response); + return; + } RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response); getRequestParams(wrapper); @@ -39,7 +46,6 @@ // 返回的结果 String content = responseWrapper.getTextContent(); - String requestUrl = request.getRequestURI(); log.info("-------------------- Response Data ----------------------"); log.info(requestUrl + " -> " + content); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java index 3196d4f..b44c461 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java @@ -92,7 +92,7 @@ * @param * @return MgtOrderTotal */ - MgtOrderTotal totalOrderFirst(); + MgtOrderTotal totalOrderFirst(@Param("param")MgtShopOrderPageDto mgtShopOrderPageDto); /** * @description 统计门店订单总数 @@ -141,6 +141,15 @@ * @date 2023/6/18 17:20 */ MgtBulletinBoardVo boardOrderTotal(); + + /** + * @description 活动人数统计 + * @author jqs + * @date 2023/8/3 21:12 + * @param + * @return Integer + */ + Integer activityUserTotal(); /** * @description getTotalOrderTotalOrderFrom @@ -507,7 +516,7 @@ * @description 商户端订单管理统计 * @author jqs * @date 2023/7/4 16:27 - * @param shopId + * @param merOrderPageDto * @return MerTotalOrderVo */ MerTotalOrderVo totalMerOrder(@Param("param")MerOrderPageDto merOrderPageDto); @@ -600,4 +609,22 @@ * @return Integer */ Integer countUserBuyGoodsNum(@Param("userId")Long userId, @Param("goodsId")String goodsId); + + + /** + * @description 获取商户订单统计 + * @author jqs + * @date 2023/8/4 10:25 + * @param mgtShopAllOrderPageDto + * @return MgtShopAllOrderTotal + */ + MgtShopAllOrderTotal getMgtShopAllOrderTotal(@Param("param")MgtShopAllOrderPageDto mgtShopAllOrderPageDto); + + + /** + * 分页获取消费记录 + * @param merOrderPageDto + * @return + */ + List<MerOrderPageVo> pageMerMemberPayOrder(Page page,@Param("param") MerMemberNoClearOrderDto merOrderPageDto); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/BackMessageService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/BackMessageService.java index 182e5bb..dd7ce33 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/BackMessageService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/BackMessageService.java @@ -13,4 +13,10 @@ */ public interface BackMessageService extends IService<BackMessage> { + /** + * 保存回调记录 + * @param resultType + * @param resultMessage + */ + void saveBackMessage(int resultType, String resultMessage); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java index b6065d2..fbd9709 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java @@ -3,6 +3,9 @@ import com.ruoyi.order.domain.pojo.account.OrderPayment; import com.baomidou.mybatisplus.extension.service.IService; +import java.math.BigDecimal; +import java.util.Date; + /** * <p> * 订单支付 服务类 @@ -13,4 +16,24 @@ */ public interface OrderPaymentService extends IService<OrderPayment> { + /** + * 保存支付记录 + * @param userId + * @param shopId + * @param orderId + * @param payMoney + * @param endTime + * @param profitSharing + * @param openid + * @param goodsNames + * @param prepayId + */ + void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, BigDecimal payMoney, Date endTime, String profitSharing, String openid, String goodsNames, String prepayId); + + /** + * + * @param orderId + * @return + */ + OrderPayment getByOrderId(String orderId); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/PaymentMessageService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/PaymentMessageService.java index 15c1bc9..f000a53 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/PaymentMessageService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/PaymentMessageService.java @@ -13,4 +13,12 @@ */ public interface PaymentMessageService extends IService<PaymentMessage> { + /** + * 保存请求信息 + * @param sendType + * @param sendId + * @param sendMessage + * @param resultMessage + */ + void savePaymentMessage(String sendType, String sendId, String sendMessage, String resultMessage); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java index f58ec5e..bc97e93 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/ProfitSharingService.java @@ -1,7 +1,10 @@ package com.ruoyi.order.service.account; +import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingResult; import com.ruoyi.order.domain.pojo.account.ProfitSharing; import com.baomidou.mybatisplus.extension.service.IService; + +import java.math.BigDecimal; /** * <p> @@ -13,4 +16,12 @@ */ public interface ProfitSharingService extends IService<ProfitSharing> { + /** + * 创建按分账记录 + * @param shopId + * @param orderId + * @param orderMoney + * @param result + */ + void saveProfitSharing(Long shopId, String orderId, BigDecimal orderMoney, ProfitSharingResult result); } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/BackMessageServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/BackMessageServiceImpl.java index ca18dad..5b8dd8d 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/BackMessageServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/BackMessageServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.Date; + /** * <p> * 回调报文 服务实现类 @@ -17,4 +19,13 @@ @Service public class BackMessageServiceImpl extends ServiceImpl<BackMessageMapper, BackMessage> implements BackMessageService { + @Override + public void saveBackMessage(int resultType, String resultMessage) { + BackMessage backMessage = new BackMessage(); + backMessage.setDelFlag("0"); + backMessage.setResultType(resultType); + backMessage.setResultMessage(resultMessage); + backMessage.setCreateTime(new Date()); + this.saveOrUpdate(backMessage); + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java index a9b6c40..dcc4174 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java @@ -1,10 +1,16 @@ package com.ruoyi.order.service.impl.account; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.order.domain.pojo.account.OrderPayment; import com.ruoyi.order.mapper.account.OrderPaymentMapper; import com.ruoyi.order.service.account.OrderPaymentService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Date; /** * <p> @@ -17,4 +23,34 @@ @Service public class OrderPaymentServiceImpl extends ServiceImpl<OrderPaymentMapper, OrderPayment> implements OrderPaymentService { + @Override + public void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, BigDecimal payMoney, Date endTime, + String profitSharing, String openid, String goodsNames, String prepayId) { + OrderPayment payment = new OrderPayment(); + payment.setPaymentId(IdUtils.simpleUUID()); + payment.setUserId(userId); + payment.setShopId(shopId); + payment.setOrderId(orderId); + payment.setPayMoney(payMoney); + payment.setTimeExpire(endTime); + payment.setSubMchId(subMchId); + // 0 否 1、是 + payment.setProfitSharing("Y".equals(profitSharing) ? 1 : 0); + payment.setUserOpenId(openid); + payment.setGoodsNames(goodsNames); + payment.setPrepayId(prepayId); + payment.setCreateTime(new Date()); + payment.setDelFlag(0); + this.saveOrUpdate(payment); + } + + @Override + public OrderPayment getByOrderId(String orderId) { + LambdaQueryWrapper<OrderPayment> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(OrderPayment::getOrderId, orderId) + .eq(OrderPayment::getDelFlag, 0) + .eq(OrderPayment::getPayStatus, 2) + .last(" limit 1 "); + return this.getOne(queryWrapper); + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/PaymentMessageServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/PaymentMessageServiceImpl.java index ef686da..2866872 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/PaymentMessageServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/PaymentMessageServiceImpl.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.Date; + /** * <p> * 支付报文 服务实现类 @@ -17,4 +19,15 @@ @Service public class PaymentMessageServiceImpl extends ServiceImpl<PaymentMessageMapper, PaymentMessage> implements PaymentMessageService { + @Override + public void savePaymentMessage(String sendType, String sendId, String sendMessage, String resultMessage) { + PaymentMessage paymentMessage = new PaymentMessage(); + paymentMessage.setDelFlag("0"); + paymentMessage.setSendType(sendType); + paymentMessage.setSendId(sendId); + paymentMessage.setSendMessage(sendMessage); + paymentMessage.setResultMessage(resultMessage); + paymentMessage.setCreateTime(new Date()); + this.saveOrUpdate(paymentMessage); + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java index bd2bd4a..799915d 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/ProfitSharingServiceImpl.java @@ -1,10 +1,17 @@ package com.ruoyi.order.service.impl.account; +import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingResult; +import com.ruoyi.common.core.utils.uuid.IdUtils; import com.ruoyi.order.domain.pojo.account.ProfitSharing; import com.ruoyi.order.mapper.account.ProfitSharingMapper; import com.ruoyi.order.service.account.ProfitSharingService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.Date; +import java.util.List; /** * <p> @@ -17,4 +24,31 @@ @Service public class ProfitSharingServiceImpl extends ServiceImpl<ProfitSharingMapper, ProfitSharing> implements ProfitSharingService { + @Override + public void saveProfitSharing(Long shopId, String orderId, BigDecimal orderMoney, ProfitSharingResult result) { + ProfitSharing profitSharing = new ProfitSharing(); + profitSharing.setShareId(result.getOutOrderNo()); + profitSharing.setDelFlag(0); + profitSharing.setShareStatus("FINISHED".equals(result.getStatus()) ? 2 : 1); + profitSharing.setShopId(shopId); + profitSharing.setOrderId(orderId); + profitSharing.setOrderMoney(orderMoney); + + List<ProfitSharingResult.Receiver> receivers = result.getReceivers(); + if(null != receivers && !receivers.isEmpty()){ + ProfitSharingResult.Receiver receiver = receivers.get(0); + profitSharing.setReceiverAccount(receiver.getReceiverMchid()); + BigDecimal receiverAmount = new BigDecimal(receiver.getAmount()); + receiverAmount = receiverAmount.divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP); + profitSharing.setReceiverAmount(receiverAmount); + profitSharing.setSurpMoney(orderMoney.subtract(receiverAmount)); + profitSharing.setReceiverDescription(receiver.getDescription()); + profitSharing.setFinishFlag(0); + profitSharing.setFailReason(receiver.getFailReason()); + profitSharing.setDetailId(receiver.getDetailId()); + } + profitSharing.setCreateTime(new Date()); + + this.saveOrUpdate(profitSharing); + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java index 58c6aa5..c6c6203 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/ConsumerGoodsServiceImpl.java @@ -142,6 +142,7 @@ consumerGoods.setUsedNum(0); consumerGoods.setCreateTime(new Date()); consumerGoods.setGoodsType(goods.getGoodsType()); + consumerGoods.setGoodsTag(goods.getGoodsTags()); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(goodsFile.getFileUrl()); consumerGoods.setGoodsNurses(goods.getGoodsNurses()); @@ -420,6 +421,7 @@ consumerGoods.setUsedNum(0); consumerGoods.setCreateTime(new Date()); consumerGoods.setGoodsType(goods.getGoodsType()); + consumerGoods.setGoodsTag(goods.getGoodsTags()); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(goodsFile.getFileUrl()); consumerGoods.setGoodsNurses(goods.getGoodsNurses()); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 6e52346..2155f03 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -1,10 +1,21 @@ package com.ruoyi.order.service.impl.order; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.binarywang.wxpay.bean.ecommerce.*; +import com.github.binarywang.wxpay.bean.ecommerce.ProfitSharingRequest.Receiver; +import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum; +import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult; +import com.github.binarywang.wxpay.config.WxPayConfig; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.github.binarywang.wxpay.service.WxPayService; +import com.google.common.base.Joiner; +import com.google.gson.Gson; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; @@ -12,15 +23,23 @@ import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.CodeFactoryUtil; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.order.config.WxPayConfiguration; import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.pojo.account.OrderPayment; import com.ruoyi.order.domain.pojo.account.OrderRefund; +import com.ruoyi.order.domain.pojo.account.ProfitSharing; import com.ruoyi.order.domain.pojo.order.ConsumerGoods; import com.ruoyi.order.domain.pojo.order.Order; import com.ruoyi.order.domain.pojo.order.OrderGoods; import com.ruoyi.order.domain.pojo.order.PayRecord; import com.ruoyi.order.domain.vo.*; +import com.ruoyi.order.enums.RefundStatusEnum; +import com.ruoyi.order.enums.dict.IDict; import com.ruoyi.order.mapper.order.OrderMapper; +import com.ruoyi.order.service.account.OrderPaymentService; +import com.ruoyi.order.service.account.OrderRefundService; +import com.ruoyi.order.service.account.PaymentMessageService; +import com.ruoyi.order.service.account.ProfitSharingService; import com.ruoyi.order.service.order.*; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.constant.DelayTaskEnum; @@ -35,10 +54,11 @@ import com.ruoyi.system.api.domain.poji.member.MemberCoupon; import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord; import com.ruoyi.system.api.domain.poji.shop.Shop; +import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; -import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; +import lombok.extern.slf4j.Slf4j; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; @@ -47,6 +67,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.*; @@ -63,6 +84,7 @@ * @since 2023-04-25 */ @Service +@Slf4j public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService { @Resource @@ -110,22 +132,20 @@ @Autowired private RedissonClient redissonClient; - /** 商户号 */ - public static String merchantId = ""; - /** 商户API私钥路径 */ - public static String privateKeyPath = ""; - /** 商户证书序列号 */ - public static String merchantSerialNumber = ""; - /** 微信支付平台证书路径 */ - public static String wechatPayCertificatePath = ""; - /** 微信支付 APIv3 密钥 */ - public static String apiV3Key = ""; - /** 微信支付APPID */ - public static String appId=""; - /** 微信支付商户ID */ - public static String mchId=""; - /** 通知地址 */ - public static String notifyUrl=""; + @Autowired + private WxPayService wxService; + + @Resource + private PaymentMessageService paymentMessageService; + + @Resource + private OrderPaymentService orderPaymentService; + + @Resource + private ProfitSharingService profitSharingService; + + @Resource + private OrderRefundService orderRefundService; /** * @description: buyGoods @@ -153,8 +173,8 @@ Map<String, Goods> goodsMap = goodsList.stream() .collect(Collectors.toMap(Goods::getGoodsId, Function.identity())); Boolean haveDeposit = false; - for(Goods goods : goodsList){ - if(goods.getSubscription()!=null&&goods.getSubscription().compareTo(BigDecimal.ZERO)>0){ + for (Goods goods : goodsList) { + if (goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) { haveDeposit = true; } } @@ -174,7 +194,7 @@ // 将优惠券列表转换为Map,以优惠券ID为键 Map<String, AppMemberCouponVo> appMemberCouponVoMap = new HashMap<>(); - if(appMemberCouponVoList!=null&&!appMemberCouponVoList.isEmpty()){ + if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) { appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity())); } AppMemberCouponVo appMemberCouponVo; @@ -201,7 +221,7 @@ memberCouponId = appBuyGoodsDto.getMemberCouponId(); // 获取商品信息 goods = goodsMap.get(goodsId); - if(goods.getGoodsStatus()!=1){ + if (goods.getGoodsStatus() != 1) { throw new ServiceException(AppErrorConstant.GOODS_DOWN); } // 设置订单商品信息 @@ -234,7 +254,7 @@ if (couponType == 1 && appMemberCouponVo.getMoneyThreshold() != null && appMemberCouponVo.getDiscountMoney() != null) { moneyThreshold = appMemberCouponVo.getMoneyThreshold(); discountMoney = appMemberCouponVo.getDiscountMoney(); - if (goodsTotalPrice.compareTo(moneyThreshold) >= 0 && goodsTotalPrice.compareTo(discountMoney)>0) { + if (goodsTotalPrice.compareTo(moneyThreshold) >= 0 && goodsTotalPrice.compareTo(discountMoney) > 0) { goodsRealPrice = goodsTotalPrice.subtract(discountMoney); useCoupon = 1; userCouponIdSet.add(memberCouponId); @@ -242,16 +262,16 @@ } } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) { discountPercent = appMemberCouponVo.getDiscountPercent(); - goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN,2,BigDecimal.ROUND_HALF_UP); + goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP); discountMoney = goodsTotalPrice.subtract(goodsRealPrice); useCoupon = 1; userCouponIdSet.add(memberCouponId); appSureOrderGoodsVo.setMemberCouponId(memberCouponId); } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) { discountMoney = appMemberCouponVo.getDiscountMoney(); - if(goodsTotalPrice.compareTo(discountMoney)>0){ + if (goodsTotalPrice.compareTo(discountMoney) > 0) { goodsRealPrice = goodsTotalPrice.subtract(discountMoney); - if(goodsRealPrice.compareTo(BigDecimal.ZERO)<0){ + if (goodsRealPrice.compareTo(BigDecimal.ZERO) < 0) { goodsRealPrice = BigDecimal.ZERO; } useCoupon = 1; @@ -267,12 +287,12 @@ appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); // 获取商品押金 goodsDeposit = goods.getSubscription(); - if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO)>0) { + if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) { goodsDeposit = goodsDeposit.multiply(buyNumBig); - }else{ - if(haveDeposit){ + } else { + if (haveDeposit) { goodsDeposit = goodsRealPrice; - }else{ + } else { goodsDeposit = new BigDecimal("0.00"); } } @@ -287,9 +307,9 @@ //处理优惠券列表 if (appMemberCouponVoList != null && !appMemberCouponVoList.isEmpty()) { for (AppMemberCouponVo entity : appMemberCouponVoList) { - if(userCouponIdSet!=null&&userCouponIdSet.contains(entity.getMemberCouponId())){ + if (userCouponIdSet != null && userCouponIdSet.contains(entity.getMemberCouponId())) { entity.setUseFlag(1); - }else{ + } else { entity.setUseFlag(0); } @@ -297,18 +317,18 @@ } // 过滤商品优惠券列表 List<AppMemberCouponVo> appGoodsMemberCouponVoList; - for(AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList) { + for (AppSureOrderGoodsVo sureOrderGoodsVo : appSureOrderGoodsVoList) { appGoodsMemberCouponVoList = new ArrayList<>(); - for(AppMemberCouponVo entity : appMemberCouponVoList){ - if(StringUtils.isBlank(entity.getRelGoodsIds())||entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())){ - if(entity.getCouponType()==1){ - if(entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0&&entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){ + for (AppMemberCouponVo entity : appMemberCouponVoList) { + if (StringUtils.isBlank(entity.getRelGoodsIds()) || entity.getRelGoodsIds().contains(sureOrderGoodsVo.getGoodsId())) { + if (entity.getCouponType() == 1) { + if (entity.getMoneyThreshold().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0 && entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) { appGoodsMemberCouponVoList.add(entity); } - }else if(entity.getCouponType()==2){ + } else if (entity.getCouponType() == 2) { appGoodsMemberCouponVoList.add(entity); - }else if(entity.getCouponType()==3){ - if(entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice())<0){ + } else if (entity.getCouponType() == 3) { + if (entity.getDiscountMoney().compareTo(sureOrderGoodsVo.getGoodsTotalPrice()) < 0) { appGoodsMemberCouponVoList.add(entity); } } @@ -415,8 +435,8 @@ if (activityGoodsGetVo.getActivityStatus() == 2) { throw new ServiceException(AppErrorConstant.ACTIVITY_END); } - Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId); - if(surpNum==null||surpNum<1){ + Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId); + if (surpNum == null || surpNum < 1) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); } if (activityGoodsGetVo.getAvailableBuyNum() < 1) { @@ -426,7 +446,7 @@ throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND); } Goods goods = remoteGoodsService.getGoods(goodsId).getData(); - if(goods.getGoodsStatus()!=1){ + if (goods.getGoodsStatus() != 1) { throw new ServiceException(AppErrorConstant.GOODS_DOWN); } appPanicBuyVo.setActivityId(activityId); @@ -456,9 +476,9 @@ appPanicBuyVo.setGoodsTotalPrice(goodsTotalPrice); appPanicBuyVo.setGoodsRealPrice(goodsRealPrice); goodsDeposit = activityGoodsGetVo.getActivitySubscription(); - if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) { + if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) { goodsDeposit = new BigDecimal("0.00"); - }else{ + } else { goodsDeposit = goodsDeposit.multiply(buyNumBig); } appPanicBuyVo.setGoodsDeposit(goodsDeposit); @@ -498,8 +518,8 @@ Map<String, Goods> goodsMap = goodsList.stream() .collect(Collectors.toMap(Goods::getGoodsId, Function.identity())); Boolean haveDeposit = false; - for(Goods goods : goodsList){ - if(goods.getSubscription()!=null&&goods.getSubscription().compareTo(BigDecimal.ZERO)>0){ + for (Goods goods : goodsList) { + if (goods.getSubscription() != null && goods.getSubscription().compareTo(BigDecimal.ZERO) > 0) { haveDeposit = true; } } @@ -510,7 +530,7 @@ Integer serviceNum; Integer goodsNum = 0; String memberCouponId; - Goods goods; + Goods goods = null; GoodsFile goodsFile; BigDecimal goodsPrice; BigDecimal goodsTotalPrice; @@ -542,6 +562,7 @@ HashSet<String> goodsTypeSet = new HashSet<>(); //使用优惠券 StringJoiner memberCouponSJ = new StringJoiner(","); + List<String> goodsNameList = new ArrayList<>(); // 遍历购买的商品列表 for (AppBuyGoodsDto appBuyGoodsDto : appBuyGoodsDtoList) { appSureOrderGoodsVo = new AppSureOrderGoodsVo(); @@ -551,6 +572,7 @@ memberCouponId = appBuyGoodsDto.getMemberCouponId(); // 获取商品信息 goods = goodsMap.get(goodsId); + goodsNameList.add(goods.getGoodsName()); // 设置商品信息 appSureOrderGoodsVo.setGoodsId(goodsId); appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); @@ -596,7 +618,7 @@ } } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) { discountPercent = appMemberCouponVo.getDiscountPercent(); - goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN,2, BigDecimal.ROUND_HALF_UP); + goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP); discountMoney = goodsTotalPrice.subtract(goodsRealPrice); useCoupon = 1; } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) { @@ -613,12 +635,12 @@ appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); // 获取商品押金 goodsDeposit = goods.getSubscription(); - if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO)>0) { + if (goodsDeposit != null && goodsDeposit.compareTo(BigDecimal.ZERO) > 0) { goodsDeposit = goodsDeposit.multiply(buyNumBig); - }else{ - if(haveDeposit){ + } else { + if (haveDeposit) { goodsDeposit = goodsRealPrice; - }else{ + } else { goodsDeposit = new BigDecimal("0.00"); } } @@ -648,6 +670,7 @@ orderGoods.setServiceNum(serviceNum); orderGoods.setGoodsType(goods.getGoodsType()); orderGoods.setGoodsName(goods.getGoodsName()); + orderGoods.setGoodsTag(goods.getGoodsTags()); orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); orderGoods.setGoodsPicture(goodsFile.getFileUrl()); // 保存订单商品 @@ -713,53 +736,127 @@ } appPlaceOrderVo.setOrderId(orderId); appPlaceOrderVo.setOrderNo(orderNo); - // 调用支付 - /* CombineTransactionsJsRequest request=new CombineTransactionsJsRequest(); - request.setCombineAppid(); - request.setCombineMchid(); - profitsSharingService.combineTransactions(request);*/ - //构建预下单支付对象 - /*PrepayRequest request = new PrepayRequest(); - Amount amount = new Amount(); - amount.setTotal(Integer.parseInt(order.getPayMoney().multiply(new BigDecimal(100)).toString())); - request.setAmount(amount); - request.setAppid(this.appId); - request.setMchid(this.mchId); - request.setDescription(order.getGoodsInfo()); - request.setNotifyUrl(this.notifyUrl); - request.setOutTradeNo(order.getOrderId()); - Payer payer = new Payer(); - payer.setOpenid("oLTPCuN5a-nBD4rAL_fa********"); - request.setPayer(payer);*/ - //返回前端唤醒支付结果信息 - /*PrepayWithRequestPaymentResponse res = this.getJsApIResponse(request); - appPlaceOrderVo.setAppId(this.appId); - appPlaceOrderVo.setTimeStamp(res.getTimeStamp()); - appPlaceOrderVo.setNonceStr(res.getNonceStr()); - appPlaceOrderVo.setPackageStr(res.getPackageVal()); - appPlaceOrderVo.setTradeType(res.getSignType()); - appPlaceOrderVo.setPaySign(res.getPaySign());*/ + String goodsName = ""; + if (null != goods) { + goodsName = goods.getGoodsName(); + } + + // 小程序微信下单支付 + createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, orderNo, + orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(), + appPlaceOrderDto.getSpbillCreateIp(), goodsNameList); //减去优惠券 - if(memberCouponSJ!=null&&StringUtils.isNotBlank(memberCouponSJ.toString())){ + if (StringUtils.isNotBlank(memberCouponSJ.toString())) { remoteCouponService.useMemberCoupon(memberCouponSJ.toString()); } //生成自动取消订单延时任务 Integer delayTime = 30; - if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ + if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES); DelayTask delayTask = new DelayTask(); delayTask.setDelFlag(0); delayTask.setCreateTime(new Date()); - delayTask.setEndTime(DateUtils.addMinutes(new Date(),delayTime)); + delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); - appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime)); + appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); + return appPlaceOrderVo; + } + + /** + * 小程序支付下单API + * @param appPlaceOrderVo + * @param userId + * @param shopId + * @param goodsName + * @param orderNo + * @param orderId + * @param payMoney + * @param openid + * @param payerClientIp + * @param goodsNameList + */ + private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId, + String goodsName, String orderNo, + String orderId, BigDecimal payMoney, + String openid, String payerClientIp, List<String> goodsNameList){ + try { + // 创建支付订单 + R<String> resultMch = remoteShopService.getShopSubMchId(shopId); + String subMchId = resultMch.getData(); + if (StringUtils.isEmpty(subMchId)) { + throw new ServiceException("获取微信商户号失败"); + } + WxPayConfig config = wxService.getConfig(); + config.setSubMchId(subMchId); + + PartnerTransactionsRequest request = new PartnerTransactionsRequest(); + request.setSpAppid(config.getAppId()); + request.setSpMchid(config.getMchId()); + request.setSubMchid(config.getSubMchId()); + // 商品描述 body + String description = goodsName + "-商品购买"; + + request.setDescription(description); + request.setOutTradeNo(orderNo); + request.setNotifyUrl(config.getNotifyUrl()); + // 结算信息 + PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo(); + settleInfo.setProfitSharing(true); + settleInfo.setSubsidyAmount(BigDecimal.ZERO); + request.setSettleInfo(settleInfo); + + // 订单总金额 + Integer totalFee = payMoney.multiply(new BigDecimal(100)).intValue(); + PartnerTransactionsRequest.Amount amount = new PartnerTransactionsRequest.Amount(); + amount.setTotal(totalFee); + amount.setCurrency("CNY"); + request.setAmount(amount); + + // 支付者 + PartnerTransactionsRequest.Payer payer = new PartnerTransactionsRequest.Payer(); + payer.setSpOpenid(openid); + request.setPayer(payer); + + // 场景信息 + PartnerTransactionsRequest.SceneInfo sceneInfo = new PartnerTransactionsRequest.SceneInfo(); + sceneInfo.setPayerClientIp(payerClientIp); + request.setSceneInfo(sceneInfo); + + TransactionsResult.JsapiResult result = wxService.getEcommerceService().partnerTransactions(TradeTypeEnum.JSAPI, request); + + // 请求参数 + Gson gson = new Gson(); + String payRequestJson = gson.toJson(request); + // 返回参数 + String payResponseJson = gson.toJson(result); + + // 支付相关信息返回 + appPlaceOrderVo.setAppId(result.getAppId()); + appPlaceOrderVo.setMchId(config.getMchId()); + appPlaceOrderVo.setTimeStamp(result.getTimeStamp()); + appPlaceOrderVo.setNonceStr(result.getNonceStr()); + appPlaceOrderVo.setPackageStr(result.getPackageValue()); + appPlaceOrderVo.setSignType(result.getSignType()); + appPlaceOrderVo.setPaySign(result.getPaySign()); + appPlaceOrderVo.setPrepayId(result.getPackageValue()); + + // 保存支付订单统一下单日志 + paymentMessageService.savePaymentMessage("1", orderId, payRequestJson, payResponseJson); + + // 保存支付订单统一下单支付记录 + orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, payMoney, + appPlaceOrderVo.getEndTime(), "Y", openid, + Joiner.on(";").join(goodsNameList), result.getPackageValue()); + } catch (WxPayException e) { + throw new ServiceException(e.getMessage()); + } } @@ -783,17 +880,17 @@ String goodsId = appPlaceActivityDto.getGoodsId(); Integer buyNum = appPlaceActivityDto.getBuyNum(); //redis库存控制极简版 - String goodsLock = "goods_lock_"+activityId+"_"+goodsId; + String goodsLock = "goods_lock_" + activityId + "_" + goodsId; RLock redissonLock = redissonClient.getLock(goodsLock); - try{ + try { redissonLock.lock(30, TimeUnit.SECONDS); - Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId); - if(surpNum==null||surpNum<buyNum){ + Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId); + if (surpNum == null || surpNum < buyNum) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); - }else{ - redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId,surpNum-buyNum); + } else { + redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId, surpNum - buyNum); } - }finally{ + } finally { redissonLock.unlock(); } // 定义购买数量,服务数量,商品数量 @@ -873,9 +970,9 @@ appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); // 获取商品押金 goodsDeposit = activityGoodsGetVo.getActivitySubscription(); - if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) { + if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) { goodsDeposit = new BigDecimal("0.00"); - }else{ + } else { goodsDeposit = goodsDeposit.multiply(buyNumBig); } appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit); @@ -900,6 +997,7 @@ orderGoods.setCycleNumFlag(goods.getCycleNumFlag()); orderGoods.setServiceNum(serviceNum); orderGoods.setGoodsType(goods.getGoodsType()); + orderGoods.setGoodsTag(goods.getGoodsTags()); orderGoods.setGoodsName(goods.getGoodsName()); orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); orderGoods.setGoodsPicture(goodsFile.getFileUrl()); @@ -921,9 +1019,9 @@ goodsTypeSet.add("单品"); } String goodsNurse = goods.getGoodsNurses(); - if(StringUtils.isNotBlank(goodsNurse)){ + if (StringUtils.isNotBlank(goodsNurse)) { String[] goodsNurseArr = goodsNurse.split(","); - for(String str : goodsNurseArr){ + for (String str : goodsNurseArr) { goodsNurseSet.add(str); } } @@ -967,7 +1065,7 @@ // 保存订单 this.save(order); // 更新用户商品类型 - if (goodsTypeSet != null || goodsNurseSet!= null) { + if (goodsTypeSet != null || goodsNurseSet != null) { AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto(); appMemberGoodsTypeDto.setUserId(userId); appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); @@ -1035,17 +1133,17 @@ remoteActivityService.addActivityRecord(activityRecord); //生成自动取消订单延时任务 Integer delayTime = 30; - if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ + if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES); DelayTask delayTask = new DelayTask(); delayTask.setDelFlag(0); delayTask.setCreateTime(new Date()); - delayTask.setEndTime(DateUtils.addMinutes(new Date(),delayTime)); + delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); remoteConfigService.addDelayTask(delayTask); - appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime)); + appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); return appPlaceOrderVo; } @@ -1074,7 +1172,7 @@ shopMap.put(shopIdLong, shopTemp); }); Integer delayTime = 30; - if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ + if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) { @@ -1087,7 +1185,7 @@ appUserOrderPageVo.setSameShop(0); } appUserOrderPageVo.setVerifyCode("1-" + appUserOrderPageVo.getOrderId()); - appUserOrderPageVo.setEndTime(DateUtils.addMinutes(appUserOrderPageVo.getCreateTime(),delayTime)); + appUserOrderPageVo.setEndTime(DateUtils.addMinutes(appUserOrderPageVo.getCreateTime(), delayTime)); } } return appUserOrderPageVoList; @@ -1128,10 +1226,10 @@ appUserOrderGetVo.setVerifyCode("1-" + orderId); //生成自动取消订单延时任务 Integer delayTime = 30; - if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ + if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } - appUserOrderGetVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(),delayTime)); + appUserOrderGetVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); return appUserOrderGetVo; } @@ -1143,13 +1241,15 @@ @Override public void cancelOrder(String orderId) { Order order = this.getById(orderId); + // 订单状态-1.删除 0.已取消 1.待支付 2.待核销 3.已完成 if (order.getOrderStatus() == 0) { throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER); - }else if (order.getOrderStatus() == 1) { + } else if (order.getOrderStatus() == 1) { this.autoCancelOrder(orderId); - }else if(order.getOrderStatus() == 2){ + } else if (order.getOrderStatus() == 2) { + // 2.待核销 -> 订单退款 this.refundOrder(orderId); - }else{ + } else { throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER); } } @@ -1224,6 +1324,18 @@ merVerifyOrderVo.setPayTime(order.getPayTime()); merVerifyOrderVo.setUseTime(order.getUseTime()); merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); + merVerifyOrderVo.setPayType(order.getPayType()); + merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney()); + if(order.getPayType()==1){ + merVerifyOrderVo.setReceiveMoney(order.getPayMoney()); + }else{ + if(order.getOfflinePayMoney()!=null){ + merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney()); + }else{ + merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO); + } + } + merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(order.getReceivableMoney())); // 根据订单用户ID获取用户信息 Member member = remoteMemberService.getMember(order.getUserId()).getData(); merVerifyOrderVo.setUserId(order.getUserId()); @@ -1254,7 +1366,7 @@ } ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData(); - if(!shopRelUserVo.getShopId().equals(order.getShopId())){ + if (!shopRelUserVo.getShopId().equals(order.getShopId())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } order.setOrderStatus(3); @@ -1264,9 +1376,9 @@ order.setOffPayTime(nowTime); order.setPayMoney(order.getPayMoney().add(relPayMoney)); order.setChangeReceivableMoney(relReceiveMoney); - if(order.getPayMoney().compareTo(order.getChangeReceivableMoney())>=0){ + if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) { order.setCloseFlag(1); - }else{ + } else { order.setCloseFlag(0); } this.saveOrUpdate(order); @@ -1286,7 +1398,7 @@ List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { Integer buyNum = appUserOrderGoodsPageVo.getBuyNum(); - if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ + if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) { consumerGoods = new ConsumerGoods(); goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); consumerGoodsId = IdUtils.simpleUUID(); @@ -1303,6 +1415,7 @@ consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag()); consumerGoods.setCreateTime(nowTime); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); @@ -1310,8 +1423,8 @@ consumerGoods.setSourceFrom(1); consumerGoods.setSureNum(buyNum); consumerGoodsList.add(consumerGoods); - }else{ - for(int i=0;i<buyNum;i++){ + } else { + for (int i = 0; i < buyNum; i++) { consumerGoods = new ConsumerGoods(); goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); consumerGoodsId = IdUtils.simpleUUID(); @@ -1328,6 +1441,7 @@ consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag()); consumerGoods.setCreateTime(nowTime); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); @@ -1354,15 +1468,26 @@ merVerifyOrderVo.setCreateTime(order.getCreateTime()); merVerifyOrderVo.setPayTime(order.getPayTime()); merVerifyOrderVo.setUseTime(order.getUseTime()); + merVerifyOrderVo.setPayType(order.getPayType()); + merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney()); + if(order.getPayType()==1){ + merVerifyOrderVo.setReceiveMoney(order.getPayMoney()); + }else{ + if(order.getOfflinePayMoney()!=null){ + merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney()); + }else{ + merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO); + } + } + merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(order.getReceivableMoney())); Member member = remoteMemberService.getMember(order.getUserId()).getData(); merVerifyOrderVo.setUserId(order.getUserId()); merVerifyOrderVo.setUserName(member.getRealName()); merVerifyOrderVo.setUserMobile(member.getMobile()); merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); // - if(order.getOrderFrom()==2){ - - //profitsSharingService.applyProfitSharing(); + if (order.getOrderFrom() == 2) { + // profitsSharingService.applyProfitSharing(); } //创建支付记录 @@ -1371,10 +1496,89 @@ payRecord.setOrderId(order.getOrderId()); payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney()); payRecord.setPayTime(new Date()); - payRecord.setPayType(2); + payRecord.setPayType(merVerifyOrderDto.getPayType()); payRecordService.save(payRecord); - return merVerifyOrderVo; + submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney()); + + return merVerifyOrderVo; + } + + private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) { + String sendMessage = ""; + String resultMessage = ""; + try { + // 核销完成 开始分账(平台收取服务费) + OrderPayment payment = orderPaymentService.getByOrderId(orderId); + String transactionId = payment.getTransactionId(); + + // 平台特约商户号,用户平台收取服务费 + String platformTyMacId = WxPayConfiguration.getPlatformTyMacId(); + + R<String> resultMch = remoteShopService.getShopSubMchId(shopId); + String subMchId = resultMch.getData(); + if (!StringUtils.isEmpty(subMchId)) { + + + R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId); + ShopProportionVo shopProportion = resultShopProportion.getData(); + if (null != shopProportion) { + ProfitSharingRequest request = new ProfitSharingRequest(); + request.setSubMchid(subMchId); + request.setTransactionId(transactionId); + request.setOutOrderNo(orderNo); + List<Receiver> receiverList = new ArrayList<>(); + + String description = "订单:" + orderNo + " 平台抽取佣金"; + BigDecimal proportionPercent = shopProportion.getProportionPercent(); + if (null == proportionPercent) { + proportionPercent = BigDecimal.ZERO; + } + + ProfitSharingResult result = new ProfitSharingResult(); + result.setOutOrderNo(orderNo); + result.setStatus("FINISHED"); + + // 计算分成金额 + int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue(); + log.info("订单分账:{} 分账金额: {}", orderNo, amount); + if (amount > 0) { + // 分账创建 + Receiver receiver = new Receiver(); + receiver.setType("MERCHANT_ID"); + receiver.setReceiverAccount(platformTyMacId); + receiver.setAmount(amount); + receiver.setDescription(description); + + receiverList.add(receiver); + request.setReceivers(receiverList); + // 分账完成 + request.setFinish(true); + result = wxService.getEcommerceService().profitSharing(request); + } + + // 创建分账记录 + profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result); + + // 保存请求信息 + sendMessage = JSONObject.toJSONString(request); + resultMessage = JSONObject.toJSONString(result); + } else { + resultMessage = String.format("订单分账:%s 获取商户分成失败", orderNo); + log.info(resultMessage); + } + } else { + resultMessage = String.format("订单分账:%s 获取微信商户号失败", orderNo); + log.info(resultMessage); + } + } catch (WxPayException e) { + resultMessage = String.format("订单分账:%s 分账失败:%s", orderNo, e.getMessage()); + log.info(resultMessage); + e.printStackTrace(); + } + + // 保存分账信息 + paymentMessageService.savePaymentMessage("4", orderId, sendMessage, resultMessage); } /** @@ -1389,7 +1593,7 @@ public MerVerifyCouponVo sureVerifyCoupon(MerVerifyCouponDto merVerifyCouponDto) { MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(merVerifyCouponDto.getMemberCouponId()).getData(); ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyCouponDto.getUserId()).getData(); - if(!shopRelUserVo.getShopId().equals(verifyCouponGetVo.getMemberCoupon().getShopId())){ + if (!shopRelUserVo.getShopId().equals(verifyCouponGetVo.getMemberCoupon().getShopId())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } // 创建MerVerifyCouponVo对象 @@ -1452,11 +1656,12 @@ appShopGoodsGetDto.setShopId(memberCoupon.getShopId()); //获取商户服务次数 shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); - if(shopGoods!=null){ + if (shopGoods != null) { consumerGoods.setServiceNum(shopGoods.getServiceNum()); } consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(goods.getGoodsType()); + consumerGoods.setGoodsTag(goods.getGoodsTags()); consumerGoods.setCreateTime(new Date()); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); goodsFile = remoteGoodsService.getGoodsFile(goods.getGoodsId()).getData(); @@ -1472,36 +1677,36 @@ /** - * @description 确认核销奖品 - * @author jqs - * @date 2023/7/9 9:54 * @param merVerifyPrizeDto - * @return MerVerifyAwardVo + * @return MerVerifyAwardVo + * @description 确认核销奖品 + * @author jqs + * @date 2023/7/9 9:54 */ @Override @Transactional - public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto){ + public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto) { MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo(); MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(merVerifyPrizeDto.getPrizeId()).getData(); - if(memberGiftRecord==null||memberGiftRecord.getVerifyStatus()!=1){ + if (memberGiftRecord == null || memberGiftRecord.getVerifyStatus() != 1) { throw new ServiceException(AppErrorConstant.COUPON_USED); } ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyPrizeDto.getUserId()).getData(); - if(!shopRelUserVo.getShopId().equals(memberGiftRecord.getShopId())){ + if (!shopRelUserVo.getShopId().equals(memberGiftRecord.getShopId())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); - if(memberGiftRecord.getGiftFrom()==1){ + if (memberGiftRecord.getGiftFrom() == 1) { merVerifyAwardVo.setGiftFrom("平台生日卡"); - }else{ + } else { merVerifyAwardVo.setGiftFrom("商户生日卡"); } merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType()); List<BirthdayGiftSendDto> giftSendDtoList = new ArrayList<>(); BirthdayGiftSendDto birthdayGiftSendDto = new BirthdayGiftSendDto(); - switch(memberGiftRecord.getGiftType()){ + switch (memberGiftRecord.getGiftType()) { case 1: merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName()); merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber())); @@ -1550,7 +1755,7 @@ merVerifyAwardVo.setCreateTime(memberGiftRecord.getCreateTime()); memberGiftRecord.setVerifyStatus(2); memberGiftRecord.setVerifyTime(new Date()); - if(member.getBindingFlag()!=1){ + if (member.getBindingFlag() != 1) { AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); appMemberBindingDto.setBindingFlag(1); appMemberBindingDto.setShopId(merVerifyPrizeDto.getShopId()); @@ -1575,7 +1780,7 @@ @Override public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) { List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page, merMemberNoClearOrderDto.getMemberUserId()); - if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) { + /*if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) { BigDecimal zeroBig = new BigDecimal("0.00"); for (MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) { merMemberNoClearOrderVo.setUnPaidMoney(merMemberNoClearOrderVo.getReceivableMoney().subtract(merMemberNoClearOrderVo.getPayMoney())); @@ -1583,7 +1788,7 @@ merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } } - } + }*/ return merMemberNoClearOrderVoList; } @@ -1598,9 +1803,9 @@ order.setOfflinePayMoney(order.getOfflinePayMoney().add(merCloseOrderDto.getPayMoney())); order.setOffPayTime(new Date()); order.setPayMoney(order.getPayMoney().add(merCloseOrderDto.getPayMoney())); - if(order.getPayMoney().compareTo(order.getChangeReceivableMoney())>=0){ + if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) { order.setCloseFlag(0); - }else{ + } else { order.setCloseFlag(1); } this.saveOrUpdate(order); @@ -1610,7 +1815,7 @@ payRecord.setOrderId(order.getOrderId()); payRecord.setPayMoney(merCloseOrderDto.getPayMoney()); payRecord.setPayTime(new Date()); - payRecord.setPayType(2); + payRecord.setPayType(merCloseOrderDto.getPayType()); payRecordService.save(payRecord); } @@ -1731,7 +1936,7 @@ } } else if (couponType == 2 && appMemberCouponVo.getDiscountPercent() != null) { discountPercent = appMemberCouponVo.getDiscountPercent(); - goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN,2, BigDecimal.ROUND_HALF_UP); + goodsRealPrice = goodsTotalPrice.multiply(discountPercent).divide(BigDecimal.TEN, 2, BigDecimal.ROUND_HALF_UP); discountMoney = goodsRealPrice.subtract(goodsTotalPrice); } else if (couponType == 3 && appMemberCouponVo.getDiscountMoney() != null) { discountMoney = appMemberCouponVo.getDiscountMoney(); @@ -1741,9 +1946,9 @@ } goodsDeposit = goods.getSubscription(); - if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO)==0) { + if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) { goodsDeposit = new BigDecimal("0.00"); - }else{ + } else { goodsDeposit = goodsDeposit.multiply(buyNumBig); } goodsNum = goodsNum + buyNum; @@ -1768,6 +1973,7 @@ orderGoods.setCycleNumFlag(goods.getCycleNumFlag()); orderGoods.setServiceNum(serviceNum); orderGoods.setGoodsType(goods.getGoodsType()); + orderGoods.setGoodsTag(goods.getGoodsTags()); orderGoods.setGoodsName(goods.getGoodsName()); orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); orderGoods.setGoodsPicture(goodsFile.getFileUrl()); @@ -1815,7 +2021,6 @@ order.setOrderRemark(merNewOrderDto.getOrderRemark()); order.setGoodsNum(goodsNum); order.setCreateTime(nowTime); - order.setPayTime(nowTime); order.setUseTime(nowTime); order.setUseUserId(merNewOrderDto.getUserId()); order.setPayMoney(merNewOrderDto.getPayMoney()); @@ -1823,9 +2028,9 @@ order.setOfflinePayMoney(merNewOrderDto.getPayMoney()); order.setOffPayTime(nowTime); order.setPayType(1); - if(order.getPayMoney().compareTo(order.getChangeReceivableMoney())>=0){ + if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) { order.setCloseFlag(0); - }else{ + } else { order.setCloseFlag(1); } this.save(order); @@ -1836,7 +2041,7 @@ List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { Integer buyGoodsNum = appUserOrderGoodsPageVo.getBuyNum(); - if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ + if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) { consumerGoods = new ConsumerGoods(); goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); consumerGoodsId = IdUtils.simpleUUID(); @@ -1853,6 +2058,7 @@ consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag()); consumerGoods.setCreateTime(nowTime); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); @@ -1860,8 +2066,8 @@ consumerGoods.setSourceFrom(1); consumerGoods.setSureNum(buyGoodsNum); consumerGoodsList.add(consumerGoods); - }else{ - for(int i=0;i<buyGoodsNum;i++) { + } else { + for (int i = 0; i < buyGoodsNum; i++) { consumerGoods = new ConsumerGoods(); goods = remoteGoodsService.getGoods(appUserOrderGoodsPageVo.getGoodsId()).getData(); consumerGoodsId = IdUtils.simpleUUID(); @@ -1878,6 +2084,7 @@ consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); consumerGoods.setUsedNum(0); consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag()); consumerGoods.setCreateTime(nowTime); consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); @@ -1923,11 +2130,11 @@ */ @Override public List<MerOrderPageVo> pageMerOrder(Page page, MerOrderPageDto merOrderPageDto) { - if(StringUtils.isNotBlank(merOrderPageDto.getKeyword())){ + if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) { MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto(); userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword()); MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData(); - if(StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())){ + if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) { List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(",")) .map(Long::parseLong) .collect(Collectors.toList()); @@ -1950,6 +2157,9 @@ if (orderFrom != null) { if (orderFrom == 1) { orderFromDesc = "商城订单"; + } else if(orderFrom == 2){ + + orderFromDesc = "店铺砍价活动("+merOrderPageVo.getActivityName()+")"; } else { orderFromDesc = "线下创建"; } @@ -1968,12 +2178,12 @@ Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) { - if(merOrderPageVo.getUserId()!=null&&userMap.get(merOrderPageVo.getUserId())!=null){ + if (merOrderPageVo.getUserId() != null && userMap.get(merOrderPageVo.getUserId()) != null) { merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName()); merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName()); merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile()); - }else{ - log.debug("订单merOrderPageVo"+merOrderPageVo.getOrderId()+"缺少用户"); + } else { + log.debug("订单merOrderPageVo" + merOrderPageVo.getOrderId() + "缺少用户"); } } } @@ -2157,7 +2367,7 @@ } } MgtOrderTotal mgtOrderTotal = new MgtOrderTotal(); - MgtOrderTotal mgtOrderTotalFirst = orderMapper.totalOrderFirst(); + MgtOrderTotal mgtOrderTotalFirst = orderMapper.totalOrderFirst(mgtShopOrderPageDto); MgtOrderTotal mgtOrderTotalSecond = orderMapper.totalOrderSecond(mgtShopOrderPageDto); MgtOrderTotal mgtOrderTotalThird = orderMapper.totalOrderThird(mgtShopOrderPageDto); mgtOrderTotal.setOrderTotal(mgtOrderTotalFirst.getOrderTotal()); @@ -2340,9 +2550,9 @@ mgtOrderDetailVo.setCancelTime(order.getCancelTime()); mgtOrderDetailVo.setOrderRemark(order.getOrderRemark()); mgtOrderDetailVo.setShopId(order.getShopId()); - if(shop!=null){ + if (shop != null) { mgtOrderDetailVo.setShopName(shop.getShopName()); - }else{ + } else { mgtOrderDetailVo.setShopName("商户已被删除"); } mgtOrderDetailVo.setVerifyTime(order.getUseTime()); @@ -2362,6 +2572,8 @@ @Override public MgtBulletinBoardVo boardOrderTotal() { MgtBulletinBoardVo mgtBulletinBoardVo = orderMapper.boardOrderTotal(); + Integer activityUserTotal = orderMapper.activityUserTotal(); + mgtBulletinBoardVo.setActivityUserTotal(activityUserTotal); return mgtBulletinBoardVo; } @@ -2932,11 +3144,11 @@ } else if (couponStatus != 1) { throw new ServiceException(AppErrorConstant.COUPON_NO_FIND); } - if (memberCoupon.getCouponFrom()==2&&!memberCoupon.getShopId().equals(shopId)) { + if (memberCoupon.getCouponFrom() == 2 && !memberCoupon.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } //如果是平台优惠券 - if(memberCoupon.getCouponFrom()==1&&memberCoupon.getShopId()==null){ + if (memberCoupon.getCouponFrom() == 1 && memberCoupon.getShopId() == null) { memberCoupon.setShopId(shopId); } List<Goods> goodsList = verifyCouponGetVo.getGoodsList(); @@ -2974,34 +3186,34 @@ } /** - * @description 获取核销奖品 - * @author jqs - * @date 2023/7/8 17:46 * @param verifyCode * @param shopId - * @return MerVerifyAwardVo + * @return MerVerifyAwardVo + * @description 获取核销奖品 + * @author jqs + * @date 2023/7/8 17:46 */ @Override - public MerVerifyAwardVo verifyPrize(String verifyCode,Long shopId){ + public MerVerifyAwardVo verifyPrize(String verifyCode, Long shopId) { MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo(); MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(verifyCode).getData(); - if(memberGiftRecord==null||memberGiftRecord.getVerifyStatus()!=1){ + if (memberGiftRecord == null || memberGiftRecord.getVerifyStatus() != 1) { throw new ServiceException(AppErrorConstant.COUPON_USED); } - if(memberGiftRecord.getGiftFrom()==2&&!memberGiftRecord.getShopId().equals(shopId)){ + if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); - if(memberGiftRecord.getGiftFrom()==1){ + if (memberGiftRecord.getGiftFrom() == 1) { merVerifyAwardVo.setGiftFrom("平台生日卡"); - }else{ + } else { merVerifyAwardVo.setGiftFrom("商户生日卡"); } merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType()); - switch(memberGiftRecord.getGiftType()){ + switch (memberGiftRecord.getGiftType()) { case 1: merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName()); merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber())); @@ -3141,22 +3353,22 @@ orderMoneyValue[i] = BigDecimal.ZERO; } }*/ - List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listMerOrderDistributionTotal(merTotalDto); - if(mgtMapTotalPlusVoList!=null&&!mgtMapTotalPlusVoList.isEmpty()) { - String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()]; - Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()]; - BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()]; - MgtMapTotalPlusVo mgtMapTotalPlusVo; - for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) { - mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i); - orderTotalKey[i] = mgtMapTotalPlusVo.getMapKey(); - orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst(); - orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond(); - } - orderDistributionTotalVo.setOrderTotalKey(orderTotalKey); - orderDistributionTotalVo.setOrderTotalValue(orderTotalValue); - orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue); + List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listMerOrderDistributionTotal(merTotalDto); + if (mgtMapTotalPlusVoList != null && !mgtMapTotalPlusVoList.isEmpty()) { + String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()]; + Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()]; + BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()]; + MgtMapTotalPlusVo mgtMapTotalPlusVo; + for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) { + mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i); + orderTotalKey[i] = mgtMapTotalPlusVo.getMapKey(); + orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst(); + orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond(); } + orderDistributionTotalVo.setOrderTotalKey(orderTotalKey); + orderDistributionTotalVo.setOrderTotalValue(orderTotalValue); + orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue); + } // 返回订单分布总数对象 return orderDistributionTotalVo; } @@ -3261,15 +3473,27 @@ } /** - * @description 商户端订单管理统计 - * @author jqs - * @date 2023/7/31 10:53 * @param merOrderPageDto - * @return MerTotalOrderVo + * @return MerTotalOrderVo + * @description 商户端订单管理统计 + * @author jqs + * @date 2023/7/31 10:53 */ @Override public MerTotalOrderVo totalMerOrder(MerOrderPageDto merOrderPageDto) { MerTotalOrderVo merTotalOrderVo = new MerTotalOrderVo(); + if (StringUtils.isNotBlank(merOrderPageDto.getKeyword())) { + MgtUserIdByKeywordDto userIdByKeywordDto = new MgtUserIdByKeywordDto(); + userIdByKeywordDto.setKeyword(merOrderPageDto.getKeyword()); + MgtUserIdByKeywordVo userIdByKeywordVo = remoteMemberService.getUserIdByKeyword(userIdByKeywordDto).getData(); + if (StringUtils.isNotBlank(userIdByKeywordVo.getUserIds())) { + List<Long> userIdList = Arrays.stream(userIdByKeywordVo.getUserIds().split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + merOrderPageDto.setMemberUserIdList(userIdList); + merOrderPageDto.setMemberUserId(null); + } + } merTotalOrderVo = orderMapper.totalMerOrder(merOrderPageDto); return merTotalOrderVo; } @@ -3333,33 +3557,33 @@ } /** - * @description 自动取消订单 - * @author jqs - * @date 2023/7/13 17:15 * @param orderId - * @return void + * @return void + * @description 自动取消订单 + * @author jqs + * @date 2023/7/13 17:15 */ @Override @Transactional - public void autoCancelOrder(String orderId){ + public void autoCancelOrder(String orderId) { //更新订单信息 Order order = this.getById(orderId); order.setOrderStatus(0); order.setCancelTime(new Date()); this.saveOrUpdate(order); //活动订单回退库存 - if(order.getOrderFrom()==2){ + if (order.getOrderFrom() == 2) { List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); - if(orderGoodsList!=null&&!orderGoodsList.isEmpty()){ - for(OrderGoods orderGoods : orderGoodsList){ + if (orderGoodsList != null && !orderGoodsList.isEmpty()) { + for (OrderGoods orderGoods : orderGoodsList) { //redis库存控制极简版 - String goodsLock = "goods_lock_"+order.getActivityId()+"_"+orderGoods.getGoodsId(); + String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId(); RLock redissonLock = redissonClient.getLock(goodsLock); - try{ + try { redissonLock.lock(30, TimeUnit.SECONDS); - Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId()); - redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId(),surpNum+orderGoods.getBuyNum()); - }finally{ + Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId()); + redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum()); + } finally { redissonLock.unlock(); } //改变活动库存 @@ -3380,16 +3604,16 @@ remoteActivityService.delActivityRecord(activityRecord); } } - }else{ - if(order.getCouponMoney().compareTo(BigDecimal.ZERO)>0){ + } else { + if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) { //回退优惠券 List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); - if(orderGoodsList!=null&&!orderGoodsList.isEmpty()) { + if (orderGoodsList != null && !orderGoodsList.isEmpty()) { StringJoiner memberCouponSJ = new StringJoiner(","); for (OrderGoods orderGoods : orderGoodsList) { memberCouponSJ.add(orderGoods.getCouponId()); } - if(memberCouponSJ!=null){ + if (memberCouponSJ != null) { remoteCouponService.backMemberCoupon(memberCouponSJ.toString()); } @@ -3399,17 +3623,17 @@ } /** - * @description 订单支付回调 - * @author jqs - * @date 2023/7/13 17:57 * @param transaction - * @return void + * @return void + * @description 订单支付回调 + * @author jqs + * @date 2023/7/13 17:57 */ @Override @Transactional - public void payBack(Transaction transaction) { + public void payBack(PartnerTransactionsResult transaction) { // 更新订单状态 - String orderId=transaction.getOutTradeNo(); + String orderId = transaction.getOutTradeNo(); Order order = this.getById(orderId); order.setOrderStatus(2); order.setPayTime(new Date()); @@ -3455,8 +3679,8 @@ goodsTotalChangeDto.setChangeType(1); goodsTotalChangeDto.setChangeNum(orderGoods.getBuyNum()); goodsTotalChangeDto.setMoney(orderGoods.getGoodsReceivableMoney()); - Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(),orderGoods.getGoodsId()); - if(bugGoodsNum==null||bugGoodsNum<1){ + Integer bugGoodsNum = orderMapper.countUserBuyGoodsNum(order.getUserId(), orderGoods.getGoodsId()); + if (bugGoodsNum == null || bugGoodsNum < 1) { goodsTotalChangeDto.setPersonNum(1); } goodsTotalChangeDtoList.add(goodsTotalChangeDto); @@ -3499,6 +3723,9 @@ if (haveGoods) { memberTotalChangeDto.setGoodsOrderChange(1); } + if(order.getOrderFrom()==2){ + memberTotalChangeDto.setActivityTime(order.getCreateTime()); + } // 更新会员统计信息 remoteMemberService.changeMemberTotal(memberTotalChangeDto); // 如果订单来源于活动,则更新活动统计信息 @@ -3537,16 +3764,16 @@ } /** - * @description 订单退款 - * @author jqs - * @date 2023/7/13 18:36 * @param orderId - * @return void + * @return void + * @description 订单退款 + * @author jqs + * @date 2023/7/13 18:36 */ @Override @Transactional - public void refundOrder(String orderId){ - //更新订单信息 + public void refundOrder(String orderId) { + // 更新订单信息 Order order = this.getById(orderId); order.setOrderStatus(0); order.setCancelTime(new Date()); @@ -3559,7 +3786,7 @@ orderRefund.setOrderId(order.getOrderId()); orderRefund.setUserId(order.getUserId()); orderRefund.setShopId(order.getShopId()); - orderRefund.setRefundMoney(order.getPayMoney()); + orderRefund.setRefundMoney(order.getOnlinePayMoney()); orderRefund.setOrderMoney(order.getPayMoney()); orderRefund.setCreateTime(new Date()); // 初始化各类商品的收款金额 @@ -3573,19 +3800,19 @@ Boolean haveExperience = false; Boolean haveGoods = false; List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); - if(orderGoodsList!=null&&!orderGoodsList.isEmpty()){ + if (orderGoodsList != null && !orderGoodsList.isEmpty()) { StringJoiner memberCouponSJ = new StringJoiner(","); - for(OrderGoods orderGoods : orderGoodsList){ - if(order.getOrderFrom()==2){ + for (OrderGoods orderGoods : orderGoodsList) { + if (order.getOrderFrom() == 2) { //redis库存控制极简版 //活动订单回退库存 - String goodsLock = "goods_lock_"+order.getActivityId()+"_"+orderGoods.getGoodsId(); + String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId(); RLock redissonLock = redissonClient.getLock(goodsLock); - try{ + try { redissonLock.lock(30, TimeUnit.SECONDS); - Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId()); - redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId(),surpNum+orderGoods.getBuyNum()); - }finally{ + Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId()); + redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum()); + } finally { redissonLock.unlock(); } //改变活动库存 @@ -3604,7 +3831,7 @@ activityRecord.setUserId(order.getUserId()); activityRecord.setOrderTime(order.getCreateTime()); remoteActivityService.delActivityRecord(activityRecord); - }else{ + } else { memberCouponSJ.add(orderGoods.getCouponId()); } switch (orderGoods.getGoodsType()) { @@ -3629,7 +3856,7 @@ } } //回退优惠券 - if(memberCouponSJ!=null){ + if (memberCouponSJ != null) { remoteCouponService.backMemberCoupon(memberCouponSJ.toString()); } } @@ -3688,43 +3915,97 @@ activityTotalChangeDto.setUserId(order.getUserId()); remoteActivityService.changeActivityTotal(activityTotalChangeDto); } + + // 用户取消订单退款 + BigDecimal onlinePayMoney = order.getOnlinePayMoney(); + if(BigDecimal.ZERO.compareTo(onlinePayMoney) < 0){ + // 订单支付金额大于0,可发起退款 + orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund); + } + + orderRefund.setRefundStatus(1); + orderRefundService.saveOrUpdate(orderRefund); } /** - * @description 员工端活动订单统计 - * @author jqs - * @date 2023/7/17 15:25 + * 申请退款API + */ + private void orderWxApplyRefund(String orderId, String outRefundNo, BigDecimal payMoney, OrderRefund orderRefund){ + try { + // 创建支付订单 + OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId); + if (null == orderPayment) { + return; + } + String subMchId = orderPayment.getSubMchId(); + WxPayConfig config = wxService.getConfig(); + + RefundsRequest request = new RefundsRequest(); + request.setSpAppid(config.getAppId()); + request.setSubMchid(subMchId); + request.setTransactionId(orderPayment.getTransactionId()); + request.setOutRefundNo(outRefundNo); + request.setReason("用户取消订单"); + // 订单金额 + int total = payMoney.multiply(new BigDecimal(100)).intValue(); + RefundsRequest.Amount amount = RefundsRequest.Amount.builder().refund(total).total(total).currency("CNY").build(); + request.setAmount(amount); + request.setNotifyUrl(config.getNotifyUrl()); + + RefundsResult result = wxService.getEcommerceService().refunds(request); + + // 微信退款id + orderRefund.setWxRefundId(result.getRefundId()); + + // 请求参数 + Gson gson = new Gson(); + String refundRequestJson = gson.toJson(request); + // 返回参数 + String refundResponseJson = gson.toJson(result); + + // 保存支付订单统一下单日志 + paymentMessageService.savePaymentMessage("3", orderId, refundRequestJson, refundResponseJson); + + } catch (WxPayException e) { + throw new ServiceException(e.getMessage()); + } + } + + /** * @param staffTotalDto - * @return StaffActivityOrderTotalVo + * @return StaffActivityOrderTotalVo + * @description 员工端活动订单统计 + * @author jqs + * @date 2023/7/17 15:25 */ @Override - public StaffActivityOrderTotalVo getStaffActivityOrderTotal(StaffTotalDto staffTotalDto){ + public StaffActivityOrderTotalVo getStaffActivityOrderTotal(StaffTotalDto staffTotalDto) { StaffActivityOrderTotalVo staffActivityOrderTotalVo = orderMapper.getStaffActivityOrderTotal(staffTotalDto); return staffActivityOrderTotalVo; } /** - * @description 员工端活动统计 - * @author jqs - * @date 2023/7/17 15:51 * @param staffTotalDto - * @return StaffActivityTotalVo + * @return StaffActivityTotalVo + * @description 员工端活动统计 + * @author jqs + * @date 2023/7/17 15:51 */ @Override - public StaffActivityTotalVo getStaffActivityTotal(StaffTotalDto staffTotalDto){ + public StaffActivityTotalVo getStaffActivityTotal(StaffTotalDto staffTotalDto) { StaffActivityTotalVo staffActivityTotalVo = orderMapper.getStaffActivityTotal(staffTotalDto); return staffActivityTotalVo; } /** - * @description 员工端活动统计订单分布 - * @author jqs - * @date 2023/7/17 16:16 * @param staffTotalDto - * @return MerOrderDistributionTotalVo + * @return MerOrderDistributionTotalVo + * @description 员工端活动统计订单分布 + * @author jqs + * @date 2023/7/17 16:16 */ @Override - public MerOrderDistributionTotalVo getStaffOrderDistributionTotal(StaffTotalDto staffTotalDto){ + public MerOrderDistributionTotalVo getStaffOrderDistributionTotal(StaffTotalDto staffTotalDto) { MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo(); // 获取订单年龄用户列表 MerTotalDto merTotalDto = new MerTotalDto(); @@ -3765,7 +4046,7 @@ } // 如果用户ID列表不为空 if (userIdList != null && !userIdList.isEmpty()) { - mgtMapTotalPlusVo = orderMapper.listStaffActivityOrderDistributionTotal(userIdList,staffTotalDto.getShopId(),staffTotalDto.getActivityId()); + mgtMapTotalPlusVo = orderMapper.listStaffActivityOrderDistributionTotal(userIdList, staffTotalDto.getShopId(), staffTotalDto.getActivityId()); orderTotalValue[i] = mgtMapTotalPlusVo.getMapValueFirst(); orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond(); } else { @@ -3784,14 +4065,14 @@ /** - * @description 员工端活动统计销售占比 - * @author jqs - * @date 2023/7/17 17:03 * @param staffTotalDto - * @return MerOrderTypeTotalVo + * @return MerOrderTypeTotalVo + * @description 员工端活动统计销售占比 + * @author jqs + * @date 2023/7/17 17:03 */ @Override - public MerOrderTypeTotalVo getStaffOrderTypeTotal(StaffTotalDto staffTotalDto){ + public MerOrderTypeTotalVo getStaffOrderTypeTotal(StaffTotalDto staffTotalDto) { MerOrderTypeTotalVo orderTypeTotalVo = new MerOrderTypeTotalVo(); //获取商品分类销售数据 List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listStaffOrderTotalGoodsType(staffTotalDto); @@ -3829,11 +4110,11 @@ } /** - * @description 员工端获客人数 - * @author jqs - * @date 2023/7/17 18:42 * @param staffTotalDto - * @return StaffActivityDateMemberTotalVo + * @return StaffActivityDateMemberTotalVo + * @description 员工端获客人数 + * @author jqs + * @date 2023/7/17 18:42 */ @Override public StaffActivityDateMemberTotalVo getStaffActivityGetMemberTotal(StaffTotalDto staffTotalDto) { @@ -3870,11 +4151,11 @@ } /** - * @description 员工端获客人数 - * @author jqs - * @date 2023/7/17 18:42 * @param staffTotalDto - * @return StaffActivityDateMemberTotalVo + * @return StaffActivityDateMemberTotalVo + * @description 员工端获客人数 + * @author jqs + * @date 2023/7/17 18:42 */ @Override public StaffActivityDateMemberTotalVo getStaffActivityMemberTotal(StaffTotalDto staffTotalDto) { @@ -3911,12 +4192,12 @@ } /** - * @description 获取时间段日期 - * @author jqs - * @date 2023/7/17 19:11 * @param startDate * @param endDate - * @return List<String> + * @return List<String> + * @description 获取时间段日期 + * @author jqs + * @date 2023/7/17 19:11 */ public static List<String> getDateRange(String startDate, String endDate) { List<String> dateList = new ArrayList<>(); @@ -3930,50 +4211,87 @@ } /** - * @description 检查订单状态定时任务 - * @author jqs - * @date 2023/7/25 14:40 * @param - * @return void + * @return void + * @description 检查订单状态定时任务 + * @author jqs + * @date 2023/7/25 14:40 */ @Override - public void checkOrderStatus(){ + public void checkOrderStatus() { Integer delayTime = 30; - if(redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)){ + if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); } delayTime = delayTime + 5; - Date checkTime = DateUtils.addMinutes(new Date(),-delayTime); + Date checkTime = DateUtils.addMinutes(new Date(), -delayTime); LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Order::getDelFlag,0); - queryWrapper.lt(Order::getCreateTime,checkTime); - queryWrapper.eq(Order::getOrderStatus,1); + queryWrapper.eq(Order::getDelFlag, 0); + queryWrapper.lt(Order::getCreateTime, checkTime); + queryWrapper.eq(Order::getOrderStatus, 1); List<Order> orderList = this.list(queryWrapper); - if(orderList!=null&&!orderList.isEmpty()){ - for(Order order: orderList){ + if (orderList != null && !orderList.isEmpty()) { + for (Order order : orderList) { autoTimeCancelOrder(order); } } } - private void autoTimeCancelOrder(Order order){ + @Override + public void profitSharingBack(ProfitSharingNotifyResult result) { + + try { + String outOrderNo = result.getOutOrderNo(); + ProfitSharing profitSharing = profitSharingService.getById(outOrderNo); + if(null != profitSharing){ + profitSharing.setWxOrderId(result.getOrderId()); + profitSharing.setFinishTime(result.getSuccessTime()); + profitSharing.setFinishFlag(1); + + profitSharingService.saveOrUpdate(profitSharing); + } + } catch (Exception e){ + + log.error("==分账回成功回调操作====【{}】========={}", result.getOutOrderNo(), e.getMessage()); + } + } + + @Override + public void orderRefundBack(RefundNotifyResult result) { + try { + String outRefundNo = result.getOutRefundNo(); + String refundStatus = result.getRefundStatus(); + OrderRefund orderRefund = orderRefundService.getById(outRefundNo); + if(null != orderRefund){ + orderRefund.setWxRefundId(result.getRefundId()); + orderRefund.setBackTime(result.getSuccessTime()); + orderRefund.setRefundStatus(IDict.getCodeByText(RefundStatusEnum.class, refundStatus)); + orderRefundService.saveOrUpdate(orderRefund); + } + } catch (Exception e){ + + log.error("==退款回成功回调操作====【{}】========={}", result.getOutRefundNo(), e.getMessage()); + } + } + + private void autoTimeCancelOrder(Order order) { String orderId = order.getOrderId(); order.setOrderStatus(0); order.setCancelTime(new Date()); this.saveOrUpdate(order); //活动订单回退库存 - if(order.getOrderFrom()==2){ + if (order.getOrderFrom() == 2) { List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); - if(orderGoodsList!=null&&!orderGoodsList.isEmpty()){ - for(OrderGoods orderGoods : orderGoodsList){ + if (orderGoodsList != null && !orderGoodsList.isEmpty()) { + for (OrderGoods orderGoods : orderGoodsList) { //redis库存控制极简版 - String goodsLock = "goods_lock_"+order.getActivityId()+"_"+orderGoods.getGoodsId(); + String goodsLock = "goods_lock_" + order.getActivityId() + "_" + orderGoods.getGoodsId(); RLock redissonLock = redissonClient.getLock(goodsLock); - try{ + try { redissonLock.lock(30, TimeUnit.SECONDS); - Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId()); - redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+order.getActivityId()+"-"+orderGoods.getGoodsId(),surpNum+orderGoods.getBuyNum()); - }finally{ + Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId()); + redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + order.getActivityId() + "-" + orderGoods.getGoodsId(), surpNum + orderGoods.getBuyNum()); + } finally { redissonLock.unlock(); } //改变活动库存 @@ -3994,16 +4312,16 @@ remoteActivityService.delActivityRecord(activityRecord); } } - }else{ - if(order.getCouponMoney().compareTo(BigDecimal.ZERO)>0){ + } else { + if (order.getCouponMoney().compareTo(BigDecimal.ZERO) > 0) { //回退优惠券 List<OrderGoods> orderGoodsList = orderGoodsService.listByOrderId(orderId); - if(orderGoodsList!=null&&!orderGoodsList.isEmpty()) { + if (orderGoodsList != null && !orderGoodsList.isEmpty()) { StringJoiner memberCouponSJ = new StringJoiner(","); for (OrderGoods orderGoods : orderGoodsList) { memberCouponSJ.add(orderGoods.getCouponId()); } - if(memberCouponSJ!=null){ + if (memberCouponSJ != null) { remoteCouponService.backMemberCoupon(memberCouponSJ.toString()); } @@ -4011,4 +4329,69 @@ } } } + + /** + * @description 获取商户订单统计 + * @author jqs + * @date 2023/8/4 10:25 + * @param mgtShopAllOrderPageDto + * @return MgtShopAllOrderTotal + */ + @Override + public MgtShopAllOrderTotal getMgtShopAllOrderTotal(MgtShopAllOrderPageDto mgtShopAllOrderPageDto){ + MgtShopAllOrderTotal shopAllOrderTotal = orderMapper.getMgtShopAllOrderTotal(mgtShopAllOrderPageDto); + return shopAllOrderTotal; + } + + /** + * 分页获取会员消费记录 + * @param merOrderPageDto + * @return + */ + @Override + public List<MerOrderPageVo> pageMerMemberPayOrder(Page page,MerMemberNoClearOrderDto merOrderPageDto){ + List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerMemberPayOrder(page, merOrderPageDto); + if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) { + Long userId; + Member member; + Integer orderFrom; + String orderFromDesc; + BigDecimal zeroBig = new BigDecimal("0.00"); + StringJoiner userIdSj = new StringJoiner(","); + for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) { + userId = merOrderPageVo.getUserId(); + userIdSj.add(userId.toString()); + orderFrom = merOrderPageVo.getOrderFrom(); + if (orderFrom != null) { + if (orderFrom == 1) { + orderFromDesc = "商城订单"; + } else { + orderFromDesc = "线下创建"; + } + } else { + orderFromDesc = "商城订单"; + } + merOrderPageVo.setOrderFromDesc(orderFromDesc); + merOrderPageVo.setUnPaidMoney(merOrderPageVo.getPayMoney().subtract(merOrderPageVo.getReceiveMoney())); + if (merOrderPageVo.getUnPaidMoney() == null) { + merOrderPageVo.setUnPaidMoney(zeroBig); + } + } + MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); + mgtBaseBathDto.setIds(userIdSj.toString()); + List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData(); + Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream() + .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity())); + for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) { + if(merOrderPageVo.getUserId()!=null&&userMap.get(merOrderPageVo.getUserId())!=null){ + merOrderPageVo.setUserName(userMap.get(merOrderPageVo.getUserId()).getRealName()); + merOrderPageVo.setNickName(userMap.get(merOrderPageVo.getUserId()).getNickName()); + merOrderPageVo.setUserMobile(userMap.get(merOrderPageVo.getUserId()).getUserMobile()); + }else{ + log.debug("订单merOrderPageVo"+merOrderPageVo.getOrderId()+"缺少用户"); + } + } + } + return merOrderPageVoList; + } } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java index 43878d1..36c35cc 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java @@ -2,6 +2,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult; +import com.github.binarywang.wxpay.bean.ecommerce.RefundNotifyResult; +import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult; import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.pojo.order.Order; import com.ruoyi.order.domain.vo.*; @@ -416,7 +419,7 @@ * @param Transaction transaction * @return void */ - void payBack(Transaction transaction); + void payBack(PartnerTransactionsResult transaction); /** * 取消订单 @@ -489,4 +492,33 @@ * @return void */ void checkOrderStatus(); + + /** + * 分账通知回调 + * @param result + */ + void profitSharingBack(ProfitSharingNotifyResult result); + + /** + * 订单退款回调 + * @param result + */ + void orderRefundBack(RefundNotifyResult result); + + /** + * @description 获取商户订单统计 + * @author jqs + * @date 2023/8/4 10:25 + * @param mgtShopAllOrderPageDto + * @return MgtShopAllOrderTotal + */ + MgtShopAllOrderTotal getMgtShopAllOrderTotal(MgtShopAllOrderPageDto mgtShopAllOrderPageDto); + + + /** + * 分页获取会员消费记录 + * @param merOrderPageDto + * @return + */ + List<MerOrderPageVo> pageMerMemberPayOrder(Page page,MerMemberNoClearOrderDto merOrderPageDto); } diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml index 79ddc73..c217d22 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml @@ -3,7 +3,7 @@ port: 10064 # Spring -spring: +spring: application: # 应用名称 name: ruoyi-order @@ -25,3 +25,13 @@ # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + +wx: + pay: + appId: #微信公众号或者小程序等的appid(平台) + mchId: #微信支付商户号(平台) + mchKey: #微信支付商户密钥(平台) + platformTyMacId: # 平台特约商户号,用户平台收取服务费 + subAppId: #服务商模式下的子商户公众账号ID (这个可以不用配置) + subMchId: #服务商模式下的子商户号 (二级商户号 也不用配置) + keyPath: # (商户平台 下载的V3证书)p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头) diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml index dacb5b1..58f8eff 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/ConsumerGoodsMapper.xml @@ -124,6 +124,8 @@ tcg.shop_id shopId, tcg.goods_type goodsType, tcg.goods_name goodsName, + tcg.goods_introduction goodsIntroduction, + tcg.goods_tag goodsTag, tcg.goods_picture goodsPicture, tcg.goods_nurses goodsNurses, tcg.cycle_num_flag cycleNumFlag, diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml index d8c6f68..275d6e8 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml @@ -109,6 +109,7 @@ tog.goods_id goodsId, tog.goods_name goodsName, tog.goods_type goodsType, + tog.goods_tag goodsTag, tog.buy_num buyNum, tog.goods_price goodsPrice, tog.goods_picture goodsPicture, diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml index e77189a..ac82736 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml @@ -82,7 +82,9 @@ <result column="discountMoney" property="discountMoney"/> <result column="receivableMoney" property="receivableMoney"/> <result column="payMoney" property="payMoney"/> + <result column="receiveMoney" property="receiveMoney"/> <result column="orderFrom" property="orderFrom" /> + <result column="orderFromDesc" property="orderFromDesc" /> <result column="createTime" property="createTime" /> <collection property="mgtOrderGoodsVoList" ofType="com.ruoyi.order.domain.vo.MgtOrderGoodsPageVo"> <result column="goodsName" property="goodsName"/> @@ -294,10 +296,12 @@ toc.coupon_money couponDiscount, toc.receivable_money receivableMoney, toc.receivable_deposit receivableDeposit, - toc.pay_money payMoney, + toc.change_receivable_money receiveMoney, + IFNULL(toc.offline_pay_money,0) payMoney, + toc.change_receivable_money-IFNULL(toc.offline_pay_money,0) unPaidMoney, toc.create_time createTime FROM t_order toc - WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND toc.order_status = 2 AND toc.close_flag = 0 + WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND toc.order_status >= 2 AND toc.close_flag = 0 ORDER BY toc.create_time DESC </select> @@ -319,7 +323,8 @@ tog.goods_type goodsType, tog.buy_num buyNum, toc.create_time createTime, - toc.order_from orderFrom + toc.order_from orderFrom, + toc.activity_name activityName FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} @@ -363,10 +368,16 @@ toc.order_status orderStatus, toc.order_money orderGoodsMoney, toc.coupon_money couponDiscount, - toc.receivable_money receivableMoney, + toc.receivable_money-toc.online_pay_money receivableMoney, toc.receivable_deposit receivableDeposit, - toc.pay_money payMoney - FROM t_order toc + toc.change_receivable_money payMoney, + IFNULL(toc.offline_pay_money,0) receiveMoney, + IFNULL(toc.receivable_money-IFNULL(CASE toc.pay_type WHEN 1 THEN toc.online_pay_money WHEN 2 THEN IFNULL(toc.offline_pay_money,0) END,0),0) unpaidMoney, + tpr.pay_time receiveMoneyTime, + tpr.pay_money thisReceiveMoney, + CASE tpr.pay_type WHEN 1 THEN "微信" WHEN 2 THEN "现金" WHEN 3 THEN "支付宝" END thisReceiveType + FROM t_pay_record tpr + INNER JOIN t_order toc ON tpr.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.user_id = #{userId} AND (toc.order_status = 2 OR toc.order_status = 3) ORDER BY toc.create_time DESC </select> @@ -377,9 +388,10 @@ IFNULL(SUM(IFNULL(toc.order_money,0)),0) totalOrderMoney, IFNULL(SUM(IFNULL(toc.receivable_money,0)),0) totalReceivableMoney, IFNULL(SUM(IFNULL(toc.discount_money,0)),0) totalDiscountMoney, - IFNULL(SUM(IFNULL(toc.pay_money,0)),0) totalPayMoney + IFNULL(SUM(IFNULL(toc.pay_money,0)),0) totalPayMoney, + IFNULL(SUM(IFNULL(toc.change_receivable_money,0)),0) totalReceiveMoney FROM t_order toc - WHERE toc.del_flag = 0 AND toc.user_id = #{param.userId} + WHERE toc.del_flag = 0 AND toc.user_id = #{param.memberUserId} <if test="param.orderStatus != null"> AND toc.order_status = #{param.orderStatus} </if> @@ -410,6 +422,7 @@ toc.discount_money discountMoney, toc.receivable_money receivableMoney, toc.pay_money payMoney, + toc.change_receivable_money receiveMoney, tog.goods_name goodsName, tog.buy_num buyNum, toc.create_time createTime, @@ -438,7 +451,7 @@ AND Date(toc.create_time) <= #{param.endOrderDate} </if> <if test="param.keyword != null and param.keyword != ''"> - AND toc.order_no LIKE CONCAT('%',#{param.keyword},'%') + AND (toc.order_no LIKE CONCAT('%',#{param.keyword},'%') OR tog.goods_name LIKE CONCAT('%',#{param.keyword},'%')) </if> ORDER BY toc.create_time DESC </select> @@ -487,9 +500,35 @@ <select id="totalOrderFirst" resultType="com.ruoyi.order.domain.vo.MgtOrderTotal"> SELECT - COUNT(order_id) orderTotal, - IFNULL(SUM(order_money),0) orderMoneyTotal - FROM t_order ORDER BY create_time DESC + COUNT(temp.order_id) orderTotal, + IFNULL(SUM(temp.order_money),0) orderMoneyTotal + FROM + (SELECT toc.order_id,toc.order_money,toc.pay_money + FROM t_order toc + INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id + WHERE toc.del_flag = 0 AND (toc.order_from = 1 OR toc.order_from = 3) + <if test="param.orderStatus != null"> + AND toc.order_status = #{param.orderStatus} + </if> + <if test="param.goodsType != null and param.goodsType !=''"> + AND tog.goods_type = #{param.goodsType} + </if> + <if test="param.shopId != null and param.shopId != ''"> + AND toc.shop_id = #{param.shopId} + </if> + <if test="param.shopIds != null and param.shopIds != ''"> + AND FIND_IN_SET(toc.shop_id, #{param.shopIds}) > 0 + </if> + <if test="param.keyword != null and param.keyword != ''"> + AND (toc.order_no LIKE CONCAT('%',#{param.keyword},'%') OR toc.activity_name LIKE CONCAT('%',#{param.keyword},'%') OR FIND_IN_SET(toc.user_id, #{param.userIds}) > 0) + </if> + <if test="param.verifyStartTime != null and param.verifyStartTime != ''"> + AND Date(toc.use_time) >= #{param.verifyStartTime} + </if> + <if test="param.verifyEndTime != null and param.verifyEndTime != ''"> + AND Date(toc.use_time) <= #{param.verifyEndTime} + </if> + GROUP BY toc.order_id) AS temp </select> <select id="totalOrderSecond" resultType="com.ruoyi.order.domain.vo.MgtOrderTotal"> @@ -647,6 +686,13 @@ IFNULL(SUM(CASE WHEN order_from = 2 THEN 1 ELSE 0 END),0) activityOrderTotal FROM t_order WHERE del_flag = 0 + </select> + + <select id="activityUserTotal" resultType="java.lang.Integer"> + SELECT + COUNT(DISTINCT user_id) + FROM t_order + WHERE del_flag = 0 AND order_from = 2 </select> <select id="getTotalOrderTotalOrderFrom" resultType="com.ruoyi.order.domain.vo.MgtTotalOrderTotalVo"> @@ -1344,7 +1390,7 @@ SELECT DATE(toc.create_time) AS mapKey, COUNT(DISTINCT tog.order_id) AS mapValueFirst, - SUM(tog.order_money) AS mapValueSecond + SUM(tog.goods_receivable_money) AS mapValueSecond FROM t_order toc INNER JOIN t_order_goods tog ON toc.order_id = tog.order_id WHERE toc.del_flag = 0 AND tog.del_flag = 0 AND tog.goods_type = #{param.goodsType} @@ -1454,28 +1500,28 @@ FROM t_order WHERE del_flag = 0 AND shop_id = #{param.shopId} <if test="param.memberUserId != null and param.memberUserId != ''"> - AND toc.user_id = #{param.memberUserId} + AND user_id = #{param.memberUserId} </if> <if test="param.type != null and param.type ==1 "> - AND (toc.order_status = 2 OR toc.order_status = 3) + AND (order_status = 2 OR order_status = 3) </if> <if test="param.type != null and param.type ==2 "> - AND toc.order_status = 2 + AND order_status = 2 </if> <if test="param.type != null and param.type ==3 "> - AND toc.order_status = 3 + AND order_status = 3 </if> <if test="param.orderFrom != null and param.orderFrom != '' "> - AND toc.order_from = #{param.orderFrom} + AND order_from = #{param.orderFrom} </if> <if test="param.startOrderDate != null and param.startOrderDate != '' "> - AND Date(toc.create_time) >= #{param.startOrderDate} + AND Date(create_time) >= #{param.startOrderDate} </if> <if test="param.endOrderDate != null and param.endOrderDate != '' "> - AND Date(toc.create_time) <= #{param.endOrderDate} + AND Date(create_time) <= #{param.endOrderDate} </if> <if test="param.keyword != null and param.keyword != ''"> - AND (toc.order_no LIKE CONCAT('%',#{param.keyword},'%') OR tog.goods_name LIKE CONCAT('%',#{param.keyword},'%')) + AND order_no LIKE CONCAT('%',#{param.keyword},'%') </if> </select> @@ -1632,4 +1678,57 @@ INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.del_flag = 0 AND toc.order_status > 1 AND toc.user_id = #{userId} AND tog.goods_id = #{goodsId} </select> + + <select id="getMgtShopAllOrderTotal" resultType="com.ruoyi.order.domain.vo.MgtShopAllOrderTotal"> + SELECT + COUNT(DISTINCT toc.order_id) orderTotal, + IFNULL(SUM(toc.order_money),0) totalOrderMoney, + IFNULL(SUM(toc.change_receivable_money),0) totalReceiveMoney + FROM t_order toc + WHERE toc.del_flag = 0 AND (toc.order_from = 1 OR toc.order_from = 3) + <if test="param.orderFrom != null"> + AND toc.order_from = #{param.orderFrom} + </if> + <if test="param.orderStatus != null"> + AND toc.order_status = #{param.orderStatus} + </if> + <if test="param.orderNo != null and param.orderNo !=''"> + AND toc.order_no LIKE CONCAT('%',#{param.orderNo},'%') + </if> + <if test="param.shopId != null and param.shopId != ''"> + AND toc.shop_id = #{param.shopId} + </if> + <if test="param.startOrderDate != null and param.startOrderDate != '' "> + AND Date(toc.create_time) >= #{param.startOrderDate} + </if> + <if test="param.endOrderDate != null and param.endOrderDate != '' "> + AND Date(toc.create_time) <= #{param.endOrderDate} + </if> + ORDER BY toc.create_time DESC + </select> + + <select id="pageMerMemberPayOrder" resultMap="merOrderResultMap"> + SELECT + toc.user_id userId, + toc.order_id orderId, + toc.order_no orderNo, + toc.pay_type payType, + toc.order_status orderStatus, + toc.order_money orderGoodsMoney, + toc.coupon_money couponDiscount, + toc.receivable_money-toc.online_pay_money receivableMoney, + toc.receivable_deposit receivableDeposit, + toc.change_receivable_money payMoney, + IFNULL(toc.offline_pay_money,0) receiveMoney, + toc.order_remark orderRemark, + tog.goods_name goodsName, + tog.goods_type goodsType, + tog.buy_num buyNum, + toc.create_time createTime, + toc.order_from orderFrom + FROM t_order toc + INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id + WHERE toc.del_flag = 0 AND (toc.order_status = 2 OR toc.order_status = 3) AND toc.shop_id = #{param.shopId} AND toc.user_id = #{param.memberUserId} + ORDER BY toc.create_time DESC + </select> </mapper> diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml index 94f3a8f..aff9ab1 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml @@ -123,7 +123,7 @@ <select id="getMgtMemberServiceTotal" resultType="com.ruoyi.order.domain.vo.MgtMemberServiceTotalVo"> SELECT - COUNT(temp.consumerGoodsId), + COUNT(temp.consumerGoodsId) cycleTotal, IFNULL(SUM(temp.cycleCount),0) cycleCount, IFNULL(SUM(temp.surpCycleCount),0) surpCycleCount FROM (SELECT diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java index 451ba86..63df88a 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/config/WxPayConfiguration.java @@ -1,15 +1,9 @@ package com.ruoyi.shop.config; -import com.github.binarywang.wxpay.config.WxPayConfig; import com.github.binarywang.wxpay.service.WxPayService; -import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; import lombok.AllArgsConstructor; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** @@ -22,7 +16,7 @@ public class WxPayConfiguration { private WxPayProperties properties; - @Bean + /*@Bean @ConditionalOnMissingBean public WxPayService wxService() { WxPayConfig payConfig = new WxPayConfig(); @@ -39,6 +33,6 @@ WxPayService wxPayService = new WxPayServiceImpl(); wxPayService.setConfig(payConfig); return wxPayService; - } + }*/ } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java index cd42728..4b5e9e0 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java @@ -2,6 +2,9 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.shop.domain.pojo.shop.ShopAuthentication; +import com.ruoyi.shop.domain.pojo.shop.ShopProportion; import com.ruoyi.shop.domain.pojo.shop.ShopRelUser; import com.ruoyi.shop.domain.pojo.shop.ShopStaff; import com.ruoyi.shop.service.shop.*; @@ -10,6 +13,7 @@ import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.shop.Shop; +import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.QwH5LoginVo; @@ -59,6 +63,12 @@ @Resource private MemberTaskService memberTaskService; + @Resource + private ShopAuthenticationService shopAuthenticationService; + + @Resource + private ShopProportionService shopProportionService; + /** * 企业微信H5登录 * @param qwUserDetail @@ -90,6 +100,30 @@ return R.ok(shop); } + @PostMapping("/getShopSubMchId") + public R<String> getShopSubMchId(@RequestBody Long shopId){ + String subMchid = ""; + ShopAuthentication authentication = shopAuthenticationService.getByShopId(shopId); + if(null != authentication){ + subMchid = authentication.getSubMchid(); + } + return R.ok(subMchid, ""); + } + + + /** + * 获取商户分成 + * @param shopId + * @return + */ + @PostMapping("/getShopProportion") + public R<ShopProportionVo> getShopProportion(@RequestBody Long shopId){ + ShopProportion shopProportion = shopProportionService.getByShopId(shopId); + + ShopProportionVo shopProportionVo = new ShopProportionVo(); + BeanUtils.copyBeanProp(shopProportionVo, shopProportion); + return R.ok(shopProportionVo); + } @PostMapping("/getShopByUserId") public R<ShopRelUserVo> getShopByUserId(@RequestBody Long userId) diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java index 660a4e7..48b2420 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java @@ -71,8 +71,10 @@ @ApiOperation(value = "导出商户列表") public void exportPageMgtShop(MgtShopPageDto mgtShopPageDto, HttpServletResponse response) { Page<MgtShopPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtShopPageVo> mgtShopPageVoList = shopService.pageMgtShop(page,mgtShopPageDto); ExcelUtil<MgtShopPageVo> util = new ExcelUtil<MgtShopPageVo>(MgtShopPageVo.class); util.exportExcel(response, mgtShopPageVoList, "用户订单列表"); @@ -185,8 +187,10 @@ Long userId = SecurityUtils.getUserId(); mgtShopSuggestPageDto.setUserId(userId); Page<MgtShopSuggestPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtShopSuggestPageVo> mgtShopSuggestPageVoList = shopSuggestService.pageMgtShopSuggest(page,mgtShopSuggestPageDto); ExcelUtil<MgtShopSuggestPageVo> util = new ExcelUtil<MgtShopSuggestPageVo>(MgtShopSuggestPageVo.class); util.exportExcel(response, mgtShopSuggestPageVoList, "商户建议列表"); diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java index 60519d3..0538082 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowAgencyTaskDto.java @@ -22,6 +22,9 @@ @ApiModelProperty(value="跟踪类型1电话2手动") private Integer followType; + @ApiModelProperty(value="自定义跟进类型") + private String customeFollowType; + @ApiModelProperty(value="拨打电话") private String callPhone; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java index d2a21ea..0234bf7 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MerFollowMemberTaskDto.java @@ -22,6 +22,10 @@ @ApiModelProperty(value="跟踪类型1电话2手动") private Integer followType; + @ApiModelProperty(value="自定义跟进类型") + private String customeFollowType; + + @ApiModelProperty(value="拨打电话") private String callPhone; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java index 379bf44..196c27b 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtFollowShopTaskDto.java @@ -23,6 +23,7 @@ @ApiModelProperty(value="跟进类型") private String followType; + @ApiModelProperty(value="跟进内容") private String followContent; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffFollowShopTaskDto.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffFollowShopTaskDto.java index 3c6bc9d..1d69714 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffFollowShopTaskDto.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/StaffFollowShopTaskDto.java @@ -47,7 +47,7 @@ private String nextTaskContent; @ApiModelProperty(value="跟踪类型") - private String customFollowType; + private String customeFollowType; @ApiModelProperty(value="紧急程度") private String emergencyState; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/AgencyTaskRecord.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/AgencyTaskRecord.java index f55cd1b..6d3366d 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/AgencyTaskRecord.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/AgencyTaskRecord.java @@ -1,20 +1,17 @@ package com.ruoyi.shop.domain.pojo.task; -import java.util.Date; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.activerecord.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 java.io.Serializable; - -import com.baomidou.mybatisplus.annotation.Version; - import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; /** * <p> @@ -76,6 +73,9 @@ @TableField("create_time") private Date createTime; + @TableField("custome_follow_type") + private String customeFollowType; + @Override protected Serializable pkVal() { diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/MemberTaskRecord.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/MemberTaskRecord.java index 2354b46..dec7800 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/MemberTaskRecord.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/MemberTaskRecord.java @@ -1,16 +1,16 @@ package com.ruoyi.shop.domain.pojo.task; -import com.baomidou.mybatisplus.annotation.IdType; -import java.util.Date; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.activerecord.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 java.io.Serializable; - import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; /** * <p> @@ -73,6 +73,9 @@ @TableField("create_time") private Date createTime; + @TableField("custome_follow_type") + private String customeFollowType; + @Override protected Serializable pkVal() { return this.id; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java index 0be86fd..502e727 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/task/ShopTaskRecord.java @@ -72,8 +72,8 @@ @TableField("create_time") private Date createTime; - @TableField("custom_follow_type") - private String customFollowType; + @TableField("custome_follow_type") + private String customeFollowType; @Override protected Serializable pkVal() { diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskPageVo.java index 566edc4..f5a81d1 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskPageVo.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskPageVo.java @@ -28,5 +28,6 @@ @ApiModelProperty(value="紧急情况") private String emergencyState;; - + @ApiModelProperty(value = "跟进时间") + private String followTime; } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskRecordPageVo.java index cf4a6ed..f7a7aad 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskRecordPageVo.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerAgencyTaskRecordPageVo.java @@ -29,6 +29,9 @@ @ApiModelProperty(value="跟踪类型1电话2手动") private Integer followType; + @ApiModelProperty(value="自定义跟进类型") + private String customeFollowType; + @ApiModelProperty(value="电话时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date callTime; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerMemberTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerMemberTaskRecordPageVo.java index 3821fc7..66a1cb8 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerMemberTaskRecordPageVo.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MerMemberTaskRecordPageVo.java @@ -29,6 +29,9 @@ @ApiModelProperty(value="跟踪类型1电话2手动") private Integer followType; + @ApiModelProperty(value="自定义跟进类型") + private String customeFollowType; + @ApiModelProperty(value="电话时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date callTime; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java index 3892da4..d9ebaa8 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java @@ -39,6 +39,9 @@ @ApiModelProperty(value="跟踪类型1电话2手动") private Integer followType; + @ApiModelProperty(value="跟进类型") + private String customeFollowType; + @ApiModelProperty(value="电话时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date callTime; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtMemberFollowPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtMemberFollowPageVo.java index a6862af..40c26aa 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtMemberFollowPageVo.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtMemberFollowPageVo.java @@ -38,6 +38,9 @@ @ApiModelProperty(value="跟踪类型1电话2手动") private Integer followType; + @ApiModelProperty(value="自定义跟进类型") + private String customeFollowType; + @ApiModelProperty(value="电话时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date callTime; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java index 814e7e6..490b1e3 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java @@ -39,6 +39,9 @@ @ApiModelProperty(value="跟踪类型1电话2手动") private String followType; + @ApiModelProperty(value="自定义跟踪类型") + private String customeFollowType; + @ApiModelProperty(value="电话时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date callTime; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java index f259404..60a89be 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java @@ -39,6 +39,9 @@ @ApiModelProperty(value="跟踪类型1电话2手动") private Integer followType; + @ApiModelProperty(value="自定义跟进类型") + private String customeFollowType; + @ApiModelProperty(value="电话时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date callTime; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java index 7245b26..3dda519 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java @@ -40,7 +40,7 @@ private String followType; @ApiModelProperty(value="跟进类型") - private String customFollowType; + private String customeFollowType; @ApiModelProperty(value="电话时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentSignStateEnum.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentSignStateEnum.java new file mode 100644 index 0000000..3bc5552 --- /dev/null +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentSignStateEnum.java @@ -0,0 +1,20 @@ +package com.ruoyi.shop.enums; + +import com.ruoyi.shop.enums.dict.IDict; + +public enum WxApplyMentSignStateEnum implements IDict<Integer> { + /** + * 签约状态 + 1、UNSIGNED:未签约。该状态下,电商平台可查询获取签约链接,引导二级商户的超级管理员完成签约; + 2、SIGNED :已签约。指二级商户的超级管理员已完成签约。注意:若申请单被驳回,商户修改了商户主体名称、法人名称、超级管理员信息、主体类型等信息,则需重新签约。 + 3、NOT_SIGNABLE:不可签约。该状态下,暂不支持超级管理员签约。一般为申请单处于已驳回、已冻结、机器校验中状态,无法签约。 + */ + UNSIGNED(1, "UNSIGNED"), + SIGNED(2, "SIGNED"), + NOT_SIGNABLE(3, "NOT_SIGNABLE"); + + WxApplyMentSignStateEnum(Integer code, String text){ + init(code, text); + } + +} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentStateEnum.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentStateEnum.java new file mode 100644 index 0000000..709e72d --- /dev/null +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/WxApplyMentStateEnum.java @@ -0,0 +1,30 @@ +package com.ruoyi.shop.enums; + +import com.ruoyi.shop.enums.dict.IDict; + +public enum WxApplyMentStateEnum implements IDict<Integer> { + /** + * 审核状态 + 1:CHECKING:资料校验中 + 2:ACCOUNT_NEED_VERIFY:待账户验证 + 3:AUDITING:审核中 + 4:REJECTED:已驳回 + 5:NEED_SIGN:待签约 + 6:FINISH:完成 + 7:FROZEN:已冻结 + 8:CANCELED:已作废 + */ + CHECKING(1, "CHECKING"), + ACCOUNT_NEED_VERIFY(2, "ACCOUNT_NEED_VERIFY"), + AUDITING(3, "AUDITING"), + REJECTED(4, "REJECTED"), + NEED_SIGN(5, "NEED_SIGN"), + FINISH(6, "FINISH"), + FROZEN(7, "FROZEN"), + CANCELED(8, "CANCELED"); + + WxApplyMentStateEnum(Integer code, String text){ + init(code, text); + } + +} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/DictBean.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/DictBean.java new file mode 100644 index 0000000..c8c2424 --- /dev/null +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/DictBean.java @@ -0,0 +1,15 @@ +package com.ruoyi.shop.enums.dict; + +import lombok.Data; + +/** + * 字典bean + * 只有code和text,可用于展示下拉框 + * + * @author luozhan + */ +@Data +public class DictBean<T> implements IDict<T> { + private final T code; + private final String text; +} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/IDict.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/IDict.java new file mode 100644 index 0000000..04e77ec --- /dev/null +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/enums/dict/IDict.java @@ -0,0 +1,170 @@ +package com.ruoyi.shop.enums.dict; + +import java.lang.reflect.Field; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.stream.Collectors; +import java.util.stream.Stream; + + +/** + * 字典接口 + * <p> + * 自定义的字典枚举类实现本接口后可省略属性code和text,以及对应的get方法 + * 在构造方法中只需调用init方法即可初始化 + * + * @author luozhan + * @date 2021-12 + */ +public interface IDict<T> { + /** + * 通过code获取value + * + * @param clazz 枚举class + * @param code code + * @return text + */ + static <T> String getTextByCode(Class<? extends IDict<T>> clazz, T code) { + return Stream.of(clazz.getEnumConstants()) + .filter((IDict<T> e) -> e.getCode().equals(code)) + .map(IDict::getText) + .findAny().orElse(""); + } + + /** + * 通过text获取code + * + * @param clazz 枚举class + * @param text text + * @return code + */ + static <T> T getCodeByText(Class<? extends IDict<T>> clazz, String text) { + return Stream.of(clazz.getEnumConstants()) + .filter((IDict<T> e) -> e.getText().equals(text)) + .map(IDict::getCode) + .findAny().orElse(null); + } + + /** + * 通过code获取字典枚举实例 + * + * @param clazz 枚举class + * @param code code + * @param <T> 字典code类型 + * @param <R> 枚举类型 + * @return 字典枚举实例 + */ + @SuppressWarnings("unchecked") + static <T, R extends IDict<T>> R getByCode(Class<? extends IDict<T>> clazz, T code) { + return Stream.of(clazz.getEnumConstants()) + .filter((IDict<T> e) -> (e.getCode().equals(code))) + .map(v -> (R) v) + .findAny() + .orElse(null); + } + + /** + * 获取给定的字典枚举项(常用下拉框数据请求) + * + * @param enums 可指定需要哪些项 + * @return List + */ + @SafeVarargs + static <T, E extends IDict<T>> List<IDict<T>> getItems(E... enums) { + return Stream.of(enums) + .map(DictPool::getDict) + .collect(Collectors.toList()); + } + + /** + * 获取所有字典枚举项,除开指定的枚举 + * + * @param exclude 指定排除的枚举 + * @return List + */ + @SafeVarargs + @SuppressWarnings("unchecked") + static <T, E extends IDict<T>> List<IDict<T>> getItemsExclude(E... exclude) { + Class<IDict<T>> clazz = (Class<IDict<T>>) exclude.getClass().getComponentType(); + IDict<T>[] allEnum = clazz.getEnumConstants(); + List<IDict<T>> excludeList = Arrays.asList(exclude); + return Stream.of(allEnum) + .filter(e -> !excludeList.contains(e)) + .map(DictPool::getDict) + .collect(Collectors.toList()); + } + + /** + * 获取所有字典枚举项(常用下拉框数据请求) + * 枚举值上标记@Deprecated的不会返回 + * + * @param clazz 字典枚举类 + * @return List + */ + static <T> List<IDict<T>> getAll(Class<? extends IDict<T>> clazz) { + Map<String, Field> fieldCache = Arrays.stream(clazz.getDeclaredFields()). + filter(Field::isEnumConstant). + collect(Collectors.toMap(Field::getName, Function.identity())); + IDict<T>[] allEnum = clazz.getEnumConstants(); + return Stream.of(allEnum) + .filter(e -> !fieldCache.get(((Enum<?>) e).name()).isAnnotationPresent(Deprecated.class)) + .map(DictPool::getDict) + .collect(Collectors.toList()); + } + + /** + * 初始化 + * + * @param code 字典编码 + * @param text 字典文本 + */ + default void init(T code, String text) { + DictPool.putDict(this, code, text); + } + + /** + * 获取编码 + * + * @return 编码 + */ + default T getCode() { + return DictPool.getDict(this).getCode(); + } + + /** + * 获取文本 + * + * @return 文本 + */ + default String getText() { + return DictPool.getDict(this).getText(); + } + + + @SuppressWarnings("all") + class DictPool { + private static final Map<IDict, DictBean> DICT_MAP = new ConcurrentHashMap<>(); + + private static final Map<String, Class<? extends IDict>> DICT_NAME_CLASS_MAP = new ConcurrentHashMap<>(); + + static <T> void putDict(IDict<T> dict, T code, String text) { + DICT_NAME_CLASS_MAP.put(dict.getClass().getName(), dict.getClass()); + DICT_MAP.put(dict, new DictBean<>(code, text)); + } + + public static List<IDict<Object>> getDict(String dictName) { + Class<? extends IDict> aClass = DICT_NAME_CLASS_MAP.get(dictName); + return IDict.getAll((Class<? extends IDict<Object>>) aClass); + } + + static <K extends IDict<T>, T> DictBean<T> getDict(K dict) { + return DICT_MAP.get(dict); + } + + + } + +} diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/fliter/ParamsAuthFilter.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/fliter/ParamsAuthFilter.java index e40d3c9..75055ba 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/fliter/ParamsAuthFilter.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/fliter/ParamsAuthFilter.java @@ -30,7 +30,14 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; - + String requestUrl = request.getRequestURI(); + String requestUrlUpperCase = requestUrl.toUpperCase(); + if(requestUrlUpperCase.contains("EXPORT") + ||requestUrlUpperCase.contains("IMPORTTEMPLATE") + ){ + filterChain.doFilter(request, response); + return; + } RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response); getRequestParams(wrapper); @@ -39,7 +46,6 @@ // 返回的结果 String content = responseWrapper.getTextContent(); - String requestUrl = request.getRequestURI(); log.info("-------------------- Response Data ----------------------"); log.info(requestUrl + " -> " + content); diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java index 8c6edb0..bec6d98 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java @@ -19,4 +19,14 @@ * @param shopId */ void clearShopStaffRelation(@Param("shopId") Long shopId); + + /** + * @description + * @author jqs + * @date 2023/8/3 13:33 + * @param shopId + * @param codeUrl + * @return void + */ + void updateShopCodeUrl(@Param("shopId") Long shopId,@Param("codeUrl") String codeUrl); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java index b239586..be7a4fa 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/scheduler/ShopScheduler.java @@ -1,7 +1,12 @@ package com.ruoyi.shop.scheduler; +import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.common.core.utils.uuid.IdUtils; +import com.ruoyi.shop.domain.pojo.shop.ShopAuthentication; +import com.ruoyi.shop.service.shop.ShopService; import com.ruoyi.shop.service.task.ShopTaskService; +import com.ruoyi.system.api.domain.poji.shop.Shop; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; @@ -21,6 +26,9 @@ @Resource private ShopTaskService shopTaskService; + @Resource + private ShopService shopService; + /** * 定时检查跟进任务状态 @@ -33,4 +41,16 @@ } } + /** + * 0 0/1 * * * ? + * 定时检查 每分钟检查一次 微信二级商户进件状态 + */ + @Scheduled(cron="0 0/1 * * * ?") + private void queryEcommerceApplyMentsStatus(){ + if(schedulerUtils.getSchedulerRun()) { + log.info("--------------------定时检查微信二级商户进件状态任务开始执行--------------------"); + shopService.queryEcommerceApplyMentsStatus(); + log.info("--------------------定时检查微信二级商户进件状态任务结束执行--------------------"); + } + } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAuthenticationServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAuthenticationServiceImpl.java index f94da46..0061371 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAuthenticationServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAuthenticationServiceImpl.java @@ -1,10 +1,23 @@ package com.ruoyi.shop.service.impl.shop; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsStatusResult; +import com.google.common.base.Joiner; import com.ruoyi.shop.domain.pojo.shop.ShopAuthentication; +import com.ruoyi.shop.enums.WxApplyMentSignStateEnum; +import com.ruoyi.shop.enums.WxApplyMentStateEnum; +import com.ruoyi.shop.enums.dict.IDict; import com.ruoyi.shop.mapper.shop.ShopAuthenticationMapper; import com.ruoyi.shop.service.shop.ShopAuthenticationService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -17,4 +30,72 @@ @Service public class ShopAuthenticationServiceImpl extends ServiceImpl<ShopAuthenticationMapper, ShopAuthentication> implements ShopAuthenticationService { + @Override + public List<ShopAuthentication> getShopAuthNeedUpdateStatus() { + List<Integer> auditStatusList = Arrays.asList(1, 2, 3, 5); + + LambdaQueryWrapper<ShopAuthentication> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.in(ShopAuthentication::getAuditStatus, auditStatusList); + queryWrapper.isNotNull(ShopAuthentication::getApplymentId); + return this.list(queryWrapper); + } + + @Override + public void updateAuditStatusByApplymentId(String applymentId, ApplymentsStatusResult result) { + // WxApplyMentStateEnum + String applymentState = result.getApplymentState(); + Integer auditStatus = IDict.getCodeByText(WxApplyMentStateEnum.class, applymentState); + + Integer signState = IDict.getCodeByText(WxApplyMentSignStateEnum.class, result.getSignState()); + + LambdaUpdateWrapper<ShopAuthentication> updateWrapper = Wrappers.lambdaUpdate(); + updateWrapper.eq(ShopAuthentication::getApplymentId, applymentId) + .set(ShopAuthentication::getAuditStatus, auditStatus) + .set(ShopAuthentication::getSignState, signState); + + if(WxApplyMentStateEnum.ACCOUNT_NEED_VERIFY.getCode().equals(auditStatus)){ + // ACCOUNT_NEED_VERIFY 待账户验证 + updateWrapper.set(ShopAuthentication::getLegalValidationUrl, result.getLegalValidationUrl()); + ApplymentsStatusResult.AccountValidation accountValidation = result.getAccountValidation(); + if(null != accountValidation) { + updateWrapper.set(ShopAuthentication::getAvAccountName, accountValidation.getAccountName()) + .set(ShopAuthentication::getAvAccountNo, accountValidation.getAccountNo()) + .set(ShopAuthentication::getAvPayAmount, accountValidation.getPayAmount()) + .set(ShopAuthentication::getDaNumber, accountValidation.getDestinationAccountNumber()) + .set(ShopAuthentication::getDaName, accountValidation.getDestinationAccountName()) + .set(ShopAuthentication::getDaBank, accountValidation.getDestinationAccountBank()) + .set(ShopAuthentication::getDaCity, accountValidation.getCity()) + .set(ShopAuthentication::getDaRemark, accountValidation.getRemark()) + .set(ShopAuthentication::getDaDeadline, accountValidation.getDeadline()); + } + } else if(WxApplyMentStateEnum.NEED_SIGN.getCode().equals(auditStatus)){ + // NEED_SIGN 待签约 + updateWrapper.set(ShopAuthentication::getSignUrl, result.getSignUrl()); + updateWrapper.set(ShopAuthentication::getSubMchid, result.getSubMchid()); + + } else if(WxApplyMentStateEnum.FINISH.getCode().equals(auditStatus)){ + // FINISH 完成 + updateWrapper.set(ShopAuthentication::getSubMchid, result.getSubMchid()); + + } else if(WxApplyMentStateEnum.REJECTED.getCode().equals(auditStatus) + || WxApplyMentStateEnum.FROZEN.getCode().equals(auditStatus)){ + List<ApplymentsStatusResult.AuditDetail> auditDetail = result.getAuditDetail(); + if(null != auditDetail && !auditDetail.isEmpty()){ + List<String> paramNameList = auditDetail.stream().map(ApplymentsStatusResult.AuditDetail::getParamName).collect(Collectors.toList()); + List<String> rejectReason = auditDetail.stream().map(ApplymentsStatusResult.AuditDetail::getRejectReason).collect(Collectors.toList()); + updateWrapper.set(ShopAuthentication::getAdParamName, Joiner.on(";").join(paramNameList)) + .set(ShopAuthentication::getAdRejectReason, Joiner.on(";").join(rejectReason)); + } + + } + this.update(updateWrapper); + } + + @Override + public ShopAuthentication getByShopId(Long shopId) { + LambdaQueryWrapper<ShopAuthentication> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(ShopAuthentication::getShopId, shopId) + .last(" limit 1 "); + return this.getOne(queryWrapper); + } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopProportionServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopProportionServiceImpl.java index f6d96b3..2596193 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopProportionServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopProportionServiceImpl.java @@ -1,7 +1,10 @@ package com.ruoyi.shop.service.impl.shop; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.shop.domain.dto.MgtShopProportionEditDto; +import com.ruoyi.shop.domain.pojo.shop.ShopAuthentication; import com.ruoyi.shop.domain.pojo.shop.ShopProportion; import com.ruoyi.shop.mapper.shop.ShopProportionMapper; import com.ruoyi.shop.service.shop.ShopProportionService; @@ -48,4 +51,13 @@ shopProportionNew.setUpdateUserId(mgtShopProportionEditDto.getUserId()); this.saveOrUpdate(shopProportionNew); } + + @Override + public ShopProportion getByShopId(Long shopId) { + LambdaQueryWrapper<ShopProportion> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(ShopProportion::getShopId, shopId) + .eq(ShopProportion::getDelFlag, 0) + .last(" limit 1 "); + return this.getOne(queryWrapper); + } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java index d64e238..c5da45e 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java @@ -2,9 +2,12 @@ import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsResult; +import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsStatusResult; import com.github.binarywang.wxpay.exception.WxPayException; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.exception.ServiceException; @@ -18,6 +21,7 @@ import com.ruoyi.shop.domain.pojo.shop.*; import com.ruoyi.shop.domain.pojo.task.ShopFile; import com.ruoyi.shop.domain.vo.*; +import com.ruoyi.shop.enums.WxApplyMentStateEnum; import com.ruoyi.shop.mapper.shop.ShopMapper; import com.ruoyi.shop.service.shop.*; import com.ruoyi.shop.service.task.MemberTaskService; @@ -35,7 +39,6 @@ import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -111,6 +114,9 @@ private RemoteSysStaffService remoteSysStaffService; @Resource + private RemoteFileService remoteFileService; + + @Resource private ShopTaskService shopTaskService; @Resource @@ -121,6 +127,7 @@ /** * 获取商户详情 + * * @param shopId * @return */ @@ -307,6 +314,13 @@ if(newShop){ //生成商户关联记录 initNewShop(shop,mgtEditShopDto.getUserId()); + CodeGetDto codeGetDto = new CodeGetDto(); + String url = "https://wxapp.hhhrt.cn/mini/activity?activityId="+shop.getShopId(); + codeGetDto.setUrl(url); + codeGetDto.setFileName("shop-"+shop.getShopId()); + String codeUrl = remoteFileService.getAppOrderTotal(codeGetDto).getData(); + shop.setShopCode(codeUrl); + this.saveOrUpdate(shop); } } @@ -797,6 +811,8 @@ merHomeShopTotalVo.setShopTurnover(orderVo.getShopTurnover()); merHomeShopTotalVo.setCycleSurp(shopTotal.getUseableCyclePerson()); merHomeShopTotalVo.setExplorationSurp(shopTotal.getUseableExperiencePerson()); + merHomeShopTotalVo.setPlatformBirthdayFlag(shop.getPlatformBirthdayFlag()); + merHomeShopTotalVo.setPlatformCouponFlag(shop.getPlatformCouponFlag()); return merHomeShopTotalVo; } @@ -1328,4 +1344,44 @@ shop.setUpdateTime(new Date()); shopMapper.updateShop(shop); } + + @Override + public void queryEcommerceApplyMentsStatus() { + List<ShopAuthentication> list = shopAuthenticationService.getShopAuthNeedUpdateStatus(); + list.forEach(item -> queryApplyStatusByApplymentId(item.getApplymentId(), item.getShopId())); + } + + /** + * 调用微信接口查询申请审核状态 + * @param applymentId + */ + private void queryApplyStatusByApplymentId(String applymentId, Long shopId) { + try { + if (StringUtils.isNotBlank(applymentId)) { + ApplymentsStatusResult result = wechatPayUtils.queryApplyStatusByApplymentId(applymentId); + shopAuthenticationService.updateAuditStatusByApplymentId(applymentId, result); + String applymentState = result.getApplymentState(); + if(WxApplyMentStateEnum.FINISH.getText().equals(applymentState)){ + applySuccessUpdateShopStatus(shopId); + } + } + } catch (WxPayException e) { + e.printStackTrace(); + } + } + + /** + * 商户进件审核完成,更新商户状态 + * @param shopId + */ + private void applySuccessUpdateShopStatus(Long shopId){ + // 更新商户状态为正常 + Shop shop = this.getById(shopId); + Integer shopStatus = handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), 1); + LambdaUpdateWrapper<Shop> updateWrapper = Wrappers.lambdaUpdate(); + updateWrapper.eq(Shop::getShopId, shopId) + .set(Shop::getShopStatus, shopStatus) + .set(Shop::getAuthFlag, 1); + this.update(updateWrapper); + } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java index e5afe26..0e9f127 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java @@ -10,10 +10,12 @@ import com.ruoyi.shop.mapper.shop.ShopStaffMapper; import com.ruoyi.shop.service.shop.ShopStaffService; import com.ruoyi.system.api.domain.dto.AppEditUserDto; +import com.ruoyi.system.api.domain.dto.CodeGetDto; import com.ruoyi.system.api.domain.dto.MerEditUserDto; import com.ruoyi.system.api.domain.dto.MgtShopStaffEditDto; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.vo.MerStaffInfoVo; +import com.ruoyi.system.api.service.RemoteFileService; import com.ruoyi.system.api.service.RemoteSysStaffService; import com.ruoyi.system.api.service.RemoteUserService; import org.springframework.stereotype.Service; @@ -41,6 +43,8 @@ @Resource private RemoteSysStaffService remoteSysStaffService; + @Resource + private RemoteFileService remoteFileService; /** * * @param userId @@ -82,8 +86,17 @@ merStaffInfoVo.setBusinessTime(shop.getBusinessStartTime()+"-"+shop.getBusinessEndTime()); merStaffInfoVo.setShopType(shop.getShopType()); merStaffInfoVo.setShopNumber(shop.getShopNumber()); - String shopCodeUrl = "https://wxapp.hhhrt.cn/mini/shop?shopId="+shop.getShopId(); - merStaffInfoVo.setShopCodeUrl(shopCodeUrl); + if(StringUtils.isNotBlank(shop.getShopCode())){ + merStaffInfoVo.setShopCodeUrl(shop.getShopCode()); + }else{ + CodeGetDto codeGetDto = new CodeGetDto(); + String url = "https://wxapp.hhhrt.cn/mini/activity?activityId="+shop.getShopId(); + codeGetDto.setUrl(url); + codeGetDto.setFileName("shop-"+shop.getShopId()); + String codeUrl = remoteFileService.getAppOrderTotal(codeGetDto).getData(); + merStaffInfoVo.setShopCodeUrl(codeUrl); + shopStaffMapper.updateShopCodeUrl(shop.getShopId(),codeUrl); + } return merStaffInfoVo; } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java index e4c3f49..a70df4b 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskServiceImpl.java @@ -121,6 +121,7 @@ agencyTaskRecord.setDelFlag(0); agencyTaskRecord.setUserId(merFollowAgencyTaskDto.getUserId()); agencyTaskRecord.setFollowType(merFollowAgencyTaskDto.getFollowType()); + agencyTaskRecord.setCustomeFollowType(merFollowAgencyTaskDto.getCustomeFollowType()); agencyTaskRecord.setCallPhone(merFollowAgencyTaskDto.getCallPhone()); agencyTaskRecord.setCallTime(followPhoneDto.getCallTime()); agencyTaskRecord.setFollowContent(followPhoneDto.getFollowContent()); @@ -130,6 +131,13 @@ } }else{ agencyTaskRecord = new AgencyTaskRecord(); + agencyTaskRecord.setTaskId(merFollowAgencyTaskDto.getTaskId()); + agencyTaskRecord.setDelFlag(0); + agencyTaskRecord.setUserId(merFollowAgencyTaskDto.getUserId()); + agencyTaskRecord.setFollowType(merFollowAgencyTaskDto.getFollowType()); + agencyTaskRecord.setCustomeFollowType(merFollowAgencyTaskDto.getCustomeFollowType()); + agencyTaskRecord.setFollowContent(merFollowAgencyTaskDto.getFollowContent()); + agencyTaskRecord.setCreateTime(new Date()); //创建任务详情文件 String picture = merFollowAgencyTaskDto.getPicture(); String video = merFollowAgencyTaskDto.getVideo(); diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java index 731f9a4..7bbb6ba 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java @@ -17,6 +17,7 @@ import com.ruoyi.shop.service.task.MemberTaskService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.shop.service.task.TaskFileService; +import com.ruoyi.system.api.domain.dto.MemberTotalChangeDto; import com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo; import com.ruoyi.system.api.service.RemoteMemberService; import org.springframework.stereotype.Service; @@ -57,19 +58,7 @@ */ @Override public List<MerMemberTaskPageVo> pageMerMemberTask(Page page, MerMemberTaskPageDto merMemberTaskPageDto){ - String today = DateUtils.parseDateToStr("YYYY-MM-DD",new Date()); List<MerMemberTaskPageVo> merMemberTaskPageVoList = memberTaskMapper.pageMerMemberTask(page, merMemberTaskPageDto); - if(merMemberTaskPageVoList!=null&&!merMemberTaskPageVoList.isEmpty()){ - String taskDate; - for(MerMemberTaskPageVo merMemberTaskPageVo : merMemberTaskPageVoList){ - taskDate = merMemberTaskPageVo.getTaskDate(); - if(today.equals(taskDate)){ - merMemberTaskPageVo.setTodayFlag(1); - }else{ - merMemberTaskPageVo.setTodayFlag(0); - } - } - } return merMemberTaskPageVoList; } @@ -100,6 +89,9 @@ memberTask.setTaskContent(merCreateMemberTaskDto.getTaskContent()); memberTask.setCreateTime(new Date()); this.saveOrUpdate(memberTask); + MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); + memberTotalChangeDto.setNextTaskTime(merCreateMemberTaskDto.getTaskDate()); + remoteMemberService.changeMemberTotal(memberTotalChangeDto); } /** @@ -131,6 +123,7 @@ memberTaskRecord.setDelFlag(0); memberTaskRecord.setUserId(merFollowMemberTaskDto.getUserId()); memberTaskRecord.setFollowType(merFollowMemberTaskDto.getFollowType()); + memberTaskRecord.setCustomeFollowType(merFollowMemberTaskDto.getCustomeFollowType()); memberTaskRecord.setCallPhone(merFollowMemberTaskDto.getCallPhone()); memberTaskRecord.setFollowContent(followPhoneDto.getFollowContent()); memberTaskRecord.setCallTime(followPhoneDto.getCallTime()); @@ -145,6 +138,7 @@ memberTaskRecord.setDelFlag(0); memberTaskRecord.setUserId(merFollowMemberTaskDto.getUserId()); memberTaskRecord.setFollowType(merFollowMemberTaskDto.getFollowType()); + memberTaskRecord.setCustomeFollowType(merFollowMemberTaskDto.getCustomeFollowType()); memberTaskRecord.setFollowContent(merFollowMemberTaskDto.getFollowContent()); memberTaskRecord.setCreateTime(new Date()); // 保存或更新会员任务记录 @@ -217,6 +211,9 @@ } memberTask.setCreateTime(new Date()); this.saveOrUpdate(memberTask); + MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); + memberTotalChangeDto.setNextTaskTime(merFollowMemberTaskDto.getNextTaskDate()); + remoteMemberService.changeMemberTotal(memberTotalChangeDto); } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java index f949202..bde2aa4 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java @@ -71,7 +71,7 @@ shopTaskRecord.setTaskId(taskId); shopTaskRecord.setUserId(mgtFollowShopTaskDto.getUserId()); shopTaskRecord.setFollowType(2); - shopTaskRecord.setCustomFollowType(mgtFollowShopTaskDto.getFollowType()); + shopTaskRecord.setCustomeFollowType(mgtFollowShopTaskDto.getFollowType()); shopTaskRecord.setFollowContent(mgtFollowShopTaskDto.getFollowContent()); shopTaskRecord.setCreateTime(nowTime); shopTaskRecordService.saveOrUpdate(shopTaskRecord); @@ -244,7 +244,7 @@ shopTaskRecord.setUserId(staffFollowShopTaskDto.getUserId()); shopTaskRecord.setFollowType(staffFollowShopTaskDto.getFollowType()); shopTaskRecord.setFollowContent(staffFollowShopTaskDto.getFollowContent()); - shopTaskRecord.setCustomFollowType(staffFollowShopTaskDto.getCustomFollowType()); + shopTaskRecord.setCustomeFollowType(staffFollowShopTaskDto.getCustomeFollowType()); shopTaskRecord.setCreateTime(new Date()); // 保存或更新会员任务记录 shopTaskRecordService.saveOrUpdate(shopTaskRecord); diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAuthenticationService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAuthenticationService.java index 1aab902..1f10652 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAuthenticationService.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAuthenticationService.java @@ -1,7 +1,10 @@ package com.ruoyi.shop.service.shop; +import com.github.binarywang.wxpay.bean.ecommerce.ApplymentsStatusResult; import com.ruoyi.shop.domain.pojo.shop.ShopAuthentication; import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; /** * <p> @@ -13,4 +16,23 @@ */ public interface ShopAuthenticationService extends IService<ShopAuthentication> { + /** + * 获取需要更新状态的 微信二级商户认证审核 + * @return + */ + List<ShopAuthentication> getShopAuthNeedUpdateStatus(); + + /** + * 修改微信审核状态 + * @param applymentId + * @param result + */ + void updateAuditStatusByApplymentId(String applymentId, ApplymentsStatusResult result); + + /** + * 获取商户认证信息 + * @param shopId + * @return + */ + ShopAuthentication getByShopId(Long shopId); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopProportionService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopProportionService.java index af99606..1f4b6c4 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopProportionService.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopProportionService.java @@ -22,4 +22,11 @@ * @return void */ void editMgtShopProportion(MgtShopProportionEditDto mgtShopProportionEditDto); + + /** + * 获取商户分成比例 + * @param shopId + * @return + */ + ShopProportion getByShopId(Long shopId); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java index 5a664f1..b84fce1 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java @@ -327,4 +327,9 @@ * @return void */ void editShopCustomStatus(StaffShopCCEditDto staffShopCCEditDto); + + /** + * 微信二级商户进件状态 定时任务检测 + */ + void queryEcommerceApplyMentsStatus(); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java index 39a768f..14eae48 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/util/WechatPayUtils.java @@ -20,12 +20,13 @@ @Component @AllArgsConstructor public class WechatPayUtils { + private final WxPayService wxService; /** * 电商二级商户进件(提交申请单) */ - public void ecommerceApply(ShopAuthentication shopAuthentication, String applyNumber, Shop shop) throws WxPayException { + public ApplymentsResult ecommerceApply(ShopAuthentication shopAuthentication, String applyNumber, Shop shop) throws WxPayException { EcommerceService ecommerceService = wxService.getEcommerceService(); ApplymentsRequest request = new ApplymentsRequest(); //生成提交类 @@ -105,18 +106,18 @@ request.setBusinessAdditionPics(shopAuthentication.getBaPics()); request.setBusinessAdditionDesc(shopAuthentication.getBaDesc()); - ApplymentsResult result = ecommerceService.createApply(request); + return ecommerceService.createApply(request); } /** * 通过查询申请状态API查询二级商户入驻申请结果 - * @param applyNumber 业务申请编号 + * @param applymentId 微信支付申请单号 * @return 申请状态 * @throws WxPayException */ - public ApplymentsStatusResult queryApplyStatusByOutRequestNo(String applyNumber) throws WxPayException { - return wxService.getEcommerceService().queryApplyStatusByOutRequestNo(applyNumber); + public ApplymentsStatusResult queryApplyStatusByApplymentId(String applymentId) throws WxPayException { + return wxService.getEcommerceService().queryApplyStatusByApplymentId(applymentId); } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml index e490eaa..5ece597 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml @@ -406,8 +406,14 @@ ts.cooperation_end_time cooperationEndTime FROM t_shop ts WHERE ts.del_flag = 0 AND ts.belong_shop_id = #{param.shopId} - <if test="param.shopStatus!=null and param.shopStatus!=''"> - AND ts.shop_status = #{param.shopStatus} + <if test="param.shopStatus!=null and param.shopStatus==1"> + AND ts.shop_status = 1 + </if> + <if test="param.shopStatus!=null and param.shopStatus==2"> + AND ts.frozen_flag = 1 + </if> + <if test="param.shopStatus!=null and param.shopStatus==3"> + AND ts.cooperative_flag = 0 </if> <if test="param.keyword!=null and param.keyword!=''"> AND (ts.shop_name LIKE CONCAT('%',#{param.keyword},'%') OR ts.shopowner_name LIKE CONCAT('%',#{param.keyword},'%') @@ -423,14 +429,13 @@ </select> <select id="getNearbyShop" resultType="com.ruoyi.shop.domain.vo.AppNearShopVo"> - SELECT ts.shop_id shopId, ACOS( - COS(RADIANS(#{param.longitude})) * - COS(RADIANS(ts.shop_latitude)) * - COS(RADIANS(ts.shop_longitude) - RADIANS(#{param.latitude})) + - SIN(RADIANS(#{param.longitude})) * - SIN(RADIANS(ts.shop_latitude)) - ) * 6378 as distance - FROM t_shop ts WHERE ts.del_flag = 0 AND ts.shop_status = 1 + SELECT ts.shop_id shopId, + 6378.138 * 2 * ASIN(SQRT(POW(SIN(( + #{param.latitude} * PI() / 180 - ts.shop_latitude * PI() / 180) / 2), 2) + + COS(#{param.latitude} * PI() / 180) * COS(ts.shop_latitude * PI() / 180) * POW( + SIN((#{param.longitude} * PI() / 180 - ts.shop_longitude * PI() / 180) / 2), 2 + ))) AS distance + FROM t_shop ts ORDER BY distance ASC LIMIT 1 </select> diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml index 5dbeee5..bdbcc97 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml @@ -8,4 +8,7 @@ UPDATE t_shop_staff SET del_flag = 1 WHERE del_flag = 0 AND shop_id = #{shopId} </update> + <update id="updateShopCodeUrl"> + UPDATE t_shop SET shop_code = #{codeUrl} WHERE shop_id = #{shopId} + </update> </mapper> diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskMapper.xml index dcd12c2..c955f25 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskMapper.xml @@ -19,7 +19,8 @@ tat.task_date taskDate, tat.task_content taskContent, tmtr.follow_content dealContent, - tat.emergency_state emergencyState + tat.emergency_state emergencyState, + tmtr.create_time followTime FROM t_agency_task tat LEFT JOIN t_agency_task_record tmtr ON tat.task_id = tmtr.task_id WHERE tat.del_flag = 0 AND tat.shop_id = #{param.shopId} AND tat.agency_id = #{param.agencyId} @@ -29,7 +30,7 @@ ORDER BY tat.task_date DESC </select> - <select id="pageMerAgencyTask" resultType="com.ruoyi.shop.domain.vo.MerAgencySimpleTaskRecordPageVo"> + <select id="pageMerAgencySimpleTaskRecord" resultType="com.ruoyi.shop.domain.vo.MerAgencySimpleTaskRecordPageVo"> SELECT tmtr.create_time createTime, CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType, diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml index 2c27681..248231c 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/AgencyTaskRecordMapper.xml @@ -20,6 +20,7 @@ tmtr.task_id taskId, tmt.task_date taskDate, tmtr.follow_type followType, + tmtr.custome_follow_type customeFollowType, tmtr.call_time callTime, tmtr.follow_content followContent, tmtr.call_phone callPhone @@ -36,6 +37,7 @@ tmtr.task_id taskId, tmt.create_time createTime, tmtr.follow_type followType, + tmtr.custome_follow_type customeFollowType, tmtr.call_time callTime, tmtr.follow_content followContent, tmtr.call_phone callPhone @@ -54,6 +56,7 @@ tmtr.task_id taskId, tmt.create_time createTime, tmtr.follow_type followType, + tmtr.custome_follow_type customeFollowType, tmtr.call_time callTime, tmtr.follow_content followContent, tmtr.call_phone callPhone diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml index 72fba4e..1547590 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml @@ -86,7 +86,7 @@ tmt.task_content taskContent, tmtr.follow_content dealContent, tmt.emergency_state emergencyState, - CASE WHEN task_date = #{param.today} THEN 1 ELSE 0 END todayFlag + CASE tmt.task_status WHEN 1 THEN 1 WHEN 3 THEN 1 ELSE 0 END todayFlag FROM t_member_task tmt LEFT JOIN t_member_task_record tmtr ON tmt.task_id = tmtr.task_id WHERE tmt.del_flag = 0 AND tmt.shop_id = #{param.shopId} AND tmt.user_id = #{param.memberUserId} diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml index f2dba1b..e8b6bd4 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskRecordMapper.xml @@ -85,6 +85,7 @@ tmtr.follow_type followType, tmtr.call_time callTime, tmtr.follow_content followContent, + tmtr.custome_follow_type customeFollowType, tmtr.call_phone callPhone FROM t_member_task tmt INNER JOIN t_member_task_record tmtr ON tmtr.task_id = tmt.task_id @@ -101,6 +102,7 @@ tmtr.task_id taskId, tmt.task_date taskDate, tmtr.follow_type followType, + tmtr.custome_follow_type customeFollowType, tmtr.call_time callTime, tmtr.follow_content followContent, tmtr.call_phone callPhone diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml index e7138ca..9ccde99 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml +++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/ShopTaskRecordMapper.xml @@ -9,7 +9,7 @@ tmtr.task_id taskId, tmtr.create_time createTime, CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType, - tmtr.custom_follow_type customFollowType, + tmtr.custome_follow_type customeFollowType, tmtr.follow_content followContent, tmtr.call_time callTime, tmtr.call_phone callPhone @@ -26,7 +26,7 @@ tmtr.task_id taskId, tmtr.create_time createTime, CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType, - tmtr.custom_follow_type customFollowType, + tmtr.custome_follow_type customeFollowType, tmtr.follow_content followContent, tmtr.call_time callTime, tmtr.call_phone callPhone @@ -43,6 +43,7 @@ tmtr.task_id taskId, tmtr.create_time createTime, CASE tmtr.follow_type WHEN 1 THEN "电话跟进" WHEN 2 THEN "手动跟进" END followType, + tmtr.custome_follow_type customeFollowType, tmtr.follow_content followContent, tmtr.call_time callTime, tmtr.call_phone callPhone diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java index 38d650c..36ff0c6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java @@ -387,8 +387,10 @@ Long userId = SecurityUtils.getUserId(); mgtOperLogPageDto.setUserId(userId); Page<MgtOperLogPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtOperLogPageVo> mgtOperLogPageVoList = customConfigService.pageOperLog(page, mgtOperLogPageDto); ExcelUtil<MgtOperLogPageVo> util = new ExcelUtil<MgtOperLogPageVo>(MgtOperLogPageVo.class); util.exportExcel(response, mgtOperLogPageVoList, "操作日志"); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java index 603a3bd..ad4926a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java @@ -80,8 +80,10 @@ Long userId = SecurityUtils.getUserId(); mgtStaffSuggestPageDto.setUserId(userId); Page<MgtStaffSuggestPageVo> page = new Page<>(); - page.setSize(2000); - page.setCurrent(1); + if(page.getSize()>5000){ + page.setSize(5000); + page.setCurrent(1); + } List<MgtStaffSuggestPageVo> staffSuggestPageVoList = staffSuggestService.pageMgtStaffSuggest(page,mgtStaffSuggestPageDto); ExcelUtil<MgtStaffSuggestPageVo> util = new ExcelUtil<MgtStaffSuggestPageVo>(MgtStaffSuggestPageVo.class); util.exportExcel(response, staffSuggestPageVoList, "员工建议列表"); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/fliter/ParamsAuthFilter.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/fliter/ParamsAuthFilter.java index 690bcfe..d88dcd8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/fliter/ParamsAuthFilter.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/fliter/ParamsAuthFilter.java @@ -30,7 +30,14 @@ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; - + String requestUrl = request.getRequestURI(); + String requestUrlUpperCase = requestUrl.toUpperCase(); + if(requestUrlUpperCase.contains("EXPORT") + ||requestUrlUpperCase.contains("IMPORTTEMPLATE") + ||requestUrlUpperCase.contains("GETAPPAGREEMENT")){ + filterChain.doFilter(request, response); + return; + } RepeatedlyRequestWrapper wrapper = new RepeatedlyRequestWrapper(request, response); getRequestParams(wrapper); @@ -39,7 +46,6 @@ // 返回的结果 String content = responseWrapper.getTextContent(); - String requestUrl = request.getRequestURI(); log.info("-------------------- Response Data ----------------------"); log.info(requestUrl + " -> " + content); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/CustomConfigMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/CustomConfigMapper.java index 12da256..f29af14 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/CustomConfigMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/config/CustomConfigMapper.java @@ -5,7 +5,7 @@ import com.ruoyi.system.domain.pojo.config.CustomConfig; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.system.domain.vo.MgtOperLogPageVo; -import io.lettuce.core.dynamic.annotation.Param; +import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java index 303589a..c37ea0f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/CustomConfigServiceImpl.java @@ -646,9 +646,9 @@ mgtBulletinBoardVo.setSalesTotal(mgtBulletinBoardVoOrder.getSalesTotal()); mgtBulletinBoardVo.setUnUseOrderTotal(mgtBulletinBoardVoOrder.getUnUseOrderTotal()); mgtBulletinBoardVo.setActivityOrderTotal(mgtBulletinBoardVoOrder.getActivityOrderTotal()); + mgtBulletinBoardVo.setActivityUserTotal(mgtBulletinBoardVoOrder.getActivityUserTotal()); // 获取活动信息 - MgtBulletinBoardVo mgtBulletinBoardVoActivity = remoteActivityService.boardActivityTotal().getData(); - mgtBulletinBoardVo.setActivityUserTotal(mgtBulletinBoardVoActivity.getActivityUserTotal()); + //MgtBulletinBoardVo mgtBulletinBoardVoActivity = remoteActivityService.boardActivityTotal().getData(); //待回复建议数量 Integer countA = remoteMemberService.getUnReplaySuggestVo().getData(); Integer countB = remoteShopService.getUnReplaySuggestVo().getData(); diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java index 7e63ad0..652e19e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysUserServiceImpl.java @@ -608,10 +608,6 @@ String editValue = appEditUserDto.getEditValue(); switch (editType){ case 1: - sysUser.setNickName(editValue); - sysUser.setUpdateTime(DateUtils.getNowDate()); - sysUser.setUpdateBy(String.valueOf(appEditUserDto.getUserId())); - userMapper.updateUser(sysUser); break; case 2: sysUser.setAvatar(editValue); @@ -627,6 +623,12 @@ break; case 4: break; + case 5: + sysUser.setNickName(editValue); + sysUser.setUpdateTime(DateUtils.getNowDate()); + sysUser.setUpdateBy(String.valueOf(appEditUserDto.getUserId())); + userMapper.updateUser(sysUser); + break; default: break; } diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/CustomConfigMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/CustomConfigMapper.xml index 266b943..24016b5 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/CustomConfigMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/config/CustomConfigMapper.xml @@ -20,10 +20,10 @@ FROM sys_oper_log WHERE operator_type = 1 AND del_flag = 0 <if test="param.operContent != null and param.operContent !=''"> - oper_content LIKE concat('%', #{param.operContent}, '%') + AND oper_content LIKE concat('%', #{param.operContent}, '%') </if> <if test="param.operTitle != null and param.operTitle !=''"> - title = #{param.operTitle} + AND title = #{param.operTitle} </if> <if test="param.operStartTime!=null and param.operStartTime!=''"> AND Date(oper_time) >= #{param.operStartTime} diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml index 7c48a20..1c3826f 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml @@ -19,7 +19,7 @@ su.nick_name nickName FROM sys_dept sd LEFT JOIN sys_user su ON sd.dept_id = su.dept_id - WHERE sd.del_flag = 0 AND su.del_flag = 0 + WHERE sd.del_flag = "0" AND su.del_flag = "0" AND su.status = "0" </select> <select id="listMgtDeptStaffByDept" resultMap="deptStaffResultMap"> @@ -30,7 +30,7 @@ su.nick_name nickName FROM sys_dept sd LEFT JOIN sys_user su ON sd.dept_id = su.dept_id - WHERE sd.del_flag = 0 AND su.del_flag = 0 AND sd.dept_id = #{deptId} + WHERE sd.del_flag = "0" AND su.del_flag = "0" AND sd.dept_id = #{deptId} <if test="userId != null and userId != ''"> AND su.user_id = #{userId} </if> -- Gitblit v1.7.1