MaProjectServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. package com.ylx.massage.service.impl;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7. import com.ylx.common.core.domain.model.LoginUser;
  8. import com.ylx.common.exception.ServiceException;
  9. import com.ylx.common.utils.DateUtils;
  10. import com.ylx.common.utils.StringUtils;
  11. import com.ylx.common.utils.bean.BeanUtils;
  12. import com.ylx.home.category.domain.dto.ProjectRecommendDTO;
  13. import com.ylx.massage.domain.dto.MaProjectAuditQueryDTO;
  14. import com.ylx.massage.domain.dto.MaProjectAuditSubmitDTO;
  15. import com.ylx.massage.domain.dto.MaProjectUpdateEnableDTO;
  16. import com.ylx.home.category.domain.dto.MerchantsDto;
  17. import com.ylx.massage.domain.vo.MaProjectAuditListVO;
  18. import com.ylx.massage.domain.vo.MaProjectListVo;
  19. import com.ylx.massage.domain.vo.MaProjectOpenServiceVO;
  20. import com.ylx.massage.domain.vo.MaProjectSaveVo;
  21. import com.ylx.home.category.domain.vo.MerchantsVo;
  22. import com.ylx.home.category.domain.vo.ProjectRecommendVo;
  23. import com.ylx.massage.mapper.MaProjectMapper;
  24. import com.ylx.project.domain.bookMerchant.dto.BookMerchantDTO;
  25. import com.ylx.project.domain.bookMerchant.vo.BookMerchantVO;
  26. import org.apache.commons.compress.utils.Lists;
  27. import org.springframework.stereotype.Service;
  28. import com.ylx.massage.domain.MaProject;
  29. import com.ylx.massage.service.IMaProjectService;
  30. import javax.annotation.Resource;
  31. /**
  32. * 服务项目Service业务层处理
  33. *
  34. * @author ylx
  35. * @date 2024-03-20
  36. */
  37. @Service
  38. public class MaProjectServiceImpl extends ServiceImpl<MaProjectMapper, MaProject> implements IMaProjectService {
  39. @Resource
  40. private MaProjectMapper maProjectMapper;
  41. /**
  42. * 查询服务项目
  43. *
  44. * @param id 服务项目主键
  45. * @return 服务项目
  46. */
  47. @Override
  48. public MaProjectListVo selectMaProjectById(Long id) {
  49. MaProject maProject = maProjectMapper.selectMaProjectById(id);
  50. MaProjectListVo vo = new MaProjectListVo();
  51. BeanUtils.copyProperties(maProject, vo);
  52. vo.setProjectIsEnable(maProject.getProjectIsEnable() == 1 ? "启用" : "停止");
  53. return vo;
  54. }
  55. /**
  56. * 查询服务项目列表
  57. *
  58. * @param maProject 服务项目
  59. * @return 服务项目
  60. */
  61. @Override
  62. public List<MaProjectListVo> selectMaProjectList(MaProject maProject) {
  63. ArrayList<MaProjectListVo> vos = Lists.newArrayList();
  64. List<MaProject> maProjects = maProjectMapper.selectMaProjectList(maProject);
  65. if (maProjects.isEmpty()) {
  66. return vos;
  67. }
  68. maProjects.forEach(project -> {
  69. MaProjectListVo vo = new MaProjectListVo();
  70. BeanUtils.copyProperties(project, vo);
  71. vo.setProjectIsEnable(project.getProjectIsEnable() == 1 ? "启用" : "停止");
  72. vos.add(vo);
  73. });
  74. return vos;
  75. }
  76. /**
  77. * 查询技能审核列表
  78. *
  79. * @param page 分页参数
  80. * @param dto 查询条件
  81. * @return 技能审核分页列表
  82. */
  83. @Override
  84. public Page<MaProjectAuditListVO> selectProjectAuditList(Page<MaProjectAuditListVO> page, MaProjectAuditQueryDTO dto) {
  85. if (dto != null) {
  86. checkEnumValue(dto.getAuditStatus(), "技能审核状态", 0, 1, 2);
  87. checkEnumValue(dto.getAuditStatusGroup(), "审核页签", 0, 1);
  88. checkEnumValue(dto.getMerchantSex(), "性别", 0, 1);
  89. checkEnumValue(dto.getTechType(), "用户类型", 0, 1);
  90. }
  91. Page<MaProjectAuditListVO> pageParam = page == null ? new Page<>(1, 10) : page;
  92. return maProjectMapper.selectProjectAuditList(pageParam, dto);
  93. }
  94. /**
  95. * 查询商户申请开通的项目列表
  96. *
  97. * @param merchantId 商户ID
  98. * @return List<MaProjectOpenServiceVO> 商户申请开通项目列表
  99. */
  100. @Override
  101. public List<MaProjectOpenServiceVO> selectMerchantOpenProjectList(Long merchantId) {
  102. if (merchantId == null || merchantId <= 0) {
  103. throw new ServiceException("商户ID不能为空");
  104. }
  105. return maProjectMapper.selectMerchantOpenProjectList(merchantId);
  106. }
  107. /**
  108. * 审核商户申请开通的项目
  109. *
  110. * @param projectAuditId 技能审核记录ID
  111. * @param dto 审核提交参数
  112. * @param loginUser 当前登录用户
  113. * @return int 影响行数
  114. */
  115. @Override
  116. public int submitProjectAudit(Long projectAuditId, MaProjectAuditSubmitDTO dto, LoginUser loginUser) {
  117. if (projectAuditId == null || projectAuditId <= 0) {
  118. throw new ServiceException("技能审核记录ID不能为空");
  119. }
  120. if (dto == null) {
  121. throw new ServiceException("审核参数不能为空");
  122. }
  123. checkEnumValue(dto.getAuditStatus(), "审核状态", 1, 2);
  124. if (Integer.valueOf(2).equals(dto.getAuditStatus()) && StringUtils.isBlank(dto.getAuditRemark())) {
  125. throw new ServiceException("审核驳回时审核备注不能为空");
  126. }
  127. MaProject exists = maProjectMapper.selectProjectAuditById(projectAuditId);
  128. if (exists == null) {
  129. throw new ServiceException("技能审核记录不存在或已删除");
  130. }
  131. if (!Integer.valueOf(0).equals(exists.getAuditStatus())) {
  132. throw new ServiceException("当前项目不是待审核状态,不能重复审核");
  133. }
  134. MaProject maProject = new MaProject();
  135. maProject.setId(projectAuditId);
  136. maProject.setAuditStatus(dto.getAuditStatus());
  137. maProject.setReason(dto.getAuditRemark());
  138. maProject.setProjectIsEnable(Integer.valueOf(1).equals(dto.getAuditStatus()) ? 1 : 0);
  139. maProject.setApproveTime(DateUtils.getNowDate());
  140. maProject.setUpdateTime(DateUtils.getNowDate());
  141. if (loginUser != null && loginUser.getUser() != null) {
  142. maProject.setUpdateBy(loginUser.getUser().getUserId());
  143. }
  144. int rows = maProjectMapper.submitProjectAudit(maProject);
  145. if (rows <= 0) {
  146. throw new ServiceException("审核失败,当前项目状态已变更");
  147. }
  148. return rows;
  149. }
  150. @Override
  151. public int updateProjectEnable(MaProjectUpdateEnableDTO dto) {
  152. if (dto == null) {
  153. throw new ServiceException("上下架参数不能为空");
  154. }
  155. checkRequiredPositive(dto.getMerchantId(), "商户ID");
  156. checkRequiredPositive(dto.getProjectId(), "项目ID");
  157. if (dto.getProjectIsEnable() == null) {
  158. throw new ServiceException("上下架状态不能为空");
  159. }
  160. checkEnumValue(dto.getProjectIsEnable(), "上下架状态", 0, 1);
  161. LambdaUpdateWrapper<MaProject> updateWrapper = new LambdaUpdateWrapper<>();
  162. updateWrapper.eq(MaProject::getMerchantId, dto.getMerchantId())
  163. .eq(MaProject::getProjectId, dto.getProjectId())
  164. .eq(MaProject::getIsDelete, 0)
  165. .eq(MaProject::getAuditStatus, 1)
  166. .set(MaProject::getProjectIsEnable, dto.getProjectIsEnable())
  167. .set(MaProject::getUpdateTime, DateUtils.getNowDate());
  168. int rows = maProjectMapper.update(null, updateWrapper);
  169. if (rows <= 0) {
  170. throw new ServiceException("商户项目不存在或未审核通过");
  171. }
  172. return rows;
  173. }
  174. /**
  175. * 新增服务项目
  176. *
  177. * @param
  178. * @return 结果
  179. */
  180. @Override
  181. public int insertMaProject(MaProjectSaveVo maProjectVo, LoginUser loginUser) {
  182. MaProject maProject = new MaProject();
  183. BeanUtils.copyProperties(maProjectVo, maProject);
  184. if (maProjectVo.getId() == null) {
  185. // 新增
  186. maProject.setCreateBy(loginUser.getUser().getUserId());
  187. maProject.setUpdateBy(loginUser.getUser().getUserId());
  188. maProject.setCreateTime(DateUtils.getNowDate());
  189. return maProjectMapper.insertMaProject(maProject);
  190. } else {
  191. // 修改
  192. maProject.setUpdateBy(loginUser.getUser().getUserId());
  193. return maProjectMapper.updateMaProject(maProject);
  194. }
  195. }
  196. /**
  197. * 修改服务项目
  198. *
  199. * @param maProject 服务项目
  200. * @return 结果
  201. */
  202. @Override
  203. public int updateMaProject(MaProject maProject) {
  204. return maProjectMapper.updateMaProject(maProject);
  205. }
  206. /**
  207. * 批量删除服务项目
  208. *
  209. * @param ids 需要删除的服务项目主键
  210. * @return 结果
  211. */
  212. @Override
  213. public int deleteMaProjectByIds(String[] ids) {
  214. return maProjectMapper.deleteMaProjectByIds(ids);
  215. }
  216. /**
  217. * 删除服务项目信息
  218. *
  219. * @param id 服务项目主键
  220. * @return 结果
  221. */
  222. @Override
  223. public int deleteMaProjectById(Long id) {
  224. return maProjectMapper.deleteMaProjectById(id);
  225. }
  226. @Override
  227. public Page<ProjectRecommendVo> getProjectRecommend(Page<ProjectRecommendVo> page, ProjectRecommendDTO dto) {
  228. return maProjectMapper.getProjectRecommend(page, dto);
  229. }
  230. @Override
  231. public Page<MerchantsVo> getMerchants(Page<MerchantsVo> page, MerchantsDto dto) {
  232. return maProjectMapper.getMerchants(page, dto);
  233. }
  234. @Override
  235. public Page<BookMerchantVO> selectMerchantList(Page<BookMerchantVO> page, BookMerchantDTO dto) {
  236. return maProjectMapper.selectMerchantList(page, dto);
  237. }
  238. /**
  239. * 校验枚举值是否在指定范围内
  240. *
  241. * @param value
  242. * @param fieldName
  243. * @param values
  244. */
  245. private void checkEnumValue(Integer value, String fieldName, Integer... values) {
  246. if (value == null) {
  247. return;
  248. }
  249. for (Integer item : values) {
  250. if (value.equals(item)) {
  251. return;
  252. }
  253. }
  254. throw new ServiceException(fieldName + "参数不正确");
  255. }
  256. /**
  257. * 校验整数是否为正数
  258. *
  259. * @param value
  260. * @param fieldName
  261. */
  262. private void checkRequiredPositive(Integer value, String fieldName) {
  263. if (value == null || value <= 0) {
  264. throw new ServiceException(fieldName + "不能为空");
  265. }
  266. }
  267. }