Commit a619bb4d by Wangmin

新增

1.查询所有陪诊员
2.查询陪诊员数据以及当日订单
3.查询陪诊员所有订单
4.切换陪诊员身份
5.冻结/解冻陪诊员账号
parent 34872f46
...@@ -11,6 +11,7 @@ import com.pz.merchant.domain.bo.SetEmployeeWorkingHourBo; ...@@ -11,6 +11,7 @@ import com.pz.merchant.domain.bo.SetEmployeeWorkingHourBo;
import com.pz.merchant.domain.vo.EmployeesListVo; import com.pz.merchant.domain.vo.EmployeesListVo;
import com.pz.merchant.service.ICompanyService; import com.pz.merchant.service.ICompanyService;
import com.pz.merchant.service.IEmployeesService; import com.pz.merchant.service.IEmployeesService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
...@@ -25,42 +26,12 @@ import org.springframework.web.bind.annotation.*; ...@@ -25,42 +26,12 @@ import org.springframework.web.bind.annotation.*;
@Validated @Validated
@RestController("AppCompanyController") @RestController("AppCompanyController")
@RequestMapping("/merchant/app/company") @RequestMapping("/merchant/app/company")
@RequiredArgsConstructor
@SaIgnore @SaIgnore
public class CompanyController extends BaseController { public class CompanyController extends BaseController {
private ICompanyService companyService; private final ICompanyService companyService;
private IEmployeesService employeesService;
@Autowired
@Qualifier("merchantCompanyService")
public void setCompanyService(ICompanyService companyService) {
this.companyService = companyService;
}
@Autowired
@Qualifier("merchantEmployeesService")
public void setEmployeesService(IEmployeesService employeesService) {
this.employeesService = employeesService;
}
/**
* 查询陪诊员列表
*/
@GetMapping("/employee/list")
public TableDataInfo<EmployeesListVo> employeesList(EmployeesListBo bo, PageQuery pageQuery) {
return employeesService.employeesList(bo, pageQuery);
}
/**
* 设置员工工作时间段
*
* @param bo 员工参数信息
* @return 操作结果
*/
@PutMapping("/employee/setWorkHour")
public R<Boolean> setEmployeesWorkHour(@RequestBody @Validated(EditGroup.class) SetEmployeeWorkingHourBo bo) {
return R.ok(employeesService.setEmployeesWorkHours(bo));
}
} }
package com.pz.merchant.controller.applet;
import cn.dev33.satoken.annotation.SaIgnore;
import com.pz.common.core.controller.BaseController;
import com.pz.common.core.domain.PageQuery;
import com.pz.common.core.domain.R;
import com.pz.common.core.page.TableDataInfo;
import com.pz.common.core.validate.EditGroup;
import com.pz.common.helper.LoginHelper;
import com.pz.merchant.domain.bo.EmployeesListBo;
import com.pz.merchant.domain.bo.OrderBo;
import com.pz.merchant.domain.bo.SetEmployeeWorkingHourBo;
import com.pz.merchant.domain.vo.EmployeesListVo;
import com.pz.merchant.domain.vo.OrderInfoVO;
import com.pz.merchant.domain.vo.TodayOrderListVo;
import com.pz.merchant.service.IEmployeesService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
/**
* 商户[小程序]
*
* @author WangMin
* @date 2023-09-11
*/
@Validated
@RequiredArgsConstructor
@RestController("AppEmployeesController")
@RequestMapping("/merchant/app/employees")
public class EmployeesController extends BaseController {
private final IEmployeesService employeesService;
/**
* 查询陪诊员列表
*/
@GetMapping("/list")
public TableDataInfo<EmployeesListVo> employeesList(EmployeesListBo bo, PageQuery pageQuery) {
return employeesService.employeesList(bo, pageQuery);
}
/**
* 设置员工工作时间段
*
* @param bo 员工参数信息
* @return 操作结果
*/
@PutMapping("/setWorkHour")
public R<Boolean> setEmployeesWorkHour(@RequestBody @Validated(EditGroup.class) SetEmployeeWorkingHourBo bo) {
return R.ok(employeesService.setEmployeesWorkHours(bo));
}
/**
* 查询员工详情及今日订单数据
*
* @param emId 员工ID
*/
@GetMapping("/detail")
public R<TodayOrderListVo> getEmployeeTodayData(@NotNull(message = "员工ID不能为空") Integer emId) {
return R.ok(employeesService.queryEmployeesInfo(emId));
}
/**
* 查询员工所有订单
*
* @param bo 筛选条件
* @param pageQuery 分页
* @return 订单列表
*/
@GetMapping("/order/list")
public TableDataInfo<OrderInfoVO> getAllOrders(OrderBo bo, PageQuery pageQuery) {
return employeesService.queryAllOrder(bo, pageQuery);
}
/**
* 切换用户 身份
*
* @param emId 陪诊员ID
* @return 切换用户身份结果
*/
@GetMapping("/switchIdentity")
public R<Boolean> switchIdentity(@NotNull(message = "陪诊员ID不能为空") Integer emId) {
return R.ok(employeesService.switchEmployeeIdentity(emId));
}
/**
* 切换用户状态
*
* @param emId 陪诊员ID
* @return 切换用户状态结果
*/
@GetMapping("/switchStatus")
public R<Boolean> switchStatus(@NotNull(message = "陪诊员ID不能为空") Integer emId) {
return R.ok(employeesService.disableOrRecover(emId));
}
}
...@@ -24,7 +24,7 @@ import com.pz.common.enums.BusinessType; ...@@ -24,7 +24,7 @@ import com.pz.common.enums.BusinessType;
import com.pz.common.utils.poi.ExcelUtil; import com.pz.common.utils.poi.ExcelUtil;
/** /**
* 商户 * 商户[PC端]
* *
* @author WangMin * @author WangMin
* @date 2023-09-11 * @date 2023-09-11
......
package com.pz.merchant.domain.bo;
/**
* <p>created in 2023/9/12 14:11
*
* @author WangMin
* @version 1.0
*/
public class ModifyCompanyInfoBo {
}
...@@ -55,6 +55,11 @@ public class TodayOrderListVo { ...@@ -55,6 +55,11 @@ public class TodayOrderListVo {
private Integer todayOrderNum; private Integer todayOrderNum;
/** /**
* 陪诊员状态 1-正常,2禁用,0-审核中
*/
private Integer status;
/**
* 今日订单列表 * 今日订单列表
*/ */
private List<OrderInfoVO> todayOrderList; private List<OrderInfoVO> todayOrderList;
......
...@@ -41,13 +41,14 @@ public interface EmployeesMapper extends BaseMapperPlus<EmployeesMapper, Employe ...@@ -41,13 +41,14 @@ public interface EmployeesMapper extends BaseMapperPlus<EmployeesMapper, Employe
*/ */
TodayOrderListVo selectEmployeesInfoById(@Param("id") Integer emId); TodayOrderListVo selectEmployeesInfoById(@Param("id") Integer emId);
/** /**
* 员工今日订单 * 查询订单
* * @param queryWrapper 查询条件
* @param emId 员工Id * @return 订单
* @return 订单列表
*/ */
List<OrderInfoVO> selectTodayOrderByEid(@Param("id") Integer emId); IPage<OrderInfoVO> selectOrder(IPage<EmployeesListBo> page, @Param(Constants.WRAPPER) Wrapper<Employees> queryWrapper);
Page<EmployeesVo> selectEmployees(EmployeesBo bo, PageQuery pageQuery); Page<EmployeesVo> selectEmployees(EmployeesBo bo, PageQuery pageQuery);
......
...@@ -2,6 +2,7 @@ package com.pz.merchant.service; ...@@ -2,6 +2,7 @@ package com.pz.merchant.service;
import com.pz.merchant.domain.Employees; import com.pz.merchant.domain.Employees;
import com.pz.merchant.domain.bo.EmployeesListBo; import com.pz.merchant.domain.bo.EmployeesListBo;
import com.pz.merchant.domain.bo.OrderBo;
import com.pz.merchant.domain.bo.SetEmployeeWorkingHourBo; import com.pz.merchant.domain.bo.SetEmployeeWorkingHourBo;
import com.pz.merchant.domain.vo.EmployeesListVo; import com.pz.merchant.domain.vo.EmployeesListVo;
import com.pz.merchant.domain.vo.EmployeesVo; import com.pz.merchant.domain.vo.EmployeesVo;
...@@ -71,12 +72,12 @@ public interface IEmployeesService { ...@@ -71,12 +72,12 @@ public interface IEmployeesService {
TodayOrderListVo queryEmployeesInfo(Integer emId); TodayOrderListVo queryEmployeesInfo(Integer emId);
/** /**
* 员工今日订单 * 查询所有订单
* *
* @param emId 员工Id * @param bo 查询条件
* @return 订单列表 * @return 订单列表
*/ */
List<OrderInfoVO> queryTodayOrders(Integer emId); TableDataInfo<OrderInfoVO> queryAllOrder(OrderBo bo, PageQuery pageQuery);
/** /**
* 排行榜 * 排行榜
...@@ -92,4 +93,20 @@ public interface IEmployeesService { ...@@ -92,4 +93,20 @@ public interface IEmployeesService {
* 查询陪诊员 * 查询陪诊员
*/ */
EmployeesVo queryByApp(Integer id); EmployeesVo queryByApp(Integer id);
/**
* 切换陪诊员身份
*
* @param emId 陪诊员Id
* @return 操作结果
*/
boolean switchEmployeeIdentity(Integer emId);
/**
* 冻结/解冻陪诊员
*
* @param emId 陪诊员Id
* @return 操作结果
*/
boolean disableOrRecover(Integer emId);
} }
...@@ -5,13 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -5,13 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dtflys.forest.annotation.Get;
import com.pz.common.core.page.TableDataInfo; import com.pz.common.core.page.TableDataInfo;
import com.pz.common.core.domain.PageQuery; import com.pz.common.core.domain.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pz.common.exception.ServiceException;
import com.pz.common.utils.StringUtils; import com.pz.common.utils.StringUtils;
import com.pz.merchant.domain.bo.EmployeesListBo; import com.pz.merchant.domain.bo.EmployeesListBo;
import com.pz.merchant.domain.bo.OrderBo;
import com.pz.merchant.domain.bo.SetEmployeeWorkingHourBo; import com.pz.merchant.domain.bo.SetEmployeeWorkingHourBo;
import com.pz.merchant.domain.vo.*; import com.pz.merchant.domain.vo.*;
import com.pz.merchant.mapper.CompanyMapper; import com.pz.merchant.mapper.CompanyMapper;
...@@ -26,6 +29,7 @@ import com.pz.merchant.domain.bo.EmployeesBo; ...@@ -26,6 +29,7 @@ import com.pz.merchant.domain.bo.EmployeesBo;
import com.pz.merchant.domain.Employees; import com.pz.merchant.domain.Employees;
import com.pz.merchant.mapper.EmployeesMapper; import com.pz.merchant.mapper.EmployeesMapper;
import com.pz.merchant.service.IEmployeesService; import com.pz.merchant.service.IEmployeesService;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.*; import java.util.*;
...@@ -200,6 +204,42 @@ public class EmployeesServiceImpl implements IEmployeesService { ...@@ -200,6 +204,42 @@ public class EmployeesServiceImpl implements IEmployeesService {
} }
/** /**
* 切换陪诊员用户身份
*
* @param emId 陪诊员Id
* @return 操作结果
*/
@Override
public boolean switchEmployeeIdentity(Integer emId) {
EmployeesVo employeesVo = baseMapper.selectVoById(emId);
Objects.requireNonNull(employeesVo, "查无此人");
Integer identity = employeesVo.getNowType();
// 切换当前用户身份
Integer modifyIdentity = identity == 1 ? 2 : 1;
employeesVo.setNowType(modifyIdentity);
return baseMapper.updateById(BeanUtil.toBean(employeesVo, Employees.class)) > 0;
}
/**
* 冻结/解冻陪诊员账户
*
* @param emId 陪诊员Id
* @return 操作结果
*/
@Override
public boolean disableOrRecover(Integer emId) {
EmployeesVo employeesVo = baseMapper.selectVoById(emId);
Objects.requireNonNull(employeesVo, "查无此人");
Integer status = employeesVo.getStatus();
if (status == 0) {
throw new ServiceException("该用户待审核通过,暂无法修改状态");
}
Integer modifyStatus = status == 1 ? 2 : 1;
employeesVo.setStatus(modifyStatus);
return baseMapper.updateById(BeanUtil.toBean(employeesVo, Employees.class)) > 0;
}
/**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(Employees entity) { private void validEntityBeforeSave(Employees entity) {
...@@ -231,7 +271,7 @@ public class EmployeesServiceImpl implements IEmployeesService { ...@@ -231,7 +271,7 @@ public class EmployeesServiceImpl implements IEmployeesService {
} }
/** /**
* 查询员工今日订单 * 查询员工数据以及今日订单
* *
* @param emId 员工ID * @param emId 员工ID
* @return 今日订单数据信息 * @return 今日订单数据信息
...@@ -239,8 +279,12 @@ public class EmployeesServiceImpl implements IEmployeesService { ...@@ -239,8 +279,12 @@ public class EmployeesServiceImpl implements IEmployeesService {
@Override @Override
public TodayOrderListVo queryEmployeesInfo(Integer emId) { public TodayOrderListVo queryEmployeesInfo(Integer emId) {
TodayOrderListVo result = baseMapper.selectEmployeesInfoById(emId); TodayOrderListVo result = baseMapper.selectEmployeesInfoById(emId);
List<OrderInfoVO> orders = baseMapper.selectTodayOrderByEid(emId); QueryWrapper<Employees> query = Wrappers.query();
query.apply("date_format(total_order.create_time,'%Y-%m-%d') = current_date")
.eq("total_order.em_id", emId);
IPage<OrderInfoVO> page = baseMapper.selectOrder(new PageQuery().build(), query);
// 根据不同子订单装载就诊人员信息和子订单状态 // 根据不同子订单装载就诊人员信息和子订单状态
List<OrderInfoVO> orders = page.getRecords();
orders.forEach(suborder -> { orders.forEach(suborder -> {
ISonOrderService orderService = sonOrderServiceBuilder.getSonOrderService(suborder.getBid()); ISonOrderService orderService = sonOrderServiceBuilder.getSonOrderService(suborder.getBid());
SonOrderVo orderStatus; SonOrderVo orderStatus;
...@@ -254,8 +298,29 @@ public class EmployeesServiceImpl implements IEmployeesService { ...@@ -254,8 +298,29 @@ public class EmployeesServiceImpl implements IEmployeesService {
return result; return result;
} }
/**
* 查询所有订单
*
* @param bo 查询条件
* @return 订单列表
*/
@Override @Override
public List<OrderInfoVO> queryTodayOrders(Integer emId) { public TableDataInfo<OrderInfoVO> queryAllOrder(OrderBo bo, PageQuery pageQuery) {
return null; QueryWrapper<Employees> query = Wrappers.query();
query.eq(bo.getEmId() != null, "total_order.em_id", bo.getEmId())
.eq(bo.getServiceStatus() != null, "total_order.status", bo.getServiceStatus());
IPage<OrderInfoVO> page = baseMapper.selectOrder(pageQuery.build(), query);
// 根据不同子订单装载就诊人员信息和子订单状态
page.getRecords().forEach(suborder -> {
ISonOrderService orderService = sonOrderServiceBuilder.getSonOrderService(suborder.getBid());
SonOrderVo orderStatus;
if (orderService != null && (orderStatus = orderService.getSonOrderInfoByTotalId(suborder.getOrderId())) != null) {
suborder.setUserName(orderStatus.getUserName());
suborder.setSonOrderStatus(orderStatus.getOrderStatus());
}
});
return TableDataInfo.build(page);
} }
} }
...@@ -47,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -47,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select employees.id as emId, select employees.id as emId,
employees.name, employees.name,
employees.working_hours, employees.working_hours,
employees.status,
year(current_date) - ifnull(employees.start_year, 0) as workYear, year(current_date) - ifnull(employees.start_year, 0) as workYear,
employees.now_type, employees.now_type,
user.avatar, user.avatar,
...@@ -62,23 +63,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -62,23 +63,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
group by employees.id group by employees.id
</select> </select>
<select id="selectTodayOrderByEid" resultType="com.pz.merchant.domain.vo.OrderInfoVO">
select total_order.id as orderId,
total_order.status as orderStatus,
services.name as project,
services.cover,
services.price,
CONVERT((1 - services.fenmo / 100), decimal(10, 2)) * CONVERT(services.price, decimal(10, 2)) as commission,
services.bid
from total_order
left join services on total_order.service_id = services.id
<where>
date_format(total_order.create_time,'%Y-%m-%d')
<if test="id != null and id > 0">
and total_order.id = #{id}
</if>
</where>
</select>
<select id="selectEmployees" resultType="com.pz.merchant.domain.vo.EmployeesVo"> <select id="selectEmployees" resultType="com.pz.merchant.domain.vo.EmployeesVo">
SELECT e.id, s.avatar ,e.name,e.working_hours,(SUM(CASE WHEN o.is_satisfaction = 1 THEN 1 ELSE 0 END) / NULLIF(COUNT(o.is_satisfaction), 0)) * 100 AS satisfaction_rate SELECT e.id, s.avatar ,e.name,e.working_hours,(SUM(CASE WHEN o.is_satisfaction = 1 THEN 1 ELSE 0 END) / NULLIF(COUNT(o.is_satisfaction), 0)) * 100 AS satisfaction_rate
FROM employees e FROM employees e
...@@ -112,5 +96,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -112,5 +96,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
satisfaction_rate >= #{favorableRate}; satisfaction_rate >= #{favorableRate};
</select> </select>
<select id="selectOrder" resultType="com.pz.merchant.domain.vo.OrderInfoVO">
select total_order.id as orderId,
total_order.status as orderStatus,
services.name as project,
services.cover,
services.price,
CONVERT((1 - services.fenmo / 100), decimal(10, 2)) * CONVERT(services.price, decimal(10, 2)) as commission,
services.bid
from total_order
left join services on total_order.service_id = services.id
<where>
<if test="ew.emptyOfWhere == false">
and ${ew.sqlSegment}
</if>
</where>
</select>
</mapper> </mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment