From 1ca4c6c6c7861c07980ad0dcd8d5df4b0219bfdc Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期三, 06 九月 2023 19:01:48 +0800 Subject: [PATCH] bug --- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java | 2 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml | 95 ++- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java | 3 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/sys/SysStaff.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java | 22 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffMyShopTaskRecordPageVo.java | 3 ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml | 30 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtAgencyTaskRecordPageVo.java | 3 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskServiceImpl.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceOrderDto.java | 3 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java | 11 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java | 2 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml | 11 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/console/ShopController.java | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/StaffAgencyTaskRecordPageVo.java | 3 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java | 9 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteShopService.java | 2 ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java | 7 ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml | 3 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java | 12 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java | 61 + ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppPlaceOrderVo.java | 2 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskRecordServiceImpl.java | 65 + ruoyi-modules/ruoyi-system/src/main/resources/mapper/sys/SysDeptMapper.xml | 1 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/coupon/CouponServiceImpl.java | 86 ++ ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java | 20 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteShopFallbackFactory.java | 2 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java | 3 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java | 82 ++ ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/StaffController.java | 2 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java | 11 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 986 +++++++++++++++++++++------------- ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java | 6 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java | 19 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java | 9 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopTaskRecordPageVo.java | 3 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderGoodsMapper.xml | 3 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/GoodsController.java | 7 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysDeptController.java | 2 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskRecordServiceImpl.java | 47 + ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ShopProportionVo.java | 2 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/AppUserOrderGoodsPageVo.java | 3 ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml | 8 48 files changed, 1,102 insertions(+), 565 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 24fb50d..028086c 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 @@ -115,4 +115,6 @@ String GOODS_SURE_FAILED = "商品没有确认次数"; String BIRTHDAYCARD_NO_GIFT = "请先配置礼物再开启"; + + String SYSTEM_FAILED = "系统正忙,请稍后再试"; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/staff/SysStaff.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/sys/SysStaff.java similarity index 96% rename from ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/staff/SysStaff.java rename to ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/sys/SysStaff.java index 2bf0276..733d0b4 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/staff/SysStaff.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/sys/SysStaff.java @@ -1,4 +1,4 @@ -package com.ruoyi.system.domain.pojo.staff; +package com.ruoyi.system.api.domain.poji.sys; import com.baomidou.mybatisplus.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableField; 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/vo/ShopProportionVo.java similarity index 91% rename from ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/shop/ShopProportionVo.java rename to ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/ShopProportionVo.java index b8a42de..9ef5dff 100644 --- 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/vo/ShopProportionVo.java @@ -1,4 +1,4 @@ -package com.ruoyi.system.api.domain.poji.shop; +package com.ruoyi.system.api.domain.vo; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java index 63882e3..bef2b9f 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteConfigFallbackFactory.java @@ -7,6 +7,7 @@ import com.ruoyi.system.api.domain.poji.config.Activeness; import com.ruoyi.system.api.domain.poji.config.DelayTask; import com.ruoyi.system.api.domain.poji.config.SysClassification; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.domain.vo.AppOtherConfigGetVo; import com.ruoyi.system.api.domain.vo.MgtSysSimpleUserVo; import com.ruoyi.system.api.service.RemoteConfigService; @@ -85,6 +86,11 @@ return R.fail("获取客服电话失败:" + throwable.getMessage()); } + @Override + public R<List<SysStaff>> listSysStaffByIds(List<Long> userIdList) { + return R.fail("通过id获取员工列表失败:" + throwable.getMessage()); + } + @Override public R<List<SysTag>> listSysTag(Integer tagType) { 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 a60c799..7e33f2c 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,7 +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.ShopProportionVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.QwH5LoginVo; import com.ruoyi.system.api.model.QwUserDetailDto; diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java index b4001b0..580df0a 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteConfigService.java @@ -9,6 +9,7 @@ import com.ruoyi.system.api.domain.poji.config.DelayTask; import com.ruoyi.system.api.domain.poji.config.SysClassification; import com.ruoyi.system.api.domain.poji.config.SysTag; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.domain.vo.AppOtherConfigGetVo; import com.ruoyi.system.api.domain.vo.MgtSysSimpleUserVo; import com.ruoyi.system.api.factory.RemoteConfigFallbackFactory; @@ -137,4 +138,14 @@ */ @PostMapping("/config/getServicePhone") public R<String> getServicePhone(); + + /** + * @description 通过id获取员工列表 + * @author jqs + * @date 2023/9/5 10:01 + * @param userIdList + * @return R<List<SysStaff>> + */ + @PostMapping("/config/listSysStaffByIds") + public R<List<SysStaff>> listSysStaffByIds(@RequestBody List<Long> userIdList); } 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 9672a85..3a905b4 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,7 +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.ShopProportionVo; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.factory.RemoteShopFallbackFactory; import com.ruoyi.system.api.model.QwH5LoginVo; diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java index 3b934eb..c2ff306 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/CacheConstants.java @@ -10,7 +10,7 @@ /** * 缓存有效期,默认720(分钟) */ - public final static long EXPIRATION = 1440; + public final static long EXPIRATION = 14400; /** * 缓存刷新时间,默认120(分钟) diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/GoodsController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/GoodsController.java index 7feac73..560174c 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/GoodsController.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/GoodsController.java @@ -120,6 +120,13 @@ return R.ok(goodsPriceListVoList); } + /** + * @description 改变商品统计 + * @author jqs + * @date 2023/9/5 15:01 + * @param goodsTotalChangeDtoList + * @return R + */ @PostMapping("/changeGoodsTotal") public R changeGoodsTotal(@RequestBody List<GoodsTotalChangeDto> goodsTotalChangeDtoList) { 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 0901f6d..919d379 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 @@ -36,6 +36,8 @@ import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -627,6 +629,7 @@ * @return void */ @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) public void changeActivityStock(AGStockChangeDto agStockChangeDto){ RLock lock = redissonClient.getLock("stock_clock_"+agStockChangeDto.getActivityId()+"_"+agStockChangeDto.getGoodsId()); try { 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 316fe45..844dddb 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 @@ -399,23 +399,32 @@ memberCoupon.setUserId(userId); memberCoupon.setShopId(coupon.getShopId()); memberCoupon.setCouponType(coupon.getCouponType()); + if(coupon.getCouponType()==1){ + memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + }else if(coupon.getCouponType()==2){ + memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); + }else if(coupon.getCouponType()==3){ + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + }else{ + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + } 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()); + if(memberCoupon.getUseScope()==2){ + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + } 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()); @@ -442,23 +451,32 @@ memberCoupon.setUserId(userId); //memberCoupon.setShopId(coupon.getShopId()); memberCoupon.setCouponType(coupon.getCouponType()); + if(coupon.getCouponType()==1){ + memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + }else if(coupon.getCouponType()==2){ + memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); + }else if(coupon.getCouponType()==3){ + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + }else{ + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + } 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()); + if(memberCoupon.getUseScope()==2){ + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + } 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()); @@ -534,20 +552,29 @@ memberCoupon.setCouponStatus(coupon.getCouponStatus()); memberCoupon.setCouponName(coupon.getCouponName()); memberCoupon.setSendType(coupon.getSendType()); + if(coupon.getCouponType()==1){ + memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + }else if(coupon.getCouponType()==2){ + memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); + }else if(coupon.getCouponType()==3){ + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + }else{ + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + } 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()); + if(memberCoupon.getUseScope()==2){ + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + } 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()); @@ -1083,17 +1110,26 @@ memberCoupon.setCouponId(couponId); memberCoupon.setUserId(userId); memberCoupon.setShopId(shopId); - memberCoupon.setCouponType(coupon.getCouponType()); + if(coupon.getCouponType()==1){ + memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + }else if(coupon.getCouponType()==2){ + memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); + }else if(coupon.getCouponType()==3){ + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + }else{ + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + } 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()); + if(memberCoupon.getUseScope()==2){ + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + } memberCoupon.setValidTimeType(coupon.getValidTimeType()); memberCoupon.setValidStartTime(coupon.getValidStartTime()); memberCoupon.setValidEndTime(coupon.getValidEndTime()); @@ -1106,7 +1142,6 @@ }else if(coupon.getValidTimeType()==2){ memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(),coupon.getValidDay())); } - memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); memberCouponList.add(memberCoupon); } memberCouponRecordService.updateMemberCouponRecord(coupon,userId,birthdayGiftSendDto.getCouponNumber()); @@ -1194,16 +1229,26 @@ memberCoupon.setShopId(shopId); } memberCoupon.setCouponType(coupon.getCouponType()); + if(coupon.getCouponType()==1){ + memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold()); + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + }else if(coupon.getCouponType()==2){ + memberCoupon.setDiscountPercent(coupon.getDiscountPercent()); + }else if(coupon.getCouponType()==3){ + memberCoupon.setDiscountMoney(coupon.getDiscountMoney()); + }else{ + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + } 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()); + if(memberCoupon.getUseScope()==2){ + memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); + } memberCoupon.setValidTimeType(coupon.getValidTimeType()); memberCoupon.setValidStartTime(coupon.getValidStartTime()); memberCoupon.setValidEndTime(coupon.getValidEndTime()); @@ -1216,7 +1261,6 @@ }else if(coupon.getValidTimeType()==2){ memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(),coupon.getValidDay())); } - memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds()); memberCouponService.save(memberCoupon); memberCouponRecordService.updateMemberCouponRecord(coupon,userId,1); } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java index e54413b..a291caa 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java @@ -23,6 +23,8 @@ import com.ruoyi.system.api.service.RemoteGoodsService; import com.ruoyi.system.api.service.RemoteShopService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; @@ -247,6 +249,7 @@ * @return void */ @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) public void useMemberCoupon(String memberCouponIds){ memberCouponMapper.useMemberCoupon(memberCouponIds); } 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 47fe560..9df1d7a 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 @@ -1,5 +1,5 @@ package com.ruoyi.member.service.impl.member; - +import com.google.common.collect.Lists; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import com.alibaba.fastjson.JSONObject; @@ -1229,10 +1229,36 @@ @Override public MgtTotalMemberTotalVo getTotalMemberTotal(MgtBaseShopDto mgtBaseShopDto) { Date nowDay = DateUtils.getNowDate(); + MgtTotalMemberTotalVo mgtTotalMemberTotalVo = new MgtTotalMemberTotalVo(); + mgtTotalMemberTotalVo.setMemberTotal(0); + mgtTotalMemberTotalVo.setOnlineTotal(0); + mgtTotalMemberTotalVo.setOfflineTotal(0); + mgtTotalMemberTotalVo.setIntroduceTotal(0); + mgtTotalMemberTotalVo.setCycleTotal(0); + mgtTotalMemberTotalVo.setExperienceTotal(0); + mgtTotalMemberTotalVo.setServiceTotal(0); + mgtTotalMemberTotalVo.setManTotal(0); + mgtTotalMemberTotalVo.setManPercent(new BigDecimal("0")); + mgtTotalMemberTotalVo.setWomenTotal(0); + mgtTotalMemberTotalVo.setWomenPercent(new BigDecimal("0")); + mgtTotalMemberTotalVo.setAgeKey(new String[0]); + mgtTotalMemberTotalVo.setAgeValue(new Integer[0]); + mgtTotalMemberTotalVo.setNurseTotalVos(Lists.newArrayList()); + mgtTotalMemberTotalVo.setMemberLevelTotalVos(Lists.newArrayList()); + mgtTotalMemberTotalVo.setGoodsTypeTotalVos(Lists.newArrayList()); + mgtTotalMemberTotalVo.setActivenessList(Lists.newArrayList()); + mgtTotalMemberTotalVo.setCustomerSourceList(Lists.newArrayList()); + mgtTotalMemberTotalVo.setMemberPayList(Lists.newArrayList()); // 获取店铺ID Long shopId = mgtBaseShopDto.getShopId(); // 获取总会员数和不同年龄段的会员数 - MgtTotalMemberTotalVo mgtTotalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto); + MgtTotalMemberTotalVo totalMemberTotalVo = memberMapper.getTotalMemberTotal(mgtBaseShopDto); + mgtTotalMemberTotalVo.setMemberTotal(totalMemberTotalVo.getMemberTotal()); + mgtTotalMemberTotalVo.setOnlineTotal(totalMemberTotalVo.getOnlineTotal()); + mgtTotalMemberTotalVo.setOfflineTotal(totalMemberTotalVo.getOfflineTotal()); + mgtTotalMemberTotalVo.setCycleTotal(totalMemberTotalVo.getCycleTotal()); + mgtTotalMemberTotalVo.setExperienceTotal(totalMemberTotalVo.getExperienceTotal()); + mgtTotalMemberTotalVo.setServiceTotal(totalMemberTotalVo.getServiceTotal()); MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getTotalMemberTotalAge(mgtBaseShopDto); Integer manTotal = mgtAgeTotalVo.getManTotal(); Integer womenTotal = mgtAgeTotalVo.getWomenTotal(); @@ -1360,6 +1386,25 @@ */ @Override public MgtPlTotalMemberTotalVo getPlTotalMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) { + MgtPlTotalMemberTotalVo plTotalMemberTotalVo = new MgtPlTotalMemberTotalVo(); + plTotalMemberTotalVo.setMemberTotal(0); + plTotalMemberTotalVo.setMemberYesterday(0); + plTotalMemberTotalVo.setMemberSeven(0); + plTotalMemberTotalVo.setManTotal(0); + plTotalMemberTotalVo.setManPercent(new BigDecimal("0")); + plTotalMemberTotalVo.setWomenTotal(0); + plTotalMemberTotalVo.setWomenPercent(new BigDecimal("0")); + plTotalMemberTotalVo.setAgeKey(new String[0]); + plTotalMemberTotalVo.setAgeValue(new Integer[0]); + plTotalMemberTotalVo.setAgePercent(new BigDecimal[0]); + plTotalMemberTotalVo.setNurseTotalVos(Lists.newArrayList()); + plTotalMemberTotalVo.setMemberLevelTotalVos(Lists.newArrayList()); + plTotalMemberTotalVo.setGoodsTypeTotalVos(Lists.newArrayList()); + plTotalMemberTotalVo.setActivenessList(Lists.newArrayList()); + plTotalMemberTotalVo.setCustomerSourceList(Lists.newArrayList()); + plTotalMemberTotalVo.setMemberPayList(Lists.newArrayList()); + plTotalMemberTotalVo.setMemberGoodsRankList(Lists.newArrayList()); + plTotalMemberTotalVo.setShopMemberRankList(Lists.newArrayList()); Date nowDay = DateUtils.getNowDate(); //如果区域代码不为null获取对应的商户id if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) { @@ -1373,11 +1418,16 @@ list = Arrays.stream(mgtShopIdByCodeVo.getShopIds().split(",")) .map(Long::valueOf) .collect(Collectors.toList()); + }else{ + return plTotalMemberTotalVo; } mgtBasePlatformDto.setShopIdList(list); } //获取基础统计 - MgtPlTotalMemberTotalVo plTotalMemberTotalVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto); + MgtPlTotalMemberTotalVo plTotalMemberTotalByDayVo = memberMapper.getPlTotalMemberTotal(mgtBasePlatformDto); + plTotalMemberTotalVo.setMemberTotal(plTotalMemberTotalByDayVo.getMemberTotal()); + plTotalMemberTotalVo.setMemberYesterday(plTotalMemberTotalByDayVo.getMemberYesterday()); + plTotalMemberTotalVo.setMemberSeven(plTotalMemberTotalByDayVo.getMemberSeven()); MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getPlTotalMemberTotalAge(mgtBasePlatformDto); if (mgtAgeTotalVo != null) { Integer manTotal = mgtAgeTotalVo.getManTotal(); @@ -1683,11 +1733,6 @@ } MerMemberFixedTotalVo memberFixedTotalVo = new MerMemberFixedTotalVo(); Date nowDay = DateUtils.getNowDate(); - if(merTotalDto.getShopAllFlag()!=null&&merTotalDto.getShopAllFlag()==1){ - List<Long> shopIdList = remoteShopService.listShopIdByShopId(merTotalDto.getShopId()).getData(); - merTotalDto.setShopIdList(shopIdList); - merTotalDto.setShopId(null); - } MgtAgeTotalVo mgtAgeTotalVo = memberMapper.getMerMemberTotalAge(merTotalDto); Integer manTotal = mgtAgeTotalVo.getManTotal(); Integer womenTotal = mgtAgeTotalVo.getWomenTotal(); @@ -1742,11 +1787,17 @@ if (nurseTotalVos != null && nurseTotalVos.size() > 0) { nurseTotalVos = listRemoveNull(nurseTotalVos); memberFixedTotalVo.setNurseTotalVos(nurseTotalVos); + }else{ + nurseTotalVos = new ArrayList<>(); + memberFixedTotalVo.setNurseTotalVos(nurseTotalVos); } //获取不同等级的会员数 List<MgtMapIntTotalVo> memberLevelTotalVos = memberMapper.getMerMemberTotalLevel(merTotalDto); if (memberLevelTotalVos != null && memberLevelTotalVos.size() > 0) { memberLevelTotalVos = listRemoveNull(memberLevelTotalVos); + memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos); + }else{ + memberLevelTotalVos = new ArrayList<>(); memberFixedTotalVo.setMemberLevelTotalVos(memberLevelTotalVos); } // 获取不同商品类型的会员数 @@ -1754,11 +1805,17 @@ if (goodsTypeTotalVos != null && goodsTypeTotalVos.size() > 0) { goodsTypeTotalVos = listRemoveNull(goodsTypeTotalVos); memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos); + }else{ + goodsTypeTotalVos = new ArrayList<>(); + memberFixedTotalVo.setGoodsTypeTotalVos(goodsTypeTotalVos); } //获取会员消费排名 List<MgtMapIntTotalVo> memberPayList = memberMapper.getMerMemberPayRank(merTotalDto); if (memberPayList != null && memberPayList.size() > 0) { memberPayList = listRemoveNull(memberPayList); + memberFixedTotalVo.setMemberPayList(memberPayList); + }else{ + memberPayList = new ArrayList<>(); memberFixedTotalVo.setMemberPayList(memberPayList); } // 获取不同活跃度的会员数 @@ -1768,7 +1825,7 @@ String actStartDate; String actEndDate; Integer count; - List<MgtMapIntTotalVo> MgtMapIntTotalVoList = new ArrayList<>(); + List<MgtMapIntTotalVo> mgtMapIntTotalVoList = new ArrayList<>(); MgtMapIntTotalVo MgtMapIntTotalVo; // 遍历不同活跃度列表,设置活跃度数组和对应的会员数数组 for (int i = 0; i < activenessList.size(); i++) { @@ -1781,9 +1838,12 @@ MgtMapIntTotalVo = new MgtMapIntTotalVo(); MgtMapIntTotalVo.setMapKey(activeness.getActivenessName()); MgtMapIntTotalVo.setMapValue(count); - MgtMapIntTotalVoList.add(MgtMapIntTotalVo); + mgtMapIntTotalVoList.add(MgtMapIntTotalVo); } - memberFixedTotalVo.setActivenessList(MgtMapIntTotalVoList); + memberFixedTotalVo.setActivenessList(mgtMapIntTotalVoList); + }else{ + List<MgtMapIntTotalVo> mgtMapIntTotalVoList = new ArrayList<>(); + memberFixedTotalVo.setActivenessList(mgtMapIntTotalVoList); } return memberFixedTotalVo; } 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 1b101e7..556e8b4 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 @@ -403,9 +403,9 @@ SELECT IFNULL(SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END),0) manTotal, IFNULL(SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END),0) womenTotal, - IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END),0) AS tenAge, - IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 31 THEN 1 ELSE 0 END),0) AS twentyAge, - IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 41 THEN 1 ELSE 0 END),0) AS ThirtyAge, + IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) <= 20 THEN 1 ELSE 0 END),0) AS tenAge, + IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END),0) AS twentyAge, + IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END),0) AS ThirtyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END),0) AS fortyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) >= 51 THEN 1 ELSE 0 END),0) AS fiftyAge FROM t_member WHERE del_flag = 0 AND binding_flag = 1 @@ -538,10 +538,10 @@ AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 </if> <if test="param.ageType != null and param.ageType ==2"> - AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 31 + AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 </if> <if test="param.ageType != null and param.ageType ==3"> - AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 41 + AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 </if> <if test="param.ageType != null and param.ageType ==4"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 @@ -563,15 +563,21 @@ COUNT(CASE WHEN DATE(binding_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN 1 END) AS memberYesterday, COUNT(CASE WHEN binding_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 DAY) AND DATE_SUB(CURDATE(), INTERVAL -1 DAY) THEN 1 END) AS memberSeven FROM t_member WHERE del_flag = 0 AND binding_flag = 1 + <if test="param.shopIdList != null and param.shopIdList.size() > 0"> + AND relation_shop_id IN + <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> </select> <select id="getPlTotalMemberTotalAge" resultType="com.ruoyi.member.domain.vo.MgtAgeTotalVo"> SELECT IFNULL(SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END),0) manTotal, IFNULL(SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END),0) womenTotal, - IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 1 AND 20 THEN 1 ELSE 0 END),0) AS tenAge, - IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 31 THEN 1 ELSE 0 END),0) AS twentyAge, - IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 41 THEN 1 ELSE 0 END),0) AS ThirtyAge, + IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) <= 20 THEN 1 ELSE 0 END),0) AS tenAge, + IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END),0) AS twentyAge, + IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END),0) AS ThirtyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END),0) AS fortyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) >= 51 THEN 1 ELSE 0 END),0) AS fiftyAge FROM t_member WHERE del_flag = 0 AND binding_flag = 1 @@ -783,8 +789,8 @@ IFNULL(SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END),0) manTotal, IFNULL(SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END),0) womenTotal, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) <= 20 THEN 1 ELSE 0 END),0) AS tenAge, - IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 31 THEN 1 ELSE 0 END),0) AS twentyAge, - IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 41 THEN 1 ELSE 0 END),0) AS ThirtyAge, + IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 THEN 1 ELSE 0 END),0) AS twentyAge, + IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 THEN 1 ELSE 0 END),0) AS ThirtyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 THEN 1 ELSE 0 END),0) AS fortyAge, IFNULL(SUM(CASE WHEN TIMESTAMPDIFF(YEAR, birthday, CURDATE()) >= 51 THEN 1 ELSE 0 END),0) AS fiftyAge FROM t_member WHERE del_flag = 0 AND binding_flag = 1 @@ -994,10 +1000,10 @@ AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 0 AND 20 </if> <if test="param.ageType !=null and param.ageType == 2"> - AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 31 + AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 21 AND 30 </if> <if test="param.ageType !=null and param.ageType == 3"> - AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 41 + AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 31 AND 40 </if> <if test="param.ageType !=null and param.ageType == 4"> AND TIMESTAMPDIFF(YEAR, birthday, CURDATE()) BETWEEN 41 AND 50 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 71fb6c3..3f3301b 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 @@ -8,7 +8,6 @@ import com.ruoyi.order.domain.vo.*; import com.ruoyi.order.service.order.OrderService; 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.RemoteMemberService; @@ -85,20 +84,9 @@ if (userId != null) { Member member = memberService.getMember(userId).getData(); appPlaceOrderDto.setUserId(userId); - 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); - appMemberBindingDto.setBindingType(1); - memberService.updateMemberBinding(appMemberBindingDto); - appPlaceOrderDto.setNewMemberFlag(1); - } } } AppPlaceOrderVo appPlaceOrderVo = orderService.placeOrder(appPlaceOrderDto); @@ -117,16 +105,6 @@ if (member != null && member.getRelationShopId() != null) { appPlaceActivityDto.setOpenid(member.getMiniOpenid()); appPlaceActivityDto.setShopId(member.getRelationShopId()); - } - if (member.getBindingFlag() != 1) { - //绑定商户 - AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); - appMemberBindingDto.setShopId(appPlaceActivityDto.getShopId()); - appMemberBindingDto.setUserId(userId); - appMemberBindingDto.setBindingFlag(1); - appMemberBindingDto.setBindingType(2); - memberService.updateMemberBinding(appMemberBindingDto); - appPlaceActivityDto.setNewMemberFlag(1); } } AppPlaceOrderVo appPlaceOrderVo = orderService.placeActivityOrder(appPlaceActivityDto); diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceOrderDto.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceOrderDto.java index 8f4876c..d104c96 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceOrderDto.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/dto/AppPlaceOrderDto.java @@ -30,7 +30,4 @@ @ApiModelProperty(value = "购物车列表") List<AppBuyGoodsDto> appBuyGoodsDtoList; - @ApiModelProperty(value = "获客标记",hidden = true) - private Integer newMemberFlag; - } 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 550cdc6..ba4d80f 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 @@ -26,7 +26,7 @@ @ApiModelProperty(value = "订单编号") private String orderNo; - @ApiModelProperty(value = "金额为零无需支付") + @ApiModelProperty(value = "金额为零无需支付 0否1是") private Integer zeroFlag; @ApiModelProperty(value = "支付方式1.全款2.订金") 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 786a161..cec2b25 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 @@ -55,5 +55,6 @@ @ApiModelProperty(value="服务次数") private Integer serviceNum; - + @ApiModelProperty(value = "优惠券id") + private String couponId; } diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java index b442666..3ca279b 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java @@ -81,10 +81,13 @@ @ApiModelProperty(value = "店铺活动次数排行") private List<MgtMapIntTotalVo> activityRankList; - @ApiModelProperty(value = "店铺活动销售额排名") - private List<MgtMapBigTotalVo> shopSalesRankList; + @ApiModelProperty(value = "店铺活动销售额排名店铺名称") + private String[] shopSalesRankKey; - @ApiModelProperty(value = "店铺活动销售额排名") + @ApiModelProperty(value = "店铺活动销售额排名金额") + private BigDecimal[] shopSalesRankValue; + + @ApiModelProperty(value = "店铺活动分类销售额排名") private List<MgtMapBigTotalVo> activitySalesRankList; /*@ApiModelProperty(value = "活动年龄分布key") 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 331ec33..f47239a 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 @@ -437,7 +437,7 @@ * @author jqs34 * @date 2023/6/19 22:48 */ - List<MgtMapBigTotalVo> listPlTotalShopActivityRank(@Param("param") MgtBasePlatformDto mgtBasePlatformDto); + List<MgtMapIntTotalVo> listPlTotalShopActivityRank(@Param("param") MgtBasePlatformDto mgtBasePlatformDto); /** * @description listTotalActivityTotal 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 f533272..277a0af 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,6 +1,5 @@ package com.ruoyi.order.service.impl.order; - - +import com.google.common.collect.Lists; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -12,7 +11,6 @@ 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; @@ -54,7 +52,7 @@ 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.vo.ShopProportionVo; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.*; @@ -147,6 +145,8 @@ @Resource private OrderRefundService orderRefundService; + + /** * @description: buyGoods @@ -318,8 +318,6 @@ } else { entity.setUseFlag(0); } - - } // 过滤商品优惠券列表 List<AppMemberCouponVo> appGoodsMemberCouponVoList; @@ -559,6 +557,7 @@ // 将用户优惠券列表转换为Map,方便后续查找 Map<String, AppMemberCouponVo> appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity())); AppMemberCouponVo appMemberCouponVo; + AppShopGoodsGetDto appShopGoodsGetDto; Integer couponType; BigDecimal moneyThreshold; BigDecimal discountMoney = new BigDecimal("0.00"); @@ -605,7 +604,7 @@ goodsPrice = goods.getSalesPrice(); serviceNum = goods.getServiceNum(); // 获取商户定制价格 - AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto(); + appShopGoodsGetDto = new AppShopGoodsGetDto(); appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); appShopGoodsGetDto.setShopId(appPlaceOrderDto.getShopId()); ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); @@ -748,9 +747,6 @@ order.setOrderRemark(appPlaceOrderDto.getOrderRemark()); order.setGoodsNum(goodsNum); order.setCreateTime(new Date()); - if(appPlaceOrderDto.getNewMemberFlag()!=null&&appPlaceOrderDto.getNewMemberFlag()==1){ - order.setNewMemberFlag(1); - } // 保存订单 this.save(order); appPlaceOrderVo.setOrderId(orderId); @@ -778,7 +774,7 @@ // 小程序微信下单支付 createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo, orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(), - appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1); + appPlaceOrderDto.getSpbillCreateIp()); //生成自动取消订单延时任务 String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign(); redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES); @@ -815,23 +811,23 @@ * @param payMoney * @param openid * @param payerClientIp - * @param goodsNameList */ private void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId, String goodsName, String outTradeNo, String orderId, BigDecimal payMoney, - String openid, String payerClientIp, List<String> goodsNameList,Integer orderFrom){ + String openid, String payerClientIp){ try { // 创建支付订单 - R<String> resultMch = remoteShopService.getShopSubMchId(shopId); + //2023-09-05 需求变更为统一支付到矗众 + /*R<String> resultMch = remoteShopService.getShopSubMchId(shopId); String subMchId = resultMch.getData(); if (StringUtils.isEmpty(subMchId)) { throw new ServiceException("获取微信商户号失败"); - } + }*/ + String mainMchId = WxPayConfiguration.getPlatformTyMacId(); WxPayConfig config = wxService.getConfig(); - config.setSubMchId(subMchId); - + config.setSubMchId(mainMchId); PartnerTransactionsRequest request = new PartnerTransactionsRequest(); request.setSpAppid(config.getAppId()); request.setSpMchid(config.getMchId()); @@ -845,11 +841,7 @@ // 结算信息 PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo(); // TODO 分账处理 - if(orderFrom==2){ - settleInfo.setProfitSharing(true); - }else{ - settleInfo.setProfitSharing(false); - } + settleInfo.setProfitSharing(true); settleInfo.setSubsidyAmount(BigDecimal.ZERO); request.setSettleInfo(settleInfo); @@ -872,7 +864,6 @@ PartnerTransactionsRequest.SceneInfo sceneInfo = new PartnerTransactionsRequest.SceneInfo(); sceneInfo.setPayerClientIp(payerClientIp); request.setSceneInfo(sceneInfo); - TransactionsResult.JsapiResult result = wxService.getEcommerceService().partnerTransactions(TradeTypeEnum.JSAPI, request); // 请求参数 @@ -895,9 +886,9 @@ paymentMessageService.savePaymentMessage("1", orderId, payRequestJson, payResponseJson); // 保存支付订单统一下单支付记录 - orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, outTradeNo, payMoney, + orderPaymentService.saveOrderPayment(userId, shopId, mainMchId, orderId, outTradeNo, payMoney, appPlaceOrderVo.getEndTime(), "Y", openid, - Joiner.on(";").join(goodsNameList), result.getPackageValue()); + goodsName, result.getPackageValue()); } catch (WxPayException e) { throw new ServiceException(e.getMessage()); @@ -928,259 +919,259 @@ //redis分布式锁库存控制 String goodsLock = "goods_lock_" + activityId + "_" + goodsId; RLock redissonLock = redissonClient.getLock(goodsLock); + Integer surpNum = 0; try { redissonLock.lock(30, TimeUnit.SECONDS); - Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId); + 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); } + // 定义购买数量,服务数量,商品数量 + BigDecimal buyNumBig; + Integer serviceNum; + Integer goodsNum = 0; + // 定义商品,商品文件,商品价格,商品总价,商品实际价格,折扣金额,折扣百分比,商品押金,使用优惠券,订单商品金额,优惠券折扣,订单支付押金,订单支付金额 + Goods goods; + GoodsFile goodsFile; + BigDecimal goodsPrice; + BigDecimal goodsTotalPrice; + BigDecimal goodsRealPrice; + BigDecimal discountMoney = new BigDecimal("0.00"); + BigDecimal goodsDeposit; + Integer useCoupon; + BigDecimal orderGoodsMoney = new BigDecimal("0.00"); + BigDecimal couponDiscount = new BigDecimal("0.00"); + BigDecimal orderPayDeposit = new BigDecimal("0.00"); + BigDecimal orderPayMoney = new BigDecimal("0.00"); + // 创建活动商品对象,并设置活动ID,商品ID,用户ID + ActivityGoodsGetDto activityGoodsGetDto = new ActivityGoodsGetDto(); + activityGoodsGetDto.setActivityId(activityId); + activityGoodsGetDto.setGoodsId(goodsId); + activityGoodsGetDto.setUserId(userId); + // 获取用户活动商品 + ActivityGoodsGetVo activityGoodsGetVo = remoteActivityService.getUserActivityGoods(activityGoodsGetDto).getData(); + // 检查活动状态 + if (activityGoodsGetVo.getActivityStatus() == 0) { + throw new ServiceException(AppErrorConstant.ACTIVITY_NO_START); + } + if (activityGoodsGetVo.getActivityStatus() == 2) { + throw new ServiceException(AppErrorConstant.ACTIVITY_END); + } + if (activityGoodsGetVo.getAvailableBuyNum() < 1) { + throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); + } + if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) { + throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND); + } + // 创建订单ID和订单号 + String orderId = IdUtils.simpleUUID(); + String orderNo = CodeFactoryUtil.getShopOrderNo(); + // 创建订单商品对象和订单商品ID + OrderGoods orderGoods; + String orderGoodsId; + // 创建商品类型集合 + HashSet<String> goodsTypeSet = new HashSet<>(); + HashSet<String> goodsNurseSet = new HashSet<>(); + // 创建商品订单对象,并设置商品ID,商品名称,商品介绍,商品类型 + appSureOrderGoodsVo = new AppSureOrderGoodsVo(); + useCoupon = 0; + goodsId = appPlaceActivityDto.getGoodsId(); + goods = remoteGoodsService.getGoods(goodsId).getData(); + appSureOrderGoodsVo.setGoodsId(goodsId); + appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); + appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); + appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); + // 获取商品图片 + goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); + appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); + // 设置购买数量,商品价格,服务数量 + appSureOrderGoodsVo.setBuyNum(buyNum); + serviceNum = goods.getServiceNum(); + // 获取活动价格 + goodsPrice = activityGoodsGetVo.getActivityPrice(); + appSureOrderGoodsVo.setGoodsPrice(goodsPrice); + // 计算商品总价,商品实际价格 + buyNumBig = BigDecimal.valueOf(buyNum); + goodsTotalPrice = goodsPrice.multiply(buyNumBig); + goodsRealPrice = goodsTotalPrice; + // 设置使用优惠券,商品总价,优惠券折扣,商品实际价格 + appSureOrderGoodsVo.setUseCoupon(useCoupon); + appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice); + appSureOrderGoodsVo.setCouponDiscount(discountMoney); + appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); + // 获取商品押金 + goodsDeposit = activityGoodsGetVo.getActivitySubscription(); + if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) { + goodsDeposit = new BigDecimal("0.00"); + } else { + goodsDeposit = goodsDeposit.multiply(buyNumBig); + } + appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit); + // 计算商品数量,订单商品金额,优惠券折扣,订单支付押金,订单支付金额 + goodsNum = goodsNum + buyNum; + orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice); + couponDiscount = couponDiscount.add(discountMoney); + orderPayDeposit = orderPayDeposit.add(goodsDeposit); + orderPayMoney = orderPayMoney.add(goodsRealPrice); + // 创建订单商品,并设置订单商品ID,删除标志,订单ID,商品ID,购买数量,商品价格,商品押金,商品总金额,商品应收金额,周期数量标志,服务数量,商品类型,商品名称,商品图片 + orderGoods = new OrderGoods(); + orderGoodsId = IdUtils.simpleUUID(); + orderGoods.setOrderGoodsId(orderGoodsId); + orderGoods.setDelFlag(0); + orderGoods.setOrderId(orderId); + orderGoods.setGoodsId(goodsId); + orderGoods.setBuyNum(buyNum); + orderGoods.setGoodsPrice(goodsPrice); + orderGoods.setGoodsDeposit(goodsDeposit); + orderGoods.setGoodsTotalMoney(orderGoodsMoney); + orderGoods.setGoodsReceivableMoney(goodsRealPrice); + 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()); + // 保存订单商品 + orderGoodsService.save(orderGoods); + // 清空购物车 + AppShoppingCartDelDto appShoppingCartDelDto = new AppShoppingCartDelDto(); + appShoppingCartDelDto.setGoodsId(goodsId); + appShoppingCartDelDto.setUserId(userId); + remoteShoppingCartService.deleteShoppingCart(appShoppingCartDelDto); + // 根据商品类型添加到商品类型集合中 + if (goods.getGoodsType() == 1) { + goodsTypeSet.add("周期"); + } else if (goods.getGoodsType() == 2) { + goodsTypeSet.add("服务"); + } else if (goods.getGoodsType() == 3) { + goodsTypeSet.add("体验"); + } else if (goods.getGoodsType() == 4) { + goodsTypeSet.add("单品"); + } + String goodsNurse = goods.getGoodsNurses(); + if (StringUtils.isNotBlank(goodsNurse)) { + String[] goodsNurseArr = goodsNurse.split(","); + for (String str : goodsNurseArr) { + goodsNurseSet.add(str); + } + } + // 创建订单,并设置订单ID,删除标志,订单状态,订单号,订单来源,店铺ID,用户ID,订单金额,优惠券金额,折扣金额,应收金额,应收押金,变动应收金额,支付类型 + Order order = new Order(); + order.setOrderId(orderId); + order.setDelFlag(0); + order.setOrderStatus(1); + order.setOrderNo(orderNo); + order.setOrderFrom(2); + order.setShopId(appPlaceActivityDto.getShopId()); + order.setUserId(userId); + order.setOrderMoney(orderGoodsMoney); + order.setCouponMoney(couponDiscount); + order.setDiscountMoney(couponDiscount); + order.setReceivableMoney(orderPayMoney); + order.setReceivableDeposit(orderPayDeposit); + order.setActivityId(activityId); + order.setActivityName(activityGoodsGetVo.getActivityName()); + order.setOfflinePayMoney(BigDecimal.ZERO); + // 根据支付类型设置订单支付金额,在线支付金额,订单支付金额,未支付金额,关闭标志 + if (appPlaceActivityDto.getPayType() == 1) { + order.setPayMoney(orderPayMoney); + order.setOnlinePayMoney(orderPayMoney); + appPlaceOrderVo.setPayMoney(orderPayMoney); + appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); + order.setPayType(1); + order.setCloseFlag(1); + order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount)); + } else if (appPlaceActivityDto.getPayType() == 2) { + order.setPayMoney(orderPayDeposit); + order.setOnlinePayMoney(orderPayDeposit); + appPlaceOrderVo.setPayMoney(orderPayDeposit); + appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); + order.setPayType(2); + order.setCloseFlag(0); + order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount).subtract(orderPayDeposit)); + } + // 设置订单备注,商品数量,创建时间 + order.setOrderRemark(appPlaceActivityDto.getOrderRemark()); + order.setGoodsNum(goodsNum); + order.setCreateTime(new Date()); + if(appPlaceActivityDto.getNewMemberFlag()!=null&&appPlaceActivityDto.getNewMemberFlag()==1){ + order.setNewMemberFlag(1); + } + // 保存订单 + this.save(order); + // 更新用户商品类型 + if (goodsTypeSet != null || goodsNurseSet != null) { + AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto(); + appMemberGoodsTypeDto.setUserId(userId); + appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); + appMemberGoodsTypeDto.setGoodsNurseSet(goodsNurseSet); + remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto); + } + // 设置订单ID和订单号 + appPlaceOrderVo.setOrderId(orderId); + appPlaceOrderVo.setOrderNo(orderNo); + //改变活动库存 + AGStockChangeDto agStockChangeDto = new AGStockChangeDto(); + agStockChangeDto.setActivityId(activityId); + agStockChangeDto.setGoodsId(goodsId); + agStockChangeDto.setChangeType(2); + agStockChangeDto.setChangeNum(buyNum); + agStockChangeDto.setShopId(order.getShopId()); + agStockChangeDto.setUserId(order.getUserId()); + remoteActivityService.changeActivityStock(agStockChangeDto); + //支付金额大于0走支付 负责直接完成订单 + if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){ + String outTradeNo = IdUtils.simpleUUID(); + // 保存订单 交易流水 + order.setOutTradeNo(outTradeNo); + this.saveOrUpdate(order); + //自动取消订单任务时间获取 + Integer delayTime = 30; + if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { + delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); + } + appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); + // 小程序微信下单支付 + createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo, + orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(), + appPlaceActivityDto.getSpbillCreateIp()); + //生成自动取消订单延时任务 + String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign(); + redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES); + DelayTask delayTask = new DelayTask(); + delayTask.setDelFlag(0); + delayTask.setCreateTime(new Date()); + delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); + delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); + remoteConfigService.addDelayTask(delayTask); + appPlaceOrderVo.setZeroFlag(0); + }else{ + order.setOrderStatus(2); + this.saveOrUpdate(order); + appPlaceOrderVo.setZeroFlag(1); + } + //生成活动参加记录 + ActivityRecord activityRecord = new ActivityRecord(); + activityRecord.setDelFlag(0); + activityRecord.setActivityId(activityId); + activityRecord.setUserId(userId); + activityRecord.setOrderTime(order.getCreateTime()); + activityRecord.setOrderMoney(order.getOrderMoney()); + activityRecord.setOrderId(orderId); + activityRecord.setCreateTime(new Date()); + activityRecord.setBuyNum(orderGoods.getBuyNum()); + activityRecord.setGoodsId(orderGoods.getGoodsId()); + activityRecord.setActivityMoney(activityGoodsGetVo.getActivityPrice()); + remoteActivityService.addActivityRecord(activityRecord); + //扣除redis库存 + redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId, surpNum - buyNum); + } catch (Exception e){ + log.error("活动订单购买失败:"+e.getMessage()); + throw new ServiceException(e.getMessage()); } finally { redissonLock.unlock(); } - // 定义购买数量,服务数量,商品数量 - BigDecimal buyNumBig; - Integer serviceNum; - Integer goodsNum = 0; - // 定义商品,商品文件,商品价格,商品总价,商品实际价格,折扣金额,折扣百分比,商品押金,使用优惠券,订单商品金额,优惠券折扣,订单支付押金,订单支付金额 - Goods goods; - GoodsFile goodsFile; - BigDecimal goodsPrice; - BigDecimal goodsTotalPrice; - BigDecimal goodsRealPrice; - BigDecimal discountMoney = new BigDecimal("0.00"); - BigDecimal discountPercent; - BigDecimal goodsDeposit; - Integer useCoupon; - BigDecimal orderGoodsMoney = new BigDecimal("0.00"); - BigDecimal couponDiscount = new BigDecimal("0.00"); - BigDecimal orderPayDeposit = new BigDecimal("0.00"); - BigDecimal orderPayMoney = new BigDecimal("0.00"); - // 创建活动商品对象,并设置活动ID,商品ID,用户ID - ActivityGoodsGetDto activityGoodsGetDto = new ActivityGoodsGetDto(); - activityGoodsGetDto.setActivityId(activityId); - activityGoodsGetDto.setGoodsId(goodsId); - activityGoodsGetDto.setUserId(userId); - // 获取用户活动商品 - ActivityGoodsGetVo activityGoodsGetVo = remoteActivityService.getUserActivityGoods(activityGoodsGetDto).getData(); - // 检查活动状态 - if (activityGoodsGetVo.getActivityStatus() == 0) { - throw new ServiceException(AppErrorConstant.ACTIVITY_NO_START); - } - if (activityGoodsGetVo.getActivityStatus() == 2) { - throw new ServiceException(AppErrorConstant.ACTIVITY_END); - } - if (activityGoodsGetVo.getAvailableBuyNum() < 1) { - throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); - } - if (activityGoodsGetVo.getAvailableBuyNum() < buyNum) { - throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_BEYOND); - } - // 创建订单ID和订单号 - String orderId = IdUtils.simpleUUID(); - String orderNo = CodeFactoryUtil.getShopOrderNo(); - // 创建订单商品对象和订单商品ID - OrderGoods orderGoods; - String orderGoodsId; - // 创建商品类型集合 - HashSet<String> goodsTypeSet = new HashSet<>(); - HashSet<String> goodsNurseSet = new HashSet<>(); - // 创建商品订单对象,并设置商品ID,商品名称,商品介绍,商品类型 - appSureOrderGoodsVo = new AppSureOrderGoodsVo(); - useCoupon = 0; - goodsId = appPlaceActivityDto.getGoodsId(); - goods = remoteGoodsService.getGoods(goodsId).getData(); - appSureOrderGoodsVo.setGoodsId(goodsId); - appSureOrderGoodsVo.setGoodsName(goods.getGoodsName()); - appSureOrderGoodsVo.setGoodsIntroduction(goods.getGoodsIntroduction()); - appSureOrderGoodsVo.setGoodsType(goods.getGoodsType()); - // 获取商品图片 - goodsFile = remoteGoodsService.getGoodsFile(goodsId).getData(); - appSureOrderGoodsVo.setGoodsPicture(goodsFile.getFileUrl()); - // 设置购买数量,商品价格,服务数量 - appSureOrderGoodsVo.setBuyNum(buyNum); - goodsPrice = goods.getSalesPrice(); - serviceNum = goods.getServiceNum(); - // 获取活动价格 - goodsPrice = activityGoodsGetVo.getActivityPrice(); - appSureOrderGoodsVo.setGoodsPrice(goodsPrice); - // 计算商品总价,商品实际价格 - buyNumBig = BigDecimal.valueOf(buyNum); - goodsTotalPrice = goodsPrice.multiply(buyNumBig); - goodsRealPrice = goodsTotalPrice; - // 设置使用优惠券,商品总价,优惠券折扣,商品实际价格 - appSureOrderGoodsVo.setUseCoupon(useCoupon); - appSureOrderGoodsVo.setGoodsTotalPrice(goodsTotalPrice); - appSureOrderGoodsVo.setCouponDiscount(discountMoney); - appSureOrderGoodsVo.setGoodsRealPrice(goodsRealPrice); - // 获取商品押金 - goodsDeposit = activityGoodsGetVo.getActivitySubscription(); - if (goodsDeposit == null || goodsDeposit.compareTo(BigDecimal.ZERO) == 0) { - goodsDeposit = new BigDecimal("0.00"); - } else { - goodsDeposit = goodsDeposit.multiply(buyNumBig); - } - appSureOrderGoodsVo.setGoodsDeposit(goodsDeposit); - // 计算商品数量,订单商品金额,优惠券折扣,订单支付押金,订单支付金额 - goodsNum = goodsNum + buyNum; - orderGoodsMoney = orderGoodsMoney.add(goodsTotalPrice); - couponDiscount = couponDiscount.add(discountMoney); - orderPayDeposit = orderPayDeposit.add(goodsDeposit); - orderPayMoney = orderPayMoney.add(goodsRealPrice); - // 创建订单商品,并设置订单商品ID,删除标志,订单ID,商品ID,购买数量,商品价格,商品押金,商品总金额,商品应收金额,周期数量标志,服务数量,商品类型,商品名称,商品图片 - orderGoods = new OrderGoods(); - orderGoodsId = IdUtils.simpleUUID(); - orderGoods.setOrderGoodsId(orderGoodsId); - orderGoods.setDelFlag(0); - orderGoods.setOrderId(orderId); - orderGoods.setGoodsId(goodsId); - orderGoods.setBuyNum(buyNum); - orderGoods.setGoodsPrice(goodsPrice); - orderGoods.setGoodsDeposit(goodsDeposit); - orderGoods.setGoodsTotalMoney(orderGoodsMoney); - orderGoods.setGoodsReceivableMoney(goodsRealPrice); - 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()); - // 保存订单商品 - orderGoodsService.save(orderGoods); - // 清空购物车 - AppShoppingCartDelDto appShoppingCartDelDto = new AppShoppingCartDelDto(); - appShoppingCartDelDto.setGoodsId(goodsId); - appShoppingCartDelDto.setUserId(userId); - remoteShoppingCartService.deleteShoppingCart(appShoppingCartDelDto); - // 根据商品类型添加到商品类型集合中 - if (goods.getGoodsType() == 1) { - goodsTypeSet.add("周期"); - } else if (goods.getGoodsType() == 2) { - goodsTypeSet.add("服务"); - } else if (goods.getGoodsType() == 3) { - goodsTypeSet.add("体验"); - } else if (goods.getGoodsType() == 4) { - goodsTypeSet.add("单品"); - } - String goodsNurse = goods.getGoodsNurses(); - if (StringUtils.isNotBlank(goodsNurse)) { - String[] goodsNurseArr = goodsNurse.split(","); - for (String str : goodsNurseArr) { - goodsNurseSet.add(str); - } - } - // 创建订单,并设置订单ID,删除标志,订单状态,订单号,订单来源,店铺ID,用户ID,订单金额,优惠券金额,折扣金额,应收金额,应收押金,变动应收金额,支付类型 - Order order = new Order(); - order.setOrderId(orderId); - order.setDelFlag(0); - order.setOrderStatus(1); - order.setOrderNo(orderNo); - order.setOrderFrom(2); - order.setShopId(appPlaceActivityDto.getShopId()); - order.setUserId(userId); - order.setOrderMoney(orderGoodsMoney); - order.setCouponMoney(couponDiscount); - order.setDiscountMoney(couponDiscount); - order.setReceivableMoney(orderPayMoney); - order.setReceivableDeposit(orderPayDeposit); - order.setActivityId(activityId); - order.setActivityName(activityGoodsGetVo.getActivityName()); - order.setOfflinePayMoney(BigDecimal.ZERO); - // 根据支付类型设置订单支付金额,在线支付金额,订单支付金额,未支付金额,关闭标志 - if (appPlaceActivityDto.getPayType() == 1) { - order.setPayMoney(orderPayMoney); - order.setOnlinePayMoney(orderPayMoney); - appPlaceOrderVo.setPayMoney(orderPayMoney); - appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); - order.setPayType(1); - order.setCloseFlag(1); - order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount)); - } else if (appPlaceActivityDto.getPayType() == 2) { - order.setPayMoney(orderPayDeposit); - order.setOnlinePayMoney(orderPayDeposit); - appPlaceOrderVo.setPayMoney(orderPayDeposit); - appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney())); - order.setPayType(2); - order.setCloseFlag(0); - order.setChangeReceivableMoney(orderGoodsMoney.subtract(couponDiscount).subtract(orderPayDeposit)); - } - // 设置订单备注,商品数量,创建时间 - order.setOrderRemark(appPlaceActivityDto.getOrderRemark()); - order.setGoodsNum(goodsNum); - order.setCreateTime(new Date()); - if(appPlaceActivityDto.getNewMemberFlag()!=null&&appPlaceActivityDto.getNewMemberFlag()==1){ - order.setNewMemberFlag(1); - } - // 保存订单 - this.save(order); - // 更新用户商品类型 - if (goodsTypeSet != null || goodsNurseSet != null) { - AppMemberGoodsTypeDto appMemberGoodsTypeDto = new AppMemberGoodsTypeDto(); - appMemberGoodsTypeDto.setUserId(userId); - appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); - appMemberGoodsTypeDto.setGoodsNurseSet(goodsNurseSet); - remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto); - } - // 设置订单ID和订单号 - appPlaceOrderVo.setOrderId(orderId); - appPlaceOrderVo.setOrderNo(orderNo); - //改变活动库存 - AGStockChangeDto agStockChangeDto = new AGStockChangeDto(); - agStockChangeDto.setActivityId(activityId); - agStockChangeDto.setGoodsId(goodsId); - agStockChangeDto.setChangeType(2); - agStockChangeDto.setChangeNum(buyNum); - agStockChangeDto.setShopId(order.getShopId()); - agStockChangeDto.setUserId(order.getUserId()); - remoteActivityService.changeActivityStock(agStockChangeDto); - //支付金额大于0走支付 负责直接完成订单 - if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){ - List<String> goodsNameList = new ArrayList<>(); - goodsNameList.add(orderGoods.getGoodsName()); - String outTradeNo = IdUtils.simpleUUID(); - // 保存订单 交易流水 - order.setOutTradeNo(outTradeNo); - this.saveOrUpdate(order); - //自动取消订单任务时间获取 - Integer delayTime = 30; - if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) { - delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME); - } - appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime)); - // 小程序微信下单支付 - createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), outTradeNo, - orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(), - appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2); - //生成自动取消订单延时任务 - String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign(); - redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES); - DelayTask delayTask = new DelayTask(); - delayTask.setDelFlag(0); - delayTask.setCreateTime(new Date()); - delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime)); - delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId); - remoteConfigService.addDelayTask(delayTask); - appPlaceOrderVo.setZeroFlag(0); - }else{ - order.setOrderStatus(2); - this.saveOrUpdate(order); - appPlaceOrderVo.setZeroFlag(1); - } - //生成活动参加记录 - ActivityRecord activityRecord = new ActivityRecord(); - activityRecord.setDelFlag(0); - activityRecord.setActivityId(activityId); - activityRecord.setUserId(userId); - activityRecord.setOrderTime(order.getCreateTime()); - activityRecord.setOrderMoney(order.getOrderMoney()); - activityRecord.setOrderId(orderId); - activityRecord.setCreateTime(new Date()); - activityRecord.setBuyNum(orderGoods.getBuyNum()); - activityRecord.setGoodsId(orderGoods.getGoodsId()); - activityRecord.setActivityMoney(activityGoodsGetVo.getActivityPrice()); - remoteActivityService.addActivityRecord(activityRecord); return appPlaceOrderVo; } @@ -1397,11 +1388,71 @@ if (order.getOrderStatus() != 2) { throw new ServiceException(AppErrorConstant.VERIFY_USED); } - if (!order.getShopId().equals(shopId)) { - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); - } + // 根据订单用户ID获取用户信息 + Member member = remoteMemberService.getMember(order.getUserId()).getData(); // 根据订单ID获取订单商品列表 List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); + //绑定用户判断核销商户 + if(member.getBindingFlag()==1){ + //绑定用户需直接判断商户 + if (!order.getShopId().equals(shopId)) { + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + }else{ + //商城订单需判断商户 + if(order.getOrderFrom()==1){ + if (!order.getShopId().equals(shopId)) { + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + } + //未绑定用户需判断核销商城订单判断商品单价和优惠券 + /*StringJoiner goodsIdSJ = new StringJoiner(","); + for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { + goodsIdSJ.add(appUserOrderGoodsPageVo.getGoodsId()); + } + //获取商品列表 + List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIdSJ.toString()).getData(); + Map<String, Goods> goodsMap = goodsList.stream() + .collect(Collectors.toMap(Goods::getGoodsId, Function.identity())); + Goods goods; + ShopGoods shopGoods; + AppShopGoodsGetDto appShopGoodsGetDto; + for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { + appShopGoodsGetDto= new AppShopGoodsGetDto(); + appShopGoodsGetDto.setShopId(shopId); + appShopGoodsGetDto.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); + shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); + goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); + //当商户定制价格不为空时判断商品定制价格否则判断商品价格是否一致 + if(shopGoods!=null){ + if(shopGoods.getSalesPrice().compareTo(appUserOrderGoodsPageVo.getGoodsPrice())!=0){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ + if(shopGoods.getServiceNum()!=null){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + }else{ + if(shopGoods.getServiceNum()!=appUserOrderGoodsPageVo.getServiceNum()){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + } + }else{ + if(goods.getSalesPrice().compareTo(appUserOrderGoodsPageVo.getGoodsPrice())!=0){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ + if(goods.getServiceNum()!=null){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + }else{ + if(goods.getServiceNum()!=appUserOrderGoodsPageVo.getServiceNum()){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + } + } + }*/ + } // 设置返回对象的属性值 merVerifyOrderVo.setOrderId(orderId); merVerifyOrderVo.setOrderNo(order.getOrderNo()); @@ -1433,8 +1484,6 @@ } } merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney())); - // 根据订单用户ID获取用户信息 - Member member = remoteMemberService.getMember(order.getUserId()).getData(); merVerifyOrderVo.setUserId(order.getUserId()); merVerifyOrderVo.setUserName(member.getRealName()); merVerifyOrderVo.setUserMobile(member.getMobile()); @@ -1462,11 +1511,74 @@ if (order.getOrderStatus() != 2) { throw new ServiceException(AppErrorConstant.VERIFY_USED); } - + Member member = remoteMemberService.getMember(order.getUserId()).getData(); + //获取核销商户 ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData(); - if (!shopRelUserVo.getShopId().equals(order.getShopId())) { - throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + Long shopId = shopRelUserVo.getShopId(); + //获取订单商品列表 + List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); + //绑定用户判断核销商户 + if(member.getBindingFlag()==1){ + //绑定用户需直接判断商户 + if (!order.getShopId().equals(shopId)) { + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + }else{ + //商城订单需判断商户 + if(order.getOrderFrom()==1){ + if (!order.getShopId().equals(shopId)) { + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + } + //未绑定用户需判断核销商城订单判断商品单价和优惠券 + /*StringJoiner goodsIdSJ = new StringJoiner(","); + for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { + goodsIdSJ.add(appUserOrderGoodsPageVo.getGoodsId()); + } + //获取商品列表 + List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsIdSJ.toString()).getData(); + Map<String, Goods> goodsMap = goodsList.stream() + .collect(Collectors.toMap(Goods::getGoodsId, Function.identity())); + Goods goods; + ShopGoods shopGoods; + AppShopGoodsGetDto appShopGoodsGetDto; + for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { + appShopGoodsGetDto= new AppShopGoodsGetDto(); + appShopGoodsGetDto.setShopId(shopId); + appShopGoodsGetDto.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); + shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); + goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); + //当商户定制价格不为空时判断商品定制价格否则判断商品价格是否一致 + if(shopGoods!=null){ + if(shopGoods.getSalesPrice().compareTo(appUserOrderGoodsPageVo.getGoodsPrice())!=0){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ + if(shopGoods.getServiceNum()!=null){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + }else{ + if(shopGoods.getServiceNum()!=appUserOrderGoodsPageVo.getServiceNum()){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + } + }else{ + if(goods.getSalesPrice().compareTo(appUserOrderGoodsPageVo.getGoodsPrice())!=0){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + if(appUserOrderGoodsPageVo.getCycleNumFlag()==0){ + if(goods.getServiceNum()!=null){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + }else{ + if(goods.getServiceNum()!=appUserOrderGoodsPageVo.getServiceNum()){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + } + } + }*/ } + order.setShopId(shopId); order.setOrderStatus(3); order.setUseTime(nowTime); order.setUseUserId(merVerifyOrderDto.getUserId()); @@ -1474,6 +1586,7 @@ order.setOffPayTime(nowTime); order.setPayMoney(order.getPayMoney().add(relPayMoney)); order.setChangeReceivableMoney(relReceiveMoney); + //判断订单是否结清 if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) { order.setCloseFlag(1); } else { @@ -1481,7 +1594,7 @@ } this.saveOrUpdate(order); //创建服务商品 - List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); + //获取商品信息(商品简介,调理问题) StringJoiner goodsIdSj = new StringJoiner(","); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { goodsIdSj.add(appUserOrderGoodsPageVo.getGoodsId()); @@ -1493,9 +1606,11 @@ ConsumerGoods consumerGoods; String consumerGoodsId; Goods goods; + //循环生成商品服务 List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { Integer buyNum = appUserOrderGoodsPageVo.getBuyNum(); + //判断是否次数未确认商品 是则创建未确认周期商品服务 否则循环创建商品服务 if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) { consumerGoods = new ConsumerGoods(); goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); @@ -1559,11 +1674,6 @@ merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney()); merVerifyOrderVo.setCouponDiscount(order.getCouponMoney()); merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit()); - if(order.getPayType()==1){ - merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney())); - }else{ - merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit())); - } merVerifyOrderVo.setPayMoney(order.getPayMoney()); merVerifyOrderVo.setOrderRemark(order.getOrderRemark()); merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); @@ -1572,9 +1682,12 @@ merVerifyOrderVo.setUseTime(order.getUseTime()); merVerifyOrderVo.setPayType(order.getPayType()); merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney()); + //根据支付方式返回应收金额和已收金额 if(order.getPayType()==1){ + merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney())); merVerifyOrderVo.setReceiveMoney(order.getPayMoney()); }else{ + merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit())); if(order.getOfflinePayMoney()!=null){ merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney()); }else{ @@ -1582,17 +1695,24 @@ } } merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney())); - Member member = remoteMemberService.getMember(order.getUserId()).getData(); merVerifyOrderVo.setUserId(order.getUserId()); merVerifyOrderVo.setUserName(member.getRealName()); merVerifyOrderVo.setUserMobile(member.getMobile()); merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); - // TODO 活动才分账 - if (order.getOrderFrom() == 2) { - // 活动才分账 - submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney()); + //判断用户是否绑定 2023-09-05需求改变核销时绑定用户 + if (member.getBindingFlag() != 1) { + //绑定商户 + AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); + appMemberBindingDto.setShopId(order.getShopId()); + appMemberBindingDto.setUserId(order.getUserId()); + appMemberBindingDto.setBindingFlag(1); + appMemberBindingDto.setBindingType(1); + remoteMemberService.updateMemberBinding(appMemberBindingDto); } - + // 订单金额大于0时进行分账 + if (order.getOnlinePayMoney().compareTo(BigDecimal.ZERO)>0) { + submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney(),order.getOrderFrom()); + } //创建支付记录 if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){ PayRecord payRecord = new PayRecord(); @@ -1610,38 +1730,40 @@ return merVerifyOrderVo; } - private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) { + private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney, Integer orderFrom) { 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)) { + throw new ServiceException("获取微信商户号失败"); + } + // 平台特约商户号,用户平台收取服务费 2023-09-05改变分账方式 + String platformTyMacId = WxPayConfiguration.getPlatformTyMacId(); if (!StringUtils.isEmpty(subMchId)) { WxPayConfig config = wxService.getConfig(); - - R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId); - ShopProportionVo shopProportion = resultShopProportion.getData(); - if (null != shopProportion) { + ShopProportionVo shopProportion = null; + BigDecimal proportionPercent = null; + //商户订单获取统一分成 活动订单获取活动分成 + if(orderFrom==1){ + proportionPercent = redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION); + }else{ + R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId); + shopProportion = resultShopProportion.getData(); + proportionPercent = shopProportion.getProportionPercent(); + } + if (null != proportionPercent) { ProfitSharingRequest request = new ProfitSharingRequest(); request.setAppid(config.getAppId()); - request.setSubMchid(subMchId); + request.setSubMchid(platformTyMacId); request.setTransactionId(transactionId); request.setOutOrderNo(IdUtils.simpleUUID()); List<ProfitSharingRequest.Receiver> receiverList = new ArrayList<>(); - - String description = "订单:" + orderNo + " 平台抽取佣金"; - //获取商户分成 - BigDecimal proportionPercent = shopProportion.getProportionPercent(); - if (null == proportionPercent) { - proportionPercent = BigDecimal.ZERO; - } + String description = "订单:" + orderNo + " 平台分账"; //平台分成 proportionPercent = new BigDecimal("100.00").subtract(proportionPercent); if(proportionPercent.compareTo(BigDecimal.ZERO)>0){ @@ -1655,20 +1777,17 @@ // 分账创建 ProfitSharingRequest.Receiver receiver = new ProfitSharingRequest.Receiver(); receiver.setType("MERCHANT_ID"); - receiver.setReceiverAccount(platformTyMacId); + receiver.setReceiverAccount(subMchId); 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); @@ -2809,6 +2928,12 @@ Boolean noService = true; Boolean noExperience = true; Boolean noGoods = true; + mgtTotalOrderTotalVo.setCycleTotal(0); + mgtTotalOrderTotalVo.setCycleMoney(BigDecimal.ZERO); + mgtTotalOrderTotalVo.setServiceTotal(0); + mgtTotalOrderTotalVo.setServiceMoney(BigDecimal.ZERO); + mgtTotalOrderTotalVo.setExperienceTotal(0); + mgtTotalOrderTotalVo.setExperienceMoney(BigDecimal.ZERO); for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); @@ -2837,48 +2962,48 @@ mgtMapBigTotalVo.setMapKey("单品"); noGoods = false; } - //补充缺少类型 - if(noCycle){ - mgtMapIntTotalVo = new MgtMapIntTotalVo(); - mgtMapIntTotalVo.setMapKey("周期"); - mgtMapIntTotalVo.setMapValue(0); - goodsTypeTotalList.add(mgtMapIntTotalVo); - mgtMapBigTotalVo = new MgtMapBigTotalVo(); - mgtMapBigTotalVo.setMapKey("周期"); - mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); - goodsTypeMoneyList.add(mgtMapBigTotalVo); - } - if(noService){ - mgtMapIntTotalVo = new MgtMapIntTotalVo(); - mgtMapIntTotalVo.setMapKey("服务"); - mgtMapIntTotalVo.setMapValue(0); - goodsTypeTotalList.add(mgtMapIntTotalVo); - mgtMapBigTotalVo = new MgtMapBigTotalVo(); - mgtMapBigTotalVo.setMapKey("服务"); - mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); - goodsTypeMoneyList.add(mgtMapBigTotalVo); - } - if(noExperience){ - mgtMapIntTotalVo = new MgtMapIntTotalVo(); - mgtMapIntTotalVo.setMapKey("体验"); - mgtMapIntTotalVo.setMapValue(0); - goodsTypeTotalList.add(mgtMapIntTotalVo); - mgtMapBigTotalVo = new MgtMapBigTotalVo(); - mgtMapBigTotalVo.setMapKey("体验"); - mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); - goodsTypeMoneyList.add(mgtMapBigTotalVo); - } - if(noGoods){ - mgtMapIntTotalVo = new MgtMapIntTotalVo(); - mgtMapIntTotalVo.setMapKey("单品"); - mgtMapIntTotalVo.setMapValue(0); - goodsTypeTotalList.add(mgtMapIntTotalVo); - mgtMapBigTotalVo = new MgtMapBigTotalVo(); - mgtMapBigTotalVo.setMapKey("单品"); - mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); - goodsTypeMoneyList.add(mgtMapBigTotalVo); - } goodsTypeTotalList.add(mgtMapIntTotalVo); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + //补充缺少类型 + if(noCycle){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("周期"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("周期"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noService){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("服务"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("服务"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noExperience){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("体验"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("体验"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); + goodsTypeMoneyList.add(mgtMapBigTotalVo); + } + if(noGoods){ + mgtMapIntTotalVo = new MgtMapIntTotalVo(); + mgtMapIntTotalVo.setMapKey("单品"); + mgtMapIntTotalVo.setMapValue(0); + goodsTypeTotalList.add(mgtMapIntTotalVo); + mgtMapBigTotalVo = new MgtMapBigTotalVo(); + mgtMapBigTotalVo.setMapKey("单品"); + mgtMapBigTotalVo.setMapValue(BigDecimal.ZERO); goodsTypeMoneyList.add(mgtMapBigTotalVo); } mgtTotalOrderTotalVo.setGoodsTypeTotalList(goodsTypeTotalList); @@ -2960,8 +3085,32 @@ */ @Override public MgtTotalActivityTotalVo getTotalActivityTotal(MgtBaseShopDto mgtBaseShopDto) { + MgtTotalActivityTotalVo totalActivityTotalVo = new MgtTotalActivityTotalVo(); + totalActivityTotalVo.setOrderTotal(0); + totalActivityTotalVo.setCycleTotal(0); + totalActivityTotalVo.setExperienceTotal(0); + totalActivityTotalVo.setServiceTotal(0); + totalActivityTotalVo.setOrderMoney(new BigDecimal("0")); + totalActivityTotalVo.setCycleMoney(new BigDecimal("0")); + totalActivityTotalVo.setExperienceMoney(new BigDecimal("0")); + totalActivityTotalVo.setServiceMoney(new BigDecimal("0")); + totalActivityTotalVo.setOrderJoinPerson(0); + totalActivityTotalVo.setOrderPerson(0); + totalActivityTotalVo.setCyclePerson(0); + totalActivityTotalVo.setExperiencePerson(0); + totalActivityTotalVo.setServicePerson(0); + totalActivityTotalVo.setOrderTotalKey(new String[0]); + totalActivityTotalVo.setOrderTotalValue(new Integer[0]); + totalActivityTotalVo.setOrderMoneyValue(new BigDecimal[0]); + totalActivityTotalVo.setGoodsTypeTotalList(Lists.newArrayList()); + totalActivityTotalVo.setGoodsTypeMoneyList(Lists.newArrayList()); + totalActivityTotalVo.setJoinMemberTotalKey(new String[0]); + totalActivityTotalVo.setJoinMemberTotalValue(new Integer[0]); //获取基础统计 总订单数 订单金额 参与人数 - MgtTotalActivityTotalVo totalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto); + MgtTotalActivityTotalVo mgtTotalActivityTotalVo = orderMapper.getTotalActivityTotal(mgtBaseShopDto); + totalActivityTotalVo.setOrderTotal(mgtTotalActivityTotalVo.getOrderTotal()); + totalActivityTotalVo.setOrderMoney(mgtTotalActivityTotalVo.getOrderMoney()); + totalActivityTotalVo.setOrderJoinPerson(mgtTotalActivityTotalVo.getOrderJoinPerson()); //获客人数 MgtTotalActivityTotalVo totalActivityMemberTotalVo = orderMapper.getTotalActivityMemberTotal(mgtBaseShopDto); totalActivityTotalVo.setOrderPerson(totalActivityMemberTotalVo.getOrderPerson()); @@ -3083,8 +3232,8 @@ totalActivityTotalVo.setOrderTotalValue(orderTotalValue); totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue); } - //参与人数 - List<MgtMapIntTotalVo> joinList = orderMapper.getActivityMemberTotal(mgtBaseShopDto); + //参与人数 2023-09-06 另开接口 + /*List<MgtMapIntTotalVo> joinList = orderMapper.getActivityMemberTotal(mgtBaseShopDto); // 将查询结果转为Map Map<String, Integer> mgtMapIntTotalVoMap = new HashMap<>(); if (joinList != null && !joinList.isEmpty()) { @@ -3107,7 +3256,7 @@ joinMemberTotalValue[i] = (value != null) ? value : 0; } totalActivityTotalVo.setJoinMemberTotalKey(joinMemberTotalKey); - totalActivityTotalVo.setJoinMemberTotalValue(joinMemberTotalValue); + totalActivityTotalVo.setJoinMemberTotalValue(joinMemberTotalValue);*/ return totalActivityTotalVo; } @@ -3319,14 +3468,49 @@ mgtBasePlatformDto.setUserIdList(userIdList); } } + MgtTotalOrderTotalVo mgtTotalOrderTotalVo = new MgtTotalOrderTotalVo(); + mgtTotalOrderTotalVo.setOrderTotal(0); + mgtTotalOrderTotalVo.setOnlineTotal(0); + mgtTotalOrderTotalVo.setOfflineTotal(0); + mgtTotalOrderTotalVo.setActivityTotal(0); + mgtTotalOrderTotalVo.setCycleTotal(0); + mgtTotalOrderTotalVo.setExperienceTotal(0); + mgtTotalOrderTotalVo.setServiceTotal(0); + mgtTotalOrderTotalVo.setOrderMoney(new BigDecimal("0")); + mgtTotalOrderTotalVo.setOnlineMoney(new BigDecimal("0")); + mgtTotalOrderTotalVo.setOfflineMoney(new BigDecimal("0")); + mgtTotalOrderTotalVo.setActivityMoney(new BigDecimal("0")); + mgtTotalOrderTotalVo.setCycleMoney(new BigDecimal("0")); + mgtTotalOrderTotalVo.setExperienceMoney(new BigDecimal("0")); + mgtTotalOrderTotalVo.setServiceMoney(new BigDecimal("0")); + mgtTotalOrderTotalVo.setOrderTotalKey(new String[0]); + mgtTotalOrderTotalVo.setOrderTotalValue(new Integer[0]); + mgtTotalOrderTotalVo.setOrderMoneyValue(new BigDecimal[0]); + mgtTotalOrderTotalVo.setGoodsTypeTotalList(Lists.newArrayList()); + mgtTotalOrderTotalVo.setGoodsTypeMoneyList(Lists.newArrayList()); + mgtTotalOrderTotalVo.setGoodsRankList(Lists.newArrayList()); + mgtTotalOrderTotalVo.setOrderFromRankList(Lists.newArrayList()); List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); + if (mgtBasePlatformDto.getUserId() != null || StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) { + if(shopIdList==null||shopIdList.isEmpty()){ + return mgtTotalOrderTotalVo; + } + } if(mgtBasePlatformDto.getShopId()!=null){ shopIdList = new ArrayList<>(); shopIdList.add(mgtBasePlatformDto.getShopId()); } mgtBasePlatformDto.setShopIdList(shopIdList); //获取基础统计 - MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto); + MgtTotalOrderTotalVo totalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto); + mgtTotalOrderTotalVo.setOrderTotal(totalOrderTotalVo.getOrderTotal()); + mgtTotalOrderTotalVo.setOnlineTotal(totalOrderTotalVo.getOnlineTotal()); + mgtTotalOrderTotalVo.setOfflineTotal(totalOrderTotalVo.getOfflineTotal()); + mgtTotalOrderTotalVo.setActivityTotal(0); + mgtTotalOrderTotalVo.setOrderMoney(totalOrderTotalVo.getOrderMoney()); + mgtTotalOrderTotalVo.setOnlineMoney(totalOrderTotalVo.getOnlineMoney()); + mgtTotalOrderTotalVo.setOfflineMoney(totalOrderTotalVo.getOfflineMoney()); + mgtTotalOrderTotalVo.setActivityMoney(totalOrderTotalVo.getActivityMoney()); //获取商品分类销售数据 List<MgtMapTotalPlusVo> MgtMapIntTotalVoGoodsType = orderMapper.listPlTotalOrderTotalGoodsType(mgtBasePlatformDto); List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>(); @@ -3477,21 +3661,33 @@ if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){ return new MgtPlTotalActivityTotalVo(); } - //获取需要关联的用户id集合 - /*if (mgtBasePlatformDto.getDeptId() != null) { - List<Long> userIdList = new ArrayList<>(); - if (mgtBasePlatformDto.getUserId() != null) { - userIdList.add(mgtBasePlatformDto.getUserId()); - } else { - MgtUserIdByDept mgtUserIdByDept = new MgtUserIdByDept(); - mgtUserIdByDept.setDeptId(mgtBasePlatformDto.getUserId()); - mgtUserIdByDept = remoteConfigService.getUserIdByDept(mgtUserIdByDept).getData(); - userIdList = mgtUserIdByDept.getUserIdList(); - } - if (!userIdList.isEmpty()) { - mgtBasePlatformDto.setUserIdList(userIdList); - } - }*/ + MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); + totalActivityTotalVo.setOrderTotal(0); + totalActivityTotalVo.setCycleTotal(0); + totalActivityTotalVo.setExperienceTotal(0); + totalActivityTotalVo.setServiceTotal(0); + totalActivityTotalVo.setOrderMoney(new BigDecimal("0")); + totalActivityTotalVo.setCycleMoney(new BigDecimal("0")); + totalActivityTotalVo.setExperienceMoney(new BigDecimal("0")); + totalActivityTotalVo.setServiceMoney(new BigDecimal("0")); + totalActivityTotalVo.setOrderJoinPerson(0); + totalActivityTotalVo.setOrderPerson(0); + totalActivityTotalVo.setCyclePerson(0); + totalActivityTotalVo.setExperiencePerson(0); + totalActivityTotalVo.setServicePerson(0); + totalActivityTotalVo.setOrderTotalKey(new String[0]); + totalActivityTotalVo.setOrderTotalValue(new Integer[0]); + totalActivityTotalVo.setOrderMoneyValue(new BigDecimal[0]); + totalActivityTotalVo.setGoodsTypeTotalList(Lists.newArrayList()); + totalActivityTotalVo.setGoodsTypeMoneyList(Lists.newArrayList()); + totalActivityTotalVo.setActivityRankList(Lists.newArrayList()); + totalActivityTotalVo.setShopSalesRankKey(new String[0]); + totalActivityTotalVo.setShopSalesRankValue(new BigDecimal[0]); + totalActivityTotalVo.setActivitySalesRankList(Lists.newArrayList()); + totalActivityTotalVo.setJoinMemberTotalKey(new String[0]); + totalActivityTotalVo.setJoinMemberTotalValue(new Integer[0]); + totalActivityTotalVo.setGetMemberTotalKey(new String[0]); + totalActivityTotalVo.setGetMemberTotalValue(new Integer[0]); List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); if(mgtBasePlatformDto.getShopId()!=null){ shopIdList = new ArrayList<>(); @@ -3499,7 +3695,10 @@ } mgtBasePlatformDto.setShopIdList(shopIdList); //获取基础统计 - MgtPlTotalActivityTotalVo totalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto); + MgtPlTotalActivityTotalVo mgtTotalActivityTotalVo = orderMapper.getPlTotalActivityTotal(mgtBasePlatformDto); + totalActivityTotalVo.setOrderTotal(mgtTotalActivityTotalVo.getOrderTotal()); + totalActivityTotalVo.setOrderMoney(mgtTotalActivityTotalVo.getOrderMoney()); + totalActivityTotalVo.setOrderJoinPerson(mgtTotalActivityTotalVo.getOrderJoinPerson()); //获客人数 MgtPlTotalActivityTotalVo totalActivityMemberTotalVo = orderMapper.getPlTotalActivityMemberTotal(mgtBasePlatformDto); totalActivityTotalVo.setOrderPerson(totalActivityMemberTotalVo.getOrderPerson()); @@ -3634,26 +3833,30 @@ Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); //商户活动次数排名 - List<MgtMapBigTotalVo> shopActivityRank = orderMapper.listPlTotalShopActivityRank(mgtBasePlatformDto); + List<MgtMapIntTotalVo> shopActivityRank = orderMapper.listPlTotalShopActivityRank(mgtBasePlatformDto); if (shopActivityRank != null && shopActivityRank.size() > 0) { - shopActivityRank = bigListRemoveNull(shopActivityRank); - for(MgtMapBigTotalVo mgtMapBigTotalVo : shopActivityRank){ - if(shopMap.get(mgtMapBigTotalVo.getMapKey())!=null){ - mgtMapBigTotalVo.setMapKey(shopMap.get(mgtMapBigTotalVo.getMapKey()).getShopName()); + for(MgtMapIntTotalVo mgtMapIntTotalVo : shopActivityRank){ + if(shopMap.get(Long.valueOf(mgtMapIntTotalVo.getMapKey()))!=null){ + mgtMapIntTotalVo.setMapKey(shopMap.get(Long.valueOf(mgtMapIntTotalVo.getMapKey())).getShopName()); } } - totalActivityTotalVo.setShopSalesRankList(shopActivityRank); + totalActivityTotalVo.setActivityRankList(shopActivityRank); } //商户活动销售额排名 List<MgtMapBigTotalVo> shopActivitySalesRank = orderMapper.listPlTotalShopActivitySalesRank(mgtBasePlatformDto); if (shopActivitySalesRank != null && shopActivitySalesRank.size() > 0) { - shopActivitySalesRank = bigListRemoveNull(shopActivitySalesRank); - for(MgtMapBigTotalVo mgtMapBigTotalVo : shopActivitySalesRank){ - if(shopMap.get(mgtMapBigTotalVo.getMapKey())!=null){ - mgtMapBigTotalVo.setMapKey(shopMap.get(mgtMapBigTotalVo.getMapKey()).getShopName()); + String[] shopSalesRankKey = new String[shopActivitySalesRank.size()]; + BigDecimal[] shopSalesRankValue = new BigDecimal[shopActivitySalesRank.size()]; + MgtMapBigTotalVo mgtMapBigTotalVo; + for(int i=0;i<shopActivitySalesRank.size();i++){ + mgtMapBigTotalVo = shopActivitySalesRank.get(i); + if(shopMap.get(Long.valueOf(mgtMapBigTotalVo.getMapKey()))!=null){ + shopSalesRankKey[i] = shopMap.get(Long.valueOf(mgtMapBigTotalVo.getMapKey())).getShopName(); } + shopSalesRankValue[i] = mgtMapBigTotalVo.getMapValue(); } - totalActivityTotalVo.setShopSalesRankList(shopActivitySalesRank); + totalActivityTotalVo.setShopSalesRankKey(shopSalesRankKey); + totalActivityTotalVo.setShopSalesRankValue(shopSalesRankValue); } //活动销售额排名 List<MgtMapBigTotalVo> activitySalesRank = orderMapper.listPlTotalActivitySalesRank(mgtBasePlatformDto); @@ -3667,8 +3870,8 @@ List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData(); mgtBasePlatformDto.setUserIdList(userIdList); } - //参与人数 - List<MgtMapIntTotalVo> joinList = orderMapper.getMgtActivityMemberTotal(mgtBasePlatformDto); + //参与人数 2023-09-06 另开接口 + /*List<MgtMapIntTotalVo> joinList = orderMapper.getMgtActivityMemberTotal(mgtBasePlatformDto); // 将查询结果转为Map Map<String, Integer> mgtMapIntTotalVoMap = new HashMap<>(); if (joinList != null && !joinList.isEmpty()) { @@ -3711,7 +3914,7 @@ getMemberTotalValue[i] = (value != null) ? value : 0; } totalActivityTotalVo.setGetMemberTotalKey(getMemberTotalKey); - totalActivityTotalVo.setGetMemberTotalValue(getMemberTotalValue); + totalActivityTotalVo.setGetMemberTotalValue(getMemberTotalValue);*/ return totalActivityTotalVo; } @@ -3741,6 +3944,10 @@ mgtBasePlatformDto.setUserIdList(userIdList); } List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); + if(mgtBasePlatformDto.getShopId()!=null){ + shopIdList = new ArrayList<>(); + shopIdList.add(mgtBasePlatformDto.getShopId()); + } mgtBasePlatformDto.setShopIdList(shopIdList); MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); //日期全部时固定为5天 @@ -3801,6 +4008,10 @@ mgtBasePlatformDto.setUserIdList(userIdList); } List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData(); + if(mgtBasePlatformDto.getShopId()!=null){ + shopIdList = new ArrayList<>(); + shopIdList.add(mgtBasePlatformDto.getShopId()); + } mgtBasePlatformDto.setShopIdList(shopIdList); MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo(); //日期全部时固定为5天 @@ -5365,6 +5576,7 @@ } } + @GlobalTransactional(rollbackFor = Exception.class) private void autoTimeCancelOrder(Order order) { String orderId = order.getOrderId(); order.setOrderStatus(0); diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml index d954cea..ea50139 100644 --- a/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml @@ -41,9 +41,10 @@ mchKey: J8v9JDHKJYDHW9bdk30o2bdjy6z9mn1A platformTyMacId: 1650744551 subAppId: #服务商模式下的子商户公众账号ID - subMchId: #服务商模式下的子商户号 + subMchId: 1650744551 keyPath: /home/cert/apiclient_cert.p12 apiV3Key: J8v9JDHKJYDHW9bdk30o2bdjy6z9mn1A privateKeyPath: /home/cert/apiclient_key.pem privateCertPath: /home/cert/apiclient_cert.pem + 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 275d6e8..87791e3 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 @@ -115,7 +115,8 @@ tog.goods_picture goodsPicture, tog.goods_total_money goodsRealPrice, tog.cycle_num_flag cycleNumFlag, - tog.service_num serviceNum + tog.service_num serviceNum, + tog.coupon_id couponId 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_id = #{orderId} 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 7de2e4b..fdd3946 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 @@ -291,7 +291,7 @@ toc.order_no orderNo, toc.order_status orderStatus, toc.order_from orderFrom, - toc.activity_id aactivityId, + toc.activity_id activityId, toc.receivable_money receivableMoney, toc.goods_num goodsNum, toc.shop_id shopId, @@ -847,7 +847,7 @@ IFNULL(SUM(tog.goods_receivable_money),0) AS mapValueSecond 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 IN (2,3) + WHERE toc.del_flag = 0 AND toc.order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> @@ -906,12 +906,9 @@ <select id="getTotalActivityTotal" resultType="com.ruoyi.order.domain.vo.MgtTotalActivityTotalVo"> SELECT COUNT(CASE WHEN order_status = 3 THEN order_id ELSE NULL END) orderTotal, - IFNULL(SUM(change_receivable_money),0) orderMoney, + IFNULL(SUM(CASE WHEN order_status = 3 AND pay_type = 1 THEN change_receivable_money WHEN order_status = 3 AND pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) orderMoney, COUNT(DISTINCT user_id) orderJoinPerson - FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) - <if test="param.shopId != null and param.shopId != ''"> - AND shop_id = #{param.shopId} - </if> + FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) AND shop_id = #{param.shopId} <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} </if> @@ -928,10 +925,7 @@ COUNT(DISTINCT toc.user_id) AS mapValueThird FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id - WHERE toc.del_flag = 0 AND order_from = 2 AND order_status IN (2,3) - <if test="param.shopId != null and param.shopId != ''"> - AND toc.shop_id = #{param.shopId} - </if> + WHERE toc.del_flag = 0 AND order_from = 2 AND order_status = 3 AND shop_id = #{param.shopId} <if test="param.startDate!=null and param.startDate!=''"> AND Date(toc.create_time) >= #{param.startDate} </if> @@ -947,10 +941,7 @@ COUNT(DISTINCT order_id) AS mapValueFirst, IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) AS mapValueSecond FROM t_order - WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 - <if test="param.shopId != null and param.shopId != ''"> - AND shop_id = #{param.shopId} - </if> + WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 AND shop_id = #{param.shopId} <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} </if> @@ -1297,6 +1288,9 @@ IFNULL(SUM(CASE WHEN order_status = 3 AND pay_type = 1 THEN change_receivable_money WHEN order_status = 3 AND pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) orderMoney, COUNT(DISTINCT user_id) orderJoinPerson FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) + <if test="param.shopId != null and param.shopId != ''"> + AND shop_id = #{param.shopId} + </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1304,7 +1298,7 @@ </foreach> </if> <if test="param.activityId!=null and param.activityId!=''"> - AND toc.activity_id = #{param.activityId} + AND activity_id = #{param.activityId} </if> <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} @@ -1323,6 +1317,12 @@ 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 = 2 AND toc.order_status = 3 AND toc.new_member_flag = 1 + <if test="param.activityId!=null and param.activityId!=''"> + AND toc.activity_id = #{param.activityId} + </if> + <if test="param.shopId != null and param.shopId != ''"> + AND toc.shop_id = #{param.shopId} + </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1345,10 +1345,7 @@ COUNT(DISTINCT CASE WHEN tog.goods_type = 2 THEN toc.user_id ELSE NULL END) servicePerson 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 = 2 AND toc.order_status = 3 AND toc.new_member_flag = 1 - <if test="param.shopId != null and param.shopId != ''"> - AND toc.shop_id = #{param.shopId} - </if> + WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status = 3 AND toc.new_member_flag = 1 AND toc.shop_id = #{param.shopId} <if test="param.startDate!=null and param.startDate!=''"> AND Date(toc.create_time) >= #{param.startDate} </if> @@ -1366,6 +1363,12 @@ 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 = 2 AND order_status = 3 + <if test="param.activityId!=null and param.activityId!=''"> + AND toc.activity_id = #{param.activityId} + </if> + <if test="param.shopId != null and param.shopId != ''"> + AND toc.shop_id = #{param.shopId} + </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1388,6 +1391,12 @@ IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money + online_pay_money ELSE 0 END),0) AS mapValueSecond FROM t_order WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 + <if test="param.activityId!=null and param.activityId!=''"> + AND activity_id = #{param.activityId} + </if> + <if test="param.shopId != null and param.shopId != ''"> + AND shop_id = #{param.shopId} + </if> <if test="param.startDate!=null and param.startDate!=''"> AND Date(create_time) >= #{param.startDate} </if> @@ -1443,12 +1452,15 @@ mapValue ASC </select> - <select id="listPlTotalShopActivityRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapBigTotalVo"> + <select id="listPlTotalShopActivityRank" resultType="com.ruoyi.system.api.domain.vo.MgtMapIntTotalVo"> SELECT shop_id AS mapKey, COUNT(order_id) AS mapValue FROM t_order - WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) + WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 + <if test="param.activityId!=null and param.activityId!=''"> + AND activity_id = #{param.activityId} + </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1470,7 +1482,13 @@ shop_id AS mapKey, IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money+online_pay_money ELSE 0 END),0) AS mapValue FROM t_order - WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) + WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 + <if test="param.activityId!=null and param.activityId!=''"> + AND activity_id = #{param.activityId} + </if> + <if test="param.shopId != null and param.shopId != ''"> + AND shop_id = #{param.shopId} + </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1492,7 +1510,13 @@ activity_name AS mapKey, IFNULL(SUM(CASE WHEN pay_type = 1 THEN change_receivable_money WHEN pay_type = 2 THEN change_receivable_money+online_pay_money ELSE 0 END),0) AS mapValue FROM t_order - WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3) + WHERE del_flag = 0 AND order_from = 2 AND order_status = 3 + <if test="param.activityId!=null and param.activityId!=''"> + AND activity_id = #{param.activityId} + </if> + <if test="param.shopId != null and param.shopId != ''"> + AND shop_id = #{param.shopId} + </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1606,7 +1630,7 @@ IFNULL(SUM(tog.goods_receivable_money),0) AS mapValueSecond 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 IN (2,3) + WHERE toc.del_flag = 0 AND toc.order_status = 3 <if test="param.shopId != null and param.shopId != ''"> AND toc.shop_id = #{param.shopId} </if> @@ -1896,6 +1920,12 @@ FROM t_order toc INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id WHERE toc.order_from = 2 AND toc.new_member_flag = 1 AND toc.order_status = 3 + <if test="param.activityId!=null and param.activityId!=''"> + AND toc.activity_id = #{param.activityId} + </if> + <if test="param.shopId != null and param.shopId != ''"> + AND toc.shop_id = #{param.shopId} + </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1923,7 +1953,7 @@ COUNT(DISTINCT toc.user_id) AS mapValue 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} AND toc.order_from = 2 AND toc.order_status IN (2,3) + WHERE toc.del_flag = 0 AND toc.shop_id = #{param.shopId} AND toc.order_from = 2 AND toc.order_status = 3 <if test="param.activityId !=null and param.activityId != ''"> AND toc.activity_id = #{param.activityId} </if> @@ -1950,6 +1980,12 @@ 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 = 2 AND toc.order_status IN (2,3) + <if test="param.activityId!=null and param.activityId!=''"> + AND toc.activity_id = #{param.activityId} + </if> + <if test="param.shopId != null and param.shopId != ''"> + AND toc.shop_id = #{param.shopId} + </if> <if test="param.shopIdList != null and param.shopIdList.size() > 0"> AND toc.shop_id IN <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")"> @@ -1977,9 +2013,12 @@ COUNT(DISTINCT toc.user_id) AS mapValue 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 = 2 AND toc.order_status IN (2,3) + WHERE toc.del_flag = 0 AND toc.order_from = 2 + <if test="param.shopId == null"> + AND toc.order_status IN (2,3) AND toc.shop_id = #{param.shopId} + </if> <if test="param.shopId != null and param.shopId != ''"> - AND toc.shop_id = #{param.shopId} + AND toc.order_status = 3 AND toc.shop_id = #{param.shopId} </if> <if test="param.userIdList !=null and param.userIdList.size()>0"> AND toc.user_id IN diff --git a/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java b/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java index 87dc868..cf78c3e 100644 --- a/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java +++ b/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java @@ -1,7 +1,7 @@ package com.ruoyi.order; import com.ruoyi.order.service.order.OrderService; -import com.ruoyi.system.api.domain.dto.MgtBasePlatformDto; +import com.ruoyi.system.api.domain.dto.MgtBaseShopDto; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; @@ -26,8 +26,9 @@ @Test public void main() { - MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto(); - orderService.getPlTotalOrderTotal(mgtBasePlatformDto); + MgtBaseShopDto q = new MgtBaseShopDto(); + q.setShopId(31L); + orderService.getTotalOrderTotal(q); } 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 c36aa00..03f7e1e 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 @@ -16,7 +16,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.vo.ShopProportionVo; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.model.QwH5LoginVo; 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 d121d29..257b628 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 @@ -27,6 +27,9 @@ @ApiModelProperty(value = "用户头像") private String userPicture; + @ApiModelProperty(value = "用户岗位") + private String userPosition; + @ApiModelProperty(value = "跟进id") private Long followId; diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java index 73b42b2..1602a18 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopAuthPageVo.java @@ -44,7 +44,7 @@ @ApiModelProperty(value = "签约链接") private String signUrl; - @ApiModelProperty(value = "分账方标记1是0否 0的时候需要添加为分账方") + @ApiModelProperty(value = "分账方标记1是0否 auditStatus=6,accountFlag=0的时候需要添加分账方操作") private Integer accountFlag; } 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 27d192d..3dfafeb 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 @@ -27,6 +27,9 @@ @ApiModelProperty(value = "用户头像") private String userPicture; + @ApiModelProperty(value = "用户岗位") + private String userPosition; + @ApiModelProperty(value = "跟进id") private Long followId; 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 71ed4bd..6cf5642 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 @@ -27,6 +27,9 @@ @ApiModelProperty(value = "用户头像") private String userPicture; + @ApiModelProperty(value = "用户岗位") + private String userPosition; + @ApiModelProperty(value = "跟进id") private Long followId; 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 c9753cb..042b0dc 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 @@ -27,6 +27,9 @@ @ApiModelProperty(value = "用户头像") private String userPicture; + @ApiModelProperty(value = "用户岗位") + private String userPosition; + @ApiModelProperty(value = "跟进id") private Long followId; 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 4e0e998..bac11cf 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 @@ -32,6 +32,7 @@ import com.ruoyi.shop.service.task.ShopTaskService; import com.ruoyi.shop.util.WechatPayUtils; import com.ruoyi.system.api.constant.AppErrorConstant; +import com.ruoyi.system.api.constant.SecurityConstant; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.config.SysTag; import com.ruoyi.system.api.domain.poji.member.Member; @@ -375,7 +376,11 @@ shopProportion.setDelFlag(0); shopProportion.setShopId(shop.getShopId()); shopProportion.setShopType(shop.getShopType()); - shopProportion.setProportionPercent(new BigDecimal("100.00")); + BigDecimal proportionPercent = redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION); + if(proportionPercent==null){ + proportionPercent = new BigDecimal("30"); + } + shopProportion.setProportionPercent(proportionPercent); shopProportion.setUpdateTime(new Date()); shopProportion.setUpdateUserId(userId); shopProportionService.save(shopProportion); @@ -438,7 +443,7 @@ }else{ shop.setCooperativeFlag(0); } - shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag())); + shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),shop.getAccountFlag())); shop.setUpdateTime(new Date()); shop.setUpdateUserId(mgtTerminateCooperationDto.getUserId()); this.saveOrUpdate(shop); @@ -459,7 +464,7 @@ }else{ shop.setFrozenFlag(0); } - shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag())); + shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),shop.getAccountFlag())); this.saveOrUpdate(shop); } @@ -470,13 +475,13 @@ * @param * @return Integer */ - private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag){ + private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag,Integer accountFlag){ Integer shopStatus = 1; if(frozenFlag == 1){ shopStatus = 0; return shopStatus; } - if(authFlag == 0){ + if(authFlag == 0 || accountFlag==0){ shopStatus = 3; return shopStatus; } @@ -1484,7 +1489,7 @@ private void applySuccessUpdateShopStatus(Long shopId){ // 更新商户状态为正常 Shop shop = this.getById(shopId); - Integer shopStatus = handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), 1); + Integer shopStatus = handelShopStatus(shop.getFrozenFlag(), shop.getCooperativeFlag(), 1,shop.getAccountFlag()); LambdaUpdateWrapper<Shop> updateWrapper = Wrappers.lambdaUpdate(); updateWrapper.eq(Shop::getShopId, shopId) .set(Shop::getShopStatus, shopStatus) @@ -1594,7 +1599,7 @@ /** - * @description + * @description 添加分账方 * @author jqs * @date 2023/8/23 9:44 * @param @@ -1612,6 +1617,7 @@ ProfitSharingReceiverResult result = wechatPayUtils.addProfitSharingReceiver(request); if(StringUtils.isNotBlank(result.getAccount())){ shop.setAccountFlag(1); + shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag(),1)); this.saveOrUpdate(shop); } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskRecordServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskRecordServiceImpl.java index 69c25ae..689e28f 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskRecordServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/AgencyTaskRecordServiceImpl.java @@ -15,13 +15,16 @@ import com.ruoyi.shop.mapper.task.AgencyTaskRecordMapper; import com.ruoyi.shop.service.task.AgencyTaskRecordService; import com.ruoyi.shop.service.task.TaskFileService; -import com.ruoyi.system.api.domain.poji.sys.SysUser; -import com.ruoyi.system.api.service.RemoteUserService; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; +import com.ruoyi.system.api.service.RemoteConfigService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -42,7 +45,7 @@ private TaskFileService taskFileService; @Resource - private RemoteUserService remoteUserService; + private RemoteConfigService remoteConfigService; /** * * @param page @@ -117,13 +120,24 @@ List<FileDto> video = new ArrayList<>(); List<FileDto> audio = new ArrayList<>(); Long userId; - SysUser sysUser; + SysStaff sysStaff; + HashSet<Long> userIdSet = new HashSet<>(); + for(MgtAgencyTaskRecordPageVo mgtAgencyTaskRecordPageVo : mgtAgencyTaskRecordPageVoList){ + userIdSet.add(mgtAgencyTaskRecordPageVo.getUserId()); + } + List<Long> useIdList = new ArrayList<>(userIdSet); + List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData(); + Map<Long,SysStaff> sysStaffMap = sysStaffList.stream() + .collect(Collectors.toMap(SysStaff::getUserId, Function.identity())); for(MgtAgencyTaskRecordPageVo mgtAgencyTaskRecordPageVo : mgtAgencyTaskRecordPageVoList){ //获取任务用户信息 userId = mgtAgencyTaskRecordPageVo.getUserId(); - sysUser = remoteUserService.getSysUser(userId).getData(); - mgtAgencyTaskRecordPageVo.setUserName(sysUser.getNickName()); - mgtAgencyTaskRecordPageVo.setUserPicture(sysUser.getAvatar()); + sysStaff = sysStaffMap.get(userId); + if(sysStaff!=null){ + mgtAgencyTaskRecordPageVo.setUserName(sysStaff.getStaffName()); + mgtAgencyTaskRecordPageVo.setUserPicture(sysStaff.getStaffAvatar()); + mgtAgencyTaskRecordPageVo.setUserPosition(sysStaff.getStaffPost()); + } //获取任务详情文件 followId = mgtAgencyTaskRecordPageVo.getFollowId(); taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1); @@ -185,13 +199,24 @@ List<FileDto> video = new ArrayList<>(); List<FileDto> audio = new ArrayList<>(); Long userId; - SysUser sysUser; + SysStaff sysStaff; + HashSet<Long> userIdSet = new HashSet<>(); + for(StaffAgencyTaskRecordPageVo staffAgencyTaskRecordPageVo : agencyTaskRecordPageVoList){ + userIdSet.add(staffAgencyTaskRecordPageVo.getUserId()); + } + List<Long> useIdList = new ArrayList<>(userIdSet); + List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData(); + Map<Long,SysStaff> sysStaffMap = sysStaffList.stream() + .collect(Collectors.toMap(SysStaff::getUserId, Function.identity())); for(StaffAgencyTaskRecordPageVo staffAgencyTaskRecordPageVo : agencyTaskRecordPageVoList){ //获取任务用户信息 userId = staffAgencyTaskRecordPageVo.getUserId(); - sysUser = remoteUserService.getSysUser(userId).getData(); - staffAgencyTaskRecordPageVo.setUserName(sysUser.getNickName()); - staffAgencyTaskRecordPageVo.setUserPicture(sysUser.getAvatar()); + sysStaff = sysStaffMap.get(userId); + if(sysStaff!=null){ + staffAgencyTaskRecordPageVo.setUserName(sysStaff.getStaffName()); + staffAgencyTaskRecordPageVo.setUserPicture(sysStaff.getStaffAvatar()); + staffAgencyTaskRecordPageVo.setUserPosition(sysStaff.getStaffPost()); + } //获取任务详情文件 followId = staffAgencyTaskRecordPageVo.getFollowId(); taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1); diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskRecordServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskRecordServiceImpl.java index c10086e..ff4827b 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskRecordServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/ShopTaskRecordServiceImpl.java @@ -8,17 +8,23 @@ import com.ruoyi.shop.domain.pojo.task.ShopTaskRecord; import com.ruoyi.shop.domain.pojo.task.TaskFile; import com.ruoyi.shop.domain.vo.MgtShopTaskRecordPageVo; +import com.ruoyi.shop.domain.vo.StaffAgencyTaskRecordPageVo; import com.ruoyi.shop.domain.vo.StaffMyShopTaskRecordPageVo; import com.ruoyi.shop.mapper.task.ShopTaskRecordMapper; import com.ruoyi.shop.service.task.ShopTaskRecordService; import com.ruoyi.shop.service.task.TaskFileService; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.domain.poji.sys.SysUser; +import com.ruoyi.system.api.service.RemoteConfigService; import com.ruoyi.system.api.service.RemoteUserService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Map; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -39,7 +45,7 @@ private TaskFileService taskFileService; @Resource - private RemoteUserService remoteUserService; + private RemoteConfigService remoteConfigService; /** * 平台分页获取平台跟进任务 @@ -55,13 +61,24 @@ List<FileDto> video = new ArrayList<>(); List<FileDto> audio = new ArrayList<>(); Long userId; - SysUser sysUser; + SysStaff sysStaff; + HashSet<Long> userIdSet = new HashSet<>(); + for(MgtShopTaskRecordPageVo mgtShopTaskRecordPageVo : mgtShopTaskRecordPageVoList){ + userIdSet.add(mgtShopTaskRecordPageVo.getUserId()); + } + List<Long> useIdList = new ArrayList<>(userIdSet); + List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData(); + Map<Long,SysStaff> sysStaffMap = sysStaffList.stream() + .collect(Collectors.toMap(SysStaff::getUserId, Function.identity())); for(MgtShopTaskRecordPageVo mgtShopTaskRecordPageVo : mgtShopTaskRecordPageVoList){ //获取任务用户信息 userId = mgtShopTaskRecordPageVo.getUserId(); - sysUser = remoteUserService.getSysUser(userId).getData(); - mgtShopTaskRecordPageVo.setUserName(sysUser.getNickName()); - mgtShopTaskRecordPageVo.setUserPicture(sysUser.getAvatar()); + sysStaff = sysStaffMap.get(userId); + if(sysStaff!=null){ + mgtShopTaskRecordPageVo.setUserName(sysStaff.getStaffName()); + mgtShopTaskRecordPageVo.setUserPicture(sysStaff.getStaffAvatar()); + mgtShopTaskRecordPageVo.setUserPosition(sysStaff.getStaffPost()); + } //获取任务详情文件 followId = mgtShopTaskRecordPageVo.getFollowId(); taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1); @@ -123,13 +140,24 @@ List<FileDto> video = new ArrayList<>(); List<FileDto> audio = new ArrayList<>(); Long userId; - SysUser sysUser; + SysStaff sysStaff; + HashSet<Long> userIdSet = new HashSet<>(); + for(StaffMyShopTaskRecordPageVo staffMyShopTaskRecordPageVo : myShopTaskRecordPageVoList){ + userIdSet.add(staffMyShopTaskRecordPageVo.getUserId()); + } + List<Long> useIdList = new ArrayList<>(userIdSet); + List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData(); + Map<Long,SysStaff> sysStaffMap = sysStaffList.stream() + .collect(Collectors.toMap(SysStaff::getUserId, Function.identity())); for(StaffMyShopTaskRecordPageVo staffMyShopTaskRecordPageVo : myShopTaskRecordPageVoList){ //获取任务用户信息 userId = staffMyShopTaskRecordPageVo.getUserId(); - sysUser = remoteUserService.getSysUser(userId).getData(); - staffMyShopTaskRecordPageVo.setUserName(sysUser.getNickName()); - staffMyShopTaskRecordPageVo.setUserPicture(sysUser.getAvatar()); + sysStaff = sysStaffMap.get(userId); + if(sysStaff!=null){ + staffMyShopTaskRecordPageVo.setUserName(sysStaff.getStaffName()); + staffMyShopTaskRecordPageVo.setUserPicture(sysStaff.getStaffAvatar()); + staffMyShopTaskRecordPageVo.setUserPosition(sysStaff.getStaffPost()); + } //获取任务详情文件 followId = staffMyShopTaskRecordPageVo.getFollowId(); taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1); @@ -191,13 +219,24 @@ List<FileDto> video = new ArrayList<>(); List<FileDto> audio = new ArrayList<>(); Long userId; - SysUser sysUser; + SysStaff sysStaff; + HashSet<Long> userIdSet = new HashSet<>(); + for(StaffMyShopTaskRecordPageVo staffMyShopTaskRecordPageVo : myShopTaskRecordPageVoList){ + userIdSet.add(staffMyShopTaskRecordPageVo.getUserId()); + } + List<Long> useIdList = new ArrayList<>(userIdSet); + List<SysStaff> sysStaffList = remoteConfigService.listSysStaffByIds(useIdList).getData(); + Map<Long,SysStaff> sysStaffMap = sysStaffList.stream() + .collect(Collectors.toMap(SysStaff::getUserId, Function.identity())); for(StaffMyShopTaskRecordPageVo staffMyShopTaskRecordPageVo : myShopTaskRecordPageVoList){ //获取任务用户信息 userId = staffMyShopTaskRecordPageVo.getUserId(); - sysUser = remoteUserService.getSysUser(userId).getData(); - staffMyShopTaskRecordPageVo.setUserName(sysUser.getNickName()); - staffMyShopTaskRecordPageVo.setUserPicture(sysUser.getAvatar()); + sysStaff = sysStaffMap.get(userId); + if(sysStaff!=null){ + staffMyShopTaskRecordPageVo.setUserName(sysStaff.getStaffName()); + staffMyShopTaskRecordPageVo.setUserPicture(sysStaff.getStaffAvatar()); + staffMyShopTaskRecordPageVo.setUserPosition(sysStaff.getStaffPost()); + } //获取任务详情文件 followId = staffMyShopTaskRecordPageVo.getFollowId(); taskFileList = taskFileService.listByFollowIdAndFollowType(followId,1); 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 3e01141..790a4ee 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 @@ -307,7 +307,7 @@ shopTask.setDelFlag(0); shopTask.setShopId(oldShopTask.getShopId()); shopTask.setTaskDate(staffFollowShopTaskDto.getNextTaskDate()); - shopTask.setFollowContent(staffFollowShopTaskDto.getNextTaskContent()); + shopTask.setTaskTitle(staffFollowShopTaskDto.getNextTaskContent()); String nowTimeStr = DateUtils.getDate(); int i = staffFollowShopTaskDto.getNextTaskDate().compareTo(nowTimeStr); if(i>0){ 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 461819f..ad97639 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 @@ -933,8 +933,17 @@ ts.belong_user_id userId, CONCAT('[', GROUP_CONCAT(tst.task_title SEPARATOR '],['), ']') taskTitle FROM t_shop_task tst - INNER JOIN t_shop ts ON tst.shop_id = ts.shop_id + INNER JOIN t_shop ts ON tst.shop_id = ts.shop_id AND ts.del_flag = 0 + WHERE tst.del_flag = 0 AND tst.task_status = 1 AND tst.task_date = CURRENT_DATE + GROUP BY userId + UNION ALL + SELECT + tsru.user_id userId, + CONCAT('[', GROUP_CONCAT(tst.task_content SEPARATOR '],['), ']') taskTitle + FROM t_agency_task tst + INNER JOIN t_shop_rel_user tsru ON tsru.shop_id = tst.shop_id AND tsru.del_flag = 0 WHERE tst.del_flag = 0 AND tst.task_status = 1 AND tst.task_date = CURRENT_DATE GROUP BY userId </select> + </mapper> diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java index e50951a..b9771d8 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/ConfigController.java @@ -8,10 +8,12 @@ import com.ruoyi.system.api.domain.poji.config.DelayTask; import com.ruoyi.system.api.domain.poji.config.SysClassification; import com.ruoyi.system.api.domain.poji.config.SysTag; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.api.domain.vo.AppOtherConfigGetVo; import com.ruoyi.system.api.domain.vo.MgtSysSimpleUserVo; import com.ruoyi.system.domain.dto.MgtCustomConfigDto; import com.ruoyi.system.service.config.*; +import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.sys.ISysUserService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -50,6 +52,9 @@ @Resource private CustomConfigService customConfigService; + + @Resource + private SysStaffService sysStaffService; /** @@ -218,4 +223,18 @@ } return R.ok(servicePhone); } + + /** + * @description 通过id获取员工列表 + * @author jqs + * @date 2023/9/5 10:01 + * @param userIdList + * @return R<List<SysStaff>> + */ + @PostMapping("/listSysStaffByIds") + public R<List<SysStaff>> listSysStaffByIds(@RequestBody List<Long> userIdList) + { + List<SysStaff> sysStaffList = sysStaffService.listSysStaffByIds(userIdList); + return R.ok(sysStaffList); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/StaffController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/StaffController.java index fd3d20e..9624bd0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/StaffController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/conslole/StaffController.java @@ -3,7 +3,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.system.api.domain.dto.MerEditUserDto; -import com.ruoyi.system.domain.pojo.staff.SysStaff; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.staff.SysWxCpService; import io.swagger.annotations.Api; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java index 9c75106..d1084a4 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java @@ -9,7 +9,7 @@ import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.domain.dto.MgtSysStaffImportDto; import com.ruoyi.system.domain.dto.StaffUseSuggestDto; -import com.ruoyi.system.domain.pojo.staff.SysStaff; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.domain.vo.StaffSuggestPageVo; import com.ruoyi.system.domain.vo.StaffUserGetVo; import com.ruoyi.system.service.config.StaffSuggestService; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysDeptController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysDeptController.java index 2e60015..64f6b50 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysDeptController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysDeptController.java @@ -29,6 +29,8 @@ @Autowired private ISysDeptService deptService; + + /** * 获取部门列表 */ diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java index 5f4a90b..801957e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java @@ -22,7 +22,7 @@ import com.ruoyi.system.api.model.QwH5LoginVo; import com.ruoyi.system.api.model.QwUserDetailDto; import com.ruoyi.system.domain.dto.UserMenuEditDto; -import com.ruoyi.system.domain.pojo.staff.SysStaff; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.sys.*; import io.swagger.annotations.ApiOperation; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java index 74bb0f6..42ae119 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java @@ -3,7 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.system.domain.dto.MgtStaffPageDto; -import com.ruoyi.system.domain.pojo.staff.SysStaff; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.domain.vo.DeptSimpleVo; import com.ruoyi.system.domain.vo.MgtDeptStaffListVo; import com.ruoyi.system.domain.vo.MgtStaffPageVo; @@ -57,4 +57,14 @@ * @return List<DeptSimpleVo> */ List<DeptSimpleVo> listSimpleDept(); + + + /** + * @description 通过id获取员工列表 + * @author jqs + * @date 2023/9/5 10:02 + * @param userIdList + * @return List<SysStaff> + */ + List<SysStaff> listSysStaffByIds(@Param("userIdList")List<Long> userIdList); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java index 4a82092..d414340 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java @@ -14,17 +14,21 @@ import com.ruoyi.system.api.domain.dto.MerEditUserDto; import com.ruoyi.system.api.domain.dto.MgtBaseGetDto; import com.ruoyi.system.api.domain.dto.MgtShopStaffEditDto; +import com.ruoyi.system.api.domain.poji.sys.SysDept; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.service.RemoteShopService; import com.ruoyi.system.domain.dto.MgtStaffEditDto; import com.ruoyi.system.domain.dto.MgtStaffPageDto; import com.ruoyi.system.domain.dto.MgtSysStaffImportDto; -import com.ruoyi.system.domain.pojo.staff.SysStaff; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; +import com.ruoyi.system.domain.dto.MgtWxCPStaffDto; import com.ruoyi.system.domain.vo.DeptSimpleVo; import com.ruoyi.system.domain.vo.MgtDeptStaffListVo; import com.ruoyi.system.domain.vo.MgtStaffPageVo; import com.ruoyi.system.mapper.staff.SysStaffMapper; import com.ruoyi.system.service.staff.SysStaffService; +import com.ruoyi.system.service.staff.SysWxCpService; +import com.ruoyi.system.service.sys.ISysDeptService; import com.ruoyi.system.service.sys.ISysUserService; import com.ruoyi.system.util.QiYeUtils; import org.springframework.stereotype.Service; @@ -59,6 +63,12 @@ @Resource private RemoteShopService remoteShopService; + + @Resource + private SysWxCpService sysWxCpService; + + @Resource + private ISysDeptService sysDeptService; /** @@ -126,6 +136,7 @@ queryWrapper.eq(SysStaff::getDelFlag,0); queryWrapper.eq(SysStaff::getStaffMobile,mgtStaffEditDto.getStaffMobile()); SysStaff sysStaffSame = this.getOne(queryWrapper, false); + SysDept sysDept = sysDeptService.selectDeptById(mgtStaffEditDto.getDeptId()); if(StringUtils.isBlank(mgtStaffEditDto.getStaffAvatar())){ mgtStaffEditDto.setStaffAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); } @@ -171,12 +182,25 @@ sysStaff.setHeadFlag(mgtStaffEditDto.getHeadFlag()); sysStaff.setWxUserId(mgtStaffEditDto.getWxUserId()); this.saveOrUpdate(sysStaff); + //同步修改商户员工信息 MgtShopStaffEditDto mgtShopStaffEditDto = new MgtShopStaffEditDto(); mgtShopStaffEditDto.setUserId(sysStaff.getUserId()); mgtShopStaffEditDto.setStaffName(sysStaff.getStaffName()); mgtShopStaffEditDto.setStaffMobile(sysStaff.getStaffMobile()); mgtShopStaffEditDto.setStaffAvatar(sysStaff.getStaffAvatar()); remoteShopService.editMgtShopStaff(mgtShopStaffEditDto); + //如果wxUserId和wxDeptId不为空 同步到企业微信 + if(mgtStaffEditDto.getWxUserId()!=null&&sysDept.getWxDeptId()!=null){ + MgtWxCPStaffDto mgtWxCPStaffDto = new MgtWxCPStaffDto(); + mgtWxCPStaffDto.setWxDeptId(sysDept.getWxDeptId()); + mgtWxCPStaffDto.setWxUserId(mgtStaffEditDto.getWxUserId()); + mgtWxCPStaffDto.setStaffName(mgtStaffEditDto.getStaffName()); + mgtWxCPStaffDto.setStaffMobile(mgtStaffEditDto.getStaffMobile()); + mgtWxCPStaffDto.setStaffPost(mgtStaffEditDto.getStaffPost()); + mgtWxCPStaffDto.setStaffEmail(mgtStaffEditDto.getStaffEmail()); + mgtWxCPStaffDto.setHeadFlag(mgtStaffEditDto.getHeadFlag()); + sysWxCpService.addWxCpStaff(mgtWxCPStaffDto); + } } /** @@ -385,29 +409,6 @@ } } } - /*tagName = entity.getTagName(); - sysTagSame = null; - // 验证是否存在这个用户 - queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(SysTag::getDelFlag, 0) // 查询条件:delFlag=0 - .eq(SysTag::getTagType, tagType) // 查询条件:tagType=mgtTagEditDto的tagType属性 - .eq(SysTag::getTagName, tagName); // 查询条件:tagName=mgtTagEditDto的tagName属性 - // 执行查询,获取与查询条件匹配的SysTag对象 - sysTagSame = this.getOne(queryWrapper); - if (sysTagSame == null) { - sysTagNew = new SysTag(); - sysTagNew.setDelFlag(0); - sysTagNew.setTagType(tagType); - sysTagNew.setTagName(tagName); - sysTagNew.setCreateTime(nowTime); - sysTagNew.setSynFlag(0); - this.save(sysTagNew); - successNum++; - successMsg.append("<br/>" + successNum + "、标签 " + sysTagNew.getTagName() + " 导入成功"); - } else { - failureNum++; - failureMsg.append("<br/>" + failureNum + "、标签 " + sysTagSame.getTagName() + " 已存在"); - }*/ } catch (Exception e) { failureNum++; String msg = "<br/>" + failureNum + "员工 " + entity.getStaffName() + " 导入失败:"; @@ -423,4 +424,16 @@ } return successMsg.toString(); } + + /** + * @description 通过id获取员工列表 + * @author jqs + * @date 2023/9/5 10:02 + * @param userIdList + * @return List<SysStaff> + */ + @Override + public List<SysStaff> listSysStaffByIds(List<Long> userIdList){ + return sysStaffMapper.listSysStaffByIds(userIdList); + } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java index 3cdbef9..afe2cda 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysWxCpServiceImpl.java @@ -5,7 +5,7 @@ import com.ruoyi.system.api.domain.vo.MgtUserTaskMsgVo; import com.ruoyi.system.api.service.RemoteShopService; import com.ruoyi.system.domain.dto.MgtWxCPStaffDto; -import com.ruoyi.system.domain.pojo.staff.SysStaff; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.ruoyi.system.service.staff.SysStaffService; import com.ruoyi.system.service.staff.SysWxCpService; import com.ruoyi.system.service.sys.ISysDeptService; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java index b7b4b70..cbeedb4 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/sys/SysDeptServiceImpl.java @@ -15,6 +15,7 @@ import com.ruoyi.system.mapper.sys.SysDeptMapper; import com.ruoyi.system.mapper.sys.SysDeptMenuMapper; import com.ruoyi.system.mapper.sys.SysRoleMapper; +import com.ruoyi.system.service.staff.SysWxCpService; import com.ruoyi.system.service.sys.ISysDeptService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -40,6 +41,9 @@ @Autowired private SysDeptMenuMapper deptMenuMapper; + + @Autowired + private SysWxCpService sysWxCpService; /** * 查询部门管理数据 @@ -224,6 +228,8 @@ throw new ServiceException("部门停用,不允许新增"); } dept.setAncestors(info.getAncestors() + "," + dept.getParentId()); + Long wxDeptId = sysWxCpService.addWxCpDept(1L,dept.getDeptName()); + dept.setWxDeptId(wxDeptId); //新增部门 int i = deptMapper.insertDept(dept); if(dept.getMenuIds()!=null||dept.getStaffMenuIds()!=null){ @@ -284,6 +290,9 @@ dept.setAncestors(newAncestors); updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors); } + if(oldDept.getWxDeptId()!=null&&!oldDept.getDeptName().equals(dept.getDeptName())){ + sysWxCpService.updateWxCpDept(oldDept.getWxDeptId(),dept.getDeptName()); + } int result = deptMapper.updateDept(dept); if (UserConstants.DEPT_NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()) && !StringUtils.equals("0", dept.getAncestors())) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java index 59c4b1a..d2644ce 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/staff/SysStaffService.java @@ -6,7 +6,7 @@ import com.ruoyi.system.domain.dto.MgtStaffEditDto; import com.ruoyi.system.domain.dto.MgtStaffPageDto; import com.ruoyi.system.domain.dto.MgtSysStaffImportDto; -import com.ruoyi.system.domain.pojo.staff.SysStaff; +import com.ruoyi.system.api.domain.poji.sys.SysStaff; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.domain.vo.MgtDeptStaffListVo; import com.ruoyi.system.domain.vo.MgtStaffPageVo; @@ -106,4 +106,13 @@ * @return void */ String importSysStaff(List<MgtSysStaffImportDto> staffImportDtoList); + + /** + * @description 通过id获取员工列表 + * @author jqs + * @date 2023/9/5 10:02 + * @param userIdList + * @return List<SysStaff> + */ + List<SysStaff> listSysStaffByIds(List<Long> userIdList); } 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 379559d..b0872d7 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 @@ -66,4 +66,12 @@ FROM sys_dept WHERE del_flag = '0' </select> + + <select id="listSysStaffByIds" resultType="com.ruoyi.system.api.domain.poji.sys.SysStaff"> + SELECT * FROM t_sys_staff + WHERE del_flag = 0 AND user_id IN + <foreach collection="userIdList" item="userId" open="(" separator="," close=")"> + #{userId} + </foreach> + </select> </mapper> diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/sys/SysDeptMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/sys/SysDeptMapper.xml index ed7917b..e73332c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/sys/SysDeptMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/sys/SysDeptMapper.xml @@ -137,6 +137,7 @@ <if test="status != null and status != ''">status = #{status},</if> <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> <if test="dataScope != null and dataScope != ''">data_scope = #{dataScope},</if> + <if test="wxDeptId != null and wxDeptId != ''">wx_dept_id = #{wxDeptId},</if> update_time = sysdate() </set> where dept_id = #{deptId} -- Gitblit v1.7.1