v-qinpengfei пре 5 година
родитељ
комит
bc727b2cce
19 измењених фајлова са 692 додато и 34 уклоњено
  1. 1 4
      src/main/java/com/poteviohealth/cgp/integration/CgpIntegrationApplication.java
  2. 37 8
      src/main/java/com/poteviohealth/cgp/integration/config/MybatisPlusConfig.java
  3. 25 0
      src/main/java/com/poteviohealth/cgp/integration/config/TableShardingAlgorithm.java
  4. 56 0
      src/main/java/com/poteviohealth/cgp/integration/controller/feign/IntegrationFeignController.java
  5. 38 0
      src/main/java/com/poteviohealth/cgp/integration/controller/web/IntegrationWebController.java
  6. 71 0
      src/main/java/com/poteviohealth/cgp/integration/database/DataSourceConfig.java
  7. 27 0
      src/main/java/com/poteviohealth/cgp/integration/database/DataSourceDocument.java
  8. 53 0
      src/main/java/com/poteviohealth/cgp/integration/database/DatabaseConfig.java
  9. 16 0
      src/main/java/com/poteviohealth/cgp/integration/mapper/IntegralDetailMapper.java
  10. 38 0
      src/main/java/com/poteviohealth/cgp/integration/mapstruct/IntegralConverter.java
  11. 72 0
      src/main/java/com/poteviohealth/cgp/integration/model/IntegralDetail.java
  12. 33 0
      src/main/java/com/poteviohealth/cgp/integration/model/invo/web/IntegralDetailWebInDTO.java
  13. 30 0
      src/main/java/com/poteviohealth/cgp/integration/model/outvo/web/IntegralDetailWebOutDTO.java
  14. 31 0
      src/main/java/com/poteviohealth/cgp/integration/service/IIntegralDetailService.java
  15. 118 0
      src/main/java/com/poteviohealth/cgp/integration/service/impl/IntegralDetailServiceImpl.java
  16. 12 11
      src/main/resources/develop/application.yml
  17. 18 0
      src/main/resources/integration-sql.yml
  18. 4 0
      src/main/resources/mapper/integration/IntegralDetailMapper.xml
  19. 12 11
      src/main/resources/uat/application.yml

+ 1 - 4
src/main/java/com/poteviohealth/cgp/integration/CgpIntegrationApplication.java

@@ -14,11 +14,8 @@ import org.springframework.context.annotation.ComponentScan;
  * @date: 2020/9/1 10:15
  */
 @EnableDiscoveryClient
-@EnableFeignClients(basePackages = {"com.poteviohealth.cgp.common.integrated.order",
-        "com.poteviohealth.cgp.common.integrated.product",
-        "com.poteviohealth.cgp.common.integrated.customer"})
-@ComponentScan(value = {"com.poteviohealth.cgp"})
 @SpringBootApplication
+@ComponentScan(value = {"com.poteviohealth.cgp"})
 public class CgpIntegrationApplication {
 
     public static void main(String[] args) {

+ 37 - 8
src/main/java/com/poteviohealth/cgp/integration/config/MybatisPlusConfig.java

@@ -1,22 +1,29 @@
 package com.poteviohealth.cgp.integration.config;
 
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
+import com.baomidou.mybatisplus.core.parser.ISqlParser;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
-import org.mybatis.spring.annotation.MapperScan;
+import com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler;
+import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;
+import com.poteviohealth.cgp.common.filter.TokenContext;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.LongValue;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
- * @author LG
- * @since 2019/8/1
- */
+ * MyBatisPlus配置
+ * @Author Qin
+ * @Date 2019/7/25 18:54
+ **/
 @Configuration
-@MapperScan("com.poteviohealth.cgp.integration.mapper")
 public class MybatisPlusConfig {
 
     /**
      * 自动填充功能
-     *
      * @return
      */
     @Bean
@@ -27,12 +34,34 @@ public class MybatisPlusConfig {
     }
 
     /**
-     * mybatis-plus分页插件<br>
-     * 文档:http://mp.baomidou.com<br>
+     * 多租户属于 SQL 解析部分,依赖 MP 分页插件
      */
     @Bean
     public PaginationInterceptor paginationInterceptor() {
         PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+        List<ISqlParser> sqlParserList = new ArrayList<>();
+        TenantSqlParser tenantSqlParser = new TenantSqlParser();
+        tenantSqlParser.setTenantHandler(new TenantHandler() {
+
+            @Override
+            public Expression getTenantId(boolean select) {
+                return new LongValue(TokenContext.cureOperatorId());
+            }
+
+            @Override
+            public String getTenantIdColumn() {
+                return "operator_id";
+            }
+
+            @Override
+            public boolean doTableFilter(String tableName) {
+                // 这里可以判断是否过滤表
+                return false;
+            }
+        });
+
+        sqlParserList.add(tenantSqlParser);
+        paginationInterceptor.setSqlParserList(sqlParserList);
         return paginationInterceptor;
     }
 

+ 25 - 0
src/main/java/com/poteviohealth/cgp/integration/config/TableShardingAlgorithm.java

@@ -0,0 +1,25 @@
+package com.poteviohealth.cgp.integration.config;
+
+import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm;
+import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue;
+import org.springframework.stereotype.Component;
+
+import java.util.Collection;
+
+/**
+ * @Author QIN
+ * @Date 2019/7/15 10:33
+ * @Param
+ * @return
+ **/
+@Component
+public class TableShardingAlgorithm implements PreciseShardingAlgorithm {
+    private final static String SIGN = "_";
+
+
+    @Override
+    public String doSharding(Collection collection, PreciseShardingValue preciseShardingValue) {
+
+        return preciseShardingValue.getLogicTableName()+SIGN + preciseShardingValue.getValue();
+    }
+}

+ 56 - 0
src/main/java/com/poteviohealth/cgp/integration/controller/feign/IntegrationFeignController.java

@@ -0,0 +1,56 @@
+package com.poteviohealth.cgp.integration.controller.feign;
+
+
+import com.poteviohealth.cgp.common.facade.log.OperateType;
+import com.poteviohealth.cgp.common.facade.log.OperationLog;
+import com.poteviohealth.cgp.common.integrated.EntityIdParams;
+import com.poteviohealth.cgp.common.model.VaultsResponse;
+import com.poteviohealth.cgp.integration.database.DataSourceDocument;
+import com.poteviohealth.cgp.integration.service.IIntegralDetailService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ * <p>
+ * 积分表 第三方接口控制器
+ * </p>
+ *
+ * @author potevio
+ * @since 2019-07-22
+ */
+@Controller
+@RequestMapping("/integration/feign")
+@Api(tags = {"第三方-积分相关接口"})
+public class IntegrationFeignController {
+
+    @Autowired
+    private IIntegralDetailService iIntegralDetailService;
+
+    @Autowired
+    protected DataSourceDocument dataSourceDocument;
+
+    @ApiOperation(value = "创建积分表")
+    @RequestMapping(value = "/createTable", method = RequestMethod.POST)
+    @ApiImplicitParam(name = "operatorId", value = "运营商ID", required = true)
+    @ResponseBody
+    @OperationLog(type = OperateType.FEIGN,description = "创建integration表结构")
+    public VaultsResponse<String> createTable(@RequestBody EntityIdParams entityIdParams) {
+        try {
+            Connection connection = dataSourceDocument.getDataSource();
+            return iIntegralDetailService.createTable(connection, entityIdParams.getId());
+        } catch (SQLException e) {
+            //返回异常状态码e
+            return VaultsResponse.exception();
+        }
+    }
+}

+ 38 - 0
src/main/java/com/poteviohealth/cgp/integration/controller/web/IntegrationWebController.java

@@ -0,0 +1,38 @@
+package com.poteviohealth.cgp.integration.controller.web;
+
+import com.poteviohealth.cgp.common.controller.BaseWebController;
+import com.poteviohealth.cgp.common.facade.log.OperateType;
+import com.poteviohealth.cgp.common.facade.log.OperationLog;
+import com.poteviohealth.cgp.common.model.CommonPage;
+import com.poteviohealth.cgp.common.model.VaultsResponse;
+import com.poteviohealth.cgp.integration.model.invo.web.IntegralDetailWebInDTO;
+import com.poteviohealth.cgp.integration.model.outvo.web.IntegralDetailWebOutDTO;
+import com.poteviohealth.cgp.integration.service.IIntegralDetailService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * 积分管理
+ * @Author Qin
+ * @Date 2019/9/10 11:31
+ **/
+@RestController
+@RequestMapping("/integration/web/integration")
+@Api("Customer Web Controller")
+public class IntegrationWebController extends BaseWebController {
+
+  @Autowired
+  private IIntegralDetailService iIntegralDetailService;
+
+  @ApiOperation(value="详情页列表查询")
+  @RequestMapping(value = "/list", method = RequestMethod.POST)
+  @ResponseBody
+  @OperationLog(type = OperateType.SELECT)
+  public VaultsResponse<CommonPage<IntegralDetailWebOutDTO>> list(@RequestBody IntegralDetailWebInDTO integralDetailWebInDTO){
+    return iIntegralDetailService.selectPage(integralDetailWebInDTO);
+  }
+
+}

+ 71 - 0
src/main/java/com/poteviohealth/cgp/integration/database/DataSourceConfig.java

@@ -0,0 +1,71 @@
+package com.poteviohealth.cgp.integration.database;
+
+
+import com.poteviohealth.cgp.integration.config.TableShardingAlgorithm;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shardingsphere.api.config.sharding.ShardingRuleConfiguration;
+import org.apache.shardingsphere.api.config.sharding.TableRuleConfiguration;
+import org.apache.shardingsphere.api.config.sharding.strategy.NoneShardingStrategyConfiguration;
+import org.apache.shardingsphere.api.config.sharding.strategy.StandardShardingStrategyConfiguration;
+import org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+import java.sql.SQLException;
+import java.util.*;
+
+/**
+ * @Author QIN
+ * @Date 2019/7/11 10:26
+ * @Param 数据库工具类
+ * @return
+**/
+@Configuration
+@Qualifier("shardingComplexDataSource")
+@Slf4j
+public class DataSourceConfig {
+
+    private static final String SHARDING_COLUMN_NAME = "operator_id";
+
+    @Resource
+    private DatabaseConfig databaseConfig;
+
+    @Resource
+    private TableShardingAlgorithm tableShardingAlgorithm;
+
+    @Bean
+    public DataSource getDataSource() {
+        return buildDataSource();
+    }
+
+    private DataSource buildDataSource(){
+        //分库设置
+        Map<String, DataSource> dataSourceMap = new HashMap<>(1);
+        //添加数据库
+        dataSourceMap.put(DatabaseConfig.DATABASE_NAME, databaseConfig.createDataSource());
+
+        Collection<TableRuleConfiguration> tableRuleConfigs = new LinkedList();
+        tableRuleConfigs.add(new TableRuleConfiguration("i_integral_detail"));
+
+        ShardingRuleConfiguration shardingRuleConfig = new ShardingRuleConfiguration();
+        shardingRuleConfig.setTableRuleConfigs(tableRuleConfigs);
+        //配置默认库
+        shardingRuleConfig.setDefaultDataSourceName(DatabaseConfig.DATABASE_NAME);
+        shardingRuleConfig.setDefaultDatabaseShardingStrategyConfig(new NoneShardingStrategyConfiguration());
+        shardingRuleConfig.setDefaultTableShardingStrategyConfig(new StandardShardingStrategyConfiguration(SHARDING_COLUMN_NAME,
+                tableShardingAlgorithm));
+
+        // 获取数据源对象
+        DataSource dataSource = null;
+        try {
+            dataSource = ShardingDataSourceFactory.createDataSource(dataSourceMap, shardingRuleConfig, new Properties());
+        } catch (SQLException e) {
+            log.error("buildDataSource error", e);
+        }
+        return dataSource;
+    }
+
+}

+ 27 - 0
src/main/java/com/poteviohealth/cgp/integration/database/DataSourceDocument.java

@@ -0,0 +1,27 @@
+package com.poteviohealth.cgp.integration.database;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ * @PackageName:com.jdd.cgp.order.database
+ * @className:DataSourceDocument
+ * @Description:
+ * @author: QIN
+ * @date: 2019/8/8 19:40
+ */
+@Component
+public class DataSourceDocument {
+
+    @Autowired
+    private DatabaseConfig databaseConfig;
+
+
+    public Connection getDataSource() throws SQLException {
+        //获取连接
+        return databaseConfig.getConnection();
+    }
+}

+ 53 - 0
src/main/java/com/poteviohealth/cgp/integration/database/DatabaseConfig.java

@@ -0,0 +1,53 @@
+package com.poteviohealth.cgp.integration.database;
+
+import com.alibaba.druid.pool.DruidDataSource;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.SQLException;
+
+/**
+ * 获取数据库连接
+ * @author QIN
+ * @date 2019/7/22
+ */
+@Data
+@ConfigurationProperties(prefix = "spring.datasource.druid.database")
+@Component
+public class DatabaseConfig {
+    private String jdbcUrl;
+    private String username;
+    private String password;
+    private String driverClassName;
+    public static final String DATABASE_NAME="datasource";
+
+    /**
+     * 获取数据源
+     * @Author QIN
+     * @Date 2019/7/22 15:02
+     * @Param
+     * @return DataSource
+    **/
+    public DataSource createDataSource() {
+        DruidDataSource result = new DruidDataSource();
+        result.setDriverClassName(getDriverClassName());
+        result.setUrl(getJdbcUrl());
+        result.setUsername(getUsername());
+        result.setPassword(getPassword());
+        return result;
+    }
+
+    /**
+     * 获取连接
+     * @Author QIN
+     * @Date 2019/7/22 15:02
+     * @Param
+     * @return Connection
+     **/
+    public Connection getConnection() throws SQLException {
+        return this.createDataSource().getConnection();
+    }
+}

+ 16 - 0
src/main/java/com/poteviohealth/cgp/integration/mapper/IntegralDetailMapper.java

@@ -0,0 +1,16 @@
+package com.poteviohealth.cgp.integration.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.poteviohealth.cgp.integration.model.IntegralDetail;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @PackageName:com.poteviohealth.cgp.integration.mapper
+ * @className:IntegralDetailMapper
+ * @Description:
+ * @author: QIN
+ * @date: 2020/9/1 15:39
+ */
+@Mapper
+public interface IntegralDetailMapper extends BaseMapper<IntegralDetail> {
+}

+ 38 - 0
src/main/java/com/poteviohealth/cgp/integration/mapstruct/IntegralConverter.java

@@ -0,0 +1,38 @@
+package com.poteviohealth.cgp.integration.mapstruct;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.poteviohealth.cgp.common.model.CommonPage;
+import com.poteviohealth.cgp.integration.model.IntegralDetail;
+import com.poteviohealth.cgp.integration.model.outvo.web.IntegralDetailWebOutDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+/**
+ * @description 实体映射工具
+ * @Date 6:30 PM 2019/7/25
+ * @Author MoonJiDoo
+ **/
+@Mapper()
+public interface IntegralConverter {
+    IntegralConverter INSTANCE = Mappers.getMapper(IntegralConverter.class);
+
+    /**
+     * 映射
+     *
+     * @param integralDetail
+     * @return
+     * @Date 6:29 PM 2019/7/25
+     * @Author MoonJiDoo
+     **/
+    IntegralDetailWebOutDTO model2WebDTO(IntegralDetail integralDetail);
+
+    /**
+     * 映射
+     *
+     * @param integralDetailIPage
+     * @return
+     * @Date 6:29 PM 2019/7/25
+     * @Author MoonJiDoo
+     **/
+    CommonPage<IntegralDetailWebOutDTO> model2WebDTO(IPage<IntegralDetail> integralDetailIPage);
+
+}

+ 72 - 0
src/main/java/com/poteviohealth/cgp/integration/model/IntegralDetail.java

@@ -0,0 +1,72 @@
+package com.poteviohealth.cgp.integration.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.poteviohealth.cgp.common.model.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import org.apache.ibatis.type.Alias;
+
+/**
+ * @PackageName:com.poteviohealth.cgp.integration.model
+ * @className:Integral
+ * @Description: 积分明细
+ * @author: QIN
+ * @date: 2020/9/1 10:54
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Accessors(chain = true)
+@TableName("i_integral_detail")
+@Alias("i_integral_detail")
+public class IntegralDetail extends BaseEntity {
+
+    /**
+     * 逻辑主键
+     */
+    private Long integralDetailId;
+
+    /**
+     * 运营商id
+     */
+    private Integer operatorId;
+
+    /**
+     * 客户id
+     */
+    private Long customerId;
+
+    /**
+     * 团长id
+     */
+    private Integer groupLeaderId;
+
+    /**
+     * 逻辑主键
+     */
+    private Long orderId;
+
+    /**
+     * 订单编号
+     */
+    private String sn;
+
+    /**
+     * 供应商id
+     */
+    private Integer supplierId;
+
+    /**
+     * 操作事件
+     */
+    private String event;
+
+    /**
+     * 积分
+     */
+    private Long integral;
+}

+ 33 - 0
src/main/java/com/poteviohealth/cgp/integration/model/invo/web/IntegralDetailWebInDTO.java

@@ -0,0 +1,33 @@
+package com.poteviohealth.cgp.integration.model.invo.web;
+
+import com.poteviohealth.cgp.common.model.PageQuery;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * 详情列表查询入参
+ * @Author Qin
+ * @Date 2019/7/26 18:46
+ **/
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="详情列表查询入参")
+public class IntegralDetailWebInDTO extends PageQuery {
+
+    @ApiModelProperty(value="起始日期-start")
+    private Date startDate;
+
+    @ApiModelProperty(value="结束日期-end")
+    private Date endDate;
+
+    @ApiModelProperty(value="用户Id")
+    private Long customerId;
+}

+ 30 - 0
src/main/java/com/poteviohealth/cgp/integration/model/outvo/web/IntegralDetailWebOutDTO.java

@@ -0,0 +1,30 @@
+package com.poteviohealth.cgp.integration.model.outvo.web;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author Qin
+ */
+@Data
+@ApiModel(value="详情列表查询出参")
+public class IntegralDetailWebOutDTO {
+
+
+    @ApiModelProperty(value="订单号",example = "dd243535")
+    private String sn;
+
+    @ApiModelProperty(value="事件",example = "10")
+    private String event;
+
+    @ApiModelProperty(value="积分",example = "张三")
+    private Long integral;
+
+    @ApiModelProperty(value="创建时间")
+    private Date createDate;
+
+
+}

+ 31 - 0
src/main/java/com/poteviohealth/cgp/integration/service/IIntegralDetailService.java

@@ -0,0 +1,31 @@
+package com.poteviohealth.cgp.integration.service;
+
+import com.poteviohealth.cgp.common.model.CommonPage;
+import com.poteviohealth.cgp.common.model.VaultsResponse;
+import com.poteviohealth.cgp.common.service.IBaseService;
+import com.poteviohealth.cgp.integration.model.IntegralDetail;
+import com.poteviohealth.cgp.integration.model.invo.web.IntegralDetailWebInDTO;
+import com.poteviohealth.cgp.integration.model.outvo.web.IntegralDetailWebOutDTO;
+
+import java.sql.Connection;
+
+/**
+ * @author Qin
+ */
+public interface IIntegralDetailService extends IBaseService<IntegralDetail> {
+
+    /**
+     * 创建数据库表
+     * @param  conn 数据库连接
+     * @param mark  标示(运营商ID)
+     * @return ApiJsonResult
+     **/
+    VaultsResponse<String> createTable(Connection conn, Integer mark);
+
+    /**
+     * web查询分页
+     * @param  integralDetailWebInDTO web入参
+     * @return VaultsResponse<CommonPage<IntegralDetailWebOutDTO>>
+     **/
+    VaultsResponse<CommonPage<IntegralDetailWebOutDTO>> selectPage(IntegralDetailWebInDTO integralDetailWebInDTO);
+}

+ 118 - 0
src/main/java/com/poteviohealth/cgp/integration/service/impl/IntegralDetailServiceImpl.java

@@ -0,0 +1,118 @@
+package com.poteviohealth.cgp.integration.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.poteviohealth.cgp.common.filter.TokenContext;
+import com.poteviohealth.cgp.common.model.CommonPage;
+import com.poteviohealth.cgp.common.model.VaultsResponse;
+import com.poteviohealth.cgp.common.service.impl.BaseServiceImpl;
+import com.poteviohealth.cgp.integration.mapper.IntegralDetailMapper;
+import com.poteviohealth.cgp.integration.mapstruct.IntegralConverter;
+import com.poteviohealth.cgp.integration.model.IntegralDetail;
+import com.poteviohealth.cgp.integration.model.invo.web.IntegralDetailWebInDTO;
+import com.poteviohealth.cgp.integration.model.outvo.web.IntegralDetailWebOutDTO;
+import com.poteviohealth.cgp.integration.service.IIntegralDetailService;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
+
+/**
+ * @PackageName:com.poteviohealth.cgp.integration.service.impl
+ * @className:IntegralDetailServiceImpl
+ * @Description:
+ * @author: QIN
+ * @date: 2020/9/1 15:46
+ */
+@Service
+@Log4j2
+public class IntegralDetailServiceImpl extends BaseServiceImpl<IntegralDetailMapper, IntegralDetail> implements IIntegralDetailService {
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public VaultsResponse<String> createTable(Connection conn, Integer mark) {
+        //获取yml配置文件
+        StringBuilder stringBuilder = new StringBuilder();
+        try {
+            YamlPropertiesFactoryBean yamlMapFactoryBean = new YamlPropertiesFactoryBean();
+            yamlMapFactoryBean.setResources(new ClassPathResource("integration-sql.yml"));
+            Properties properties = yamlMapFactoryBean.getObject();
+
+            properties.forEach((k, v) -> {
+                //获取执行次数
+
+                String tableName = k.toString().substring(0,k.toString().lastIndexOf('_')+1);
+                tableName+=  mark.toString();
+
+                //执行替换
+                String sql = v.toString().replace("$", mark.toString());
+                Statement statement = null;
+                try {
+                    statement = conn.createStatement();
+
+                    //执行创建表
+                    statement.executeUpdate("DROP TABLE IF EXISTS `"+tableName+"`");
+                    statement.executeUpdate(sql);
+                } catch (SQLException e) {
+                    log.error("{createTable}创建表[" + k + "]时异常;");
+                    stringBuilder.append("创建表[" + k + "]时异常;");
+                    //break;
+                } finally {
+                    if (statement != null) {
+                        try {
+                            statement.close();
+                        } catch (SQLException e) {
+                            log.error("close statement error", e);
+                        }
+                    }
+                }
+            });
+
+            if (stringBuilder.length() == 0) {
+                return VaultsResponse.success();
+            }
+        } catch (Exception e) {
+            log.error("创建表失败", e);
+            return VaultsResponse.failed(stringBuilder.toString());
+        } finally {
+            try {
+                if (conn != null) {
+                    conn.close();
+                }
+            } catch (SQLException e) {
+                log.error("close connection error", e);
+            }
+        }
+
+        return VaultsResponse.success();
+    }
+
+    @Override
+    public VaultsResponse<CommonPage<IntegralDetailWebOutDTO>> selectPage(IntegralDetailWebInDTO integralDetailWebInDTO) {
+
+        IPage<IntegralDetail> pageOrder = selectOrderIPage(integralDetailWebInDTO);
+        return VaultsResponse.success(IntegralConverter.INSTANCE.model2WebDTO(pageOrder));
+    }
+
+    private IPage<IntegralDetail> selectOrderIPage(IntegralDetailWebInDTO integralDetailWebInDTO) {
+        Page<IntegralDetail> page = new Page<>(integralDetailWebInDTO.getPageNum(), integralDetailWebInDTO.getPageSize());
+
+        QueryWrapper<IntegralDetail> orderQueryWrapper = new QueryWrapper<>();
+        orderQueryWrapper.eq("customer_id",integralDetailWebInDTO.getCustomerId());
+        if (null != integralDetailWebInDTO.getStartDate()) {
+            orderQueryWrapper.le("created_date", integralDetailWebInDTO.getStartDate());
+        }
+        if (null != integralDetailWebInDTO.getEndDate()) {
+            orderQueryWrapper.ge("created_date", integralDetailWebInDTO.getEndDate());
+        }
+        orderQueryWrapper.orderByDesc("created_date");
+        return super.page(page, orderQueryWrapper);
+    }
+
+}

+ 12 - 11
src/main/resources/develop/application.yml

@@ -23,17 +23,18 @@ spring:
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     druid:
-      url: jdbc:mysql://123.56.196.46:3306/cgp_integration?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
-      username: cgp
-      password: jd0709
-      filter: stat
-      max-active: 100
-      initial-size: 5
-      max-wait: 60000
-      min-idle: 1
-      validation-query: SELECT 1
-      test-while-idle: true
-      driver-class-name: com.mysql.cj.jdbc.Driver
+      database:
+        jdbc-url: jdbc:mysql://123.56.196.46:3306/cgp_integration?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
+        username: cgp
+        password: jd0709
+        filter: stat
+        max-active: 100
+        initial-size: 5
+        max-wait: 60000
+        min-idle: 1
+        validation-query: SELECT 1
+        test-while-idle: true
+        driver-class-name: com.mysql.cj.jdbc.Driver
   data:
     elasticsearch:
       cluster-name: my-application

+ 18 - 0
src/main/resources/integration-sql.yml

@@ -0,0 +1,18 @@
+i_integral_detail_1 : "CREATE TABLE `i_integral_detail_$` (
+                         `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
+                         `created_date` datetime NOT NULL COMMENT '创建时间',
+                         `modified_date` datetime NOT NULL COMMENT '修改时间',
+                         `yn` int(1) NOT NULL COMMENT '标记删除 0:未删除1:已删除',
+                         `integral_detail_id` bigint(20) NOT NULL COMMENT '逻辑主键',
+                         `operator_id` int(11) NOT NULL COMMENT '运营商id',
+                         `customer_id` bigint(20) DEFAULT NULL COMMENT '客户id',
+                         `group_leader_id` int(11) DEFAULT NULL COMMENT '团长id',
+                         `order_id` bigint(20) DEFAULT NULL COMMENT '订单id',
+                         `supplier_id` int(11) DEFAULT NULL COMMENT '供应商id',
+                         `event` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '操作事件',
+                         `integral` bigint(20) NOT NULL COMMENT '积分',
+                         `sn` varchar(31) COLLATE utf8_bin DEFAULT NULL COMMENT '订单号',
+                         PRIMARY KEY (`id`),
+                         KEY `idx_integral_detail_id` (`integral_detail_id`) USING BTREE,
+                         KEY `idx_operator_id` (`operator_id`) USING BTREE
+                       ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin"

+ 4 - 0
src/main/resources/mapper/integration/IntegralDetailMapper.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.poteviohealth.cgp.integration.mapper.IntegralDetailMapper">
+</mapper>

+ 12 - 11
src/main/resources/uat/application.yml

@@ -23,17 +23,18 @@ spring:
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     druid:
-      url: jdbc:mysql://123.56.196.46:3306/cgp_integration?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
-      username: cgp
-      password: jd0709
-      filter: stat
-      max-active: 100
-      initial-size: 5
-      max-wait: 60000
-      min-idle: 1
-      validation-query: SELECT 1
-      test-while-idle: true
-      driver-class-name: com.mysql.cj.jdbc.Driver
+      database:
+        jdbc-url: jdbc:mysql://123.56.196.46:3306/cgp_integration?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
+        username: cgp
+        password: jd0709
+        filter: stat
+        max-active: 100
+        initial-size: 5
+        max-wait: 60000
+        min-idle: 1
+        validation-query: SELECT 1
+        test-while-idle: true
+        driver-class-name: com.mysql.cj.jdbc.Driver
   data:
     elasticsearch:
       cluster-name: my-application