智慧农业后台管理
Administrator
2022-07-05 8ec2d2febf56274b7cecb291a4657780e311f8fa
地块新增修改,新增图片上传保存
6 files modified
108 ■■■■■ changed files
src/main/java/org/springblade/modules/lang/controller/LandController.java 26 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/lang/mapper/LandMapper.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/lang/mapper/LandMapper.xml 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/lang/service/ILandService.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/lang/service/impl/LandServiceImpl.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java 57 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/lang/controller/LandController.java
@@ -32,6 +32,7 @@
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.farm.entity.Farm;
import org.springblade.modules.farm.vo.FarmVO;
import org.springblade.modules.resource.endpoint.OssEndpoint;
import org.springblade.modules.system.entity.DictBiz;
import org.springblade.modules.system.service.IDictBizService;
import org.springframework.web.bind.annotation.*;
@@ -63,6 +64,7 @@
    private final ILandService landService;
    private final IDictBizService dictService;
    private final OssEndpoint ossEndpoint;
    /**
     * 详情
@@ -145,6 +147,18 @@
        } else {
            v1 = (double) Math.round(area * 100) / 100;
        }
        //图片转换上传
        if (null!=land.getUrl() && !land.getUrl().equals("")){
            try {
                //上传
                String url = ossEndpoint.uploadBase64String(land.getUrl());
                //回填url
                land.setUrl(url);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        land.setLandArea(String.valueOf(v1));
        land.setType(1);
        return R.status(landService.saveLandInfo(land));
@@ -189,6 +203,18 @@
        } else {
            v1 = (double) Math.round(area * 100) / 100;
        }
        //图片转换上传
        if (null!=land.getUrl() && !land.getUrl().equals("")){
            try {
                //上传
                String url = ossEndpoint.uploadBase64String(land.getUrl());
                //回填url
                land.setUrl(url);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        land.setLandArea(String.valueOf(v1));
        land.setType(1);
        return R.status(landService.updateLandById(land));
src/main/java/org/springblade/modules/lang/mapper/LandMapper.java
@@ -42,6 +42,12 @@
     * @return
     */
    List<LandVO> selectLandPage(IPage page, LandVO land);
    /**
     * 地块信息新增
     * @param land
     * @return
     */
    boolean saveLandInfo(@Param("land") Land land);
    /**
     * 详情信息(自定义查询)
src/main/java/org/springblade/modules/lang/mapper/LandMapper.xml
@@ -58,13 +58,13 @@
    <insert id="saveLandInfo">
        insert into sys_land
        (user_id,land_name,land_type,land_area,land_range,type,land_unit,dept_id)
        (user_id,land_name,land_type,land_area,land_range,type,land_unit,dept_id,url)
        values
        (#{land.userId},#{land.landName},#{land.landType},#{land.landArea},
        <if test="land.landRange!=null and land.landRange!=''">
            ST_GeomFromText(${land.landRange}),
        </if>
        #{land.type},#{land.landUnit},#{land.deptId})
        #{land.type},#{land.landUnit},#{land.deptId},#{land.url})
    </insert>
    <!--详情信息(自定义查询)-->
@@ -83,7 +83,7 @@
          and id = #{land.id}
    </select>
    <!--自定义修改电子围栏数据-->
    <!--自定义地块数据-->
    <update id="updateLandById">
        update sys_land set user_id = #{land.userId},
        land_name = #{land.landName},
@@ -94,6 +94,7 @@
        </if>
        type = #{land.type},
        land_unit = #{land.landUnit},
        url = #{land.url},
        where id = #{land.id}
    </update>
src/main/java/org/springblade/modules/lang/service/ILandService.java
@@ -42,7 +42,14 @@
     * @return
     */
    IPage<LandVO> selectLandPage(IPage<LandVO> page, LandVO land);
    /**
     * 地块信息新增
     * @param land
     * @return
     */
    boolean saveLandInfo(Land land);
    /**
     * 详情信息(自定义查询)
     * @return
src/main/java/org/springblade/modules/lang/service/impl/LandServiceImpl.java
@@ -41,6 +41,11 @@
        return page.setRecords(baseMapper.selectLandPage(page, land));
    }
    /**
     * 地块信息新增
     * @param land
     * @return
     */
    @Override
    public boolean saveLandInfo(Land land) {
        return baseMapper.saveLandInfo(land);
src/main/java/org/springblade/modules/resource/endpoint/OssEndpoint.java
@@ -33,9 +33,12 @@
import org.springblade.modules.resource.builder.oss.OssBuilder;
import org.springblade.modules.resource.entity.Attach;
import org.springblade.modules.resource.service.IAttachService;
import org.springblade.modules.system.entity.User;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Decoder;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
@@ -159,6 +162,60 @@
        return R.data(bladeFile);
    }
    /**
     * base64 图片上传
     * @param base64 字符串
     * @return
     * @throws Exception
     */
    public String uploadBase64String(String base64) throws Exception {
        String[] split = base64.split(",");
        //图片上传
        BASE64Decoder decoder = new BASE64Decoder();
        // 解密
        byte[] b = decoder.decodeBuffer(split[1]);
        // 处理数据
//        for (int i = 0; i < b.length; ++i) {
//            if (b[i] < 0) {
//                b[i] += 256;
//            }
//        }
        //填写你文件上传的地址以及相应信息
        String url = "http://61.131.136.25:2081";
        String access = "zhbaadmin";
        String secret = "zhbapassword";
        String bucket = "zhba";
        MinioClient minioClient =
            MinioClient.builder()
                .endpoint(url)
                .credentials(access, secret)
                .build();
        // 检查存储桶是否已经存在
        boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucket).build());
        if (!isExist) {
            // 创建一个名为zip的存储桶,用于zip文件。
            minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucket).build());
            minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucket).build());
        }
        String newName = "upload/picture/" + UUID.randomUUID().toString().replaceAll("-", "") + ".jpg";
        InputStream in = new ByteArrayInputStream(b);
        //创建头部信息
        Map<String, String> headers = new HashMap<>(1 << 2);
        //添加自定义内容类型
        headers.put("Content-Type", "application/octet-stream");
        //上传
        minioClient.putObject(
            PutObjectArgs.builder().bucket(bucket).object(newName).stream(
                in, in.available(), -1)
                .headers(headers)
                .build());
        in.close();
        //url
        String urls = "http://61.131.136.25:2081/zhba/" + newName;
        //返回
        return urls;
    }
    /**
     * 文件上传,自定义上传