diff --git a/mallinkAdmin/pom.xml b/mallinkAdmin/pom.xml
index b4e69011d..3b9d17bd9 100644
--- a/mallinkAdmin/pom.xml
+++ b/mallinkAdmin/pom.xml
@@ -47,13 +47,15 @@
5.2.4
-
+
- net.sourceforge.tess4j
- tess4j
- 4.5.2
+ com.iformall
+ mallinkOcr
+ 1.0
+
+
diff --git a/mallinkAdmin/src/main/java/com/iformall/UserApplication.java b/mallinkAdmin/src/main/java/com/iformall/UserApplication.java
index 8562fc985..ae89ad797 100644
--- a/mallinkAdmin/src/main/java/com/iformall/UserApplication.java
+++ b/mallinkAdmin/src/main/java/com/iformall/UserApplication.java
@@ -34,6 +34,9 @@ public class UserApplication {
@Value("${fm.upload_dir}")
private String uploadDir;
+ @Value("${fm.ocr_data}")
+ private String ocrData;
+
@Bean
public boolean isFmException() {
return fmException;
@@ -53,6 +56,11 @@ public class UserApplication {
public String fmUploadDir() {
return uploadDir;
}
+
+ @Bean
+ public String ocrData() {
+ return ocrData;
+ }
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMallBuildingController.java b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMallBuildingController.java
index 6d5722c5a..32e377604 100644
--- a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMallBuildingController.java
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxMallBuildingController.java
@@ -4,14 +4,21 @@ import com.iformall.annotation.SystemControllerLog;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController;
+import com.iformall.domain.po.WxMallBuilding;
import com.iformall.domain.po.WxMallFloor;
import com.iformall.service.WxMallBuildingService;
+import com.iformall.utils.Constant;
+import com.iformall.utils.RedisCacheUtils;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
+import java.util.List;
+
@RestController
@RequestMapping("wxMallBuilding")
public class WxMallBuildingController extends BaseController {
@@ -20,6 +27,10 @@ public class WxMallBuildingController extends BaseController {
@Autowired
private WxMallBuildingService wxMallBuildingService;
+ @Autowired
+ @Qualifier("objectCommonRedisTemplate")
+ RedisTemplate objectCommonRedisTemplate;
+
@ApiOperation("获取楼层楼座数据")
@GetMapping("getbuildingfloorlist")
@SystemControllerLog(description = "商城-楼座-获取楼层楼座数据")
@@ -28,6 +39,33 @@ public class WxMallBuildingController extends BaseController {
return wxMallBuildingService.getBuildingFloorList(getTenantInfo());
}
+ @ApiOperation("保存楼层楼座地图")
+ @PostMapping("saveFloorImg")
+ @SystemControllerLog(description = "商城-楼座/楼层-保存地图")
+ public ResultData saveFloorImg(@RequestBody List record) {
+ logger.debug("[" + getIpAddr() + "] WxMallBuildingController::addBuildingAndFloor");
+ if(record == null && record.size() > 0) {
+ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
+ }
+ for (WxMallBuilding building: record) {
+ List floors = building.getFloors();
+ if(floors != null && floors.size() > 0){
+ for (WxMallFloor floor:floors) {
+ if (floor.getId() == null) {
+ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
+ }
+ floor.updateTenantInfo(getTenantInfo());
+ wxMallBuildingService.saveFloorImg(floor);
+
+ }
+ }
+ }
+
+ String key = Constant.mallBuildingPrev + getTenantInfo().getTenantId();
+ RedisCacheUtils.removeCache(objectCommonRedisTemplate, key);
+ return new ResultData();
+ }
+
@ApiOperation("保存楼层楼座面积")
@PostMapping("saveFloorArea")
@SystemControllerLog(description = "商城-楼座/楼层-保存面积")
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java
index e2c34cb06..5104a37c2 100644
--- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java
@@ -552,6 +552,23 @@ public class WxRentContractController extends WxContractBaseController {
return new ResultData(Result.ERROR,e.getMessage());
}
+ //如果是租金+物业合同,如果没有物业合同或者物业合同不是草稿状态,不能提交审核
+ if (contract.getOperationType().intValue() == EnumContractOperationType.WHOLE.getCode().intValue()) {
+ if (null == wxRentContract.getPropertyId()) {
+ return new ResultData(Result.ERROR,"未创建物业合同,请先完善。");
+ }
+ WxPropertyContract property = wxPropertyContractService.getSimpleDetail(wxRentContract.getPropertyId());
+ if (null == property) {
+ return new ResultData(Result.ERROR,"未创建物业合同,请先完善。");
+ }
+ if (property.getStatus().intValue() == EnumRentContractStatus.UNWRITE.getCode().intValue()) {
+ return new ResultData(Result.ERROR,"物业合同未完善,请先完善。");
+ }
+ if (property.getStatus().intValue() != EnumRentContractStatus.DRAFT.getCode().intValue()) {
+ return new ResultData(Result.ERROR,"物业合同当前状态不能直接生效。");
+ }
+ }
+
wxRentContractService.updateRentContractStatus(wxRentContract.getId(),false);
if(contract.getOperationType().intValue() == EnumContractOperationType.WHOLE.getCode().intValue()) {
wxPropertyContractService.updatePropertyContractStatus(wxRentContract.getPropertyId());
@@ -634,12 +651,6 @@ public class WxRentContractController extends WxContractBaseController {
if (property.getStatus().intValue() != EnumRentContractStatus.DRAFT.getCode().intValue()) {
return new ResultData(Result.ERROR,"物业合同当前状态不能提交审批。");
}
-
- WxPropertyContract wpc = new WxPropertyContract();
- wpc.setStatus(EnumRentContractStatus.DRAFT.getCode());
- wpc.setRentContractId(rentContract.getId());
- wpc.setOperationType(EnumRentShopType.SHOP.getCode());
- List list = wxPropertyContractService.findList(wpc);
}
if(rentContract.getOperationType().intValue() == EnumContractOperationType.PART.getCode().intValue()) {
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/datatower/DataTowerController.java b/mallinkAdmin/src/main/java/com/iformall/controller/datatower/DataTowerController.java
index a24b97ce8..468e87106 100644
--- a/mallinkAdmin/src/main/java/com/iformall/controller/datatower/DataTowerController.java
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/datatower/DataTowerController.java
@@ -80,6 +80,17 @@ public class DataTowerController extends BaseController {
return new ResultData(data);
}
+
+ @ApiOperation("新版本查询客流")
+ @GetMapping("/queryCustomerNewVersion")
+ @SystemControllerLog(description = "数据塔台-新版本查询客流")
+ public ResultData queryCustomerNewVersion() {
+ logger.debug("[" + getIpAddr() + "] DataTowerController::queryCustomerNewVersion");
+
+ Map data = dataTowerService.queryCustomerNewVersion(getTenantInfo());
+
+ return new ResultData(data);
+ }
@ApiOperation("查询客流")
@GetMapping("/queryCustomerData")
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityController.java
index 5ef94bdb3..87c71911f 100644
--- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityController.java
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityController.java
@@ -105,4 +105,12 @@ public class WxActivityController extends BaseController {
return wxActivityService.sendToCampaign(id);
}
+ @ApiOperation("从宣传页下线")
+ @PostMapping("offLineCampaign")
+ @SystemControllerLog(description = "活动-更新状态")
+ public ResultData offLineCampaign(@RequestBody WxActivity wxActivity) {
+ logger.debug("[" + getIpAddr() + "] WxActivityController::updateStatus");
+ return wxActivityService.offLineCampaign(wxActivity);
+ }
+
}
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityJoinController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityJoinController.java
index f53198f9b..a9bd6bb82 100644
--- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityJoinController.java
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxActivityJoinController.java
@@ -65,7 +65,11 @@ public class WxActivityJoinController extends BaseController {
if (wxActivityJoin.getStatus() == null) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "status不能为空");
}
- return wxActivityJoinService.modifyStatus(wxActivityJoin);
+ try {
+ return wxActivityJoinService.modifyStatus(wxActivityJoin);
+ } catch (MallinkException e) {
+ return new ResultData(e.getErrorCode(), e.getMessage());
+ }
}
@ApiOperation("导出报名表")
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserFromController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserFromController.java
new file mode 100644
index 000000000..d3de03d04
--- /dev/null
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserFromController.java
@@ -0,0 +1,79 @@
+package com.iformall.controller.mem;
+
+import com.github.pagehelper.PageInfo;
+import com.iformall.annotation.SystemControllerLog;
+import com.iformall.common.ResultData;
+import com.iformall.controller.base.BaseController;
+import com.iformall.domain.po.WxCUserFrom;
+import com.iformall.domain.vo.WxCUserFromVo;
+import com.iformall.enums.EnumCUserFrom;
+import com.iformall.service.WxCUserFromService;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@RestController
+@RequestMapping("wxCUserFrom")
+public class WxCUserFromController extends BaseController {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ @Autowired
+ private WxCUserFromService wxCUserFromService;
+
+ @ApiOperation("分页列表接口")
+ @GetMapping("list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
+ @SystemControllerLog(description = "分享-列表")
+ public ResultData list(@ModelAttribute WxCUserFrom wxCUserFrom, Integer pageNum, Integer pageSize) {
+ logger.debug("[" + getIpAddr() + "] WxCUserCarController::list");
+ if (null == wxCUserFrom) wxCUserFrom = new WxCUserFrom();
+ wxCUserFrom.updateTenantInfo(getTenantInfo());
+ final PageInfo page = wxCUserFromService.listAsPage(wxCUserFrom, pageNum, pageSize);
+ return new ResultData(page);
+ }
+
+ @ApiOperation("根据id查询接口")
+ @GetMapping("/visits")
+ @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
+ @SystemControllerLog(description = "分享-列表")
+ public ResultData visits(@ModelAttribute WxCUserFromVo wxCUserFromVo,Integer pageNum, Integer pageSize) {
+ logger.debug("[" + getIpAddr() + "] WxCUserCarController::findById");
+ if (null == wxCUserFromVo) wxCUserFromVo = new WxCUserFromVo();
+ if(wxCUserFromVo.getFromType() == null){
+ wxCUserFromVo.setFromType(EnumCUserFrom.FROM_C_USER_BASIC_INFO.getCode());
+ }
+ wxCUserFromVo.updateTenantInfo(getTenantInfo());
+ final PageInfo page = wxCUserFromService.listAsVisitsPage(wxCUserFromVo, pageNum, pageSize);
+ return new ResultData(page);
+ }
+
+ @GetMapping("/exportData")
+ @SystemControllerLog(description = "导出数据")
+ public void exportData(@ModelAttribute WxCUserFrom wxCUserFrom, HttpServletRequest request, HttpServletResponse response) {
+ if (null == wxCUserFrom) wxCUserFrom = new WxCUserFrom();
+ wxCUserFrom.updateTenantInfo(getTenantInfo());
+ wxCUserFromService.exportData(request, response, wxCUserFrom);
+ }
+
+ @GetMapping("/exportDataVisits")
+ @SystemControllerLog(description = "导出数据")
+ public void exportDataVisits(@ModelAttribute WxCUserFromVo wxCUserFromVo, HttpServletRequest request, HttpServletResponse response) {
+ if (null == wxCUserFromVo) wxCUserFromVo = new WxCUserFromVo();
+ wxCUserFromVo.updateTenantInfo(getTenantInfo());
+ if(wxCUserFromVo.getFromType() == null){
+ wxCUserFromVo.setFromType(EnumCUserFrom.FROM_C_USER_BASIC_INFO.getCode());
+ }
+ wxCUserFromService.exportDataVisits(request, response, wxCUserFromVo);
+ }
+
+
+}
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCreditHistoryController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCreditHistoryController.java
index b0b22090c..1ec84780c 100644
--- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCreditHistoryController.java
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCreditHistoryController.java
@@ -11,6 +11,7 @@ import com.iformall.domain.po.MallUserInfo;
import com.iformall.domain.po.WxCreditHistory;
import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.base.TenantEntity;
+import com.iformall.domain.vo.MerchantCreditRankingVo;
import com.iformall.domain.vo.WxCreditHistoryVo;
import com.iformall.enums.EnumMerchantStatus;
import com.iformall.enums.EnumScoreType;
@@ -73,7 +74,7 @@ public class WxCreditHistoryController extends BaseController {
}
try {
- Map result = wxCreditHistoryService.findByMerchantIdAndSpend(merchantId, spendStr, userId, getTenantInfo().getFinalTenantId()) ;
+ Map result = wxCreditHistoryService.findByMerchantIdAndSpend(merchantId, spendStr, userId) ;
return new ResultData(result);
} catch (MallinkException e) {
return new ResultData(e.getErrorCode(),e.getMessage());
@@ -109,7 +110,7 @@ public class WxCreditHistoryController extends BaseController {
wxCreditHistory.setChangePurpose(desc);
try {
wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId(),getTenantInfo()) ;
- WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory);
+ WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory,getTenantInfo().getTenantId());
return new ResultData(Result.SUCCESS, "操作成功", credit);
} catch (MallinkException e) {
logger.error(e.getMessage());
@@ -173,4 +174,19 @@ public class WxCreditHistoryController extends BaseController {
return new ResultData(Result.SUCCESS);
}
+ @ApiOperation("门店排行榜")
+ @GetMapping("merchantCreditRanking")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
+ @SystemControllerLog(description = "、-列表")
+ public ResultData merchantCreditRanking(@ModelAttribute WxCreditHistory wxCreditHistory, Integer pageNum, Integer pageSize) {
+ logger.debug("[" + getIpAddr() + "] WxCreditHistoryController::merchantCreditRanking");
+ if (null == wxCreditHistory) wxCreditHistory = new WxCreditHistory();
+ TenantEntity tenantInfo = getTenantInfo();
+ wxCreditHistory.updateTenantInfo(tenantInfo);
+ final PageInfo page = wxCreditHistoryService.listAsPageMcrv(wxCreditHistory, pageNum, pageSize);
+ return new ResultData(page);
+ }
+
}
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxScoreRulesController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxScoreRulesController.java
index a0be99868..4ec4a677e 100644
--- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxScoreRulesController.java
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxScoreRulesController.java
@@ -4,9 +4,13 @@ import com.iformall.annotation.SystemControllerLog;
import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.controller.base.BaseController;
+import com.iformall.domain.po.WxMall;
import com.iformall.domain.po.WxScoreRules;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.enums.EnumCreditLockedStatus;
+import com.iformall.enums.EnumGroupSupport;
+import com.iformall.enums.EnumScoreRules;
+import com.iformall.service.WxMallService;
import com.iformall.service.WxScoreRulesService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -25,6 +29,9 @@ public class WxScoreRulesController extends BaseController {
@Autowired
private WxScoreRulesService wxScoreRulesService;
+ @Autowired
+ private WxMallService wxMallService;
+
@ApiOperation("成长值配置")
@GetMapping("setting")
@SystemControllerLog(description = "成长值-配置")
@@ -42,11 +49,27 @@ public class WxScoreRulesController extends BaseController {
@SystemControllerLog(description = "成长值-积分-配置-新增")
public ResultData add(@RequestBody WxScoreRules wxScoreRules) {
logger.debug("[" + getIpAddr() + "] WxScoreRulesController::add");
- TenantEntity tenantEntity = ifParentUpdateTenantInfo();
- if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) {
- return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "广场用户无此权限");
+ if(wxScoreRules.getType() != null){
+ if(wxScoreRules.getType().equals(EnumScoreRules.SCORE.getCode()) || wxScoreRules.getType().equals(EnumScoreRules.CREDIT.getCode())){
+ TenantEntity tenantEntity = ifParentUpdateTenantInfo();
+ if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) {
+ return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "广场用户无此权限");
+ }
+ wxScoreRules.updateTenantInfo(tenantEntity);
+ }else if(wxScoreRules.getType().equals(EnumScoreRules.CREDIT_DOUBLE.getCode())){
+ TenantEntity tenantEntity = getTenantInfo();
+ WxMall mall = wxMallService.getByTenantId(getUser().getTenantId());
+ if((mall.getGroupSupport().equals(EnumGroupSupport.SUPPORT.getCode()) && StringUtils.isBlank(getUser().getParentTenantId())) ||
+ StringUtils.isBlank(tenantEntity.getTenantId())){
+ return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(), "集团用户无此权限");
+ }
+ wxScoreRules.updateTenantInfo(tenantEntity);
+ }else{
+ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"type");
+ }
+ }else{
+ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"type");
}
- wxScoreRules.updateTenantInfo(tenantEntity);
wxScoreRulesService.saveOrUpdate(wxScoreRules);
return new ResultData();
}
@@ -55,11 +78,23 @@ public class WxScoreRulesController extends BaseController {
@GetMapping("/credit_rules")
@SystemControllerLog(description = "积分-配置")
public ResultData creditRulesList() {
- logger.debug("[" + getIpAddr() + "] WxScoreRulesController::list");
+ logger.debug("[" + getIpAddr() + "] creditRulesList::list");
WxScoreRules scoreRules = wxScoreRulesService.getCreditRules(getTenantInfo().getFinalTenantId());
return new ResultData(scoreRules);
}
+ @ApiOperation("积分倍率")
+ @GetMapping("/credit_double")
+ @SystemControllerLog(description = "积分-配置")
+ public ResultData creditDoubleRulesList() {
+ logger.debug("[" + getIpAddr() + "] creditDoubleRulesList::list");
+ if(StringUtils.isBlank(getTenantInfo().getTenantId())){
+ return new ResultData(ErrorCode.USER_NO_PERMISSION,"集团用户无此权限");
+ }
+ WxScoreRules scoreRules = wxScoreRulesService.getCreditDoubleRules(getTenantInfo().getTenantId());
+ return new ResultData(scoreRules);
+ }
+
@ApiOperation("更新积分开关状态")
@PostMapping("updateCreditLocked")
@SystemControllerLog(description = "更新积分开关状态")
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/ocr/WxOcrController.java b/mallinkAdmin/src/main/java/com/iformall/controller/ocr/WxOcrController.java
new file mode 100644
index 000000000..33e10eee1
--- /dev/null
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/ocr/WxOcrController.java
@@ -0,0 +1,223 @@
+package com.iformall.controller.ocr;
+
+import com.github.pagehelper.PageInfo;
+import com.iformall.annotation.SystemControllerLog;
+import com.iformall.common.ErrorCode;
+import com.iformall.common.Result;
+import com.iformall.common.ResultData;
+import com.iformall.controller.base.BaseController;
+import com.iformall.domain.po.MallUserInfo;
+import com.iformall.domain.po.WxMall;
+import com.iformall.domain.po.WxMerchant;
+import com.iformall.domain.po.WxMerchantOcrModel;
+import com.iformall.domain.po.WxOcrModel;
+import com.iformall.domain.po.base.TenantEntity;
+import com.iformall.domain.po.base.BaseEntity.SortField;
+import com.iformall.enums.EnumFromType;
+import com.iformall.enums.EnumRentStartType;
+import com.iformall.ocr.FormallTess4j;
+import com.iformall.ocr.FormallTess4jTrain;
+import com.iformall.service.WxMallService;
+import com.iformall.service.WxMerchantService;
+import com.iformall.service.WxOcrService;
+
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Date;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+@RestController
+@RequestMapping("ocr")
+public class WxOcrController extends BaseController {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ @Autowired
+ private WxOcrService ocrService;
+ @Autowired
+ private WxMerchantService merchantService;
+ @Autowired
+ private String ocrData;
+
+ /**
+ * 模板列表
+ * @param wxRentContract
+ * @param pageNum
+ * @param pageSize
+ * @return
+ */
+ @GetMapping("/modelList")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
+ public ResultData modelList(@ModelAttribute WxOcrModel ocrModel, Integer pageNum, Integer pageSize) {
+ if (null == ocrModel) {
+ ocrModel = new WxOcrModel();
+ }
+ ocrModel.setSortColumns(SortField.Createtime_DESC);
+ PageInfo page = ocrService.listOcrModelAsPage(ocrModel, pageNum, pageSize);
+ return new ResultData(page);
+ }
+
+ /**
+ * 更新模板
+ * @param wxRentContract
+ * @return
+ */
+ @PostMapping("updateModel")
+ public ResultData updateModel(@RequestBody WxOcrModel ocrModel) {
+ return ocrService.saveOrUpdateOcrModel(ocrModel);
+ }
+
+ /**
+ * 根据商户查询模板
+ * @param wxRentContract
+ * @return
+ */
+ @GetMapping("merchantModel")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "merchantId", value = "商户编号", dataType = "Long", paramType = "query", required = true)
+ })
+ public ResultData merchantModel(Long merchantId) {
+ WxMerchant merchant = merchantService.getById(merchantId);
+ if (null == merchant) {
+ return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"商户数据不存在");
+ }
+ return new ResultData(ocrService.getMerchantOcrModel(merchantId, merchant.getTenantId(), merchant.getParentTenantId()));
+ }
+
+ /**
+ * 更新商户模板
+ * @param wxRentContract
+ * @return
+ */
+ @PostMapping("updateMerchantModel")
+ public ResultData updateMerchantModel(@RequestBody WxMerchantOcrModel merchantModel) {
+ return ocrService.saveOrUpdateMerchantOcrModel(merchantModel);
+ }
+
+ /**
+ * 删除商户模板
+ * @param wxRentContract
+ * @return
+ */
+ @PostMapping("deleteMerchantModel")
+ public ResultData deleteMerchantModel(@RequestBody WxMerchantOcrModel merchantModel) {
+ return ocrService.deleteMerchantOcrModel(merchantModel.getId());
+ }
+
+ /**
+ * 获取训练步骤
+ * @return
+ */
+ @GetMapping("getTrainSteps")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "modelId", value = "模板编号", dataType = "Long", paramType = "query", required = true)
+ })
+ public ResultData getTrainSteps(Long modelId) {
+ WxOcrModel model = ocrService.getOcrModelById(modelId);
+ if (null == model) {
+ return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"ocr模板不存在");
+ }
+ return new ResultData(FormallTess4jTrain.getTrainSteps(model.getLangCode(), model.getFontName()));
+ }
+
+ /**
+ *测试训练结果
+ * @return
+ */
+ @PostMapping(value = "/testTrain", consumes = "multipart/*", headers = "content-type=multipart/form-data")
+ public ResultData testTrain(@RequestParam("file") MultipartFile multiReq,@RequestParam("modelId") Long modelId) {
+ try {
+ WxOcrModel model = ocrService.getOcrModelById(modelId);
+ if (null == model) {
+ return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(),"ocr模板不存在");
+ }
+ File file = multipartFileToFile(multiReq);
+
+ String result = FormallTess4j.testDoOCR_File(ocrData, file, model.getFontName());
+
+ file.delete();
+
+ return new ResultData(result);
+
+ } catch (Exception e) {
+ logger.error("testTrain error.",e);
+ return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR.getCode(),"解析失败。"+e.getMessage());
+ }
+ }
+
+
+ private File multipartFileToFile(MultipartFile file) {
+ File toFile = null;
+ if (file.equals("") || file.getSize() <= 0) {
+ file = null;
+ } else {
+ InputStream ins = null;
+ try {
+ ins = file.getInputStream();
+ toFile = new File(file.getOriginalFilename());
+ inputStreamToFile(ins, toFile);
+ ins.close();
+ } catch (IOException e) {
+ logger.error("multipartFileToFile error.",e);
+ }finally {
+ if (null != ins) {
+ try {
+ ins.close();
+ } catch (IOException e) {
+ logger.error("multipartFileToFile error.",e);
+ }
+ }
+ }
+ }
+ return toFile;
+ }
+
+ private void inputStreamToFile(InputStream ins, File file) {
+ OutputStream os = null;
+ try {
+ os = new FileOutputStream(file);
+ int bytesRead = 0;
+ byte[] buffer = new byte[8192];
+ while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
+ os.write(buffer, 0, bytesRead);
+ }
+ os.close();
+ ins.close();
+ } catch (Exception e) {
+ logger.error("inputStreamToFile error.",e);
+ }finally {
+ if (null != os) {
+ try {
+ os.close();
+ } catch (IOException e) {
+ logger.error("inputStreamToFile error.",e);
+ }
+ }
+ if (null != ins) {
+ try {
+ ins.close();
+ } catch (IOException e) {
+ logger.error("inputStreamToFile error.",e);
+ }
+ }
+ }
+ }
+
+
+
+}
diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/sys/UploadController.java b/mallinkAdmin/src/main/java/com/iformall/controller/sys/UploadController.java
index f3d91fadb..77b59c2af 100644
--- a/mallinkAdmin/src/main/java/com/iformall/controller/sys/UploadController.java
+++ b/mallinkAdmin/src/main/java/com/iformall/controller/sys/UploadController.java
@@ -119,7 +119,7 @@ public class UploadController extends BaseController {
return data;
} catch (Exception e) {
- logger.error(e.getMessage());
+ logger.error("解析图片",e);
return new ResultData(ErrorCode.PICTURE_ANALYZING_ERROR);
}
}
diff --git a/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java
index c23177ae6..b4fba9dd5 100644
--- a/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java
+++ b/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java
@@ -41,12 +41,14 @@ public class TenantInfoImpl implements TenantInfo {
"wx_level_config",
"wx_c_user_basic_info",
"wx_c_user_basic_child",
+ "wx_c_user_basic_sign",
"wx_credit_history",
"wx_score_history",
"wx_c_user_tags",
"wx_weapp_ext_set",
"wx_msg_validationcode_model",
- "sys_notice"};
+ "sys_notice",
+ "wx_ocr_model"};
private static String[] filterSubTables = new String[] {
"wx_mall",
@@ -72,9 +74,11 @@ public class TenantInfoImpl implements TenantInfo {
"wx_weapp_release_status",
"wx_c_user_basic_info",
"wx_c_user_basic_child",
+ "wx_c_user_basic_sign",
"mem_coupon_from_dsp",
"wx_msg_validationcode_model",
- "sys_notice"};
+ "sys_notice",
+ "wx_ocr_model"};
@Override
public String getTenantId() {
diff --git a/mallinkAdmin/src/main/resources/application-dev.yml b/mallinkAdmin/src/main/resources/application-dev.yml
index ede46d98e..3609692ca 100644
--- a/mallinkAdmin/src/main/resources/application-dev.yml
+++ b/mallinkAdmin/src/main/resources/application-dev.yml
@@ -163,11 +163,12 @@ jasypt:
password: oRqdnDbK5pj3eMmB
fm:
- exception: false
- exception_emails: zhengfangyuan@iformall.com,xuxiaohu@iformall.com
+ exception: true
+ exception_emails: xuxiaohu@iformall.com
deploy: 1
open: true
upload_dir: /home/test/server/uploads/
+ ocr_data: /root/ocr_data/
ueditor:
config: config.json
diff --git a/mallinkAdmin/src/main/resources/application-prod.yml b/mallinkAdmin/src/main/resources/application-prod.yml
index 20157d021..ccf85c8ad 100644
--- a/mallinkAdmin/src/main/resources/application-prod.yml
+++ b/mallinkAdmin/src/main/resources/application-prod.yml
@@ -124,6 +124,7 @@ fm:
deploy: 3
open: true
upload_dir: /root/uploads/
+ ocr_data: /root/ocr_data/
ueditor:
config: config.json
diff --git a/mallinkAdmin/src/main/resources/db/migration/V202101120001__ADD_wx_mall_floor.sql b/mallinkAdmin/src/main/resources/db/migration/V202101120001__ADD_wx_mall_floor.sql
new file mode 100644
index 000000000..7d139160e
--- /dev/null
+++ b/mallinkAdmin/src/main/resources/db/migration/V202101120001__ADD_wx_mall_floor.sql
@@ -0,0 +1,2 @@
+ALTER TABLE `wx_mall_floor`
+ADD COLUMN `floor_map` json COMMENT '地图' AFTER `total_area`;
\ No newline at end of file
diff --git a/mallinkAdmin/src/main/resources/db/migration/V202101130001__ADD_wx_c_user_basic_info.sql b/mallinkAdmin/src/main/resources/db/migration/V202101130001__ADD_wx_c_user_basic_info.sql
new file mode 100644
index 000000000..48faf2326
--- /dev/null
+++ b/mallinkAdmin/src/main/resources/db/migration/V202101130001__ADD_wx_c_user_basic_info.sql
@@ -0,0 +1,299 @@
+ALTER TABLE `wx_c_user_basic_info_0`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_1`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_2`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_3`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_4`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_5`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_6`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_7`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_8`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_9`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_10`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_11`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_12`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_13`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_14`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_15`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_16`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_17`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_18`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_19`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_20`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_21`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_22`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_23`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_24`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_25`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_26`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_27`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_28`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_29`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_30`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_31`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_32`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_33`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_34`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_35`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_36`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_37`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_38`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_39`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_40`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_41`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_42`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_43`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_44`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_45`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_46`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_47`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_48`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_49`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_50`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_51`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_52`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_53`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_54`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_55`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_56`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_57`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_58`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_59`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_60`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_61`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_62`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_63`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_64`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_65`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_66`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_67`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_68`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_69`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_70`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_71`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_72`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_73`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_74`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_75`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_76`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_77`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_78`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_79`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_80`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_81`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_82`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_83`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_84`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_85`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_86`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_87`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_88`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_89`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_90`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_91`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_92`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_93`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_94`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_95`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_96`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_97`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_98`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
+
+ALTER TABLE `wx_c_user_basic_info_99`
+ADD COLUMN `qr_code` varchar(500) COMMENT '二维码地址' AFTER `tag_scan_time`;
diff --git a/mallinkAdmin/src/main/resources/db/migration/V202101140001__memberImport.sql b/mallinkAdmin/src/main/resources/db/migration/V202101140001__memberImport.sql
new file mode 100644
index 000000000..2a79bbaa9
--- /dev/null
+++ b/mallinkAdmin/src/main/resources/db/migration/V202101140001__memberImport.sql
@@ -0,0 +1,16 @@
+--加推广菜单
+INSERT INTO `mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (514, '推广数据', 5, 'Y', NULL, 1, NULL, NULL, 'memberImport', 'icon-tuiguang', 0, 503);
+
+--销售类型加权限
+update mall_sale_type set menus = '[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 50, 101, 102, 103, 104, 105, 106, 107, 108, 201, 202, 203, 204, 205, 206, 209, 211, 212, 221, 222, 251, 299, 300, 301, 302, 303, 304, 305, 306, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 661, 662, 663, 664, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 686, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 712, 713, 901, 902, 903, 904, 905, 931, 932, 951, 952, 961, 962, 963, 965, 966, 967, 968, 1001, 1002, 1003, 1004]' where id=1;
+update mall_sale_type set menus = '[1, 2, 4, 5, 6, 7, 8, 9, 10, 50, 101, 102, 103, 104, 105, 106, 107, 201, 202, 203, 204, 205, 209, 211, 212, 221, 222, 251, 409, 410, 411, 416, 418, 501, 502, 503, 504, 505, 506, 507, 508, 509, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 595, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 621, 622, 623, 624, 625, 626, 627, 641, 642, 643, 644, 645, 646, 651, 661, 662, 663, 664, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 686, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 712, 713, 901, 902, 903, 904, 905, 931, 932, 951, 961]' where id=2;
+update mall_sale_type set menus = '[2, 4, 5, 6, 7, 10, 50, 201, 202, 205, 211, 212, 221, 222, 251, 409, 410, 411, 416, 418, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 521, 522, 523, 531, 532, 533, 591, 592, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 621, 622, 623, 624, 625, 626, 641, 642, 643, 644, 645, 646, 651, 661, 662, 663, 664, 671, 672, 673, 674, 675, 681, 682, 683, 684, 685, 686, 691, 692, 693, 694, 695, 701, 702, 703, 704, 711, 712, 713, 901, 902, 903, 904, 905, 931, 932]' where id=3;
+update mall_sale_type set menus = '[2, 4, 5, 6, 7, 10, 50, 201, 202, 205, 211, 212, 221, 222, 251, 409, 410, 411, 416, 418, 501, 502, 503, 504, 505, 506, 507, 508, 511, 512, 513, 514, 521, 522, 523, 531, 532, 591, 601, 602, 604, 605, 606, 607, 608, 610, 611, 612, 622, 623, 624, 625, 626, 641, 642, 643, 644, 661, 662, 663, 664, 671, 672, 674, 675, 681, 682, 684, 685, 686, 691, 692, 693, 694, 695, 711, 901, 902, 904, 905, 931, 932]' where id=4;
+
+--所有广场管理员角色加权限
+INSERT INTO `mall_role_permission`(`id`, `tenant_id`, `parent_tenant_id`, `permission_id`, `role_id`)
+ select CEILING(RAND()*90000000000+10000000000) ,mui.tenant_id,mui.parent_tenant_id, 514,mur.role_id
+from mall_user_info mui
+left join mall_user_role mur on mui.id = mur.uid
+where mui.is_admin = 1 and mur.role_id is not null GROUP BY mur.role_id;
+
diff --git a/mallinkAdmin/src/main/resources/db/migration/V202101190001__wx_score_rules.sql b/mallinkAdmin/src/main/resources/db/migration/V202101190001__wx_score_rules.sql
new file mode 100644
index 000000000..562929495
--- /dev/null
+++ b/mallinkAdmin/src/main/resources/db/migration/V202101190001__wx_score_rules.sql
@@ -0,0 +1,5 @@
+INSERT INTO `mallink`.`wx_score_rules`(`id`, `tenant_id`, `type`, `scale`)
+select CEILING(RAND()*90000000000+10000000000),`tenant_id`,4,`scale` from wx_score_rules where type = 2 and scale > 10;
+
+--集团版手动处理,(集团版不存在这类数据,子集团生日倍率数据与原集团规则相等)
+--目前集团版(1008-1020-----1028)(1026-1027-----1025)
\ No newline at end of file
diff --git a/mallinkAdmin/src/main/resources/db/migration/V202101210001__wx_c_user_basic_sign.sql b/mallinkAdmin/src/main/resources/db/migration/V202101210001__wx_c_user_basic_sign.sql
new file mode 100644
index 000000000..b9e94193b
--- /dev/null
+++ b/mallinkAdmin/src/main/resources/db/migration/V202101210001__wx_c_user_basic_sign.sql
@@ -0,0 +1,1999 @@
+CREATE TABLE `wx_c_user_basic_sign_0` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_1` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_2` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_3` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_4` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_5` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_6` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_7` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_8` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_9` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_10` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_11` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_12` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_13` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_14` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_15` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_16` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_17` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_18` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_19` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_20` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_21` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_22` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_23` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_24` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_25` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_26` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_27` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_28` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_29` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_30` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_31` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_32` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_33` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_34` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_35` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_36` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_37` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_38` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_39` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_40` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_41` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_42` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_43` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_44` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_45` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_46` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_47` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_48` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_49` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_50` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_51` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_52` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_53` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_54` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_55` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_56` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_57` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_58` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_59` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_60` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_61` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_62` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_63` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_64` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_65` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_66` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_67` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_68` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_69` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_70` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_71` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_72` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_73` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_74` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_75` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_76` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_77` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_78` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_79` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_80` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_81` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_82` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_83` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_84` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_85` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_86` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_87` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_88` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_89` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_90` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_91` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_92` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_93` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_94` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_95` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_96` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_97` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_98` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
+
+CREATE TABLE `wx_c_user_basic_sign_99` (
+ `id` bigint(20) NOT NULL,
+ `tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
+ `parent_tenant_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
+ `user_id` bigint(20) NOT NULL,
+ `type` smallint(1) NOT NULL DEFAULT 1 COMMENT '1:签到',
+ `signin_date` datetime(0) NOT NULL COMMENT '签到时间',
+ `create_date` datetime(0) NOT NULL,
+ `update_date` datetime(0) NOT NULL,
+ `continue_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月连续签到天数',
+ `count_month_sign` int(11) NOT NULL COMMENT '截止当前签到时间当月累计签到天数',
+ `continue_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年连续签到天数',
+ `count_year_sign` int(11) NOT NULL COMMENT '截止当前签到时间当年累计签到天数',
+ `continue_sign` int(11) NOT NULL COMMENT '截止当前签到时间连续签到天数',
+ `count_sign` int(11) NOT NULL COMMENT '截止当前签到时间累计签到天数',
+ `mark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE INDEX `tenant_id`(`tenant_id`, `user_id`, `signin_date`) USING BTREE
+) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;
diff --git a/mallinkAdmin/src/main/resources/db/migration/V202101250001__user_sign_update_wx_score_rules.sql b/mallinkAdmin/src/main/resources/db/migration/V202101250001__user_sign_update_wx_score_rules.sql
new file mode 100644
index 000000000..968e4f502
--- /dev/null
+++ b/mallinkAdmin/src/main/resources/db/migration/V202101250001__user_sign_update_wx_score_rules.sql
@@ -0,0 +1,12 @@
+--type=2 积分规则,追加签到规则
+update wx_score_rules set rules = JSON_ARRAY_APPEND(rules, '$',CAST('{"id": 17, "desc": "每日签到", "step": 1, "limit": 1, "score": 0}' AS JSON))
+where type = 2;
+update wx_score_rules set rules = JSON_ARRAY_APPEND(rules, '$',CAST('{"id": 18, "desc": "连续签到7天奖励", "step": 1, "limit": 1, "score": 0}' AS JSON))
+where type = 2;
+update wx_score_rules set rules = JSON_ARRAY_APPEND(rules, '$',CAST('{"id": 19, "desc": "连续签到14天奖励", "step": 1, "limit": 1, "score": 0}' AS JSON))
+where type = 2;
+update wx_score_rules set rules = JSON_ARRAY_APPEND(rules, '$',CAST('{"id": 20, "desc": "连续签到28天奖励", "step": 1, "limit": 1, "score": 0}' AS JSON))
+where type = 2;
+
+--type=2 积分规则,每日登陆去掉-- 缓存--缓存--缓存
+update wx_score_rules set rules = JSON_REMOVE(rules, "$[0]") where type = 2;
\ No newline at end of file
diff --git a/mallinkAdmin/src/main/resources/db/migration/V202101260001__ocr.sql b/mallinkAdmin/src/main/resources/db/migration/V202101260001__ocr.sql
new file mode 100644
index 000000000..9300cdfa2
--- /dev/null
+++ b/mallinkAdmin/src/main/resources/db/migration/V202101260001__ocr.sql
@@ -0,0 +1,43 @@
+CREATE TABLE `wx_merchant_ocr_model` (
+ `id` bigint(20) NOT NULL,
+ `merchant_id` bigint(20) NOT NULL COMMENT '商户编号',
+ `ocr_model_id` bigint(20) NOT NULL COMMENT 'ocr模板编号',
+ `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户id',
+ `parent_tenant_id` varchar(5) DEFAULT NULL,
+ `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `UNIQUE` (`merchant_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+CREATE TABLE `wx_ocr_model` (
+ `id` bigint(20) NOT NULL,
+ `lang_code` varchar(20) NOT NULL DEFAULT 'iformallLang' COMMENT '语言定义',
+ `font_name` varchar(20) NOT NULL COMMENT '字库名称',
+ `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ `remark` text COMMENT '说明',
+ `status` tinyint(1) DEFAULT '0' COMMENT '0-有效 1-无效',
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `UNIQUE` (`font_name`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+CREATE TABLE `wx_mall_ocr_model` (
+ `id` bigint(20) NOT NULL,
+ `mall_id` bigint(20) NOT NULL COMMENT '商户编号',
+ `ocr_model_id` bigint(20) NOT NULL COMMENT 'ocr模板编号',
+ `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `tenant_id` varchar(5) DEFAULT NULL COMMENT '租户id',
+ `parent_tenant_id` varchar(5) DEFAULT NULL,
+ `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `UNIQUE` (`mall_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
+
+
+ALTER TABLE `wx_wiwide_info` ADD COLUMN `user_name` VARCHAR(100) COMMENT '登陆账号,首次初始化wiwideId和key用';
+ALTER TABLE `wx_wiwide_info` ADD COLUMN `password` VARCHAR(100) COMMENT '登陆密码';
+ALTER TABLE `wx_wiwide_info` ADD COLUMN `old_plat` int(1) NOT NULL DEFAULT 0 COMMENT '是否是老平台 0-老平台 1-新平台';
+ALTER TABLE `wx_wiwide_info` ADD COLUMN `sign_key` VARCHAR(100) COMMENT '加密key,新版本接口需要' AFTER `wiwide_key`;
+
diff --git a/mallinkAdmin/src/main/resources/db/migration/V202101280001__wx_miniapp_theme.sql b/mallinkAdmin/src/main/resources/db/migration/V202101280001__wx_miniapp_theme.sql
new file mode 100644
index 000000000..42927ede8
--- /dev/null
+++ b/mallinkAdmin/src/main/resources/db/migration/V202101280001__wx_miniapp_theme.sql
@@ -0,0 +1,28 @@
+update wx_miniapp_theme_deploy set default_icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/new_kanjia.png" where id = 4444;
+update wx_miniapp_theme_deploy set default_icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/new_pintuan.png" where id = 4455;
+update wx_miniapp_theme_deploy set default_icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/zhibo.png" where id = 4466;
+update wx_miniapp_theme_deploy set default_icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/new_xiaofeika.png" where id = 4477;
+update wx_miniapp_theme_deploy set default_icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/jifen.png" where id = 4488;
+
+INSERT INTO `wx_miniapp_theme_deploy`(`id`, `name`, `remarks`, `theme_type`, `default_icon`, `default_style`) VALUES (4499, "sy_qd", "首页签到图标", 2, "https://formall.oss-accelerate.aliyuncs.com/cimg/qiandao.png", NULL);
+INSERT INTO `wx_miniapp_theme_deploy`(`id`, `name`, `remarks`, `theme_type`, `default_icon`, `default_style`) VALUES (5500, "sy_hd", "首页活动图标", 2, "https://formall.oss-accelerate.aliyuncs.com/cimg/huodong.png", NULL);
+INSERT INTO `wx_miniapp_theme_deploy`(`id`, `name`, `remarks`, `theme_type`, `default_icon`, `default_style`) VALUES (5511, "sy_yx", "首页游戏图标", 2, "https://formall.oss-accelerate.aliyuncs.com/cimg/youxi.png", NULL);
+
+INSERT INTO `wx_miniapp_theme_value`(`id`, `miniapp_theme_id`, `miniapp_deploy_id`, `icon`, `style_class`) VALUES (1010, 2, 4499, NULL, NULL);
+INSERT INTO `wx_miniapp_theme_value`(`id`, `miniapp_theme_id`, `miniapp_deploy_id`, `icon`, `style_class`) VALUES (1020, 2, 5500, NULL, NULL);
+INSERT INTO `wx_miniapp_theme_value`(`id`, `miniapp_theme_id`, `miniapp_deploy_id`, `icon`, `style_class`) VALUES (1030, 2, 5511, NULL, NULL);
+
+INSERT INTO `wx_miniapp_theme_value`(`id`, `miniapp_theme_id`, `miniapp_deploy_id`, `icon`, `style_class`) VALUES (3010, 3, 4499, NULL, NULL);
+INSERT INTO `wx_miniapp_theme_value`(`id`, `miniapp_theme_id`, `miniapp_deploy_id`, `icon`, `style_class`) VALUES (3020, 3, 5500, NULL, NULL);
+INSERT INTO `wx_miniapp_theme_value`(`id`, `miniapp_theme_id`, `miniapp_deploy_id`, `icon`, `style_class`) VALUES (3030, 3, 5511, NULL, NULL);
+
+
+update wx_miniapp_theme_value set icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/new_kanjia_red.png" where miniapp_theme_id = 3 and miniapp_deploy_id = 4444;
+update wx_miniapp_theme_value set icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/new_pintuan_red.png" where miniapp_theme_id = 3 and miniapp_deploy_id = 4455;
+update wx_miniapp_theme_value set icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/zhibo_red.png" where miniapp_theme_id = 3 and miniapp_deploy_id = 4466;
+update wx_miniapp_theme_value set icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/new_xiaofeika_red.png" where miniapp_theme_id = 3 and miniapp_deploy_id = 4477;
+update wx_miniapp_theme_value set icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/jifen_red.png" where miniapp_theme_id = 3 and miniapp_deploy_id = 4488;
+update wx_miniapp_theme_value set icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/qiandao_red.png" where miniapp_theme_id = 3 and miniapp_deploy_id = 4499;
+update wx_miniapp_theme_value set icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/huodong_red.png" where miniapp_theme_id = 3 and miniapp_deploy_id = 5500;
+update wx_miniapp_theme_value set icon = "https://formall.oss-accelerate.aliyuncs.com/cimg/youxi_red.png" where miniapp_theme_id = 3 and miniapp_deploy_id = 5511;
+
diff --git a/mallinkAdmin/src/main/resources/db/migration/V202101290001__wx_activity_update.sql b/mallinkAdmin/src/main/resources/db/migration/V202101290001__wx_activity_update.sql
new file mode 100644
index 000000000..418a2d070
--- /dev/null
+++ b/mallinkAdmin/src/main/resources/db/migration/V202101290001__wx_activity_update.sql
@@ -0,0 +1,13 @@
+ALTER TABLE `wx_activity`
+ADD COLUMN `activity_type` smallint(2) NOT NULL DEFAULT 1 COMMENT '活动类型(是否需要报名1是0否)' AFTER `html`,
+ADD COLUMN `signup_examine` smallint(2) NOT NULL DEFAULT 1 COMMENT '报名审核 1是0否(activity_type=1时必填)' AFTER `person_limit`,
+MODIFY COLUMN `person_limit` int(11) COMMENT '报名人数(activity_type=1时必填)' AFTER `activity_type`,
+MODIFY COLUMN `start_time` datetime(0) COMMENT '活动报名开始时间(activity_type=1时必填)' AFTER `status`,
+MODIFY COLUMN `end_time` datetime(0) COMMENT '活动报名结束时间(activity_type=1时必填)' AFTER `start_time`,
+MODIFY COLUMN `question` json COMMENT '问题' AFTER `end_time`;
+
+
+
+
+ALTER TABLE `wx_activity_join`
+ADD UNIQUE INDEX `user_activity_id`(`tenant_id`, `user_id`, `activity_id`) USING BTREE;
\ No newline at end of file
diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCUserController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCUserController.java
index 32b2665b7..8e1dda69d 100755
--- a/mallinkBApi/src/main/java/com/iformall/controller/WxCUserController.java
+++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCUserController.java
@@ -279,7 +279,7 @@ public class WxCUserController extends BaseController {
wxCreditHistory.setChangePurpose("商户端["+wxMerchant.getName()+"]操作完善个人信息");
wxCreditHistory.setOperatorType(EnumUserType.BUSER.getCode());
wxCreditHistory.setOperatorId(bUser.getId());
- wxCreditHistoryService.saveOrUpdate(wxCreditHistory);
+ wxCreditHistoryService.saveOrUpdate(wxCreditHistory,wxMerchant.getTenantId());
}
diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java
index 5044bf850..f11d8adff 100644
--- a/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java
+++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java
@@ -71,7 +71,7 @@ public class WxCreditHistoryController extends BaseController {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL) ;
}
try {
- Map result = wxCreditHistoryService.findByMerchantIdAndSpend(merchantId, spendStr, userId, getTenantInfo().getFinalTenantId());
+ Map result = wxCreditHistoryService.findByMerchantIdAndSpend(merchantId, spendStr, userId);
return new ResultData(result);
} catch (MallinkException e) {
return new ResultData(e.getErrorCode(), e.getMessage());
@@ -132,7 +132,7 @@ public class WxCreditHistoryController extends BaseController {
if (null != getLoginBUser().getBuserId()) {
wxCreditHistory.setBuserId(getLoginBUser().getBuserId());
}
- WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory);
+ WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory,tenantInfo.getTenantId());
//更新标签
if (wxCreditHistory.getTags() != null && !wxCreditHistory.getTags().isEmpty()) {
wxCUserTagsService.updateTagByUserId(wxCreditHistory.getCUserId(),tenantInfo, wxCreditHistory.getTags());
diff --git a/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java
index c01d7beff..1afac3a93 100644
--- a/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java
+++ b/mallinkBApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java
@@ -36,6 +36,7 @@ public class TenantInfoImpl implements TenantInfo {
"wx_level_config",
"wx_c_user_basic_info",
"wx_c_user_basic_child",
+ "wx_c_user_basic_sign",
"wx_credit_history",
"wx_score_history",
"wx_c_user_tags",
@@ -50,6 +51,7 @@ public class TenantInfoImpl implements TenantInfo {
"wx_c_user",
"wx_c_user_basic_info",
"wx_c_user_basic_child",
+ "wx_c_user_basic_sign",
"wx_c_user_car",
"wx_c_user_from_b",
"wx_c_user_tags",
diff --git a/mallinkBApi/src/main/resources/application-dev.yml b/mallinkBApi/src/main/resources/application-dev.yml
index 76fe4f591..b9f321d7e 100644
--- a/mallinkBApi/src/main/resources/application-dev.yml
+++ b/mallinkBApi/src/main/resources/application-dev.yml
@@ -155,8 +155,8 @@ wechat:
min-idle: 10
fm:
- exception: false
- exception_emails: houtaikaifa@iformall.com
+ exception: true
+ exception_emails: xuxiaohu@iformall.com
deploy: 1
open: true
upload_dir: /home/test/server/uploads
diff --git a/mallinkCApi/pom.xml b/mallinkCApi/pom.xml
index 9c71414ee..a65c4b7e4 100644
--- a/mallinkCApi/pom.xml
+++ b/mallinkCApi/pom.xml
@@ -16,6 +16,17 @@
com.iformall
mallinkService
1.0
+
+
+ com.iformall
+ mallinkOcr
+ 1.0
+
+
+
+ com.iformall
+ mallinkOcr
+ 1.0
diff --git a/mallinkCApi/src/main/java/com/iformall/CApplication.java b/mallinkCApi/src/main/java/com/iformall/CApplication.java
index 4e5aeb268..4c5fe2ce7 100644
--- a/mallinkCApi/src/main/java/com/iformall/CApplication.java
+++ b/mallinkCApi/src/main/java/com/iformall/CApplication.java
@@ -32,6 +32,9 @@ public class CApplication {
@Value("${fm.upload_dir}")
private String uploadDir;
+
+ @Value("${fm.ocr_data}")
+ private String ocrData;
@Bean
public boolean isFmException() {
@@ -52,6 +55,11 @@ public class CApplication {
public String fmUploadDir() {
return uploadDir;
}
+
+ @Bean
+ public String ocrData() {
+ return ocrData;
+ }
public static void main(String[] args) {
diff --git a/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java b/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java
index c5367b197..6e45feff7 100644
--- a/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java
+++ b/mallinkCApi/src/main/java/com/iformall/controller/BaseController.java
@@ -64,7 +64,7 @@ public class BaseController {
@Autowired
@Qualifier("objectCommonRedisTemplate")
- RedisTemplate cuserBasicInfoTemplate;
+ RedisTemplate objectCommonRedisTemplate;
@InitBinder
public void InitBinder(WebDataBinder dataBinder) {
@@ -156,7 +156,7 @@ public class BaseController {
private WxCUserBasicInfo getCacheMember(Long memberId,String finalTenantId,String key,long seconds) throws Exception {
// 缓存
- WxCUserBasicInfo member = RedisCacheUtils.getCacheObject(cuserBasicInfoTemplate, key, WxCUserBasicInfo.class);
+ WxCUserBasicInfo member = RedisCacheUtils.getCacheObject(objectCommonRedisTemplate, key, WxCUserBasicInfo.class);
if(null == member) {
member = wxCUserBasicInfoService.getById(memberId,finalTenantId);
if (member == null) {
@@ -164,7 +164,7 @@ public class BaseController {
}
setCUserBasicChild(member);
- RedisCacheUtils.cache(cuserBasicInfoTemplate, key, member, seconds);
+ RedisCacheUtils.cache(objectCommonRedisTemplate, key, member, seconds);
}
return member;
}
@@ -183,9 +183,9 @@ public class BaseController {
public void removeCacheMember(Long memberId) {
String key = "webapp:member:"+memberId;
- RedisCacheUtils.removeCache(cuserBasicInfoTemplate, key);
+ RedisCacheUtils.removeCache(objectCommonRedisTemplate, key);
String shortKey = "webapp:short:member:"+memberId;
- RedisCacheUtils.removeCache(cuserBasicInfoTemplate, shortKey);
+ RedisCacheUtils.removeCache(objectCommonRedisTemplate, shortKey);
}
public WxAppinfo getAppInfo(String appId) {
diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxActivityController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxActivityController.java
index 55f39e052..cb859ff60 100644
--- a/mallinkCApi/src/main/java/com/iformall/controller/WxActivityController.java
+++ b/mallinkCApi/src/main/java/com/iformall/controller/WxActivityController.java
@@ -1,20 +1,27 @@
package com.iformall.controller;
+import com.github.pagehelper.PageInfo;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxActivity;
+import com.iformall.domain.po.base.BaseEntity;
+import com.iformall.enums.EnumActivityStatus;
import com.iformall.service.WxActivityService;
+import com.iformall.utils.DateUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -30,6 +37,38 @@ public class WxActivityController extends BaseController {
@Autowired
private WxActivityService wxActivityService;
+ @ApiOperation("分页列表接口")
+ @GetMapping("list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
+ public ResultData list(@ModelAttribute WxActivity wxActivity, Integer pageNum, Integer pageSize) {
+ logger.debug("[" + getIpAddr() + "] WxActivityController::list");
+ if (null == wxActivity) wxActivity = new WxActivity();
+ wxActivity.setStatus(EnumActivityStatus.INJECT_ONLINES.getCode());
+ wxActivity.updateTenantInfo(getTenantInfo());
+ wxActivity.setSortColumns(BaseEntity.SortField.ActivityStartTime_DESC,BaseEntity.SortField.Id_DESC);
+ final PageInfo page = wxActivityService.listAsPage(wxActivity, pageNum, pageSize);
+ return new ResultData(page);
+ }
+
+ @ApiOperation("")
+ @GetMapping("listStatus")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
+ public ResultData listStatus(@ModelAttribute WxActivity wxActivity) {
+ logger.debug("[" + getIpAddr() + "] WxActivityController::list");
+ if (null == wxActivity) wxActivity = new WxActivity();
+ wxActivity.setStatus(EnumActivityStatus.INJECT_ONLINES.getCode());
+ wxActivity.updateTenantInfo(getTenantInfo());
+ wxActivity.setSortColumns(BaseEntity.SortField.ActivityStartTime_DESC,BaseEntity.SortField.Id_DESC);
+ if(wxActivity.getStartDate() == null || wxActivity.getEndDate() == null){
+ wxActivity.setStartDate(DateUtils.getFirstDayForCurrMonth());
+ wxActivity.setEndDate(DateUtils.getLastDayForMonth(new Date()));
+ }
+ return wxActivityService.getListStatus(wxActivity);
+ }
@ApiOperation("查询活动状态")
@GetMapping("/queryStatus")
@@ -55,10 +94,12 @@ public class WxActivityController extends BaseController {
} catch (Exception e) {
return new ResultData(Result.ERROR,e.getMessage());
}
- Integer status = wxActivityService.queryStatus(id, memberId);
+ Integer activityStatus = wxActivityService.queryActivityStatus(id);
+ Integer joinStatus = wxActivityService.queryJoinStatus(id, memberId);
Map data = new HashMap<>();
data.put("activity", wxActivity);
- data.put("status", status);
+ data.put("activityStatus", activityStatus);
+ data.put("joinStatus", joinStatus);
return new ResultData(Result.SUCCESS, "查询成功", data);
}
diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCUserBasicSignController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCUserBasicSignController.java
new file mode 100644
index 000000000..d4956c5de
--- /dev/null
+++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCUserBasicSignController.java
@@ -0,0 +1,189 @@
+package com.iformall.controller;
+
+import com.github.pagehelper.PageInfo;
+import com.iformall.common.ErrorCode;
+import com.iformall.common.ResultData;
+import com.iformall.domain.po.WxCUserBasicSign;
+import com.iformall.domain.po.WxCreditHistory;
+import com.iformall.enums.EnumScoreType;
+import com.iformall.exception.MallinkException;
+import com.iformall.service.WxCUserBasicSignService;
+import com.iformall.utils.DateUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api/userSign")
+@Api(description = "签到接口")
+public class WxCUserBasicSignController extends BaseController {
+
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ @Autowired
+ private WxCUserBasicSignService wxCUserBasicSignService;
+
+ @ApiOperation("用户签到列表")
+ @GetMapping("list")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
+ @ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
+ public ResultData list(@ModelAttribute WxCUserBasicSign wxCUserBasicSign, Integer pageNum, Integer pageSize) {
+ logger.debug("[" + getIpAddr() + "] WxCUserBasicSignController::list");
+ if (null == wxCUserBasicSign){
+ wxCUserBasicSign = new WxCUserBasicSign();
+ }
+ Long memberId;
+ try {
+ memberId = getMemberId();
+ } catch (MallinkException me) {
+ return new ResultData(ErrorCode.getByCode(me.getErrorCode()));
+ }
+// wxCUserBasicSign.updateTenantInfo(getTenantInfo());
+ wxCUserBasicSign.setTenantId(getTenantInfo().getFinalTenantId());
+ wxCUserBasicSign.setUserId(memberId);
+ final PageInfo page = wxCUserBasicSignService.listAsPage(wxCUserBasicSign, pageNum, pageSize);
+ return new ResultData(page);
+ }
+
+ @ApiOperation("")
+ @GetMapping("listStatus")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
+ @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
+ public ResultData listStatus(@ModelAttribute WxCUserBasicSign wxCUserBasicSign) {
+ logger.debug("[" + getIpAddr() + "] WxCUserBasicSignController::listStatus");
+ if (null == wxCUserBasicSign){
+ wxCUserBasicSign = new WxCUserBasicSign();
+ }
+ Long memberId;
+ try {
+ memberId = getMemberId();
+ } catch (MallinkException me) {
+ return new ResultData(ErrorCode.getByCode(me.getErrorCode()));
+ }
+// wxCUserBasicSign.updateTenantInfo(getTenantInfo());
+ wxCUserBasicSign.setTenantId(getTenantInfo().getFinalTenantId());
+ wxCUserBasicSign.setUserId(memberId);
+
+ if(wxCUserBasicSign.getStartDate() == null || wxCUserBasicSign.getEndDate() == null){
+ wxCUserBasicSign.setStartDate(DateUtils.getFirstDayForCurrMonth());
+ wxCUserBasicSign.setEndDate(DateUtils.getLastDayForMonth(new Date()));
+ }
+ return wxCUserBasicSignService.getListStatus(wxCUserBasicSign);
+ }
+
+ @ApiOperation("签到")
+ @PostMapping("signIn")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "", value = "", dataType = "", paramType = "", required = true)})
+ public ResultData signIn(@RequestBody WxCUserBasicSign wxCUserBasicSign) {
+ logger.debug("[" + getIpAddr() + "] WxCUserBasicSignController::signIn");
+ if (null == wxCUserBasicSign){
+ wxCUserBasicSign = new WxCUserBasicSign();
+ }
+ Long memberId;
+ try {
+ memberId = getMemberId();
+ } catch (MallinkException me) {
+ return new ResultData(ErrorCode.getByCode(me.getErrorCode()));
+ }
+// wxCUserBasicSign.updateTenantInfo(getTenantInfo());
+ wxCUserBasicSign.setTenantId(getTenantInfo().getFinalTenantId());
+ wxCUserBasicSign.setUserId(memberId);
+
+ WxCUserBasicSign todaySign = wxCUserBasicSignService.getTodaySignIn(wxCUserBasicSign);
+ if(todaySign == null){
+ try {
+ todaySign = wxCUserBasicSignService.signIn(wxCUserBasicSign);
+ }catch(Exception e){
+ return new ResultData(ErrorCode.SYS_SERVER_ERROR);
+ }
+ if(todaySign == null){
+ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"type");
+ }
+ return new ResultData(todaySign);
+ }else{
+ return new ResultData(ErrorCode.MEM_IS_SIGNIN,todaySign);
+ }
+
+ }
+
+ @ApiOperation("签到状态")
+ @GetMapping("signInStatus")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "", value = "", dataType = "", paramType = "", required = true)})
+ public ResultData signInStatus() {
+ logger.debug("[" + getIpAddr() + "] WxCUserBasicSignController::signIn");
+ WxCUserBasicSign wxCUserBasicSign = new WxCUserBasicSign();
+ Long memberId;
+ try {
+ memberId = getMemberId();
+ } catch (MallinkException me) {
+ return new ResultData(ErrorCode.getByCode(me.getErrorCode()));
+ }
+// wxCUserBasicSign.updateTenantInfo(getTenantInfo());
+ wxCUserBasicSign.setTenantId(getTenantInfo().getFinalTenantId());
+ wxCUserBasicSign.setUserId(memberId);
+ Map map = wxCUserBasicSignService.getLastSignIn(wxCUserBasicSign);
+ return new ResultData(map);
+ }
+
+ @ApiOperation("签到领取")
+ @PostMapping("signInCredit")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "", value = "", dataType = "", paramType = "", required = true)})
+ public ResultData signInCredit(@RequestBody WxCreditHistory wxCreditHistory) {
+ logger.debug("[" + getIpAddr() + "] WxCUserBasicSignController::signIn");
+ if (null == wxCreditHistory){
+ wxCreditHistory = new WxCreditHistory();
+ }
+ Long memberId;
+ try {
+ memberId = getMemberId();
+ } catch (MallinkException me) {
+ return new ResultData(ErrorCode.getByCode(me.getErrorCode()));
+ }
+ WxCUserBasicSign wxCUserBasicSign = new WxCUserBasicSign();
+ wxCUserBasicSign.setTenantId(getFinalTenantId());
+ wxCUserBasicSign.setUserId(memberId);
+ Map map = wxCUserBasicSignService.getLastSignIn(wxCUserBasicSign);
+ int continueMonthSign = map.get("continueMonthSign");//本月连续签到天数
+ int continueSign = map.get("continueSign");//连续签到天数
+ int signInSevenDay = map.get("signInSevenDay");//7日连续奖励
+ int signInFTDay = map.get("signInFTDay");//14日连续奖励
+ int signInTEDay = map.get("signInTEDay");//28日连续奖励
+
+ if(wxCreditHistory.getCreditType().equals(EnumScoreType.SIGN_IN_SEVENDAY.getCode())){
+ if(continueSign >= 7 && signInSevenDay == 0){
+ wxCUserBasicSignService.signInCreditHistory(wxCUserBasicSign,EnumScoreType.SIGN_IN_SEVENDAY);
+ return new ResultData();
+ }
+ return new ResultData(ErrorCode.MEM_MONTH_IS_USED);
+ }else if(wxCreditHistory.getCreditType().equals(EnumScoreType.SIGN_IN_FTDAY.getCode())){
+ if(continueSign >= 14 && signInFTDay == 0){
+ wxCUserBasicSignService.signInCreditHistory(wxCUserBasicSign,EnumScoreType.SIGN_IN_FTDAY);
+ return new ResultData();
+ }
+ return new ResultData(ErrorCode.MEM_MONTH_IS_USED);
+ }else if(wxCreditHistory.getCreditType().equals(EnumScoreType.SIGN_IN_TEDAY.getCode())){
+ if(continueSign >= 28 && signInTEDay == 0){
+ wxCUserBasicSignService.signInCreditHistory(wxCUserBasicSign,EnumScoreType.SIGN_IN_TEDAY);
+ return new ResultData();
+ }
+ return new ResultData(ErrorCode.MEM_MONTH_IS_USED);
+ }else{
+ return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"creditType");
+ }
+
+ }
+
+}
diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java
index 3a46339ce..adc5a609e 100644
--- a/mallinkCApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java
+++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCreditHistoryController.java
@@ -4,15 +4,13 @@ import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
-import com.iformall.domain.po.MallUserInfo;
-import com.iformall.domain.po.WxCUser;
-import com.iformall.domain.po.WxMerchant;
+import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity;
-import com.iformall.domain.po.WxCreditHistory;
import com.iformall.enums.EnumScoreType;
import com.iformall.enums.EnumUserType;
import com.iformall.exception.MallinkException;
import com.iformall.service.WxCreditHistoryService;
+import com.iformall.service.WxScoreRulesService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -35,6 +33,9 @@ public class WxCreditHistoryController extends BaseController{
@Autowired
private WxCreditHistoryService wxCreditHistoryService;
+ @Autowired
+ private WxScoreRulesService wxScoreRulesService;
+
@ApiOperation("用户积分列表")
@GetMapping("list")
@ApiImplicitParams({
@@ -83,7 +84,7 @@ public class WxCreditHistoryController extends BaseController{
try {
wxCreditHistoryService.creditUsercheck(wxCreditHistory.getCUserId(),getTenantInfo()) ;
- WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory);
+ WxCreditHistory credit = wxCreditHistoryService.saveOrUpdate(wxCreditHistory,getTenantInfo().getTenantId());
removeCacheCUser();
return new ResultData(Result.SUCCESS, "操作成功", credit);
} catch (MallinkException e) {
@@ -92,4 +93,12 @@ public class WxCreditHistoryController extends BaseController{
}
}
+ @ApiOperation("积分配置")
+ @GetMapping("/credit_rules")
+ public ResultData creditRulesList() {
+ logger.debug("[" + getIpAddr() + "] creditRulesList::list");
+ WxScoreRules scoreRules = wxScoreRulesService.getCreditRules(getTenantInfo().getFinalTenantId());
+ return new ResultData(scoreRules);
+ }
+
}
diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxMiniappThemeController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxMiniappThemeController.java
index fb2c4e929..3de1356da 100644
--- a/mallinkCApi/src/main/java/com/iformall/controller/WxMiniappThemeController.java
+++ b/mallinkCApi/src/main/java/com/iformall/controller/WxMiniappThemeController.java
@@ -1,18 +1,14 @@
package com.iformall.controller;
-import com.github.pagehelper.PageInfo;
import com.iformall.annotation.RedisCache;
import com.iformall.annotation.TenantIgnore;
import com.iformall.common.ErrorCode;
-import com.iformall.common.Result;
import com.iformall.common.ResultData;
-import com.iformall.domain.po.WxMiniappTheme;
import com.iformall.domain.po.WxMiniappThemeValue;
import com.iformall.domain.po.WxThemeMall;
import com.iformall.enums.EnumThemeType;
import com.iformall.service.WxMiniappThemeService;
import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOcrController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOcrController.java
new file mode 100644
index 000000000..ceac8a1f4
--- /dev/null
+++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOcrController.java
@@ -0,0 +1,82 @@
+package com.iformall.controller;
+
+import com.iformall.common.ErrorCode;
+import com.iformall.common.ResultData;
+import com.iformall.domain.po.WxMall;
+import com.iformall.domain.po.WxMallOcrModel;
+import com.iformall.domain.po.WxMerchantOcrModel;
+import com.iformall.domain.po.WxOcrModel;
+import com.iformall.domain.po.base.TenantEntity;
+import com.iformall.ocr.FormallTess4j;
+import com.iformall.service.WxMallService;
+import com.iformall.service.WxOcrService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author gongbiao
+ */
+@RestController
+@RequestMapping("/api/wxOcr")
+@Api(description = "ocr")
+public class WxOcrController extends BaseController {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ @Autowired
+ private WxOcrService ocrService;
+ @Autowired
+ private WxMallService mallService;
+
+
+ @Autowired
+ private String ocrData;
+
+ @ApiOperation("分析图片信息")
+ @GetMapping("/analyImage")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "merchantId", value = "商户编号", dataType = "Long", paramType = "query", required = true),
+ @ApiImplicitParam(name = "imageUrl", value = "小票图片url", dataType = "String", paramType = "query", required = true),
+ })
+ public ResultData analyImage(Long merchantId,String imageUrl) {
+ TenantEntity tenantEntity = getTenantInfo();
+ Long modelId = null;
+ WxMerchantOcrModel MerchantModel = ocrService.getMerchantOcrModel(merchantId, tenantEntity.getTenantId(), tenantEntity.getParentTenantId());
+ if (null == MerchantModel) {
+ WxMall mall = mallService.getByTenantId(tenantEntity.getTenantId());
+ if (null == mall) {
+ return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "当前登陆信息未查询倒Mall.");
+ }
+ WxMallOcrModel mallModel = ocrService.getMallOcrModel(mall.getId(), mall.getTenantId(), mall.getParentTenantId());
+ if (null == mallModel) {
+ return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "当前商户没有配置OCR模板,并且当前Mall也未配置OCR模板.");
+ }else {
+ modelId = mallModel.getOcrModelId();
+ }
+ }else {
+ modelId = MerchantModel.getOcrModelId();
+ }
+ WxOcrModel ocrModel = ocrService.getOcrModelById(modelId);
+ if (null == ocrModel) {
+ return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "OCR模板未查询到:"+modelId);
+ }
+ String result;
+ try {
+ result = FormallTess4j.ocrNetImgFile(ocrData,imageUrl,ocrModel.getFontName());
+ return new ResultData(result);
+ } catch (Exception e) {
+ logger.error("ocr识别失败。",e);
+ return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "ocr识别失败。"+e.getMessage());
+ }
+
+ }
+
+
+}
diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
index 2fd039e80..142382cc9 100755
--- a/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
+++ b/mallinkCApi/src/main/java/com/iformall/controller/WxUserGrantController.java
@@ -21,6 +21,7 @@ import com.iformall.service.*;
import com.iformall.service.wechat.FmOpenService;
import com.iformall.utils.Constant;
import com.iformall.utils.IPUtil;
+import com.iformall.utils.RedisCacheUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import me.chanjar.weixin.common.error.WxErrorException;
@@ -92,6 +93,9 @@ public class WxUserGrantController extends BaseController {
@Autowired
WxMallService mallService;
+
+ @Autowired
+ private QrCodeService qrCodeService;
@Autowired
private CUserTokenService cUserTokenService;
@@ -142,13 +146,43 @@ public class WxUserGrantController extends BaseController {
Map resultMap = new HashMap();
+ WxCUserFrom wxCUserFrom = new WxCUserFrom();
+
String appId = map.get("appId");
String code = map.get("code");
String sceneAddress = map.get("sceneAddress");
String scene = map.get("scene");
+
+ if (StringUtils.isNotBlank(scene) &&
+ !scene.equals(Constant.UNDEFINED)) { // from pages/index/index onLoad.options.scene
+ wxCUserFrom.setScene(scene);
+ }
+ if (StringUtils.isNotBlank(sceneAddress) &&
+ !sceneAddress.equalsIgnoreCase(Constant.UNDEFINED)) { // from app.js onLaunch.options.scene
+ wxCUserFrom.setSceneAddress(sceneAddress);
+ }
+
String longitude = map.get("longitude");
String latitude = map.get("latitude");
String systemInfo = map.get("systemInfo");
+
+ try {
+ String basicUserId = map.get("UId");
+ String merchantId = map.get("MId");
+ if(StringUtils.isNotBlank(basicUserId)){
+ wxCUserFrom.setFromType(EnumCUserFrom.FROM_C_USER_BASIC_INFO.getCode());
+ wxCUserFrom.setFromId(Long.parseLong(basicUserId));
+ }else if(StringUtils.isNotBlank(merchantId)){
+ wxCUserFrom.setFromType(EnumCUserFrom.FROM_MERCHANT.getCode());
+ wxCUserFrom.setFromId(Long.parseLong(merchantId));
+ }else{
+
+ }
+ } catch (NumberFormatException e) {
+ logger.error("分享参数错误",e);
+ }
+
+
//登录凭证不能为空
if (StringUtils.isBlank(appId)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "appId不能为空");
@@ -183,6 +217,7 @@ public class WxUserGrantController extends BaseController {
if(wxMall == null){
return new ResultData(ErrorCode.MALL_INFO_NOT_FOUND);
}
+ wxCUserFrom.updateTenantInfo(wxMall);
resultMap.put("selectedMall", wxMall.getTenantId());
// 集团版,获取子集团list
@@ -268,17 +303,11 @@ public class WxUserGrantController extends BaseController {
oldUser.setAppId(appId);
oldUser.setOpenId(openId);
oldUser.setUnionId(unionId);
+
if (StringUtils.isNotBlank(wxAuthorizerInfo.getOpenAppid())) {
oldUser.setOpenAppId(wxAuthorizerInfo.getOpenAppid());
}
- if (StringUtils.isBlank(oldUser.getSceneAddress()) ||
- oldUser.getSceneAddress().equalsIgnoreCase(Constant.UNDEFINED)) { // from app.js onLaunch.options.scene
- oldUser.setSceneAddress(sceneAddress);
- }
- if (StringUtils.isBlank(oldUser.getScene()) ||
- oldUser.getScene().equals(Constant.UNDEFINED)) { // from pages/index/index onLoad.options.scene
- oldUser.setScene(scene);
- }
+
if (StringUtils.isNotBlank(longitude)) {
oldUser.setLongitude(BigDecimal.valueOf(Double.valueOf(longitude)));
}
@@ -298,8 +327,11 @@ public class WxUserGrantController extends BaseController {
request.setAttribute(Constant.LOGIN_USER_KEY, oldUser.getId());
updateCacheCUser(token, oldUser);
+
// 登录后处理
- wxCUserService.actionMsgAfterLogin(oldUser);
+ wxCUserFrom.setCUserId(oldUser.getId());
+ wxCUserFrom.setIsNewUser(EnumYesOrNo.NO.getCode());
+ wxCUserService.actionMsgAfterLogin(wxCUserFrom);
} else {
// 新用户
@@ -311,14 +343,9 @@ public class WxUserGrantController extends BaseController {
resultMap.put("token", token);
newUser.setRegisterIp(ipaddress);
- if (StringUtils.isNotBlank(sceneAddress) &&
- !sceneAddress.equalsIgnoreCase(Constant.UNDEFINED)) { // from app.js onLaunch.options.scene
- newUser.setSceneAddress(sceneAddress);
- }
- if (StringUtils.isNotBlank(scene) &&
- !scene.equals(Constant.UNDEFINED)) { // from pages/index/index onLoad.options.scene
- newUser.setScene(scene);
- }
+ newUser.setSceneAddress(wxCUserFrom.getSceneAddress());
+ newUser.setScene(wxCUserFrom.getScene());
+
newUser.setSessionKey(session_key);
if (StringUtils.isNotBlank(longitude)) {
newUser.setLongitude(BigDecimal.valueOf(Double.valueOf(longitude)));
@@ -339,7 +366,9 @@ public class WxUserGrantController extends BaseController {
updateCacheCUser(token, newUser);
// 登录后处理
- wxCUserService.actionMsgAfterLogin(newUser);
+ wxCUserFrom.setCUserId(newUser.getId());
+ wxCUserFrom.setIsNewUser(EnumYesOrNo.YES.getCode());
+ wxCUserService.actionMsgAfterLogin(wxCUserFrom);
}
@@ -580,6 +609,7 @@ public class WxUserGrantController extends BaseController {
try {
// 解密
WxMaPhoneNumberInfo phoneNoInfo = wxMaService.getUserService().getPhoneNoInfo(session_key, encryptedData, iv);
+ logger.info(phoneNoInfo.toString());
if (null != phoneNoInfo) {
logger.debug(phoneNoInfo.toString());
user.setPhone(phoneNoInfo.getPhoneNumber());
@@ -897,7 +927,7 @@ public class WxUserGrantController extends BaseController {
wxCreditHistory.setChangePurpose(EnumScoreType.COMPLETE_INFO.getMessage());
wxCreditHistory.setOperatorType(EnumUserType.CUSERBASIC.getCode());
wxCreditHistory.setOperatorId(memberId);
- wxCreditHistoryService.saveOrUpdate(wxCreditHistory);
+ wxCreditHistoryService.saveOrUpdate(wxCreditHistory,tenantEntity.getTenantId());
wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT, record,tenantEntity);
removeCacheCUser();
@@ -952,4 +982,50 @@ public class WxUserGrantController extends BaseController {
return new ResultData();
}
+ @ApiOperation("获取当前用户二维码")
+ @GetMapping("/userinfoQrCode")
+ public ResultData getUserinfoQrCode() {
+ WxCUser user = getWxCUser();
+ if(user.basicInfoIs()){
+ String key = Constant.cuserQr+ getTenantInfo().getTenantId() + ":" +user.getUserId();
+ String qrCode = RedisCacheUtils.getCacheString(objectCommonRedisTemplate, key);
+ if(StringUtils.isBlank(qrCode)){
+ WxCUserBasicInfo wxCUserBasicInfo;
+ try {
+ wxCUserBasicInfo = getShortCacheMember(user.getUserId(),getFinalTenantId());
+ if(StringUtils.isBlank(getTenantInfo().getParentTenantId())
+ && StringUtils.isNotBlank(wxCUserBasicInfo.getQrCode())){
+ qrCode = wxCUserBasicInfo.getQrCode();
+ }else{
+ String param = wxCUserBasicInfo.getWeappScene();
+ ResultData resultData = qrCodeService.uploadQrcode(getTenantInfo(), 1, Constant.mainPageUrl, param, 0, "", "", "用户分享",EnumPayWay.PAY_WAY_WECHAT);
+// String weappPath = wxCUserBasicInfo.getWeappPath();
+// ResultData resultData = qrCodeService.uploadQrcode(getTenantInfo(), 0, weappPath, "", 0, "", "", "用户分享",EnumPayWay.PAY_WAY_WECHAT);
+ Map map = (Map) resultData.data;
+ if(map!=null && map.get("url") !=null) {
+ String url = map.get("url");
+ qrCode = url;
+ }else{
+ logger.error("getUserinfoQrCode error."+resultData.toString());
+ return new ResultData(ErrorCode.DEVICE_QRCODE_GET_FAILED);
+ }
+ if(StringUtils.isBlank(getTenantInfo().getParentTenantId())){
+ wxCUserBasicInfo.setQrCode(qrCode);
+ wxCUserBasicInfoService.updateQrCode(wxCUserBasicInfo);
+ }
+ }
+ RedisCacheUtils.cache(objectCommonRedisTemplate, key, qrCode, 0);
+
+ } catch (Exception e) {
+ logger.error("getUserinfoQrCode error.",e);
+ return new ResultData(ErrorCode.SYS_SERVER_ERROR);
+ }
+ }
+ return new ResultData(qrCode);
+
+ }else{
+ return new ResultData(ErrorCode.USER_IS_NOT_MEMBER);
+ }
+ }
+
}
diff --git a/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java
index b9360b06a..2ab65bf5f 100644
--- a/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java
+++ b/mallinkCApi/src/main/java/com/iformall/tenant/TenantInfoImpl.java
@@ -36,6 +36,7 @@ public class TenantInfoImpl implements TenantInfo {
"wx_level_config",
"wx_c_user_basic_info",
"wx_c_user_basic_child",
+ "wx_c_user_basic_sign",
"wx_credit_history",
"wx_score_history",
"wx_c_user_tags",
@@ -50,6 +51,7 @@ public class TenantInfoImpl implements TenantInfo {
"wx_c_user",
"wx_c_user_basic_info",
"wx_c_user_basic_child",
+ "wx_c_user_basic_sign",
"wx_c_user_car",
"wx_c_user_from_b",
"wx_c_user_tags",
diff --git a/mallinkCApi/src/main/resources/application-dev.yml b/mallinkCApi/src/main/resources/application-dev.yml
index b2b606aad..4afa59113 100644
--- a/mallinkCApi/src/main/resources/application-dev.yml
+++ b/mallinkCApi/src/main/resources/application-dev.yml
@@ -155,11 +155,12 @@ jasypt:
password: oRqdnDbK5pj3eMmB
fm:
- exception: false
- exception_emails: houtaikaifa@iformall.com
+ exception: true
+ exception_emails: xuxiaohu@iformall.com
deploy: 1
open: true
upload_dir: /home/test/server/uploads/
+ ocr_data: /root/ocr_data/
logging:
level:
diff --git a/mallinkCApi/src/main/resources/application-prod.yml b/mallinkCApi/src/main/resources/application-prod.yml
index cb6c367fc..86d1a247c 100644
--- a/mallinkCApi/src/main/resources/application-prod.yml
+++ b/mallinkCApi/src/main/resources/application-prod.yml
@@ -115,6 +115,7 @@ fm:
deploy: 3
open: true
upload_dir: /root/uploads/
+ ocr_data: /root/ocr_data/
logging:
level:
diff --git a/mallinkCApi/src/main/resources/application-test.yml-bak b/mallinkCApi/src/main/resources/application-test.yml-bak
index 4aa4daf72..e75ea2d83 100644
--- a/mallinkCApi/src/main/resources/application-test.yml-bak
+++ b/mallinkCApi/src/main/resources/application-test.yml-bak
@@ -93,6 +93,7 @@ fm:
deploy: 2
open: true
upload_dir: /home/ec2-user/server/uploads/
+ ocr_data: /home/ec2-user/server/ocr_data/
logging:
level:
diff --git a/mallinkCallback/src/main/resources/application-dev.yml b/mallinkCallback/src/main/resources/application-dev.yml
index dbbcb8bf7..386d2a3b0 100644
--- a/mallinkCallback/src/main/resources/application-dev.yml
+++ b/mallinkCallback/src/main/resources/application-dev.yml
@@ -161,8 +161,8 @@ jasypt:
password: oRqdnDbK5pj3eMmB
fm:
- exception: false
- exception_emails: houtaikaifa@iformall.com
+ exception: true
+ exception_emails: xuxiaohu@iformall.com
deploy: 1
open: true
upload_dir: /home/test/server/uploads/
diff --git a/mallinkMQConsumer/src/main/resources/application-dev.yml b/mallinkMQConsumer/src/main/resources/application-dev.yml
index 20c8a10d1..46fb6fb84 100644
--- a/mallinkMQConsumer/src/main/resources/application-dev.yml
+++ b/mallinkMQConsumer/src/main/resources/application-dev.yml
@@ -156,8 +156,8 @@ jasypt:
password: oRqdnDbK5pj3eMmB
fm:
- exception: false
- exception_emails: houtaikaifa@iformall.com
+ exception: true
+ exception_emails: xuxiaohu@iformall.com
deploy: 1
open: true
upload_dir: /home/test/server/uploads/
diff --git a/mallinkOcr/pom.xml b/mallinkOcr/pom.xml
new file mode 100644
index 000000000..e0177547c
--- /dev/null
+++ b/mallinkOcr/pom.xml
@@ -0,0 +1,41 @@
+
+
+
+ mallink
+ com.iformall
+ 1.0
+
+ 4.0.0
+
+ mallinkOcr
+
+
+
+ net.java.dev.jna
+ jna
+ 5.3.1
+
+
+ net.sourceforge.tess4j
+ tess4j
+ 4.4.0
+
+
+ commons-io
+ commons-io
+
+
+ commons-logging
+ commons-logging
+
+
+ jna
+ net.java.dev.jna
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mallinkOcr/src/main/java/com/iformall/ocr/FormallTess4j.java b/mallinkOcr/src/main/java/com/iformall/ocr/FormallTess4j.java
new file mode 100644
index 000000000..50b457b9e
--- /dev/null
+++ b/mallinkOcr/src/main/java/com/iformall/ocr/FormallTess4j.java
@@ -0,0 +1,289 @@
+package com.iformall.ocr;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLConnection;
+
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.recognition.software.jdeskew.ImageDeskew;
+import net.sourceforge.tess4j.ITessAPI.TessPageIteratorLevel;
+import net.sourceforge.tess4j.ITesseract;
+import net.sourceforge.tess4j.ITesseract.RenderedFormat;
+import net.sourceforge.tess4j.Tesseract;
+import net.sourceforge.tess4j.Word;
+import net.sourceforge.tess4j.util.ImageHelper;
+import net.sourceforge.tess4j.util.LoggHelper;
+import net.sourceforge.tess4j.util.Utils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * https://www.cnblogs.com/pejsidney/p/9487881.html
+ * Tess4J是对Tesseract OCR API.的Java JNA 封装。使java能够通过调用Tess4J的API来使用Tesseract OCR。支持的格式:TIFF,JPEG,GIF,PNG,BMP,JPEG,and PDF
+ Tesseract 的github地址:https://github.com/tesseract-ocr/tesseract
+ Tess4J的github地址:https://github.com/nguyenq/tess4j
+
+ Tess4J API 提供的功能:
+ 1、直接识别支持的文件
+ 2、识别图片流
+ 3、识别图片的某块区域
+ 4、将识别结果保存为 TEXT/ HOCR/ PDF/ UNLV/ BOX
+ 5、通过设置取词的等级,提取识别出来的文字
+ 6、获得每一个识别区域的具体坐标范围
+ 7、调整倾斜的图片
+ 8、裁剪图片
+ 9、调整图片分辨率
+ 10、从粘贴板获得图像
+ 11、克隆一个图像(目的:创建一份一模一样的图片,与原图在操作修改上,不相 互影响)
+ 12、图片转换为二进制、黑白图像、灰度图像
+ 13、反转图片颜色
+ * @author alascor
+ */
+public class FormallTess4j {
+
+
+ private static final Logger logger = LoggerFactory.getLogger(new LoggHelper().toString());
+ static final double MINIMUM_DESKEW_THRESHOLD = 0.05d;
+
+ private static final String datapath = "src/main/resources";
+ private static final String testResourcesLanguagePath = datapath+"/tessdata";
+ private static final String tempfile = "/ocrtempfile/";
+
+ private static ITesseract instance = new Tesseract();
+
+ static {
+ instance.setDatapath(new File(datapath).getPath());
+ }
+
+ private static File urlImgToFile(String fileUrl) {
+ InputStream ins = null;
+ OutputStream os = null;
+ try {
+ URL url = new URL(fileUrl);
+ URLConnection c = url.openConnection();
+ ins = c.getInputStream();
+ File folder = new File (tempfile) ;
+ if (!folder.exists()) {
+ folder.mkdirs();
+ }
+ File f = new File(tempfile+System.currentTimeMillis()+"-"+IdWorker.get32UUID()+".jpg");
+ if (f.exists()) {
+ f.delete();
+ }
+ f.createNewFile();
+ os = new FileOutputStream(f);
+ int bytesRead = 0;
+ byte[] buffer = new byte[8192];
+ while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
+ os.write(buffer, 0, bytesRead);
+ }
+ os.close();
+ ins.close();
+ return f;
+ } catch (MalformedURLException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }finally {
+ if (null != os) {
+ try {
+ os.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (null != ins) {
+ try {
+ ins.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ return null;
+ }
+
+ private static void deletetempFile(File file) {
+ if (file.exists()) {
+ file.delete();
+ }
+ }
+
+ private static String ocrLocalImgFile(String languagePath,String filePath,String fontName) throws Exception {
+ File imageFile = new File(filePath,fontName);
+ String result = testDoOCR_File(languagePath,imageFile,fontName);
+ deletetempFile(imageFile);
+ return result;
+ }
+
+ public static String ocrNetImgFile(String languagePath,String fileUrl,String fontName) throws Exception {
+ File imageFile = urlImgToFile(fileUrl);
+ String result = testDoOCR_File(languagePath,imageFile,fontName);
+ deletetempFile(imageFile);
+ return result;
+ }
+
+ /**
+ * Test of doOCR method, of class Tesseract.
+ * 根据图片文件进行识别
+ * @throws Exception while processing image.
+ */
+ public static String testDoOCR_File(String languagePath,File imageFile,String fontName) throws Exception {
+ logger.info("doOCR on a jpg image");
+ //set language
+ instance.setDatapath(languagePath);
+ instance.setLanguage(fontName);
+ String result = instance.doOCR(imageFile);
+ return result;
+ }
+
+
+ public static void main(String[] args) {
+ try {
+ System.out.println(ocrNetImgFile(testResourcesLanguagePath,"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.my0832.com%2Fattachments%2Fbbs%2F20140424%2F201442413083356803_740_1186.jpg&refer=http%3A%2F%2Fimg.my0832.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1613903848&t=985fc4c6c7b7ee82cb98f97ab5bf1459","test1"));
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+//
+// /**
+// * Test of doOCR method, of class Tesseract.
+// * 根据图片流进行识别
+// * @throws Exception while processing image.
+// */
+// public void testDoOCR_BufferedImage() throws Exception {
+// logger.info("doOCR on a buffered image of a PNG");
+// File imageFile = new File(this.testResourcesDataPath, "ocr.png");
+// BufferedImage bi = ImageIO.read(imageFile);
+//
+// //set language
+// instance.setDatapath(testResourcesLanguagePath);
+// instance.setLanguage("chi_sim");
+//
+// String result = instance.doOCR(bi);
+// logger.info(result);
+// }
+//
+// /**
+// * Test of getSegmentedRegions method, of class Tesseract.
+// * 得到每一个划分区域的具体坐标
+// * @throws java.lang.Exception
+// */
+// public void testGetSegmentedRegions() throws Exception {
+// logger.info("getSegmentedRegions at given TessPageIteratorLevel");
+// File imageFile = new File(testResourcesDataPath, "ocr.png");
+// BufferedImage bi = ImageIO.read(imageFile);
+// int level = TessPageIteratorLevel.RIL_SYMBOL;
+// logger.info("PageIteratorLevel: " + Utils.getConstantName(level, TessPageIteratorLevel.class));
+// List result = instance.getSegmentedRegions(bi, level);
+// for (int i = 0; i < result.size(); i++) {
+// Rectangle rect = result.get(i);
+// logger.info(String.format("Box[%d]: x=%d, y=%d, w=%d, h=%d", i, rect.x, rect.y, rect.width, rect.height));
+// }
+//
+// assertTrue(result.size() > 0);
+// }
+//
+//
+// /**
+// * Test of doOCR method, of class Tesseract.
+// * 根据定义坐标范围进行识别
+// * @throws Exception while processing image.
+// */
+// public void testDoOCR_File_Rectangle() throws Exception {
+// logger.info("doOCR on a BMP image with bounding rectangle");
+// File imageFile = new File(this.testResourcesDataPath, "ocr.png");
+// //设置语言库
+// instance.setDatapath(testResourcesLanguagePath);
+// instance.setLanguage("chi_sim");
+// //划定区域
+// // x,y是以左上角为原点,width和height是以xy为基础
+// Rectangle rect = new Rectangle(84, 21, 15, 13);
+// String result = instance.doOCR(imageFile, rect);
+// logger.info(result);
+// }
+//
+// /**
+// * Test of createDocuments method, of class Tesseract.
+// * 存储结果
+// * @throws java.lang.Exception
+// */
+// public void testCreateDocuments() throws Exception {
+// logger.info("createDocuments for png");
+// File imageFile = new File(this.testResourcesDataPath, "ocr.png");
+// String outputbase = "target/test-classes/docrenderer-2";
+// List formats = new ArrayList(Arrays.asList(RenderedFormat.HOCR, RenderedFormat.TEXT));
+//
+// //设置语言库
+// instance.setDatapath(testResourcesLanguagePath);
+// instance.setLanguage("chi_sim");
+//
+// instance.createDocuments(new String[]{imageFile.getPath()}, new String[]{outputbase}, formats);
+// }
+//
+// /**
+// * Test of getWords method, of class Tesseract.
+// * 取词方法
+// * @throws java.lang.Exception
+// */
+// public void testGetWords() throws Exception {
+// logger.info("getWords");
+// File imageFile = new File(this.testResourcesDataPath, "ocr.png");
+//
+// //设置语言库
+// instance.setDatapath(testResourcesLanguagePath);
+// instance.setLanguage("chi_sim");
+//
+// //按照每个字取词
+// int pageIteratorLevel = TessPageIteratorLevel.RIL_SYMBOL;
+// logger.info("PageIteratorLevel: " + Utils.getConstantName(pageIteratorLevel, TessPageIteratorLevel.class));
+// BufferedImage bi = ImageIO.read(imageFile);
+// List result = instance.getWords(bi, pageIteratorLevel);
+//
+// //print the complete result
+// for (Word word : result) {
+// logger.info(word.toString());
+// }
+// }
+//
+// /**
+// * Test of Invalid memory access.
+// * 处理倾斜
+// * @throws Exception while processing image.
+// */
+// public void testDoOCR_SkewedImage() throws Exception {
+// //设置语言库
+// instance.setDatapath(testResourcesLanguagePath);
+// instance.setLanguage("chi_sim");
+//
+// logger.info("doOCR on a skewed PNG image");
+// File imageFile = new File(this.testResourcesDataPath, "ocr_skewed.jpg");
+// BufferedImage bi = ImageIO.read(imageFile);
+// ImageDeskew id = new ImageDeskew(bi);
+// double imageSkewAngle = id.getSkewAngle(); // determine skew angle
+// if ((imageSkewAngle > MINIMUM_DESKEW_THRESHOLD || imageSkewAngle < -(MINIMUM_DESKEW_THRESHOLD))) {
+// bi = ImageHelper.rotateImage(bi, -imageSkewAngle); // deskew image
+// }
+//
+// String result = instance.doOCR(bi);
+// logger.info(result);
+// }
+
+}
diff --git a/mallinkOcr/src/main/java/com/iformall/ocr/FormallTess4jTrain.java b/mallinkOcr/src/main/java/com/iformall/ocr/FormallTess4jTrain.java
new file mode 100644
index 000000000..db27abb96
--- /dev/null
+++ b/mallinkOcr/src/main/java/com/iformall/ocr/FormallTess4jTrain.java
@@ -0,0 +1,135 @@
+package com.iformall.ocr;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+
+/**
+ * 训练
+ * @author iformall
+ */
+public class FormallTess4jTrain {
+
+ private static final String newFileFolder = "C:\\Users\\iformall\\Desktop\\newfile";
+
+ private static final String huanhangstr = " \n ";
+
+ private static String getprefix(String lang,String fontName) {
+ String realFileName = lang+"."+fontName+".exp0";
+ return realFileName;
+ }
+
+ private static String createBoxFile(String tifFileName,String lang,String fontName) {
+ String prefix = getprefix(lang,fontName);
+ String realFileName = prefix+".tif";
+ if (tifFileName.equals(realFileName)) {
+ String cmdstr = "tesseract "+tifFileName+" "+prefix+" -l chi_sim batch.nochop makebox";
+ return cmdstr;
+ //String result = executeLocalCmd(cmdstr, null);
+
+ //System.out.println("Done createBoxFile"+result);
+ }else {
+ return "文件必须是.tif";
+ }
+ }
+
+ private static String createTranFile(String lang,String fontName) {
+ String prefix = getprefix(lang,fontName);
+ String realFileName = prefix+".tif";
+ String trainCmdstr = "tesseract "+realFileName+" "+prefix+" nobatch box.train";
+ return trainCmdstr;
+ }
+
+ private static String getBoxFont(String lang,String fontName) {
+ String prefix = getprefix(lang,fontName);
+ String extractorCmdstr = "unicharset_extractor "+prefix+".box";
+ return extractorCmdstr;
+ }
+
+ /**
+ * 第六步,执行完成后生成以下几个文件加前缀
+ * unicharset、inttemp、pffmtable、shapetable、normproto 添加这几个文件的前缀为fontName
+ * @param lang
+ * @param fontName
+ * @return
+ */
+ private static String renameTrainFiles(String fontName) {
+ StringBuffer sb = new StringBuffer();
+ String renCmdstr = "REN unicharset "+fontName+".unicharset";
+ sb.append(renCmdstr).append(huanhangstr);
+
+ renCmdstr = "REN inttemp "+fontName+".inttemp";
+ sb.append(renCmdstr).append(huanhangstr);
+
+ renCmdstr = "REN pffmtable "+fontName+".pffmtable";
+ sb.append(renCmdstr).append(huanhangstr);
+
+ renCmdstr = "REN shapetable "+fontName+".shapetable";
+ sb.append(renCmdstr).append(huanhangstr);
+
+ renCmdstr = "REN normproto "+fontName+".normproto";
+ sb.append(renCmdstr).append(huanhangstr);
+ return sb.toString();
+ }
+
+ /**
+ * 第七步:合并5个文件
+ * @param lang
+ * @param fontName
+ * @return
+ */
+ private static String mergeTrainFiles(String fontName) {
+ String mergeCmdstr = "combine_tessdata "+fontName+".";
+ return mergeCmdstr;
+ }
+
+
+ public static String getTrainSteps(String lang,String fontName) {
+
+ StringBuffer sb = new StringBuffer("请先安装tess4j(4.0以上),配置好环境变量. 下载jTessBoxEditor(用于训练,带FX的支持中文)").append(huanhangstr);
+ sb.append("请进入到样本图片文件夹用doc命令执行.").append(huanhangstr);
+ sb.append("第一步,用jTessBoxEditor --> Tools --> Merge 多选图片,保存为tif格式 .命名格式为[lang].[fontName].exp0.tif. 命名:").append(lang).append(".").append(fontName).append(".exp0.tif ").append(huanhangstr);
+ sb.append("............ ").append(huanhangstr);
+ sb.append("第二步,用tif生成box ").append(huanhangstr);
+ sb.append(createBoxFile(lang+"."+fontName+".exp0.tif", lang, fontName)).append(huanhangstr);
+ sb.append("............ ").append(huanhangstr);
+ sb.append("第三步,用jTessBoxEditor 打开.box文件进行矫正 ").append(huanhangstr);
+ sb.append("............ ").append(huanhangstr);
+ sb.append("第四步:用box文件生成。tr文件 ").append(huanhangstr);
+ sb.append(createTranFile(lang,fontName)).append(huanhangstr);
+ sb.append("............ ").append(huanhangstr);
+ sb.append("第五步:提取box字符 ").append(huanhangstr);
+ sb.append(getBoxFont(lang,fontName)).append(huanhangstr);
+ sb.append("............ ").append(huanhangstr);
+ sb.append("@@@!!!!从此处开始,可以处理多个字库处理。如原来的字库现在做升级,需要把老的字库的。tif,.box,.tr文件重新命名也放到同目录文件夹, ").append(huanhangstr);
+ sb.append("............ ").append(huanhangstr);
+ sb.append("第六步:新建font_properties(没有.txt后缀), 把所有box对应的字体特征加进去。").append(huanhangstr);
+ sb.append("fontname为字体名称,保持和 图片集文件 .tif 和.box文件的前缀名一致 . 、 、 、、 的取值为1或0,表示字体是否具有这些属性。 ").append(huanhangstr);
+ sb.append("如以下内容: ").append(huanhangstr);
+ sb.append("fontName1 0 0 0 0 0 ").append(huanhangstr);
+ sb.append("fontName2 0 1 0 0 0 ").append(huanhangstr);
+ sb.append("fontName3 1 1 0 0 0 ").append(huanhangstr);
+ sb.append("............ ").append(huanhangstr);
+ sb.append("第六步:批量执行系列命令。多个文件在后面累加。 ").append(huanhangstr);
+ String prefix = getprefix(lang,fontName);
+ String shapeCmdStr = "shapeclustering -F font_properties -U unicharset "+prefix+".tr [other .tr files...] ";
+ sb.append(shapeCmdStr).append(huanhangstr);
+ String mftraingCmdstr = "mftraining -F font_properties -U unicharset -O unicharset "+prefix+".tr [other .tr files...] ";
+ sb.append(mftraingCmdstr).append(huanhangstr);
+ String cntrainCmdstr = "cntraining "+prefix+".tr [other .tr files...] ";
+ sb.append(cntrainCmdstr).append(huanhangstr);
+ sb.append("............ ").append(huanhangstr);
+ sb.append("第七步,执行完成后生成以下几个文件加前缀: unicharset、inttemp、pffmtable、shapetable、normproto 添加这几个文件的前缀为[fontName] ").append(huanhangstr);
+ sb.append(renameTrainFiles(fontName));
+ sb.append("............ ").append(huanhangstr);
+ sb.append("第七步:合并5个文件").append(huanhangstr);
+ sb.append(mergeTrainFiles(fontName)).append(huanhangstr);
+ sb.append("............ ").append(huanhangstr);
+ sb.append("第八步:将").append(fontName).append(".traineddata 文件拷贝到后端服务器ocr_data(项目配置fm.ocr_data)目录下。 .tif、。box、。tr文件也需要保留,后面如果这个字库有更新,需要用到这些文件。").append(huanhangstr);
+ return sb.toString();
+ }
+
+}
diff --git a/mallinkOcr/src/main/resources/Read.txt b/mallinkOcr/src/main/resources/Read.txt
new file mode 100644
index 000000000..9a470fa25
--- /dev/null
+++ b/mallinkOcr/src/main/resources/Read.txt
@@ -0,0 +1,14 @@
+https://www.cnblogs.com/wj-1314/p/9454656.html
+
+https://www.cnblogs.com/pejsidney/p/9487881.html
+
+
+https://digi.bib.uni-mannheim.de/tesseract/
+
+https://blog.csdn.net/qq_40147863/article/details/82290015
+
+https://blog.csdn.net/boonya/article/details/81325997
+
+
+合并字库 https://www.cnblogs.com/c2soft/articles/10415236.html
+完整教程 https://www.cnblogs.com/wpcnblog/p/12850590.html
diff --git a/mallinkOcr/src/main/resources/tessdata/chi_sim.traineddata b/mallinkOcr/src/main/resources/tessdata/chi_sim.traineddata
new file mode 100644
index 000000000..eeb66cfbd
Binary files /dev/null and b/mallinkOcr/src/main/resources/tessdata/chi_sim.traineddata differ
diff --git a/mallinkOcr/src/main/resources/tessdata/eng.traineddata b/mallinkOcr/src/main/resources/tessdata/eng.traineddata
new file mode 100644
index 000000000..f4744c201
Binary files /dev/null and b/mallinkOcr/src/main/resources/tessdata/eng.traineddata differ
diff --git a/mallinkOcr/src/main/resources/tessdata/osd.traineddata b/mallinkOcr/src/main/resources/tessdata/osd.traineddata
new file mode 100644
index 000000000..183644aa5
Binary files /dev/null and b/mallinkOcr/src/main/resources/tessdata/osd.traineddata differ
diff --git a/mallinkOcr/src/main/resources/tessdata/pdf.ttf b/mallinkOcr/src/main/resources/tessdata/pdf.ttf
new file mode 100644
index 000000000..c33bafe3b
--- /dev/null
+++ b/mallinkOcr/src/main/resources/tessdata/pdf.ttf
@@ -0,0 +1 @@
+tessconfigs/pdf.ttf
\ No newline at end of file
diff --git a/mallinkOcr/src/main/resources/tessdata/test1.traineddata b/mallinkOcr/src/main/resources/tessdata/test1.traineddata
new file mode 100644
index 000000000..a07542f43
Binary files /dev/null and b/mallinkOcr/src/main/resources/tessdata/test1.traineddata differ
diff --git a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java
index c6c4daa73..94ff2dead 100644
--- a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java
+++ b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java
@@ -1376,7 +1376,7 @@ public class PosServiceImpl implements PosService {
//如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户
creditHistory.setMerchantId(wxMerchant.getId());
creditHistory.setChangePurpose("pos消费:消费商户["+wxMerchant.getName()+"] 卷名称["+coupon.getTitle()+"("+creditHistory.getSpendStr()+"元)] ");
- creditHistory = creditHistoryService.saveOrUpdate(creditHistory);
+ creditHistory = creditHistoryService.saveOrUpdate(creditHistory,couponOrderCVo.getTenantId());
if (creditHistory.getCreditNum() != null) {
return creditHistory.getCreditNum();
} else {
@@ -1405,7 +1405,7 @@ public class PosServiceImpl implements PosService {
//如果券与商户一对一 则直接将消费商户更新为此商户 若一对多 则消费商户显示多商户
creditHistory.setMerchantId(merchant.getId());
creditHistory.setChangePurpose("pos消费:消费商户["+merchant.getName()+"] 消费金额["+creditHistory.getSpendStr()+"元]");
- creditHistory = creditHistoryService.saveOrUpdate(creditHistory);
+ creditHistory = creditHistoryService.saveOrUpdate(creditHistory,merchant.getTenantId());
if (creditHistory.getCreditNum() != null) {
return creditHistory.getCreditNum();
} else {
diff --git a/mallinkPosApi/src/main/resources/application-dev.yml b/mallinkPosApi/src/main/resources/application-dev.yml
index c7930118a..088229df9 100644
--- a/mallinkPosApi/src/main/resources/application-dev.yml
+++ b/mallinkPosApi/src/main/resources/application-dev.yml
@@ -155,8 +155,8 @@ wechat:
min-idle: 10
fm:
- exception: false
- exception_emails: houtaikaifa@iformall.com
+ exception: true
+ exception_emails: xuxiaohu@iformall.com
deploy: 1
open: true
upload_dir: /home/test/server/uploads
diff --git a/mallinkPublicApi/pom.xml b/mallinkPublicApi/pom.xml
new file mode 100644
index 000000000..14ec5fb04
--- /dev/null
+++ b/mallinkPublicApi/pom.xml
@@ -0,0 +1,154 @@
+
+
+ 4.0.0
+
+ mallink
+ com.iformall
+ 1.0
+
+
+ mallinkPublicApi
+
+
+
+ com.iformall
+ mallinkService
+ 1.0
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+ ZIP
+
+ antlr,
+ cn.afterturn,
+ ch.qos.logback,
+ com.alibaba,
+ com.amazonaws,
+ com.baomidou,
+ com.mchange,
+ com.fasterxml.jackson.core,
+ com.fasterxml.jackson.dataformat,
+ com.fasterxml.jackson.datatype,
+ com.fasterxml.jackson.module,
+ com.fasterxml.uuid,
+ com.fasterxml,
+ com.github.axet,
+ com.github.jsqlparser,
+ com.github.pagehelper,
+ com.github.ulisesbocchio,
+ com.github.virtuald,
+ com.google.code.findbugs,
+ com.google.code.gson,
+ com.google.errorprone,
+ com.google.guava,
+ com.google.protobuf,
+ com.google.zxing,
+ com.jayway.jsonpath,
+ com.jhlabs,
+ com.puppycrawl.tools,
+ com.rabbitmq,
+ com.squareup.okhttp3,
+ com.squareup.okio,
+ com.sun,
+ com.sun.mail,
+ com.thoughtworks.xstream,
+ com.zaxxer,
+ commons-beanutils,
+ commons-cli,
+ commons-codec,
+ commons-collections,
+ commons-fileupload,
+ commons-io,
+ commons-logging,
+ io.lettuce,
+ io.netty,
+ io.projectreactor,
+ io.springfox,
+ io.swagger,
+ io.undertow,
+ javax.activation,
+ javax.annotation,
+ javax.mail,
+ javax.persistence,
+ javax.servlet,
+ javax.validation,
+ javax.xml.bind,
+ javax.xml.soap,
+ javax.xml.ws,
+ joda-time,
+ junit,
+ mysql,
+ net.bytebuddy,
+ net.minidev,
+ net.sf.dozer,
+ net.sf.saxon,
+ ognl,
+ org.antlr,
+ org.apache.commons,
+ org.apache.httpcomponents,
+ org.apache.logging.log4j,
+ org.apache.poi,
+ org.apache.poi.wso2,
+ org.apache.rocketmq,
+ org.apache.shiro,
+ org.apache.tomcat.embed,
+ org.apache.xmlbeans,
+ org.aspectj,
+ org.assertj,
+ org.bouncycastle,
+ org.checkerframework,
+ org.codehaus.mojo,
+ org.crazycake,
+ org.dom4j,
+ org.flowable,
+ org.flywaydb,
+ org.glassfish,
+ org.hibernate.validator,
+ org.jasypt,
+ org.javassist,
+ org.jboss.logging,
+ org.jboss.spec.javax.annotation,
+ org.jboss.spec.javax.websocket,
+ org.jboss.xnio,
+ org.jdom,
+ org.jodd,
+ org.jvnet.mimepull,
+ org.jvnet.staxex,
+ org.mapstruct,
+ org.mockito,
+ org.mybatis,
+ org.mybatis.generator,
+ org.mybatis.spring.boot,
+ org.ow2.asm,
+ org.projectlombok,
+ org.quartz-scheduler,
+ org.reactivestreams,
+ org.reflections,
+ org.rocketmq.spring.boot,
+ org.slf4j,
+ org.springframework,
+ org.springframework.amqp,
+ org.springframework.boot,
+ org.springframework.data,
+ org.springframework.retry,
+ org.springframework.ws,
+ org.yaml,
+ redis.clients,
+ software.amazon.ion,
+ tk.mybatis,
+ xmlpull,
+ xpp3
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mallinkPublicApi/src/main/java/com/iformall/PublicApiApplication.java b/mallinkPublicApi/src/main/java/com/iformall/PublicApiApplication.java
new file mode 100644
index 000000000..bb2e930a5
--- /dev/null
+++ b/mallinkPublicApi/src/main/java/com/iformall/PublicApiApplication.java
@@ -0,0 +1,60 @@
+package com.iformall;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.rocketmq.starter.annotation.EnableRocketMQ;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+
+import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
+
+/**
+ * @author chenkx
+ * @date 2017-12-26
+ */
+@SpringBootApplication
+@MapperScan(basePackages = {"com.iformall.mapper"})
+@EnableEncryptableProperties
+@EnableRocketMQ
+@EnableAspectJAutoProxy(exposeProxy = true)
+public class PublicApiApplication {
+
+ @Value("${fm.exception}")
+ private boolean fmException;
+
+ @Value("${fm.exception_emails}")
+ private String fmExceptionEmails;
+
+ @Value("${fm.open}")
+ private boolean fmOpen;
+
+ @Value("${fm.upload_dir}")
+ private String uploadDir;
+
+ @Bean
+ public boolean isFmException() {
+ return fmException;
+ }
+
+ @Bean
+ public String fmExceptionEmails() {
+ return fmExceptionEmails;
+ }
+
+ @Bean
+ public boolean isFmOpen() {
+ return fmOpen;
+ }
+
+ @Bean
+ public String fmUploadDir() {
+ return uploadDir;
+ }
+
+
+ public static void main(String[] args) {
+ SpringApplication.run(PublicApiApplication.class, args);
+ }
+}
diff --git a/mallinkPublicApi/src/main/java/com/iformall/annotation/RedisCache.java b/mallinkPublicApi/src/main/java/com/iformall/annotation/RedisCache.java
new file mode 100644
index 000000000..185736606
--- /dev/null
+++ b/mallinkPublicApi/src/main/java/com/iformall/annotation/RedisCache.java
@@ -0,0 +1,53 @@
+package com.iformall.annotation;
+
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.concurrent.TimeUnit;
+
+
+/**
+ * - /api/wxCouponChannel/change
+ * - /api/user/userinfo
+ * - /api/wxBusiness/listAll
+ * - /api/wxCampaign/list
+ * - /api/mall/mallInfo
+ * - /api/mall/getAppIcon
+ * - /api/mall/getWeapNote
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RedisCache {
+
+ /**
+ * 缓存key的名称
+ * @return
+ */
+ String key() default "";
+
+ /**
+ * 自动生成key
+ * @return
+ */
+ boolean autoKey() default true;
+
+ /**
+ * 参数md5,解决key过长问题
+ * @return
+ */
+ boolean md5() default true ;
+
+ /**
+ * key 过期日期默认60秒
+ * @return
+ */
+ int expireTime() default 60;
+
+ /**
+ * 时间单位默认为秒
+ * @return
+ */
+ TimeUnit dateUnit() default TimeUnit.SECONDS;
+}
diff --git a/mallinkPublicApi/src/main/java/com/iformall/aop/RedisCacheAspect.java b/mallinkPublicApi/src/main/java/com/iformall/aop/RedisCacheAspect.java
new file mode 100644
index 000000000..f001c7912
--- /dev/null
+++ b/mallinkPublicApi/src/main/java/com/iformall/aop/RedisCacheAspect.java
@@ -0,0 +1,161 @@
+package com.iformall.aop;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.iformall.annotation.RedisCache;
+import com.iformall.common.ErrorCode;
+import com.iformall.domain.po.WxCUser;
+import com.iformall.domain.po.base.BaseCUserEntity;
+import com.iformall.exception.MallinkException;
+import com.iformall.service.CUserTokenService;
+import com.iformall.utils.HashUtil;
+import com.iformall.utils.RedisLock;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+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.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Objects;
+
+@Slf4j
+@Aspect
+@Component
+public class RedisCacheAspect {
+
+ /**
+ * 参数分隔符 param1|param2|param3
+ **/
+ private static final String DELIMITER_PARAMS = "|";
+
+ /**
+ * key 分隔符
+ */
+ private static final String DELIMITER_KEY = ":";
+
+ @Autowired
+ private StringRedisTemplate stringRedisTemplate;
+
+ @Autowired
+ RedisLock redisLock;
+
+ @Autowired
+ private CUserTokenService cUserTokenService;
+
+ @Pointcut("@annotation(com.iformall.annotation.RedisCache)")
+ public void cacheAspect() {
+ }
+
+ @Around("cacheAspect()")
+ public Object round(ProceedingJoinPoint jp) throws Throwable {
+ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+ // 查询token信息
+ //从header中获取token
+ String token = request.getHeader("token");
+ //如果header中不存在token,则从参数中获取token
+ if (StringUtils.isBlank(token)) {
+ token = request.getParameter("token");
+ }
+ if(StringUtils.isBlank(token) || "null".equals(token) || "undefined".equals(token)){
+ token="";
+ //throw new MallinkException(ErrorCode.NET_TOKEN_EMPTY.getCode(),"token为空["+token+"]");
+ }
+ log.info("token>>>>>>>>>>>>>>>"+token);
+ String tenantId;
+ BaseCUserEntity cUser = null ;
+ if(StringUtils.isNotBlank(token)) {
+ cUser = cUserTokenService.getByToken(token);
+ }
+ if (Objects.isNull(cUser) || cUser.getExpireTime().getTime() < System.currentTimeMillis()) {
+ tenantId = "0";
+ } else {
+ tenantId = cUser.getTenantId();
+ }
+
+ // 请求参数
+ Object[] args = jp.getArgs();
+ // 接口 返回结果
+ Object result;
+ String redisKey;
+
+ //得到注释的名称
+ MethodSignature signature = (MethodSignature) jp.getSignature();
+ //判断tag是否在用户权限中 如果存在加入参数查询
+ Method method = signature.getMethod();
+ RedisCache cache = method.getAnnotation(RedisCache.class) ;
+ if (cache.autoKey()) {
+ // 构建 redisKey => reqPath:tenantId:md5(param1_param2_param3)
+ String requestUrl = request.getRequestURI();
+ // 接口路径 reqPath => /api/xxx
+ String reqPath = requestUrl.substring(requestUrl.indexOf("/api/"));
+ if (cache.md5()) {
+ String md5Before = StringUtils.join(args, DELIMITER_PARAMS);
+ redisKey = StringUtils.join(reqPath, DELIMITER_KEY, tenantId, DELIMITER_KEY, HashUtil.md5(StringUtils.join(token, md5Before, DELIMITER_PARAMS)));
+ } else {
+ redisKey = StringUtils.join(reqPath, DELIMITER_KEY, tenantId, DELIMITER_KEY, StringUtils.join(token,args, DELIMITER_PARAMS));
+ }
+ } else {
+ redisKey = cache.key();
+ }
+
+ // redisKey 不存在,获取接口数据并返回
+ if (StringUtils.isBlank(redisKey)) {
+ result = jp.proceed(args);
+ } else {
+ ValueOperations valueOperations = stringRedisTemplate.opsForValue();
+ String value = valueOperations.get(redisKey);
+ if (value == null) {
+ String lockKey = StringUtils.join(redisKey, ":", "lock");
+ long time = System.currentTimeMillis() + 2000;
+ String timeStr = String.valueOf(time);
+ try {
+ //分布式锁,保证一个线程读DB,其它线程排队
+ if (redisLock.lock2(lockKey, timeStr)) {
+ log.debug("CacheAspect 读库中, key:{}: " + lockKey);
+ result = jp.proceed(args);
+ String json_data = JSONObject.toJSONString(result);
+ valueOperations.set(redisKey, json_data, cache.expireTime(), cache.dateUnit());
+ log.debug("CacheAspect 缓存不存在,获取接口数据并放入缓存,key:{}, expire:{}", redisKey, cache.expireTime());
+ } else {
+ log.debug("CacheAspect 读库等待中, key:{}: " + lockKey);
+ Thread.sleep(2000);
+ value = valueOperations.get(redisKey);
+ result = parseCache(jp, redisKey, value);
+ }
+ } catch (Throwable throwable) {
+ log.error("CacheAspect proceed error , Illegal argument: {} in {}.{}()", Arrays.toString(jp.getArgs()),
+ jp.getSignature().getDeclaringTypeName(), jp.getSignature().getName(), throwable);
+ throw throwable;
+ } finally {
+ redisLock.unlock(lockKey, timeStr);
+ }
+ } else {
+ result = parseCache(jp, redisKey, value);
+ }
+ // 计数器
+ stringRedisTemplate.opsForHash().increment("hotapi", redisKey, 1);
+ }
+ return result;
+ }
+
+ private Object parseCache(ProceedingJoinPoint jp, String redisKey, String value) {
+ if (StringUtils.isBlank(value)) {
+ log.debug("CacheAspect 缓存不存在,解析缓存数据为空:{},key:{}", value, redisKey);
+ return null;
+ }
+ Class> returnType = ((MethodSignature) jp.getSignature()).getReturnType();
+ log.debug("CacheAspect 缓存存在,解析缓存并返回,key:{}", redisKey);
+ return JSONObject.parseObject(value, returnType);
+ }
+}
diff --git a/mallinkPublicApi/src/main/java/com/iformall/config/MyBatisConfiguration.java b/mallinkPublicApi/src/main/java/com/iformall/config/MyBatisConfiguration.java
new file mode 100644
index 000000000..f58a1dd3b
--- /dev/null
+++ b/mallinkPublicApi/src/main/java/com/iformall/config/MyBatisConfiguration.java
@@ -0,0 +1,24 @@
+package com.iformall.config;
+
+import com.iformall.plugin.MyBatisItercepters;
+import com.iformall.plugin.MyBatisPlus;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MyBatisConfiguration extends BaseMyBatisConfiguration {
+
+ @Bean
+ public MyBatisItercepters intercepters() {
+ MyBatisItercepters intercepters = new MyBatisItercepters();
+ List plugins = new ArrayList();
+ plugins.add(baseShardingSpherePlugin());
+
+ intercepters.setPlugins(plugins);
+ return intercepters;
+ }
+}
diff --git a/mallinkPublicApi/src/main/java/com/iformall/config/RedisConfig.java b/mallinkPublicApi/src/main/java/com/iformall/config/RedisConfig.java
new file mode 100644
index 000000000..02e61114a
--- /dev/null
+++ b/mallinkPublicApi/src/main/java/com/iformall/config/RedisConfig.java
@@ -0,0 +1,335 @@
+package com.iformall.config;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.github.pagehelper.PageInfo;
+import com.iformall.domain.po.*;
+import com.iformall.domain.po.base.BaseCUserEntity;
+import com.iformall.domain.vo.WxCouponCVo;
+import com.iformall.domain.vo.WxCouponChannelVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.annotation.CachingConfigurerSupport;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.cache.RedisCacheConfiguration;
+import org.springframework.data.redis.cache.RedisCacheManager;
+import org.springframework.data.redis.cache.RedisCacheWriter;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by Stormeye on 2018/10/1.
+ */
+@Configuration
+@EnableCaching
+public class RedisConfig extends CachingConfigurerSupport {
+
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ //缓存管理器
+ @Bean
+ public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
+ //user信息缓存配置
+ RedisCacheConfiguration userCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(10)).disableCachingNullValues().prefixKeysWith("user");
+ Map redisCacheConfigurationMap = new HashMap<>();
+ redisCacheConfigurationMap.put("user", userCacheConfiguration);
+ //初始化一个RedisCacheWriter
+ RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory);
+ // 设置CacheManager的值序列化方式为JdkSerializationRedisSerializer,但其实RedisCacheConfiguration默认就是使用StringRedisSerializer序列化key,JdkSerializationRedisSerializer序列化value,所以以下注释代码为默认实现
+ // ClassLoader loader = this.getClass().getClassLoader();
+ // JdkSerializationRedisSerializer jdkSerializer = new JdkSerializationRedisSerializer(loader);
+ // RedisSerializationContext.SerializationPair