|
|
|
@@ -1,30 +1,51 @@ |
|
|
|
package com.iformall.controller; |
|
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
|
|
|
|
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.GetMapping; |
|
|
|
import org.springframework.web.bind.annotation.ModelAttribute; |
|
|
|
import org.springframework.web.bind.annotation.PostMapping; |
|
|
|
import org.springframework.web.bind.annotation.RequestBody; |
|
|
|
import org.springframework.web.bind.annotation.RequestMapping; |
|
|
|
import org.springframework.web.bind.annotation.RestController; |
|
|
|
|
|
|
|
import com.github.pagehelper.PageInfo; |
|
|
|
import com.iformall.common.ErrorCode; |
|
|
|
import com.iformall.common.ResultData; |
|
|
|
import com.iformall.domain.po.*; |
|
|
|
import com.iformall.domain.po.WxCUser; |
|
|
|
import com.iformall.domain.po.WxCUserBasicInfo; |
|
|
|
import com.iformall.domain.po.WxCardInfo; |
|
|
|
import com.iformall.domain.po.WxCardSpend; |
|
|
|
import com.iformall.domain.po.WxCouponMerchant; |
|
|
|
import com.iformall.domain.po.WxCouponOrder; |
|
|
|
import com.iformall.domain.po.WxMerchant; |
|
|
|
import com.iformall.domain.po.WxOrder; |
|
|
|
import com.iformall.domain.vo.WxCardSpendVo; |
|
|
|
import com.iformall.enums.EnumCreditLockedStatus; |
|
|
|
import com.iformall.enums.EnumMerchantStatus; |
|
|
|
import com.iformall.enums.EnumPayWay; |
|
|
|
import com.iformall.exception.MallinkException; |
|
|
|
import com.iformall.service.*; |
|
|
|
import com.iformall.service.WxCUserBasicInfoService; |
|
|
|
import com.iformall.service.WxCardInfoService; |
|
|
|
import com.iformall.service.WxCardSpendService; |
|
|
|
import com.iformall.service.WxCouponOrderService; |
|
|
|
import com.iformall.service.WxMerchantService; |
|
|
|
import com.iformall.service.WxOrderService; |
|
|
|
import com.iformall.utils.Constant; |
|
|
|
|
|
|
|
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 javax.servlet.http.HttpServletRequest; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
/** |
|
|
|
* @author Stormeye Wu wuguoqiang@iformall.com |
|
|
|
@@ -53,27 +74,28 @@ public class WxCardPayController extends BaseController { |
|
|
|
@Autowired |
|
|
|
WxCUserBasicInfoService wxCUserBasicInfoService; |
|
|
|
|
|
|
|
@ApiOperation(value = "C端扫B端储值卡支付订单", notes = "params:{\"cardId\":\"String\",\"merchantId\":\"String\",\"totalFee\":\"String(元)\"}") |
|
|
|
@ApiOperation(value = "微信C端扫B端储值卡支付订单", notes = "params:{\"cardId\":\"String\",\"merchantId\":\"String\",\"totalFee\":\"String(元)\"}") |
|
|
|
@PostMapping("order_create") |
|
|
|
public ResultData saveCardPayOrder(@RequestBody Map<String, String> paramMap, HttpServletRequest request) { |
|
|
|
String ipStr = getIpAddr(); |
|
|
|
logger.info("saveCardPayOrder: " + ipStr + " :" + paramMap.toString()); |
|
|
|
|
|
|
|
WxCUser user = getUser(); |
|
|
|
if (!user.isBasicInfo()) { |
|
|
|
logger.error("暂未成为会员,请授权手机号"); |
|
|
|
return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); |
|
|
|
} |
|
|
|
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(user.getUserId()); |
|
|
|
if (null != wxCUserBasicInfo && EnumCreditLockedStatus.CLOSE.getCode().equals(wxCUserBasicInfo.getStatus())) { |
|
|
|
logger.error(ErrorCode.MEMBER_IS_LOCKED.getMessage()); |
|
|
|
return new ResultData(ErrorCode.MEMBER_IS_LOCKED); |
|
|
|
} |
|
|
|
|
|
|
|
String cardIdStr = paramMap.get("cardId"); |
|
|
|
String merchantStr = paramMap.get("merchantId"); |
|
|
|
String totalFeeStr = paramMap.get("totalFee"); |
|
|
|
return saveCardPayOrder(user.getUserId(),cardIdStr,merchantStr,totalFeeStr,EnumPayWay.PAY_WAY_WECHAT); |
|
|
|
} |
|
|
|
|
|
|
|
private ResultData saveCardPayOrder(Long cUserId,String cardIdStr,String merchantStr,String totalFeeStr,EnumPayWay payWay) { |
|
|
|
String ipStr = getIpAddr(); |
|
|
|
logger.info("saveCardPayOrder: " + ipStr + " : cUserId:{} , cardIdStr:{},merchantStr:{},totalFeeStr:{}",cUserId,cardIdStr,cardIdStr,cardIdStr); |
|
|
|
WxCUserBasicInfo wxCUserBasicInfo = wxCUserBasicInfoService.getById(cUserId); |
|
|
|
if (null != wxCUserBasicInfo && EnumCreditLockedStatus.CLOSE.getCode().equals(wxCUserBasicInfo.getStatus())) { |
|
|
|
logger.error(ErrorCode.MEMBER_IS_LOCKED.getMessage()); |
|
|
|
return new ResultData(ErrorCode.MEMBER_IS_LOCKED); |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(cardIdStr) || cardIdStr.equalsIgnoreCase(Constant.UNDEFINED)) { |
|
|
|
logger.error("cardId不能为空"); |
|
|
|
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "cardId不能为空"); |
|
|
|
@@ -119,7 +141,7 @@ public class WxCardPayController extends BaseController { |
|
|
|
|
|
|
|
//查看所有者与扫码者是否为一致 |
|
|
|
WxCouponOrder couponOrder = wxCouponOrderService.getById(cardId); |
|
|
|
if (!couponOrder.getOwnerId().equals(user.getUserId())) { |
|
|
|
if (!couponOrder.getOwnerId().equals(cUserId)) { |
|
|
|
logger.error("卡已被领取: " + cardIdStr); |
|
|
|
return new ResultData(ErrorCode.CARD_TRANSFERED); |
|
|
|
} |
|
|
|
@@ -138,7 +160,7 @@ public class WxCardPayController extends BaseController { |
|
|
|
|
|
|
|
WxOrder order = null; |
|
|
|
try { |
|
|
|
order = wxOrderService.saveCardPayOrder(merchant, user.getUserId(), totalFeeStr, payment); |
|
|
|
order = wxOrderService.saveCardPayOrder(merchant, cUserId, totalFeeStr, payment,payWay); |
|
|
|
} catch (MallinkException e) { |
|
|
|
logger.error("saveCardPayOrder 1" + e.getMessage()); |
|
|
|
return new ResultData(e.getErrorCode(), e.getMessage()); |
|
|
|
@@ -150,11 +172,12 @@ public class WxCardPayController extends BaseController { |
|
|
|
WxCardSpend record = new WxCardSpend(); |
|
|
|
record.updateTenantInfo(merchant); |
|
|
|
record.setCardId(cardId); |
|
|
|
record.setOwnerId(user.getUserId()); |
|
|
|
record.setOwnerId(cUserId); |
|
|
|
record.setMerchantId(merchantId); |
|
|
|
record.setOrderId(order.getId()); |
|
|
|
record.setIp(ipStr); |
|
|
|
record.setDeductionAmount(payment); |
|
|
|
record.setRemark("操作于["+payWay.getMessage()+"("+payWay.getCode()+")]"); |
|
|
|
|
|
|
|
try { |
|
|
|
return wxCardSpendService.createCardSpend(record, order, couponMerchant); |
|
|
|
@@ -166,7 +189,8 @@ public class WxCardPayController extends BaseController { |
|
|
|
return new ResultData(ErrorCode.PAY_ORDER_ERROR, e.getMessage()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("C端扫B端储值卡交易流水列表接口") |
|
|
|
@GetMapping("list") |
|
|
|
@ApiImplicitParams({ |
|
|
|
@@ -180,9 +204,13 @@ public class WxCardPayController extends BaseController { |
|
|
|
logger.error("暂未成为会员,请授权手机号"); |
|
|
|
return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); |
|
|
|
} |
|
|
|
if (wxCardSpend == null) wxCardSpend = new WxCardSpendVo(); |
|
|
|
return cardSpendList(wxCardSpend,user.getUserId(), pageNum, pageSize); |
|
|
|
} |
|
|
|
|
|
|
|
private ResultData cardSpendList(WxCardSpendVo wxCardSpend,Long cUserId,Integer pageNum, Integer pageSize) { |
|
|
|
if (wxCardSpend == null) wxCardSpend = new WxCardSpendVo(); |
|
|
|
wxCardSpend.updateTenantInfo(getTenantInfo()); |
|
|
|
wxCardSpend.setOwnerId(user.getUserId()); |
|
|
|
wxCardSpend.setOwnerId(cUserId); |
|
|
|
final PageInfo<WxCardSpendVo> page = wxCardSpendService.listAsPage(wxCardSpend, pageNum, pageSize); |
|
|
|
return new ResultData(page); |
|
|
|
} |
|
|
|
@@ -197,9 +225,13 @@ public class WxCardPayController extends BaseController { |
|
|
|
logger.error("暂未成为会员,请授权手机号"); |
|
|
|
return new ResultData(ErrorCode.USER_IS_NOT_MEMBER.getCode(), "暂未成为会员,请授权手机号"); |
|
|
|
} |
|
|
|
if (wxCardSpend == null) wxCardSpend = new WxCardSpendVo(); |
|
|
|
return sumCardSpendList(wxCardSpend, user.getUserId()); |
|
|
|
} |
|
|
|
|
|
|
|
private ResultData sumCardSpendList(WxCardSpendVo wxCardSpend,Long cUserId) { |
|
|
|
if (wxCardSpend == null) wxCardSpend = new WxCardSpendVo(); |
|
|
|
wxCardSpend.updateTenantInfo(getTenantInfo()); |
|
|
|
wxCardSpend.setOwnerId(user.getUserId()); |
|
|
|
wxCardSpend.setOwnerId(cUserId); |
|
|
|
final List<Map<String, Object>> mapList = wxCardSpendService.sumCardSpendForOwner(wxCardSpend); |
|
|
|
return new ResultData(mapList); |
|
|
|
} |
|
|
|
|