Просмотр исходного кода

Merge tag 'jenkins-back-end-3129' into release

develop
release_toaliyun_real
Burce 6 лет назад
Родитель
Сommit
cfc7ff8e37
8 измененных файлов: 271 добавлений и 21 удалений
  1. +44
    -5
      mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java
  2. +2
    -0
      mallinkService/src/main/java/com/iformall/common/ErrorCode.java
  3. +1
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java
  4. +37
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumCouponUnit.java
  5. +3
    -2
      mallinkService/src/main/java/com/iformall/service/invest/event/InvestListener.java
  6. +6
    -5
      mallinkService/src/main/java/com/iformall/service/invest/impl/InvestBizServiceImpl.java
  7. +171
    -0
      mallinkService/src/main/java/com/iformall/utils/car/ShangAnUtil.java
  8. +7
    -9
      mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java

+ 44
- 5
mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java Просмотреть файл

@@ -15,12 +15,14 @@ import com.iformall.exception.MallinkException;
import com.iformall.service.*; import com.iformall.service.*;
import com.iformall.utils.car.DaHuaUtil; import com.iformall.utils.car.DaHuaUtil;
import com.iformall.utils.car.ETCPUtil; import com.iformall.utils.car.ETCPUtil;
import com.iformall.utils.car.ShangAnUtil;
import com.iformall.utils.car.TJDUtil; import com.iformall.utils.car.TJDUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.tomcat.jni.Error;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -698,8 +700,11 @@ public class WxCarController extends BaseController {
* 优免券领取 * 优免券领取
* 优免券不可退 * 优免券不可退
*/ */
@ApiOperation(value = "停车券使用", notes = "ETCP:={\"etcpToken\":\"string(ETCP专用)\",\"carNumber\":\"string\",\"couponOrderId\"=\"String\"},输出\n{}\n" +
"TJD:{\"carNumber\":\"string\",\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}")
@ApiOperation(value = "停车券使用",
notes = "ETCP:={\"etcpToken\":\"string(ETCP专用)\",\"carNumber\":\"string\",\"couponOrderId\"=\"String\"},输出\n{}\n" +
"TJD:{\"carNumber\":\"string\",\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}" +
"ShangAn:{\"carNumber\":\"string\",\"couponOrderId\":\"string\"}"
)
@PostMapping("/getCoupon") @PostMapping("/getCoupon")
public ResultData getCoupon(@RequestBody Map<String, String> paramMap) { public ResultData getCoupon(@RequestBody Map<String, String> paramMap) {
/// 1, get mall's park /// 1, get mall's park
@@ -731,7 +736,7 @@ public class WxCarController extends BaseController {
userCar = list.get(0); userCar = list.get(0);
} }


if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) {
String etcpToken = paramMap.get("etcpToken"); String etcpToken = paramMap.get("etcpToken");
if (StringUtils.isBlank(etcpToken)) { if (StringUtils.isBlank(etcpToken)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "etcpToken为空");
@@ -783,7 +788,7 @@ public class WxCarController extends BaseController {
} else { } else {
return new ResultData(ErrorCode.ETCP_QUAN_SEND_FAIL.getCode(), retObj.getString("message")); return new ResultData(ErrorCode.ETCP_QUAN_SEND_FAIL.getCode(), retObj.getString("message"));
} }
} else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) {
} else if (park.getVendorType().equals(EnumCarVendor.CAR_TJD.getCode())) {
String tradeId = paramMap.get("tradeId"); String tradeId = paramMap.get("tradeId");
String accountId = paramMap.get("accountId"); String accountId = paramMap.get("accountId");
if (StringUtils.isBlank(tradeId)) { if (StringUtils.isBlank(tradeId)) {
@@ -803,14 +808,48 @@ public class WxCarController extends BaseController {
String key = objParams.getString(TJDUtil.TJD_ACCOUNT_KEY); String key = objParams.getString(TJDUtil.TJD_ACCOUNT_KEY);
String version = objParams.getString(TJDUtil.TJD_VERSION); String version = objParams.getString(TJDUtil.TJD_VERSION);


String amount = "";
if (coupon.getUnit().equals(EnumCouponUnit.MONEY.getCode())) {
amount = coupon.getPriceStr();
} else {
amount = String.valueOf(coupon.getPrice()* 60);
}

String ret = tjd.deductionForDetail(url, partner, key, version, String ret = tjd.deductionForDetail(url, partner, key, version,
tradeId, accountId, userCar, coupon);
tradeId, accountId, String.valueOf(userCar.getId()),
coupon.getUnit().toString(), amount);
JSONObject retObj = JSON.parseObject(ret); JSONObject retObj = JSON.parseObject(ret);
if (retObj.getString(TJDUtil.TJD_RETURN_CODE).equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { if (retObj.getString(TJDUtil.TJD_RETURN_CODE).equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) {
return new ResultData(); return new ResultData();
} else { } else {
return new ResultData(ErrorCode.TJD_DEDUCE_FEE_FAIL.getCode(), "停车费抵扣失败"); return new ResultData(ErrorCode.TJD_DEDUCE_FEE_FAIL.getCode(), "停车费抵扣失败");
} }
} else if (park.getVendorType().equals(EnumCarVendor.CAR_SHANGAN.getCode())) {
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(ShangAnUtil.SHANGAN_URL);
String key = objParams.getString(ShangAnUtil.SHANGAN_KEY);
String parkNumber = objParams.getString(ShangAnUtil.SHANGAN_PARK_NUMBER);

String couponModelId = coupon.getUnit().toString();
String position = "";
if (coupon.getUnit().equals(EnumCouponUnit.MONEY.getCode())) {
position = coupon.getPrice().toString();
} else {
position = String.valueOf(coupon.getPrice()* 60);
}

String ret = ShangAnUtil.couponSend(url, key, parkNumber, couponModelId, userCar.getExpiredTime(), carNumber, position);
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getString(ShangAnUtil.SHANGAN_STATUS).equalsIgnoreCase(ShangAnUtil.SHANGAN_SUCCESS)) {
return new ResultData();
} else {
return new ResultData(ErrorCode.SHANGAN_COUPON_FAIL.getCode(), retObj.getString(ShangAnUtil.SHANGAN_ERROR_CODE));
}
} }
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券领取失败"); return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券领取失败");
} }


+ 2
- 0
mallinkService/src/main/java/com/iformall/common/ErrorCode.java Просмотреть файл

@@ -156,6 +156,8 @@ public enum ErrorCode{
TJD_STOP_FEE_FAIL(2062, "TJD停车费失败"), TJD_STOP_FEE_FAIL(2062, "TJD停车费失败"),
TJD_DEDUCE_FEE_FAIL(2063, "TJD停车费抵扣失败"), TJD_DEDUCE_FEE_FAIL(2063, "TJD停车费抵扣失败"),


SHANGAN_COUPON_FAIL(2070, "优惠券失败"),



/** /**
* 游戏 * 游戏


+ 1
- 0
mallinkService/src/main/java/com/iformall/enums/EnumCarVendor.java Просмотреть файл

@@ -10,6 +10,7 @@ public enum EnumCarVendor {
CAR_ETCP(1, "ETCP"), CAR_ETCP(1, "ETCP"),
CAR_TJD(2, "TJD"), CAR_TJD(2, "TJD"),
CAR_DAHUA(3, "DAHUA"), CAR_DAHUA(3, "DAHUA"),
CAR_SHANGAN(4, "ShangAn"),
; ;


public static EnumCarVendor getEnum(Integer code) { public static EnumCarVendor getEnum(Integer code) {


+ 37
- 0
mallinkService/src/main/java/com/iformall/enums/EnumCouponUnit.java Просмотреть файл

@@ -0,0 +1,37 @@
package com.iformall.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumCouponUnit {

// 0:rmb分 1:小时
MONEY(0, "单位:分(人民币)"),
HOUR(1, "单位;小时")
;

public static EnumCouponUnit getEnum(Integer code) {
for (EnumCouponUnit value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumCouponUnit(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 3
- 2
mallinkService/src/main/java/com/iformall/service/invest/event/InvestListener.java Просмотреть файл

@@ -35,6 +35,7 @@ public class InvestListener implements ApplicationListener<InvestEvent> {
LambdaQueryWrapper<InvestTaskEntity> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<InvestTaskEntity> query = new LambdaQueryWrapper<>();
query.in(InvestTaskEntity::getTargetId, rentEventInfo.getTargetIds()); query.in(InvestTaskEntity::getTargetId, rentEventInfo.getTargetIds());
query.eq(InvestTaskEntity::getTargetType, EnumInvestType.RENT); query.eq(InvestTaskEntity::getTargetType, EnumInvestType.RENT);
query.eq(InvestTaskEntity::getStatus, EnumTaskStatus.NEGOTIATING);
List<InvestTaskEntity> tasks = taskService.list(query); List<InvestTaskEntity> tasks = taskService.list(query);
if (CollectionUtils.isEmpty(tasks)) { if (CollectionUtils.isEmpty(tasks)) {
log.warn("receive InvestEvent , tasks is empty : {}", tasks); log.warn("receive InvestEvent , tasks is empty : {}", tasks);
@@ -53,13 +54,13 @@ public class InvestListener implements ApplicationListener<InvestEvent> {
status = EnumTaskStatus.FINISH; status = EnumTaskStatus.FINISH;
} }


if (status == EnumTaskStatus.FINISH) {
//if (status != EnumTaskStatus.FINISH) {
for (InvestTaskEntity task : tasks) { for (InvestTaskEntity task : tasks) {
task.setStatus(status); task.setStatus(status);
task.setContent(InvestHelper.addContractId(task.getContent(),rentEventInfo.getRentId(),rentEventInfo.getContractType())); task.setContent(InvestHelper.addContractId(task.getContent(),rentEventInfo.getRentId(),rentEventInfo.getContractType()));
} }
taskService.updateBatchById(tasks); taskService.updateBatchById(tasks);
}
//}


} }
} }

+ 6
- 5
mallinkService/src/main/java/com/iformall/service/invest/impl/InvestBizServiceImpl.java Просмотреть файл

@@ -516,6 +516,8 @@ public class InvestBizServiceImpl implements InvestBizService {
LambdaQueryWrapper<InvestTaskEntity> taskQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<InvestTaskEntity> taskQueryWrapper = new LambdaQueryWrapper<>();
InvestPageResult<InvestTaskVo> investPage = new InvestPageResult<>(); InvestPageResult<InvestTaskVo> investPage = new InvestPageResult<>();
taskQueryWrapper.apply(StringUtils.isNotBlank(taskParams.getOwner()), "`owner` REGEXP {0}", taskParams.getOwner()); taskQueryWrapper.apply(StringUtils.isNotBlank(taskParams.getOwner()), "`owner` REGEXP {0}", taskParams.getOwner());
taskQueryWrapper.apply(Objects.nonNull(params.getBusinessId()), "`content` REGEXP {0}",
String.format("\"businessId\": %d", params.getBusinessId()));
taskParams.setOwner(null); taskParams.setOwner(null);
taskQueryWrapper.setEntity(taskParams); taskQueryWrapper.setEntity(taskParams);


@@ -590,7 +592,7 @@ public class InvestBizServiceImpl implements InvestBizService {
shop = new WxShop(); shop = new WxShop();
shop.setShopNumber(params.getShopNumber()); shop.setShopNumber(params.getShopNumber());
shop.setStatus(params.getShopStatus()); shop.setStatus(params.getShopStatus());
shop.setBusinessId(params.getBusinessId());
//shop.setBusinessId(params.getBusinessId());
} }


InvestTaskDto taskDto = new InvestTaskDto(); InvestTaskDto taskDto = new InvestTaskDto();
@@ -657,9 +659,8 @@ public class InvestBizServiceImpl implements InvestBizService {
LambdaQueryWrapper<InvestRemindEntity> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<InvestRemindEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(InvestRemindEntity::getTenantId, InvestUserContext.getUser().getTenantId()); queryWrapper.eq(InvestRemindEntity::getTenantId, InvestUserContext.getUser().getTenantId());
if (Objects.nonNull(params.getRemindDate())) { if (Objects.nonNull(params.getRemindDate())) {
queryWrapper.apply("date_format(begin_date,'%Y-%m-%d') >= {0} AND date_format(end_date,'%Y-%m-%d') < {1}"
, getDayStart(params.getRemindDate())
, getDayEnd(params.getRemindDate()));
queryWrapper.apply("date_format(begin_date,'%Y-%m-%d') <= {0}", getDayStart(params.getRemindDate()))
.apply("date_format(end_date,'%Y-%m-%d') >= {0}", getDayEnd(params.getRemindDate()));
} }
queryWrapper.orderByDesc(InvestRemindEntity::getCreateDate); queryWrapper.orderByDesc(InvestRemindEntity::getCreateDate);
InvestPageResult<InvestRemindEntity> recordPage = remindService.queryPage(remindPageQuery, queryWrapper); InvestPageResult<InvestRemindEntity> recordPage = remindService.queryPage(remindPageQuery, queryWrapper);
@@ -919,7 +920,7 @@ public class InvestBizServiceImpl implements InvestBizService {
} }


Collection<InvestOperateRecordEntity> recordList = entityPageList.getRecords(); Collection<InvestOperateRecordEntity> recordList = entityPageList.getRecords();
Map<Long, MallUserInfo> usersMap = getMap(userInfoService.getByIds(getIds(recordList, InvestOperateRecordEntity::getOperator)), MallUserInfo::getId);
Map<Long, MallUserInfo> usersMap = getMap(userInfoService.findList(new MallUserInfo()), MallUserInfo::getId);


//品牌信息 //品牌信息
List<WxBrand> brands = brandService.listAsPage(null, 1, Integer.MAX_VALUE).getList(); List<WxBrand> brands = brandService.listAsPage(null, 1, Integer.MAX_VALUE).getList();


+ 171
- 0
mallinkService/src/main/java/com/iformall/utils/car/ShangAnUtil.java Просмотреть файл

@@ -0,0 +1,171 @@
package com.iformall.utils.car;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.iformall.utils.DateUtils;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
* 尚安停车
*/
public class ShangAnUtil {
private final static Logger logger = LoggerFactory.getLogger(ShangAnUtil.class);

public static final String SHANGAN_URL = "url";
public static final String SHANGAN_KEY = "key";
public static final String SHANGAN_PARK_NUMBER = "parkNumber";

public static final String KEY = "NzMFFDDJDIFACACCM2zAezDz";

public static final String PARK_NUMBER = "p190829183435";

public static final String URL = "http://www.p-share.com/shangan-yhq/web/api/outcoupon";

public static final String SHANGAN_STATUS = "status";
public static final String SHANGAN_SUCCESS = "success";
public static final String SHANGAN_FAIL = "fail";
public static final String SHANGAN_ERROR_CODE = "errorCode";


public static final SimpleDateFormat dateInFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


public static void main(String[] args) throws Exception {
String carNumber = "京XAZMF1";
Date myDate = DateUtils.getHourTimeAfter(1, new Date());

String result = couponSend(URL, KEY, PARK_NUMBER, "1", myDate, carNumber, "1500");

JSONObject obj = JSON.parseObject(result);
}

/**
* md5算法
* @param data
* @return
* @throws NoSuchAlgorithmException
*/

public static String md5(String data) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(data.getBytes());
StringBuffer buf = new StringBuffer();
byte[] bits = md.digest();
for(int i=0;i<bits.length;i++){
int a = bits[i];
if(a<0) a+=256;
if(a<16) buf.append("0");
buf.append(Integer.toHexString(a));
}
return buf.toString();
}

/**
* 签名
* @param key
* @param parkNumber
* @return
* @throws NoSuchAlgorithmException
*/
public static String getSign(String key, String parkNumber) throws NoSuchAlgorithmException {
String signValue = md5(key + parkNumber).toUpperCase();
logger.debug("sign: " + signValue);
return signValue;
}

public static String couponSend(String url, String key, String parkNumber, String couponModelId, Date expireTime, String plate, String position) {
Map<String, String> params = new HashMap<>();
params.put("parkNum", parkNumber);
params.put("couponModeId", couponModelId);
params.put("endTime", dateInFormat.format(expireTime));
params.put("plate", plate);
params.put("position", position);
try {
String result = Proc(url, key, parkNumber, params);
return result;
} catch (Exception e) {
return null;
}
}

private static String Proc(String url, String key, String parkNumber, Map<String, String> paramMap) {
CloseableHttpClient httpClient = HttpClients.createDefault();

HttpPost httpPost = new HttpPost(url);
httpPost.addHeader(HTTP.CONTENT_TYPE,"application/json");
httpPost.addHeader("Accept", "application/json");
httpPost.addHeader("Accept-Encoding", "UTF-8");

String sign = null;
try{
sign = getSign(key, parkNumber);
httpPost.addHeader("sign", sign);
}catch(NoSuchAlgorithmException e) {
logger.error(e.getLocalizedMessage());
}

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

try {
StringEntity se = new StringEntity(jsonstr, Consts.UTF_8);
se.setContentType("application/json");
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"UTF-8"));
httpPost.setEntity(se);
} catch (Exception e) {
logger.error(e.getMessage());
}

HttpResponse response = null;
try {
response = httpClient.execute(httpPost);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
}

String result = null;

//打印StatusLine
logger.debug("StatusLine: " + response.getStatusLine());
try{
//获取实体
HttpEntity httpEntity= response.getEntity();
result = EntityUtils.toString(httpEntity, "UTF-8");
logger.debug(result);
} catch (Exception e) {
logger.error(e.getLocalizedMessage());
}

try { //关闭流并释放资源
httpClient.close();
} catch (IOException e) {
logger.error(e.getLocalizedMessage());
}

return result;
}




}


+ 7
- 9
mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java Просмотреть файл

@@ -3,8 +3,7 @@ package com.iformall.utils.car;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.WxCouponOrder;
import com.iformall.enums.EnumCouponUnit;
import com.iformall.utils.MapUtil; import com.iformall.utils.MapUtil;
import org.apache.http.Consts; import org.apache.http.Consts;
import org.apache.http.HttpEntity; import org.apache.http.HttpEntity;
@@ -378,7 +377,7 @@ public class TJDUtil {
public static String deductionForDetail( public static String deductionForDetail(
String url, String partner, String key, String version, String url, String partner, String key, String version,
String tradeId, String accountId, String tradeId, String accountId,
WxCouponOrder couponOrder, WxCoupon coupon) {
String couponOrderId, String couponType, String reduceAmount) {
// 为指定订单抵扣停车费,如果此时车辆已经出场,返回isSuccess错误码为3,停简单系统不再接收此笔抵扣信息,对方系统 需要给用户发起退款。 // 为指定订单抵扣停车费,如果此时车辆已经出场,返回isSuccess错误码为3,停简单系统不再接收此笔抵扣信息,对方系统 需要给用户发起退款。
String service = "parkhub.order.deductionForDetail"; String service = "parkhub.order.deductionForDetail";
Map<String, String> paramMap = MapUtil.getOrderMap(); Map<String, String> paramMap = MapUtil.getOrderMap();
@@ -388,17 +387,16 @@ public class TJDUtil {


JSONArray detailArr = new JSONArray(); JSONArray detailArr = new JSONArray();
JSONObject detailObj = new JSONObject(); JSONObject detailObj = new JSONObject();
detailObj.put(TJD_OUT_TRADE_NO, String.valueOf(couponOrder.getId()));
detailObj.put(TJD_OUT_TRADE_NO, couponOrderId);
detailObj.put(TJD_TYPE, TJD_TYPE_COUPON); detailObj.put(TJD_TYPE, TJD_TYPE_COUPON);
detailObj.put(TJD_CHANNEL, "2204"); detailObj.put(TJD_CHANNEL, "2204");
String memo = "会员优惠券"; String memo = "会员优惠券";
if (coupon.getUnit().equals(0)) {
detailObj.put(TJD_COUPON_TYPE, "0");
detailObj.put(TJD_AMOUNT, coupon.getPriceStr());
detailObj.put(TJD_COUPON_TYPE, couponType);
if (couponType.equals(String.valueOf(EnumCouponUnit.MONEY.getCode()))) {
detailObj.put(TJD_AMOUNT, reduceAmount);
memo += "-金额"; memo += "-金额";
} else { } else {
detailObj.put(TJD_COUPON_TYPE, "1");
detailObj.put(TJD_MINUTES, String.valueOf(coupon.getPrice()*60));
detailObj.put(TJD_MINUTES, reduceAmount);
memo += "-时长"; memo += "-时长";
} }
detailObj.put(TJD_MEMO, memo); detailObj.put(TJD_MEMO, memo);


Загрузка…
Отмена
Сохранить