| @@ -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; | |||
| @@ -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 { | |||
| @@ -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: | |||
| @@ -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.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); | |||
| } | |||
| @@ -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<WxOcrModel> 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<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 | |||
| open: true | |||
| upload_dir: /home/test/server/uploads/ | |||
| ocr_data: /home/test/server/ocr_data/ | |||
| ocr_data: /root/ocr_data/ | |||
| ueditor: | |||
| config: config.json | |||