From 4c2565b1153e1e16accabce7e3370c6c51af9978 Mon Sep 17 00:00:00 2001 From: admin <1752476835@qq.com> Date: Tue, 11 Jun 2024 12:01:03 +0800 Subject: [PATCH] fix --- .../order/service/IPlayOrderInfoService.java | 9 +++ .../impl/PlayOrderInfoServiceImpl.java | 8 ++ .../weichat/controller/WxClerkController.java | 81 ++++++++++++++----- .../PlayClerkPerformanceInfoQueryVo.java | 8 +- .../PlayClerkPerformanceInfoReturnVo.java | 27 ++++--- 5 files changed, 95 insertions(+), 38 deletions(-) diff --git a/play-admin/src/main/java/com/starry/admin/modules/order/service/IPlayOrderInfoService.java b/play-admin/src/main/java/com/starry/admin/modules/order/service/IPlayOrderInfoService.java index 695b3db..0989edc 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/order/service/IPlayOrderInfoService.java +++ b/play-admin/src/main/java/com/starry/admin/modules/order/service/IPlayOrderInfoService.java @@ -237,6 +237,15 @@ public interface IPlayOrderInfoService extends IService { */ IPage clerkSelectOrderInfoByPage(PlayClerkOrderInfoQueryVo vo); + /** + * 店员查询自己一段时间内的订单 + * + * @param clerkId 店员ID + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 订单列表 + */ + List clerkSelectOrderInfoList(String clerkId, String startTime, String endTime); /** * 顾客查询订单详情 diff --git a/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderInfoServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderInfoServiceImpl.java index 2ff7f0e..f18efe3 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderInfoServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderInfoServiceImpl.java @@ -513,6 +513,14 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl clerkSelectOrderInfoList(String clerkId, String startTime, String endTime) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(PlayOrderInfoEntity::getAcceptBy, clerkId); + lambdaQueryWrapper.between(PlayOrderInfoEntity::getPurchaserTime, startTime, endTime); + return this.baseMapper.selectList(lambdaQueryWrapper); + } + @Override public IPage clerkSelectOrderInfoByPage(PlayClerkOrderInfoQueryVo vo) { MPJLambdaWrapper lambdaQueryWrapper = getCommonOrderQueryVo(ConvertUtil.entityToVo(vo, PlayOrderInfoEntity.class)); diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxClerkController.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxClerkController.java index 5d9bb38..695ed2c 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxClerkController.java +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxClerkController.java @@ -6,10 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.starry.admin.common.aspect.ClerkUserLogin; import com.starry.admin.common.conf.ThreadLocalRequestDetail; import com.starry.admin.common.exception.CustomException; -import com.starry.admin.modules.clerk.module.entity.PlayClerkCommodityEntity; -import com.starry.admin.modules.clerk.module.entity.PlayClerkDataReviewInfoEntity; -import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity; -import com.starry.admin.modules.clerk.module.entity.PlayClerkUserReviewInfoEntity; +import com.starry.admin.modules.clerk.module.entity.*; import com.starry.admin.modules.clerk.module.vo.PlayClerkCommodityEditVo; import com.starry.admin.modules.clerk.module.vo.PlayClerkCommodityQueryVo; import com.starry.admin.modules.clerk.service.*; @@ -17,6 +14,7 @@ import com.starry.admin.modules.clerk.service.impl.PlayClerkUserInfoServiceImpl; import com.starry.admin.modules.clerk.service.impl.PlayClerkUserReviewInfoServiceImpl; import com.starry.admin.modules.gift.module.entity.PlayGiftInfoEntity; import com.starry.admin.modules.gift.service.IPlayGiftInfoService; +import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity; import com.starry.admin.modules.order.module.vo.PlayOrderEvaluateQueryVo; import com.starry.admin.modules.order.module.vo.PlayOrderStateEditVo; import com.starry.admin.modules.order.service.IPlayOrderEvaluateInfoService; @@ -32,18 +30,15 @@ import com.starry.admin.utils.SecurityUtils; import com.starry.common.redis.RedisCache; import com.starry.common.result.R; import com.starry.common.utils.ConvertUtil; -import com.starry.common.utils.IdUtils; import com.starry.common.utils.VerificationCodeUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; /** @@ -58,10 +53,12 @@ public class WxClerkController { @Resource RedisCache redisCache; - @Resource private PlayClerkUserInfoServiceImpl playClerkUserInfoService; + @Resource + private IPlayClerkLevelInfoService playClerkLevelInfoService; + @Resource private IPlayClerkUserInfoService clerkUserInfoService; @@ -84,9 +81,6 @@ public class WxClerkController { private IPlayClerkDataReviewInfoService playClerkDataReviewInfoService; - @Resource - private IPlayClerkLevelInfoService playClerkLevelInfoService; - @Resource private IPlayClerkClassificationInfoService playClerkClassificationInfoService; @@ -100,8 +94,53 @@ public class WxClerkController { @ClerkUserLogin @PostMapping("/user/queryPerformanceInfo") public R queryPerformanceInfo(@Validated @RequestBody PlayClerkPerformanceInfoQueryVo vo) { + PlayClerkUserInfoEntity entity = clerkUserInfoService.selectById(ThreadLocalRequestDetail.getClerkUserInfo().getId()); + PlayClerkLevelInfoEntity level = playClerkLevelInfoService.selectPlayClerkLevelInfoById(entity.getLevelId()); + List orderInfoEntities = playOrderInfoService.clerkSelectOrderInfoList(entity.getId(), vo.getStartTime(), vo.getEndTime()); + Set customIds = new HashSet<>(); + int orderContinueNumber = 0; + int orderRefundNumber = 0; + int ordersExpiredNumber = 0; + BigDecimal finalAmount = BigDecimal.ZERO; + BigDecimal orderFirstAmount = BigDecimal.ZERO; + BigDecimal orderTotalAmount = BigDecimal.ZERO; + BigDecimal orderRewardAmount = BigDecimal.ZERO; + BigDecimal orderRefundAmount = BigDecimal.ZERO; + BigDecimal estimatedRevenue = BigDecimal.ZERO; + for (PlayOrderInfoEntity orderInfoEntity : orderInfoEntities) { + customIds.add(orderInfoEntity.getPurchaserBy()); + finalAmount = finalAmount.add(orderInfoEntity.getFinalAmount()); + if ("1".equals(orderInfoEntity.getFirstOrder())) { + orderFirstAmount = orderFirstAmount.add(orderInfoEntity.getFinalAmount()); + } else { + orderContinueNumber++; + orderTotalAmount = orderTotalAmount.add(orderInfoEntity.getFinalAmount()); + } + if ("2".equals(orderInfoEntity.getPlaceType())) { + orderRewardAmount = orderRewardAmount.add(orderInfoEntity.getFinalAmount()); + } + if ("1".equals(orderInfoEntity.getRefundType())) { + orderRefundNumber++; + orderRefundAmount = orderRefundAmount.add(orderInfoEntity.getRefundAmount()); + } + if ("1".equals(orderInfoEntity.getOrdersExpiredState())) { + ordersExpiredNumber++; + } + } PlayClerkPerformanceInfoReturnVo returnVo = new PlayClerkPerformanceInfoReturnVo(); returnVo.setClerkId(ThreadLocalRequestDetail.getClerkUserInfo().getId()); + returnVo.setLevelName(level.getName()); + returnVo.setOrderNumber(orderInfoEntities.size()); + returnVo.setOrderContinueNumber(orderContinueNumber); + returnVo.setOrderRefundNumber(orderRefundNumber); + returnVo.setOrdersExpiredNumber(ordersExpiredNumber); + returnVo.setFinalAmount(finalAmount); + returnVo.setOrderFirstAmount(orderFirstAmount); + returnVo.setOrderTotalAmount(orderTotalAmount); + returnVo.setOrderRewardAmount(orderRewardAmount); + returnVo.setOrderRefundAmount(orderRefundAmount); + returnVo.setCustomNumber(customIds.size()); + returnVo.setEstimatedRevenue(estimatedRevenue); return R.ok(returnVo); } @@ -112,16 +151,18 @@ public class WxClerkController { @ClerkUserLogin @GetMapping("/user/queryLevelInfo") public R queryLevelInfo() { + PlayClerkUserInfoEntity entity = clerkUserInfoService.selectById(ThreadLocalRequestDetail.getClerkUserInfo().getId()); + PlayClerkLevelInfoEntity level = playClerkLevelInfoService.selectPlayClerkLevelInfoById(entity.getLevelId()); PlayClerkLevelInfoReturnVo returnVo = new PlayClerkLevelInfoReturnVo(); - returnVo.setLevelName("金牌"); - returnVo.setLevelId(IdUtils.getUuid()); + returnVo.setLevelName(level.getName()); + returnVo.setLevelId(level.getId()); List levelAndRanking = new ArrayList<>(); - levelAndRanking.add(new PlayClerkLevelAndRankingVo("普通", 19, 150, 5)); - levelAndRanking.add(new PlayClerkLevelAndRankingVo("金牌", 9, 18, 4)); - levelAndRanking.add(new PlayClerkLevelAndRankingVo("镇店", 3, 8, 3)); - levelAndRanking.add(new PlayClerkLevelAndRankingVo("首席", 1, 2, 2)); - levelAndRanking.add(new PlayClerkLevelAndRankingVo("男神", 0, 0, 1)); levelAndRanking.add(new PlayClerkLevelAndRankingVo("女神", 0, 0, 0)); + levelAndRanking.add(new PlayClerkLevelAndRankingVo("男神", 0, 0, 1)); + levelAndRanking.add(new PlayClerkLevelAndRankingVo("首席", 1, 2, 2)); + levelAndRanking.add(new PlayClerkLevelAndRankingVo("镇店", 3, 8, 3)); + levelAndRanking.add(new PlayClerkLevelAndRankingVo("金牌", 9, 18, 4)); + levelAndRanking.add(new PlayClerkLevelAndRankingVo("普通", 19, 150, 5)); returnVo.setLevelAndRanking(levelAndRanking); return R.ok(returnVo); } diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoQueryVo.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoQueryVo.java index e7631f8..deec26c 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoQueryVo.java +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoQueryVo.java @@ -16,12 +16,8 @@ public class PlayClerkPerformanceInfoQueryVo { private String clerkId; - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime startTime; + private String startTime; - @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime endTime; + private String endTime; } diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoReturnVo.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoReturnVo.java index e8c52db..4b46aa1 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoReturnVo.java +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoReturnVo.java @@ -11,18 +11,7 @@ import java.math.BigDecimal; @Data public class PlayClerkPerformanceInfoReturnVo { - /** - * 连续用户数 - */ - private final Integer continuousCustomNumber = 0; - /** - * 续单比例 - */ - private final BigDecimal orderContinueProportion = BigDecimal.ZERO; - /** - * 订单平均价格 - */ - private final BigDecimal averageUnitPrice = BigDecimal.ZERO; + /** * 店员ID */ @@ -83,6 +72,20 @@ public class PlayClerkPerformanceInfoReturnVo { * 用户数 */ private Integer customNumber = 0; + + /** + * 连续用户数 + */ + private final Integer continuousCustomNumber = 0; + /** + * 续单比例 + */ + private final BigDecimal orderContinueProportion = BigDecimal.ZERO; + /** + * 订单平均价格 + */ + private final BigDecimal averageUnitPrice = BigDecimal.ZERO; + /** * 续费率 */