diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkUserInfoEntity.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkUserInfoEntity.java index eb8f7e5..6e68660 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkUserInfoEntity.java +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/module/entity/PlayClerkUserInfoEntity.java @@ -50,7 +50,7 @@ public class PlayClerkUserInfoEntity extends BaseEntity /** * 陪聊用户ID */ - private String playUserId; + private String sysUserId; /** * 用户的标识,对当前公众号唯一 diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkUserInfoService.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkUserInfoService.java index be3eafd..64d5f78 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkUserInfoService.java +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/IPlayClerkUserInfoService.java @@ -8,6 +8,7 @@ import com.starry.admin.modules.clerk.module.entity.PlayClerkUserQueryVo; import com.starry.admin.modules.clerk.module.entity.PlayClerkUserReturnVo; import com.starry.admin.modules.clerk.module.vo.PlayClerkUnsettledWagesInfoQueryVo; import com.starry.admin.modules.clerk.module.vo.PlayClerkUnsettledWagesInfoReturnVo; +import com.starry.admin.modules.statistics.module.vo.PlayClerkPerformanceInfoQueryVo; import com.starry.admin.modules.weichat.entity.PlayClerkUserLoginResponseVo; import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoQueryVo; import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoResultVo; @@ -25,6 +26,12 @@ import java.util.List; public interface IPlayClerkUserInfoService extends IService { + /** + * 根据分组ID查询店员列表 + * + * @param groupId 分组ID + * @return 店员列表 + */ List selecyByGroupId(String groupId); /** * 查询当前租户店员总数 @@ -125,6 +132,17 @@ public interface IPlayClerkUserInfoService extends IService listUnsettledWagesByPage(PlayClerkUnsettledWagesInfoQueryVo vo); + + /** + * 管理端分页查询店员信息 + * + * @param vo 店员查询实体 + * @return 店员列表 + */ + + IPage selectByPage(PlayClerkPerformanceInfoQueryVo vo); + + /** * 管理端分页查询店员信息 * diff --git a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java index 818bc1c..20b322a 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/clerk/service/impl/PlayClerkUserInfoServiceImpl.java @@ -20,6 +20,7 @@ import com.starry.admin.modules.follow.module.entity.PlayCustomFollowInfoEntity; import com.starry.admin.modules.follow.service.IPlayCustomFollowInfoService; import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity; import com.starry.admin.modules.order.service.IPlayOrderInfoService; +import com.starry.admin.modules.statistics.module.vo.PlayClerkPerformanceInfoQueryVo; import com.starry.admin.modules.weichat.entity.PlayClerkUserLoginResponseVo; import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoQueryVo; import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoResultVo; @@ -260,6 +261,24 @@ public class PlayClerkUserInfoServiceImpl extends ServiceImpl(vo.getPageNum(), vo.getPageSize()), PlayClerkUnsettledWagesInfoReturnVo.class, lambdaQueryWrapper); } + @Override + public IPage selectByPage(PlayClerkPerformanceInfoQueryVo vo) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + if (StrUtil.isNotBlank(vo.getClerkId())) { + lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getId, vo.getClerkId()); + } + if (StrUtil.isNotBlank(vo.getGroupId())) { + lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getGroupId, vo.getGroupId()); + } + if (StrUtil.isNotBlank(vo.getSex())) { + lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getSex, vo.getSex()); + } + if (StrUtil.isNotBlank(vo.getListingState())) { + lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getListingState, vo.getListingState()); + } + return this.baseMapper.selectPage(new Page<>(vo.getPageNum(), vo.getPageSize()), lambdaQueryWrapper); + } + @Override public IPage selectByPage(PlayClerkUserQueryVo vo) { MPJLambdaWrapper lambdaQueryWrapper = new MPJLambdaWrapper<>(); @@ -271,9 +290,6 @@ public class PlayClerkUserInfoServiceImpl extends ServiceImpl list = sysUserService.selectByPage(vo); + return R.ok(list); + } + + +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/personnel/module/vo/PlayPersonnelUserInfoQueryVo.java b/play-admin/src/main/java/com/starry/admin/modules/personnel/module/vo/PlayPersonnelUserInfoQueryVo.java new file mode 100644 index 0000000..8e2f7d2 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/personnel/module/vo/PlayPersonnelUserInfoQueryVo.java @@ -0,0 +1,42 @@ +package com.starry.admin.modules.personnel.module.vo; + +import com.starry.common.domain.BasePageEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author admin + * @since 2024/6/15 下午9:42 + **/ +@EqualsAndHashCode(callSuper = true) +@Data +public class PlayPersonnelUserInfoQueryVo extends BasePageEntity { + + + /** + * 用户ID + */ + private String sysUserId; + + + /** + * 用户名称 + */ + private String userCode; + + /** + * 角色类型[0:用户;1:店员;2:组长] + */ + private String ruleType; + + + /** + * 用户ID + */ + private String userId; + + + private List addTime; +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/personnel/module/vo/PlayPersonnelUserInfoReturnVo.java b/play-admin/src/main/java/com/starry/admin/modules/personnel/module/vo/PlayPersonnelUserInfoReturnVo.java new file mode 100644 index 0000000..235db13 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/personnel/module/vo/PlayPersonnelUserInfoReturnVo.java @@ -0,0 +1,34 @@ +package com.starry.admin.modules.personnel.module.vo; + +import lombok.Data; + +/** + * @author admin + * @since 2024/6/15 下午9:42 + **/ +@Data +public class PlayPersonnelUserInfoReturnVo { + /** + * 店员ID + */ + private String clerkId; + + /** + * 店员昵称 + */ + private String clerkNickname; + + /** + * 店员头像 + */ + private String clerkAvatar; + + private String userId; + + private String userCode; + + /** + * 创建时间 + */ + private String addTime; +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/personnel/service/IPlayPersonnelGroupInfoService.java b/play-admin/src/main/java/com/starry/admin/modules/personnel/service/IPlayPersonnelGroupInfoService.java index 3676573..f7bc9ce 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/personnel/service/IPlayPersonnelGroupInfoService.java +++ b/play-admin/src/main/java/com/starry/admin/modules/personnel/service/IPlayPersonnelGroupInfoService.java @@ -6,6 +6,8 @@ import com.starry.admin.modules.personnel.module.entity.PlayPersonnelGroupInfoEn import com.starry.admin.modules.personnel.module.vo.PlayPersonnelGroupInfoQueryVo; import com.starry.admin.modules.personnel.module.vo.PlayPersonnelGroupInfoReturnVo; +import java.util.List; + /** * 店员分组信息Service接口 * @@ -21,6 +23,16 @@ public interface IPlayPersonnelGroupInfoService extends IService selectAll(); + /** * 分页查询店员分组信息列表 * diff --git a/play-admin/src/main/java/com/starry/admin/modules/personnel/service/impl/PlayPersonnelGroupInfoServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/personnel/service/impl/PlayPersonnelGroupInfoServiceImpl.java index e7ae12f..3ede7b8 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/personnel/service/impl/PlayPersonnelGroupInfoServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/personnel/service/impl/PlayPersonnelGroupInfoServiceImpl.java @@ -1,6 +1,7 @@ package com.starry.admin.modules.personnel.service.impl; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -15,6 +16,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Arrays; +import java.util.List; /** * 店员分组信息Service业务层处理 @@ -38,6 +40,10 @@ public class PlayPersonnelGroupInfoServiceImpl extends ServiceImpl selectAll() { + return this.baseMapper.selectList(new LambdaQueryWrapper<>()); + } @Override public IPage selectByPage(PlayPersonnelGroupInfoQueryVo vo) { diff --git a/play-admin/src/main/java/com/starry/admin/modules/statistics/controller/PlayClerkPerformanceController.java b/play-admin/src/main/java/com/starry/admin/modules/statistics/controller/PlayClerkPerformanceController.java new file mode 100644 index 0000000..af7dd02 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/statistics/controller/PlayClerkPerformanceController.java @@ -0,0 +1,64 @@ +package com.starry.admin.modules.statistics.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.starry.admin.modules.clerk.module.entity.PlayClerkLevelInfoEntity; +import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity; +import com.starry.admin.modules.clerk.service.IPlayClerkLevelInfoService; +import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService; +import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity; +import com.starry.admin.modules.order.service.IPlayOrderInfoService; +import com.starry.admin.modules.personnel.module.entity.PlayPersonnelGroupInfoEntity; +import com.starry.admin.modules.personnel.service.IPlayPersonnelGroupInfoService; +import com.starry.admin.modules.statistics.module.vo.PlayClerkPerformanceInfoQueryVo; +import com.starry.admin.modules.statistics.module.vo.PlayClerkPerformanceInfoReturnVo; +import com.starry.admin.modules.statistics.service.IPlayClerkPerformanceService; +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; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 店员业绩查询对 + * + * @author admin + * @since 2024/6/15 下午3:15 + **/ +@RestController +@RequestMapping("/statistics/performance") +public class PlayClerkPerformanceController { + + @Resource + private IPlayClerkUserInfoService clerkUserInfoService; + + @Resource + private IPlayOrderInfoService playOrderInfoService; + + @Resource + private IPlayClerkLevelInfoService playClerkLevelInfoService; + + @Resource + private IPlayPersonnelGroupInfoService playPersonnelGroupInfoService; + + @Resource + private IPlayClerkPerformanceService playClerkPerformanceService; + + + @PostMapping("/listByPage") + public R listByPage(@Validated @RequestBody PlayClerkPerformanceInfoQueryVo vo) { + IPage page = clerkUserInfoService.selectByPage(vo); + IPage voPage = page.convert(u -> { + List clerkLevelInfoEntity = playClerkLevelInfoService.selectAll(); + String startTime = vo.getEndOrderTime() != null ? vo.getEndOrderTime().get(0) : ""; + String endTime = vo.getEndOrderTime() != null ? vo.getEndOrderTime().get(1) : ""; + List orderInfoEntities = playOrderInfoService.clerkSelectOrderInfoList(u.getId(), startTime, endTime); + List groupInfoEntities = playPersonnelGroupInfoService.selectAll(); + return playClerkPerformanceService.getClerkPerformanceInfo(u, orderInfoEntities, clerkLevelInfoEntity, groupInfoEntities); + }); + return R.ok(voPage); + } +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoQueryVo.java b/play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoQueryVo.java new file mode 100644 index 0000000..06266d7 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoQueryVo.java @@ -0,0 +1,45 @@ +package com.starry.admin.modules.statistics.module.vo; + +import com.starry.common.domain.BasePageEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author admin + * @since 2024/6/10 下午8:58 + **/ +@EqualsAndHashCode(callSuper = true) +@Data +public class PlayClerkPerformanceInfoQueryVo extends BasePageEntity { + + /** + * 分组ID + */ + private String groupId; + + + /** + * 店员ID + */ + private String clerkId; + + + /** + * 店员性别 + */ + private String sex; + + + /** + * 店员上架状态 + */ + private String listingState; + + + /** + * 完成订单时间 + */ + private List endOrderTime; +} 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/statistics/module/vo/PlayClerkPerformanceInfoReturnVo.java similarity index 88% rename from play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoReturnVo.java rename to play-admin/src/main/java/com/starry/admin/modules/statistics/module/vo/PlayClerkPerformanceInfoReturnVo.java index 4b46aa1..14acb2f 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/statistics/module/vo/PlayClerkPerformanceInfoReturnVo.java @@ -1,4 +1,4 @@ -package com.starry.admin.modules.weichat.entity.clerk; +package com.starry.admin.modules.statistics.module.vo; import lombok.Data; @@ -16,14 +16,24 @@ public class PlayClerkPerformanceInfoReturnVo { * 店员ID */ private String clerkId; + + /** + * 店员昵称 + */ + private String clerkNickname; + + /** + * 店员昵称 + */ + private String clerkSex; /** * 分组名称 */ - private String groupName = "分组1"; + private String groupName = ""; /** * 分组名称 */ - private String levelName = "金牌"; + private String levelName = ""; /** * 在线时长 */ diff --git a/play-admin/src/main/java/com/starry/admin/modules/statistics/service/IPlayClerkPerformanceService.java b/play-admin/src/main/java/com/starry/admin/modules/statistics/service/IPlayClerkPerformanceService.java new file mode 100644 index 0000000..4ca7355 --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/statistics/service/IPlayClerkPerformanceService.java @@ -0,0 +1,28 @@ +package com.starry.admin.modules.statistics.service; + +import com.starry.admin.modules.clerk.module.entity.PlayClerkLevelInfoEntity; +import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity; +import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity; +import com.starry.admin.modules.personnel.module.entity.PlayPersonnelGroupInfoEntity; +import com.starry.admin.modules.statistics.module.vo.PlayClerkPerformanceInfoReturnVo; + +import java.util.List; + +/** + * @author admin + * @since 2024/6/15 下午3:29 + **/ +public interface IPlayClerkPerformanceService { + + + /** + * 根据店员订单ID,生成店员业绩信息 + * + * @param userInfo 店员信息 + * @param orderInfoEntities 店员订单列表 + * @param clerkLevelInfoEntity 店员等级信息 + * @param groupInfoEntities 店员分组信息 + * @return 业绩信息 + */ + PlayClerkPerformanceInfoReturnVo getClerkPerformanceInfo(PlayClerkUserInfoEntity userInfo, List orderInfoEntities, List clerkLevelInfoEntity, List groupInfoEntities); +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/statistics/service/impl/PlayClerkPerformanceServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/statistics/service/impl/PlayClerkPerformanceServiceImpl.java new file mode 100644 index 0000000..7de703d --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/statistics/service/impl/PlayClerkPerformanceServiceImpl.java @@ -0,0 +1,84 @@ +package com.starry.admin.modules.statistics.service.impl; + +import com.starry.admin.modules.clerk.module.entity.PlayClerkLevelInfoEntity; +import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity; +import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity; +import com.starry.admin.modules.personnel.module.entity.PlayPersonnelGroupInfoEntity; +import com.starry.admin.modules.statistics.module.vo.PlayClerkPerformanceInfoReturnVo; +import com.starry.admin.modules.statistics.service.IPlayClerkPerformanceService; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +/** + * @author admin + * @since 2024/6/15 下午3:29 + **/ +@Service +public class PlayClerkPerformanceServiceImpl implements IPlayClerkPerformanceService { + + @Override + public PlayClerkPerformanceInfoReturnVo getClerkPerformanceInfo(PlayClerkUserInfoEntity userInfo, List orderInfoEntities, List clerkLevelInfoEntities, List groupInfoEntities) { + + 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(userInfo.getId()); + returnVo.setClerkNickname(userInfo.getNickname()); + returnVo.setClerkSex(userInfo.getSex()); + for (PlayClerkLevelInfoEntity infoEntity : clerkLevelInfoEntities) { + if (infoEntity.getId().equals(userInfo.getLevelId())) { + returnVo.setLevelName(infoEntity.getName()); + } + } + for (PlayPersonnelGroupInfoEntity infoEntity : groupInfoEntities) { + if (infoEntity.getId().equals(userInfo.getGroupId())) { + returnVo.setGroupName(infoEntity.getGroupName()); + } + } + 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 returnVo; + } +} diff --git a/play-admin/src/main/java/com/starry/admin/modules/system/entity/SysUserEntity.java b/play-admin/src/main/java/com/starry/admin/modules/system/entity/SysUserEntity.java index 4afb240..d69c101 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/system/entity/SysUserEntity.java +++ b/play-admin/src/main/java/com/starry/admin/modules/system/entity/SysUserEntity.java @@ -4,13 +4,16 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import com.starry.common.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -82,6 +85,11 @@ public class SysUserEntity extends BaseEntity { @ApiModelProperty(value = "租户id") private String tenantId; + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private LocalDateTime addTime; + private String clerkId; /** diff --git a/play-admin/src/main/java/com/starry/admin/modules/system/mapper/SysUserMapper.java b/play-admin/src/main/java/com/starry/admin/modules/system/mapper/SysUserMapper.java index a4a8cdf..2380fc1 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/system/mapper/SysUserMapper.java +++ b/play-admin/src/main/java/com/starry/admin/modules/system/mapper/SysUserMapper.java @@ -1,9 +1,9 @@ package com.starry.admin.modules.system.mapper; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.base.MPJBaseMapper; import com.starry.admin.modules.system.entity.SysUserEntity; import com.starry.admin.modules.system.vo.RoleUserResultVo; import com.starry.admin.modules.system.vo.SysUserQueryVo; @@ -20,7 +20,7 @@ import org.apache.ibatis.annotations.Param; * @since 2021-09-03 */ @Mapper -public interface SysUserMapper extends BaseMapper { +public interface SysUserMapper extends MPJBaseMapper { /** diff --git a/play-admin/src/main/java/com/starry/admin/modules/system/service/SysUserService.java b/play-admin/src/main/java/com/starry/admin/modules/system/service/SysUserService.java index 5b6dbbb..eb481f3 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/system/service/SysUserService.java +++ b/play-admin/src/main/java/com/starry/admin/modules/system/service/SysUserService.java @@ -2,6 +2,8 @@ package com.starry.admin.modules.system.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.starry.admin.modules.personnel.module.vo.PlayPersonnelUserInfoQueryVo; +import com.starry.admin.modules.personnel.module.vo.PlayPersonnelUserInfoReturnVo; import com.starry.admin.modules.system.entity.SysUserEntity; import com.starry.admin.modules.system.vo.*; @@ -41,6 +43,15 @@ public interface SysUserService extends IService { */ SysUserEntity selectUserByUserName(String userName); + + /** + * 分页查询用户 + * + * @param vo 查询参数 + * @return page + */ + IPage selectByPage(PlayPersonnelUserInfoQueryVo vo); + /** * 获取列表。分页 * diff --git a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysUserServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysUserServiceImpl.java index 0782f52..05e0677 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysUserServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/system/service/impl/SysUserServiceImpl.java @@ -7,8 +7,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity; import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService; +import com.starry.admin.modules.personnel.module.entity.PlayPersonnelGroupInfoEntity; +import com.starry.admin.modules.personnel.module.entity.PlayPersonnelWaiterInfoEntity; +import com.starry.admin.modules.personnel.module.vo.PlayPersonnelUserInfoQueryVo; +import com.starry.admin.modules.personnel.module.vo.PlayPersonnelUserInfoReturnVo; import com.starry.admin.modules.system.entity.SysRoleEntity; import com.starry.admin.modules.system.entity.SysUserEntity; import com.starry.admin.modules.system.entity.SysUserRoleEntity; @@ -57,6 +62,36 @@ public class SysUserServiceImpl extends ServiceImpl selectByPage(PlayPersonnelUserInfoQueryVo vo) { + MPJLambdaWrapper lambdaWrapper = new MPJLambdaWrapper<>(); + lambdaWrapper.selectAll(SysUserEntity.class); + //店员表 + lambdaWrapper.selectAs(PlayClerkUserInfoEntity::getId, "clerkId").selectAs(PlayClerkUserInfoEntity::getAvatar, "clerkAvatar").selectAs(PlayClerkUserInfoEntity::getNickname, "clerkNickname"); + lambdaWrapper.leftJoin(PlayClerkUserInfoEntity.class, PlayClerkUserInfoEntity::getId, SysUserEntity::getUserId); + if (StrUtil.isNotBlank(vo.getSysUserId())) { + lambdaWrapper.eq(SysUserEntity::getUserId, vo.getSysUserId()); + } + if (StrUtil.isNotBlank(vo.getUserCode())) { + lambdaWrapper.eq(SysUserEntity::getUserCode, vo.getUserCode()); + } + if (StrUtil.isNotBlank(vo.getRuleType())) { + if ("0".equals(vo.getRuleType())) { + lambdaWrapper.leftJoin(PlayClerkUserInfoEntity.class, PlayClerkUserInfoEntity::getSysUserId, SysUserEntity::getUserId); + } else if ("1".equals(vo.getRuleType())) { + lambdaWrapper.leftJoin(PlayPersonnelWaiterInfoEntity.class, PlayPersonnelWaiterInfoEntity::getSysUserId, SysUserEntity::getUserId); + } else if ("2".equals(vo.getRuleType())) { + lambdaWrapper.leftJoin(PlayPersonnelGroupInfoEntity.class, PlayPersonnelGroupInfoEntity::getSysUserId, SysUserEntity::getUserId); + } + } + if (vo.getAddTime() != null && vo.getAddTime().size() == 2) { + lambdaWrapper.between(SysUserEntity::getAddTime, vo.getAddTime().get(0), vo.getAddTime().get(1)); + } + + + return this.baseMapper.selectJoinPage(new Page<>(vo.getPageNum(), vo.getPageSize()), PlayPersonnelUserInfoReturnVo.class, lambdaWrapper); + } + @Override public SysUserEntity register(SysUserEntity user) { SysUserEntity newSysUserEntity = new SysUserEntity(); @@ -233,7 +268,7 @@ public class SysUserServiceImpl extends ServiceImpl clerkLevelInfoEntity = playClerkLevelInfoService.selectAll(); 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); + List groupInfoEntities = playPersonnelGroupInfoService.selectAll(); + return R.ok(playClerkPerformanceService.getClerkPerformanceInfo(entity, orderInfoEntities, clerkLevelInfoEntity, groupInfoEntities)); } diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/PlayClerkWxPerformanceInfoQueryVo.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/PlayClerkWxPerformanceInfoQueryVo.java new file mode 100644 index 0000000..c04ebaf --- /dev/null +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/PlayClerkWxPerformanceInfoQueryVo.java @@ -0,0 +1,28 @@ +package com.starry.admin.modules.weichat.entity; + +import lombok.Data; + +/** + * @author admin + * @since 2024/6/10 下午8:58 + **/ +@Data +public class PlayClerkWxPerformanceInfoQueryVo { + + /** + * 店员ID + */ + private String clerkId; + + + /** + * 订单开始时间 + */ + private String startTime; + + + /** + * 订单结束时间 + */ + private String endTime; +} 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 deleted file mode 100644 index deec26c..0000000 --- a/play-admin/src/main/java/com/starry/admin/modules/weichat/entity/clerk/PlayClerkPerformanceInfoQueryVo.java +++ /dev/null @@ -1,23 +0,0 @@ -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; - - - private String startTime; - - - private String endTime; -}