diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index 8b72f7822..b9ae3c7dc 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -13,6 +13,7 @@ import com.iformall.domain.vo.WxMerchantVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.*; +import com.iformall.utils.car.DaHuaUtil; import com.iformall.utils.car.ETCPUtil; import com.iformall.utils.car.TJDUtil; import io.swagger.annotations.Api; @@ -36,7 +37,7 @@ import java.util.Map; public class WxCarController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); - ETCPUtil etcp = new ETCPUtil(); + ETCPUtil etcp = new ETCPUtil(); TJDUtil tjd = new TJDUtil(); @@ -61,10 +62,10 @@ public class WxCarController extends BaseController { @Autowired WxCUserTagsService wxCUserTagsService; - @Autowired + @Autowired WxCarCmdLogService wxCarCmdLogService; - @Autowired + @Autowired WxCreditHistoryService wxCreditHistoryService; private WxPark getCurrentPark(String tenantId) { @@ -76,7 +77,7 @@ public class WxCarController extends BaseController { return wxPark; } - @ApiOperation(value = "获取车场支持的厂家",notes="返回\n{\"vendor\":integer}") + @ApiOperation(value = "获取车场支持的厂家", notes = "返回\n{\"vendor\":integer}") @GetMapping("/getVendor") public ResultData getVendor() { // 1, get mall's park @@ -88,23 +89,28 @@ public class WxCarController extends BaseController { /** * 初始化/etcp共同登录 + * * @param paramMap * @return */ - @ApiOperation(value = "初始化/etcp共同登录",notes="{\"phone\":\"string\"}") + @ApiOperation(value = "初始化/etcp共同登录", notes = "{\"phone\":\"string\"}") @PostMapping("/init") - public ResultData init(@RequestBody Map paramMap) { - WxCUser user = getUser(); + public ResultData init(@RequestBody Map paramMap) { + WxCUser user = getUser(); // 1, get mall's park WxPark park = getCurrentPark(getTenantId()); // 2. get vendor params - if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { + if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) { return initForEtcp(paramMap, user, park); - } else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()){ + } else if (park.getVendorType().equals(EnumCarVendor.CAR_TJD.getCode())) { // TJD不需要共同登录 Map resultMap = new HashMap(); resultMap.put("vendor", EnumCarVendor.CAR_TJD.getCode()); return new ResultData(resultMap); + } else if (park.getVendorType().equals(EnumCarVendor.CAR_DAHUA.getCode())) { + Map resultMap = new HashMap(); + resultMap.put("vendor", EnumCarVendor.CAR_DAHUA.getCode()); + return new ResultData(resultMap); } return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "登录失败"); @@ -152,13 +158,14 @@ public class WxCarController extends BaseController { // c端必须保存此token return new ResultData(dataObj); } else { - logger.error("共同登录失败: "+phone); + logger.error("共同登录失败: " + phone); return new ResultData(ErrorCode.ETCP_LOGIN_FAIL.getCode(), "共同登录失败"); } } /** * ETCP同步 + * * @param cUserId * @param tenantId * @param iVendorType @@ -189,7 +196,7 @@ public class WxCarController extends BaseController { queryUserCar.setCUserId(cUserId); List uclist = wxCUserCarService.getList(queryUserCar); // 删除ETCP不存在 - for(WxCUserCar userCar: uclist) { + for (WxCUserCar userCar : uclist) { boolean bExist = isExistInArray(arr, userCar.getCarNumber()); if (!bExist) { wxCUserCarService.deleteById(userCar.getId()); @@ -197,10 +204,10 @@ public class WxCarController extends BaseController { } } // 添加ETCP的 - for(int i=0;i list, String carNumber) { boolean bExist = false; - for(WxCUserCar userCar: list) { - if(carNumber.equals(userCar.getCarNumber())) { + for (WxCUserCar userCar : list) { + if (carNumber.equals(userCar.getCarNumber())) { bExist = true; break; } @@ -242,18 +249,19 @@ public class WxCarController extends BaseController { /** * 绑车牌 + * * @param paramMap * @return */ @ApiOperation(value = "绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}, TJD:={\"carNumber\":\"string\"}") @PostMapping("/bindCar") - public ResultData bindCar(@RequestBody Map paramMap) { + public ResultData bindCar(@RequestBody Map paramMap) { // 1, get mall's park WxPark park = getCurrentPark(getTenantId()); // 2. get vendor params if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { return etcpBindCar(paramMap, park); - } else { + } else { // 内部操作 return bindCar(paramMap, park); } @@ -325,10 +333,10 @@ public class WxCarController extends BaseController { wxCUserCarService.saveOrUpdate(userCar); // 成长值 - wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar); + wxScoreRulesService.addScore(EnumScoreType.BIND_CAR, userCar); //增加积分 addCredit(); - wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId()); + wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR, getUserId()); } private ResultData tjdBindCar(@RequestBody Map paramMap, WxPark park) { @@ -385,7 +393,7 @@ public class WxCarController extends BaseController { userCar.setUpdateDate(curr); try { wxCUserCarService.save(userCar); - wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar); + wxScoreRulesService.addScore(EnumScoreType.BIND_CAR, userCar); //增加积分 addCredit(); } catch (Exception e) { @@ -393,12 +401,12 @@ public class WxCarController extends BaseController { return new ResultData(ErrorCode.DB_FAIL.getCode(), "TJD保存车牌失败, e:" + e.getMessage()); } - wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId()); + wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR, getUserId()); return null; } //-----增加积分start----- - private void addCredit(){ + private void addCredit() { WxCreditHistory wxCreditHistory = new WxCreditHistory(); wxCreditHistory.setCUserId(getUserId()); wxCreditHistory.setTenantId(getTenantId()); @@ -411,9 +419,10 @@ public class WxCarController extends BaseController { /** * 解绑车牌 + * * @param paramMap * @return - */ + */ @ApiOperation(value = "解绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n返回:\n" + "{\n" + " \"code\": 0,\n" + @@ -421,7 +430,7 @@ public class WxCarController extends BaseController { "}" + "TJD:={\"carNumber\":\"string\"}") @PostMapping("/unbindCar") - public ResultData unbindCar(@RequestBody Map paramMap) { + public ResultData unbindCar(@RequestBody Map paramMap) { // 1, get mall's park WxPark park = getCurrentPark(getTenantId()); if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) { @@ -511,7 +520,7 @@ public class WxCarController extends BaseController { if (userCar != null) { String params = userCar.getVendorParams(); JSONObject objParams = JSON.parseObject(params); - String carId = objParams.getString("carId"); + String carId = objParams.getString("carId"); params = park.getVendorParams(); String url = objParams.getString("url"); @@ -538,6 +547,7 @@ public class WxCarController extends BaseController { /** * 停车费 + * * @param paramMap * @return */ @@ -577,18 +587,32 @@ public class WxCarController extends BaseController { " \"pmParkId\": \"d49aeaedcf144f1faf569846d6b16670\"\n" + " }") @PostMapping("/getCarStopFee") - public ResultData getCarStopFee(@RequestBody Map paramMap) { + public ResultData getCarStopFee(@RequestBody Map paramMap) { // 1, get mall's park WxPark park = getCurrentPark(getTenantId()); - if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { + if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) { return etcpCarStopFee(paramMap, park); - } - else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { + } else if (park.getVendorType().equals(EnumCarVendor.CAR_TJD.getCode())) { return tjdCarStopFee(paramMap, park); + } else if (park.getVendorType().equals(EnumCarVendor.CAR_DAHUA.getCode())) { + return dahuaCarStopFee(paramMap, park); } return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费获取失败"); } + private ResultData dahuaCarStopFee(Map paramMap, WxPark park) { + String carNumber = paramMap.get("carNumber"); + String result = DaHuaUtil.plateCharge(carNumber, park.getParkId()); + logger.info("大华查询车辆费用接口返回值:{}", result); + JSONObject jsonObject = JSONObject.parseObject(result); + String code = jsonObject.getString("code"); + if (!code.equals(DaHuaUtil.SUCCESS_CODE)) { + return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费获取失败"); + } + Object data = jsonObject.get("data"); + return new ResultData(data); + } + private ResultData etcpCarStopFee(@RequestBody Map paramMap, WxPark park) { String etcpToken = paramMap.get("etcpToken"); String carNumber = paramMap.get("carNumber"); @@ -673,11 +697,11 @@ public class WxCarController extends BaseController { /** * 优免券领取 * 优免券不可退 - */ - @ApiOperation(value = "停车券使用", notes="ETCP:={\"etcpToken\":\"string(ETCP专用)\",\"carNumber\":\"string\",\"couponOrderId\"=\"String\"},输出\n{}\n" + + */ + @ApiOperation(value = "停车券使用", notes = "ETCP:={\"etcpToken\":\"string(ETCP专用)\",\"carNumber\":\"string\",\"couponOrderId\"=\"String\"},输出\n{}\n" + "TJD:{\"carNumber\":\"string\",\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}") @PostMapping("/getCoupon") - public ResultData getCoupon(@RequestBody Map paramMap) { + public ResultData getCoupon(@RequestBody Map paramMap) { /// 1, get mall's park WxPark park = getCurrentPark(getTenantId()); String carNumber = paramMap.get("carNumber"); @@ -721,7 +745,7 @@ public class WxCarController extends BaseController { String businessId = ""; // 获取merchantId WxMerchantVo merchantVo = null; - if(userCar.getMerchantVoList().size() > 0) { + if (userCar.getMerchantVoList().size() > 0) { merchantVo = userCar.getMerchantVoList().get(0); } @@ -759,7 +783,7 @@ public class WxCarController extends BaseController { } else { return new ResultData(ErrorCode.ETCP_QUAN_SEND_FAIL.getCode(), retObj.getString("message")); } - } else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()){ + } else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { String tradeId = paramMap.get("tradeId"); String accountId = paramMap.get("accountId"); if (StringUtils.isBlank(tradeId)) { @@ -799,7 +823,7 @@ public class WxCarController extends BaseController { }) public ResultData list(@ModelAttribute WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize) { - if(pageNum == null || pageSize == null) { + if (pageNum == null || pageSize == null) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } if (wxCouponOrder == null) wxCouponOrder = new WxCouponOrderCarCVo(); @@ -828,7 +852,7 @@ public class WxCarController extends BaseController { private ResultData etcpParkStatus(WxPark park) { String params = park.getVendorParams(); - if(params == null) { + if (params == null) { return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "车场不支持"); } JSONObject objParams = JSON.parseObject(params); diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 619eef548..577b76e2a 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -156,6 +156,7 @@ public enum ErrorCode{ TJD_STOP_FEE_FAIL(2062, "TJD停车费失败"), TJD_DEDUCE_FEE_FAIL(2063, "TJD停车费抵扣失败"), + /** * 游戏 */ diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java b/mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java index 01c80f7d5..55ad1c299 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java @@ -8,7 +8,8 @@ public enum EnumCarVendor { // 1-ETCP, 2-TJD CAR_NOTFOUND(0, "无"), CAR_ETCP(1, "ETCP"), - CAR_TJD(2, "TJD") + CAR_TJD(2, "TJD"), + CAR_DAHUA(3, "DAHUA"), ; public static EnumCarVendor getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/utils/car/DaHuaUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/DaHuaUtil.java new file mode 100644 index 000000000..97c5b8936 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/utils/car/DaHuaUtil.java @@ -0,0 +1,55 @@ +package com.iformall.utils.car; + +import com.alibaba.fastjson.JSONObject; +import com.iformall.utils.AesUtils; +import com.iformall.utils.HttpUtil; +import lombok.experimental.UtilityClass; + +import java.util.HashMap; +import java.util.Map; + +/** + * 大华 停车管理 + */ +@UtilityClass +public class DaHuaUtil { + + public static final String KEY = "8G5M4Ff9hel6fUA7"; + + public static final String IV = "g8v90drvOmIx1PuR"; + + public static final String URL = "http://47.106.104.196:8025/external/common"; + + public static final String SUCCESS_CODE = "0000"; + + public static String parkInfo(String appId) { + Map requestParams = new HashMap<>(); + requestParams.put("method", "parkInfo"); + return request(requestParams, appId); + } + + public static String plateCharge(String carNum, String appId) { + Map requestParams = new HashMap<>(); + Map data = new HashMap<>(); + data.put("carNum", carNum); + requestParams.put("data", data); + requestParams.put("method", "plateCharge"); + return request(requestParams, appId); + } + + public static String request(Map requestParams, String appId) { + String cipher = AesUtils.encryptCtrMode(JSONObject.toJSONString(requestParams), KEY, IV); + Map params = new HashMap<>(); + params.put("appId", appId); + params.put("cipher", cipher); + params.put("timestamp", System.currentTimeMillis()); + try { + return HttpUtil.doPost(URL, JSONObject.toJSONString(params)); + } catch (Exception e) { + return null; + } + } + + +} +