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

Merge branch 'release_toaliyun_real_20230228' of https://git.malls.iformall.com/server/formallProject into release_toaliyun_real_20230228

release_toaliyun_real
xhxu 3 лет назад
Родитель
Сommit
79af9bdcc7
4 измененных файлов: 136 добавлений и 59 удалений
  1. +70
    -0
      mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java
  2. +52
    -50
      mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java
  3. +6
    -5
      mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java
  4. +8
    -4
      mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderCVo.java

+ 70
- 0
mallinkBApi/src/main/java/com/iformall/controller/WxCardInfoController.java Просмотреть файл

@@ -0,0 +1,70 @@
package com.iformall.controller;

import com.iformall.common.ErrorCode;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxCardInfo;
import com.iformall.domain.po.WxMerchantBUser;
import com.iformall.domain.vo.WxCardSpendVo;
import com.iformall.domain.vo.WxCouponOrderCVo;
import com.iformall.exception.MallinkException;
import com.iformall.pay.WxPayConstant;
import com.iformall.service.PosBrunService;
import com.iformall.service.WxCardInfoService;
import com.iformall.utils.Constant;
import com.iformall.utils.DateUtils;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/api/cardInfo")
public class WxCardInfoController extends BaseController {

private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Autowired
private WxCardInfoService wxCardInfoService;

@ApiOperation(value = "查询卡信息")
@GetMapping("detail")
@ApiImplicitParams({
@ApiImplicitParam(name = "dynamicId", value = "动态码ID", dataType = "String", paramType = "query", required = true)})
public ResultData detail(String dynamicId) {
if (StringUtils.isBlank(dynamicId) || dynamicId.equalsIgnoreCase(Constant.UNDEFINED)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "cardId不能为空");
}
String cardIdStr = dynamicId;
boolean isECard = false;
String _decodeCouponOrderId = WxCouponOrderCVo.getDecodeExpiredCouponOrderId(dynamicId);
if (_decodeCouponOrderId.contains(WxCouponOrderCVo.arg)) {
String[] decodeids = _decodeCouponOrderId.split(WxCouponOrderCVo.arg);
cardIdStr = decodeids[0];
isECard = true;
}
WxCardInfo cardInfo = wxCardInfoService.getById(Long.parseLong(cardIdStr));
if (null == cardInfo) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "未查询到卡:"+cardIdStr);
}
Map map = new HashMap();
if (isECard) {
map.put("cardId", cardInfo.getId());
}else {
map.put("cardId", cardInfo.getCouponPasswordId());
}
map.put("amount", cardInfo.getAmount());
map.put("remainAmount", cardInfo.getRemainingAmount());
map.put("cardType", cardInfo.getType());
return new ResultData(map);
}
}

+ 52
- 50
mallinkBApi/src/main/java/com/iformall/controller/WxCardPayController.java Просмотреть файл

@@ -113,20 +113,20 @@ public class WxCardPayController extends BaseController {
return new ResultData(mapList);
}
@ApiOperation(value = "微信B端扫C端电子储值卡支付订单", notes = "params:{\"cardId\":\"String\",\"cUserId\":\"String\",\"totalFee\":\"String(元)\"}")
@PostMapping("order_create_ecard")
public ResultData saveECardCardPayOrder(@RequestBody Map<String, String> paramMap, HttpServletRequest request) {
@ApiOperation(value = "微信B端扫储值卡支付订单", notes = "params:{\"cardId\":\"String\",\"totalFee\":\"String(元)\"}")
@PostMapping("scanCard")
public ResultData scanCard(@RequestBody Map<String, String> paramMap, HttpServletRequest request) {
String cardIdStr = paramMap.get("cardId");
String cUserIdStr = paramMap.get("cUserId");
if (StringUtils.isBlank(cUserIdStr) || cUserIdStr.equalsIgnoreCase(Constant.UNDEFINED)) {
logger.error("cUserId不能为空");
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "cUserId不能为空");
}
String totalFeeStr = paramMap.get("totalFee");
if (StringUtils.isBlank(cardIdStr) || cardIdStr.equalsIgnoreCase(Constant.UNDEFINED)) {
logger.error("cardId不能为空");
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "cardId不能为空");
}
if (StringUtils.isBlank(totalFeeStr) || totalFeeStr.equalsIgnoreCase(Constant.UNDEFINED)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "totalFee不能为空");
}
String _decodeCouponOrderId = WxCouponOrderCVo.getDecodeExpiredCouponOrderId(cardIdStr);
if (_decodeCouponOrderId.contains(WxCouponOrderCVo.arg)) {
String[] decodeids = _decodeCouponOrderId.split(WxCouponOrderCVo.arg);
@@ -136,8 +136,17 @@ public class WxCardPayController extends BaseController {
if (expiredtime.before(new Date())) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"码已失效,请更新二维码后重试");
}
String cUserIdStr = decodeids[2];
if (StringUtils.isBlank(cUserIdStr) || cUserIdStr.equalsIgnoreCase(Constant.UNDEFINED)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "cUserId不能为空");
}
return saveECardCardPayOrder(cardIdStr,cUserIdStr,totalFeeStr);
}else {
return savePasswordCardPayOrder(cardIdStr,totalFeeStr);
}
}
private ResultData saveECardCardPayOrder(String cardIdStr,String cUserIdStr,String totalFeeStr) {
Long cUserId = null;
try {
cUserId = Long.valueOf(cUserIdStr);
@@ -145,7 +154,6 @@ public class WxCardPayController extends BaseController {
logger.error("cardId convert failed:" + cardIdStr);
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "cardIdStr转换失败");
}
String totalFeeStr = paramMap.get("totalFee");
WxMerchantBUser merchantBUser = getLoginBUser();
Long cardId = null;
try {
@@ -162,6 +170,38 @@ public class WxCardPayController extends BaseController {
}
return saveCardPayOrder(cUserId,cardInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT);
}
public ResultData savePasswordCardPayOrder(String cardIdStr,String totalFeeStr) {
Long cardId = null;
try {
cardId = Long.valueOf(cardIdStr);
} catch (Exception e) {
logger.error("cardId convert failed:" + cardIdStr);
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "cardIdStr转换失败");
}
WxMerchantBUser merchantBUser = getLoginBUser();
WxCouponPassword couponPassword = wxCouponPassword.getById(cardId);
if (null == couponPassword) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "卡未查询到");
}
if (EnumYesOrNo.YES.getCode().intValue() == couponPassword.getIsStop().intValue()) {
return new ResultData(ErrorCode.CARD_IS_NOT_FOUND.getCode(),"卡已被禁用.");
}
WxCoupon coupon = wxCouponService.getById(couponPassword.getCouponId(),couponPassword.getTenantId());
if (coupon == null) {
return new ResultData(ErrorCode.COUPON_IS_EMPTY);
}
if (coupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) {
logger.error("此券已作废:" + coupon.getId());
return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF);
}
WxCardInfo carInfo = wxCardInfoService.cardCreateByOffline(couponPassword, coupon);
return saveCardPayOrder(Constant.defaultCUserId,carInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT);
}

private ResultData saveCardPayOrder(Long cUserId,WxCardInfo cardInfo,WxMerchantBUser merchantBUser,String totalFeeStr,EnumPayWay payWay) {
@@ -249,44 +289,6 @@ public class WxCardPayController extends BaseController {
}
}
@ApiOperation(value = "微信B端扫C端实体储值卡支付订单", notes = "params:{\"cardId\":\"String\",\"totalFee\":\"String(元)\"}")
@PostMapping("order_create_card")
public ResultData saveCardPayOrder(@RequestBody Map<String, String> paramMap, HttpServletRequest request) {
String cardIdStr = paramMap.get("cardId");
String totalFeeStr = paramMap.get("totalFee");
if (StringUtils.isBlank(cardIdStr) || cardIdStr.equalsIgnoreCase(Constant.UNDEFINED)) {
logger.error("cardId不能为空");
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "cardId不能为空");
}
Long cardId = null;
try {
cardId = Long.valueOf(cardIdStr);
} catch (Exception e) {
logger.error("cardId convert failed:" + cardIdStr);
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "cardIdStr转换失败");
}
WxMerchantBUser merchantBUser = getLoginBUser();
WxCouponPassword couponPassword = wxCouponPassword.getById(cardId);
if (null == couponPassword) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "卡未查询到");
}
if (EnumYesOrNo.YES.getCode().intValue() == couponPassword.getIsStop().intValue()) {
return new ResultData(ErrorCode.CARD_IS_NOT_FOUND.getCode(),"卡已被禁用.");
}
WxCoupon coupon = wxCouponService.getById(couponPassword.getCouponId(),couponPassword.getTenantId());
if (coupon == null) {
return new ResultData(ErrorCode.COUPON_IS_EMPTY);
}
if (coupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) {
logger.error("此券已作废:" + coupon.getId());
return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF);
}
WxCardInfo carInfo = wxCardInfoService.cardCreateByOffline(couponPassword, coupon);
return saveCardPayOrder(Constant.defaultCUserId,carInfo,merchantBUser,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT);
}
}

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

@@ -223,7 +223,7 @@ public class WxCouponOrderController extends BaseController {
}
Map retmap = new HashMap();
retmap.put("dynamicId", WxCouponOrderCVo.calcuteExpiredCouponOrderId(couponOrderId,Integer.parseInt(sysConfig.getConfigItemValue())));
retmap.put("dynamicId", WxCouponOrderCVo.calcuteExpiredCouponOrderId(couponOrderId,Integer.parseInt(sysConfig.getConfigItemValue()),null));
retmap.put("expiredSeconds", Integer.parseInt(sysConfig.getConfigItemValue()));
retmap.put("couponTenantId", couponTenantId);
return new ResultData(retmap);
@@ -363,11 +363,12 @@ public class WxCouponOrderController extends BaseController {
@GetMapping("cardDynamicId")
@ApiImplicitParams({
@ApiImplicitParam(name = "cardId", value = "卡ID", dataType = "string", paramType = "query", required = true),
@ApiImplicitParam(name = "cardTenantId", value = "券tenantID", dataType = "string", paramType = "query", required = false)
@ApiImplicitParam(name = "cardTenantId", value = "券tenantID", dataType = "string", paramType = "query", required = true),
@ApiImplicitParam(name = "cUserId", value = "会员ID", dataType = "string", paramType = "query", required = true)
})
public ResultData cardDynamicId(String cardId,String cardTenantId) {
public ResultData cardDynamicId(String cardId,String cardTenantId,String cUserId) {

if (StringUtils.isBlank(cardId) || cardId.equalsIgnoreCase(Constant.UNDEFINED)) {
if (StringUtils.isBlank(cardId) || cardId.equalsIgnoreCase(Constant.UNDEFINED) || StringUtils.isBlank(cUserId) || cUserId.equalsIgnoreCase(Constant.UNDEFINED) ) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL);
}
@@ -377,7 +378,7 @@ public class WxCouponOrderController extends BaseController {
}
Map retmap = new HashMap();
retmap.put("dynamicId", WxCouponOrderCVo.calcuteExpiredCouponOrderId(cardId,Integer.parseInt(sysConfig.getConfigItemValue())));
retmap.put("dynamicId", WxCouponOrderCVo.calcuteExpiredCouponOrderId(cardId,Integer.parseInt(sysConfig.getConfigItemValue()),cUserId));
retmap.put("expiredSeconds", Integer.parseInt(sysConfig.getConfigItemValue()));
retmap.put("cardTenantId", cardTenantId);
return new ResultData(retmap);


+ 8
- 4
mallinkService/src/main/java/com/iformall/domain/vo/WxCouponOrderCVo.java Просмотреть файл

@@ -166,16 +166,20 @@ public class WxCouponOrderCVo extends WxCouponOrder {
public static final String arg = "&";
public static String calcuteExpiredCouponOrderId(String couponOrderId,int expiredSeconds) {
public static String calcuteExpiredCouponOrderId(String couponOrderId,int expiredSeconds,String cUserId) {
if (StringUtils.isBlank(couponOrderId)) {
return null;
}
StringBuffer sb = new StringBuffer().append(couponOrderId);
if (expiredSeconds > 0 ) {
sb.append(arg).append(DateUtils.date2String(DateUtils.getSecondsTimeAfter(expiredSeconds, new Date())));
return Base64Util.encode(sb.toString().getBytes());
}else {
sb.append(arg).append(DateUtils.date2String(DateUtils.getSecondsTimeAfter(Integer.MAX_VALUE, new Date())));
}
return couponOrderId;
if (StringUtils.isNotBlank(cUserId)) {
sb.append(arg).append(cUserId);
}
return Base64Util.encode(sb.toString().getBytes());
}
public static String getDecodeExpiredCouponOrderId(String couponOrderId) {
@@ -186,6 +190,6 @@ public class WxCouponOrderCVo extends WxCouponOrder {
}
public static void main(String[] args) {
System.out.println(calcuteExpiredCouponOrderId("632830267681071104",300));
System.out.println(calcuteExpiredCouponOrderId("632830267681071104",300,"632830267681071104"));
}
}

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