店员业绩
This commit is contained in:
@@ -50,7 +50,7 @@ public class PlayClerkUserInfoEntity extends BaseEntity<PlayClerkUserInfoEntity>
|
|||||||
/**
|
/**
|
||||||
* 陪聊用户ID
|
* 陪聊用户ID
|
||||||
*/
|
*/
|
||||||
private String playUserId;
|
private String sysUserId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户的标识,对当前公众号唯一
|
* 用户的标识,对当前公众号唯一
|
||||||
|
|||||||
@@ -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.entity.PlayClerkUserReturnVo;
|
||||||
import com.starry.admin.modules.clerk.module.vo.PlayClerkUnsettledWagesInfoQueryVo;
|
import com.starry.admin.modules.clerk.module.vo.PlayClerkUnsettledWagesInfoQueryVo;
|
||||||
import com.starry.admin.modules.clerk.module.vo.PlayClerkUnsettledWagesInfoReturnVo;
|
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.PlayClerkUserLoginResponseVo;
|
||||||
import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoQueryVo;
|
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.PlayClerkUserInfoResultVo;
|
||||||
@@ -25,6 +26,12 @@ import java.util.List;
|
|||||||
public interface IPlayClerkUserInfoService extends IService<PlayClerkUserInfoEntity> {
|
public interface IPlayClerkUserInfoService extends IService<PlayClerkUserInfoEntity> {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据分组ID查询店员列表
|
||||||
|
*
|
||||||
|
* @param groupId 分组ID
|
||||||
|
* @return 店员列表
|
||||||
|
*/
|
||||||
List<PlayClerkUserInfoEntity> selecyByGroupId(String groupId);
|
List<PlayClerkUserInfoEntity> selecyByGroupId(String groupId);
|
||||||
/**
|
/**
|
||||||
* 查询当前租户店员总数
|
* 查询当前租户店员总数
|
||||||
@@ -125,6 +132,17 @@ public interface IPlayClerkUserInfoService extends IService<PlayClerkUserInfoEnt
|
|||||||
*/
|
*/
|
||||||
IPage<PlayClerkUnsettledWagesInfoReturnVo> listUnsettledWagesByPage(PlayClerkUnsettledWagesInfoQueryVo vo);
|
IPage<PlayClerkUnsettledWagesInfoReturnVo> listUnsettledWagesByPage(PlayClerkUnsettledWagesInfoQueryVo vo);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 管理端分页查询店员信息
|
||||||
|
*
|
||||||
|
* @param vo 店员查询实体
|
||||||
|
* @return 店员列表
|
||||||
|
*/
|
||||||
|
|
||||||
|
IPage<PlayClerkUserInfoEntity> selectByPage(PlayClerkPerformanceInfoQueryVo vo);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 管理端分页查询店员信息
|
* 管理端分页查询店员信息
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -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.follow.service.IPlayCustomFollowInfoService;
|
||||||
import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity;
|
import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity;
|
||||||
import com.starry.admin.modules.order.service.IPlayOrderInfoService;
|
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.PlayClerkUserLoginResponseVo;
|
||||||
import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoQueryVo;
|
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.PlayClerkUserInfoResultVo;
|
||||||
@@ -260,6 +261,24 @@ public class PlayClerkUserInfoServiceImpl extends ServiceImpl<PlayClerkUserInfoM
|
|||||||
return this.baseMapper.selectJoinPage(new Page<>(vo.getPageNum(), vo.getPageSize()), PlayClerkUnsettledWagesInfoReturnVo.class, lambdaQueryWrapper);
|
return this.baseMapper.selectJoinPage(new Page<>(vo.getPageNum(), vo.getPageSize()), PlayClerkUnsettledWagesInfoReturnVo.class, lambdaQueryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPage<PlayClerkUserInfoEntity> selectByPage(PlayClerkPerformanceInfoQueryVo vo) {
|
||||||
|
LambdaQueryWrapper<PlayClerkUserInfoEntity> 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
|
@Override
|
||||||
public IPage<PlayClerkUserReturnVo> selectByPage(PlayClerkUserQueryVo vo) {
|
public IPage<PlayClerkUserReturnVo> selectByPage(PlayClerkUserQueryVo vo) {
|
||||||
MPJLambdaWrapper<PlayClerkUserInfoEntity> lambdaQueryWrapper = new MPJLambdaWrapper<>();
|
MPJLambdaWrapper<PlayClerkUserInfoEntity> lambdaQueryWrapper = new MPJLambdaWrapper<>();
|
||||||
@@ -271,9 +290,6 @@ public class PlayClerkUserInfoServiceImpl extends ServiceImpl<PlayClerkUserInfoM
|
|||||||
if (StrUtil.isNotBlank(vo.getNickname())) {
|
if (StrUtil.isNotBlank(vo.getNickname())) {
|
||||||
lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getNickname, vo.getNickname());
|
lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getNickname, vo.getNickname());
|
||||||
}
|
}
|
||||||
if (StrUtil.isNotBlank(vo.getNickname())) {
|
|
||||||
lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getNickname, vo.getNickname());
|
|
||||||
}
|
|
||||||
if (StrUtil.isNotBlank(vo.getPhone())) {
|
if (StrUtil.isNotBlank(vo.getPhone())) {
|
||||||
lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getPhone, vo.getPhone());
|
lambdaQueryWrapper.eq(PlayClerkUserInfoEntity::getPhone, vo.getPhone());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
package com.starry.admin.modules.personnel.controller;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.starry.admin.modules.personnel.module.vo.PlayPersonnelUserInfoQueryVo;
|
||||||
|
import com.starry.admin.modules.personnel.module.vo.PlayPersonnelUserInfoReturnVo;
|
||||||
|
import com.starry.admin.modules.system.service.SysUserService;
|
||||||
|
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;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 管理员管理Controller
|
||||||
|
*
|
||||||
|
* @author admin
|
||||||
|
* @since 2024-06-14
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/personnel/user")
|
||||||
|
public class PlayPersonnelUserInfoController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysUserService sysUserService;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询管理员管理信息列表
|
||||||
|
*/
|
||||||
|
@PostMapping("/listByPage")
|
||||||
|
public R listByPage(@Validated @RequestBody PlayPersonnelUserInfoQueryVo vo) {
|
||||||
|
IPage<PlayPersonnelUserInfoReturnVo> list = sysUserService.selectByPage(vo);
|
||||||
|
return R.ok(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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<String> addTime;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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.PlayPersonnelGroupInfoQueryVo;
|
||||||
import com.starry.admin.modules.personnel.module.vo.PlayPersonnelGroupInfoReturnVo;
|
import com.starry.admin.modules.personnel.module.vo.PlayPersonnelGroupInfoReturnVo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 店员分组信息Service接口
|
* 店员分组信息Service接口
|
||||||
*
|
*
|
||||||
@@ -21,6 +23,16 @@ public interface IPlayPersonnelGroupInfoService extends IService<PlayPersonnelGr
|
|||||||
*/
|
*/
|
||||||
PlayPersonnelGroupInfoEntity selectPlayClerkGroupInfoById(String id);
|
PlayPersonnelGroupInfoEntity selectPlayClerkGroupInfoById(String id);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询店员分组信息列表
|
||||||
|
*
|
||||||
|
* @return PlayPersonnelGroupInfoReturnVo
|
||||||
|
* @author 杭州世平信息科技有限公司-xuhq
|
||||||
|
* @since 2024/6/14 15:46
|
||||||
|
**/
|
||||||
|
List<PlayPersonnelGroupInfoEntity> selectAll();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询店员分组信息列表
|
* 分页查询店员分组信息列表
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.starry.admin.modules.personnel.service.impl;
|
package com.starry.admin.modules.personnel.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
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.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
@@ -15,6 +16,7 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 店员分组信息Service业务层处理
|
* 店员分组信息Service业务层处理
|
||||||
@@ -38,6 +40,10 @@ public class PlayPersonnelGroupInfoServiceImpl extends ServiceImpl<PlayPersonnel
|
|||||||
return this.baseMapper.selectById(id);
|
return this.baseMapper.selectById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PlayPersonnelGroupInfoEntity> selectAll() {
|
||||||
|
return this.baseMapper.selectList(new LambdaQueryWrapper<>());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<PlayPersonnelGroupInfoReturnVo> selectByPage(PlayPersonnelGroupInfoQueryVo vo) {
|
public IPage<PlayPersonnelGroupInfoReturnVo> selectByPage(PlayPersonnelGroupInfoQueryVo vo) {
|
||||||
|
|||||||
@@ -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<PlayClerkUserInfoEntity> page = clerkUserInfoService.selectByPage(vo);
|
||||||
|
IPage<PlayClerkPerformanceInfoReturnVo> voPage = page.convert(u -> {
|
||||||
|
List<PlayClerkLevelInfoEntity> clerkLevelInfoEntity = playClerkLevelInfoService.selectAll();
|
||||||
|
String startTime = vo.getEndOrderTime() != null ? vo.getEndOrderTime().get(0) : "";
|
||||||
|
String endTime = vo.getEndOrderTime() != null ? vo.getEndOrderTime().get(1) : "";
|
||||||
|
List<PlayOrderInfoEntity> orderInfoEntities = playOrderInfoService.clerkSelectOrderInfoList(u.getId(), startTime, endTime);
|
||||||
|
List<PlayPersonnelGroupInfoEntity> groupInfoEntities = playPersonnelGroupInfoService.selectAll();
|
||||||
|
return playClerkPerformanceService.getClerkPerformanceInfo(u, orderInfoEntities, clerkLevelInfoEntity, groupInfoEntities);
|
||||||
|
});
|
||||||
|
return R.ok(voPage);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<String> endOrderTime;
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.starry.admin.modules.weichat.entity.clerk;
|
package com.starry.admin.modules.statistics.module.vo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -16,14 +16,24 @@ public class PlayClerkPerformanceInfoReturnVo {
|
|||||||
* 店员ID
|
* 店员ID
|
||||||
*/
|
*/
|
||||||
private String clerkId;
|
private String clerkId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店员昵称
|
||||||
|
*/
|
||||||
|
private String clerkNickname;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 店员昵称
|
||||||
|
*/
|
||||||
|
private String clerkSex;
|
||||||
/**
|
/**
|
||||||
* 分组名称
|
* 分组名称
|
||||||
*/
|
*/
|
||||||
private String groupName = "分组1";
|
private String groupName = "";
|
||||||
/**
|
/**
|
||||||
* 分组名称
|
* 分组名称
|
||||||
*/
|
*/
|
||||||
private String levelName = "金牌";
|
private String levelName = "";
|
||||||
/**
|
/**
|
||||||
* 在线时长
|
* 在线时长
|
||||||
*/
|
*/
|
||||||
@@ -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<PlayOrderInfoEntity> orderInfoEntities, List<PlayClerkLevelInfoEntity> clerkLevelInfoEntity, List<PlayPersonnelGroupInfoEntity> groupInfoEntities);
|
||||||
|
}
|
||||||
@@ -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<PlayOrderInfoEntity> orderInfoEntities, List<PlayClerkLevelInfoEntity> clerkLevelInfoEntities, List<PlayPersonnelGroupInfoEntity> groupInfoEntities) {
|
||||||
|
|
||||||
|
Set<String> 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,13 +4,16 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
|||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.starry.common.domain.BaseEntity;
|
import com.starry.common.domain.BaseEntity;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -82,6 +85,11 @@ public class SysUserEntity extends BaseEntity<SysUserEntity> {
|
|||||||
@ApiModelProperty(value = "租户id")
|
@ApiModelProperty(value = "租户id")
|
||||||
private String tenantId;
|
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;
|
private String clerkId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package com.starry.admin.modules.system.mapper;
|
package com.starry.admin.modules.system.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
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.entity.SysUserEntity;
|
||||||
import com.starry.admin.modules.system.vo.RoleUserResultVo;
|
import com.starry.admin.modules.system.vo.RoleUserResultVo;
|
||||||
import com.starry.admin.modules.system.vo.SysUserQueryVo;
|
import com.starry.admin.modules.system.vo.SysUserQueryVo;
|
||||||
@@ -20,7 +20,7 @@ import org.apache.ibatis.annotations.Param;
|
|||||||
* @since 2021-09-03
|
* @since 2021-09-03
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface SysUserMapper extends BaseMapper<SysUserEntity> {
|
public interface SysUserMapper extends MPJBaseMapper<SysUserEntity> {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package com.starry.admin.modules.system.service;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
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.entity.SysUserEntity;
|
||||||
import com.starry.admin.modules.system.vo.*;
|
import com.starry.admin.modules.system.vo.*;
|
||||||
|
|
||||||
@@ -41,6 +43,15 @@ public interface SysUserService extends IService<SysUserEntity> {
|
|||||||
*/
|
*/
|
||||||
SysUserEntity selectUserByUserName(String userName);
|
SysUserEntity selectUserByUserName(String userName);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询用户
|
||||||
|
*
|
||||||
|
* @param vo 查询参数
|
||||||
|
* @return page
|
||||||
|
*/
|
||||||
|
IPage<PlayPersonnelUserInfoReturnVo> selectByPage(PlayPersonnelUserInfoQueryVo vo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取列表。分页
|
* 获取列表。分页
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -7,8 +7,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
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.module.entity.PlayClerkUserInfoEntity;
|
||||||
import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService;
|
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.SysRoleEntity;
|
||||||
import com.starry.admin.modules.system.entity.SysUserEntity;
|
import com.starry.admin.modules.system.entity.SysUserEntity;
|
||||||
import com.starry.admin.modules.system.entity.SysUserRoleEntity;
|
import com.starry.admin.modules.system.entity.SysUserRoleEntity;
|
||||||
@@ -57,6 +62,36 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
|
|||||||
private IPlayClerkUserInfoService clerkUserInfoService;
|
private IPlayClerkUserInfoService clerkUserInfoService;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPage<PlayPersonnelUserInfoReturnVo> selectByPage(PlayPersonnelUserInfoQueryVo vo) {
|
||||||
|
MPJLambdaWrapper<SysUserEntity> 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
|
@Override
|
||||||
public SysUserEntity register(SysUserEntity user) {
|
public SysUserEntity register(SysUserEntity user) {
|
||||||
SysUserEntity newSysUserEntity = new SysUserEntity();
|
SysUserEntity newSysUserEntity = new SysUserEntity();
|
||||||
@@ -233,7 +268,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity
|
|||||||
user.setUserId(IdUtils.getUuid());
|
user.setUserId(IdUtils.getUuid());
|
||||||
user.setSuperAdmin(false);
|
user.setSuperAdmin(false);
|
||||||
this.save(user);
|
this.save(user);
|
||||||
clerkUserInfoService.update(null, Wrappers.lambdaUpdate(PlayClerkUserInfoEntity.class).eq(PlayClerkUserInfoEntity::getId, param.getClerkId()).set(PlayClerkUserInfoEntity::getPlayUserId, user.getUserId()));
|
clerkUserInfoService.update(null, Wrappers.lambdaUpdate(PlayClerkUserInfoEntity.class).eq(PlayClerkUserInfoEntity::getId, param.getClerkId()).set(PlayClerkUserInfoEntity::getSysUserId, user.getUserId()));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,8 +19,14 @@ import com.starry.admin.modules.order.module.vo.PlayOrderEvaluateQueryVo;
|
|||||||
import com.starry.admin.modules.order.module.vo.PlayOrderStateEditVo;
|
import com.starry.admin.modules.order.module.vo.PlayOrderStateEditVo;
|
||||||
import com.starry.admin.modules.order.service.IPlayOrderEvaluateInfoService;
|
import com.starry.admin.modules.order.service.IPlayOrderEvaluateInfoService;
|
||||||
import com.starry.admin.modules.order.service.IPlayOrderInfoService;
|
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.service.IPlayClerkPerformanceService;
|
||||||
import com.starry.admin.modules.weichat.entity.*;
|
import com.starry.admin.modules.weichat.entity.*;
|
||||||
import com.starry.admin.modules.weichat.entity.clerk.*;
|
import com.starry.admin.modules.weichat.entity.clerk.PlayClerkLevelAndRankingVo;
|
||||||
|
import com.starry.admin.modules.weichat.entity.clerk.PlayClerkLevelInfoReturnVo;
|
||||||
|
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.gift.PlayClerkGiftReturnVo;
|
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.PlayClerkOrderDetailsReturnVo;
|
||||||
import com.starry.admin.modules.weichat.entity.order.PlayClerkOrderInfoQueryVo;
|
import com.starry.admin.modules.weichat.entity.order.PlayClerkOrderInfoQueryVo;
|
||||||
@@ -36,9 +42,11 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -87,61 +95,24 @@ public class WxClerkController {
|
|||||||
@Resource
|
@Resource
|
||||||
private IPlayGiftInfoService giftInfoService;
|
private IPlayGiftInfoService giftInfoService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IPlayClerkPerformanceService playClerkPerformanceService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IPlayPersonnelGroupInfoService playPersonnelGroupInfoService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 店员获取个人业绩信息
|
* 店员获取个人业绩信息
|
||||||
*/
|
*/
|
||||||
@ClerkUserLogin
|
@ClerkUserLogin
|
||||||
@PostMapping("/user/queryPerformanceInfo")
|
@PostMapping("/user/queryPerformanceInfo")
|
||||||
public R queryPerformanceInfo(@Validated @RequestBody PlayClerkPerformanceInfoQueryVo vo) {
|
public R queryPerformanceInfo(@Validated @RequestBody PlayClerkWxPerformanceInfoQueryVo vo) {
|
||||||
PlayClerkUserInfoEntity entity = clerkUserInfoService.selectById(ThreadLocalRequestDetail.getClerkUserInfo().getId());
|
PlayClerkUserInfoEntity entity = clerkUserInfoService.selectById(ThreadLocalRequestDetail.getClerkUserInfo().getId());
|
||||||
PlayClerkLevelInfoEntity level = playClerkLevelInfoService.selectPlayClerkLevelInfoById(entity.getLevelId());
|
List<PlayClerkLevelInfoEntity> clerkLevelInfoEntity = playClerkLevelInfoService.selectAll();
|
||||||
List<PlayOrderInfoEntity> orderInfoEntities = playOrderInfoService.clerkSelectOrderInfoList(entity.getId(), vo.getStartTime(), vo.getEndTime());
|
List<PlayOrderInfoEntity> orderInfoEntities = playOrderInfoService.clerkSelectOrderInfoList(entity.getId(), vo.getStartTime(), vo.getEndTime());
|
||||||
Set<String> customIds = new HashSet<>();
|
List<PlayPersonnelGroupInfoEntity> groupInfoEntities = playPersonnelGroupInfoService.selectAll();
|
||||||
int orderContinueNumber = 0;
|
return R.ok(playClerkPerformanceService.getClerkPerformanceInfo(entity, orderInfoEntities, clerkLevelInfoEntity, groupInfoEntities));
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user