diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCarController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCarController.java index 30d61e2e5..09b4b23f5 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCarController.java @@ -245,38 +245,42 @@ public class WxCarController extends BaseController { } - @ApiOperation("优免券模板已分配总数") + @ApiOperation("优免券模板库存总数") @GetMapping("/templateAmtCount") @ApiImplicitParams({ @ApiImplicitParam(name = "templateId", value = "模板ID", dataType = "Long", paramType = "query", required = true)}) @SystemControllerLog(description = "车-优免券模板已分配总数") public ResultData getTemplateAmountSum(Long templateId) { logger.debug("[" + getIpAddr() + "] WxCarController::getTemplateAmountSum"); - Map map = new HashMap(); + // 库存总数 = 库存总数(status=0) + 作废券已领取(待使用+已使用) Integer amountCount = 0; try { - amountCount = wxCouponCarService.getAmtCountByTemplateId(templateId); + amountCount = wxCouponCarService.getAmtCountByTemplateId(templateId) + + wxCouponCarService.getClaimCountByTemplateId(templateId); } catch (Exception e) { logger.error(e.getMessage()); } + Map map = new HashMap(); map.put("amountCount", amountCount); return new ResultData(map); } - @ApiOperation("优免券模板库存总数") + @ApiOperation("优免券模板已分配总数") @GetMapping("/templateAvaiCount") @ApiImplicitParams({ @ApiImplicitParam(name = "templateId", value = "模板ID", dataType = "Long", paramType = "query", required = true)}) @SystemControllerLog(description = "车-优免券模板库存总数") public ResultData getTemplateAvailSum(Long templateId) { logger.debug("[" + getIpAddr() + "] WxCarController::getTemplateAvailSum"); - Map map = new HashMap(); + // 已分配总数 = 可用库存总数(status=0)+ 作废券已领取(待使用+已使用) Integer availCount = 0; try { - availCount = wxCouponCarService.getAvaibleCountByTemplateId(templateId); + availCount = wxCouponCarService.getAvaibleCountByTemplateId(templateId) + + wxCouponCarService.getClaimCountByTemplateId(templateId); } catch (Exception e) { logger.error(e.getMessage()); } + Map map = new HashMap(); map.put("availCount", availCount); return new ResultData(map); } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index 35b631854..e9ff8121b 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -95,50 +95,7 @@ public class WxCarController extends BaseController { WxPark park = getCurrentPark(getTenantId()); // 2. get vendor params if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { - String phone = paramMap.get("phone"); - if (StringUtils.isBlank(phone) && StringUtils.isBlank(user.getPhone()) && StringUtils.isBlank(user.getVerifyCodePhone())) { - logger.error("手机号为空,请授权手机号"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "手机号为空,请授权手机号"); - } - if (!StringUtils.isBlank(user.getPhone()) && !user.getPhone().contains("*")) { - phone = user.getPhone(); - } else { - phone = user.getVerifyCodePhone(); - } - String params = park.getVendorParams(); - JSONObject objParams = JSON.parseObject(params); - String url = objParams.getString("url"); - String appId = objParams.getString("appId"); - String merchantNo = objParams.getString("merchantNo"); - String merchantKey = objParams.getString("merchantKey"); - String version = objParams.getString("version"); - - String ret = ""; - try { - ret = etcp.userSignin(url, appId, merchantNo, merchantKey, version, phone); - } catch (MallinkException e) { - logger.error("ETCP failed: " + e.getMessage()); - return new ResultData(e.getErrorCode(), e.getMessage()); - } - JSONObject retObj = JSON.parseObject(ret); - if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { - // 获取绑定的车牌 - JSONObject dataObj = retObj.getJSONObject("data"); - dataObj.put("vendor", EnumCarVendor.CAR_ETCP.getCode()); - String etcpToken = dataObj.getString("token"); - try { - JSONObject dataObj1 = syncCarNumbers(user.getId(), user.getTenantId(), park.getVendorType(), - url, merchantNo, merchantKey, version, - etcpToken); - } catch (MallinkException e) { - logger.error("ETCP cmd error: " + e.getMessage()); - } - // c端必须保存此token - return new ResultData(dataObj); - } else { - logger.error("共同登录失败: "+phone); - return new ResultData(ErrorCode.ETCP_LOGIN_FAIL.getCode(), "共同登录失败"); - } + return initForEtcp(paramMap, user, park); } else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()){ // TJD不需要共同登录 Map resultMap = new HashMap(); @@ -149,8 +106,55 @@ public class WxCarController extends BaseController { return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "登录失败"); } + private ResultData initForEtcp(Map paramMap, WxCUser user, WxPark park) { + String phone = paramMap.get("phone"); + if (StringUtils.isBlank(phone) && StringUtils.isBlank(user.getPhone()) && StringUtils.isBlank(user.getVerifyCodePhone())) { + logger.error("手机号为空,请授权手机号"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "手机号为空,请授权手机号"); + } + if (!StringUtils.isBlank(user.getPhone()) && !user.getPhone().contains("*")) { + phone = user.getPhone(); + } else { + phone = user.getVerifyCodePhone(); + } + String params = park.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String url = objParams.getString("url"); + String appId = objParams.getString("appId"); + String merchantNo = objParams.getString("merchantNo"); + String merchantKey = objParams.getString("merchantKey"); + String version = objParams.getString("version"); + + String ret = ""; + try { + ret = etcp.userSignin(url, appId, merchantNo, merchantKey, version, phone); + } catch (MallinkException e) { + logger.error("ETCP failed: " + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { + // 获取绑定的车牌 + JSONObject dataObj = retObj.getJSONObject("data"); + dataObj.put("vendor", EnumCarVendor.CAR_ETCP.getCode()); + String etcpToken = dataObj.getString("token"); + try { + JSONObject dataObj1 = etcpSyncCarNumbers(user.getId(), user.getTenantId(), park.getVendorType(), + url, merchantNo, merchantKey, version, + etcpToken); + } catch (MallinkException e) { + logger.error("ETCP cmd error: " + e.getMessage()); + } + // c端必须保存此token + return new ResultData(dataObj); + } else { + logger.error("共同登录失败: "+phone); + return new ResultData(ErrorCode.ETCP_LOGIN_FAIL.getCode(), "共同登录失败"); + } + } + /** - * 同步 + * ETCP同步 * @param cUserId * @param tenantId * @param iVendorType @@ -161,9 +165,9 @@ public class WxCarController extends BaseController { * @param etcpToken * @return */ - private JSONObject syncCarNumbers(Long cUserId, String tenantId, int iVendorType, - String url, String merchantNo, String merchantKey, String version, - String etcpToken) { + private JSONObject etcpSyncCarNumbers(Long cUserId, String tenantId, int iVendorType, + String url, String merchantNo, String merchantKey, String version, + String etcpToken) { String ret; JSONObject retObj; /*{"code": 0,"msg": "ok","data": {"number": 3,"carList": ["晋 BMZ105","云 C12345"]}} */ @@ -253,115 +257,134 @@ public class WxCarController extends BaseController { WxPark park = getCurrentPark(getTenantId()); // 2. get vendor params if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { - String etcpToken = paramMap.get("etcpToken"); - if (StringUtils.isBlank(etcpToken)) { - logger.error("etcpToken为空"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); - } - String carNumber = paramMap.get("carNumber"); - if (StringUtils.isBlank(carNumber)) { - logger.error("carNumber为空"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); - } - String params = park.getVendorParams(); - JSONObject objParams = JSON.parseObject(params); - String url = objParams.getString("url"); - String merchantNo = objParams.getString("merchantNo"); - String merchantKey = objParams.getString("merchantKey"); - String version = objParams.getString("version"); + return etcpBindCar(paramMap, park); + } + else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { + return tjdBindCar(paramMap, park); + } + return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "绑车牌失败"); + } - String ret = ""; - try { - ret = etcp.bindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber, null); - } catch (MallinkException e) { - logger.error("ETCP failed: " + e.getMessage()); - return new ResultData(e.getErrorCode(), e.getMessage()); - } - JSONObject retObj = JSON.parseObject(ret); - if (retObj.getIntValue("code") == 0) { - // 插入车牌 - Date curr = new Date(); - WxCUserCar userCar = new WxCUserCar(); - userCar.setCUserId(getUserId()); - userCar.setTenantId(getTenantId()); - userCar.setCarNumber(carNumber); - userCar.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - userCar.setCreateDate(curr); - userCar.setUpdateDate(curr); - wxCUserCarService.saveOrUpdate(userCar); + private ResultData etcpBindCar(Map paramMap, WxPark park) { + String etcpToken = paramMap.get("etcpToken"); + if (StringUtils.isBlank(etcpToken)) { + logger.error("etcpToken为空"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); + } + String carNumber = paramMap.get("carNumber"); + if (StringUtils.isBlank(carNumber)) { + logger.error("carNumber为空"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); + } + String params = park.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String url = objParams.getString("url"); + String merchantNo = objParams.getString("merchantNo"); + String merchantKey = objParams.getString("merchantKey"); + String version = objParams.getString("version"); + + String ret = ""; + try { + ret = etcp.bindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber, null); + } catch (MallinkException e) { + logger.error("ETCP failed: " + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getIntValue("code") == 0) { + addCarInfoToDB(carNumber); + JSONObject dataObj = retObj.getJSONObject("data"); + return new ResultData(dataObj); + } else { + String message = retObj.getString("message"); + logger.error("绑车牌失败: " + carNumber); + return new ResultData(ErrorCode.ETCP_BIND_FAIL.getCode(), message, retObj); + } + } - wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar); - //增加积分 - addCredit(); - JSONObject dataObj = retObj.getJSONObject("data"); - wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId()); - return new ResultData(dataObj); - } else { - String message = retObj.getString("message"); - logger.error("绑车牌失败: " + carNumber); - return new ResultData(ErrorCode.ETCP_BIND_FAIL.getCode(), message, retObj); - } + private void addCarInfoToDB(String carNumber) { + // 插入车牌 + Date curr = new Date(); + WxCUserCar userCar = new WxCUserCar(); + userCar.setCUserId(getUserId()); + userCar.setTenantId(getTenantId()); + userCar.setCarNumber(carNumber); + userCar.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + userCar.setCreateDate(curr); + userCar.setUpdateDate(curr); + wxCUserCarService.saveOrUpdate(userCar); + + // 成长值 + wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar); + //增加积分 + addCredit(); + wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId()); + } + + private ResultData tjdBindCar(@RequestBody Map paramMap, WxPark park) { + String carNumber = paramMap.get("carNumber"); + if (StringUtils.isBlank(carNumber)) { + logger.error("carNumber为空"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); } - else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { - String carNumber = paramMap.get("carNumber"); - if (StringUtils.isBlank(carNumber)) { - logger.error("carNumber为空"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); - } - String carNumColor = paramMap.get("carNumColor"); - //if (StringUtils.isBlank(carNumColor)) { - // logger.error("carNumColor为空"); - // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumColor为空"); - //} - Long newCarId = 0L; - String outCarId = paramMap.get("outCarId"); - if (StringUtils.isBlank(outCarId)) { - logger.warn("outCarId为空"); - newCarId = wxCUserCarService.getNewCarID(); - outCarId = String.valueOf(newCarId); - } - String params = park.getVendorParams(); - JSONObject objParams = JSON.parseObject(params); - String url = objParams.getString("url"); - String partner = objParams.getString("partner"); - String key = objParams.getString("key"); - String version = objParams.getString("version"); - String ret = tjd.registerCar(url, partner, key, version, - carNumber, carNumColor, null, outCarId); - JSONObject retObj = JSON.parseObject(ret); - retObj.put("vendor", park.getVendorType()); - if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { - String carId = retObj.getString("carId"); - // 插入车牌 - Date curr = new Date(); - WxCUserCar userCar = new WxCUserCar(); - userCar.setId(newCarId); - userCar.setCUserId(getUserId()); - userCar.setTenantId(getTenantId()); - userCar.setCarNumber(carNumber); - userCar.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - JSONObject jo = new JSONObject(); - jo.put("carId", carId); - userCar.setVendorParams(JSON.toJSONString(jo)); - userCar.setCreateDate(curr); - userCar.setUpdateDate(curr); - try { - wxCUserCarService.save(userCar); - wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar); - //增加积分 - addCredit(); - } catch (Exception e) { - logger.error(e.getMessage()); - return new ResultData(ErrorCode.DB_FAIL.getCode(), "TJD保存车牌失败, e:" + e.getMessage()); - } + String carNumColor = paramMap.get("carNumColor"); + //if (StringUtils.isBlank(carNumColor)) { + // logger.error("carNumColor为空"); + // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumColor为空"); + //} + Long newCarId = 0L; + String outCarId = paramMap.get("outCarId"); + if (StringUtils.isBlank(outCarId)) { + logger.warn("outCarId为空"); + newCarId = wxCUserCarService.getNewCarID(); + outCarId = String.valueOf(newCarId); + } + String params = park.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String url = objParams.getString("url"); + String partner = objParams.getString("partner"); + String key = objParams.getString("key"); + String version = objParams.getString("version"); + String ret = tjd.registerCar(url, partner, key, version, + carNumber, carNumColor, null, outCarId); + JSONObject retObj = JSON.parseObject(ret); + retObj.put("vendor", park.getVendorType()); + if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { + ResultData e = tjdInsertToDB(carNumber, newCarId, retObj); + if (e != null) return e; + return new ResultData(retObj); + } else { + return new ResultData(ErrorCode.TJD_BIND_FAIL.getCode(), "绑车牌失败", retObj); + } + } - wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId()); - return new ResultData(retObj); - } else { - return new ResultData(ErrorCode.TJD_BIND_FAIL.getCode(), "绑车牌失败", retObj); - } + private ResultData tjdInsertToDB(String carNumber, Long newCarId, JSONObject retObj) { + String carId = retObj.getString("carId"); + // 插入车牌 + Date curr = new Date(); + WxCUserCar userCar = new WxCUserCar(); + userCar.setId(newCarId); + userCar.setCUserId(getUserId()); + userCar.setTenantId(getTenantId()); + userCar.setCarNumber(carNumber); + userCar.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + JSONObject jo = new JSONObject(); + jo.put("carId", carId); + userCar.setVendorParams(JSON.toJSONString(jo)); + userCar.setCreateDate(curr); + userCar.setUpdateDate(curr); + try { + wxCUserCarService.save(userCar); + wxScoreRulesService.addScore(EnumScoreType.BIND_CAR,userCar); + //增加积分 + addCredit(); + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.DB_FAIL.getCode(), "TJD保存车牌失败, e:" + e.getMessage()); } - return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "绑车牌失败"); + + wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_CAR,getUserId()); + return null; } //-----增加积分start----- @@ -399,89 +422,98 @@ public class WxCarController extends BaseController { // 1, get mall's park WxPark park = getCurrentPark(getTenantId()); if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { - String etcpToken = paramMap.get("etcpToken"); - if (StringUtils.isBlank(etcpToken)) { - logger.error("etcpToken为空"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); - } - String carNumber = paramMap.get("carNumber"); - if (StringUtils.isBlank(carNumber)) { - logger.error("carNumber为空"); - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); - } - String params = park.getVendorParams(); - JSONObject objParams = JSON.parseObject(params); - String url = objParams.getString("url"); - String merchantNo = objParams.getString("merchantNo"); - String merchantKey = objParams.getString("merchantKey"); - String version = objParams.getString("version"); + return etcpUnbindCar(paramMap, park); + } + else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { + ResultData e = tjdUnbindCar(paramMap, park); + if (e != null) return e; + } + return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "解绑车牌失败"); + } - String ret = ""; + private ResultData etcpUnbindCar(Map paramMap, WxPark park) { + String etcpToken = paramMap.get("etcpToken"); + if (StringUtils.isBlank(etcpToken)) { + logger.error("etcpToken为空"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); + } + String carNumber = paramMap.get("carNumber"); + if (StringUtils.isBlank(carNumber)) { + logger.error("carNumber为空"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); + } + String params = park.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String url = objParams.getString("url"); + String merchantNo = objParams.getString("merchantNo"); + String merchantKey = objParams.getString("merchantKey"); + String version = objParams.getString("version"); + + String ret = ""; + try { + ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber); + } catch (MallinkException e) { + logger.error("ETCP failed: " + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } + + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getIntValue("code") == 0) { try { - ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber); - } catch (MallinkException e) { - logger.error("ETCP failed: " + e.getMessage()); - return new ResultData(e.getErrorCode(), e.getMessage()); + WxCUserCar userCar = new WxCUserCar(); + userCar.setCUserId(getUserId()); + userCar.setTenantId(getTenantId()); + userCar.setCarNumber(carNumber); + wxCUserCarService.deleteByObj(userCar); + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.DB_FAIL.getCode(), "解绑车牌数据库错误, e:" + e.getMessage()); } + return new ResultData(); + } else { + String message = retObj.getString("message"); + logger.error("解绑车牌失败"); + return new ResultData(ErrorCode.ETCP_UNBIND_FAIL.getCode(), message, retObj); + } + } + + private ResultData tjdUnbindCar(@RequestBody Map paramMap, WxPark park) { + String carNumber = paramMap.get("carNumber"); + if (StringUtils.isBlank(carNumber)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); + } + WxCUserCar queryOne = new WxCUserCar(); + queryOne.setCarNumber(carNumber); + queryOne.setTenantId(getTenantId()); + queryOne.setCUserId(getUserId()); + WxCUserCar userCar = wxCUserCarService.getOne(queryOne); + if (userCar != null) { + String params = userCar.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String carId = objParams.getString("carId"); + + params = park.getVendorParams(); + String url = objParams.getString("url"); + String partner = objParams.getString("partner"); + String key = objParams.getString("key"); + String version = objParams.getString("version"); + String ret = tjd.writeOffCar(url, partner, key, version, carId); JSONObject retObj = JSON.parseObject(ret); - if (retObj.getIntValue("code") == 0) { + if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { try { - WxCUserCar userCar = new WxCUserCar(); - userCar.setCUserId(getUserId()); - userCar.setTenantId(getTenantId()); - userCar.setCarNumber(carNumber); wxCUserCarService.deleteByObj(userCar); } catch (Exception e) { - logger.error(e.getMessage()); + logger.error("解绑车牌数据库错误, e:" + e.getMessage()); return new ResultData(ErrorCode.DB_FAIL.getCode(), "解绑车牌数据库错误, e:" + e.getMessage()); } return new ResultData(); } else { - String message = retObj.getString("message"); - logger.error("解绑车牌失败"); - return new ResultData(ErrorCode.ETCP_UNBIND_FAIL.getCode(), message, retObj); + return new ResultData(ErrorCode.TJD_UNBIND_FAIL, "解绑车牌失败"); } } - else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { - String carNumber = paramMap.get("carNumber"); - if (StringUtils.isBlank(carNumber)) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); - } - WxCUserCar queryOne = new WxCUserCar(); - queryOne.setCarNumber(carNumber); - queryOne.setTenantId(getTenantId()); - queryOne.setCUserId(getUserId()); - WxCUserCar userCar = wxCUserCarService.getOne(queryOne); - if (userCar != null) { - String params = userCar.getVendorParams(); - JSONObject objParams = JSON.parseObject(params); - String carId = objParams.getString("carId"); - - params = park.getVendorParams(); - String url = objParams.getString("url"); - String partner = objParams.getString("partner"); - String key = objParams.getString("key"); - String version = objParams.getString("version"); - String ret = tjd.writeOffCar(url, partner, key, version, carId); - JSONObject retObj = JSON.parseObject(ret); - if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { - try { - wxCUserCarService.deleteByObj(userCar); - } catch (Exception e) { - logger.error("解绑车牌数据库错误, e:" + e.getMessage()); - return new ResultData(ErrorCode.DB_FAIL.getCode(), "解绑车牌数据库错误, e:" + e.getMessage()); - } - - return new ResultData(); - } else { - return new ResultData(ErrorCode.TJD_UNBIND_FAIL, "解绑车牌失败"); - } - } - - } - return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "解绑车牌失败"); + return null; } /** @@ -529,76 +561,84 @@ public class WxCarController extends BaseController { // 1, get mall's park WxPark park = getCurrentPark(getTenantId()); if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { - String etcpToken = paramMap.get("etcpToken"); - String carNumber = paramMap.get("carNumber"); - if (StringUtils.isBlank(etcpToken)) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); - } - if (StringUtils.isBlank(carNumber)) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); - } - String params = park.getVendorParams(); - JSONObject objParams = JSON.parseObject(params); - String url = objParams.getString("url"); - String appId = objParams.getString("appId"); - String merchantNo = objParams.getString("merchantNo"); - String merchantKey = objParams.getString("merchantKey"); - String version = objParams.getString("version"); + return etcpCarStopFee(paramMap, park); + } + else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { + return tjdCarStopFee(paramMap, park); + } + return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费获取失败"); + } - String ret = ""; + private ResultData etcpCarStopFee(@RequestBody Map paramMap, WxPark park) { + String etcpToken = paramMap.get("etcpToken"); + String carNumber = paramMap.get("carNumber"); + if (StringUtils.isBlank(etcpToken)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); + } + if (StringUtils.isBlank(carNumber)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); + } + String params = park.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String url = objParams.getString("url"); + String appId = objParams.getString("appId"); + String merchantNo = objParams.getString("merchantNo"); + String merchantKey = objParams.getString("merchantKey"); + String version = objParams.getString("version"); + + String ret = ""; + try { + ret = etcp.orderUnpay(url, appId, merchantNo, merchantKey, version, etcpToken, carNumber); + } catch (MallinkException e) { + logger.error("ETCP failed: " + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } + + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getIntValue("code") == 0) { + JSONObject feeObj = retObj.getJSONArray("data").getJSONObject(0); + /* + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setTenantId(user.getTenantId()); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_UNPAY.getCode()); + String feeStr = JSON.toJSONString(feeObj); + wxCarCmdLog.setCmdJson(feeStr); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); try { - ret = etcp.orderUnpay(url, appId, merchantNo, merchantKey, version, etcpToken, carNumber); - } catch (MallinkException e) { - logger.error("ETCP failed: " + e.getMessage()); - return new ResultData(e.getErrorCode(), e.getMessage()); - } + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("etcpOrderUnpay: 入库错误:" + feeStr); + return new ResultData(ErrorCode.DB_FAIL.getCode(), "入库错误", feeStr); + } + */ + return new ResultData(Result.SUCCESS, "停车费获取成功", feeObj); + } else { + String message = retObj.getString("message"); + return new ResultData(ErrorCode.ETCP_STOP_FEE_FAIL.getCode(), message, retObj); + } + } - JSONObject retObj = JSON.parseObject(ret); - if (retObj.getIntValue("code") == 0) { - JSONObject feeObj = retObj.getJSONArray("data").getJSONObject(0); - /* - Date currentDate = new Date(); - WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); - wxCarCmdLog.setTenantId(user.getTenantId()); - wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_UNPAY.getCode()); - String feeStr = JSON.toJSONString(feeObj); - wxCarCmdLog.setCmdJson(feeStr); - wxCarCmdLog.setCreateDate(currentDate); - wxCarCmdLog.setUpdateDate(currentDate); - try { - wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); - } catch (Exception e) { - logger.error("etcpOrderUnpay: 入库错误:" + feeStr); - return new ResultData(ErrorCode.DB_FAIL.getCode(), "入库错误", feeStr); - } - */ - return new ResultData(Result.SUCCESS, "停车费获取成功", feeObj); - } else { - String message = retObj.getString("message"); - return new ResultData(ErrorCode.ETCP_STOP_FEE_FAIL.getCode(), message, retObj); - } + private ResultData tjdCarStopFee(@RequestBody Map paramMap, WxPark park) { + String carNumber = paramMap.get("carNumber"); + if (StringUtils.isBlank(carNumber)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); } - else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { - String carNumber = paramMap.get("carNumber"); - if (StringUtils.isBlank(carNumber)) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); - } - String params = park.getVendorParams(); - JSONObject objParams = JSON.parseObject(params); - String url = objParams.getString("url"); - String partner = objParams.getString("partner"); - String key = objParams.getString("key"); - String version = objParams.getString("version"); - String ret = tjd.infoForFreeMins(url, partner, key, version, carNumber); - JSONObject retObj = JSON.parseObject(ret); - if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { - return new ResultData(retObj); - } else { - return new ResultData(ErrorCode.TJD_STOP_FEE_FAIL.getCode(), "停车费获取失败"); - } + String params = park.getVendorParams(); + JSONObject objParams = JSON.parseObject(params); + String url = objParams.getString("url"); + String partner = objParams.getString("partner"); + String key = objParams.getString("key"); + String version = objParams.getString("version"); + String ret = tjd.infoForFreeMins(url, partner, key, version, carNumber); + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { + return new ResultData(retObj); + } else { + return new ResultData(ErrorCode.TJD_STOP_FEE_FAIL.getCode(), "停车费获取失败"); } - return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费获取失败"); } /** @@ -782,62 +822,68 @@ public class WxCarController extends BaseController { /// 1, get mall's park WxPark park = getCurrentPark(getTenantId()); if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { - String params = park.getVendorParams(); - if(params == null) { - return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "车场不支持"); - } - JSONObject objParams = JSON.parseObject(params); - String url = objParams.getString("url"); - String merchantNo = objParams.getString("merchantNo"); - String merchantKey = objParams.getString("merchantKey"); - String version = objParams.getString("version"); - if (park.getParkingId() == null) { - // those code is not supported - /* - String lat = objParams.getString("lat"); - String lon = objParams.getString("lon"); - String radius = objParams.getString("radius"); - String ret = etcp.parkingInfo(url, merchantNo, merchantKey, version, lat, lon, radius); - logger.info(ret); - JSONObject retObj = JSON.parseObject(ret); - if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { - JSONObject retData = retObj.getJSONObject("data"); - if (retData != null) { - JSONArray retDataList = retData.getJSONArray("list"); - if (retDataList != null) { - JSONObject parkData = retDataList.getJSONObject(0); - if (parkData != null) { - String parkId = parkData.getString("id"); - objParams.put("parkId", parkId); - params = JSON.toJSONString(objParams); - park.setVendorParams(params); - park.setParkingId(parkId); - wxParkService.saveOrUpdate(park); - } + ResultData e = etcpParkStatus(park); + if (e != null) return e; + } + return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "车场不支持"); + } + + private ResultData etcpParkStatus(WxPark park) { + String params = park.getVendorParams(); + if(params == null) { + return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "车场不支持"); + } + JSONObject objParams = JSON.parseObject(params); + String url = objParams.getString("url"); + String merchantNo = objParams.getString("merchantNo"); + String merchantKey = objParams.getString("merchantKey"); + String version = objParams.getString("version"); + if (park.getParkingId() == null) { + // those code is not supported + /* + String lat = objParams.getString("lat"); + String lon = objParams.getString("lon"); + String radius = objParams.getString("radius"); + String ret = etcp.parkingInfo(url, merchantNo, merchantKey, version, lat, lon, radius); + logger.info(ret); + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { + JSONObject retData = retObj.getJSONObject("data"); + if (retData != null) { + JSONArray retDataList = retData.getJSONArray("list"); + if (retDataList != null) { + JSONObject parkData = retDataList.getJSONObject(0); + if (parkData != null) { + String parkId = parkData.getString("id"); + objParams.put("parkId", parkId); + params = JSON.toJSONString(objParams); + park.setVendorParams(params); + park.setParkingId(parkId); + wxParkService.saveOrUpdate(park); } } } - */ } + */ + } - if (park.getParkingId() != null) { - String ret = ""; - try { - ret = etcp.parkingStatus(url, merchantNo, merchantKey, version, park.getParkingId()); - } catch (MallinkException e) { - logger.error("ETCP failed: " + e.getMessage()); - return new ResultData(e.getErrorCode(), e.getMessage()); - } + if (park.getParkingId() != null) { + String ret = ""; + try { + ret = etcp.parkingStatus(url, merchantNo, merchantKey, version, park.getParkingId()); + } catch (MallinkException e) { + logger.error("ETCP failed: " + e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } - JSONObject retObj = JSON.parseObject(ret); - if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { - if (retObj.get("data") != null) { - return new ResultData(retObj.getJSONObject("data")); - } + JSONObject retObj = JSON.parseObject(ret); + if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) { + if (retObj.get("data") != null) { + return new ResultData(retObj.getJSONObject("data")); } } } - return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "车场不支持"); + return null; } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponCarMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponCarMapper.java index 929f0c3ce..d188258c3 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponCarMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponCarMapper.java @@ -15,5 +15,7 @@ public interface WxCouponCarMapper extends CommonMapper { Integer findTemplateAvailCount(Long templateId); + Integer findAmtCountForCouponOrderTakeOff(Long templateId); + WxCouponCarVo findVoDetail(@Param("id")Long id); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponCarService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponCarService.java index f64c11a09..b8938b309 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponCarService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponCarService.java @@ -47,19 +47,26 @@ public interface WxCouponCarService { void deleteById(Long id); /** - * 根据templateId获取分配总数 + * 根据templateId获取库存总数 * * @param templateId */ Integer getAmtCountByTemplateId(Long templateId); /** - * 根据templateId获取库存总数 + * 根据templateId获取已分配总数 * * @param templateId */ Integer getAvaibleCountByTemplateId(Long templateId); + /** + * 根据templateId获取作废券的已领取总数 + * + * @param templateId + */ + Integer getClaimCountByTemplateId(Long templateId); + /** * 根据coupon获得实体 * diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponCarServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponCarServiceImpl.java index 36e0bf7a7..4243ef9f4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponCarServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponCarServiceImpl.java @@ -56,6 +56,11 @@ public class WxCouponCarServiceImpl implements WxCouponCarService { return wxCouponCarMapper.findTemplateAvailCount(templateId); } + @Override + public Integer getClaimCountByTemplateId(Long templateId) { + return wxCouponCarMapper.findAmtCountForCouponOrderTakeOff(templateId); + } + @Override public WxCouponCarVo findDetailVo(Long id) { return wxCouponCarMapper.findVoDetail(id); diff --git a/mallinkService/src/main/resources/mapper/WxCouponCarMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponCarMapper.xml index b2c57fbc8..a86cae044 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponCarMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponCarMapper.xml @@ -71,7 +71,18 @@ from wx_coupon_car car, wx_coupon c where car.id = c.id and c.status = 0 - and json_extract(vendor_params,'$.id') = ${value} + and json_extract(car.vendor_params,'$.id') = ${value} + + +