| @@ -22,3 +22,15 @@ CREATE TABLE `wx_ocr_model` ( | |||||
| UNIQUE KEY `UNIQUE` (`font_name`) | UNIQUE KEY `UNIQUE` (`font_name`) | ||||
| ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; | ) 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; | |||||
| @@ -2,10 +2,13 @@ package com.iformall.controller; | |||||
| import com.iformall.common.ErrorCode; | import com.iformall.common.ErrorCode; | ||||
| import com.iformall.common.ResultData; | 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.WxMerchantOcrModel; | ||||
| import com.iformall.domain.po.WxOcrModel; | import com.iformall.domain.po.WxOcrModel; | ||||
| import com.iformall.domain.po.base.TenantEntity; | import com.iformall.domain.po.base.TenantEntity; | ||||
| import com.iformall.ocr.FormallTess4j; | import com.iformall.ocr.FormallTess4j; | ||||
| import com.iformall.service.WxMallService; | |||||
| import com.iformall.service.WxOcrService; | import com.iformall.service.WxOcrService; | ||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| @@ -29,6 +32,10 @@ public class WxOcrController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private WxOcrService ocrService; | private WxOcrService ocrService; | ||||
| @Autowired | |||||
| private WxMallService mallService; | |||||
| @Autowired | @Autowired | ||||
| private String ocrData; | private String ocrData; | ||||
| @@ -40,13 +47,25 @@ public class WxOcrController extends BaseController { | |||||
| }) | }) | ||||
| public ResultData analyImage(Long merchantId,String imageUrl) { | public ResultData analyImage(Long merchantId,String imageUrl) { | ||||
| TenantEntity tenantEntity = getTenantInfo(); | TenantEntity tenantEntity = getTenantInfo(); | ||||
| Long modelId = null; | |||||
| WxMerchantOcrModel MerchantModel = ocrService.getMerchantOcrModel(merchantId, tenantEntity.getTenantId(), tenantEntity.getParentTenantId()); | WxMerchantOcrModel MerchantModel = ocrService.getMerchantOcrModel(merchantId, tenantEntity.getTenantId(), tenantEntity.getParentTenantId()); | ||||
| if (null == MerchantModel) { | 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) { | if (null == ocrModel) { | ||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "当前商户配置的OCR模板未查询到"); | |||||
| return new ResultData(ErrorCode.SYS_SERVER_ERROR.getCode(), "OCR模板未查询到:"+modelId); | |||||
| } | } | ||||
| String result; | String result; | ||||
| try { | try { | ||||
| @@ -160,7 +160,7 @@ fm: | |||||
| deploy: 1 | deploy: 1 | ||||
| open: true | open: true | ||||
| upload_dir: /home/test/server/uploads/ | upload_dir: /home/test/server/uploads/ | ||||
| ocr_data: /home/test/server/ocr_data/ | |||||
| ocr_data: /root/ocr_data/ | |||||
| logging: | logging: | ||||
| level: | level: | ||||
| @@ -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; | |||||
| } | |||||
| @@ -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<WxMallOcrModel> { | |||||
| List<WxMallOcrModel> findList(WxMallOcrModel merchantOcrModel); | |||||
| } | |||||
| @@ -3,6 +3,7 @@ package com.iformall.service; | |||||
| import com.github.pagehelper.PageInfo; | import com.github.pagehelper.PageInfo; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.WxActivity; | import com.iformall.domain.po.WxActivity; | ||||
| import com.iformall.domain.po.WxMallOcrModel; | |||||
| import com.iformall.domain.po.WxMerchantOcrModel; | import com.iformall.domain.po.WxMerchantOcrModel; | ||||
| import com.iformall.domain.po.WxOcrModel; | import com.iformall.domain.po.WxOcrModel; | ||||
| import com.iformall.enums.EnumPayWay; | import com.iformall.enums.EnumPayWay; | ||||
| @@ -27,4 +28,12 @@ public interface WxOcrService { | |||||
| ResultData saveOrUpdateMerchantOcrModel(WxMerchantOcrModel record); | ResultData saveOrUpdateMerchantOcrModel(WxMerchantOcrModel record); | ||||
| ResultData deleteMerchantOcrModel(Long id); | ResultData deleteMerchantOcrModel(Long id); | ||||
| WxMallOcrModel getMallOcrModel(Long mallId,String tenantId,String parentTenantId); | |||||
| ResultData saveOrUpdateMallOcrModel(WxMallOcrModel record); | |||||
| ResultData deleteMallOcrModel(Long id); | |||||
| } | } | ||||
| @@ -5,8 +5,10 @@ import com.github.pagehelper.PageInfo; | |||||
| import com.iformall.common.IdWorker; | import com.iformall.common.IdWorker; | ||||
| import com.iformall.common.Result; | import com.iformall.common.Result; | ||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.domain.po.WxMallOcrModel; | |||||
| import com.iformall.domain.po.WxMerchantOcrModel; | import com.iformall.domain.po.WxMerchantOcrModel; | ||||
| import com.iformall.domain.po.WxOcrModel; | import com.iformall.domain.po.WxOcrModel; | ||||
| import com.iformall.mapper.WxMallOcrModelMapper; | |||||
| import com.iformall.mapper.WxMerchantOcrModelMapper; | import com.iformall.mapper.WxMerchantOcrModelMapper; | ||||
| import com.iformall.mapper.WxOcrModelMapper; | import com.iformall.mapper.WxOcrModelMapper; | ||||
| import com.iformall.service.WxOcrService; | import com.iformall.service.WxOcrService; | ||||
| @@ -25,6 +27,8 @@ public class WxOcrServiceImpl implements WxOcrService { | |||||
| WxMerchantOcrModelMapper merchantOcrModelMapper; | WxMerchantOcrModelMapper merchantOcrModelMapper; | ||||
| @Autowired | @Autowired | ||||
| WxOcrModelMapper ocrModelMapper; | WxOcrModelMapper ocrModelMapper; | ||||
| @Autowired | |||||
| WxMallOcrModelMapper mallOcrModelMapper; | |||||
| @Override | @Override | ||||
| public PageInfo<WxOcrModel> listOcrModelAsPage(WxOcrModel record, Integer pageIndex, Integer pageSize) { | public PageInfo<WxOcrModel> listOcrModelAsPage(WxOcrModel record, Integer pageIndex, Integer pageSize) { | ||||
| @@ -83,7 +87,40 @@ public class WxOcrServiceImpl implements WxOcrService { | |||||
| public ResultData deleteMerchantOcrModel(Long id) { | public ResultData deleteMerchantOcrModel(Long id) { | ||||
| merchantOcrModelMapper.deleteById(id); | merchantOcrModelMapper.deleteById(id); | ||||
| return new ResultData(Result.SUCCESS, "操作成功"); | 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<WxMallOcrModel> 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, "操作成功"); | |||||
| } | |||||
| } | } | ||||
| @@ -0,0 +1,57 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | |||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |||||
| <mapper namespace="com.iformall.mapper.WxMallOcrModelMapper"> | |||||
| <resultMap type="com.iformall.domain.po.WxMallOcrModel" id="BaseResultMap"> | |||||
| <result property="id" column="id"/> | |||||
| <result property="tenantId" column="tenant_id" jdbcType="VARCHAR"/> | |||||
| <result property="parentTenantId" column="parent_tenant_id" jdbcType="VARCHAR"/> | |||||
| <result property="mallId" column="mall_id" jdbcType="BIGINT"/> | |||||
| <result property="ocrModelId" column="ocr_model_id" jdbcType="BIGINT"/> | |||||
| <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> | |||||
| <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> | |||||
| </resultMap> | |||||
| <sql id="allColumns"> | |||||
| id,tenant_id,parent_tenant_id,mall_id,ocr_model_id,create_time,update_time | |||||
| </sql> | |||||
| <sql id="dynamicWhereConditions"> | |||||
| where 1 = 1 | |||||
| <if test=" null != id "> | |||||
| and `id` = #{id} | |||||
| </if> | |||||
| <if test=" null != tenantId and '' != tenantId"> | |||||
| and `tenant_id` = #{tenantId} | |||||
| </if> | |||||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||||
| and `parent_tenant_id` = #{parentTenantId} | |||||
| </if> | |||||
| <if test=" null != merchantId "> | |||||
| and `mall_id` = #{mallId} | |||||
| </if> | |||||
| <if test=" null != ocrModelId "> | |||||
| and `ocr_model_id` = #{ocrModelId} | |||||
| </if> | |||||
| <if test=" null != ids "> | |||||
| and id in | |||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||||
| #{idItem} | |||||
| </foreach> | |||||
| </if> | |||||
| <if test=" null != sortColumns">order by ${sortColumns}</if> | |||||
| </sql> | |||||
| <select id="findList" parameterType="com.iformall.domain.po.WxMallOcrModel" resultMap="BaseResultMap"> | |||||
| select | |||||
| <include refid="allColumns"/> | |||||
| from wx_mall_ocr_model | |||||
| <include refid="dynamicWhereConditions"/> | |||||
| </select> | |||||
| </mapper> | |||||
| @@ -165,7 +165,7 @@ fm: | |||||
| deploy: 1 | deploy: 1 | ||||
| open: true | open: true | ||||
| upload_dir: /home/test/server/uploads/ | upload_dir: /home/test/server/uploads/ | ||||
| ocr_data: /home/test/server/ocr_data/ | |||||
| ocr_data: /root/ocr_data/ | |||||
| ueditor: | ueditor: | ||||
| config: config.json | config: config.json | ||||