liujie
7 天以前 1d07ee4cfa2965587f092e5295ce96f4079268b4
DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/DriverController.java
@@ -8,6 +8,7 @@
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.internal.util.file.IOUtils;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.stylefeng.guns.config.properties.GunsProperties;
import com.stylefeng.guns.core.util.DateUtil;
@@ -25,7 +26,7 @@
import com.stylefeng.guns.modular.system.util.ALiSendSms;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import com.stylefeng.guns.modular.system.util.WeChatUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.NCOSSUtil;
//import com.stylefeng.guns.modular.system.util.qianyuntong.NCOSSUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.QianYunTongConfig;
import com.stylefeng.guns.modular.system.warpper.*;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
@@ -39,6 +40,7 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.*;
import org.springframework.util.Base64Utils;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
@@ -56,6 +58,7 @@
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static org.bouncycastle.cms.RecipientId.password;
@@ -531,94 +534,70 @@
    }
    @ApiOperation(value = "个人的小程序码(分享码)生成", tags = {"司机端-首页"}, notes = "")
    @GetMapping("/api/driver/person-code")
    @ApiOperation(value = "个人的小程序码(分享码)/链接", tags = {"司机端-首页"}, notes = "")
    @GetMapping("/api/driver/personCode")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
    })
    public ResultUtil<HashMap<String, String>> createQRcode(HttpServletRequest request) {
        InputStream inputStream = null;
        OutputStream outputStream = null;
    public ResultUtil<HashMap<String, Object>> personCode(HttpServletRequest request) {
        try {
            Integer uid = driverService.getUserIdFormRedis(request);
            if (null == uid) {
                return ResultUtil.tokenErr();
            }
            Driver driver = driverService.selectById(uid);
            String accessToken=null;
            Object img = redisTemplate.opsForValue().get("DRIVER_WX_IMG" + uid);
            // 获取调用凭证accessToken
            String accessToken = getAccessToken();
            RestTemplate rest = new RestTemplate();
            if(ToolUtil.isEmpty(driver.getShareLink())|| ToolUtil.isEmpty(img)){
                accessToken = getAccessToken();
            }
            int index=0;
            String imgUrl = "";
            String url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=" + accessToken;
            Map<String, Object> param = new HashMap<>();
            param.put("path", "pages/home/home?driverId=" + uid);
            param.put("width", 430); //二维码尺寸
            MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
            HttpEntity requestEntity = new HttpEntity(param, headers);
            ResponseEntity<byte[]> entity = rest.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]);
            byte[] result = entity.getBody();
            inputStream = new ByteArrayInputStream(result);
            if(ToolUtil.isEmpty(img)) {
                RestTemplate rest = new RestTemplate();
                String url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=" + accessToken;
                Map<String, Object> param = new HashMap<>();
                param.put("path", "pages/home/home?driverId=" + uid);
                param.put("width", 430); //二维码尺寸
                HttpRequest post = HttpUtil.createPost(url);
                post.body(JSON.toJSONString(param));
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            // 最后上传生成的文件名
            String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg";
            // oss中的文件夹名
            String objectName = sdf.format(new Date()) + "/" + finalFileName;
            String key = "imgs/management/" + objectName;
            String object = NCOSSUtil.putObject( qianYunTongConfig.getBucketName(), key, inputStream);
                byte[] result = post.execute().bodyBytes();
                // base64
                img = Base64.getEncoder().encodeToString(result);
                redisTemplate.opsForValue().set("DRIVER_WX_IMG" + uid, img,30, TimeUnit.DAYS);
            }
            System.out.println(object);
            String urlLink = driver.getShareLink();
            if(ToolUtil.isEmpty(urlLink)) {
                index=1;
                String url1 = "https://api.weixin.qq.com/wxa/generate_urllink?access_token=" + accessToken;
                Map<String, Object> param1 = new HashMap<>();
                param1.put("path", "pages/home/home");
                param1.put("query", "driverId=" + uid);
            String url1 ="https://api.weixin.qq.com/wxa/generate_urllink?access_token="+accessToken;
            Map<String, Object> param1 = new HashMap<>();
            param1.put("path", "pages/home/home");
            param1.put("query","driverId="+uid);
                HttpRequest post = HttpUtil.createPost(url1);
                // map转json
                String jsonString = JSON.toJSONString(param1);
                post.body(jsonString);
                HttpResponse execute = post.execute();
                String body = execute.body();
                urlLink = JSONObject.parseObject(body).get("url_link").toString();
                driver.setShareLink(urlLink);
            }
            HttpRequest post = HttpUtil.createPost(url1);
            // map转json
            String jsonString = JSON.toJSONString(param1);
            post.body(jsonString);
            HttpResponse execute = post.execute();
            String body = execute.body();
            String urlLink = JSONObject.parseObject(body).get("url_link").toString();
            if(index==1){
                driverService.updateById(driver);
            }
            HashMap<String, String> stringStringHashMap = new HashMap<>();
            HashMap<String, Object> stringStringHashMap = new HashMap<>();
            stringStringHashMap.put("url_link",urlLink);
            stringStringHashMap.put("img",object);
//            inputStream = new ByteArrayInputStream(result);
//
//            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
//            // 最后上传生成的文件名
//            String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg";
//            // oss中的文件夹名
//            String objectName = sdf.format(new Date()) + "/" + finalFileName;
//            // 上传oss
////            ossUtil.uploadFile2OSS(inputStream, objectName);
////            //获取文件的URl地址
////            imgUrl = ossUtil.getImgUrl(objectName);
//            log.info("imgUrl: "+imgUrl);
            stringStringHashMap.put("img",img);
            return ResultUtil.success(stringStringHashMap);
        } catch (Exception e) {
            log.error("调用小程序生成微信永久小程序码URL接口异常", e);
        }finally {
            if(inputStream != null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(outputStream != null){
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return ResultUtil.error("获取二维码失败");
    }
@@ -1601,9 +1580,10 @@
    @ApiOperation(value = "通过区code获取服务商", tags = {"司机端-注册"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "区code", name = "areaCode", required = true, dataType = "String"),
            @ApiImplicitParam(value = "name", name = "name", required = false, dataType = "String"),
    })
    public ResultUtil<List<CompanyVo>> getCompany(String areaCode){
    public ResultUtil<List<CompanyVo>> getCompany(String areaCode,String name){
        try {
            ArrayList<CompanyVo> companyVos = new ArrayList<>();
@@ -1611,7 +1591,12 @@
            if(companyCities.isEmpty()){
                return ResultUtil.success(companyVos);
            }
            List<Company> companies = companyService.selectList(new EntityWrapper<Company>().ne("type", 1).ne("flag", 3).in("id", companyCities.stream().map(CompanyCity::getCompanyId).collect(Collectors.toList())));
            Wrapper<Company> in = new EntityWrapper<Company>().ne("type", 1).ne("flag", 3).in("id", companyCities.stream().map(CompanyCity::getCompanyId).collect(Collectors.toList()));
            if(ToolUtil.isNotEmpty( name)){
                in.like("name", name);
            }
            List<Company> companies = companyService.selectList(in);
            for (Company company : companies) {
                CompanyVo companyVo = new CompanyVo(company.getId(), company.getName());
                companyVos.add(companyVo);