Browse Source

update

release_toaliyun_real
xiaohanzi 5 years ago
parent
commit
1eec2ef822
7 changed files with 96 additions and 43 deletions
  1. +8
    -0
      mallinkAdmin/src/main/resources/db/migration/V202007311200__FOR_MEMBER_ONLY_001.sql
  2. +62
    -30
      mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java
  3. +3
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxCardSpend.java
  4. +2
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java
  5. +14
    -7
      mallinkService/src/main/java/com/iformall/service/WxOrderService.java
  6. +4
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  7. +3
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java

+ 8
- 0
mallinkAdmin/src/main/resources/db/migration/V202007311200__FOR_MEMBER_ONLY_001.sql View File

@@ -19,3 +19,11 @@ ADD COLUMN `login_count` int(11) DEFAULT 0 COMMENT '登陆次数' AFTER `active

update wx_c_user_basic_info wcubi set wcubi.login_count = (select wcu.login_count from wx_c_user wcu where wcu.id=wcubi.id);

ALTER TABLE `wx_coupon_order`
ADD COLUMN `pay_vendor` SMALLINT(3) DEFAULT NULL COMMENT '订单渠道,EnumPayWay.class';

UPDATE wx_coupon_order o INNER JOIN wx_pay_order po ON po.order_id = o.`id` SET o.pay_vendor = po.pay_vendor;

ALTER TABLE `wx_card_spend`
ADD COLUMN `remark` VARCHAR(30) DEFAULT NULL COMMENT '备注';


+ 62
- 30
mallinkCApi/src/main/java/com/iformall/controller/WxCardPayController.java View File

@@ -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);
}


+ 3
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxCardSpend.java View File

@@ -61,6 +61,9 @@ public class WxCardSpend extends TenantEntity {

@io.swagger.annotations.ApiModelProperty(value="来源(0:C端小程序扫一扫, 1:POS支付)",name="payFrom")
private Integer payFrom;
@io.swagger.annotations.ApiModelProperty(value="说明",name="remark")
private String remark;

@TableField(exist = false)
@Excel(name = "消费金额(元)", width = 20, orderNum = "7")


+ 2
- 1
mallinkService/src/main/java/com/iformall/domain/po/WxCouponOrder.java View File

@@ -42,7 +42,8 @@ public class WxCouponOrder extends TenantEntity {
private Date updateDate;
@io.swagger.annotations.ApiModelProperty(value = "单券实际购买价格", name = "couponPrice")
private Integer couponPrice;

@io.swagger.annotations.ApiModelProperty(value = "支付渠道EnumPayWay", name = "pay_vendor")
private Integer payVendor;
@io.swagger.annotations.ApiModelProperty(value="过期退款(0:正常,1不退)",name="autoRefund")
private Integer autoRefund;



+ 14
- 7
mallinkService/src/main/java/com/iformall/service/WxOrderService.java View File

@@ -1,20 +1,27 @@
package com.iformall.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.github.pagehelper.PageInfo;
import com.iformall.common.ResultData;
import com.iformall.domain.dto.OrderSaveDto;
import com.iformall.domain.po.*;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxCoupon;
import com.iformall.domain.po.WxCouponOrder;
import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxMerchantBUser;
import com.iformall.domain.po.WxOrder;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.WxCouponSendVo;
import com.iformall.domain.vo.WxOrderCouponPressVo;
import com.iformall.domain.vo.WxOrderCouponVo;
import com.iformall.domain.vo.WxOrderQueryVo;
import com.iformall.enums.EnumOrderStatus;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
import com.iformall.enums.EnumPayWay;

public interface WxOrderService {

@@ -70,7 +77,7 @@ public interface WxOrderService {
* @param payment
* @return 订单id
*/
WxOrder saveCardPayOrder(WxMerchant merchant, Long cUserId, String totalFeeStr, Integer payment);
WxOrder saveCardPayOrder(WxMerchant merchant, Long cUserId, String totalFeeStr, Integer payment,EnumPayWay payWay);

/**
* 免费券订单接口


+ 4
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java View File

@@ -89,6 +89,7 @@ import com.iformall.enums.EnumOrderType;
import com.iformall.enums.EnumPayShare;
import com.iformall.enums.EnumPayStatus;
import com.iformall.enums.EnumPayType;
import com.iformall.enums.EnumPayWay;
import com.iformall.enums.EnumProfitSharingOrderType;
import com.iformall.enums.EnumScoreType;
import com.iformall.enums.EnumUserType;
@@ -937,7 +938,7 @@ public class WxOrderServiceImpl implements WxOrderService {

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public WxOrder saveCardPayOrder(WxMerchant merchant, Long cUserId, String totalFeeStr, Integer payment) {
public WxOrder saveCardPayOrder(WxMerchant merchant, Long cUserId, String totalFeeStr, Integer payment,EnumPayWay payWay) {
Date curr = new Date();

final IdWorker idWorker = IdWorker.get();
@@ -945,7 +946,7 @@ public class WxOrderServiceImpl implements WxOrderService {

// body
// tenant_id + merchant_id + title + subtitle
String bodyStr = "C扫B储值卡支付, 金额:" + totalFeeStr;
String bodyStr = "["+payWay.getMessage()+"("+payWay.getCode()+")]C扫B储值卡支付, 金额:" + totalFeeStr;

WxOrder record = new WxOrder();
record.setId(orderNumber);
@@ -1054,6 +1055,7 @@ public class WxOrderServiceImpl implements WxOrderService {
couponOrder.setAutoRefund(coupon.getAutoRefund());
couponOrder.setOrderId(order.getOrderNumber());
couponOrder.setExpiredTime(valid_date);
couponOrder.setPayVendor(payOrder.getPayVendor());
if (!isCard) {
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
} else {


+ 3
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java View File

@@ -50,7 +50,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
WxAppinfoMapper wxAppinfoMapper;

@Autowired
WxCUserMapper wxCUserMapper;
WxCUserBasicInfoMapper wxCUserBasicInfoMapper;

@Autowired
WxCUserService wxCUserService;
@@ -1310,7 +1310,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}
if (order.getType().equals(EnumOrderType.COUPON.getCode())) {
WxCUser user = wxCUserMapper.selectById(order.getCUserId());
WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(order.getCUserId());
if (user == null) {
logger.error("pay handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo());
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
@@ -1404,7 +1404,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}
if (order.getType().equals(EnumOrderType.COUPON.getCode())) {
WxCUser user = wxCUserMapper.selectById(order.getCUserId());
WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(order.getCUserId());
if (user == null) {
logger.error("pay handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo());
throw new MallinkException(ErrorCode.USER_IS_EMPTY);


Loading…
Cancel
Save