| dao/src/main/java/com/sandu/ximon/dao/bo/C3mOrderBo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| dao/src/main/java/com/sandu/ximon/dao/domain/C3mOrder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| dao/src/main/resources/mapper/C3mOrderMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3mOrderController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/param/PayParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/pay/wx/WxFastPayService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3mOrderService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
dao/src/main/java/com/sandu/ximon/dao/bo/C3mOrderBo.java
@@ -99,4 +99,5 @@ private Integer changingStates; } dao/src/main/java/com/sandu/ximon/dao/domain/C3mOrder.java
@@ -128,6 +128,12 @@ */ private Integer changingStates; /** * udid */ private String c3Udid; /** * 用户标识 */ dao/src/main/resources/mapper/C3mOrderMapper.xml
@@ -28,6 +28,7 @@ <result property="poleName" column="pole_name" jdbcType="VARCHAR"/> <result property="changingStates" column="changing_states" jdbcType="INTEGER"/> <result property="userCode" column="user_code" jdbcType="VARCHAR"/> <result property="c3Udid" column="c3_udid" jdbcType="VARCHAR"/> </resultMap> <sql id="Base_Column_List"> ximon-admin/pom.xml
@@ -89,6 +89,11 @@ <groupId>org.assertj</groupId> <artifactId>assertj-core</artifactId> </dependency> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-miniapp</artifactId> <version>4.1.0</version> </dependency> </dependencies> ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3mOrderController.java
@@ -16,6 +16,7 @@ import com.sandu.ximon.dao.domain.C3mOrder; import com.sandu.ximon.dao.enums.OrderType; import lombok.AllArgsConstructor; import me.chanjar.weixin.common.error.WxErrorException; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; @@ -60,9 +61,15 @@ * @return */ @PostMapping("/advancePay") public ResponseVO<Object> advancePayOrder(@RequestBody PayParam param) { if (param.getTotalAmount() < 0) { throw new BusinessException("金额必须大于0"); public ResponseVO<Object> advancePayOrder(@RequestBody PayParam param) throws WxErrorException { if (param.getWxCode().isEmpty()) { throw new BusinessException("微信code不能为空"); } if (param.getPoleId() == null || param.getSubscribeChargingCapacity() == null) { throw new BusinessException("充电桩id或充电容量不能为空"); } if (param.getSubscribeChargingCapacity() < 1) { throw new BusinessException("充电容量不能小于1Kw/h"); } // C3充电桩实体 C3mCharging c3m = c3mService.getC3mByPoleId(param.getPoleId()); @@ -73,8 +80,9 @@ BigDecimal TotalAmount = c3mChargingChargeService.getCostByC3id(c3m.getC3Id(), param.getSubscribeChargingCapacity()); //转换为double类型 double totalAmount = TotalAmount.doubleValue(); //生成订单 C3mOrder c3mOrderEntity = c3mOrderService.advancePayOrder(param.getPoleId(), c3m, "wxpay" , totalAmount, param.getSubscribeChargingCapacity()); , totalAmount, param.getSubscribeChargingCapacity(), param.getWxCode()); if (null == c3mOrderEntity) { throw new BusinessException("该充电桩正被使用!"); } @@ -82,7 +90,8 @@ param.setOutTradeNo(c3mOrderEntity.getOutTradeNo()); param.setTotalAmount(c3mOrderEntity.getTotalAmount()); String s = WxFastPayService.parseWxAmount(param.getTotalAmount().toString()); SortedMap<Object, Object> result = wxPayService.miniAppPay("扫码充电支付(C3充电桩)", param.getOutTradeNo(), Integer.valueOf(s), param.getPoleId()); //生成微信预付订单 SortedMap<Object, Object> result = wxPayService.miniAppPay("扫码充电支付(C3充电桩)", param.getOutTradeNo(), Integer.valueOf(s), param.getPoleId(), param.getWxCode()); return ResponseUtil.success(result); } @@ -121,4 +130,15 @@ return ResponseUtil.successPage(list); } /** * 获取wx的openid */ @PostMapping("/getWxOpenId") public ResponseVO<Object> getWxOpenId(@RequestBody PayParam param) throws WxErrorException { if (param.getWxCode() == null || param.getPoleId() == null || param.getWxCode().isEmpty()) { throw new BusinessException("参数不能为空"); } return ResponseUtil.success(wxPayService.getOpenId(param.getPoleId(), param.getWxCode())); } } ximon-admin/src/main/java/com/sandu/ximon/admin/param/PayParam.java
@@ -21,7 +21,7 @@ /** * 用户标识 */ private String user_code; private String wxCode; /** * 微信支付金额 ximon-admin/src/main/java/com/sandu/ximon/admin/pay/wx/WxFastPayService.java
@@ -1,7 +1,10 @@ package com.sandu.ximon.admin.pay.wx; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl; import cn.dreampie.encription.EncriptionKit; import cn.hutool.core.codec.Base64; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult; @@ -20,6 +23,7 @@ import com.sandu.ximon.dao.domain.WxConfigEntity; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -44,7 +48,6 @@ public static final String WECHAT_ORDER_QUETY = "?mchid="; private final UsrWxPayConfigService wxPayConfigService; /** @@ -201,26 +204,33 @@ * @return */ @Transactional(rollbackFor = Exception.class) public SortedMap<Object, Object> miniAppPay(String body, String orderId, int totalFee, Long poleId) { WxConfigEntity wxConfig = wxPayConfigService.getConfigByPoleId(poleId); wxConfig.setMchId(wxConfig.getMchId().trim()); public SortedMap<Object, Object> miniAppPay(String body, String orderId, int totalFee, Long poleId, String wxCode) throws WxErrorException { // WxConfigEntity wxConfig = wxPayConfigService.getConfigByPoleId(poleId); WxConfigEntity wxConfig = new WxConfigEntity(); wxConfig.setAppid("wx3d7b3ba37fee07de"); wxConfig.setMchId("1536603671"); wxConfig.setPrivateKey("0yec5jkwqy4muv5313yn520rdq5cfmqu"); // wxConfig.setMchId(wxConfig.getMchId().trim()); //设置微信支付参数 WxPayConfig payConfig = new WxPayConfig(); payConfig.setAppId(StringUtils.trimToNull(wxConfig.getAppid())); payConfig.setMchId(StringUtils.trimToNull(wxConfig.getMchId())); payConfig.setMchKey(StringUtils.trimToNull(wxConfig.getPrivateKey())); payConfig.setAppId(StringUtils.trimToNull("wx3d7b3ba37fee07de")); payConfig.setMchId(StringUtils.trimToNull("1536603671")); payConfig.setMchKey(StringUtils.trimToNull("0yec5jkwqy4muv5313yn520rdq5cfmqu")); payConfig.setSubAppId(StringUtils.trimToNull(null)); payConfig.setSubMchId(StringUtils.trimToNull(null)); payConfig.setKeyPath(StringUtils.trimToNull(null)); wxPayService.setConfig(payConfig); WxMaJscode2SessionResult sessionInfo = this.getWxMaService(wxConfig).getUserService().getSessionInfo(wxCode); //设置微信同一订单请求 WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest = new WxPayUnifiedOrderRequest(); wxPayUnifiedOrderRequest.setBody(body); wxPayUnifiedOrderRequest.setOutTradeNo(orderId); wxPayUnifiedOrderRequest.setTotalFee(totalFee); // wxPayUnifiedOrderRequest.setOpenid("otiM54x_hc_5gbhMY5aZxo7UByNo"); wxPayUnifiedOrderRequest.setOpenid(sessionInfo.getOpenid()); wxPayUnifiedOrderRequest.setSignType(WxPayConstants.SignType.MD5); @@ -259,4 +269,30 @@ } } public WxMaService getWxMaService(WxConfigEntity wxConfig) { if (wxConfig == null) { throw new BusinessException("找不到微信配置"); } WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl(); config.setAppid(wxConfig.getAppid()); config.setSecret("05edea692eb1b70670ec9ac6e9c62a84"); WxMaService service = new WxMaServiceImpl(); service.setWxMaConfig(config); return service; } public String getOpenId(Long poleId, String wxCode) throws WxErrorException { // WxConfigEntity wxConfig = wxPayConfigService.getConfigByPoleId(poleId); WxConfigEntity wxConfig = new WxConfigEntity(); wxConfig.setAppid("wx3d7b3ba37fee07de"); wxConfig.setMchId("1536603671"); wxConfig.setPrivateKey("0yec5jkwqy4muv5313yn520rdq5cfmqu"); if (wxConfig == null) { throw new BusinessException("找不到微信配置"); } WxMaJscode2SessionResult sessionInfo = this.getWxMaService(wxConfig).getUserService().getSessionInfo(wxCode); return sessionInfo.getOpenid(); } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/C3mOrderService.java
@@ -26,7 +26,6 @@ import com.sandu.ximon.dao.mapper.C3mOrderMapper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; @@ -134,7 +133,7 @@ * @return */ public C3mOrder advancePayOrder(Long streetlightId, C3mCharging c3m, String orderType, Double totalAmount, Integer subscribeChargingCapacity) { Integer subscribeChargingCapacity, String wxCode) { // 判断该充电桩是否存在正在进行中的订单 String chargingJson = redisUtils.get(C3mRedisConstant.C3_CHARGING_ORDER.getCode() + c3m.getC3Mac()); @@ -168,6 +167,7 @@ c3mOrderEntity.setPoleName(pole.getPoleName()); c3mOrderEntity.setC3Mac(c3m.getC3Mac()); c3mOrderEntity.setOrderStatus(0); c3mOrderEntity.setUserCode(wxCode); // 推送到自动查询模块,进行扫描启动 @@ -221,6 +221,14 @@ } /** * 根据灯杆id获取最近一条订单 */ public C3mOrder getLastOrderByPoleId(Long poleId) { LambdaQueryWrapper<C3mOrder> wrapper = Wrappers.lambdaQuery(C3mOrder.class).eq(C3mOrder::getPoleId, poleId).last("limit 1"); return getOne(wrapper); } /** * 订单列表 * * @param baseConditionVO @@ -232,4 +240,7 @@ List<C3mOrderBo> list = baseMapper.orderList(userId); return list; } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/LightService.java
@@ -73,7 +73,7 @@ Boolean hasKey = redisService.hasKey(LightKey.REPORT_MAC.key(deviceName)); if (!hasKey) { int count = count(Wrappers.lambdaQuery(Light.class).eq(Light::getDeviceCode, deviceName)); log.info("redis查不到路灯数据{}={}", count, deviceName); log.info("redis查不到路灯数据 数量:{}={}", count, deviceName); // 当前路灯表没有录入设备吗 if (count == 0) { Light light = new Light();