From cc175f25cbd953fc2c3623495c1f4b8e0efec4ee Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 25 二月 2025 17:12:16 +0800 Subject: [PATCH] 2.0新增 --- DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java | 93 +++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 91 insertions(+), 2 deletions(-) diff --git a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java index b5d83a3..9fed505 100644 --- a/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java +++ b/DriverOKTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/DriverServiceImpl.java @@ -2,6 +2,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.alipay.api.internal.util.codec.Base64; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.core.common.constant.JwtConstants; @@ -27,11 +28,20 @@ import org.apache.shiro.util.ByteSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.io.*; import java.math.BigDecimal; +import java.security.SecureRandom; import java.text.SimpleDateFormat; import java.util.*; @@ -125,6 +135,8 @@ @Autowired private IOrderLogisticsService orderLogisticsService; + @Autowired + private ICompanyService companyService; @Value("${pushMinistryOfTransport}") private boolean pushMinistryOfTransport; @@ -605,8 +617,9 @@ return ResultUtil.error("该车辆正在服务中,请更换其他车辆"); } } - List<TUseMoney> tUseMoney = useMoneyMapper.selectList(null); - if (tUseMoney.get(0).getMoney()>driver.getBalance()){ +// List<TUseMoney> tUseMoney = useMoneyMapper.selectList(null); + Company company = companyService.selectById(driver.getCompanyId()); + if (company.getDriverRestriction()>driver.getBalance()){ pushUtil.expireWork(uid,2); return new ResultUtil(-1,"您的余额不足,请及时充值!"); } @@ -1546,7 +1559,83 @@ redisUtil.remove("DEVICE_" + id);//清除车载端登录的标识 return ResultUtil.success(); } + @Autowired + private WeChatUtil weChatUtil; + @Autowired + private RestTemplate restTemplate; + @Override + public Driver generateCode(Driver userInfo) { + generateQrCode(userInfo); + return userInfo; + } + public MultipartFile convertInputStreamToMultipartFile(InputStream inputStream, String fileName, String contentType) throws IOException { + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = inputStream.read(buffer)) != -1) { + byteArrayOutputStream.write(buffer, 0, bytesRead); + } + byte[] data = byteArrayOutputStream.toByteArray(); + return new CustomMultipartFile(data, fileName, contentType); + } + private void generateQrCode(Driver userInfo) { + if (userInfo.getCode()!=null){ + return; + } + String accessToken = weChatUtil.getAccessToken(); + InputStream inputStream = null; + OutputStream outputStream = null; + try { + String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken; + Map<String, Object> param = new HashMap<>(); +// param.put("page", "pageA/houseDetail"); + param.put("check_path", false); + // 用户id 用于分享 + param.put("scene", "uid="+userInfo.getId()+"userType=1"); + param.put("env_version", "trial"); + param.put("width", 200); //二维码尺寸 + param.put("is_hyaline", true); // 是否需要透明底色, is_hyaline 为true时,生成透明底色的小程序码 参数仅对小程序码生效 + param.put("auto_color", true); // 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 参数仅对小程序码生效 + Map<String, Object> line_color = new HashMap<>(); + line_color.put("r", 0); + line_color.put("g", 0); + line_color.put("b", 0); + param.put("line_color", line_color); + System.err.println("调用生成微信URL接口传参:" + param); + MultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); + HttpEntity requestEntity = new HttpEntity(param, headers); + ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]); + System.err.println("调用小程序生成微信永久小程序码URL接口返回结果:" + entity.getBody()); + byte[] result = entity.getBody(); + System.err.println(Base64.encodeBase64String(result)); + inputStream = new ByteArrayInputStream(result); + String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpeg"; + MultipartFile multipartFile = convertInputStreamToMultipartFile(inputStream, finalFileName, "image/jpeg"); + String pictureName = OssUploadUtil.ossUploadCode(multipartFile); + System.err.println(pictureName); + userInfo.setCode(pictureName); + this.updateById(userInfo); + + } catch (Exception e) { + System.err.println("调用小程序生成微信永久小程序码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(); + } + } + } + } /** * 获取编号 -- Gitblit v1.7.1