IntegralDetailServiceImpl.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package com.poteviohealth.cgp.integration.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.poteviohealth.cgp.common.filter.MiniJwtVO;
  7. import com.poteviohealth.cgp.common.filter.TokenContext;
  8. import com.poteviohealth.cgp.common.integrated.customer.model.CustomerIntegration;
  9. import com.poteviohealth.cgp.common.model.CommonPage;
  10. import com.poteviohealth.cgp.common.model.PageQuery;
  11. import com.poteviohealth.cgp.common.model.VaultsResponse;
  12. import com.poteviohealth.cgp.common.service.impl.BaseServiceImpl;
  13. import com.poteviohealth.cgp.common.utils.CgpTool;
  14. import com.poteviohealth.cgp.integration.mapper.IntegralDetailMapper;
  15. import com.poteviohealth.cgp.integration.mapstruct.IntegralConverter;
  16. import com.poteviohealth.cgp.integration.model.IntegralDetail;
  17. import com.poteviohealth.cgp.integration.model.invo.web.IntegralDetailWebInDTO;
  18. import com.poteviohealth.cgp.integration.model.outvo.app.IntegrationDetailOutDTO;
  19. import com.poteviohealth.cgp.integration.model.outvo.web.IntegralDetailWebOutDTO;
  20. import com.poteviohealth.cgp.integration.service.IIntegralDetailService;
  21. import lombok.extern.log4j.Log4j2;
  22. import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
  23. import org.springframework.core.io.ClassPathResource;
  24. import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
  25. import org.springframework.security.core.context.SecurityContextHolder;
  26. import org.springframework.stereotype.Service;
  27. import org.springframework.transaction.annotation.Transactional;
  28. import java.sql.Connection;
  29. import java.sql.SQLException;
  30. import java.sql.Statement;
  31. import java.util.List;
  32. import java.util.Properties;
  33. /**
  34. * @PackageName:com.poteviohealth.cgp.integration.service.impl
  35. * @className:IntegralDetailServiceImpl
  36. * @Description:
  37. * @author: QIN
  38. * @date: 2020/9/1 15:46
  39. */
  40. @Service
  41. @Log4j2
  42. public class IntegralDetailServiceImpl extends BaseServiceImpl<IntegralDetailMapper, IntegralDetail> implements IIntegralDetailService {
  43. @Override
  44. @Transactional(rollbackFor = Exception.class)
  45. public VaultsResponse<String> createTable(Connection conn, Integer mark) {
  46. //获取yml配置文件
  47. StringBuilder stringBuilder = new StringBuilder();
  48. try {
  49. YamlPropertiesFactoryBean yamlMapFactoryBean = new YamlPropertiesFactoryBean();
  50. yamlMapFactoryBean.setResources(new ClassPathResource("integration-sql.yml"));
  51. Properties properties = yamlMapFactoryBean.getObject();
  52. properties.forEach((k, v) -> {
  53. //获取执行次数
  54. String tableName = k.toString().substring(0,k.toString().lastIndexOf('_')+1);
  55. tableName+= mark.toString();
  56. //执行替换
  57. String sql = v.toString().replace("$", mark.toString());
  58. Statement statement = null;
  59. try {
  60. statement = conn.createStatement();
  61. //执行创建表
  62. statement.executeUpdate("DROP TABLE IF EXISTS `"+tableName+"`");
  63. statement.executeUpdate(sql);
  64. } catch (SQLException e) {
  65. log.error("{createTable}创建表[" + k + "]时异常;");
  66. stringBuilder.append("创建表[" + k + "]时异常;");
  67. //break;
  68. } finally {
  69. if (statement != null) {
  70. try {
  71. statement.close();
  72. } catch (SQLException e) {
  73. log.error("close statement error", e);
  74. }
  75. }
  76. }
  77. });
  78. if (stringBuilder.length() == 0) {
  79. return VaultsResponse.success();
  80. }
  81. } catch (Exception e) {
  82. log.error("创建表失败", e);
  83. return VaultsResponse.failed(stringBuilder.toString());
  84. } finally {
  85. try {
  86. if (conn != null) {
  87. conn.close();
  88. }
  89. } catch (SQLException e) {
  90. log.error("close connection error", e);
  91. }
  92. }
  93. return VaultsResponse.success();
  94. }
  95. @Override
  96. public VaultsResponse<CommonPage<IntegralDetailWebOutDTO>> selectPage(IntegralDetailWebInDTO integralDetailWebInDTO) {
  97. CommonPage<IntegralDetail> pageOrder = selectOrderIPage(integralDetailWebInDTO);
  98. return VaultsResponse.success(IntegralConverter.INSTANCE.model2WebDTO(pageOrder));
  99. }
  100. @Override
  101. public VaultsResponse<CommonPage<IntegrationDetailOutDTO>> selectPage(PageQuery pageQuery) {
  102. IntegralDetailWebInDTO integralDetailWebInDTO = new IntegralDetailWebInDTO();
  103. integralDetailWebInDTO.setCustomerId(TokenContext.cureMiniUser().getCustomerId());
  104. integralDetailWebInDTO.setPageSize(pageQuery.getPageSize());
  105. integralDetailWebInDTO.setPageNum(pageQuery.getPageNum());
  106. CommonPage<IntegralDetail> pageOrder = selectOrderIPage(integralDetailWebInDTO);
  107. return VaultsResponse.success(IntegralConverter.INSTANCE.model2AppDTO(pageOrder));
  108. }
  109. @Override
  110. @Transactional(rollbackFor = Exception.class)
  111. public VaultsResponse saveDetail(List<CustomerIntegration> customerIntegration) {
  112. List<IntegralDetail> list = IntegralConverter.INSTANCE.model2FeginDTO(customerIntegration);
  113. for (IntegralDetail detail : list) {
  114. createOperator(detail.getOperatorId());
  115. detail.setIntegralDetailId(CgpTool.generateKey());
  116. super.save(detail);
  117. }
  118. return VaultsResponse.success();
  119. }
  120. private CommonPage<IntegralDetail> selectOrderIPage(IntegralDetailWebInDTO integralDetailWebInDTO) {
  121. IPage<IntegralDetail> page = new Page<>(integralDetailWebInDTO.getPageNum(), integralDetailWebInDTO.getPageSize());
  122. QueryWrapper<IntegralDetail> orderQueryWrapper = new QueryWrapper<>();
  123. orderQueryWrapper.eq("customer_id",integralDetailWebInDTO.getCustomerId());
  124. if (null != integralDetailWebInDTO.getStartDate()) {
  125. orderQueryWrapper.ge("created_date", integralDetailWebInDTO.getStartDate());
  126. }
  127. if (null != integralDetailWebInDTO.getEndDate()) {
  128. orderQueryWrapper.le("created_date", integralDetailWebInDTO.getEndDate());
  129. }
  130. orderQueryWrapper.orderByDesc("created_date");
  131. return super.commonPage(page, orderQueryWrapper);
  132. }
  133. private void createOperator(Integer operatorId){
  134. MiniJwtVO jwtVO = new MiniJwtVO();
  135. jwtVO.setOperatorId(operatorId);
  136. UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(jwtVO, null, null);
  137. SecurityContextHolder.getContext().setAuthentication(authentication);
  138. }
  139. }