diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index fea2d5c43..b2bbfb9bf 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -277,7 +277,7 @@ public class WxCarController extends BaseController { "TJD:{\"carNumber\":\"string\",\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}\n" + "ShangAn:{\"carNumber\":\"string\",\"couponOrderId\":\"string\"}\n" + "BoLink:{\"carNumber\":\"string\",\"orderId\":\"string\",\"couponOrderId\":\"string\"}\n" + - "jieshun或者其他:{\"carNumber\":\"string\",\"orderId\":\"string\",\"couponOrderId\":\"string\",\"parkOrderId\":\"string\"}\n}" + "jieshun或者其他:{\"carNumber\":\"string\",\"couponOrderId\":\"string\",\"parkOrderId\":\"string\"}\n}" ) @PostMapping("/getCoupon") public ResultData getCoupon(@RequestBody Map paramMap) { diff --git a/mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunParkService.java b/mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunParkService.java index 86157e4d5..910cd144e 100644 --- a/mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunParkService.java +++ b/mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunParkService.java @@ -194,7 +194,7 @@ public class JieShunParkService extends BaseParkService implements ParkAdapterSe } /** - * 使用停车券。 先获取停车券,再使用。 + * 使用3.8打折方案,3.9有限制如果领券了之后未使用,不能再次领券。导致出现异常之后,用户永远无法使用优惠券。 * @return */ @Override @@ -211,33 +211,65 @@ public class JieShunParkService extends BaseParkService implements ParkAdapterSe if (null == valueMap) { return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前停车券没有关联停车场优惠券配置。"+coupon.getTitle()); } - String orderNo = paramMap.get("parkOrderId"); - - + //String orderNo = paramMap.get("parkOrderId"); String planNo = valueMap.get("planNo"); - String ret = jieshun.getCoupon(park, planNo,userCar.getCUserPhone(), getCacheToken(park)); - logger.info("jieshun getCoupon result:"+ret); + if (StringUtils.isBlank(planNo)) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前停车券没有关联停车场优惠券配置[planNo]。"+coupon.getTitle()); + } + //String ret = jieshun.getCoupon(park, planNo,userCar.getCUserPhone(), getCacheToken(park)); + //打折登陆验证 + String ret = jieshun.verifyuser(park, getCacheToken(park)); + logger.info("jieshun verifyuser result:"+ret); JSONObject retObj = JSON.parseObject(ret); if (retObj.getIntValue("resultCode") == 0){ - JSONArray couponArrays = retObj.getJSONArray("dataItems"); - if (null != couponArrays && couponArrays.size() > 0 ) { - JSONObject coupoo = couponArrays.getJSONObject(0).getJSONObject("attributes"); - String couponNo = coupoo.getString("couponsNo"); - String rret = jieshun.useCoupon(park, couponNo, orderNo, getCacheToken(park)); - logger.info("jieshun useCoupon[couponOrderId:"+userCar.getId()+";jieshunOrderNo:"+orderNo+"] result:"+rret); - JSONObject rretObj = JSON.parseObject(rret); - if (rretObj.getIntValue("resultCode") == 0){ - return new ResultData(); + JSONArray verfyArrays = retObj.getJSONArray("dataItems"); + if (null != verfyArrays && verfyArrays.size() > 0 ) { + JSONObject verfy = verfyArrays.getJSONObject(0).getJSONObject("attributes"); + String userId = verfy.getString("userId"); + //查询门店下打折方案 + String queryPlanRet = jieshun.querySalePlan(park, getCacheToken(park), userId); + logger.info("jieshun querySalePlan result:"+queryPlanRet); + JSONObject queryPlantRetObj = JSON.parseObject(queryPlanRet); + if (queryPlantRetObj.getIntValue("resultCode") == 0){ + JSONArray planArrays = queryPlantRetObj.getJSONArray("dataItems"); + if (null != planArrays && planArrays.size() > 0 ) { + boolean hasPlan = false; + for (int i = 0 ; i < planArrays.size(); i++) { + JSONObject plan = planArrays.getJSONObject(i); + String planId = plan.getJSONObject("attributes").getString("planId"); + if (planNo.equals(planId)) { + hasPlan = true; + break; + } + } + if (!hasPlan) { + return new ResultData(ErrorCode.CYF_STOP_FEE_FAIL.getCode(),"当前优惠券配置的捷顺编号无效,请联系管理员。"+coupon.getTitle()); + } + //使用打折方案 + String executeRet = jieshun.executediscount(park, planNo, userId, carNumber, getCacheToken(park)); + logger.info("jieshun executediscount result:"+executeRet); + JSONObject executeRetObj = JSON.parseObject(executeRet); + if (executeRetObj.getIntValue("resultCode") == 0){ + return new ResultData(); + }else { + return new ResultData(executeRetObj.getIntValue("resultCode"),"当前用户使用捷顺停打折方案失败。"+executeRetObj.getString("message")); + } + + }else { + return new ResultData(ErrorCode.CYF_STOP_FEE_FAIL.getCode(),"捷顺查询门店未查询到打折信息,请联系管理员。"+userCar.getcUserId()); + } + }else { - return new ResultData(rretObj.getIntValue("resultCode"),"当前用户使用捷顺停车券失败。"+rretObj.getString("message")); + logger.error("jieshun querySalePlan error. paramMap: {} . jieshunResult: {}",JSON.toJSONString(paramMap),queryPlanRet); + String msg = queryPlantRetObj.getString("message"); + return new ResultData(queryPlantRetObj.getIntValue("resultCode"), "捷顺查询门店打折方案失败:"+msg); } - }else { - return new ResultData(ErrorCode.CYF_STOP_FEE_FAIL.getCode(),"当前用户未领用到捷顺停车券。"+userCar.getcUserId()); + return new ResultData(ErrorCode.CYF_STOP_FEE_FAIL.getCode(),"捷顺门店账号登陆失败,请联系管理员。"+userCar.getcUserId()); } }else { - logger.error("jieshun getCoupon error. paramMap: {} . cyfResult: {}",JSON.toJSONString(paramMap),ret); + logger.error("jieshun verifyuser error. paramMap: {} . jieshunResult: {}",JSON.toJSONString(paramMap),ret); String msg = retObj.getString("message"); return new ResultData(retObj.getIntValue("resultCode"), "当前用户领用到捷顺停车券失败:"+msg); } diff --git a/mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunUtil.java b/mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunUtil.java index 6059440e1..fdb1fc62c 100644 --- a/mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunUtil.java +++ b/mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunUtil.java @@ -68,6 +68,10 @@ public class JieShunUtil { public static final String GET_COUPON = "http://www.jslife.com.cn/jsaims/as"; public static final String COUPON_USE = "http://www.jslife.com.cn/jsaims/as"; + + public static final String VERIFY_USER = "http://www.jslife.com.cn/jsaims/as"; + public static final String QUERY_PLAN = "http://www.jslife.com.cn/jsaims/as"; + public static final String PLAN_EXECUTE = "http://www.jslife.com.cn/jsaims/as"; /** * @description UTC时间转化为本地时间 @@ -160,6 +164,48 @@ public class JieShunUtil { return ProcBussiness(QUERY_ORDER, wxPark.getParkId(), map, token,vp.getString("version"),vp.getString("signkey")); } + /** + * 打折登陆验证 + */ + public String verifyuser(WxPark wxPark,String token) { + String vendroParams = wxPark.getVendorParams(); + JSONObject vp = JSON.parseObject(vendroParams); + Map param = new HashMap(); + param.put("userCode", vp.get("loginUser"));//商户编号 + param.put("password", vp.get("loginPassword"));//优惠券编号 + Map map = generateMap("3c.discount.verifyuser",param); + log.info("jieshun verifyuser :" + JSON.toJSONString(map)); + return ProcBussiness(VERIFY_USER, wxPark.getParkId(), map, token,vp.getString("version"),vp.getString("signkey")); + } + + /** + * 查询门店打折方案 + */ + public String querySalePlan(WxPark wxPark,String token,String userId) { + String vendroParams = wxPark.getVendorParams(); + JSONObject vp = JSON.parseObject(vendroParams); + Map param = new HashMap(); + param.put("userId", userId);//商户编号 + Map map = generateMap("3c.discount.querysaleplan",param); + log.info("jieshun querySalePlan :" + JSON.toJSONString(map)); + return ProcBussiness(QUERY_PLAN, wxPark.getParkId(), map, token,vp.getString("version"),vp.getString("signkey")); + } + + /** + * 使用打折方案 + */ + public String executediscount(WxPark wxPark,String planId,String userId,String carNumber,String token) { + String vendroParams = wxPark.getVendorParams(); + JSONObject vp = JSON.parseObject(vendroParams); + Map param = new HashMap(); + param.put("planId", planId);//商户编号 + param.put("userId", userId);//优惠券编号 + param.put("carOrCardNo", handleCarNumber(carNumber));//优惠券编号 + Map map = generateMap("3c.discount.executediscount",param); + log.info("jieshun executediscount :" + JSON.toJSONString(map)); + return ProcBussiness(PLAN_EXECUTE, wxPark.getParkId(), map, token,vp.getString("version"),vp.getString("signkey")); + } + /** * 获取优惠券 @@ -194,8 +240,7 @@ public class JieShunUtil { return ProcBussiness(COUPON_USE, wxPark.getParkId(), map, token,vp.getString("version"),vp.getString("signkey")); } - - + /*token认证登陆**/ private static String ProcLogin(String cid,String user,String password) { String url = TOKEN_URL +"?cid="+cid+"&usr="+user+"&psw="+password; // ArrayList list = new ArrayList();