| @@ -22,6 +22,7 @@ import io.swagger.annotations.Api; | |||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| import io.swagger.annotations.ApiImplicitParams; | import io.swagger.annotations.ApiImplicitParams; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import lombok.extern.slf4j.Slf4j; | |||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | 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.beans.factory.annotation.Qualifier; | ||||
| import org.springframework.data.redis.core.RedisTemplate; | import org.springframework.data.redis.core.RedisTemplate; | ||||
| import org.springframework.data.redis.core.ValueOperations; | import org.springframework.data.redis.core.ValueOperations; | ||||
| import org.springframework.format.annotation.DateTimeFormat; | |||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import java.text.ParseException; | |||||
| import java.text.SimpleDateFormat; | import java.text.SimpleDateFormat; | ||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||
| import java.util.Date; | import java.util.Date; | ||||
| @@ -41,6 +44,7 @@ import java.util.concurrent.TimeUnit; | |||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| @Slf4j | |||||
| @RestController | @RestController | ||||
| @RequestMapping("/api/couponOrder") | @RequestMapping("/api/couponOrder") | ||||
| @Api(description = "卡券相关接口") | @Api(description = "卡券相关接口") | ||||
| @@ -126,6 +130,7 @@ public class WxCouponOrderController extends BaseController { | |||||
| return wxCouponOrderService.listOnDateAsPage(getLoginBUser().getId(), date, pageNum, pageSize, false); | return wxCouponOrderService.listOnDateAsPage(getLoginBUser().getId(), date, pageNum, pageSize, false); | ||||
| } | } | ||||
| @Deprecated | |||||
| @ApiOperation("核销流水分页列表接口") | @ApiOperation("核销流水分页列表接口") | ||||
| @GetMapping("listVerified") | @GetMapping("listVerified") | ||||
| @ApiImplicitParams({ | @ApiImplicitParams({ | ||||
| @@ -136,6 +141,17 @@ public class WxCouponOrderController extends BaseController { | |||||
| return wxCouponOrderService.listOnDateAsPage(getLoginBUser().getId(), date, pageNum, pageSize, true); | 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("某日期交易总流水") | @ApiOperation("某日期交易总流水") | ||||
| @GetMapping("getUnverifiedAmountOnDate") | @GetMapping("getUnverifiedAmountOnDate") | ||||
| @@ -22,6 +22,7 @@ import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.format.annotation.DateTimeFormat; | |||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import javax.servlet.http.HttpServletRequest; | 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); | 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 | @RedisCache | ||||
| @ApiOperation("付款码支付某日期交易总流水") | @ApiOperation("付款码支付某日期交易总流水") | ||||
| @GetMapping("getMicroPayAmountOnDate") | @GetMapping("getMicroPayAmountOnDate") | ||||
| @@ -118,6 +118,20 @@ public interface WxCouponOrderService { | |||||
| ResultData listOnDateAsPage(Long bUserId, String date, Integer pageIndex, Integer pageSize, boolean isVerified); | 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 | * C用户查券list | ||||
| *@deprecated | *@deprecated | ||||
| @@ -47,6 +47,20 @@ public interface WxOrderService { | |||||
| ResultData microPayListOnDateAsPage(Long bUserId, Integer type, String date, Integer pageIndex, Integer pageSize); | 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 | * 根据日期 b用户查刷卡异常支付list | ||||
| * | * | ||||
| @@ -275,59 +275,84 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { | |||||
| endDate = cal.getTime(); | 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(); | Map dateMap = new HashMap(); | ||||
| dateMap.put("tenantId",tenantEntity.getTenantId()); | dateMap.put("tenantId",tenantEntity.getTenantId()); | ||||
| dateMap.put("startDate", startDate); | dateMap.put("startDate", startDate); | ||||
| @@ -297,6 +297,11 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| endDate = cal.getTime(); | 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(); | Map dateMap = new HashMap(); | ||||
| dateMap.put("startDate", startDate); | dateMap.put("startDate", startDate); | ||||
| dateMap.put("endDate", endDate); | dateMap.put("endDate", endDate); | ||||
| @@ -326,11 +331,31 @@ public class WxOrderServiceImpl implements WxOrderService { | |||||
| } | } | ||||
| resultMap.put("amount", total_price); | resultMap.put("amount", total_price); | ||||
| } else { | } 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); | return new ResultData(resultMap); | ||||
| } | } | ||||
| private PageInfo<WxOrderPayVo> orderPayVoPageInfo(TenantEntity tenantEntity,Integer pageIndex,Integer pageSize,Map dateMap) { | private PageInfo<WxOrderPayVo> orderPayVoPageInfo(TenantEntity tenantEntity,Integer pageIndex,Integer pageSize,Map dateMap) { | ||||
| PageInfo<WxOrder> orderPageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findListOfMicroPayOrderByDate(dateMap)); | PageInfo<WxOrder> orderPageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxOrderMapper.findListOfMicroPayOrderByDate(dateMap)); | ||||
| PageInfo<WxOrderPayVo> voPageInfo = new PageInfo<WxOrderPayVo>(); | PageInfo<WxOrderPayVo> voPageInfo = new PageInfo<WxOrderPayVo>(); | ||||
| @@ -192,10 +192,10 @@ | |||||
| and co.b_merchant_id = #{bMerchantId} | and co.b_merchant_id = #{bMerchantId} | ||||
| </if> | </if> | ||||
| <if test="startDate != null"> | <if test="startDate != null"> | ||||
| AND co.update_date > #{startDate,jdbcType=TIMESTAMP} | |||||
| AND co.update_date >= #{startDate,jdbcType=TIMESTAMP} | |||||
| </if> | </if> | ||||
| <if test="endDate != null"> | <if test="endDate != null"> | ||||
| AND co.update_date < #{endDate,jdbcType=TIMESTAMP} | |||||
| AND co.update_date <= #{endDate,jdbcType=TIMESTAMP} | |||||
| </if> | </if> | ||||
| order by co.update_date desc | order by co.update_date desc | ||||
| </select> | </select> | ||||
| @@ -617,10 +617,10 @@ | |||||
| </foreach> | </foreach> | ||||
| </if> | </if> | ||||
| <if test="startDate != null"> | <if test="startDate != null"> | ||||
| AND o.create_date > #{startDate,jdbcType=TIMESTAMP} | |||||
| AND o.create_date >= #{startDate,jdbcType=TIMESTAMP} | |||||
| </if> | </if> | ||||
| <if test="endDate != null"> | <if test="endDate != null"> | ||||
| AND o.create_date < #{endDate,jdbcType=TIMESTAMP} | |||||
| AND o.create_date <= #{endDate,jdbcType=TIMESTAMP} | |||||
| </if> | </if> | ||||
| order by o.create_date desc | order by o.create_date desc | ||||
| </select> | </select> | ||||