From 58479c17e33c06914e740962893ce2e5fb58c3f2 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 27 Jan 2021 13:54:15 +0800 Subject: [PATCH] fix ocr --- .../db/migration/V202101260001__ocr.sql | 12 ++++ .../iformall/controller/WxOcrController.java | 25 +++++++- .../src/main/resources/application-dev.yml | 2 +- .../iformall/domain/po/WxMallOcrModel.java | 25 ++++++++ .../iformall/mapper/WxMallOcrModelMapper.java | 14 +++++ .../com/iformall/service/WxOcrService.java | 9 +++ .../service/impl/WxOcrServiceImpl.java | 39 ++++++++++++- .../resources/mapper/WxMallOcrModelMapper.xml | 57 +++++++++++++++++++ .../src/main/resources/application-dev.yml | 2 +- 9 files changed, 179 insertions(+), 6 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxMallOcrModel.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxMallOcrModelMapper.java create mode 100644 mallinkService/src/main/resources/mapper/WxMallOcrModelMapper.xml diff --git a/mallinkAdmin/src/main/resources/db/migration/V202101260001__ocr.sql b/mallinkAdmin/src/main/resources/db/migration/V202101260001__ocr.sql index 26c195125..705fb47a6 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202101260001__ocr.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202101260001__ocr.sql @@ -22,3 +22,15 @@ CREATE TABLE `wx_ocr_model` ( 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; diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOcrController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOcrController.java index 79bef0746..ceac8a1f4 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOcrController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOcrController.java @@ -2,10 +2,13 @@ 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; @@ -29,6 +32,10 @@ public class WxOcrController extends BaseController { @Autowired private WxOcrService ocrService; + @Autowired + private WxMallService mallService; + + @Autowired private String ocrData; @@ -40,13 +47,25 @@ public class WxOcrController extends BaseController { }) 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) { - return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "当前商户没有配置OCR模板"); + 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(MerchantModel.getOcrModelId()); + WxOcrModel ocrModel = ocrService.getOcrModelById(modelId); if (null == ocrModel) { - return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "当前商户配置的OCR模板未查询到"); + return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "OCR模板未查询到:"+modelId); } String result; try { diff --git a/mallinkCApi/src/main/resources/application-dev.yml b/mallinkCApi/src/main/resources/application-dev.yml index a3334c605..d033f385a 100644 --- a/mallinkCApi/src/main/resources/application-dev.yml +++ b/mallinkCApi/src/main/resources/application-dev.yml @@ -160,7 +160,7 @@ fm: deploy: 1 open: true upload_dir: /home/test/server/uploads/ - ocr_data: /home/test/server/ocr_data/ + ocr_data: /root/ocr_data/ logging: level: diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMallOcrModel.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMallOcrModel.java new file mode 100644 index 000000000..ee7c97148 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMallOcrModel.java @@ -0,0 +1,25 @@ +package com.iformall.domain.po; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; + +@TableName(value = "wx_mall_ocr_model") +@Data +@EqualsAndHashCode(callSuper = true) +public class WxMallOcrModel extends TenantEntity { + private static final long serialVersionUID = 1L; + + protected Long id; + @io.swagger.annotations.ApiModelProperty(value="商户编号",name="mallId") + private Long mallId; + @io.swagger.annotations.ApiModelProperty(value="ocr模板编号",name="ocrModelId") + private Long ocrModelId; + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") + private Date createTime; + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="updateTime") + private Date updateTime; + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxMallOcrModelMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxMallOcrModelMapper.java new file mode 100644 index 000000000..2a5b55eeb --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxMallOcrModelMapper.java @@ -0,0 +1,14 @@ +package com.iformall.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.iformall.domain.po.WxMallOcrModel; + +import java.util.List; + +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface WxMallOcrModelMapper extends BaseMapper { + + List findList(WxMallOcrModel merchantOcrModel); +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxOcrService.java b/mallinkService/src/main/java/com/iformall/service/WxOcrService.java index a4366a717..e5e81d5af 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOcrService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOcrService.java @@ -3,6 +3,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxActivity; +import com.iformall.domain.po.WxMallOcrModel; import com.iformall.domain.po.WxMerchantOcrModel; import com.iformall.domain.po.WxOcrModel; import com.iformall.enums.EnumPayWay; @@ -27,4 +28,12 @@ public interface WxOcrService { ResultData saveOrUpdateMerchantOcrModel(WxMerchantOcrModel record); ResultData deleteMerchantOcrModel(Long id); + + WxMallOcrModel getMallOcrModel(Long mallId,String tenantId,String parentTenantId); + + ResultData saveOrUpdateMallOcrModel(WxMallOcrModel record); + + ResultData deleteMallOcrModel(Long id); + + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOcrServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOcrServiceImpl.java index 696dcd800..48d5a2ba9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOcrServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOcrServiceImpl.java @@ -5,8 +5,10 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; +import com.iformall.domain.po.WxMallOcrModel; import com.iformall.domain.po.WxMerchantOcrModel; import com.iformall.domain.po.WxOcrModel; +import com.iformall.mapper.WxMallOcrModelMapper; import com.iformall.mapper.WxMerchantOcrModelMapper; import com.iformall.mapper.WxOcrModelMapper; import com.iformall.service.WxOcrService; @@ -25,6 +27,8 @@ public class WxOcrServiceImpl implements WxOcrService { WxMerchantOcrModelMapper merchantOcrModelMapper; @Autowired WxOcrModelMapper ocrModelMapper; + @Autowired + WxMallOcrModelMapper mallOcrModelMapper; @Override public PageInfo listOcrModelAsPage(WxOcrModel record, Integer pageIndex, Integer pageSize) { @@ -83,7 +87,40 @@ public class WxOcrServiceImpl implements WxOcrService { public ResultData deleteMerchantOcrModel(Long id) { merchantOcrModelMapper.deleteById(id); return new ResultData(Result.SUCCESS, "操作成功"); - } + @Override + public WxMallOcrModel getMallOcrModel(Long mallId, String tenantId, String parentTenantId) { + WxMallOcrModel query = new WxMallOcrModel(); + query.setMallId(mallId); + query.setTenantId(tenantId); + query.setParentTenantId(parentTenantId); + List models = mallOcrModelMapper.findList(query); + if (null == models || models.size() <= 0) { + return null; + } + return models.get(0); + } + + @Override + public ResultData saveOrUpdateMallOcrModel(WxMallOcrModel record) { + Date date = new Date(); + if (record.getId() == null) { + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + record.setCreateTime(date); + mallOcrModelMapper.insert(record); + } else { + record.setUpdateTime(date); + mallOcrModelMapper.updateById(record); + } + return new ResultData(Result.SUCCESS, "操作成功"); + } + + @Override + public ResultData deleteMallOcrModel(Long id) { + mallOcrModelMapper.deleteById(id); + return new ResultData(Result.SUCCESS, "操作成功"); + } + } diff --git a/mallinkService/src/main/resources/mapper/WxMallOcrModelMapper.xml b/mallinkService/src/main/resources/mapper/WxMallOcrModelMapper.xml new file mode 100644 index 000000000..3f36961fa --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxMallOcrModelMapper.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + id,tenant_id,parent_tenant_id,mall_id,ocr_model_id,create_time,update_time + + + + where 1 = 1 + + + and `id` = #{id} + + + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + + + and `mall_id` = #{mallId} + + + + and `ocr_model_id` = #{ocrModelId} + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + \ No newline at end of file diff --git a/mallinkSysAdmin/src/main/resources/application-dev.yml b/mallinkSysAdmin/src/main/resources/application-dev.yml index 41f9ff620..17e994ace 100644 --- a/mallinkSysAdmin/src/main/resources/application-dev.yml +++ b/mallinkSysAdmin/src/main/resources/application-dev.yml @@ -165,7 +165,7 @@ fm: deploy: 1 open: true upload_dir: /home/test/server/uploads/ - ocr_data: /home/test/server/ocr_data/ + ocr_data: /root/ocr_data/ ueditor: config: config.json