diff --git a/mallinkAdmin/pom.xml b/mallinkAdmin/pom.xml
index 23ad528c2..3f93cfb95 100644
--- a/mallinkAdmin/pom.xml
+++ b/mallinkAdmin/pom.xml
@@ -61,6 +61,7 @@
spring-boot-maven-plugin
true
+
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestCustomerController.java b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestCustomerController.java
new file mode 100755
index 000000000..a736c0e30
--- /dev/null
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestCustomerController.java
@@ -0,0 +1,85 @@
+package com.iformall.controller.invest;
+
+import java.util.Arrays;
+import java.util.List;
+
+import com.iformall.annotation.SystemControllerLog;
+import com.iformall.common.ResultData;
+import com.iformall.domain.po.InvestCustomerEntity;
+import com.iformall.service.invest.InvestCustomerService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.beans.factory.annotation.Autowired;
+
+
+/**
+ * 客户管理
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+@Slf4j
+@RestController
+@RequestMapping("invest/customer")
+@Api(tags = "客户管理")
+public class InvestCustomerController {
+ @Autowired
+ private InvestCustomerService investCustomerService;
+
+ /**
+ * 客户列表
+ */
+ @ApiOperation("客户列表")
+ @SystemControllerLog(description = "客户列表")
+ @PostMapping("/list")
+ public ResultData list(@RequestBody InvestCustomerEntity params) {
+ List page = investCustomerService.queryPage(params);
+ return new ResultData(page);
+ }
+
+
+ /**
+ * 客户详细信息
+ */
+ @SystemControllerLog(description = "客户详细信息")
+ @GetMapping("/info/{id}")
+ public ResultData info(@PathVariable("id") Long id) {
+ InvestCustomerEntity investCustomer = investCustomerService.getById(id);
+ return new ResultData(investCustomer);
+ }
+
+ /**
+ * 保存客户
+ */
+ @SystemControllerLog(description = "保存客户")
+ @PostMapping("/save")
+ public ResultData save(@RequestBody InvestCustomerEntity investCustomer) {
+ investCustomerService.save(investCustomer);
+ return new ResultData();
+ }
+
+ /**
+ * 修改客户信息
+ */
+ @SystemControllerLog(description = "修改客户信息")
+ @PostMapping("/update")
+ public ResultData update(@RequestBody InvestCustomerEntity investCustomer) {
+ investCustomerService.updateById(investCustomer);
+
+ return new ResultData();
+ }
+
+ /**
+ * 删除客户信息
+ */
+ @SystemControllerLog(description = "删除客户信息")
+ @GetMapping("/delete")
+ public ResultData delete(@RequestBody Long[] ids) {
+ investCustomerService.removeByIds(Arrays.asList(ids));
+ return new ResultData();
+ }
+
+}
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestDemandController.java b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestDemandController.java
new file mode 100755
index 000000000..fc481c6e8
--- /dev/null
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestDemandController.java
@@ -0,0 +1,86 @@
+package com.iformall.controller.invest;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.iformall.common.ResultData;
+import com.iformall.domain.po.InvestDemandEntity;
+import com.iformall.service.invest.InvestDemandService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+
+
+
+/**
+ * 需求管理
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:42
+ */
+@Slf4j
+@RestController
+@RequestMapping("invest/demand")
+@Api(tags = "需求管理")
+public class InvestDemandController {
+ @Autowired
+ private InvestDemandService investDemandService;
+
+ /**
+ * 分页列表
+ */
+ @ApiOperation("分页列表接口")
+ @PostMapping("/list")
+ public ResultData list(@RequestBody InvestDemandEntity params){
+ List page = investDemandService.queryPage(params);
+
+ return new ResultData(page);
+ }
+
+
+ /**
+ * 信息
+ */
+ @GetMapping("/info/{id}")
+ public ResultData info(@PathVariable("id") Long id){
+ InvestDemandEntity investDemand = investDemandService.getById(id);
+
+ return new ResultData(investDemand);
+ }
+
+ /**
+ * 保存
+ */
+ @PostMapping("/save")
+ public ResultData save(@RequestBody InvestDemandEntity investDemand){
+ investDemandService.save(investDemand);
+
+ return new ResultData();
+ }
+
+ /**
+ * 修改
+ */
+ @PostMapping("/update")
+ public ResultData update(@RequestBody InvestDemandEntity investDemand){
+ investDemandService.updateById(investDemand);
+
+ return new ResultData();
+ }
+
+ /**
+ * 删除
+ */
+ @GetMapping("/delete")
+ public ResultData delete(@RequestBody Long[] ids){
+ investDemandService.removeByIds(Arrays.asList(ids));
+
+ return new ResultData();
+ }
+
+}
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestFollowRecordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestFollowRecordController.java
new file mode 100755
index 000000000..f828dc76c
--- /dev/null
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestFollowRecordController.java
@@ -0,0 +1,86 @@
+package com.iformall.controller.invest;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import com.iformall.common.ResultData;
+import com.iformall.domain.po.InvestFollowRecordEntity;
+import com.iformall.service.invest.InvestFollowRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+
+
+
+/**
+ * 跟踪管理
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+@Slf4j
+@RestController
+@RequestMapping("invest/followrecord")
+@Api(tags = "跟踪管理")
+public class InvestFollowRecordController {
+ @Autowired
+ private InvestFollowRecordService investFollowRecordService;
+
+ /**
+ * 分页列表
+ */
+ @ApiOperation("分页列表接口")
+ @PostMapping("/list")
+ public ResultData list(@RequestBody InvestFollowRecordEntity params){
+ List page = investFollowRecordService.queryPage(params);
+
+ return new ResultData(page);
+ }
+
+
+ /**
+ * 信息
+ */
+ @GetMapping("/info/{id}")
+ public ResultData info(@PathVariable("id") Long id){
+ InvestFollowRecordEntity investFollowRecord = investFollowRecordService.getById(id);
+
+ return new ResultData(investFollowRecord);
+ }
+
+ /**
+ * 保存
+ */
+ @PostMapping("/save")
+ public ResultData save(@RequestBody InvestFollowRecordEntity investFollowRecord){
+ investFollowRecordService.save(investFollowRecord);
+
+ return new ResultData();
+ }
+
+ /**
+ * 修改
+ */
+ @PostMapping("/update")
+ public ResultData update(@RequestBody InvestFollowRecordEntity investFollowRecord){
+ investFollowRecordService.updateById(investFollowRecord);
+
+ return new ResultData();
+ }
+
+ /**
+ * 删除
+ */
+ @GetMapping("/delete")
+ public ResultData delete(@RequestBody Long[] ids){
+ investFollowRecordService.removeByIds(Arrays.asList(ids));
+
+ return new ResultData();
+ }
+
+}
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestOperateRecordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestOperateRecordController.java
new file mode 100755
index 000000000..8d9b0a823
--- /dev/null
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestOperateRecordController.java
@@ -0,0 +1,87 @@
+package com.iformall.controller.invest;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import com.iformall.common.ResultData;
+import com.iformall.domain.po.InvestOperateRecordEntity;
+import com.iformall.service.invest.InvestOperateRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+
+
+
+/**
+ * 操作记录
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+@Slf4j
+@RestController
+@RequestMapping("invest/operaterecord")
+@Api(tags = "操作记录")
+public class InvestOperateRecordController {
+ @Autowired
+ private InvestOperateRecordService investOperateRecordService;
+
+ /**
+ * 分页列表
+ */
+ @ApiOperation("分页列表接口")
+ @PostMapping("/list")
+ public ResultData list(@RequestBody InvestOperateRecordEntity params){
+ List page = investOperateRecordService.queryPage(params);
+
+ return new ResultData(page);
+ }
+
+
+ /**
+ * 信息
+ */
+ @GetMapping("/info/{id}")
+ public ResultData info(@PathVariable("id") Long id){
+ InvestOperateRecordEntity investOperateRecord = investOperateRecordService.getById(id);
+
+ return new ResultData(investOperateRecord);
+ }
+
+ /**
+ * 保存
+ */
+ @PostMapping("/save")
+ public ResultData save(@RequestBody InvestOperateRecordEntity investOperateRecord){
+ investOperateRecordService.save(investOperateRecord);
+
+ return new ResultData();
+ }
+
+ /**
+ * 修改
+ */
+ @PostMapping("/update")
+ public ResultData update(@RequestBody InvestOperateRecordEntity investOperateRecord){
+ investOperateRecordService.updateById(investOperateRecord);
+
+ return new ResultData();
+ }
+
+ /**
+ * 删除
+ */
+ @GetMapping("/delete")
+ public ResultData delete(@RequestBody Long[] ids){
+ investOperateRecordService.removeByIds(Arrays.asList(ids));
+
+ return new ResultData();
+ }
+
+}
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestRemindController.java b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestRemindController.java
new file mode 100755
index 000000000..d08a5b47d
--- /dev/null
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestRemindController.java
@@ -0,0 +1,88 @@
+package com.iformall.controller.invest;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import com.iformall.common.ResultData;
+import com.iformall.domain.po.InvestRemindEntity;
+import com.iformall.service.invest.InvestRemindService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+
+
+
+
+/**
+ * 招商提醒
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+@Slf4j
+@RestController
+@RequestMapping("invest/remind")
+@Api(tags = "招商提醒")
+public class InvestRemindController {
+ @Autowired
+ private InvestRemindService investRemindService;
+
+ /**
+ * 分页列表
+ */
+ @ApiOperation("分页列表接口")
+ @PostMapping("/list")
+ public ResultData list(@RequestBody InvestRemindEntity params){
+ List page = investRemindService.queryPage(params);
+
+ return new ResultData(page);
+ }
+
+
+ /**
+ * 信息
+ */
+ @GetMapping("/info/{id}")
+ public ResultData info(@PathVariable("id") Long id){
+ InvestRemindEntity investRemind = investRemindService.getById(id);
+
+ return new ResultData(investRemind);
+ }
+
+ /**
+ * 保存
+ */
+ @PostMapping("/save")
+ public ResultData save(@RequestBody InvestRemindEntity investRemind){
+ investRemindService.save(investRemind);
+
+ return new ResultData();
+ }
+
+ /**
+ * 修改
+ */
+ @PostMapping("/update")
+ public ResultData update(@RequestBody InvestRemindEntity investRemind){
+ investRemindService.updateById(investRemind);
+
+ return new ResultData();
+ }
+
+ /**
+ * 删除
+ */
+ @GetMapping("/delete")
+ public ResultData delete(@RequestBody Long[] ids){
+ investRemindService.removeByIds(Arrays.asList(ids));
+
+ return new ResultData();
+ }
+
+}
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestTaskController.java b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestTaskController.java
new file mode 100755
index 000000000..028fc6a58
--- /dev/null
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/invest/InvestTaskController.java
@@ -0,0 +1,86 @@
+package com.iformall.controller.invest;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import com.iformall.common.ResultData;
+import com.iformall.domain.po.InvestTaskEntity;
+import com.iformall.service.invest.InvestTaskService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+
+
+
+/**
+ * 招商任务
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+@Slf4j
+@RestController
+@RequestMapping("invest/task")
+@Api(tags = "招商任务")
+public class InvestTaskController {
+ @Autowired
+ private InvestTaskService investTaskService;
+
+ /**
+ * 分页列表
+ */
+ @ApiOperation("分页列表接口")
+ @PostMapping("/list")
+ public ResultData list(InvestTaskEntity params){
+ List page = investTaskService.queryPage(params);
+ return new ResultData(page);
+ }
+
+
+ /**
+ * 信息
+ */
+ @GetMapping("/info/{id}")
+ public ResultData info(@PathVariable("id") Long id){
+ InvestTaskEntity investTask = investTaskService.getById(id);
+
+ return new ResultData(investTask);
+ }
+
+ /**
+ * 保存
+ */
+ @PostMapping("/save")
+ public ResultData save(@RequestBody InvestTaskEntity investTask){
+ investTaskService.save(investTask);
+
+ return new ResultData();
+ }
+
+ /**
+ * 修改
+ */
+ @PostMapping("/update")
+ public ResultData update(@RequestBody InvestTaskEntity investTask){
+ investTaskService.updateById(investTask);
+
+ return new ResultData();
+ }
+
+ /**
+ * 删除
+ */
+ @GetMapping("/delete")
+ public ResultData delete(@RequestBody Long[] ids){
+ investTaskService.removeByIds(Arrays.asList(ids));
+
+ return new ResultData();
+ }
+
+}
diff --git a/mallinkAdmin/src/main/java/com/iformall/log/TableOperateAspect.java b/mallinkAdmin/src/main/java/com/iformall/log/TableOperateAspect.java
new file mode 100644
index 000000000..12bf70c25
--- /dev/null
+++ b/mallinkAdmin/src/main/java/com/iformall/log/TableOperateAspect.java
@@ -0,0 +1,49 @@
+package com.iformall.log;
+
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
+
+import java.util.Arrays;
+
+/**
+ *
+ */
+@Aspect
+@Component
+public class TableOperateAspect {
+ private final Logger log = LoggerFactory.getLogger(TableOperateAspect.class);
+
+ private final Environment env;
+
+ public TableOperateAspect(Environment env) {
+ this.env = env;
+ }
+
+ @Pointcut("@annotation(com.iformall.common.TableLog)")
+ public void pointcut() {
+ }
+
+ @Around("pointcut()")
+ public Object round(ProceedingJoinPoint joinPoint) {
+ MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+ log.debug("before , {}.{}() with argument[s] = {}", signature.getClass(),
+ signature.getName(), Arrays.toString(joinPoint.getArgs()));
+ Object object = null;
+ try {
+ object = joinPoint.proceed();
+ } catch (Throwable throwable) {
+ log.error("Illegal argument: {} in {}.{}()", Arrays.toString(joinPoint.getArgs()),
+ joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName(), throwable);
+ } finally {
+ log.debug("after , result: {}", object);
+ }
+ return object;
+ }
+}
diff --git a/mallinkAdmin/src/main/resources/application.yml b/mallinkAdmin/src/main/resources/application.yml
index 8b01be375..836b08aee 100644
--- a/mallinkAdmin/src/main/resources/application.yml
+++ b/mallinkAdmin/src/main/resources/application.yml
@@ -62,6 +62,7 @@ mybatis-plus:
cache-enabled: false
call-setters-on-nulls: true
type-aliases-package: com.iformall.domain.po
+ type-enums-package: com.iformall.enums
# PageHelper
pagehelper:
diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909261900__W_INVEST_MENU.sql b/mallinkAdmin/src/main/resources/db/migration/V201909261900__W_INVEST_MENU.sql
new file mode 100644
index 000000000..4775018f7
--- /dev/null
+++ b/mallinkAdmin/src/main/resources/db/migration/V201909261900__W_INVEST_MENU.sql
@@ -0,0 +1,19 @@
+INSERT INTO `mall_permission` (`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`)
+VALUES
+(11, '招商管理', 0, 'Y', NULL, 0, '#d4237a', '212,35,122', NULL, NULL, 0, 11);
+
+INSERT INTO `mall_permission` (`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`)
+VALUES
+(1001, '招商概览', 11, 'Y', NULL, 1, '#d4237a', '212,35,122', 'InvestPromotion', NULL, 0, 1);
+
+INSERT INTO `mall_permission` (`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`)
+VALUES
+(1002, '我的招商任务', 11, 'Y', NULL, 1, '#d4237a', '212,35,122', 'InvestTask', NULL, 0, 2);
+
+INSERT INTO `mall_permission` (`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`)
+VALUES
+(1003, '我的客户管理', 11, 'Y', NULL, 1, '#d4237a', '212,35,122', 'InvestCustomer', NULL, 0, 3);
+
+INSERT INTO `mall_permission` (`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`)
+VALUES
+(1004, '品牌库', 11, 'Y', NULL, 1, '#d4237a', '212,35,122', 'brandlist', NULL, 0, 4);
diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909261910__W_INVEST_CREATE.sql b/mallinkAdmin/src/main/resources/db/migration/V201909261910__W_INVEST_CREATE.sql
new file mode 100644
index 000000000..dbd36f2a7
--- /dev/null
+++ b/mallinkAdmin/src/main/resources/db/migration/V201909261910__W_INVEST_CREATE.sql
@@ -0,0 +1,84 @@
+-- 招商任务
+CREATE TABLE `invest_task` (
+ `id` BIGINT(20) NOT NULL COMMENT '主键ID',
+ `tenant_id` VARCHAR(10) NOT NULL COMMENT '租户ID',
+ `owner` json DEFAULT NULL COMMENT '负责人',
+ `status` TINYINT(6) NOT NULL DEFAULT '0' COMMENT '任务状态:-1-关闭;0-待分配;1-洽谈中;2-意向签约;3-已完成',
+ `target_type` SMALLINT(2) NOT NULL DEFAULT '0' COMMENT '目标类型:0-商铺招租;1-其他',
+ `target_id` BIGINT(20) NOT NULL COMMENT '目标ID',
+ `content` json DEFAULT NULL COMMENT '任务设定条件',
+ `create_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='招商任务';
+
+-- 客户需求
+CREATE TABLE `invest_demand` (
+ `id` BIGINT(20) NOT NULL COMMENT '主键ID',
+ `tenant_id` VARCHAR(10) NOT NULL COMMENT '租户ID',
+ `owner` BIGINT(20) DEFAULT NULL COMMENT '负责人',
+ `customer_id` BIGINT(20) NOT NULL COMMENT '客户ID',
+ `intent` json DEFAULT NULL COMMENT '客户意向',
+ `target_type` SMALLINT(2) NOT NULL DEFAULT '0' COMMENT '目标类型:0-商铺招租;1-其他',
+ `target_id` BIGINT(20) NOT NULL COMMENT '目标ID',
+ `create_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='客户需求';
+
+-- 招商提醒
+CREATE TABLE `invest_remind` (
+ `id` BIGINT(20) NOT NULL COMMENT '主键ID',
+ `tenant_id` VARCHAR(10) NOT NULL COMMENT '租户ID',
+ `owner` BIGINT(20) NOT NULL COMMENT '提醒用户',
+ `content` json DEFAULT NULL COMMENT '提醒内容',
+ `minute` BIGINT(6) NOT NULL COMMENT '提醒时间',
+ `begin_date` DATETIME NOT NULL COMMENT '开始时间',
+ `end_date` DATETIME NOT NULL COMMENT '结束时间',
+ `create_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='招商提醒';
+
+-- 客户列表
+CREATE TABLE `invest_customer` (
+ `id` BIGINT(20) NOT NULL COMMENT '主键ID',
+ `tenant_id` VARCHAR(10) NOT NULL COMMENT '租户ID',
+ `name` VARCHAR(30) NOT NULL COMMENT '客户名称',
+ `phone` VARCHAR(20) NOT NULL COMMENT '电话',
+ `business` int(11) NOT NULL COMMENT '经营业态',
+ `brand_id` BIGINT(20) NOT NULL COMMENT '品牌ID',
+ `type` TINYINT(6) NOT NULL DEFAULT '0' COMMENT '客户分类:0-潜在客户;1-意向客户;2-合作客户;3-谈判失败',
+ `rating` TINYINT(6) NOT NULL DEFAULT '0' COMMENT '客户预评级:0-无;1-主力店;2-次主力店;3-甲;4-乙;5-丙' ,
+ `invest_channel` VARCHAR(10) NOT NULL COMMENT '招商渠道:0-无;1-电视;2-广播;3-报纸;4-刊物;5-物联网;6-招商活动;7-中介机构;8-自定义渠道',
+ `create_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='客户列表';
+
+-- 跟踪记录
+CREATE TABLE `invest_follow_record` (
+ `id` BIGINT(20) NOT NULL COMMENT '主键ID',
+ `tenant_id` VARCHAR(10) NOT NULL COMMENT '租户ID',
+ `owner` BIGINT(20) NOT NULL COMMENT '主谈人',
+ `customer_id` BIGINT(20) NOT NULL COMMENT '客户ID',
+ `content` json NOT NULL COMMENT '洽谈内容',
+ `type` SMALLINT(2) NOT NULL COMMENT '跟踪类型:0-招商任务;1-客户需求',
+ `create_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ `update_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
+ PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='跟踪记录';
+
+-- 操作记录
+CREATE TABLE `invest_operate_record` (
+ `id` BIGINT(20) NOT NULL COMMENT '主键ID',
+ `tenant_id` VARCHAR(10) NOT NULL COMMENT '租户ID',
+ `tbl` VARCHAR(30) DEFAULT NULL COMMENT '表名称',
+ `tid` BIGINT(20) NOT NULL COMMENT '主键ID',
+ `operator` BIGINT(20) NOT NULL DEFAULT '0' COMMENT '操作人:0-系统;其它',
+ `operate_type` TINYINT(6) NOT NULL DEFAULT '0' COMMENT '操作类型:0-ADD;1-UPDATE;2-DELETE',
+ `before` json DEFAULT NULL COMMENT '更新前',
+ `after` json DEFAULT NULL COMMENT '更新后',
+ `create_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ PRIMARY KEY (`id`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='操作记录';
diff --git a/mallinkAdmin/src/test/java/com/iformall/service/test/SimpleTest.java b/mallinkAdmin/src/test/java/com/iformall/service/test/SimpleTest.java
new file mode 100644
index 000000000..3062d2660
--- /dev/null
+++ b/mallinkAdmin/src/test/java/com/iformall/service/test/SimpleTest.java
@@ -0,0 +1,119 @@
+package com.iformall.service.test;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.iformall.domain.po.WxLevelConfig;
+import com.iformall.domain.po.WxScoreRules;
+import com.iformall.utils.DateUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.joda.time.Days;
+import org.junit.Test;
+
+import java.math.BigDecimal;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.*;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.TemporalAdjusters;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Slf4j
+public class SimpleTest {
+
+ @Test
+ public void test() {
+// int creditChangeNumOrigin = 1;
+// int scoreScale = 12;
+// int levelScale = 12;
+// int creditChangeNum = new BigDecimal(creditChangeNumOrigin).multiply(new BigDecimal(levelScale)).multiply(new BigDecimal(scoreScale)).divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)).divide(new BigDecimal(WxLevelConfig.DEFAULT_SCALE), BigDecimal.ROUND_HALF_UP).intValue();
+// log.debug("creditChangeNum -> {}", creditChangeNum);
+
+ int birthdayScale = 11;
+ float creditScale = new BigDecimal(birthdayScale).divide(new BigDecimal(WxScoreRules.DEFAULT_SCALE)).floatValue();
+ log.debug("creditScale -> {}", creditScale);
+ log.debug("greater -> {}", birthdayScale > WxScoreRules.DEFAULT_SCALE);
+ }
+
+ @Test
+ public void test2() {
+ //List data = Arrays.asList(1, 2, 3, 4, 5, 6);
+ //data.forEach(d -> {
+ // if (d == 2) {
+ // return;
+ // }
+ // log.info("d ->{}", d);
+ //});
+
+ //String[] data = new String[]{"1", "2"};
+ //List dd = Arrays.stream(data).map(Long::parseLong).collect(Collectors.toList());
+ //log.info("d ->{}", dd);
+
+ Integer a = 127;
+ Integer b = 127;
+ assert a==b ;
+ }
+
+ @Test
+ public void test3() {
+ Date startTime = Date.from(LocalDateTime.now()
+ .with(TemporalAdjusters.firstDayOfMonth())
+ .with(LocalTime.MIN)
+ .atZone(ZoneId.systemDefault())
+ .toInstant());
+ Date endTime = Date.from(LocalDateTime.now()
+ .with(TemporalAdjusters.lastDayOfMonth())
+ .with(LocalTime.MAX)
+ .atZone(ZoneId.systemDefault())
+ .toInstant());
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日hh小时mm分钟ss秒");
+ log.info("startTime:{}, endTime:{}", formatter.format(startTime), formatter.format(endTime));
+ }
+
+ @Test
+ public void test4() throws ParseException {
+ String[] days = {"1988/08/21", "2019/08/11", "2019/08/21", "2019/08/13", "2019/08/14", "2019/08/15", "2019/08/16", "2019/08/17", "2019/09/18", "2019/09/10"};
+ DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
+ int before = 10;
+ //未来10天时间
+ Calendar today = Calendar.getInstance();
+ Date begin = today.getTime();
+ today.add(Calendar.DAY_OF_YEAR, before);
+ Date end = today.getTime();
+ log.info("begin:{},end:{}", df.format(begin), df.format(end));
+ //过去10天时间
+
+ Calendar today1 = Calendar.getInstance();
+ Date end1 = today1.getTime();
+ today1.add(Calendar.DAY_OF_YEAR, -before);
+ Date begin1 = today1.getTime();
+ log.info("begin:{},end:{}", df.format(begin1), df.format(end1));
+ }
+
+ @Test
+ public void test5() {
+ JSONObject jsonObject = new JSONObject();
+ JSONArray jsonArray = new JSONArray();
+ jsonArray.add(1);
+ jsonArray.add(2);
+ jsonArray.add(3);
+ jsonArray.add(4);
+ jsonObject.put("couponIds", jsonArray);
+ jsonObject.put("beforeDays", 4);
+ List ids = jsonArray.toJavaList(Integer.class);
+ log.info("data -> {} ", jsonObject.toJSONString());
+ log.info("ids -> {} ", JSON.toJSONString(ids));
+ }
+
+ @Test
+ public void test6() {
+ //Calendar calendar = Calendar.getInstance();
+ //calendar.add(Calendar.DAY_OF_YEAR, -1);
+ //boolean flag = DateUtils.isDateBefore(calendar.getTime());
+ //log.info("flag -> {} ", JSON.toJSONString(flag));
+
+ log.info("uuid {}",UUID.randomUUID());
+ }
+}
diff --git a/mallinkBApi/src/main/resources/application.yml b/mallinkBApi/src/main/resources/application.yml
index bf026d0da..0b1867eca 100644
--- a/mallinkBApi/src/main/resources/application.yml
+++ b/mallinkBApi/src/main/resources/application.yml
@@ -35,6 +35,7 @@ mybatis-plus:
cache-enabled: false
call-setters-on-nulls: true
type-aliases-package: com.iformall.domain.po
+ type-enums-package: com.iformall.enums
# PageHelper
pagehelper:
diff --git a/mallinkBApi/src/test/java/com/iformall/b/CouponsendTest.java b/mallinkBApi/src/test/java/com/iformall/b/CouponsendTest.java
new file mode 100644
index 000000000..9d82d06b0
--- /dev/null
+++ b/mallinkBApi/src/test/java/com/iformall/b/CouponsendTest.java
@@ -0,0 +1,153 @@
+package com.iformall.b;
+
+import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.iformall.domain.po.WxCouponSend;
+import com.iformall.enums.EnumCouponSendSendType;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.MvcResult;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
+import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@ActiveProfiles("dev")
+@AutoConfigureMockMvc
+@FixMethodOrder(MethodSorters.JVM)
+public class CouponsendTest {
+
+ private static final String TOKEN = "c906835d-08c5-47b1-8843-179918f3b312";
+
+ @Autowired
+ private MockMvc mockMvc;
+
+ /**
+ * 商户注券::卡券列表::全部
+ */
+ @Test
+ public void listAll() throws Exception {
+ //时间排序
+ MvcResult result = mockMvc.perform(
+ MockMvcRequestBuilders.get("/api/couponSend/list")
+ .header("token", TOKEN)
+ .param("pageNum", "1")
+ .param("pageSize", "10")
+ .param("sortColumn", "createDate")
+ .param("sortOrder", "desc")
+ .param("expired", "0")
+ .param("sendType", EnumCouponSendSendType.MERCHANT.getCode() + "")
+ )
+ .andExpect(MockMvcResultMatchers.status().isOk())
+ .andDo(MockMvcResultHandlers.print())
+ .andReturn();
+ String responseStr = result.getResponse().getContentAsString();
+ ObjectMapper mapper = new ObjectMapper();
+ Map respMap = mapper.readValue(responseStr, Map.class);
+ log.info("respMap -> {}", JSON.toJSONString(respMap));
+ // 商家排序规则
+ //MvcResult result1 = mockMvc.perform(
+ // MockMvcRequestBuilders.get("/api/couponSend/list")
+ // .header("token", TOKEN)
+ // .param("pageNum", "1")
+ // .param("pageSize", "10")
+ // .param("sortColumn", WxCouponSend.SORT_MERCHANT_SEND)
+ // .param("sortOrder", "desc")
+ // //.param("expired", "1")
+ // .param("sendType", EnumCouponSendSendType.MERCHANT.getCode() + "")
+ //)
+ // .andExpect(MockMvcResultMatchers.status().isOk())
+ // .andDo(MockMvcResultHandlers.print())
+ // .andReturn();
+ //String responseStr1 = result1.getResponse().getContentAsString();
+ //ObjectMapper mapper1 = new ObjectMapper();
+ //Map respMap1 = mapper1.readValue(responseStr1, Map.class);
+ //log.info("respMap -> {}", JSON.toJSONString(respMap1));
+ }
+
+ /**
+ * 商户注券::卡券列表::有效
+ */
+ @Test
+ public void listUnExpired() throws Exception {
+ MvcResult result = mockMvc.perform(
+ MockMvcRequestBuilders.get("/api/couponSend/list")
+ .header("token", TOKEN)
+ .param("pageNum", "1")
+ .param("pageSize", "10")
+ .param("expired", "0")
+ //.param("status", "0")
+ .param("sendType", EnumCouponSendSendType.MERCHANT.getCode() + "")
+ )
+ .andExpect(MockMvcResultMatchers.status().isOk())
+ .andDo(MockMvcResultHandlers.print())
+ .andReturn();
+ String responseStr = result.getResponse().getContentAsString();
+ ObjectMapper mapper = new ObjectMapper();
+ Map respMap = mapper.readValue(responseStr, Map.class);
+ log.info("respMap -> {}", JSON.toJSONString(respMap));
+ }
+
+ /**
+ * 商户注券::商户注券
+ */
+ @Test
+ public void handSel() throws Exception {
+ Map pamas = new HashMap<>();
+ pamas.put("wxCouponSendIds", Arrays.asList("327321450622582784"));
+ pamas.put("cUserId", "321555911759462400");
+ MvcResult result = mockMvc.perform(
+ MockMvcRequestBuilders.post("/api/couponSend/handSel")
+ .header("token", TOKEN)
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(JSON.toJSONString(pamas))
+ )
+ .andExpect(MockMvcResultMatchers.status().isOk())
+ .andDo(MockMvcResultHandlers.print())
+ .andReturn();
+ String responseStr = result.getResponse().getContentAsString();
+ ObjectMapper mapper = new ObjectMapper();
+ Map respMap = mapper.readValue(responseStr, Map.class);
+ log.info("respMap -> {}", JSON.toJSONString(respMap));
+ }
+
+ /**
+ * 商户注券::注券记录
+ */
+ @Test
+ public void actionLog() throws Exception {
+ MvcResult result = mockMvc.perform(
+ MockMvcRequestBuilders.get("/api/couponSend/actionLog")
+ .header("token", TOKEN)
+ .param("pageNum", "1")
+ .param("pageSize", "10")
+ .param("channelType", String.valueOf(EnumCouponSendSendType.MERCHANT.getCode()))
+ //.param("beginDate", "2019-01-01")
+ //.param("endDate", "2019-09-01")
+ )
+ .andExpect(MockMvcResultMatchers.status().isOk())
+ .andDo(MockMvcResultHandlers.print())
+ .andReturn();
+ String responseStr = result.getResponse().getContentAsString();
+ ObjectMapper mapper = new ObjectMapper();
+ Map respMap = mapper.readValue(responseStr, Map.class);
+ log.info("respMap -> {}", JSON.toJSONString(respMap));
+ }
+
+}
diff --git a/mallinkCApi/src/main/resources/application.yml b/mallinkCApi/src/main/resources/application.yml
index 789dba1bc..075505606 100644
--- a/mallinkCApi/src/main/resources/application.yml
+++ b/mallinkCApi/src/main/resources/application.yml
@@ -35,6 +35,7 @@ mybatis-plus:
cache-enabled: false
call-setters-on-nulls: true
type-aliases-package: com.iformall.domain.po
+ type-enums-package: com.iformall.enums
# PageHelper
pagehelper:
diff --git a/mallinkCallback/src/main/resources/application.yml b/mallinkCallback/src/main/resources/application.yml
index 2f18a48f5..0d1863f82 100644
--- a/mallinkCallback/src/main/resources/application.yml
+++ b/mallinkCallback/src/main/resources/application.yml
@@ -54,6 +54,7 @@ mybatis-plus:
cache-enabled: false
call-setters-on-nulls: true
type-aliases-package: com.iformall.domain.po
+ type-enums-package: com.iformall.enums
# PageHelper
pagehelper:
diff --git a/mallinkMQConsumer/src/main/resources/application.yml b/mallinkMQConsumer/src/main/resources/application.yml
index a09ae66b3..2d88312a8 100644
--- a/mallinkMQConsumer/src/main/resources/application.yml
+++ b/mallinkMQConsumer/src/main/resources/application.yml
@@ -52,6 +52,7 @@ mybatis-plus:
cache-enabled: false
call-setters-on-nulls: true
type-aliases-package: com.iformall.domain.po
+ type-enums-package: com.iformall.enums
# PageHelper
pagehelper:
diff --git a/mallinkPosApi/src/main/resources/application.yml b/mallinkPosApi/src/main/resources/application.yml
index 141b375eb..f6d786a07 100644
--- a/mallinkPosApi/src/main/resources/application.yml
+++ b/mallinkPosApi/src/main/resources/application.yml
@@ -35,6 +35,7 @@ mybatis-plus:
cache-enabled: false
call-setters-on-nulls: true
type-aliases-package: com.iformall.domain.po
+ type-enums-package: com.iformall.enums
# PageHelper
pagehelper:
diff --git a/mallinkSchedule/src/main/resources/application.yml b/mallinkSchedule/src/main/resources/application.yml
index 5e84567cb..b942491a7 100644
--- a/mallinkSchedule/src/main/resources/application.yml
+++ b/mallinkSchedule/src/main/resources/application.yml
@@ -52,6 +52,7 @@ mybatis-plus:
cache-enabled: false
call-setters-on-nulls: true
type-aliases-package: com.iformall.domain.po
+ type-enums-package: com.iformall.enums
# PageHelper
pagehelper:
diff --git a/mallinkSchedule/src/test/java/com/iformall/schedule/test/ScheduleTest.java b/mallinkSchedule/src/test/java/com/iformall/schedule/test/ScheduleTest.java
new file mode 100644
index 000000000..bce0291b5
--- /dev/null
+++ b/mallinkSchedule/src/test/java/com/iformall/schedule/test/ScheduleTest.java
@@ -0,0 +1,260 @@
+package com.iformall.schedule.test;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageInfo;
+import com.iformall.domain.dto.WxCUserBasicInfoDto;
+import com.iformall.domain.po.*;
+import com.iformall.enums.EnumCouponSendSendType;
+import com.iformall.mapper.WxCUserBasicInfoMapper;
+import com.iformall.mapper.WxCUserMapper;
+import com.iformall.mapper.WxCouponActionLogMapper;
+import com.iformall.mapper.WxLevelConfigMapper;
+import com.iformall.schedule.CouponSendSchedule;
+import com.iformall.service.*;
+import com.iformall.utils.CreditUtil;
+import com.iformall.utils.DateUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
+import java.time.temporal.TemporalAdjusters;
+import java.util.*;
+
+@Slf4j
+@RunWith(SpringRunner.class)
+@SpringBootTest
+@ActiveProfiles("dev")
+public class ScheduleTest {
+
+ private static final String TENANT_ID = "456";
+ private static final int PAGE_INDEX = 1;
+ private static final int PAGE_SIZE = 10;
+
+ @Autowired
+ CouponSendSchedule couponSendSchedule;
+
+ @Autowired
+ WxCouponSendService wxCouponSendService;
+ @Autowired
+ WxScoreRulesService scoreRulesService;
+
+ @Resource
+ WxCUserBasicInfoMapper cUserBasicInfoMapper;
+ @Resource
+ WxCUserMapper cUserMapper;
+ @Resource
+ WxLevelConfigMapper levelConfigMapper;
+ @Resource
+ WxCouponActionLogMapper wxCouponActionLogMapper;
+ @Autowired
+ private WxCouponService couponService;
+ @Autowired
+ WxCreditHistoryService wxCreditHistoryService;
+
+ /**
+ * 添加会员生日券
+ */
+ //@Test
+ public void couponSend() {
+ //获取配置
+ WxCouponSend config = wxCouponSendService.getConfig(EnumCouponSendSendType.BIRTHDAY.getCode(), TENANT_ID);
+ log.info("会员权益配置 config -> {}", JSON.toJSONString(config));
+ //配置不存在,保存配置
+ JSONObject couponSendJo = JSONObject.parseObject(config.getConditions());
+ if (Objects.nonNull(couponSendJo)) {
+ wxCouponSendService.saveOrUpdateConfig(0, EnumCouponSendSendType.BIRTHDAY.getCode(), TENANT_ID);
+ }
+
+ WxCoupon couponQuery = new WxCoupon();
+ couponQuery.setTenantId(TENANT_ID);
+ PageInfo pageInfo = couponService.listAsPage(couponQuery, PAGE_INDEX, PAGE_SIZE);
+ if (CollectionUtils.isEmpty(pageInfo.getList())) {
+ return;
+ }
+ WxCoupon coupon = pageInfo.getList().get(0);
+ WxCouponSend record = new WxCouponSend();
+ record.setCouponId(coupon.getCouponId());
+ record.setSendType(EnumCouponSendSendType.BIRTHDAY.getCode());
+ record.setTenantId(TENANT_ID);
+ record.setTitle(coupon.getTitle());
+ record.setCreateDate(new Date());
+ wxCouponSendService.saveOrUpdate(record);
+ log.info("会员生日券 record -> {}", JSON.toJSONString(record));
+ }
+
+ /**
+ * 获取列表
+ */
+ @Test
+ public void couponsendList() {
+ //生日券列表
+ WxCouponSend birthQuery = new WxCouponSend();
+ //birthQuery.setSendType(EnumCouponSendSendType.BIRTHDAY.getCode());
+ //birthQuery.setTenantId(TENANT_ID);
+ //PageInfo birthPageInfo = wxCouponSendService.listAsPage(birthQuery, PAGE_INDEX, PAGE_SIZE);
+ //log.info(EnumCouponSendSendType.BIRTHDAY.getMessage() + "列表 -> {}", JSON.toJSONString(birthPageInfo));
+
+ //商户注券列表
+ WxCouponSend merchantQuery = new WxCouponSend();
+ merchantQuery.setSendType(EnumCouponSendSendType.MERCHANT.getCode());
+ merchantQuery.setTenantId(TENANT_ID);
+ merchantQuery.setSortColumn("createDate");
+ merchantQuery.setSortOrder("desc");
+ PageInfo merchantPageInfo = wxCouponSendService.listAsPage(merchantQuery, PAGE_INDEX, PAGE_SIZE);
+ log.info(EnumCouponSendSendType.BIRTHDAY.getMessage() + "列表 -> {}", JSON.toJSONString(merchantPageInfo));
+ }
+
+ /**
+ * 生日券定时任务
+ */
+ @Test
+ public void birthdaySchedule() {
+ couponSendSchedule.birthdayCouponSendSchedule();
+ }
+
+ @Test
+ public void findBirdayUser() {
+ DateFormat df = new SimpleDateFormat("MM-dd");
+ int before = 10;
+ //未来10天时间
+ Calendar today = Calendar.getInstance();
+ Date begin = today.getTime();
+ today.add(Calendar.DAY_OF_YEAR, before);
+ Date end = today.getTime();
+ log.info("begin:{},end:{}", df.format(begin), df.format(end));
+ List users = cUserBasicInfoMapper.findBirthdayList("456", df.format(begin.getTime()), df.format(end.getTime()));
+ log.info("users -> {}", JSON.toJSONString(users));
+ }
+
+ /**
+ * 会员积分倍率
+ */
+ @Test
+ public void scoreScale() {
+ //用户信息
+ WxCUser cUserQuery = new WxCUser();
+ cUserQuery.setPhone("15811234898");
+ cUserQuery.setTenantId(TENANT_ID);
+ WxCUser cUser = cUserMapper.selectOne(cUserQuery);
+ WxCUserBasicInfo toUpdate = new WxCUserBasicInfo();
+ toUpdate.setId(cUser.getId());
+ //Calendar calendar = Calendar.getInstance() ;
+ //calendar.add(Calendar.DAY_OF_YEAR,2);
+ //toUpdate.setBirthdate(calendar.getTime());
+ //cUserBasicInfoMapper.updateByPrimaryKeySelective(toUpdate) ;
+ WxCUserBasicInfo wxCUserBasicInfo = cUserBasicInfoMapper.selectByPrimaryKey(cUser.getId());
+ //原始积分
+ int creditOrigin = 1;
+ //获取等级倍率
+ Integer levelScale = levelConfigMapper.getScale(cUser.getTenantId(), cUser.getScore());
+ Integer score = CreditUtil.calUserCredit(creditOrigin, cUser, levelScale, wxCUserBasicInfo, scoreRulesService);
+ log.info("计算后积分 score {}", score);
+
+ ////如果享受了生日积分倍率,记录日期
+ if (Objects.equals(CreditUtil.getIsBirthDayScale(), cUser.getId())) {
+ toUpdate.setScoreDate(new Date());
+ cUserBasicInfoMapper.updateByPrimaryKeySelective(toUpdate);
+ CreditUtil.clear();
+ }
+ }
+
+ /**
+ * 积分兑换
+ */
+ @Test
+ public void findByMerchantIdAndSpend() {
+ Long[] userIds = {291844648098332672L, 313534271008804864L, 321555911759462400L};
+ for (Long id : userIds) {
+ Map data = wxCreditHistoryService.findByMerchantIdAndSpend(264943049975529472L, "1", id, TENANT_ID);
+ log.info("data -> {}", JSON.toJSONString(data));
+ }
+ }
+
+ /**
+ * 计算用户积分
+ */
+ @Test
+ public void usersScore() {
+ Date startTime = Date.from(LocalDateTime.now()
+ .with(TemporalAdjusters.firstDayOfYear())
+ .with(LocalTime.MIN)
+ .atZone(ZoneId.systemDefault())
+ .toInstant());
+ Date endTime = Date.from(LocalDateTime.now()
+ .with(TemporalAdjusters.lastDayOfYear())
+ .with(LocalTime.MAX)
+ .atZone(ZoneId.systemDefault())
+ .toInstant());
+
+ WxCUserBasicInfoDto wxCUserBasicInfoDto = new WxCUserBasicInfoDto();
+ wxCUserBasicInfoDto.setTenantId(TENANT_ID);
+ List wxCUserBasicInfoList = null;
+ //cUserBasicInfoMapper.findBirthdayList(wxCUserBasicInfoDto);
+ if (!CollectionUtils.isEmpty(wxCUserBasicInfoList)) {
+ int beforeDays = 2;
+ wxCUserBasicInfoList.forEach(cu -> {
+ Map params = new HashMap<>();
+ params.put("tenantId", cu.getTenantId());
+ params.put("cUserId", cu.getId());
+ params.put("couponId", null);
+ params.put("startTime", startTime);
+ params.put("endTime", endTime);
+ params.put("channelType", EnumCouponSendSendType.BIRTHDAY.getCode());
+ int count = wxCouponActionLogMapper.getCountByUserAndCouponAndDate(params);
+ if (count > 0) {
+ log.info("会员{}已经发送过生日券, 本次不再发送", cu.getNickName());
+ return;
+ }
+
+ int diffBithday = DateUtils.birthdaysBetween(cu.getBirthdate());
+ StringBuilder tips = new StringBuilder();
+ if (diffBithday > 0) {
+ tips.append("距离生日还有").append(diffBithday).append("天");
+ } else if (diffBithday < 0) {
+ tips.append("生日已过").append(Math.abs(diffBithday)).append("天");
+ } else {
+ tips.append("生日当天");
+ }
+ //计算积分
+ WxCUser cUserQuery = new WxCUser();
+ cUserQuery.setTenantId(TENANT_ID);
+ cUserQuery.setPhone(cu.getPhone());
+ WxCUser cUser = cUserMapper.selectOne(cUserQuery);
+ //消费奖励原始积分
+ //calScore(cu, tips, cUser);
+
+ if (diffBithday < 0 && Math.abs(diffBithday) > beforeDays || diffBithday > beforeDays) {
+ log.info("[会员={},手机={},生日={} ,{}],不发短信", cu.getNickName(), cu.getPhone(), DateUtils.format(cu.getBirthdate()), tips);
+ return;
+ }
+ //发送生日券时更新生日标志
+ //WxCUserBasicInfo toUpdate = new WxCUserBasicInfo();
+ //toUpdate.setId(cu.getId());
+ //toUpdate.setScoreDate(cu.getBirthdate());
+ //cUserBasicInfoMapper.updateByPrimaryKeySelective(toUpdate);
+ log.error("[会员={},手机={},生日={} ,{}],发送短信", cu.getNickName(), cu.getPhone(), DateUtils.format(cu.getBirthdate()), tips);
+ });
+ }
+ }
+
+ private void calScore(WxCUserBasicInfo cu, StringBuilder tips, WxCUser cUser) {
+ int creditOrigin = 1;
+ Integer levelScale = levelConfigMapper.getScale(cUser.getTenantId(), cUser.getScore());
+ int score = CreditUtil.calUserCredit(creditOrigin, cUser, levelScale, cu, scoreRulesService);
+ log.info("[会员={},手机={},birthday={} , {} , 原始积分:{},计数后积分:{}]", cu.getNickName(), cu.getPhone(), DateUtils.format(cu.getBirthdate()), tips, creditOrigin, score);
+ }
+
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/common/TableLog.java b/mallinkService/src/main/java/com/iformall/common/TableLog.java
new file mode 100644
index 000000000..9999a7bcd
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/common/TableLog.java
@@ -0,0 +1,17 @@
+package com.iformall.common;
+
+import com.iformall.enums.EnumTableOperateType;
+
+import java.lang.annotation.*;
+
+@Target({ElementType.PARAMETER,ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface TableLog {
+
+ /**
+ * 操作类型
+ * @return
+ */
+ EnumTableOperateType operationType() default EnumTableOperateType.UPDATE;
+}
diff --git a/mallinkService/src/main/java/com/iformall/domain/po/BaseEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/BaseEntity.java
index 96270bb2d..15cec5123 100644
--- a/mallinkService/src/main/java/com/iformall/domain/po/BaseEntity.java
+++ b/mallinkService/src/main/java/com/iformall/domain/po/BaseEntity.java
@@ -43,6 +43,14 @@ public class BaseEntity implements Serializable {
@TableField(exist = false)
protected String[] tempShop;
+ @io.swagger.annotations.ApiModelProperty(value = "当前页", name = "pageIndex",example = "1")
+ @TableField(exist = false)
+ private Integer pageIndex;
+
+ @io.swagger.annotations.ApiModelProperty(value = "每页数据", name = "pageSize",example = "10")
+ @TableField(exist = false)
+ private Integer pageSize ;
+
public String getSortColumns() {
if(StringUtils.isBlank(sortColumn)){
return sortColumns;
diff --git a/mallinkService/src/main/java/com/iformall/domain/po/InvestCustomerEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/InvestCustomerEntity.java
new file mode 100755
index 000000000..1db203a7d
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/domain/po/InvestCustomerEntity.java
@@ -0,0 +1,88 @@
+package com.iformall.domain.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.iformall.enums.EnumCustomerRatingType;
+import com.iformall.enums.EnumCustomerType;
+import com.iformall.enums.EnumInvestChannel;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 客户列表
+ *
+ * @author
+ * @email
+ * @date 2019-09-24 14:48:11
+ */
+@Data
+@TableName("invest_customer")
+public class InvestCustomerEntity extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @TableId(type = IdType.ID_WORKER)
+ @io.swagger.annotations.ApiModelProperty(value = "主键ID", name = "id")
+ private Long id;
+ /**
+ * 租户ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId")
+ private String tenantId;
+ /**
+ * 客户名称
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "客户名称", name = "name")
+ private String name;
+ /**
+ * 电话
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "电话", name = "phone")
+ private String phone;
+ /**
+ * 经营业态
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "经营业态", name = "business")
+ private Integer business;
+ /**
+ * 品牌ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "品牌ID", name = "brandId")
+ private Long brandId;
+ /**
+ * 客户分类:0-潜在客户;1-意向客户;2-合作客户;3-谈判失败
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "客户分类:0-潜在客户;1-意向客户;2-合作客户;3-谈判失败", name = "type")
+ private EnumCustomerType type;
+ /**
+ * 客户预评级:0-无;1-主力店;2-次主力店;3-甲;4-乙;5-丙
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "客户预评级:0-无;1-主力店;2-次主力店;3-甲;4-乙;5-丙", name = "rating")
+ private EnumCustomerRatingType rating;
+
+ /**
+ * 招商渠道:0-无;1-电视;2-广播;3-报纸;4-刊物;5-物联网;6-招商活动;7-中介机构;8-自定义渠道
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "招商渠道:0-无;1-电视;2-广播;3-报纸;4-刊物;5-物联网;6-招商活动;7-中介机构;8-自定义渠道", name = "investChannel")
+ private EnumInvestChannel investChannel;
+
+ /**
+ * 创建时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createDate;
+ /**
+ * 更新时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateDate;
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/domain/po/InvestDemandEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/InvestDemandEntity.java
new file mode 100755
index 000000000..a14a0b109
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/domain/po/InvestDemandEntity.java
@@ -0,0 +1,77 @@
+package com.iformall.domain.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.iformall.enums.EnumInvestType;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 客户需求
+ *
+ * @author
+ * @email
+ * @date 2019-09-24 14:48:11
+ */
+@Data
+@TableName("invest_demand")
+public class InvestDemandEntity extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @TableId(type = IdType.ID_WORKER)
+ @io.swagger.annotations.ApiModelProperty(value = "主键ID", name = "id")
+ private Long id;
+ /**
+ * 租户ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId")
+ private String tenantId;
+ /**
+ * 负责人
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "负责人", name = "owner")
+ private Long owner;
+ /**
+ * 客户ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "客户ID", name = "customerId")
+ private Long customerId;
+ /**
+ * 客户意向
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "客户意向", name = "intent")
+ private String intent;
+ /**
+ * 目标类型:0-商铺招租;1-其他
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "目标类型:0-商铺招租;1-其他", name = "targetType")
+ @JsonIgnore
+ private EnumInvestType targetType;
+ /**
+ * 目标ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "目标ID", name = "targetId")
+ private Long targetId;
+
+ /**
+ * 创建时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createDate;
+ /**
+ * 更新时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateDate;
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/domain/po/InvestFollowRecordEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/InvestFollowRecordEntity.java
new file mode 100755
index 000000000..40e554b1a
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/domain/po/InvestFollowRecordEntity.java
@@ -0,0 +1,71 @@
+package com.iformall.domain.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.iformall.enums.EnumFollowType;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 跟踪记录
+ *
+ * @author
+ * @email
+ * @date 2019-09-24 14:48:11
+ */
+@Data
+@TableName("invest_follow_record")
+public class InvestFollowRecordEntity extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @TableId(type = IdType.ID_WORKER)
+ @io.swagger.annotations.ApiModelProperty(value = "主键ID", name = "id")
+ private Long id;
+ /**
+ * 租户ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId")
+ private String tenantId;
+ /**
+ * 主谈人
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "主谈人", name = "owner")
+ private Long owner;
+ /**
+ * 客户ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "客户ID", name = "customerId")
+ private Long customerId;
+ /**
+ * 洽谈内容
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "洽谈内容", name = "content")
+ private String content;
+ /**
+ * 跟踪类型:0-招商任务;1-客户需求
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "跟踪类型:0-招商任务;1-客户需求", name = "type")
+ @JsonIgnore
+ private EnumFollowType type;
+ /**
+ * 创建时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createDate;
+ /**
+ * 更新时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateDate;
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/domain/po/InvestOperateRecordEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/InvestOperateRecordEntity.java
new file mode 100755
index 000000000..5fc6bc02e
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/domain/po/InvestOperateRecordEntity.java
@@ -0,0 +1,76 @@
+package com.iformall.domain.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.iformall.enums.EnumTableOperateType;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 操作记录
+ *
+ * @author
+ * @email
+ * @date 2019-09-24 14:48:11
+ */
+@Data
+@TableName("invest_operate_record")
+public class InvestOperateRecordEntity extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @TableId(type = IdType.ID_WORKER)
+ @io.swagger.annotations.ApiModelProperty(value = "主键ID", name = "id")
+ private Long id;
+ /**
+ * 租户ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId")
+ private String tenantId;
+ /**
+ * 表名称
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "表名称", name = "tbl")
+ private String tbl;
+ /**
+ * 主键ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "主键ID", name = "tid")
+ private Long tid;
+ /**
+ * 操作人:0-系统;其它
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "操作人:0-系统;其它", name = "operator")
+ private Long operator;
+ /**
+ * 操作类型:0-ADD;1-UPDATE;2-DELETE
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "操作类型:0-ADD;1-UPDATE;2-DELETE", name = "operateType")
+ private EnumTableOperateType operateType;
+ /**
+ * 更新前
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "更新前", name = "before")
+ @TableField(value = "`before`")
+ private String before;
+ /**
+ * 更新后
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "更新后", name = "after")
+ @TableField(value = "`after`")
+ private String after;
+ /**
+ * 创建时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createDate;
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/domain/po/InvestRemindEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/InvestRemindEntity.java
new file mode 100755
index 000000000..1edc30d24
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/domain/po/InvestRemindEntity.java
@@ -0,0 +1,75 @@
+package com.iformall.domain.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 招商提醒
+ *
+ * @author
+ * @email
+ * @date 2019-09-24 14:48:11
+ */
+@Data
+@TableName("invest_remind")
+public class InvestRemindEntity extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @TableId(type = IdType.ID_WORKER)
+ @io.swagger.annotations.ApiModelProperty(value = "主键ID", name = "id")
+ private Long id;
+ /**
+ * 租户ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId")
+ private String tenantId;
+ /**
+ * 提醒用户
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "提醒用户", name = "owner")
+ private Long owner;
+ /**
+ * 提醒内容
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "提醒内容", name = "content")
+ private String content;
+ /**
+ * 提醒时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "提醒时间", name = "minute")
+ private Long minute;
+ /**
+ * 开始时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "开始时间", name = "beginDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date beginDate;
+ /**
+ * 结束时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "结束时间", name = "endDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date endDate;
+ /**
+ * 创建时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createDate;
+ /**
+ * 更新时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateDate;
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/domain/po/InvestTaskEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/InvestTaskEntity.java
new file mode 100755
index 000000000..cac21f201
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/domain/po/InvestTaskEntity.java
@@ -0,0 +1,77 @@
+package com.iformall.domain.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.iformall.enums.EnumInvestType;
+import com.iformall.enums.EnumTaskStatus;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+/**
+ * 招商任务
+ *
+ * @author
+ * @email
+ * @date 2019-09-24 14:48:11
+ */
+@Data
+@TableName("invest_task")
+public class InvestTaskEntity extends BaseEntity {
+
+ /**
+ * 主键ID
+ */
+ @TableId(type = IdType.ID_WORKER)
+ @io.swagger.annotations.ApiModelProperty(value = "主键ID", name = "id")
+ private Long id;
+ /**
+ * 租户ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId")
+ private String tenantId;
+ /**
+ * 负责人
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "负责人", name = "owner")
+ private String owner;
+ /**
+ * 任务状态:-1-关闭;0-待分配;1-洽谈中;2-意向签约;3-已完成
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "任务状态:-1-关闭;0-待分配;1-洽谈中;2-意向签约;3-已完成", name = "status")
+ private EnumTaskStatus status;
+ /**
+ * 目标类型:0-商铺招租;1-其他
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "目标类型:0-商铺招租;1-其他", name = "targetType")
+ @JsonIgnore
+ private EnumInvestType targetType;
+ /**
+ * 目标ID
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "目标ID", name = "targetId")
+ private Long targetId;
+ /**
+ * 任务设定条件
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "任务设定条件", name = "content")
+ private String content;
+ /**
+ * 创建时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createDate;
+ /**
+ * 更新时间
+ */
+ @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateDate", example = "2018-10-01 12:18:48")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date updateDate;
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCustomerRatingType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCustomerRatingType.java
new file mode 100644
index 000000000..1a638d05c
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/enums/EnumCustomerRatingType.java
@@ -0,0 +1,44 @@
+package com.iformall.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * 客户预评级:0-无;1-主力店;2-次主力店;3-甲;4-乙;5-丙
+ */
+public enum EnumCustomerRatingType {
+ NULL(0, ""),
+ MAIN(1, "主力店"),
+ SECONDARY(2, "次主力店"),
+ THIRD(3, "甲"),
+ FOUR(4, "乙"),
+ FIVE(5, "丙"),
+ ;
+
+ public static EnumCustomerRatingType getEnum(Integer code) {
+ for (EnumCustomerRatingType value : values()) {
+ if (value.getCode().equals(code)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ @EnumValue
+ private final Integer code;
+ private final String info;
+
+ EnumCustomerRatingType(Integer code, String info) {
+ this.code = code;
+ this.info = info;
+ }
+
+ @JsonValue
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCustomerType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCustomerType.java
new file mode 100644
index 000000000..dd189004e
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/enums/EnumCustomerType.java
@@ -0,0 +1,42 @@
+package com.iformall.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * 客户分类:0-潜在客户;1-意向客户;2-合作客户;3-谈判失败
+ */
+public enum EnumCustomerType {
+ POTENTIAL(0, "潜在客户"),
+ INTENTIONAL(1, "意向客户"),
+ COOPERATIVE(2, "合作客户"),
+ FAILURE(3, "谈判失败"),
+ ;
+
+ public static EnumCustomerType getEnum(Integer code) {
+ for (EnumCustomerType value : values()) {
+ if (value.getCode().equals(code)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ @EnumValue
+ private final Integer code;
+ private final String info;
+
+ EnumCustomerType(Integer code, String info) {
+ this.code = code;
+ this.info = info;
+ }
+
+ @JsonValue
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumFollowType.java b/mallinkService/src/main/java/com/iformall/enums/EnumFollowType.java
new file mode 100644
index 000000000..7133722aa
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/enums/EnumFollowType.java
@@ -0,0 +1,38 @@
+package com.iformall.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
+/**
+ * 跟踪类型:0-招商任务;1-客户需求
+ */
+public enum EnumFollowType {
+ TASK(0, "招商任务"),
+ DEMAND(1, "客户需求"),
+ ;
+
+ public static EnumFollowType getEnum(Integer code) {
+ for (EnumFollowType value : values()) {
+ if (value.getCode().equals(code)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ @EnumValue
+ private final Integer code;
+ private final String info;
+
+ EnumFollowType(Integer code, String info) {
+ this.code = code;
+ this.info = info;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumInvestChannel.java b/mallinkService/src/main/java/com/iformall/enums/EnumInvestChannel.java
new file mode 100644
index 000000000..f48850f37
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/enums/EnumInvestChannel.java
@@ -0,0 +1,46 @@
+package com.iformall.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * 招商渠道:0-无;1-电视;2-广播;3-报纸;4-刊物;5-物联网;6-招商活动;7-中介机构;8-自定义渠道
+ */
+public enum EnumInvestChannel {
+ TV(1, "电视"),
+ BROADCAST(2, "广播"),
+ NEWSPAPER(3, "报纸"),
+ PUBLICATION(4, "刊物"),
+ INTERNET(5, "物联网"),
+ ACTIVITIES(6, "招商活动"),
+ AGENCY(7, "中介机构"),
+ CUSTOMIZE(8, "自定义渠道"),
+ ;
+
+ public static EnumInvestChannel getEnum(Integer code) {
+ for (EnumInvestChannel value : values()) {
+ if (value.getCode().equals(code)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ EnumInvestChannel(Integer code, String info) {
+ this.code = code;
+ this.info = info;
+ }
+
+ private final Integer code;
+ @EnumValue
+ private final String info;
+
+ public Integer getCode() {
+ return code;
+ }
+
+ @JsonValue
+ public String getInfo() {
+ return info;
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumInvestType.java b/mallinkService/src/main/java/com/iformall/enums/EnumInvestType.java
new file mode 100644
index 000000000..2f5823e14
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/enums/EnumInvestType.java
@@ -0,0 +1,37 @@
+package com.iformall.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
+/**
+ * 招商类型:0-商铺招租;1-其他
+ */
+public enum EnumInvestType {
+ SHOP(0, "商铺"),
+ ;
+
+ public static EnumInvestType getEnum(Integer code) {
+ for (EnumInvestType value : values()) {
+ if (value.getCode().equals(code)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ @EnumValue
+ private final Integer code;
+ private final String info;
+
+ EnumInvestType(Integer code, String info) {
+ this.code = code;
+ this.info = info;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumNegotiationType.java b/mallinkService/src/main/java/com/iformall/enums/EnumNegotiationType.java
new file mode 100644
index 000000000..38885896a
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/enums/EnumNegotiationType.java
@@ -0,0 +1,40 @@
+package com.iformall.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
+/**
+ * 拜访方式:0-拜访;1-来访;2-电话;3-短信、微信或其它
+ */
+public enum EnumNegotiationType {
+ TO_VISIT(0, "拜访"),
+ COME_VISIT(1, "来访"),
+ TELEPHONE(2, "电话"),
+ MESSAGE(3, "短信、微信或其它"),
+ ;
+
+ public static EnumNegotiationType getEnum(Integer code) {
+ for (EnumNegotiationType value : values()) {
+ if (value.getCode().equals(code)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ @EnumValue
+ private final Integer code;
+ private final String info;
+
+ EnumNegotiationType(Integer code, String info) {
+ this.code = code;
+ this.info = info;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTableOperateType.java b/mallinkService/src/main/java/com/iformall/enums/EnumTableOperateType.java
new file mode 100644
index 000000000..f0ca3995e
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/enums/EnumTableOperateType.java
@@ -0,0 +1,39 @@
+package com.iformall.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
+/**
+ * 操作类型:0-添加;1-更新;2-删除
+ */
+public enum EnumTableOperateType {
+ ADD(0, "添加"),
+ UPDATE(1, "更新"),
+ DELETE(2, "删除"),
+ ;
+
+ public static EnumTableOperateType getEnum(Integer code) {
+ for (EnumTableOperateType value : values()) {
+ if (value.getCode().equals(code)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ @EnumValue
+ private final Integer code;
+ private final String info;
+
+ EnumTableOperateType(Integer code, String info) {
+ this.code = code;
+ this.info = info;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTaskStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumTaskStatus.java
new file mode 100644
index 000000000..e0944d120
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/enums/EnumTaskStatus.java
@@ -0,0 +1,43 @@
+package com.iformall.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+/**
+ * 任务状态:-1-关闭;0-待分配;1-洽谈中;2-意向签约;3-已完成
+ */
+public enum EnumTaskStatus {
+ CLOSE(-1, "关闭"),
+ CREATED(0, "待分配"),
+ NEGOTIATING(1, "洽谈中"),
+ INTENTION(2, "意向签约"),
+ FINISH(3, "完成"),
+ ;
+
+ public static EnumTaskStatus getEnum(Integer code) {
+ for (EnumTaskStatus value : values()) {
+ if (value.getCode().equals(code)) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ EnumTaskStatus(Integer code, String info) {
+ this.code = code;
+ this.info = info;
+ }
+
+ @EnumValue
+ private final Integer code;
+ private final String info;
+
+ @JsonValue
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/mapper/InvestCustomerDao.java b/mallinkService/src/main/java/com/iformall/mapper/InvestCustomerDao.java
new file mode 100755
index 000000000..7bedb2e79
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/mapper/InvestCustomerDao.java
@@ -0,0 +1,17 @@
+package com.iformall.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iformall.domain.po.InvestCustomerEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 客户列表
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+@Mapper
+public interface InvestCustomerDao extends BaseMapper {
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/mapper/InvestDemandDao.java b/mallinkService/src/main/java/com/iformall/mapper/InvestDemandDao.java
new file mode 100755
index 000000000..6d5cf00eb
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/mapper/InvestDemandDao.java
@@ -0,0 +1,17 @@
+package com.iformall.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iformall.domain.po.InvestDemandEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 客户需求
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:42
+ */
+@Mapper
+public interface InvestDemandDao extends BaseMapper {
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/mapper/InvestFollowRecordDao.java b/mallinkService/src/main/java/com/iformall/mapper/InvestFollowRecordDao.java
new file mode 100755
index 000000000..bcec66b2e
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/mapper/InvestFollowRecordDao.java
@@ -0,0 +1,17 @@
+package com.iformall.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iformall.domain.po.InvestFollowRecordEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 跟踪记录
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+@Mapper
+public interface InvestFollowRecordDao extends BaseMapper {
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/mapper/InvestOperateRecordDao.java b/mallinkService/src/main/java/com/iformall/mapper/InvestOperateRecordDao.java
new file mode 100755
index 000000000..f0ebb4363
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/mapper/InvestOperateRecordDao.java
@@ -0,0 +1,17 @@
+package com.iformall.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iformall.domain.po.InvestOperateRecordEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 操作记录
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+@Mapper
+public interface InvestOperateRecordDao extends BaseMapper {
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/mapper/InvestRemindDao.java b/mallinkService/src/main/java/com/iformall/mapper/InvestRemindDao.java
new file mode 100755
index 000000000..da95a7d52
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/mapper/InvestRemindDao.java
@@ -0,0 +1,17 @@
+package com.iformall.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iformall.domain.po.InvestRemindEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 招商提醒
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+@Mapper
+public interface InvestRemindDao extends BaseMapper {
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/mapper/InvestTaskDao.java b/mallinkService/src/main/java/com/iformall/mapper/InvestTaskDao.java
new file mode 100755
index 000000000..589bea6b8
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/mapper/InvestTaskDao.java
@@ -0,0 +1,17 @@
+package com.iformall.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.iformall.domain.po.InvestTaskEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 招商任务
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+@Mapper
+public interface InvestTaskDao extends BaseMapper {
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/InvestCustomerService.java b/mallinkService/src/main/java/com/iformall/service/invest/InvestCustomerService.java
new file mode 100755
index 000000000..4c6e37f20
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/InvestCustomerService.java
@@ -0,0 +1,19 @@
+package com.iformall.service.invest;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.iformall.domain.po.InvestCustomerEntity;
+
+import java.util.List;
+
+/**
+ * 客户列表
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+public interface InvestCustomerService extends IService {
+
+ List queryPage(InvestCustomerEntity params);
+}
+
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/InvestDemandService.java b/mallinkService/src/main/java/com/iformall/service/invest/InvestDemandService.java
new file mode 100755
index 000000000..de6e77565
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/InvestDemandService.java
@@ -0,0 +1,19 @@
+package com.iformall.service.invest;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.iformall.domain.po.InvestDemandEntity;
+
+import java.util.List;
+
+/**
+ * 客户需求
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:42
+ */
+public interface InvestDemandService extends IService {
+
+ List queryPage(InvestDemandEntity params);
+}
+
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/InvestFollowRecordService.java b/mallinkService/src/main/java/com/iformall/service/invest/InvestFollowRecordService.java
new file mode 100755
index 000000000..b9a7bedbe
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/InvestFollowRecordService.java
@@ -0,0 +1,20 @@
+package com.iformall.service.invest;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.iformall.domain.po.InvestFollowRecordEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 跟踪记录
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+public interface InvestFollowRecordService extends IService {
+
+ List queryPage(InvestFollowRecordEntity params);
+}
+
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/InvestOperateRecordService.java b/mallinkService/src/main/java/com/iformall/service/invest/InvestOperateRecordService.java
new file mode 100755
index 000000000..0b1137ec6
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/InvestOperateRecordService.java
@@ -0,0 +1,19 @@
+package com.iformall.service.invest;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.iformall.domain.po.InvestOperateRecordEntity;
+
+import java.util.List;
+
+/**
+ * 操作记录
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+public interface InvestOperateRecordService extends IService {
+
+ List queryPage(InvestOperateRecordEntity params);
+}
+
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/InvestRemindService.java b/mallinkService/src/main/java/com/iformall/service/invest/InvestRemindService.java
new file mode 100755
index 000000000..c3c316e82
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/InvestRemindService.java
@@ -0,0 +1,20 @@
+package com.iformall.service.invest;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.iformall.domain.po.InvestRemindEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 招商提醒
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+public interface InvestRemindService extends IService {
+
+ List queryPage(InvestRemindEntity params);
+}
+
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/InvestTaskService.java b/mallinkService/src/main/java/com/iformall/service/invest/InvestTaskService.java
new file mode 100755
index 000000000..4c5482b49
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/InvestTaskService.java
@@ -0,0 +1,19 @@
+package com.iformall.service.invest;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.iformall.domain.po.InvestTaskEntity;
+
+import java.util.List;
+
+/**
+ * 招商任务
+ *
+ * @author
+ * @email
+ * @date 2019-09-23 18:40:43
+ */
+public interface InvestTaskService extends IService {
+
+ List queryPage(InvestTaskEntity params);
+}
+
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestCustomerServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestCustomerServiceImpl.java
new file mode 100755
index 000000000..5356d2546
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestCustomerServiceImpl.java
@@ -0,0 +1,44 @@
+package com.iformall.service.invest.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.iformall.common.TableLog;
+import com.iformall.domain.po.InvestCustomerEntity;
+import com.iformall.mapper.InvestCustomerDao;
+import com.iformall.service.invest.InvestCustomerService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class InvestCustomerServiceImpl extends ServiceImpl implements InvestCustomerService {
+
+ @Override
+ public List queryPage(InvestCustomerEntity params) {
+ return this.list();
+ }
+
+ @TableLog
+ @Override
+ public boolean save(InvestCustomerEntity entity) {
+ return super.save(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean update(InvestCustomerEntity entity, Wrapper updateWrapper) {
+ return super.update(entity, updateWrapper);
+ }
+
+ @TableLog
+ @Override
+ public boolean saveOrUpdate(InvestCustomerEntity entity) {
+ return super.saveOrUpdate(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean updateById(InvestCustomerEntity entity) {
+ return super.updateById(entity);
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestDemandServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestDemandServiceImpl.java
new file mode 100755
index 000000000..927fb6a82
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestDemandServiceImpl.java
@@ -0,0 +1,47 @@
+package com.iformall.service.invest.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.iformall.common.TableLog;
+import com.iformall.domain.po.InvestDemandEntity;
+import com.iformall.mapper.InvestDemandDao;
+import com.iformall.service.invest.InvestDemandService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+
+@Service
+public class InvestDemandServiceImpl extends ServiceImpl implements InvestDemandService {
+
+ @Override
+ public List queryPage(InvestDemandEntity params) {
+ return this.list() ;
+ }
+
+
+ @TableLog
+ @Override
+ public boolean save(InvestDemandEntity entity) {
+ return super.save(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean update(InvestDemandEntity entity, Wrapper updateWrapper) {
+ return super.update(entity, updateWrapper);
+ }
+
+ @TableLog
+ @Override
+ public boolean saveOrUpdate(InvestDemandEntity entity) {
+ return super.saveOrUpdate(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean updateById(InvestDemandEntity entity) {
+ return super.updateById(entity);
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestFollowRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestFollowRecordServiceImpl.java
new file mode 100755
index 000000000..0fb99db5d
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestFollowRecordServiceImpl.java
@@ -0,0 +1,45 @@
+package com.iformall.service.invest.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.iformall.common.TableLog;
+import com.iformall.domain.po.InvestFollowRecordEntity;
+import com.iformall.mapper.InvestFollowRecordDao;
+import com.iformall.service.invest.InvestFollowRecordService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+@Service
+public class InvestFollowRecordServiceImpl extends ServiceImpl implements InvestFollowRecordService {
+
+ @Override
+ public List queryPage(InvestFollowRecordEntity params) {
+ return this.list() ;
+ }
+
+ @TableLog
+ @Override
+ public boolean save(InvestFollowRecordEntity entity) {
+ return super.save(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean update(InvestFollowRecordEntity entity, Wrapper updateWrapper) {
+ return super.update(entity, updateWrapper);
+ }
+
+ @TableLog
+ @Override
+ public boolean saveOrUpdate(InvestFollowRecordEntity entity) {
+ return super.saveOrUpdate(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean updateById(InvestFollowRecordEntity entity) {
+ return super.updateById(entity);
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestOperateRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestOperateRecordServiceImpl.java
new file mode 100755
index 000000000..494691870
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestOperateRecordServiceImpl.java
@@ -0,0 +1,46 @@
+package com.iformall.service.invest.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.iformall.common.TableLog;
+import com.iformall.domain.po.InvestOperateRecordEntity;
+import com.iformall.mapper.InvestOperateRecordDao;
+import com.iformall.service.invest.InvestOperateRecordService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+
+@Service
+public class InvestOperateRecordServiceImpl extends ServiceImpl implements InvestOperateRecordService {
+
+ @Override
+ public List queryPage(InvestOperateRecordEntity params) {
+ return this.list() ;
+ }
+
+ @TableLog
+ @Override
+ public boolean save(InvestOperateRecordEntity entity) {
+ return super.save(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean update(InvestOperateRecordEntity entity, Wrapper updateWrapper) {
+ return super.update(entity, updateWrapper);
+ }
+
+ @TableLog
+ @Override
+ public boolean saveOrUpdate(InvestOperateRecordEntity entity) {
+ return super.saveOrUpdate(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean updateById(InvestOperateRecordEntity entity) {
+ return super.updateById(entity);
+ }
+
+}
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestRemindServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestRemindServiceImpl.java
new file mode 100755
index 000000000..2fc850097
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestRemindServiceImpl.java
@@ -0,0 +1,46 @@
+package com.iformall.service.invest.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.iformall.common.TableLog;
+import com.iformall.domain.po.InvestRemindEntity;
+import com.iformall.mapper.InvestRemindDao;
+import com.iformall.service.invest.InvestRemindService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+@Service
+public class InvestRemindServiceImpl extends ServiceImpl implements InvestRemindService {
+
+ @Override
+ public List queryPage(InvestRemindEntity params) {
+ return this.list() ;
+ }
+
+ @TableLog
+ @Override
+ public boolean save(InvestRemindEntity entity) {
+ return super.save(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean update(InvestRemindEntity entity, Wrapper updateWrapper) {
+ return super.update(entity, updateWrapper);
+ }
+
+ @TableLog
+ @Override
+ public boolean saveOrUpdate(InvestRemindEntity entity) {
+ return super.saveOrUpdate(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean updateById(InvestRemindEntity entity) {
+ return super.updateById(entity);
+ }
+}
diff --git a/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestTaskServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestTaskServiceImpl.java
new file mode 100755
index 000000000..25b97f7b9
--- /dev/null
+++ b/mallinkService/src/main/java/com/iformall/service/invest/impl/InvestTaskServiceImpl.java
@@ -0,0 +1,45 @@
+package com.iformall.service.invest.impl;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.iformall.common.TableLog;
+import com.iformall.domain.po.InvestTaskEntity;
+import com.iformall.mapper.InvestTaskDao;
+import com.iformall.service.invest.InvestTaskService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+
+@Service
+public class InvestTaskServiceImpl extends ServiceImpl implements InvestTaskService {
+
+ @Override
+ public List queryPage(InvestTaskEntity params) {
+ return this.list() ;
+ }
+
+ @TableLog
+ @Override
+ public boolean save(InvestTaskEntity entity) {
+ return super.save(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean update(InvestTaskEntity entity, Wrapper updateWrapper) {
+ return super.update(entity, updateWrapper);
+ }
+
+ @TableLog
+ @Override
+ public boolean saveOrUpdate(InvestTaskEntity entity) {
+ return super.saveOrUpdate(entity);
+ }
+
+ @TableLog
+ @Override
+ public boolean updateById(InvestTaskEntity entity) {
+ return super.updateById(entity);
+ }
+}
diff --git a/mallinkSysAdmin/src/main/resources/application.yml b/mallinkSysAdmin/src/main/resources/application.yml
index de4ac2f6c..e4b7042f4 100644
--- a/mallinkSysAdmin/src/main/resources/application.yml
+++ b/mallinkSysAdmin/src/main/resources/application.yml
@@ -62,7 +62,7 @@ mybatis-plus:
cache-enabled: false
call-setters-on-nulls: true
type-aliases-package: com.iformall.domain.po
-
+ type-enums-package: com.iformall.enums
# PageHelper
pagehelper:
diff --git a/mallinkWebSocketServer/src/main/resources/application.yml b/mallinkWebSocketServer/src/main/resources/application.yml
index a634dad34..d3aacff46 100644
--- a/mallinkWebSocketServer/src/main/resources/application.yml
+++ b/mallinkWebSocketServer/src/main/resources/application.yml
@@ -54,6 +54,7 @@ mybatis-plus:
cache-enabled: false
call-setters-on-nulls: true
type-aliases-package: com.iformall.domain.po
+ type-enums-package: com.iformall.enums
# PageHelper
pagehelper: