CommissionRuleServiceImpl.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. package com.fuint.common.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.fuint.common.param.CommissionRuleItemParam;
  6. import com.fuint.common.param.CommissionRuleParam;
  7. import com.fuint.framework.annoation.OperationServiceLog;
  8. import com.fuint.framework.exception.BusinessCheckException;
  9. import com.fuint.framework.pagination.PaginationRequest;
  10. import com.fuint.framework.pagination.PaginationResponse;
  11. import com.fuint.repository.mapper.MtCommissionRuleItemMapper;
  12. import com.fuint.repository.mapper.MtCommissionRuleMapper;
  13. import com.fuint.common.service.CommissionRuleService;
  14. import com.fuint.common.enums.StatusEnum;
  15. import com.fuint.repository.model.MtCommissionRule;
  16. import com.fuint.repository.model.MtCommissionRuleItem;
  17. import com.fuint.utils.StringUtil;
  18. import com.github.pagehelper.PageHelper;
  19. import lombok.AllArgsConstructor;
  20. import org.apache.commons.lang.StringUtils;
  21. import org.slf4j.Logger;
  22. import org.slf4j.LoggerFactory;
  23. import com.github.pagehelper.Page;
  24. import org.springframework.beans.BeanUtils;
  25. import org.springframework.data.domain.PageImpl;
  26. import org.springframework.data.domain.PageRequest;
  27. import org.springframework.stereotype.Service;
  28. import org.springframework.transaction.annotation.Transactional;
  29. import java.util.*;
  30. /**
  31. * 分销提成服务接口
  32. *
  33. * Created by FSQ
  34. * CopyRight https://www.fuint.cn
  35. */
  36. @Service
  37. @AllArgsConstructor
  38. public class CommissionRuleServiceImpl extends ServiceImpl<MtCommissionRuleMapper, MtCommissionRule> implements CommissionRuleService {
  39. private static final Logger logger = LoggerFactory.getLogger(CommissionRuleServiceImpl.class);
  40. private MtCommissionRuleMapper mtCommissionRuleMapper;
  41. private MtCommissionRuleItemMapper mtCommissionRuleItemMapper;
  42. /**
  43. * 分页查询规则列表
  44. *
  45. * @param paginationRequest
  46. * @return
  47. */
  48. @Override
  49. public PaginationResponse<MtCommissionRule> queryDataByPagination(PaginationRequest paginationRequest) {
  50. Page<MtCommissionRule> pageHelper = PageHelper.startPage(paginationRequest.getCurrentPage(), paginationRequest.getPageSize());
  51. LambdaQueryWrapper<MtCommissionRule> lambdaQueryWrapper = Wrappers.lambdaQuery();
  52. lambdaQueryWrapper.ne(MtCommissionRule::getStatus, StatusEnum.DISABLE.getKey());
  53. String name = paginationRequest.getSearchParams().get("name") == null ? "" : paginationRequest.getSearchParams().get("name").toString();
  54. if (StringUtils.isNotBlank(name)) {
  55. lambdaQueryWrapper.like(MtCommissionRule::getName, name);
  56. }
  57. String status = paginationRequest.getSearchParams().get("status") == null ? "" : paginationRequest.getSearchParams().get("status").toString();
  58. if (StringUtils.isNotBlank(status)) {
  59. lambdaQueryWrapper.eq(MtCommissionRule::getStatus, status);
  60. }
  61. String target = paginationRequest.getSearchParams().get("target") == null ? "" : paginationRequest.getSearchParams().get("target").toString();
  62. if (StringUtils.isNotBlank(target)) {
  63. lambdaQueryWrapper.eq(MtCommissionRule::getTarget, target);
  64. }
  65. String type = paginationRequest.getSearchParams().get("type") == null ? "" : paginationRequest.getSearchParams().get("type").toString();
  66. if (StringUtils.isNotBlank(type)) {
  67. lambdaQueryWrapper.eq(MtCommissionRule::getType, type);
  68. }
  69. String merchantId = paginationRequest.getSearchParams().get("merchantId") == null ? "" : paginationRequest.getSearchParams().get("merchantId").toString();
  70. if (StringUtils.isNotBlank(merchantId)) {
  71. lambdaQueryWrapper.eq(MtCommissionRule::getMerchantId, merchantId);
  72. }
  73. String storeId = paginationRequest.getSearchParams().get("storeId") == null ? "" : paginationRequest.getSearchParams().get("storeId").toString();
  74. if (StringUtils.isNotBlank(storeId)) {
  75. lambdaQueryWrapper.eq(MtCommissionRule::getStoreId, storeId);
  76. }
  77. lambdaQueryWrapper.orderByDesc(MtCommissionRule::getId);
  78. List<MtCommissionRule> dataList = mtCommissionRuleMapper.selectList(lambdaQueryWrapper);
  79. PageRequest pageRequest = PageRequest.of(paginationRequest.getCurrentPage(), paginationRequest.getPageSize());
  80. PageImpl pageImpl = new PageImpl(dataList, pageRequest, pageHelper.getTotal());
  81. PaginationResponse<MtCommissionRule> paginationResponse = new PaginationResponse(pageImpl, MtCommissionRule.class);
  82. paginationResponse.setTotalPages(pageHelper.getPages());
  83. paginationResponse.setTotalElements(pageHelper.getTotal());
  84. paginationResponse.setContent(dataList);
  85. return paginationResponse;
  86. }
  87. /**
  88. * 添加分销提成规则
  89. *
  90. * @param commissionRule
  91. * @return
  92. */
  93. @Override
  94. @Transactional(rollbackFor = Exception.class)
  95. @OperationServiceLog(description = "新增分销提成规则")
  96. public MtCommissionRule addCommissionRule(CommissionRuleParam commissionRule) throws BusinessCheckException {
  97. MtCommissionRule mtCommissionRule = new MtCommissionRule();
  98. BeanUtils.copyProperties(commissionRule, mtCommissionRule);
  99. mtCommissionRule.setStatus(StatusEnum.ENABLED.getKey());
  100. Date date = new Date();
  101. mtCommissionRule.setCreateTime(date);
  102. mtCommissionRule.setUpdateTime(date);
  103. mtCommissionRule.setMerchantId(mtCommissionRule.getMerchantId()== null ? 0 : mtCommissionRule.getMerchantId());
  104. boolean result = save(mtCommissionRule);
  105. if (result) {
  106. if (commissionRule.getDetailList() != null && commissionRule.getDetailList().size() > 0) {
  107. String storeIds = StringUtil.join(commissionRule.getStoreIdList().toArray(), ",");
  108. for (CommissionRuleItemParam itemParam : commissionRule.getDetailList()) {
  109. MtCommissionRuleItem mtCommissionRuleItem = new MtCommissionRuleItem();
  110. mtCommissionRuleItem.setRuleId(mtCommissionRule.getId());
  111. mtCommissionRuleItem.setType(mtCommissionRule.getType());
  112. mtCommissionRuleItem.setTarget(mtCommissionRule.getTarget());
  113. mtCommissionRuleItem.setMerchantId(mtCommissionRule.getMerchantId());
  114. mtCommissionRuleItem.setStoreId(mtCommissionRule.getStoreId());
  115. mtCommissionRuleItem.setStoreIds(storeIds);
  116. mtCommissionRuleItem.setCreateTime(date);
  117. mtCommissionRuleItem.setUpdateTime(date);
  118. mtCommissionRuleItem.setOperator(commissionRule.getOperator());
  119. mtCommissionRuleItem.setStatus(mtCommissionRule.getStatus());
  120. mtCommissionRuleItem.setMethod(itemParam.getMethod());
  121. mtCommissionRuleItem.setTarget(commissionRule.getTarget());
  122. mtCommissionRuleItem.setTargetId(itemParam.getGoodsId());
  123. mtCommissionRuleItem.setMember(itemParam.getMemberVal());
  124. mtCommissionRuleItem.setGuest(itemParam.getVisitorVal());
  125. mtCommissionRuleItemMapper.insert(mtCommissionRuleItem);
  126. }
  127. }
  128. } else {
  129. logger.error("新增分销提成规则失败...");
  130. throw new BusinessCheckException("新增分销方案规则失败");
  131. }
  132. return mtCommissionRule;
  133. }
  134. /**
  135. * 根据ID获取规则信息
  136. *
  137. * @param id
  138. */
  139. @Override
  140. public MtCommissionRule queryCommissionRuleById(Integer id) {
  141. return mtCommissionRuleMapper.selectById(id);
  142. }
  143. /**
  144. * 更新分销提成规则
  145. *
  146. * @param commissionRule
  147. * @throws BusinessCheckException
  148. */
  149. @Override
  150. @Transactional(rollbackFor = Exception.class)
  151. @OperationServiceLog(description = "更新分销提成规则")
  152. public MtCommissionRule updateCommissionRule(CommissionRuleParam commissionRule) throws BusinessCheckException {
  153. MtCommissionRule mtCommissionRule = queryCommissionRuleById(commissionRule.getId());
  154. if (mtCommissionRule == null) {
  155. logger.error("更新分销提成规则失败...");
  156. throw new BusinessCheckException("该数据状态异常");
  157. }
  158. mtCommissionRule.setId(commissionRule.getId());
  159. if (commissionRule.getStoreId() != null) {
  160. mtCommissionRule.setStoreId(commissionRule.getStoreId());
  161. }
  162. if (commissionRule.getDescription() != null) {
  163. mtCommissionRule.setDescription(commissionRule.getDescription());
  164. }
  165. if (commissionRule.getOperator() != null) {
  166. mtCommissionRule.setOperator(commissionRule.getOperator());
  167. }
  168. if (commissionRule.getStatus() != null) {
  169. mtCommissionRule.setStatus(commissionRule.getStatus());
  170. if (commissionRule.getStatus().equals(StatusEnum.DISABLE.getKey())) {
  171. mtCommissionRuleItemMapper.deleteByRuleId(commissionRule.getId(), new Date());
  172. }
  173. }
  174. mtCommissionRule.setUpdateTime(new Date());
  175. mtCommissionRuleMapper.updateById(mtCommissionRule);
  176. return mtCommissionRule;
  177. }
  178. @Override
  179. public List<MtCommissionRule> queryCommissionRuleByParams(Map<String, Object> params) {
  180. String status = params.get("status") == null ? StatusEnum.ENABLED.getKey(): params.get("status").toString();
  181. String storeId = params.get("storeId") == null ? "" : params.get("storeId").toString();
  182. String name = params.get("name") == null ? "" : params.get("name").toString();
  183. LambdaQueryWrapper<MtCommissionRule> lambdaQueryWrapper = Wrappers.lambdaQuery();
  184. if (StringUtils.isNotBlank(name)) {
  185. lambdaQueryWrapper.like(MtCommissionRule::getName, name);
  186. }
  187. if (StringUtils.isNotBlank(status)) {
  188. lambdaQueryWrapper.eq(MtCommissionRule::getStatus, status);
  189. }
  190. if (StringUtils.isNotBlank(storeId)) {
  191. lambdaQueryWrapper.and(wq -> wq
  192. .eq(MtCommissionRule::getStoreId, 0)
  193. .or()
  194. .eq(MtCommissionRule::getStoreId, storeId));
  195. }
  196. lambdaQueryWrapper.orderByAsc(MtCommissionRule::getId);
  197. List<MtCommissionRule> dataList = mtCommissionRuleMapper.selectList(lambdaQueryWrapper);
  198. return dataList;
  199. }
  200. }