| @@ -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") | |||
| @@ -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") | |||
| @@ -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 | |||
| @@ -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 | |||
| * | |||
| @@ -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); | |||
| @@ -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>(); | |||
| @@ -192,10 +192,10 @@ | |||
| and co.b_merchant_id = #{bMerchantId} | |||
| </if> | |||
| <if test="startDate != null"> | |||
| AND co.update_date > #{startDate,jdbcType=TIMESTAMP} | |||
| AND co.update_date >= #{startDate,jdbcType=TIMESTAMP} | |||
| </if> | |||
| <if test="endDate != null"> | |||
| AND co.update_date < #{endDate,jdbcType=TIMESTAMP} | |||
| AND co.update_date <= #{endDate,jdbcType=TIMESTAMP} | |||
| </if> | |||
| order by co.update_date desc | |||
| </select> | |||
| @@ -617,10 +617,10 @@ | |||
| </foreach> | |||
| </if> | |||
| <if test="startDate != null"> | |||
| AND o.create_date > #{startDate,jdbcType=TIMESTAMP} | |||
| AND o.create_date >= #{startDate,jdbcType=TIMESTAMP} | |||
| </if> | |||
| <if test="endDate != null"> | |||
| AND o.create_date < #{endDate,jdbcType=TIMESTAMP} | |||
| AND o.create_date <= #{endDate,jdbcType=TIMESTAMP} | |||
| </if> | |||
| order by o.create_date desc | |||
| </select> | |||