Browse Source

Merge tag 'refs/tags/jenkins-back-end-2826' into release

dev
release_toaliyun_real
Stormeye Wu 6 years ago
parent
commit
17884174ce
5 changed files with 94 additions and 108 deletions
  1. +21
    -20
      mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java
  2. +1
    -6
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java
  3. +57
    -71
      mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java
  4. +14
    -10
      mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java
  5. +1
    -1
      mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml

+ 21
- 20
mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java View File

@@ -200,24 +200,27 @@ public class WxCarController extends BaseController {
logger.info(coupon.toString());
// Save to wx_counpon
Date curDate = new Date();
// check 同一个模板的券分配额是否超了
if (StringUtils.isBlank(coupon.getVendorParams())) {
logger.error("请填充停车厂商优免券参数");
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "停车厂商参数为空");
}
JSONObject vendorParamsObj = JSON.parseObject(coupon.getVendorParams());
Long templateId = vendorParamsObj.getLong("id");
Integer amount = vendorParamsObj.getInteger("amount");
Integer avaliavleNum = vendorParamsObj.getInteger("avaliavleNum");
Integer amtCount = wxCouponCarService.getAmtCountByTemplateId(templateId);
Integer availCount = wxCouponCarService.getAvaibleCountByTemplateId(templateId);
if (amtCount >= amount) {
logger.error("总库存已达到停车厂商优免券数量限制");
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "总库存已达到停车厂商优免券数量限制");
}
if (availCount >= avaliavleNum) {
logger.error("可用库存已达到停车厂商优免券数量限制");
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "可用库存已达到停车厂商优免券数量限制");
WxPark park = getCurrentPark();
if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) {
// check 同一个模板的券分配额是否超了
if (StringUtils.isBlank(coupon.getVendorParams())) {
logger.error("请填充停车厂商优免券参数");
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "停车厂商参数为空");
}
JSONObject vendorParamsObj = JSON.parseObject(coupon.getVendorParams());
Long templateId = vendorParamsObj.getLong("id");
Integer amount = vendorParamsObj.getInteger("amount");
Integer avaliavleNum = vendorParamsObj.getInteger("avaliavleNum");
Integer amtCount = wxCouponCarService.getAmtCountByTemplateId(templateId);
Integer availCount = wxCouponCarService.getAvaibleCountByTemplateId(templateId);
if (amtCount >= amount) {
logger.error("总库存已达到停车厂商优免券数量限制");
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "总库存已达到停车厂商优免券数量限制");
}
if (availCount >= avaliavleNum) {
logger.error("可用库存已达到停车厂商优免券数量限制");
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "可用库存已达到停车厂商优免券数量限制");
}
}
// check End
coupon.setTenantId(getTenantId());
@@ -231,8 +234,6 @@ public class WxCarController extends BaseController {
WxCouponCar couponCar = new WxCouponCar();
couponCar.setId(coupon.getId());
couponCar.setTenantId(getTenantId());

WxPark park = getCurrentPark();
couponCar.setParkId(park.getId());
couponCar.setVendorType(park.getVendorType());
couponCar.setVendorParams(coupon.getVendorParams());


+ 1
- 6
mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponChannelController.java View File

@@ -9,12 +9,8 @@ import com.iformall.controller.app.WxAppinfoController;
import com.iformall.controller.base.BaseController;
import com.iformall.domain.dto.WxCouponChannelDto;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxCouponChannelAddVo;
import com.iformall.domain.vo.WxCouponChannelVo;
import com.iformall.enums.EnumCouponChannelStatus;
import com.iformall.enums.EnumFlowRecordStatus;
import com.iformall.enums.EnumRentContractAppStatus;
import com.iformall.enums.EnumRentContractStatus;
import com.iformall.enums.*;
import com.iformall.mapper.WxCouponChannelMapper;
import com.iformall.service.QrCodeService;
import com.iformall.service.WxCouponChannelService;
@@ -24,7 +20,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;


+ 57
- 71
mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java View File

@@ -660,48 +660,6 @@ public class WxCarController extends BaseController {
}
}

/**
* 停车费抵扣
*
*/
@ApiOperation(value = "停车费抵扣", notes ="TJD: {\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}")
@PostMapping("/deductionFee")
public ResultData deductionFee(@RequestBody Map<String, String > paramMap) {
/// 1, get mall's park
WxPark park = getCurrentPark(getTenantId());
if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) {
String tradeId = paramMap.get("tradeId");
String accountId = paramMap.get("accountId");
String outTradeNo = paramMap.get("couponOrderId");
if (StringUtils.isBlank(tradeId)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "tradeId为空");
}
if (StringUtils.isBlank(accountId)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "accountId为空");
}
if (StringUtils.isBlank(outTradeNo)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponOrderId为空");
}
WxCouponOrder couponOrder = wxCouponOrderService.getById(Long.valueOf(outTradeNo));
WxCoupon coupon = couponService.getById(couponOrder.getCouponId());
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.deductionForDetail(url, partner, key, version,
tradeId, accountId, couponOrder, coupon);
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getString(TJDUtil.TJD_RETURN_CODE).equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) {
return new ResultData();
} else {
return new ResultData(ErrorCode.TJD_DEDUCE_FEE_FAIL.getCode(), "停车费抵扣失败");
}
}
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费抵扣失败");
}

private String getETCPBusinessID(Long merchantId) {
String businessId;
WxMerchant wxMerchant = wxMerchantService.getById(merchantId);
@@ -715,44 +673,44 @@ public class WxCarController extends BaseController {
* 优免券领取
* 优免券不可退
*/
@ApiOperation(value = "优免券领取", notes="ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\",\"couponOrderId\"=\"String\"},输出\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<String, String > paramMap) {
/// 1, get mall's park
WxPark park = getCurrentPark(getTenantId());
String carNumber = paramMap.get("carNumber");
String couponOrderIdStr = paramMap.get("couponOrderId");
if (StringUtils.isBlank(carNumber)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空");
}
if (StringUtils.isBlank(couponOrderIdStr)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponOrderId为空");
}
Long couponOrderId = 0L;
try {
couponOrderId = Long.valueOf(couponOrderIdStr);
} catch (NumberFormatException e) {
logger.error(e.getMessage());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponOrderId转化失败");
}

WxCouponOrderCarCVo userCar = null;
WxCouponOrder userCarQ = new WxCouponOrder();
userCarQ.setTenantId(getTenantId());
userCarQ.setCUserId(getUserId());
userCarQ.setId(couponOrderId);
userCarQ.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
List<WxCouponOrderCarCVo> list = wxCouponOrderService.carListCUserVo(userCarQ);
if (list.size() > 0) {
userCar = list.get(0);
}

if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
String etcpToken = paramMap.get("etcpToken");
String carNumber = paramMap.get("carNumber");
String couponOrderIdStr = paramMap.get("couponOrderId");
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为空");
}
if (StringUtils.isBlank(couponOrderIdStr)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponOrderId为空");
}

Long couponOrderId = 0L;
try {
couponOrderId = Long.valueOf(couponOrderIdStr);
} catch (NumberFormatException e) {
logger.error(e.getMessage());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponOrderId转化失败");
}

WxCouponOrderCarCVo userCar = null;
WxCouponOrder userCarQ = new WxCouponOrder();
userCarQ.setTenantId(getTenantId());
userCarQ.setCUserId(getUserId());
userCarQ.setId(couponOrderId);
userCarQ.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
List<WxCouponOrderCarCVo> list = wxCouponOrderService.carListCUserVo(userCarQ);
if (list.size() > 0) {
userCar = list.get(0);
}

String params = park.getVendorParams();
JSONObject objParams = JSON.parseObject(params);
String url = objParams.getString("url");
@@ -800,6 +758,34 @@ 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()){
String tradeId = paramMap.get("tradeId");
String accountId = paramMap.get("accountId");
if (StringUtils.isBlank(tradeId)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "tradeId为空");
}
if (StringUtils.isBlank(accountId)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "accountId为空");
}
WxCoupon coupon = couponService.getById(userCar.getCouponId());
if (coupon == null) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "券为空");
}
String params = park.getVendorParams();
JSONObject objParams = JSON.parseObject(params);
String url = objParams.getString(TJDUtil.TJD_URL);
String partner = objParams.getString(TJDUtil.TJD_ACCOUNT);
String key = objParams.getString(TJDUtil.TJD_ACCOUNT_KEY);
String version = objParams.getString(TJDUtil.TJD_VERSION);

String ret = tjd.deductionForDetail(url, partner, key, version,
tradeId, accountId, userCar, coupon);
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getString(TJDUtil.TJD_RETURN_CODE).equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) {
return new ResultData();
} else {
return new ResultData(ErrorCode.TJD_DEDUCE_FEE_FAIL.getCode(), "停车费抵扣失败");
}
}
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券领取失败");
}


+ 14
- 10
mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java View File

@@ -1,6 +1,7 @@
package com.iformall.utils.car;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.WxCouponOrder;
@@ -385,22 +386,24 @@ public class TJDUtil {
paramMap.put(TJD_ACCOUNT_ID, accountId);
paramMap.put(TJD_PREPAY_TYPE, TJD_PREPAY_TYPE_3);

Map<String, String> detailMap = MapUtil.getOrderMap();
detailMap.put(TJD_OUT_TRADE_NO, String.valueOf(couponOrder.getId()));
detailMap.put(TJD_TYPE, TJD_TYPE_COUPON);
detailMap.put(TJD_CHANNEL, "2204");
JSONArray detailArr = new JSONArray();
JSONObject detailObj = new JSONObject();
detailObj.put(TJD_OUT_TRADE_NO, String.valueOf(couponOrder.getId()));
detailObj.put(TJD_TYPE, TJD_TYPE_COUPON);
detailObj.put(TJD_CHANNEL, "2204");
String memo = "会员优惠券";
if (coupon.getUnit().equals(0)) {
detailMap.put(TJD_COUPON_TYPE, "0");
detailMap.put(TJD_AMOUNT, coupon.getPriceStr());
detailObj.put(TJD_COUPON_TYPE, "0");
detailObj.put(TJD_AMOUNT, coupon.getPriceStr());
memo += "-金额";
} else {
detailMap.put(TJD_COUPON_TYPE, "1");
detailMap.put(TJD_MINUTES, String.valueOf(coupon.getPrice()*60));
detailObj.put(TJD_COUPON_TYPE, "1");
detailObj.put(TJD_MINUTES, String.valueOf(coupon.getPrice()*60));
memo += "-时长";
}
detailMap.put(TJD_MEMO, memo);
paramMap.put(TJD_DETAIL_LIST, JSON.toJSONString(detailMap));
detailObj.put(TJD_MEMO, memo);
detailArr.add(detailObj);
paramMap.put(TJD_DETAIL_LIST, JSON.toJSONString(detailArr));

paramMap.put(TJD_CHARSET, TJD_UTF_8);
paramMap.put(TJD_ACCOUNT, partner);
@@ -639,6 +642,7 @@ public class TJDUtil {
paramMap.put("signType", "md5");

String jsonstr = JSON.toJSONString(paramMap);
logger.info(jsonstr);

try {
StringEntity se = new StringEntity(jsonstr, Consts.UTF_8);


+ 1
- 1
mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml View File

@@ -141,7 +141,7 @@
(select count(*) as coupon_count,coupon_id from wx_coupon_password
where tenant_id=#{tenantId} and status=0 group by coupon_id) cp
inner join wx_coupon c on cp.coupon_id = c.id
where c.tenant_id=#{tenantId} and c.status=0
where c.tenant_id=#{tenantId} and c.status=0 and c.put_apply_status in(0,2)
<if test=" null != couponId ">
and cp.`coupon_id` = #{couponId}
</if>


Loading…
Cancel
Save