Commit a07b2c6c by sdif

用户端代码

parent 0d0f9eb2
package com.pz.applet;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.pz.common.annotation.Log;
import com.pz.common.annotation.RepeatSubmit;
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.AddGroup;
import com.pz.common.core.validate.EditGroup;
import com.pz.common.enums.BusinessType;
import com.pz.common.utils.poi.ExcelUtil;
import com.pz.system.domain.UserAppreciate;
import com.pz.system.domain.bo.ArticleBo;
import com.pz.system.domain.bo.ArticleCommentBo;
import com.pz.system.domain.bo.UserAppreciateBo;
import com.pz.system.domain.bo.UserCollectBo;
import com.pz.system.domain.vo.ArticleVo;
import com.pz.system.service.IArticleService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 文章
*
* @author ruoyi
* @date 2023-09-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/applet/article")
public class AppletArticleController extends BaseController {
private final IArticleService iArticleService;
/**
* 查询文章列表
*/
@GetMapping("/list")
public TableDataInfo<ArticleVo> list(ArticleBo bo, PageQuery pageQuery) {
return iArticleService.queryPageListByApp(bo, pageQuery);
}
/**
* 获取文章详细信息
*
* @param id 主键
*/
@GetMapping("/{id}")
public R<ArticleVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Integer id) {
return R.ok(iArticleService.queryById(id));
}
/**
* 新增点赞
*/
@RepeatSubmit()
@PostMapping("/Appreciate")
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserAppreciateBo bo) {
bo.setUid(1);
return toAjax(iArticleService.insertByAppreciate(bo));
}
/**
* 新增收藏
*/
@RepeatSubmit()
@PostMapping("/Collect")
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserCollectBo bo) {
bo.setUid(1);
return toAjax(iArticleService.insertByCollect(bo));
}
/**
* 新增评论
*/
@RepeatSubmit()
@PostMapping("/Comment")
public R<Void> add(@Validated(AddGroup.class) @RequestBody ArticleCommentBo bo) {
bo.setUid(1);
return toAjax(iArticleService.insertByComment(bo));
}
}
package com.pz.applet;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.pz.common.annotation.Log;
import com.pz.common.annotation.RepeatSubmit;
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.AddGroup;
import com.pz.common.core.validate.EditGroup;
import com.pz.common.enums.BusinessType;
import com.pz.common.utils.poi.ExcelUtil;
import com.pz.merchant.domain.bo.CompanyBo;
import com.pz.merchant.domain.vo.CompanyVo;
import com.pz.merchant.service.ICompanyService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 商户
*
* @author WangMin
* @date 2023-09-11
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/applet/company")
public class AppletCompanyController extends BaseController {
private final ICompanyService iCompanyService;
/**
* 查询商户列表
*/
@SaCheckPermission("merchant:company:list")
@GetMapping("/list")
public TableDataInfo<CompanyVo> list(CompanyBo bo, PageQuery pageQuery) {
return iCompanyService.queryPageList(bo, pageQuery);
}
}
package com.pz.applet;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.pz.common.annotation.Log;
import com.pz.common.annotation.RepeatSubmit;
import com.pz.common.core.controller.BaseController;
import com.pz.common.core.domain.R;
import com.pz.common.core.validate.AddGroup;
import com.pz.common.core.validate.EditGroup;
import com.pz.common.enums.BusinessType;
import com.pz.common.utils.poi.ExcelUtil;
import com.pz.system.domain.bo.DepartmentBo;
import com.pz.system.domain.vo.DepartmentVo;
import com.pz.system.service.IDepartmentService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 科室
*
* @author ruoyi
* @date 2023-09-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/applet/department")
public class AppletDepartmentController extends BaseController {
private final IDepartmentService iDepartmentService;
/**
* 查询科室列表
*/
@SaCheckPermission("system:department:list")
@GetMapping("/list")
public R<List<DepartmentVo>> list(DepartmentBo bo) {
return R.ok(iDepartmentService.queryPageList(bo));
}
}
package com.pz.applet;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.pz.common.annotation.Log;
import com.pz.common.annotation.RepeatSubmit;
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.AddGroup;
import com.pz.common.core.validate.EditGroup;
import com.pz.common.enums.BusinessType;
import com.pz.common.utils.poi.ExcelUtil;
import com.pz.merchant.domain.bo.EmployeesBo;
import com.pz.merchant.domain.vo.EmployeesVo;
import com.pz.merchant.service.IEmployeesService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 陪诊员
*
* @author WangMin
* @date 2023-09-11
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/applet/employees")
public class AppletEmployeesController extends BaseController {
private final IEmployeesService iEmployeesService;
/**
* 需求广场
*/
@SaCheckPermission("merchant:employees:list")
@GetMapping("/needList")
public TableDataInfo<EmployeesVo> needList(EmployeesBo bo, PageQuery pageQuery) {
return iEmployeesService.queryPageAppNeed(bo, pageQuery);
}
/**
* 排行榜
*/
@SaCheckPermission("merchant:employees:list")
@GetMapping("/rankingList")
public TableDataInfo<EmployeesVo> rankingList(EmployeesBo bo, PageQuery pageQuery) {
return iEmployeesService.queryPageAppRanking(bo, pageQuery);
}
/**
* 获取陪诊员详细信息
*
* @param id 主键
*/
@SaCheckPermission("merchant:employees:query")
@GetMapping("/{id}")
public R<EmployeesVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Integer id) {
return R.ok(iEmployeesService.queryByApp(id));
}
}
package com.pz.applet;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.pz.common.annotation.Log;
import com.pz.common.annotation.RepeatSubmit;
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.AddGroup;
import com.pz.common.core.validate.EditGroup;
import com.pz.common.enums.BusinessType;
import com.pz.common.utils.poi.ExcelUtil;
import com.pz.system.domain.bo.HospitalBo;
import com.pz.system.domain.vo.HospitalVo;
import com.pz.system.service.IHospitalService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 医院
*
* @author ruoyi
* @date 2023-09-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/applet/hospital")
public class AppletHospitalController extends BaseController {
private final IHospitalService iHospitalService;
/**
* 查询医院列表
*/
@GetMapping("/list")
public TableDataInfo<HospitalVo> list(HospitalBo bo, PageQuery pageQuery) {
return iHospitalService.queryPageList(bo, pageQuery);
}
/**
* 获取医院详细信息
*
* @param id 主键
*/
@GetMapping("/{id}")
public R<HospitalVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Integer id) {
return R.ok(iHospitalService.queryById(id));
}
}
package com.pz.applet;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.pz.common.annotation.Log;
import com.pz.common.annotation.RepeatSubmit;
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.AddGroup;
import com.pz.common.core.validate.EditGroup;
import com.pz.common.enums.BusinessType;
import com.pz.common.utils.poi.ExcelUtil;
import com.pz.system.domain.bo.InformationBo;
import com.pz.system.domain.vo.InformationVo;
import com.pz.system.service.IInformationService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 新闻资讯
*
* @author ruoyi
* @date 2023-09-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/applet/information")
public class AppletInformationController extends BaseController {
private final IInformationService iInformationService;
/**
* 查询新闻资讯列表
*/
@GetMapping("/list")
public TableDataInfo<InformationVo> list(InformationBo bo, PageQuery pageQuery) {
return iInformationService.queryPageList(bo, pageQuery);
}
/**
* 获取新闻资讯详细信息
*
* @param id 主键
*/
@GetMapping("/{id}")
public R<InformationVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Integer id) {
return R.ok(iInformationService.queryById(id));
}
}
package com.pz.applet;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.pz.common.annotation.Log;
import com.pz.common.annotation.RepeatSubmit;
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.AddGroup;
import com.pz.common.core.validate.EditGroup;
import com.pz.common.enums.BusinessType;
import com.pz.common.utils.poi.ExcelUtil;
import com.pz.system.domain.bo.UserAddressBo;
import com.pz.system.domain.vo.UserAddressVo;
import com.pz.system.service.IUserAddressService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Arrays;
import java.util.List;
/**
* 用户收货地址
*
* @author ruoyi
* @date 2023-09-11
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/applet/address")
public class AppletUserAddressController extends BaseController {
private final IUserAddressService iUserAddressService;
/**
* 查询用户收货地址列表
*/
@SaCheckPermission("system:address:list")
@GetMapping("/list")
public TableDataInfo<UserAddressVo> list(UserAddressBo bo, PageQuery pageQuery) {
return iUserAddressService.queryPageList(bo, pageQuery);
}
/**
* 获取用户收货地址详细信息
*
* @param id 主键
*/
@SaCheckPermission("system:address:query")
@GetMapping("/{id}")
public R<UserAddressVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Integer id) {
return R.ok(iUserAddressService.queryById(id));
}
/**
* 新增用户收货地址
*/
@SaCheckPermission("system:address:add")
@Log(title = "用户收货地址", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserAddressBo bo) {
bo.setUid(1);
return toAjax(iUserAddressService.insertByBo(bo));
}
/**
* 修改用户收货地址
*/
@SaCheckPermission("system:address:edit")
@Log(title = "用户收货地址", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserAddressBo bo) {
return toAjax(iUserAddressService.updateByBo(bo));
}
/**
* 删除用户收货地址
*
* @param ids 主键串
*/
@SaCheckPermission("system:address:remove")
@Log(title = "用户收货地址", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Integer[] ids) {
return toAjax(iUserAddressService.deleteWithValidByIds(Arrays.asList(ids), true));
}
}
package com.pz.applet;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.pz.common.annotation.Log;
import com.pz.common.annotation.RepeatSubmit;
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.AddGroup;
import com.pz.common.enums.BusinessType;
import com.pz.system.domain.bo.ServicesBo;
import com.pz.system.domain.bo.UserVsitorBo;
import com.pz.system.domain.vo.ServicesVo;
import com.pz.system.domain.vo.UserVsitorVo;
import com.pz.system.service.IUserVsitorService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* 就诊人
*
* @author ruoyi
* @date 2023-09-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/applet/vsitor")
public class AppletUserVsitorController extends BaseController {
private final IUserVsitorService iUserVsitorService;
/**
* 查询就诊人列表
*/
@GetMapping("/list")
public TableDataInfo<UserVsitorVo> list(UserVsitorBo bo, PageQuery pageQuery) {
return iUserVsitorService.queryPageList(bo, pageQuery);
}
/**
* 新增就诊人
*/
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody UserVsitorBo bo) {
bo.setUid(1);
return toAjax(iUserVsitorService.insertByBo(bo));
}
}
...@@ -127,5 +127,9 @@ public class EmployeesBo extends BaseEntity { ...@@ -127,5 +127,9 @@ public class EmployeesBo extends BaseEntity {
@NotNull(message = "取消订单次数不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "取消订单次数不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer killOrder; private Integer killOrder;
/**
* 好评率
*/
private String favorableRate;
} }
...@@ -4,9 +4,11 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; ...@@ -4,9 +4,11 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.ExcelProperty;
import com.pz.common.annotation.ExcelDictFormat; import com.pz.common.annotation.ExcelDictFormat;
import com.pz.common.convert.ExcelDictConvert; import com.pz.common.convert.ExcelDictConvert;
import com.pz.system.domain.TotalOrder;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
...@@ -108,4 +110,18 @@ public class EmployeesVo { ...@@ -108,4 +110,18 @@ public class EmployeesVo {
private String cityName; private String cityName;
private Integer cityId; private Integer cityId;
/**
* 好评率
*/
private Double satisfactionRate;
/**
* 头像
*/
private String avatar;
/**
* 最近好评
*/
private List<TotalOrder> totalOrderVo;
} }
...@@ -3,9 +3,11 @@ package com.pz.merchant.mapper; ...@@ -3,9 +3,11 @@ package com.pz.merchant.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pz.common.core.domain.PageQuery; import com.pz.common.core.domain.PageQuery;
import com.pz.common.core.page.TableDataInfo; import com.pz.common.core.page.TableDataInfo;
import com.pz.merchant.domain.Employees; import com.pz.merchant.domain.Employees;
import com.pz.merchant.domain.bo.EmployeesBo;
import com.pz.merchant.domain.bo.EmployeesListBo; import com.pz.merchant.domain.bo.EmployeesListBo;
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;
...@@ -47,5 +49,7 @@ public interface EmployeesMapper extends BaseMapperPlus<EmployeesMapper, Employe ...@@ -47,5 +49,7 @@ public interface EmployeesMapper extends BaseMapperPlus<EmployeesMapper, Employe
*/ */
List<OrderInfoVO> selectTodayOrderByEid(@Param("id") Integer emId); List<OrderInfoVO> selectTodayOrderByEid(@Param("id") Integer emId);
Page<EmployeesVo> selectEmployees(EmployeesBo bo, PageQuery pageQuery);
EmployeesVo selectEmployeesById(Integer id);
} }
...@@ -77,4 +77,19 @@ public interface IEmployeesService { ...@@ -77,4 +77,19 @@ public interface IEmployeesService {
* @return 订单列表 * @return 订单列表
*/ */
List<OrderInfoVO> queryTodayOrders(Integer emId); List<OrderInfoVO> queryTodayOrders(Integer emId);
/**
* 排行榜
*/
TableDataInfo<EmployeesVo> queryPageAppRanking(EmployeesBo bo, PageQuery pageQuery);
/**
* 需求广场
*/
TableDataInfo<EmployeesVo> queryPageAppNeed(EmployeesBo bo, PageQuery pageQuery);
/**
* 查询陪诊员
*/
EmployeesVo queryByApp(Integer id);
} }
...@@ -17,8 +17,10 @@ import com.pz.merchant.domain.vo.EmployeesListVo; ...@@ -17,8 +17,10 @@ import com.pz.merchant.domain.vo.EmployeesListVo;
import com.pz.merchant.domain.vo.OrderInfoVO; import com.pz.merchant.domain.vo.OrderInfoVO;
import com.pz.merchant.domain.vo.TodayOrderListVo; import com.pz.merchant.domain.vo.TodayOrderListVo;
import com.pz.merchant.mapper.CompanyMapper; import com.pz.merchant.mapper.CompanyMapper;
import com.pz.system.domain.TotalOrder;
import com.pz.system.mapper.CityMapper; import com.pz.system.mapper.CityMapper;
import com.pz.system.mapper.SysUserMapper; import com.pz.system.mapper.SysUserMapper;
import com.pz.system.mapper.TotalOrderMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.pz.merchant.domain.bo.EmployeesBo; import com.pz.merchant.domain.bo.EmployeesBo;
...@@ -44,7 +46,7 @@ public class EmployeesServiceImpl implements IEmployeesService { ...@@ -44,7 +46,7 @@ public class EmployeesServiceImpl implements IEmployeesService {
private final CompanyMapper companyMapper; private final CompanyMapper companyMapper;
private final SysUserMapper sysUserMapper; private final SysUserMapper sysUserMapper;
private final CityMapper cityMapper; private final CityMapper cityMapper;
private final TotalOrderMapper totalOrderMapper;
/** /**
* 查询陪诊员 * 查询陪诊员
*/ */
...@@ -138,6 +140,65 @@ public class EmployeesServiceImpl implements IEmployeesService { ...@@ -138,6 +140,65 @@ public class EmployeesServiceImpl implements IEmployeesService {
} }
/** /**
* 需求广场
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<EmployeesVo> queryPageAppNeed(EmployeesBo bo, PageQuery pageQuery) {
Page<EmployeesVo> result = baseMapper.selectEmployees(bo,pageQuery);
Optional.ofNullable(result.getRecords()).ifPresent(EmployeesVo -> {
EmployeesVo.forEach(t -> {
List<TotalOrder> totalOrder = totalOrderMapper.selectList(Wrappers.<TotalOrder>lambdaQuery()
.eq(TotalOrder::getEmId, t.getId())
.eq(TotalOrder::getIsSatisfaction, 1)
.orderByDesc(TotalOrder::getId)
.last("LIMIT 1"));
t.setTotalOrderVo(totalOrder);
});
});
return TableDataInfo.build(result);
}
/**
* 排行榜
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<EmployeesVo> queryPageAppRanking(EmployeesBo bo, PageQuery pageQuery) {
Page<EmployeesVo> result = baseMapper.selectEmployees(bo,pageQuery);
Optional.ofNullable(result.getRecords()).ifPresent(EmployeesVo -> {
EmployeesVo.forEach(t -> {
List<TotalOrder> totalOrder = totalOrderMapper.selectList(Wrappers.<TotalOrder>lambdaQuery()
.eq(TotalOrder::getEmId, t.getId())
.eq(TotalOrder::getIsSatisfaction, 1)
.orderByDesc(TotalOrder::getId)
.last("LIMIT 1"));
t.setTotalOrderVo(totalOrder);
});
});
return TableDataInfo.build(result);
}
/**
* 查询陪诊员详情
*/
@Override
public EmployeesVo queryByApp(Integer id){
EmployeesVo employeesVo = baseMapper.selectEmployeesById(id);
List<TotalOrder> totalOrder = totalOrderMapper.selectList(Wrappers.<TotalOrder>lambdaQuery()
.eq(TotalOrder::getEmId, employeesVo.getId())
.eq(TotalOrder::getIsSatisfaction, 1)
.orderByDesc(TotalOrder::getId));
employeesVo.setTotalOrderVo(totalOrder);
return employeesVo;
}
/**
* 保存前的数据校验 * 保存前的数据校验
*/ */
private void validEntityBeforeSave(Employees entity) { private void validEntityBeforeSave(Employees entity) {
......
...@@ -4,6 +4,7 @@ import com.pz.common.core.domain.BaseEntity; ...@@ -4,6 +4,7 @@ import com.pz.common.core.domain.BaseEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import java.util.List;
/** /**
...@@ -47,5 +48,14 @@ public class ArticleBo extends BaseEntity { ...@@ -47,5 +48,14 @@ public class ArticleBo extends BaseEntity {
*/ */
private String content; private String content;
/**
* 是否显示用户收藏(true收藏false非收藏)
*/
private boolean isCollect;
/**
* 文章列表id
*/
private List<Integer> articleId;
} }
...@@ -30,7 +30,7 @@ public class ArticleCommentBo extends BaseEntity { ...@@ -30,7 +30,7 @@ public class ArticleCommentBo extends BaseEntity {
/** /**
* 用户 * 用户
*/ */
private Long uid; private Integer uid;
/** /**
* 评论 * 评论
......
package com.pz.system.domain.bo;
import com.pz.common.core.domain.BaseEntity;
import com.pz.common.core.validate.AddGroup;
import com.pz.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;
/**
* 用户收货地址业务对象 user_address
*
* @author ruoyi
* @date 2023-09-11
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class UserAddressBo extends BaseEntity {
/**
*
*/
private Integer id;
/**
* 所属用户
*/
@NotNull(message = "所属用户不能为空", groups = { AddGroup.class, EditGroup.class })
private Integer uid;
/**
* 收货人名字
*/
@NotBlank(message = "收货人名字不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 收货人电话
*/
@NotBlank(message = "收货人电话不能为空", groups = { AddGroup.class, EditGroup.class })
private String phone;
/**
* 所在地区
*/
private String area;
/**
* 详细地址
*/
private String address;
/**
* 是否默认
*/
private Integer isDefult;
/**
* 备注
*/
private String remark;
}
...@@ -6,6 +6,8 @@ import com.pz.common.annotation.ExcelDictFormat; ...@@ -6,6 +6,8 @@ import com.pz.common.annotation.ExcelDictFormat;
import com.pz.common.convert.ExcelDictConvert; import com.pz.common.convert.ExcelDictConvert;
import lombok.Data; import lombok.Data;
import java.util.Date;
/** /**
* 文章评论视图对象 article_comment * 文章评论视图对象 article_comment
...@@ -20,7 +22,7 @@ public class ArticleCommentVo { ...@@ -20,7 +22,7 @@ public class ArticleCommentVo {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* *
*/ */
@ExcelProperty(value = "") @ExcelProperty(value = "")
private Integer id; private Integer id;
...@@ -43,5 +45,16 @@ public class ArticleCommentVo { ...@@ -43,5 +45,16 @@ public class ArticleCommentVo {
@ExcelProperty(value = "评论") @ExcelProperty(value = "评论")
private String comment; private String comment;
/**
* 创建时间
*/
private Date createTime;
/**
* 用户名称
*/
private String userName;
/**
* 用户头像
*/
private String avatar;
} }
...@@ -6,6 +6,8 @@ import com.pz.common.annotation.ExcelDictFormat; ...@@ -6,6 +6,8 @@ import com.pz.common.annotation.ExcelDictFormat;
import com.pz.common.convert.ExcelDictConvert; import com.pz.common.convert.ExcelDictConvert;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* 文章视图对象 article * 文章视图对象 article
...@@ -69,4 +71,19 @@ public class ArticleVo { ...@@ -69,4 +71,19 @@ public class ArticleVo {
* 收藏数 * 收藏数
*/ */
private Integer collectNum; private Integer collectNum;
/**
* 是否点赞
*/
private boolean isAppreciate;
/**
* 是否收藏
*/
private boolean isCollect;
/**
* 评论列表
*/
private List<ArticleCommentVo> comment;
} }
package com.pz.system.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.pz.common.annotation.ExcelDictFormat;
import com.pz.common.convert.ExcelDictConvert;
import lombok.Data;
/**
* 用户收货地址视图对象 user_address
*
* @author ruoyi
* @date 2023-09-11
*/
@Data
@ExcelIgnoreUnannotated
public class UserAddressVo {
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "")
private Integer id;
/**
* 所属用户
*/
@ExcelProperty(value = "所属用户")
private Integer uid;
/**
* 收货人名字
*/
@ExcelProperty(value = "收货人名字")
private String name;
/**
* 收货人电话
*/
@ExcelProperty(value = "收货人电话")
private String phone;
/**
* 所在地区
*/
@ExcelProperty(value = "所在地区")
private String area;
/**
* 详细地址
*/
@ExcelProperty(value = "详细地址")
private String address;
/**
* 是否默认
*/
@ExcelProperty(value = "是否默认")
private Integer isDefult;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}
package com.pz.system.service; package com.pz.system.service;
import cn.hutool.core.bean.BeanUtil;
import com.pz.system.domain.Article; import com.pz.system.domain.Article;
import com.pz.system.domain.ArticleComment;
import com.pz.system.domain.UserAppreciate;
import com.pz.system.domain.UserCollect;
import com.pz.system.domain.bo.ArticleCommentBo;
import com.pz.system.domain.bo.UserAppreciateBo;
import com.pz.system.domain.bo.UserCollectBo;
import com.pz.system.domain.vo.ArticleVo; import com.pz.system.domain.vo.ArticleVo;
import com.pz.system.domain.bo.ArticleBo; import com.pz.system.domain.bo.ArticleBo;
import com.pz.common.core.page.TableDataInfo; import com.pz.common.core.page.TableDataInfo;
...@@ -28,11 +35,29 @@ public interface IArticleService { ...@@ -28,11 +35,29 @@ public interface IArticleService {
TableDataInfo<ArticleVo> queryPageList(ArticleBo bo, PageQuery pageQuery); TableDataInfo<ArticleVo> queryPageList(ArticleBo bo, PageQuery pageQuery);
/** /**
* 小程序文章列表(收藏、非收藏)
*/
TableDataInfo<ArticleVo> queryPageListByApp(ArticleBo bo, PageQuery pageQuery);
/**
* 查询文章列表 * 查询文章列表
*/ */
List<ArticleVo> queryList(ArticleBo bo); List<ArticleVo> queryList(ArticleBo bo);
/**
* 新增点赞
*/
Boolean insertByAppreciate(UserAppreciateBo bo);
/** /**
* 新增收藏
*/
Boolean insertByCollect(UserCollectBo bo);
/**
* 新增评论
*/
Boolean insertByComment(ArticleCommentBo bo);
/**
* 新增文章 * 新增文章
*/ */
Boolean insertByBo(ArticleBo bo); Boolean insertByBo(ArticleBo bo);
......
...@@ -3,23 +3,26 @@ package com.pz.system.service.impl; ...@@ -3,23 +3,26 @@ package com.pz.system.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.pz.common.core.domain.entity.SysUser;
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.system.domain.ArticleComment;
import com.pz.system.domain.UserAppreciate; import com.pz.system.domain.UserAppreciate;
import com.pz.system.domain.UserCollect; import com.pz.system.domain.UserCollect;
import com.pz.system.domain.bo.ArticleCommentBo;
import com.pz.system.domain.bo.UserAppreciateBo;
import com.pz.system.domain.bo.UserCollectBo;
import com.pz.system.domain.vo.ArticleCommentVo;
import com.pz.system.domain.vo.CityVo; import com.pz.system.domain.vo.CityVo;
import com.pz.system.mapper.CityMapper; import com.pz.system.mapper.*;
import com.pz.system.mapper.UserAppreciateMapper;
import com.pz.system.mapper.UserCollectMapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.pz.system.domain.bo.ArticleBo; import com.pz.system.domain.bo.ArticleBo;
import com.pz.system.domain.vo.ArticleVo; import com.pz.system.domain.vo.ArticleVo;
import com.pz.system.domain.Article; import com.pz.system.domain.Article;
import com.pz.system.mapper.ArticleMapper;
import com.pz.system.service.IArticleService; import com.pz.system.service.IArticleService;
import java.util.*; import java.util.*;
...@@ -43,12 +46,38 @@ public class ArticleServiceImpl implements IArticleService { ...@@ -43,12 +46,38 @@ public class ArticleServiceImpl implements IArticleService {
private final UserCollectMapper userCollectMapper; private final UserCollectMapper userCollectMapper;
private final ArticleCommentMapper articleCommentMapper;
private final SysUserMapper sysUserMapper;
/** /**
* 查询文章 * 查询文章
*/ */
@Override @Override
public ArticleVo queryById(Integer id) { public ArticleVo queryById(Integer id) {
return baseMapper.selectVoById(id); ArticleVo articleVo = baseMapper.selectVoById(id);
Long aLong = userAppreciateMapper.selectCount(Wrappers.<UserAppreciate>lambdaQuery().eq(UserAppreciate::getAid, id));
Long aLong1 = userCollectMapper.selectCount(Wrappers.<UserCollect>lambdaQuery().eq(UserCollect::getAid, id));
//是否点赞
articleVo.setAppreciate(aLong != 0);
//点赞数量
articleVo.setAppreciateNum(Math.toIntExact(aLong));
//是否收藏
articleVo.setCollect(aLong1 != 0);
//收藏数量
articleVo.setCollectNum(Math.toIntExact(aLong1));
//用户评论
List<ArticleCommentVo> articleCommentVos = articleCommentMapper.selectVoList(Wrappers.<ArticleComment>lambdaQuery().eq(ArticleComment::getAid, id).eq(ArticleComment::getUid, 1));
for (ArticleCommentVo articleCommentVo : articleCommentVos) {
if(null != articleCommentVo.getUid()){
SysUser sysUser = sysUserMapper.selectById(1);
articleCommentVo.setAvatar(sysUser.getAvatar());
articleCommentVo.setUserName(sysUser.getUserName());
}
}
articleVo.setComment(articleCommentVos);
return articleVo;
} }
/** /**
...@@ -61,7 +90,7 @@ public class ArticleServiceImpl implements IArticleService { ...@@ -61,7 +90,7 @@ public class ArticleServiceImpl implements IArticleService {
Optional.ofNullable(result.getRecords()).ifPresent(articleVos -> { Optional.ofNullable(result.getRecords()).ifPresent(articleVos -> {
// 获取所有文章id集合 // 获取所有文章id集合
List<Integer> articleIds = articleVos.stream() List<Integer> articleIds = articleVos.stream()
.map(ArticleVo::getCityId) .map(ArticleVo::getId)
.collect(Collectors.toList()); .collect(Collectors.toList());
// 查询城市名称 // 查询城市名称
...@@ -104,6 +133,68 @@ public class ArticleServiceImpl implements IArticleService { ...@@ -104,6 +133,68 @@ public class ArticleServiceImpl implements IArticleService {
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@Override
public TableDataInfo<ArticleVo> queryPageListByApp(ArticleBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<Article> lqw = new LambdaQueryWrapper<>();
//Page<ArticleVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
// TODO 待登录写完修改
int userId = 1;
Page<ArticleVo> result = new Page<>();
//判断是否展示收藏文章
if(bo.isCollect()){
List<UserCollect> Collect = userCollectMapper.selectList(Wrappers.<UserCollect>lambdaQuery().eq(UserCollect::getUid, userId));
// 获取所有文章id集合
List<Integer> articleIds = Collect.stream()
.map(UserCollect::getAid)
.collect(Collectors.toList());
//查询用户收藏的所有文章
bo.setArticleId(articleIds);
lqw = buildQueryWrapper(bo);
result = baseMapper.selectVoPage(pageQuery.build(), lqw);
}else {
result = baseMapper.selectVoPage(pageQuery.build(), lqw);
}
Optional.ofNullable(result.getRecords()).ifPresent(articleVos -> {
// 获取所有文章id集合
List<Integer> articleIds = articleVos.stream()
.map(ArticleVo::getId)
.collect(Collectors.toList());
// 查询点赞和收藏数
Map<Integer, Integer> appreciateNumMap = new HashMap<>();
Map<Integer, Integer> collectNumMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(articleIds)) {
List<UserAppreciate> userAppreciates = userAppreciateMapper.selectList(Wrappers.<UserAppreciate>lambdaQuery().in(UserAppreciate::getAid, articleIds));
List<UserCollect> userCollects = userCollectMapper.selectList(Wrappers.<UserCollect>lambdaQuery().in(UserCollect::getAid, articleIds));
for (UserAppreciate userAppreciate : userAppreciates) {
Integer articleId = userAppreciate.getAid();
appreciateNumMap.put(articleId, appreciateNumMap.getOrDefault(articleId, 0) + 1);
}
for (UserCollect userCollect : userCollects) {
Integer articleId = userCollect.getAid();
collectNumMap.put(articleId, collectNumMap.getOrDefault(articleId, 0) + 1);
}
// 设置城市名称、点赞数和收藏数
articleVos.forEach(articleVo -> {
// 设置点赞数
articleVo.setAppreciateNum(appreciateNumMap.getOrDefault(articleVo.getId(), 0));
// 设置收藏数
articleVo.setCollectNum(collectNumMap.getOrDefault(articleVo.getId(), 0));
});
}
});
return TableDataInfo.build(result);
}
/** /**
* 查询文章列表 * 查询文章列表
*/ */
...@@ -117,10 +208,54 @@ public class ArticleServiceImpl implements IArticleService { ...@@ -117,10 +208,54 @@ public class ArticleServiceImpl implements IArticleService {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<Article> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<Article> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getTitle()), Article::getTitle, bo.getTitle()); lqw.like(StringUtils.isNotBlank(bo.getTitle()), Article::getTitle, bo.getTitle());
lqw.eq(!Objects.isNull(bo.getCityId()), Article::getCityId, bo.getCityId());
lqw.in(CollectionUtils.isNotEmpty(bo.getArticleId()), Article::getId, bo.getArticleId());
return lqw; return lqw;
} }
/** /**
* 新增点赞
*/
@Override
public Boolean insertByAppreciate(UserAppreciateBo bo) {
UserAppreciate add = BeanUtil.toBean(bo, UserAppreciate.class);
boolean flag = userAppreciateMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 新增收藏
*/
@Override
public Boolean insertByCollect(UserCollectBo bo) {
UserCollect add = BeanUtil.toBean(bo, UserCollect.class);
boolean flag = userCollectMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 新增评论
*/
@Override
public Boolean insertByComment(ArticleCommentBo bo) {
ArticleComment add = BeanUtil.toBean(bo, ArticleComment.class);
boolean flag = articleCommentMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 新增文章 * 新增文章
*/ */
@Override @Override
......
...@@ -65,6 +65,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -65,6 +65,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectTodayOrderByEid" resultType="com.pz.merchant.domain.vo.OrderInfoVO"> <select id="selectTodayOrderByEid" resultType="com.pz.merchant.domain.vo.OrderInfoVO">
</select> </select>
<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
FROM employees e
INNER join total_order o on o.em_id = e.id
left join company c on c.id = e.company_id
left join sys_user s on s.user_id = e.uid
WHERE e.`status` = 1 and e.now_type= 1 and e.del_flag= 0
<if test="companyId != null and companyId != 0">
e.company_id = #{companyId}
</if>
GROUP BY
e.id,
e.`name`
<if test="favorableRate != null">
HAVING
satisfaction_rate >= #{favorableRate};
</if>
ORDER BY satisfaction_rate desc
</select>
<select id="selectEmployeesById" 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
FROM employees e
INNER join total_order o on o.em_id = e.id
left join company c on c.id = e.company_id
left join sys_user s on s.user_id = e.uid
WHERE e.`status` = 1 and e.now_type= 1 and e.del_flag= 0 and e.id = #{id}
GROUP BY
e.id,
e.`name`
HAVING
satisfaction_rate >= #{favorableRate};
</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