From fa420beafb9541625489e630dd13e9b633599218 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Tue, 29 Aug 2023 14:54:23 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9B=E7=AB=AF?= =?UTF-8?q?=E6=A0=B8=E9=94=80=E3=80=81=E6=94=B6=E9=93=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCouponOrderController.java | 16 +++ .../controller/WxMicroPayController.java | 14 ++ .../service/WxCouponOrderService.java | 14 ++ .../com/iformall/service/WxOrderService.java | 14 ++ .../impl/WxCouponOrderServiceImpl.java | 127 +++++++++++------- .../service/impl/WxOrderServiceImpl.java | 29 +++- .../resources/mapper/WxCouponOrderMapper.xml | 4 +- .../main/resources/mapper/WxOrderMapper.xml | 4 +- 8 files changed, 165 insertions(+), 57 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java index 8667aefc3..a3ca88f73 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java @@ -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") diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java index a7c44639f..9439d1864 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java @@ -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") diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java index 34442c09f..1ae3add87 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java @@ -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 diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 2e2d4b387..48216c1c7 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -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 * diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index a7545d85d..afca5e74a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -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 list; - if (isVerified) { - dateMap.put("bMerchantId", wxMerchant.getId()); - list = wxCouponOrderMapper.findListOfVerifiedByDate(dateMap); - }else { - dateMap.put("startDateTimes", startDate.getTime()); - dateMap.put("endDateTimes", endDate.getTime()); - List merchantIdList = new ArrayList(); - merchantIdList.add(wxMerchant.getId()); - List merchantProductVos = wxCouponMerchantMapper.findOnlyMerchantProduct(wxMerchant.getTenantId(), merchantIdList); - if (null != merchantProductVos && merchantProductVos.size() > 0 ){ - List couponIds = new ArrayList(); - 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(); - } - }else { - list = new ArrayList(); - } - - } - //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 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 list; + if (isVerified) { + dateMap.put("bMerchantId", wxMerchant.getId()); + list = wxCouponOrderMapper.findListOfVerifiedByDate(dateMap); + }else { + dateMap.put("startDateTimes", startDate.getTime()); + dateMap.put("endDateTimes", endDate.getTime()); + List merchantIdList = new ArrayList(); + merchantIdList.add(wxMerchant.getId()); + List merchantProductVos = wxCouponMerchantMapper.findOnlyMerchantProduct(wxMerchant.getTenantId(), merchantIdList); + if (null != merchantProductVos && merchantProductVos.size() > 0 ){ + List couponIds = new ArrayList(); + 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(); + } + }else { + list = new ArrayList(); + } + + } + //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 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 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); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 7240e71cf..9dd34a6db 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -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 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 orderPayVoPageInfo(TenantEntity tenantEntity,Integer pageIndex,Integer pageSize,Map dateMap) { PageInfo orderPageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findListOfMicroPayOrderByDate(dateMap)); PageInfo voPageInfo = new PageInfo(); diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index e823ad043..0fb95b902 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -192,10 +192,10 @@ and co.b_merchant_id = #{bMerchantId} - AND co.update_date > #{startDate,jdbcType=TIMESTAMP} + AND co.update_date >= #{startDate,jdbcType=TIMESTAMP} - AND co.update_date < #{endDate,jdbcType=TIMESTAMP} + AND co.update_date <= #{endDate,jdbcType=TIMESTAMP} order by co.update_date desc diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index d7b2114f8..d9e081624 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -617,10 +617,10 @@ - AND o.create_date > #{startDate,jdbcType=TIMESTAMP} + AND o.create_date >= #{startDate,jdbcType=TIMESTAMP} - AND o.create_date < #{endDate,jdbcType=TIMESTAMP} + AND o.create_date <= #{endDate,jdbcType=TIMESTAMP} order by o.create_date desc