This commit is contained in:
admin
2024-06-11 07:58:45 +08:00
parent 0e2b7ef42b
commit 9aaecccfdc
12 changed files with 287 additions and 13 deletions

View File

@@ -97,7 +97,7 @@ public class IPlayClerkRankingInfoReturnVo {
/**
* 户数
* 户数
*/
private Integer customNumber;

View File

@@ -103,7 +103,7 @@ public class PlayClerkRankingInfoEntity extends BaseEntity<PlayClerkRankingInfoE
private BigDecimal orderContinueProportion = BigDecimal.ZERO;
/**
* 户数
* 户数
*/
private Integer customNumber;

View File

@@ -7,6 +7,7 @@ import com.starry.admin.modules.order.service.IPlayOrderInfoService;
import com.starry.common.annotation.Log;
import com.starry.common.enums.BusinessType;
import com.starry.common.result.R;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -33,7 +34,7 @@ public class PlayOrderRewardInfoController {
@Log(title = "查询打赏订单", businessType = BusinessType.INSERT)
@PostMapping("/listByPage")
public R queryRewardOrder(@RequestBody PlayOrderRewardQueryVo vo) {
public R queryRewardOrder(@Validated @RequestBody PlayOrderRewardQueryVo vo) {
IPage<PlayOrderRewardReturnVo> page = orderInfoService.selectRewardOrderInfoByPage(vo);
return R.ok(page);
}

View File

@@ -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;
}

View File

@@ -384,11 +384,23 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
lambdaQueryWrapper.selectAll(PlayOrderInfoEntity.class);
// 查询顾客表
lambdaQueryWrapper.selectAs(PlayCustomUserInfoEntity::getId, "customId").selectAs(PlayCustomUserInfoEntity::getAvatar, "customAvatar").selectAs(PlayCustomUserInfoEntity::getNickname, "customNickname");
lambdaQueryWrapper.leftJoin(PlayCustomUserInfoEntity.class, PlayCustomUserInfoEntity::getId, PlayOrderInfoEntity::getPurchaserBy).leftJoin(PlayClerkUserInfoEntity.class, PlayClerkUserInfoEntity::getId, PlayOrderInfoEntity::getAcceptBy);
// 查询陪聊表
lambdaQueryWrapper.selectAs(PlayClerkUserInfoEntity::getId, "clerkId").selectAs(PlayClerkUserInfoEntity::getAvatar, "clerkAvatar").selectAs(PlayClerkUserInfoEntity::getNickname, "clerkNickname");
// 子表
lambdaQueryWrapper.leftJoin(PlayCustomUserInfoEntity.class, PlayCustomUserInfoEntity::getId, PlayOrderInfoEntity::getPurchaserBy).leftJoin(PlayClerkUserInfoEntity.class, PlayClerkUserInfoEntity::getId, PlayOrderInfoEntity::getAcceptBy);
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getPlaceType, "2");
if (StrUtil.isNotBlank(vo.getRewardType())) {
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getRewardType, vo.getRewardType());
}
if (StrUtil.isNotBlank(vo.getAcceptBy())) {
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getAcceptBy, vo.getAcceptBy());
}
if (StrUtil.isNotBlank(vo.getPurchaserBy())) {
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getPurchaserBy, vo.getPurchaserBy());
}
if (vo.getPurchaserTime() != null && vo.getPurchaserTime().size() == 2) {
lambdaQueryWrapper.between(PlayOrderInfoEntity::getPurchaserTime, vo.getPurchaserTime().get(0), vo.getPurchaserTime().get(1));
}
lambdaQueryWrapper.orderByDesc(PlayOrderInfoEntity::getPurchaserTime);
return this.baseMapper.selectJoinPage(new Page<>(vo.getPageNum(), vo.getPageSize()), PlayOrderRewardReturnVo.class, lambdaQueryWrapper);
@@ -460,8 +472,6 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl<PlayOrderInfoMapper, P
@Override
public IPage<PlayOrderInfoReturnVo> selectOrderInfoPage(PlayOrderInfoQueryVo vo) {
MPJLambdaWrapper<PlayOrderInfoEntity> lambdaQueryWrapper = getCommonOrderQueryVo(ConvertUtil.entityToVo(vo, PlayOrderInfoEntity.class));
if (StringUtils.isNotBlank(vo.getPurchaserBy())) {
lambdaQueryWrapper.eq(PlayOrderInfoEntity::getPurchaserBy, vo.getPurchaserBy());
}

View File

@@ -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<PlayClerkLevelAndRankingVo> 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);
}
/**
* 店员获取个人信息
*/

View File

@@ -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());
// 顾客减少余额

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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<PlayClerkLevelAndRankingVo> levelAndRanking;
}

View File

@@ -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;
}

View File

@@ -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;
}