diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/IPlayClerkRankingInfoReturnVo.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/IPlayClerkRankingInfoReturnVo.java index 0b13d94..ae51ec1 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/IPlayClerkRankingInfoReturnVo.java +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/IPlayClerkRankingInfoReturnVo.java @@ -97,7 +97,7 @@ public class IPlayClerkRankingInfoReturnVo { /** - * 客户数 + * 用户数 */ private Integer customNumber; diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkRankingInfoEntity.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkRankingInfoEntity.java index cb56b82..dada1a5 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkRankingInfoEntity.java +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkRankingInfoEntity.java @@ -103,7 +103,7 @@ public class PlayClerkRankingInfoEntity extends BaseEntity page = orderInfoService.selectRewardOrderInfoByPage(vo); return R.ok(page); } diff --git a/play-admin/src/main/java/com/starry/admin/modules/order/module/vo/PlayOrderRewardReturnVo.java b/play-admin/src/main/java/com/starry/admin/modules/order/module/vo/PlayOrderRewardReturnVo.java index 131122d..db74757 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/order/module/vo/PlayOrderRewardReturnVo.java +++ b/play-admin/src/main/java/com/starry/admin/modules/order/module/vo/PlayOrderRewardReturnVo.java @@ -1,9 +1,12 @@ package com.starry.admin.modules.order.module.vo; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; -import java.util.Date; +import java.math.BigDecimal; +import java.time.LocalDateTime; /** * 打赏订单查询返回信息 @@ -67,6 +70,33 @@ public class PlayOrderRewardReturnVo { */ private String finalAmount; + /** + * 商品ID + */ + private String commodityId; + + /** + * 商品类型[0:礼物,1:服务] + */ + private String commodityType; + + /** + * 商品名称 + */ + private String commodityName; + /** + * 商品单价 + */ + private BigDecimal commodityPrice; + + /** + * 服务时长 + * + * @since 2024/5/8 16:44 + **/ + private String serviceDuration; + + /** * 打赏留言 @@ -76,6 +106,8 @@ public class PlayOrderRewardReturnVo { /** * 打赏时间 */ - private Date purchaserTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime purchaserTime; } 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 0b7f8e7..2ff7f0e 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 @@ -384,11 +384,23 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl(vo.getPageNum(), vo.getPageSize()), PlayOrderRewardReturnVo.class, lambdaQueryWrapper); @@ -460,8 +472,6 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl selectOrderInfoPage(PlayOrderInfoQueryVo vo) { MPJLambdaWrapper lambdaQueryWrapper = getCommonOrderQueryVo(ConvertUtil.entityToVo(vo, PlayOrderInfoEntity.class)); - - if (StringUtils.isNotBlank(vo.getPurchaserBy())) { lambdaQueryWrapper.eq(PlayOrderInfoEntity::getPurchaserBy, vo.getPurchaserBy()); } 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 3b3dd84..5d9bb38 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 @@ -22,8 +22,7 @@ import com.starry.admin.modules.order.module.vo.PlayOrderStateEditVo; import com.starry.admin.modules.order.service.IPlayOrderEvaluateInfoService; import com.starry.admin.modules.order.service.IPlayOrderInfoService; import com.starry.admin.modules.weichat.entity.*; -import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoQueryVo; -import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoResultVo; +import com.starry.admin.modules.weichat.entity.clerk.*; import com.starry.admin.modules.weichat.entity.gift.PlayClerkGiftReturnVo; import com.starry.admin.modules.weichat.entity.order.PlayClerkOrderDetailsReturnVo; import com.starry.admin.modules.weichat.entity.order.PlayClerkOrderInfoQueryVo; @@ -33,6 +32,7 @@ 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; @@ -94,6 +94,39 @@ public class WxClerkController { private IPlayGiftInfoService giftInfoService; + /** + * 店员获取个人业绩信息 + */ + @ClerkUserLogin + @PostMapping("/user/queryPerformanceInfo") + public R queryPerformanceInfo(@Validated @RequestBody PlayClerkPerformanceInfoQueryVo vo) { + PlayClerkPerformanceInfoReturnVo returnVo = new PlayClerkPerformanceInfoReturnVo(); + returnVo.setClerkId(ThreadLocalRequestDetail.getClerkUserInfo().getId()); + return R.ok(returnVo); + } + + + /** + * 店员获取个人等级信息 + */ + @ClerkUserLogin + @GetMapping("/user/queryLevelInfo") + public R queryLevelInfo() { + PlayClerkLevelInfoReturnVo returnVo = new PlayClerkLevelInfoReturnVo(); + returnVo.setLevelName("金牌"); + returnVo.setLevelId(IdUtils.getUuid()); + 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)); + returnVo.setLevelAndRanking(levelAndRanking); + return R.ok(returnVo); + } + + /** * 店员获取个人信息 */ diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java index b4a76cf..a1a8e0d 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java @@ -194,7 +194,7 @@ public class WxCustomController { } String orderId = IdUtils.getUuid(); // 记录订单信息 - playOrderInfoService.createOrderInfo(orderId, playOrderInfoService.getOrderNo(), "3", "2", "2", "0", "1", "", "0", BigDecimal.ZERO, "", "", "", new BigDecimal(vo.getMoney()), new BigDecimal(vo.getMoney()), BigDecimal.ZERO, userId, vo.getClerkId(), vo.getWeiChatCode(), vo.getRemark()); + playOrderInfoService.createOrderInfo(orderId, playOrderInfoService.getOrderNo(), "3", "2", "2", "0", "1", "", "0", BigDecimal.ZERO, "", "", "0", new BigDecimal(vo.getMoney()), new BigDecimal(vo.getMoney()), BigDecimal.ZERO, userId, vo.getClerkId(), vo.getWeiChatCode(), vo.getRemark()); // // playOrderInfoService.createRewardOrder(orderId, new BigDecimal(vo.getMoney()), new BigDecimal(vo.getMoney()), userId, clerkUserInfo.getId(), vo.getRemark(), vo.getWeiChatCode()); // 顾客减少余额 diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxOauthController.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxOauthController.java index 1eb6d60..b39cebe 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxOauthController.java +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxOauthController.java @@ -189,7 +189,7 @@ public class WxOauthController { // 缓存租户信息 String redisKey = "TENANT_INFO:" + entity.getId(); redisCache.setCacheObject(redisKey, entity.getTenantId()); - JSONObject jsonObject = JSONObject.from(clerkUserInfoService.getVo(new PlayClerkUserInfoEntity())); + JSONObject jsonObject = JSONObject.from(entity); String tokenValue = tokenService.createWxUserToken(entity.getId()); jsonObject.put("tokenValue", TOKEN_PREFIX + tokenValue); jsonObject.put("tokenName", CLERK_USER_LOGIN_TOKEN); diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkLevelAndRankingVo.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkLevelAndRankingVo.java new file mode 100644 index 0000000..3a7c9a7 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkLevelAndRankingVo.java @@ -0,0 +1,38 @@ +package com.starry.admin.modules.weichat.entity.clerk; + +import lombok.Data; + +/** + * @author admin + * @since 2024/6/10 下午8:58 + **/ +@Data +public class PlayClerkLevelAndRankingVo { + + /** + * 等级ID + */ + private String levelName; + + + /** + * 开始名次 + */ + private Integer startRanking; + + /** + * 开始名次 + */ + private Integer endRanking; + + + private Integer sort; + + + public PlayClerkLevelAndRankingVo(String levelName, Integer startRanking, Integer endRanking,Integer sort) { + this.levelName = levelName; + this.startRanking = startRanking; + this.endRanking = endRanking; + this.sort = sort; + } +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkLevelInfoReturnVo.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkLevelInfoReturnVo.java new file mode 100644 index 0000000..2aee813 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkLevelInfoReturnVo.java @@ -0,0 +1,29 @@ +package com.starry.admin.modules.weichat.entity.clerk; + +import lombok.Data; + +import java.util.List; + +/** + * @author admin + * @since 2024/6/10 下午8:58 + **/ +@Data +public class PlayClerkLevelInfoReturnVo { + + /** + * 等级ID + */ + private String levelId; + + + /** + * 等级名称 + */ + private String levelName; + + + private List levelAndRanking; + + +} 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 new file mode 100644 index 0000000..e7631f8 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoQueryVo.java @@ -0,0 +1,27 @@ +package com.starry.admin.modules.weichat.entity.clerk; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +/** + * @author admin + * @since 2024/6/10 下午8:58 + **/ +@Data +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; + + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime 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 new file mode 100644 index 0000000..e8c52db --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoReturnVo.java @@ -0,0 +1,104 @@ +package com.starry.admin.modules.weichat.entity.clerk; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author admin + * @since 2024/6/10 下午8:58 + **/ +@Data +public class PlayClerkPerformanceInfoReturnVo { + + /** + * 连续用户数 + */ + private final Integer continuousCustomNumber = 0; + /** + * 续单比例 + */ + private final BigDecimal orderContinueProportion = BigDecimal.ZERO; + /** + * 订单平均价格 + */ + private final BigDecimal averageUnitPrice = BigDecimal.ZERO; + /** + * 店员ID + */ + private String clerkId; + /** + * 分组名称 + */ + private String groupName = "分组1"; + /** + * 分组名称 + */ + private String levelName = "金牌"; + /** + * 在线时长 + */ + private Integer onlineDuration = 0; + /** + * 订单总数 + */ + private Integer orderNumber = 0; + /** + * 首单数 + */ + private Integer orderFirstNumber = 0; + /** + * 续单数 + */ + private Integer orderContinueNumber = 0; + /** + * 退款单数 + */ + private Integer orderRefundNumber = 0; + /** + * 超时未接单数 + */ + private Integer ordersExpiredNumber = 0; + /** + * 订单金额 + */ + private BigDecimal finalAmount = BigDecimal.ZERO; + /** + * 首单金额 + */ + private BigDecimal orderFirstAmount = BigDecimal.ZERO; + /** + * 续单金额 + */ + private BigDecimal orderTotalAmount = BigDecimal.ZERO; + /** + * 打赏金额 + */ + private BigDecimal orderRewardAmount = BigDecimal.ZERO; + /** + * 退款金额 + */ + private BigDecimal orderRefundAmount = BigDecimal.ZERO; + /** + * 用户数 + */ + private Integer customNumber = 0; + /** + * 续费率 + */ + private BigDecimal orderContinueRechargeProportion = BigDecimal.ZERO; + /** + * 退单率 + */ + private BigDecimal orderChargebackProportion = BigDecimal.ZERO; + /** + * 续客率 + */ + private BigDecimal continuousCustomProportion = BigDecimal.ZERO; + /** + * 店员预计收入 + */ + private BigDecimal estimatedRevenue = BigDecimal.ZERO; + + +}