Browse Source

feat:修改B端核销、收银查询接口

release_toaliyun_real
xmzhao71 2 years ago
parent
commit
fa420beafb
8 changed files with 165 additions and 57 deletions
  1. +16
    -0
      mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java
  2. +14
    -0
      mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java
  3. +14
    -0
      mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java
  4. +14
    -0
      mallinkService/src/main/java/com/iformall/service/WxOrderService.java
  5. +76
    -51
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java
  6. +27
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  7. +2
    -2
      mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml
  8. +2
    -2
      mallinkService/src/main/resources/mapper/WxOrderMapper.xml

+ 16
- 0
mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java View File

@@ -22,6 +22,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,8 +30,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
@@ -41,6 +44,7 @@ import java.util.concurrent.TimeUnit;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Slf4j
@RestController
@RequestMapping("/api/couponOrder")
@Api(description = "卡券相关接口")
@@ -126,6 +130,7 @@ public class WxCouponOrderController extends BaseController {
return wxCouponOrderService.listOnDateAsPage(getLoginBUser().getId(), date, pageNum, pageSize, false);
}

@Deprecated
@ApiOperation("核销流水分页列表接口")
@GetMapping("listVerified")
@ApiImplicitParams({
@@ -136,6 +141,17 @@ public class WxCouponOrderController extends BaseController {
return wxCouponOrderService.listOnDateAsPage(getLoginBUser().getId(), date, pageNum, pageSize, true);
}

@ApiOperation("核销流水分页列表接口")
@GetMapping("listVerifiedV2")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
public ResultData listVerifiedV2(@RequestParam("startDate") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date startDate,
@RequestParam("endDate") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date endDate,
@RequestParam("pageNum") Integer pageNum,
@RequestParam("pageSize") Integer pageSize) {
return wxCouponOrderService.listOnDateAsPageV2(getLoginBUser().getId(), startDate, endDate, pageNum, pageSize, true);
}

@ApiOperation("某日期交易总流水")
@GetMapping("getUnverifiedAmountOnDate")


+ 14
- 0
mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java View File

@@ -22,6 +22,7 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
@@ -262,6 +263,19 @@ public class WxMicroPayController extends BaseController {
return wxOrderService.microPayListOnDateAsPage(getLoginBUser().getId(), EnumOrderType.MICROPAY.getCode(), date, pageNum, pageSize);
}

@RedisCache
@ApiOperation("付款码支付交易流水分页列表接口")
@GetMapping("listMicroPayV2")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query",required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query",required = true)})
public ResultData listMicroPayV2(@RequestParam("startDate") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date startDate,
@RequestParam("endDate") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date endDate,
@RequestParam("pageNum") Integer pageNum,
@RequestParam("pageSize") Integer pageSize) {
return wxOrderService.microPayListOnDateAsPageV2(getLoginBUser().getId(), EnumOrderType.MICROPAY.getCode(), startDate, endDate, pageNum, pageSize);
}

@RedisCache
@ApiOperation("付款码支付某日期交易总流水")
@GetMapping("getMicroPayAmountOnDate")


+ 14
- 0
mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java View File

@@ -118,6 +118,20 @@ public interface WxCouponOrderService {

ResultData listOnDateAsPage(Long bUserId, String date, Integer pageIndex, Integer pageSize, boolean isVerified);

/**
* 核销记录查询(version2)
* 新增自定义时间查询,新增总金额字段(单位:分)
*
* @param bUserId b用户id
* @param startDate 开始日期
* @param endDate 结束日期
* @param pageIndex 页面索引
* @param pageSize 页面大小
* @param isVerified 验证
* @return {@link ResultData}
*/
ResultData listOnDateAsPageV2(Long bUserId, Date startDate, Date endDate, Integer pageIndex, Integer pageSize, boolean isVerified);

/**
* C用户查券list
*@deprecated


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

@@ -47,6 +47,20 @@ public interface WxOrderService {

ResultData microPayListOnDateAsPage(Long bUserId, Integer type, String date, Integer pageIndex, Integer pageSize);

/**
* 收款记录查询(version2)
* 新增自定义时间查询,新增统计总金额字段(单位:分)
*
* @param bUserId b用户id
* @param type 类型
* @param startDate 开始日期
* @param endDate 结束日期
* @param pageIndex 页面索引
* @param pageSize 页面大小
* @return {@link ResultData}
*/
ResultData microPayListOnDateAsPageV2(Long bUserId, Integer type, Date startDate, Date endDate, Integer pageIndex, Integer pageSize);

/**
* 根据日期 b用户查刷卡异常支付list
*


+ 76
- 51
mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java View File

@@ -275,59 +275,84 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
endDate = cal.getTime();
}

Map dateMap = new HashMap();
dateMap.put("startDate", startDate);
dateMap.put("endDate", endDate);
dateMap.put("merchantId", wxMerchant.getId());
dateMap.put("tenantId", wxMerchant.getTenantId());
dateMap.put("finalTenantId", wxMerchant.getFinalTenantId());

Map resultMap = new HashMap();

if (pageIndex == null || pageSize == null) {
List<WxCouponOrder> list;
if (isVerified) {
dateMap.put("bMerchantId", wxMerchant.getId());
list = wxCouponOrderMapper.findListOfVerifiedByDate(dateMap);
}else {
dateMap.put("startDateTimes", startDate.getTime());
dateMap.put("endDateTimes", endDate.getTime());
List<Long> merchantIdList = new ArrayList<Long>();
merchantIdList.add(wxMerchant.getId());
List<WxMerchantProductVo> merchantProductVos = wxCouponMerchantMapper.findOnlyMerchantProduct(wxMerchant.getTenantId(), merchantIdList);
if (null != merchantProductVos && merchantProductVos.size() > 0 ){
List<Long> couponIds = new ArrayList<Long>();
for (int i = 0 ; i < merchantProductVos.size(); i ++) {
WxMerchantProductVo mp = merchantProductVos.get(i);
if (!couponIds.contains(mp.getProductId())) {
couponIds.add(mp.getProductId());
}
}
if (couponIds.size() > 0 ) {
dateMap.put("couponIds", couponIds);
list = wxCouponOrderMapper.findListOfOrderedByDate(dateMap);
}else {
list = new ArrayList<WxCouponOrder>();
}
}else {
list = new ArrayList<WxCouponOrder>();
}
}
//logger.info("find " + list.size() + " coupon order from " + /startDate + " to " + new Date());
resultMap.put("amount", list.stream().mapToInt(p -> p.getCouponPrice()).sum());
resultMap.put("orderCount", list.size());
} else {
if (isVerified) {
resultMap.put("list", findListOfVerifiedByDateForBUser(wxMerchant,wxMerchant.getId(),startDate,endDate,pageIndex,pageSize));
}else {
resultMap.put("list", findListOfOrderedByDateForBUser(wxMerchant,wxMerchant.getId(),startDate,endDate,pageIndex,pageSize));
}
}
return new ResultData(resultMap);
Map resultMap = getResultMap(pageIndex, pageSize, isVerified, wxMerchant, startDate, endDate);
return new ResultData(resultMap);
}

private PageInfo<WxCouponOrderBVo> findListOfVerifiedByDateForBUser(TenantEntity tenantEntity,Long merchantId,Date startDate,Date endDate,Integer pageIndex,Integer pageSize) {
private Map getResultMap(Integer pageIndex, Integer pageSize, boolean isVerified, WxMerchant wxMerchant, Date startDate, Date endDate) {
Map dateMap = new HashMap();
dateMap.put("startDate", startDate);
dateMap.put("endDate", endDate);
dateMap.put("merchantId", wxMerchant.getId());
dateMap.put("tenantId", wxMerchant.getTenantId());
dateMap.put("finalTenantId", wxMerchant.getFinalTenantId());

Map resultMap = new HashMap();

if (pageIndex == null || pageSize == null) {
List<WxCouponOrder> list;
if (isVerified) {
dateMap.put("bMerchantId", wxMerchant.getId());
list = wxCouponOrderMapper.findListOfVerifiedByDate(dateMap);
}else {
dateMap.put("startDateTimes", startDate.getTime());
dateMap.put("endDateTimes", endDate.getTime());
List<Long> merchantIdList = new ArrayList<Long>();
merchantIdList.add(wxMerchant.getId());
List<WxMerchantProductVo> merchantProductVos = wxCouponMerchantMapper.findOnlyMerchantProduct(wxMerchant.getTenantId(), merchantIdList);
if (null != merchantProductVos && merchantProductVos.size() > 0 ){
List<Long> couponIds = new ArrayList<Long>();
for (int i = 0 ; i < merchantProductVos.size(); i ++) {
WxMerchantProductVo mp = merchantProductVos.get(i);
if (!couponIds.contains(mp.getProductId())) {
couponIds.add(mp.getProductId());
}
}
if (couponIds.size() > 0 ) {
dateMap.put("couponIds", couponIds);
list = wxCouponOrderMapper.findListOfOrderedByDate(dateMap);
}else {
list = new ArrayList<WxCouponOrder>();
}
}else {
list = new ArrayList<WxCouponOrder>();
}

}
//logger.info("find " + list.size() + " coupon order from " + /startDate + " to " + new Date());
resultMap.put("amount", list.stream().mapToInt(p -> p.getCouponPrice()).sum());
resultMap.put("orderCount", list.size());
} else {
if (isVerified) {
PageInfo<WxCouponOrderBVo> pageResult = findListOfVerifiedByDateForBUser(wxMerchant, wxMerchant.getId(), startDate, endDate, pageIndex, pageSize);
resultMap.put("list", pageResult);
int amount = pageResult.getList() != null ? pageResult.getList().stream().mapToInt(WxCouponOrderBVo::getCouponPrice).sum() : 0;
resultMap.put("amount", amount);
}else {
resultMap.put("list", findListOfOrderedByDateForBUser(wxMerchant,wxMerchant.getId(),startDate,endDate,pageIndex,pageSize));
}
}
return resultMap;
}

@Override
public ResultData listOnDateAsPageV2(Long bUserId, Date startDate, Date endDate, Integer pageIndex, Integer pageSize, boolean isVerified) {
WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectById(bUserId.longValue());
if (wxMerchantBUser == null) {
logger.error("核销员不存在:" + bUserId);
throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}

WxMerchant wxMerchant = wxMerchantMapper.selectById(wxMerchantBUser.getMerchantId());
if (wxMerchant == null) {
logger.error("商户不存在:" + bUserId);
throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}
Map resultMap = getResultMap(pageIndex, pageSize, isVerified, wxMerchant, startDate, endDate);
return new ResultData(resultMap);
}

private PageInfo<WxCouponOrderBVo> findListOfVerifiedByDateForBUser(TenantEntity tenantEntity,Long merchantId,Date startDate,Date endDate,Integer pageIndex,Integer pageSize) {
Map dateMap = new HashMap();
dateMap.put("tenantId",tenantEntity.getTenantId());
dateMap.put("startDate", startDate);


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

@@ -297,6 +297,11 @@ public class WxOrderServiceImpl implements WxOrderService {
endDate = cal.getTime();
}

Map resultMap = getResultMap(type, pageIndex, pageSize, wxMerchantBUser, wxMerchant, startDate, endDate);
return new ResultData(resultMap);
}

private Map getResultMap(Integer type, Integer pageIndex, Integer pageSize, WxMerchantBUser wxMerchantBUser, WxMerchant wxMerchant, Date startDate, Date endDate) {
Map dateMap = new HashMap();
dateMap.put("startDate", startDate);
dateMap.put("endDate", endDate);
@@ -326,11 +331,31 @@ public class WxOrderServiceImpl implements WxOrderService {
}
resultMap.put("amount", total_price);
} else {
resultMap.put("list", orderPayVoPageInfo(wxMerchantBUser,pageIndex, pageSize, dateMap));
PageInfo<WxOrderPayVo> pageResult = orderPayVoPageInfo(wxMerchantBUser, pageIndex, pageSize, dateMap);
resultMap.put("list", pageResult);
int amount = pageResult.getList() != null ? pageResult.getList().stream().mapToInt(WxOrderPayVo::getPayment).sum() : 0;
resultMap.put("amount", amount);
}
return resultMap;
}

@Override
public ResultData microPayListOnDateAsPageV2(Long bUserId, Integer type, Date startDate, Date endDate, Integer pageIndex, Integer pageSize) {
WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectById(bUserId.longValue());
if (wxMerchantBUser == null) {
logger.error("B端用户不存在:" + bUserId);
throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}

WxMerchant wxMerchant = wxMerchantMapper.selectById(wxMerchantBUser.getMerchantId());
if (wxMerchant == null) {
logger.error("商户不存在:" + bUserId);
throw new MallinkException(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}
Map resultMap = getResultMap(type, pageIndex, pageSize, wxMerchantBUser, wxMerchant, startDate, endDate);
return new ResultData(resultMap);
}
private PageInfo<WxOrderPayVo> orderPayVoPageInfo(TenantEntity tenantEntity,Integer pageIndex,Integer pageSize,Map dateMap) {
PageInfo<WxOrder> orderPageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findListOfMicroPayOrderByDate(dateMap));
PageInfo<WxOrderPayVo> voPageInfo = new PageInfo<WxOrderPayVo>();


+ 2
- 2
mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml View File

@@ -192,10 +192,10 @@
and co.b_merchant_id = #{bMerchantId}
</if>
<if test="startDate != null">
AND co.update_date &gt; #{startDate,jdbcType=TIMESTAMP}
AND co.update_date &gt;= #{startDate,jdbcType=TIMESTAMP}
</if>
<if test="endDate != null">
AND co.update_date &lt; #{endDate,jdbcType=TIMESTAMP}
AND co.update_date &lt;= #{endDate,jdbcType=TIMESTAMP}
</if>
order by co.update_date desc
</select>


+ 2
- 2
mallinkService/src/main/resources/mapper/WxOrderMapper.xml View File

@@ -617,10 +617,10 @@
</foreach>
</if>
<if test="startDate != null">
AND o.create_date &gt; #{startDate,jdbcType=TIMESTAMP}
AND o.create_date &gt;= #{startDate,jdbcType=TIMESTAMP}
</if>
<if test="endDate != null">
AND o.create_date &lt; #{endDate,jdbcType=TIMESTAMP}
AND o.create_date &lt;= #{endDate,jdbcType=TIMESTAMP}
</if>
order by o.create_date desc
</select>


Loading…
Cancel
Save